;;; bs.el --- menu for selecting and displaying buffers
-;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;; 2005 Free Software Foundation, Inc.
;; Author: Olaf Sylvester <Olaf.Sylvester@netsurf.de>
;; Maintainer: Olaf Sylvester <Olaf.Sylvester@netsurf.de>
;; Keywords: convenience
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; Version: 1.17
-;; X-URL: http://home.netsurf.de/olaf.sylvester/emacs
+;; X-URL: http://www.geekware.de/software/emacs
;;
;; The bs-package contains a main function bs-show for poping up a
;; buffer in a way similar to `list-buffers' and `electric-buffer-list':
;; The package bs combines the advantages of the Emacs functions
;; `list-buffers' and `electric-buffer-list'.
;;
-;; Additioal features for Buffer Selection Menu:
+;; Additional features for Buffer Selection Menu:
;; - configurable list of buffers (show only files etc.).
;; - comfortable way to change displayed subset of all buffers.
;; - show sorted list of buffers.
"Buffer Selection: Maintaining buffers by buffer menu."
:version "21.1"
:link '(emacs-commentary-link "bs")
- :link '(url-link "http://home.netsurf.de/olaf.sylvester/emacs")
+ :link '(url-link "http://www.geekware.de/software/emacs")
:group 'convenience)
-(defgroup bs-appearence nil
- "Buffer Selection appearence: Appearence of bs buffer menu."
+(defgroup bs-appearance nil
+ "Buffer Selection appearance: Appearance of bs buffer menu."
:group 'bs)
(defcustom bs-attributes-list
("" 2 2 left " "))
"*List specifying the layout of a Buffer Selection Menu buffer.
Each entry specifies a column and is a list of the form of:
-(HEADER MINIMUM-LENGTH MAXIMUM-LENGTH ALIGNMENT FUN-OR-STRING)
-HEADER : string for header for first line or a function
- which calculates column title.
-MINIMUM-LENGTH : minimum width of column (number or name of function).
- The function must return a positive integer.
-MAXIMUM-LENGTH : maximum width of column (number or name of function)
- (currently ignored)
-ALIGNMENT : alignment of column: (`left' `right' `middle')
-FUN-OR-STRING : Name of a function for calculating the value or
-a string for a constant value.
-The function gets as parameter the buffer we have started
+\(HEADER MINIMUM-LENGTH MAXIMUM-LENGTH ALIGNMENT FUN-OR-STRING)
+
+HEADER : String for header for first line or a function
+ which calculates column title.
+MINIMUM-LENGTH : Minimum width of column (number or name of function).
+ The function must return a positive integer.
+MAXIMUM-LENGTH : Maximum width of column (number or name of function)
+ (currently ignored).
+ALIGNMENT : Alignment of column (`left', `right', `middle').
+FUN-OR-STRING : Name of a function for calculating the value or a
+ string for a constant value.
+
+The function gets as parameter the buffer where we have started
buffer selection and the list of all buffers to show. The function must
-return a string representing the columns value."
- :group 'bs-appearence
+return a string representing the column's value."
+ :group 'bs-appearance
:type '(repeat sexp))
(defvar bs--running-in-xemacs (string-match "XEmacs" (emacs-version))
"Non-nil when running under XEmacs.")
-
(defun bs--make-header-match-string ()
"Return a regexp matching the first line of a Buffer Selection Menu buffer."
(let ((res "^\\(")
- (ele bs-attributes-list))
+ (ele bs-attributes-list))
(while ele
(setq res (concat res (car (car ele)) " *"))
(setq ele (cdr ele)))
(concat res "$\\)")))
-;;; Font-Lock-Settings
+;; Font-Lock-Settings
(defvar bs-mode-font-lock-keywords
- (list;; header in font-lock-type-face
+ (list ;; header in font-lock-type-face
(list (bs--make-header-match-string)
'(1 font-lock-type-face append) '(1 'bold append))
;; Buffername embedded by *
(defcustom bs-max-window-height 20
"*Maximal window height of Buffer Selection Menu."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'integer)
(defvar bs-dont-show-regexp nil
(defvar bs-buffer-sort-function nil
"Sort function to sort the buffers that appear in Buffer Selection Menu.
-The functions gets two arguments - the buffers to compare.")
+The function gets two arguments - the buffers to compare.")
(defcustom bs-maximal-buffer-name-column 45
"*Maximum column width for buffer names.
maximal and minimal length of names of buffers to show. The maximal
width is bounded by `bs-maximal-buffer-name-column'.
See also `bs-minimal-buffer-name-column'."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'integer)
(defcustom bs-minimal-buffer-name-column 15
maximal and minimal length of names of buffers to show. The minimal
width is bounded by `bs-minimal-buffer-name-column'.
See also `bs-maximal-buffer-name-column'."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'integer)
(defconst bs-header-lines-length 2
(defcustom bs-configurations
'(("all" nil nil nil nil nil)
("files" nil nil nil bs-visits-non-file bs-sort-buffer-interns-are-last)
- ("files-and-scratch" "^\\*scratch\\*" nil nil bs-visits-non-file
+ ("files-and-scratch" "^\\*scratch\\*$" nil nil bs-visits-non-file
bs-sort-buffer-interns-are-last)
("all-intern-last" nil nil nil nil bs-sort-buffer-interns-are-last))
"*List of all configurations you can use in the Buffer Selection Menu.
A configuration describes which buffers appear in Buffer Selection Menu
-and describes the order of buffers. A configuration is a list with
+and also the order of buffers. A configuration is a list with
six elements. The first element is a string and describes the configuration.
The following five elements represent the values for Buffer Selection Menu
-configurations variables `bs-dont-show-regexp', `bs-dont-show-function',
-`bs-must-show-regexp', `bs-must-show-function' and `bs-buffer-sort-function'.
+configuration variables `bs-must-show-regexp', `bs-must-show-function',
+`bs-dont-show-regexp', `bs-dont-show-function' and `bs-buffer-sort-function'.
By setting these variables you define a configuration."
- :group 'bs-appearence
+ :group 'bs-appearance
:type '(repeat sexp))
(defcustom bs-default-configuration "files"
- "*Name of default configuration used by in the Buffer Selection Menu.
+ "*Name of default configuration used by the Buffer Selection Menu.
\\<bs-mode-map>
Will be changed using key \\[bs-select-next-configuration].
Must be a string used in `bs-configurations' for naming a configuration."
(defvar bs-current-configuration bs-default-configuration
"Name of current configuration.
-Must be a string found in `bs-configurations' for naming a configuration.")
+Must be a string used in `bs-configurations' for naming a configuration.")
(defcustom bs-cycle-configuration-name nil
"*Name of configuration used when cycling through the buffer list.
(defcustom bs-string-show-always "+"
"*String added in column 1 indicating a buffer will always be shown."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'string)
(defcustom bs-string-show-never "-"
"*String added in column 1 indicating a buffer will never be shown."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'string)
(defcustom bs-string-current "."
"*String added in column 1 indicating the current buffer."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'string)
(defcustom bs-string-current-marked "#"
"*String added in column 1 indicating the current buffer when it is marked."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'string)
(defcustom bs-string-marked ">"
"*String added in column 1 indicating a marked buffer."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'string)
(defcustom bs-string-show-normally " "
"*String added in column 1 indicating a unmarked buffer."
- :group 'bs-appearence
+ :group 'bs-appearance
:type 'string)
(defvar bs--name-entry-length 20
Used internally, only.")
;; ----------------------------------------------------------------------
-;; Intern globals
+;; Internal globals
;; ----------------------------------------------------------------------
(defvar bs-buffer-show-mark nil
"Flag for the current mode for showing this buffer.
-A value of nil means buffer will be shown depending on the current on
-current configuration.
+A value of nil means buffer will be shown depending on the current
+configuration.
A value of `never' means to never show the buffer.
A value of `always' means to show buffer regardless of the configuration.")
(make-face 'region)
(set-face-background 'region "gray75"))
-
(defun bs--sort-by-name (b1 b2)
"Compare buffers B1 and B2 by buffer name."
(string< (buffer-name b1)
(defvar bs--marked-buffers nil
"Currently marked buffers in Buffer Selection Menu.")
-(defvar bs-mode-map ()
+(defvar bs-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map " " 'bs-select)
+ (define-key map "f" 'bs-select)
+ (define-key map "v" 'bs-view)
+ (define-key map "!" 'bs-select-in-one-window)
+ (define-key map [mouse-2] 'bs-mouse-select) ;; for GNU EMACS
+ (define-key map [button2] 'bs-mouse-select) ;; for XEmacs
+ (define-key map "F" 'bs-select-other-frame)
+ (let ((key ?1))
+ (while (<= key ?9)
+ (define-key map (char-to-string key) 'digit-argument)
+ (setq key (1+ key))))
+ (define-key map "-" 'negative-argument)
+ (define-key map "\e-" 'negative-argument)
+ (define-key map "o" 'bs-select-other-window)
+ (define-key map "\C-o" 'bs-tmp-select-other-window)
+ ;; for GNU EMACS
+ (define-key map [mouse-3] 'bs-mouse-select-other-frame)
+ ;; for XEmacs
+ (define-key map [button3] 'bs-mouse-select-other-frame)
+ (define-key map [up] 'bs-up)
+ (define-key map "n" 'bs-down)
+ (define-key map "p" 'bs-up)
+ (define-key map [down] 'bs-down)
+ (define-key map "\C-m" 'bs-select)
+ (define-key map "b" 'bs-bury-buffer)
+ (define-key map "s" 'bs-save)
+ (define-key map "S" 'bs-show-sorted)
+ (define-key map "a" 'bs-toggle-show-all)
+ (define-key map "d" 'bs-delete)
+ (define-key map "\C-d" 'bs-delete-backward)
+ (define-key map "k" 'bs-delete)
+ (define-key map "g" 'bs-refresh)
+ (define-key map "C" 'bs-set-configuration-and-refresh)
+ (define-key map "c" 'bs-select-next-configuration)
+ (define-key map "q" 'bs-kill)
+ ;; (define-key map "z" 'bs-kill)
+ (define-key map "\C-c\C-c" 'bs-kill)
+ (define-key map "\C-g" 'bs-abort)
+ (define-key map "\C-]" 'bs-abort)
+ (define-key map "%" 'bs-toggle-readonly)
+ (define-key map "~" 'bs-clear-modified)
+ (define-key map "M" 'bs-toggle-current-to-show)
+ (define-key map "+" 'bs-set-current-buffer-to-show-always)
+ ;;(define-key map "-" 'bs-set-current-buffer-to-show-never)
+ (define-key map "t" 'bs-visit-tags-table)
+ (define-key map "m" 'bs-mark-current)
+ (define-key map "u" 'bs-unmark-current)
+ (define-key map ">" 'scroll-right)
+ (define-key map "<" 'scroll-left)
+ (define-key map "?" 'bs-help)
+ map)
"Keymap of `bs-mode'.")
-(if bs-mode-map
- ()
- (setq bs-mode-map (make-sparse-keymap))
- (define-key bs-mode-map " " 'bs-select)
- (define-key bs-mode-map "f" 'bs-select)
- (define-key bs-mode-map "v" 'bs-view)
- (define-key bs-mode-map "!" 'bs-select-in-one-window)
- (define-key bs-mode-map [mouse-2] 'bs-mouse-select) ;; for GNU EMACS
- (define-key bs-mode-map [button2] 'bs-mouse-select) ;; for XEmacs
- (define-key bs-mode-map "F" 'bs-select-other-frame)
-
- (let ((key ?1))
- (while (<= key ?9)
- (define-key bs-mode-map (char-to-string key) 'digit-argument)
- (setq key (1+ key))))
-
- (define-key bs-mode-map "-" 'negative-argument)
- (define-key bs-mode-map "\e-" 'negative-argument)
-
- (define-key bs-mode-map "o" 'bs-select-other-window)
- (define-key bs-mode-map "\C-o" 'bs-tmp-select-other-window)
- ;; for GNU EMACS
- (define-key bs-mode-map [mouse-3] 'bs-mouse-select-other-frame)
- ;; for XEmacs
- (define-key bs-mode-map [button3] 'bs-mouse-select-other-frame)
- (define-key bs-mode-map [up] 'bs-up)
- (define-key bs-mode-map "n" 'bs-down)
- (define-key bs-mode-map "p" 'bs-up)
- (define-key bs-mode-map [down] 'bs-down)
- (define-key bs-mode-map "\C-m" 'bs-select)
- (define-key bs-mode-map "b" 'bs-bury-buffer)
- (define-key bs-mode-map "s" 'bs-save)
- (define-key bs-mode-map "S" 'bs-show-sorted)
- (define-key bs-mode-map "a" 'bs-toggle-show-all)
- (define-key bs-mode-map "d" 'bs-delete)
- (define-key bs-mode-map "\C-d" 'bs-delete-backward)
- (define-key bs-mode-map "k" 'bs-delete)
- (define-key bs-mode-map "g" 'bs-refresh)
- (define-key bs-mode-map "C" 'bs-set-configuration-and-refresh)
- (define-key bs-mode-map "c" 'bs-select-next-configuration)
- (define-key bs-mode-map "q" 'bs-kill)
- ;; (define-key bs-mode-map "z" 'bs-kill)
- (define-key bs-mode-map "\C-c\C-c" 'bs-kill)
- (define-key bs-mode-map "\C-g" 'bs-abort)
- (define-key bs-mode-map "\C-]" 'bs-abort)
- (define-key bs-mode-map "%" 'bs-toggle-readonly)
- (define-key bs-mode-map "~" 'bs-clear-modified)
- (define-key bs-mode-map "M" 'bs-toggle-current-to-show)
- (define-key bs-mode-map "+" 'bs-set-current-buffer-to-show-always)
- ;;(define-key bs-mode-map "-" 'bs-set-current-buffer-to-show-never)
- (define-key bs-mode-map "t" 'bs-visit-tags-table)
- (define-key bs-mode-map "m" 'bs-mark-current)
- (define-key bs-mode-map "u" 'bs-unmark-current)
- (define-key bs-mode-map ">" 'scroll-right)
- (define-key bs-mode-map "<" 'scroll-left)
- (define-key bs-mode-map "\e\e" nil)
- (define-key bs-mode-map "\e\e\e" 'bs-kill)
- (define-key bs-mode-map [escape escape escape] 'bs-kill)
- (define-key bs-mode-map "?" 'bs-help))
-
;; ----------------------------------------------------------------------
;; Functions
;; ----------------------------------------------------------------------
(defun bs-buffer-list (&optional list sort-description)
"Return a list of buffers to be shown.
-LIST is a list of buffers to test for appearence in Buffer Selection Menu.
+LIST is a list of buffers to test for appearance in Buffer Selection Menu.
The result list depends on the global variables `bs-dont-show-regexp',
`bs-must-show-regexp', `bs-dont-show-function', `bs-must-show-function'
and `bs-buffer-sort-function'.
(extern-must-show-from-fun (and bs-must-show-function
(funcall bs-must-show-function
(car list))))
- (show-flag (save-excursion
- (set-buffer (car list))
- bs-buffer-show-mark)))
+ (show-flag (buffer-local-value 'bs-buffer-show-mark (car list))))
(if (or (eq show-flag 'always)
(and (or bs--show-all (not (eq show-flag 'never)))
(not int-show-never)
\\[bs-tmp-select-other-window] -- make another window display that buffer and
remain in Buffer Selection Menu.
\\[bs-mouse-select] -- select current line's buffer and other marked buffers.
-\\[bs-save] -- save current line's buffer immediatly.
-\\[bs-delete] -- kill current line's buffer immediatly.
+\\[bs-save] -- save current line's buffer immediately.
+\\[bs-delete] -- kill current line's buffer immediately.
\\[bs-toggle-readonly] -- toggle read-only status of current line's buffer.
\\[bs-clear-modified] -- clear modified-flag on that buffer.
\\[bs-mark-current] -- mark current line's buffer to be displayed.
\\[bs-select-next-configuration] -- select and apply next \
available Buffer Selection Menu configuration.
\\[bs-kill] -- leave Buffer Selection Menu without a selection.
-\\[bs-toggle-current-to-show] -- toggle status of appearence .
+\\[bs-toggle-current-to-show] -- toggle status of appearance.
\\[bs-set-current-buffer-to-show-always] -- mark current line's buffer \
to show always.
-\\[bs-visit-tags-table] -- call `visit-tags-table' on current line'w buffer.
+\\[bs-visit-tags-table] -- call `visit-tags-table' on current line's buffer.
\\[bs-help] -- display this help text."
(interactive)
(kill-all-local-variables)
truncate-lines t
font-lock-defaults '(bs-mode-font-lock-keywords t)
font-lock-verbose nil)
- (run-hooks 'bs-mode-hook))
+ (run-mode-hooks 'bs-mode-hook))
(defun bs-kill ()
"Let buffer disappear and reset window-configuration."
(defun bs--current-buffer ()
"Return buffer on current line.
-Raise an error if not an a buffer line."
+Raise an error if not on a buffer line."
(beginning-of-line)
(let ((line (+ (- bs-header-lines-length)
(count-lines 1 (point)))))
"Set value `bs-buffer-show-mark' of buffer BUFFER to WHAT.
Redisplay current line and display a message describing
the status of buffer on current line."
- (save-excursion
- (set-buffer buffer)
- (setq bs-buffer-show-mark what))
+ (with-current-buffer buffer (setq bs-buffer-show-mark what))
(bs--update-current-line)
(bs--set-window-height)
(bs--show-config-message what))
(interactive)
(let ((current (bs--current-buffer))
(inhibit-read-only t))
+ (unless (kill-buffer current)
+ (error "Buffer was not deleted"))
(setq bs-current-list (delq current bs-current-list))
- (kill-buffer current)
(beginning-of-line)
(delete-region (point) (save-excursion
(end-of-line)
(defun bs-toggle-readonly ()
"Toggle read-only status for buffer on current line.
-Uses Function `vc-toggle-read-only'."
+Uses function `vc-toggle-read-only'."
(interactive)
(let ((buffer (bs--current-buffer)))
(save-excursion
(not (buffer-file-name buffer)))
(defun bs-sort-buffer-interns-are-last (b1 b2)
- "Function for sorting intern buffers B1 and B2 at the end of all buffers."
+ "Function for sorting internal buffers B1 and B2 at the end of all buffers."
(string-match "^\\*" (buffer-name b2)))
;; ----------------------------------------------------------------------
(defun bs-config--only-files ()
"Define a configuration for showing only buffers visiting a file."
(bs-config-clear)
- (setq;; I want to see *-buffers at the end
+ (setq ;; I want to see *-buffers at the end
bs-buffer-sort-function 'bs-sort-buffer-interns-are-last
;; Don't show files who don't belong to a file
bs-dont-show-function 'bs-visits-non-file))
(defun bs-config--files-and-scratch ()
"Define a configuration for showing buffer *scratch* and file buffers."
(bs-config-clear)
- (setq;; I want to see *-buffers at the end
+ (setq ;; I want to see *-buffers at the end
bs-buffer-sort-function 'bs-sort-buffer-interns-are-last
;; Don't show files who don't belong to a file
bs-dont-show-function 'bs-visits-non-file
;; Show *scratch* buffer.
- bs-must-show-regexp "^\\*scratch\\*"))
+ bs-must-show-regexp "^\\*scratch\\*$"))
(defun bs-config--all ()
"Define a configuration for showing all buffers.
(defun bs-config--all-intern-last ()
"Define a configuration for showing all buffers.
-Intern buffers appear at end of all buffers."
+Internal buffers appear at end of all buffers."
(bs-config-clear)
;; I want to see *-buffers at the end
(setq bs-buffer-sort-function 'bs-sort-buffer-interns-are-last))
(setq bs-default-configuration bs-current-configuration)
(bs--redisplay t)
(bs--set-window-height)
- (bs-message-without-log "Selected config: %s" (car config))))
+ (bs-message-without-log "Selected configuration: %s" (car config))))
(defun bs-show-in-buffer (list)
"Display buffer list LIST in buffer *buffer-selection*.
(defun bs-message-without-log (&rest args)
"Like `message' but don't log it on the message log.
-All arguments ARGS are transfered to function `message'."
+All arguments ARGS are transferred to function `message'."
(let ((message-log-max nil))
(apply 'message args)))
(defvar bs--cycle-list nil
- "Currentyl buffer list used for cycling.")
+ "Current buffer list used for cycling.")
;;;###autoload
(defun bs-cycle-next ()
(bs-must-show-regexp bs-must-show-regexp)
(bs-dont-show-function bs-dont-show-function)
(bs-must-show-function bs-must-show-function)
- (bs--show-all bs--show-all))
- (if bs-cycle-configuration-name
- (bs-set-configuration bs-cycle-configuration-name))
+ (bs--show-all nil))
+ (bs-set-configuration (or bs-cycle-configuration-name bs-default-configuration))
(let ((bs-buffer-sort-function nil)
(bs--current-sort-function nil))
(let* ((tupel (bs-next-buffer (if (or (eq last-command
(bs-must-show-regexp bs-must-show-regexp)
(bs-dont-show-function bs-dont-show-function)
(bs-must-show-function bs-must-show-function)
- (bs--show-all bs--show-all))
- (if bs-cycle-configuration-name
- (bs-set-configuration bs-cycle-configuration-name))
+ (bs--show-all nil))
+ (bs-set-configuration (or bs-cycle-configuration-name bs-default-configuration))
(let ((bs-buffer-sort-function nil)
(bs--current-sort-function nil))
(let* ((tupel (bs-previous-buffer (if (or (eq last-command
The result string is one of `bs-string-current', `bs-string-current-marked',
`bs-string-marked', `bs-string-show-normally', `bs-string-show-never', or
`bs-string-show-always'."
- (cond;; current buffer is the buffer we started buffer selection.
+ (cond ;; current buffer is the buffer we started buffer selection.
((eq (current-buffer) start-buffer)
(if (memq (current-buffer) bs--marked-buffers)
bs-string-current-marked ; buffer is marked
START-BUFFER is the buffer where we started buffer selection.
ALL-BUFFERS is the list of buffer appearing in Buffer Selection Menu."
(let ((name (copy-sequence (buffer-name))))
- (put-text-property 0 (length name) 'mouse-face 'highlight name)
+ (add-text-properties
+ 0 (length name)
+ '(mouse-face highlight
+ help-echo
+ "mouse-2: select this buffer, mouse-3: select in other frame")
+ name)
(if (< (length name) bs--name-entry-length)
(concat name
(make-string (- bs--name-entry-length (length name)) ? ))
name)))
-
(defun bs--get-mode-name (start-buffer all-buffers)
"Return the name of mode of current buffer for Buffer Selection Menu.
START-BUFFER is the buffer where we started buffer selection.
'(shell-mode dired-mode))
default-directory
(or buffer-file-name "")))))
- (put-text-property 0 (length string) 'mouse-face 'highlight string)
+ (add-text-properties
+ 0 (length string)
+ '(mouse-face highlight
+ help-echo "mouse-2: select this buffer, mouse-3: select in other frame")
+ string)
string))
-
(defun bs--insert-one-entry (buffer)
"Generate one entry for buffer BUFFER in Buffer Selection Menu.
It goes over all columns described in `bs-attributes-list'
"")))
(defun bs--show-with-configuration (name &optional arg)
- "Display buffer list of configuration with NAME name.
+ "Display buffer list of configuration with name NAME.
Set configuration NAME and determine window for Buffer Selection Menu.
Unless current buffer is buffer *buffer-selection* we have to save
the buffer we started Buffer Selection Menu and the current window
If PREFIX-ARG is nil return `bs-default-configuration'.
If PREFIX-ARG is an integer return PREFIX-ARG element of `bs-configurations'.
Otherwise return `bs-alternative-configuration'."
- (cond;; usually activation
+ (cond ;; usually activation
((null prefix-arg)
bs-default-configuration)
;; call with integer as prefix argument
(setq bs--marked-buffers nil)
(bs--show-with-configuration (bs--configuration-name-for-prefix-arg arg)))
-;;; Now provide feature bs
+;; Now provide feature bs
(provide 'bs)
+;;; arch-tag: c0d9ab34-bf06-4368-ae9d-af88878e6802
;;; bs.el ends here