;ELC   
;;; Compiled by rms@psilocin.gnu.org on Sun Apr 19 23:56:26 1998
;;; from file /gd/gnu/emacs/lisp/msb.el
;;; in Emacs version 20.2.91.4
;;; with bytecomp version 2.40
;;; with all optimizations.
;;; This file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`msb.el' was compiled for Emacs 19.29 or later"))


(byte-code "\306\307!\210\310\300	B\311\302	B\312\303!\204 \n\303	B\313\314\315\316\f\317\320&\207" [msb--few-menus current-load-list msb--very-many-menus msb--many-menus :prefix :group require cl (((and (boundp 'server-buffer-clients) server-buffer-clients 'multi) 3030 "Clients (%d)") ((and msb-display-invisible-buffers-p (msb-invisible-buffer-p) 'multi) 3090 "Invisible buffers (%d)") ((eq major-mode 'dired-mode) 2010 "Dired (%d)" msb-dired-item-handler msb-sort-by-directory) ((eq major-mode 'Man-mode) 4090 "Manuals (%d)") ((eq major-mode 'w3-mode) 4020 "WWW (%d)") ((or (memq major-mode '(rmail-mode rmail-edit-mode vm-summary-mode vm-mode mail-mode)) (memq major-mode '(mh-letter-mode mh-show-mode mh-folder-mode)) (memq major-mode '(gnus-summary-mode news-reply-mode gnus-group-mode gnus-article-mode gnus-kill-file-mode gnus-browse-killed-mode))) 4010 "Mail (%d)") ((not buffer-file-name) 4099 "Buffers (%d)") ('no-multi 1099 "Files (%d)")) (((and (boundp 'server-buffer-clients) server-buffer-clients 'multi) 1010 "Clients (%d)") ((and (boundp 'vc-mode) vc-mode 'multi) 1020 "Version Control (%d)") ((and buffer-file-name (buffer-modified-p) 'multi) 1030 "Changed files (%d)") ((and (get-buffer-process (current-buffer)) 'multi) 1040 "Processes (%d)") ((and msb-display-invisible-buffers-p (msb-invisible-buffer-p) 'multi) 1090 "Invisible buffers (%d)") ((eq major-mode 'dired-mode) 2010 "Dired (%d)" msb-dired-item-handler msb-sort-by-directory) ((eq major-mode 'Man-mode) 5030 "Manuals (%d)") ((eq major-mode 'w3-mode) 5020 "WWW (%d)") ((or (memq major-mode '(rmail-mode rmail-edit-mode vm-summary-mode vm-mode mail-mode)) (memq major-mode '(mh-letter-mode mh-show-mode mh-folder-mode)) (memq major-mode '(gnus-summary-mode news-reply-mode gnus-group-mode gnus-article-mode gnus-kill-file-mode gnus-browse-killed-mode))) 5010 "Mail (%d)") ((and (not buffer-file-name) 'no-multi) 5099 "Other non-file buffers (%d)") ((and (string-match "/\\.[^/]*$" buffer-file-name) 'multi) 3090 "Hidden Files (%d)") ((memq major-mode '(c-mode c++-mode)) 3010 "C/C++ Files (%d)") ((eq major-mode 'emacs-lisp-mode) 3020 "Elisp Files (%d)") ((eq major-mode 'latex-mode) 3030 "LaTex Files (%d)") ('no-multi 3099 "Other files (%d)")) boundp custom-declare-group msb nil "Customizable buffer-selection with multiple menus." "msb-" mouse] 8)
#@44 Set the value of custom variables for msb.
(defalias 'msb-custom-set #[(symbol value) "	L\210\302\303!\205 \304\305!\207" [symbol value featurep msb menu-bar-update-buffers t] 2 (#$ . 2863)])
#@1987 *List of criteria for splitting the mouse buffer menu.
The elements in the list should be of this type:
 (CONDITION MENU-SORT-KEY MENU-TITLE ITEM-HANDLING-FN ITEM-SORT-FN).

When making the split, the buffers are tested one by one against the
CONDITION, just like a lisp cond: When hitting a true condition, the
other criteria are *not* tested and the buffer name will appear in the
menu with the menu-title corresponding to the true condition.

If the condition returns the symbol `multi', then the buffer will be
added to this menu *and* tested for other menus too.  If it returns
`no-multi', then the buffer will only be added if it hasn't been added
to any other menu.

During this test, the buffer in question is the current buffer, and
the test is surrounded by calls to `save-excursion' and
`save-match-data'.

The categories are sorted by MENU-SORT-KEY.  Smaller keys are on top.
nil means don't display this menu.

MENU-TITLE is really a format.  If you add %d in it, the %d is
replaced with the number of items in that menu.

ITEM-HANDLING-FN, is optional.  If it is supplied and is a function,
than it is used for displaying the items in that particular buffer
menu, otherwise the function pointed out by
`msb-item-handling-function' is used.

ITEM-SORT-FN, is also optional.
If it is not supplied, the function pointed out by
`msb-item-sort-function' is used.
If it is nil, then no sort takes place and the buffers are presented
in least-recently-used order.
If it is t, then no sort takes place and the buffers are presented in
most-recently-used order.
If it is supplied and non-nil and not t than it is used for sorting
the items in that particular buffer menu.

Note1: There should always be a `catch-all' as last element, in this
list.  That is an element like (t TITLE ITEM-HANDLING-FUNCTION).
Note2: A buffer menu appears only if it has at least one buffer in it.
Note3: If you have a CONDITION that can't be evaluated you will get an
error every time you do \[msb].
(custom-declare-variable 'msb-menu-cond 'msb--very-many-menus '(#$ . -3065) :type `(choice (const :tag "long" :value ,msb--very-many-menus) (const :tag "short" :value ,msb--few-menus)) :set 'msb-custom-set :group 'msb)
#@40 The sort key for files sorted by mode.
(custom-declare-variable 'msb-modes-key '4000 '(#$ . 5276) :type 'integer :set 'msb-custom-set :group 'msb :version "20.3")
#@137 *Non-nil means use separators.
The separators will appear between all menus that have a sorting key
that differs by this value or more.
(custom-declare-variable 'msb-separator-diff '100 '(#$ . -5446) :type '(choice integer (const nil)) :set 'msb-custom-set :group 'msb)
#@46 *The sort key for files sorted by directory.
(defvar msb-files-by-directory-sort-key 0 (#$ . -5722))
#@171 *The maximum number of items in a menu.
If this variable is set to 15 for instance, then the submenu will be
split up in minor parts, 15 items each.  Nil means no limit.
(custom-declare-variable 'msb-max-menu-items '15 '(#$ . -5830) :type '(choice integer (const nil)) :set 'msb-custom-set :group 'msb)
#@340 *The maximum number of items from different directories.

When the menu is of type `file by directory', this is the maximum
number of buffers that are clumped together from different
directories.

Set this to 1 if you want one menu per directory instead of clumping
them together.

If the value is not a number, then the value 10 is used.
(custom-declare-variable 'msb-max-file-menu-items '10 '(#$ . -6140) :type 'integer :set 'msb-custom-set :group 'msb)
#@71 *Where should the menu with the most recently used buffers be placed?
(custom-declare-variable 'msb-most-recently-used-sort-key '-1010 '(#$ . -6602) :type 'integer :set 'msb-custom-set :group 'msb)
#@122 *How many buffers should be in the most-recently-used menu.
No buffers at all if less than 1 or nil (or any non-number).
(custom-declare-variable 'msb-display-most-recently-used '15 '(#$ . -6807) :type 'integer :set 'msb-custom-set :group 'msb)
#@45 *The title for the most-recently-used menu.
(custom-declare-variable 'msb-most-recently-used-title '"Most recently used (%d)" '(#$ . -7058) :type 'string :set 'msb-custom-set :group 'msb)
#@75 *Function that specifies how many pixels to shift the top menu leftwards.
(defvar msb-horizontal-shift-function '(lambda nil 0) (#$ . -7252))
#@143 *Show invisible buffers or not.
Non-nil means that the buffer menu should include buffers that have
names that starts with a space character.
(custom-declare-variable 'msb-display-invisible-buffers-p 'nil '(#$ . -7401) :type 'boolean :set 'msb-custom-set :group 'msb)
#@500 *The appearance of a buffer menu.

The default function to call for handling the appearance of a menu
item.  It should take to arguments, BUFFER and MAX-BUFFER-NAME-LENGTH,
where the latter is the max length of all buffer names.

The function should return the string to use in the menu.

When the function is called, BUFFER is the current buffer.  This
function is called for items in the variable `msb-menu-cond' that have
nil as ITEM-HANDLING-FUNCTION.  See `msb-menu-cond' for more
information.
(defvar msb-item-handling-function 'msb-item-handler (#$ . -7676))
#@400 *The order of items in a buffer menu.

The default function to call for handling the order of items in a menu
item.  This function is called like a sort function.  The items look
like (ITEM-NAME . BUFFER).

ITEM-NAME is the name of the item that will appear in the menu.
BUFFER is the buffer, this is not necessarily the current buffer.

Set this to nil or t if you don't want any sorting (faster).
(custom-declare-variable 'msb-item-sort-function ''msb-sort-by-name '(#$ . -8249) :type '(choice (const msb-sort-by-name) (const :tag "Newest first" t) (const :tag "Oldest first" nil)) :set 'msb-custom-set :group 'msb)
#@97 *Non-nil means that files should be sorted by directory instead of
the groups in msb-menu-cond.
(custom-declare-variable 'msb-files-by-directory 'nil '(#$ . -8873) :type 'boolean :set 'msb-custom-set :group 'msb)
#@56 Hooks to be run after the msb package has been loaded.
(custom-declare-variable 'msb-after-load-hooks 'nil '(#$ . 9092) :type 'hook :set 'msb-custom-set :group 'msb)
(byte-code "\304\305\306\217\300	B\307\302!\204 \304\302	B\307\303!\204 \304\303	B\304\207" [msb--home-dir current-load-list msb--last-buffer-menu msb--error nil (substitute-in-file-name "$HOME") ((error)) boundp] 3)
#@265 Create one string item, concerning BUFFER, for the buffer menu.
The item looks like:
*% <buffer-name>
The `*' appears only if the buffer is marked as modified.
The `%' appears only if the buffer is read-only.
Optional second argument MAXBUF is completely ignored.
(defalias 'msb-item-handler #[(buffer &optional maxbuf) "\304 \305 \203 \306\202\f \307\203 \310\202 \307\311\312\n	$+\207" [buffer-read-only read-only modified name buffer-name buffer-modified-p "*" " " "%" format "%s%s %s"] 5 (#$ . 9490)])
(defalias 'msb--dired-directory #[nil ";\203 \301\302!!\207:\203 \301\302@!!\207\303\304\305 \"\207" [dired-directory abbreviate-file-name expand-file-name error "Unknown type of `dired-directory' in buffer %s" buffer-name] 3])
#@273 Create one string item, concerning a dired BUFFER, for the buffer menu.
The item looks like:
*% <buffer-name>
The `*' appears only if the buffer is marked as modified.
The `%' appears only if the buffer is read-only.
Optional second argument MAXBUF is completely ignored.
(defalias 'msb-dired-item-handler #[(buffer &optional maxbuf) "\304 \305 \203 \306\202\f \307\203 \310\202 \307\311\312\n	$+\207" [buffer-read-only read-only modified name msb--dired-directory buffer-modified-p "*" " " "%" format "%s%s %s"] 5 (#$ . 10245)])
#@257 Create one string item for the buffer menu.
The item looks like:
<buffer-name> *%# <file-name>
The `*' appears only if the buffer is marked as modified.
The `%' appears only if the buffer is read-only.
The `#' appears only version control file (SCCS/RCS).
(defalias 'msb-alon-item-handler #[(buffer maxbuf) "\305\211\306\"\307	!\310 \203 \311\202 \312\n\203 \313\202 \312\314\303!\203) \203) \315\202* \312\f\206/ \316&\207" [maxbuf buffer buffer-read-only vc-mode buffer-file-name format "%%%ds  %%s%%s%%s  %%s" buffer-name buffer-modified-p "*" " " "%" boundp "#" ""] 7 (#$ . 10790)])
#@83 Sorts the items depending on their buffer-name
An item look like (NAME . BUFFER).
(defalias 'msb-sort-by-name #[(item1 item2) "\302A!\302	A!\231\207" [item1 item2 buffer-name] 3 (#$ . 11390)])
#@99 Sorts the items depending on their directory.  Made for dired.
An item look like (NAME . BUFFER).
(defalias 'msb-sort-by-directory #[(item1 item2) "\212Aq\210\302 )\212	Aq\210\302 )\231\207" [item1 item2 msb--dired-directory] 2 (#$ . 11590)])
#@278 Pop up several menus of buffers for selection with the mouse.
This command switches buffers in the window that you clicked on, and
selects that window.

See the function `mouse-select-buffer' and the variable
`msb-menu-cond' for more information about how the menus are split.
(defalias 'msb #[(event) "\305 \211A@)\211@)\306\n!\204 \307\n!\210\310!\211\203' \311\f!\210\202+ \307!\210+\312\207" [event position window old-window buffer selected-window framep select-window mouse-select-buffer switch-to-buffer nil] 3 (#$ . 11841) "e"])
#@130 Return t if optional BUFFER is an "invisible" buffer.
If the argument is left out or nil, then the current buffer is considered.
(defalias 'msb-invisible-buffer-p #[(&optional buffer) "\301!G\302V\205 \301!\302H\303=\207" [buffer buffer-name 0 32] 2 (#$ . 12394)])
(defalias 'msb--strip-dir #[(dir) "\301\302!!\207" [dir file-name-directory directory-file-name] 3])
(defalias 'msb--init-file-alist #[(list) "\304\305\306\"\307\"\310\211\305\311	\"\nBC\244+\207" [list buffer-alist buffers path sort mapcan #[(buffer) "\302\303!!\211\205 \304	!BC)\207" [buffer file-name expand-file-name buffer-file-name msb--strip-dir] 4] #[(item1 item2) "@	@\231\207" [item1 item2] 2] nil #[(item) "\203 	@\230\203 	A\nB\304\207\205 \nB	@	AC\205' C)\207" [path item buffers result nil] 2]] 4])
(defalias 'msb--format-title #[(top-found-p path number-of-items) "\n\203 \305\306\nP\"\203 \307\310\225\311OP\312\203  \313\202! \314	\f#)\207" [path new-path msb--home-dir top-found-p number-of-items string-match "^" "~" 0 nil format "%s... (%d)" "%s (%d)"] 4])
(byte-code "\301B\302B\301\207" [current-load-list msb--choose-file-menu-list msb--choose-file-menu-arg-list] 2)
(defalias 'msb--choose-file-menu #[(list) "\306!\307\n\247\203 \n\202 \310\307\211\211\211\211\211\211\211@A@A\311!\203J\307\307\211\211@\203\222 \fGX\203\222 @GGY\203\222 @\312GO\230\203\222 \313\314\fA\"A\211@\202Y \fGV\203\313 @\315@AG#ABB\307@A@A\202F\203\334 \313\fB\316!A\232\203\357 \203FGGY\203	\312GO\230\204GGW\203F\312GO\230\203F\315@AG#ABB\307@A@A-\202? \203c\315@AG#ABB\307\237.\n\207" [list msb--choose-file-menu-arg-list msb-max-file-menu-items old-path buffers path msb--init-file-alist nil 10 copy-list 0 t append msb--format-title msb--strip-dir rest first last-path top-found-p max-clumped-together final-list buffer-alist msb--choose-file-menu-list item new-path result tmp-rest found-p] 11])
(defalias 'msb--create-function-info #[(menu-cond-elt) "\306\307!	G\310V\205 \310	8\211\203 \311\n!\203 \n\202 	G\312V\203, \312	8\202- \311!\204B \203B \313=\203G \202H 	G\310W\203U \314\315!\210	G\310V\203h \311\n!\204h \316\317\nC\"\210	G\312V\203\211 \203\211 \311!\204\211 \313=\204\211 \316\317C\"\210\320L\210\321	@	A@\322	8\f&-\207" [list-symbol menu-cond-elt tmp-ih msb-item-handling-function item-handler msb-item-sort-function make-symbol "-msb-buffer-list" 3 fboundp 4 t error "Wrong format of msb-menu-cond." signal invalid-function nil vector 2 tmp-s sorter] 8])
(defalias 'msb--collect #[(function-info-vector) "\306\211\211\307\306\306T\211\fGW\203M \fH\310\311H!\211\203C \n\312=\2034 	\204C \n\313=\203< \314B\n\203 \n\313=\204 \237,\211\204^ \n\204^ \315\316!\210+\207" [function-info-list multi-flag result function-info-vector #1=#:G19701 #2=#:G19702 nil -1 eval 1 no-multi multi t error "No catch-all in msb-menu-cond!" fi #3=#:G19703] 4])
(put 'msb--collect 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'msb--add-to-menu #[(buffer function-info max-buffer-name-length) "\304H\211\305H\n\"\nB\306	!BL)\207" [function-info list-symbol buffer max-buffer-name-length 0 4 eval] 5])
(defalias 'msb--choose-menu #[(buffer function-info-vector max-buffer-name-length) "?\205 \302	!?\205 \303\304\305\217\207" [msb-display-invisible-buffers-p buffer msb-invisible-buffer-p nil (byte-code "\212q\210\306\307	\310\211\211	\311\310\310T\211GW\203Y H\312\313H!\211\203O \f\314=\203@ \204O \f\315=\203H \316B\f\203 \f\315=\204 \237,\211\204j \f\204j \317\320!\210\n,\")\207" [buffer function-info-vector function-info-list multi-flag result #1=#:G19701 mapc #[(function-info) "\303	\n#\207" [buffer function-info max-buffer-name-length msb--add-to-menu] 4] nil -1 eval 1 no-multi multi t error "No catch-all in msb-menu-cond!" #2=#:G19702 fi #3=#:G19703] 6) ((error (byte-code "?\205 \302\303\304	!\"\305\306\"\207" [msb--error buffer format "In msb-menu-cond, error for buffer `%s'." buffer-name error "%s"] 4)))] 3])
(put 'msb--choose-menu 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'msb--create-sort-item #[(function-info) "\304\305H!\211\2058 \306H\307H\n\2057 \n\310\311H	G\"\204& 	\2025 \312=\2031 	\237\2025 \313	\"BB*)\207" [function-info buffer-list sort-key sorter eval 0 5 2 format 3 t sort] 6])
(defalias 'msb--aggregate-alist #[(alist same-predicate sort-predicate) "??\205\" \306\211\211\211\307\306\f\310\311\312\313\"\"	\237BC\244.\207" [alist old-car first-time-p tmp-same tmp-old-car same nil t mapcan #[(item) "\203 	A\nB\306	@\306\207\f	@\"\203 	A\nB\306\207\n	AC	@\237BC\207" [first-time-p item same old-car same-predicate tmp-same nil tmp-old-car] 3] sort #[(item1 item2) "	@\n@\"\207" [sort-predicate item1 item2] 3] result] 6])
(defalias 'msb--mode-menu-cond #[nil "\303\304\305\306\307\310\311 A\"\210\n)\312\"\")\207" [msb-modes-key key mode-list mapcar #[(item) "T\302\303\304	@DE	A\305PE\207" [key item eq major-mode quote " (%d)"] 4] sort nil mapc #[(buffer) "\212q\210\304 \204 	\n\236\204 	B\nB)\305\207" [buffer major-mode mode-list mode-name msb-invisible-buffer-p nil] 2] buffer-list #[(item1 item2) "A	A\231\207" [item1 item2] 2]] 6])
(defalias 'msb--most-recently-used-menu #[(max-buffer-name-length) "\247\205q \306V\205q \307 A\306	\310\310:\203R @\212\fq\210\311 ?\205. \312=?)\203E \212\fq\210\f\"\f)BB\nT\nY\204R A\211\202 \237,;\203g \313G\"\202m \314\315C\"*B\207" [msb-display-most-recently-used buffers n #1=#:G19704 buffer #2=#:G19705 0 buffer-list nil msb-invisible-buffer-p dired-mode format signal wrong-type-argument major-mode msb-item-handling-function max-buffer-name-length most-recently-used msb-most-recently-used-title] 4])
(defalias 'msb--create-buffer-menu-2 #[nil "\306\307\211\310\311\312 \"\210\313\314\315\316\317\320 \"\"\"\310\321\312 \"\210	\203) \315\322\323	!\"\307\324\n!	#\325$\307%\307&\307'$T\211$#GW\203g #$H%\326%!\211&\203? &'B'\202? '\237-\244(\315\327\330\331A\203\201 )B(B\202\203 (\332\"!\"\317\333\334\f!*\205\226 \335\336DC\337+\203\240 \340\202\241 \341\342BBC$.\207" [function-info-vector file-buffers max-buffer-name-length msb-menu-cond menu most-recently-used 0 nil mapc #[(buffer) "\204\n \303 ?\205 	\304\n!G]\211\207" [msb-display-invisible-buffers-p max-buffer-name-length buffer msb-invisible-buffer-p buffer-name] 3] buffer-list apply vector mapcar msb--create-function-info append msb--mode-menu-cond #[(buffer) "\203 \306	!\203 	\nB\211\207	\f?\205 \307	!?\205& \310\311\312\217+\207" [msb-files-by-directory buffer file-buffers function-info-vector max-buffer-name-length msb-display-invisible-buffers-p buffer-file-name msb-invisible-buffer-p nil (byte-code "\212q\210\306\307	\310\211\211	\311\310\310T\211GW\203Y H\312\313H!\211\203O \f\314=\203@ \204O \f\315=\203H \316B\f\203 \f\315=\204 \237,\211\204j \f\204j \317\320!\210\n,\")\207" [buffer function-info-vector function-info-list multi-flag result #1=#:G19701 mapc #[(function-info) "\303	\n#\207" [buffer function-info max-buffer-name-length msb--add-to-menu] 4] nil -1 eval 1 no-multi multi t error "No catch-all in msb-menu-cond!" #2=#:G19702 fi #3=#:G19703] 6) ((error (byte-code "?\205 \302\303\304	!\"\305\306\"\207" [msb--error buffer format "In msb-menu-cond, error for buffer `%s'." buffer-name error "%s"] 4)))] 3] #[(buffer-list) "	@\302\303\304	A\"\305\"BB\207" [msb-files-by-directory-sort-key buffer-list sort mapcar #[(buffer) "\212q\210	\n\")B\207" [buffer msb-item-handling-function max-buffer-name-length] 3] #[(item1 item2) "@	@\231\207" [item1 item2] 2]] 6] msb--choose-file-menu msb--most-recently-used-menu -1 msb--create-sort-item cdr msb--add-separators sort #[(elt1 elt2) "@	@W\207" [elt1 elt2] 2] (keymap "Select Buffer") msb--make-keymap-menu separator "--" toggle "*Files by type*" "*Files by directory*" msb--toggle-menu-type #4=#:G19706 #5=#:G19707 elt value #6=#:G19708 others msb-most-recently-used-sort-key msb-separator-diff msb-files-by-directory] 7])
(defalias 'msb--create-buffer-menu #[nil "\301 \302\216\212\303 +\207" [save-match-data-internal match-data ((set-match-data save-match-data-internal)) msb--create-buffer-menu-2] 1])
(defalias 'msb--toggle-menu-type #[nil "?\301\302!\207" [msb-files-by-directory menu-bar-update-buffers t] 2 nil nil])
#@215 Pop up several menus of buffers, for selection with the mouse.
Returns the selected buffer or nil if no buffer is selected.

The way the buffers are split is conveniently handled with the
variable `msb-menu-cond'.
(defalias 'mouse-select-buffer #[(event) "\204 	\203 \306\307!\203 \307 \203 \310\311 \n\310\306\312!\203^ \306\313!\203^ \n\211A@)\314\f8)@\n\211A@)\314\f8)A\n\211A@)\211@)\211 Z\211DD+\315\316\317\"\210\320\f	\"\211@\321=\203x \322 \210\323\n!\202\272 @\247\203\221 A\204\221 \324@	\236\233\323\n!)\202\272 @\247\203\236 A\211\202\222 @;\203\256 A\204\256 @\202\272 \204\266 \202\272 \325\326\"*\207" [msb--error msb--last-buffer-menu event choice position posWind fboundp frame-or-buffer-changed-p nil msb--create-buffer-menu posn-x-y posn-window 2 sit-for 0 100 x-popup-menu toggle msb--toggle-menu-type mouse-select-buffer 3 error "Unknown form for buffer: %s" posY posX msb-horizontal-shift-function] 4 (#$ . 21093)])
(defalias 'msb--add-separators #[(sorted-list) "\203	 \247\204 	\207\303\304\305	\")\207" [msb-separator-diff sorted-list last-key nil mapcan #[(item) "\203 	\203 \n@	ZV\203 \n@\211\303B\nD\207\n@\nC\207" [msb-separator-diff last-key item separator] 3]] 3])
(defalias 'msb--split-menus-2 #[(list mcount result) "G	V\203@ \306\307\211\211	W\203\" \211A@\nB\fT\211\202 \n\237\211@@\310P\311F\n\244B+\312T#\207\204G \207\307@@\310P\311F\244B)\237\207" [list msb-max-menu-items tmp-list sub-name count mcount 0 nil "..." keymap msb--split-menus-2 result] 5])
(defalias 'msb--split-menus #[(list) "\250\203 \302V\203 \303	\302\304#\207	\207" [msb-max-menu-items list 0 msb--split-menus-2 nil] 4])
(defalias 'msb--make-keymap-menu #[(raw-menu) "\303\304B\305\306\307\n\"*\207" [mcount end raw-menu (nil) menu-bar-select-buffer 0 mapcar #[(sub-menu) "\303=\203\n \303\304D\207\305\306A\"\nT\211@\307@F\310	!\244)\207" [sub-menu buffers mcount separator "--" mapcar #[(item) "@A\304	!\n*BB\207" [item buffer string end buffer-name] 3] keymap msb--split-menus] 4]] 3])
(defalias 'menu-bar-update-buffers #[(&optional arg) "\306\307 \310\"\205\202 \311\312!\203 \312 \204 \205\202 \313 \314\211\315 \211A\203\\ G\316\317\"\250\203L \320V\203L V\203L \233\314\241\210\321\322\323\257\324\325\"\244*\326\307 \327\330\n\203z 	\203z \323\331	\205r \332F\nAA\244\202 \n\206 \333B#+\207" [arg frames-menu buffers-menu frames msb--last-buffer-menu frame-length lookup-key current-global-map [menu-bar buffer] fboundp frame-or-buffer-changed-p frame-list nil msb--create-buffer-menu format "Frames (%d)" 1 frame (nil) keymap mapcar #[(frame) "\301\302!\236A\303\211BE\304\244\207" [frame name frame-parameters nil menu-bar-select-frame] 4] define-key [menu-bar buffer] "Buffers" "Buffers and Frames" (separator "--") undefined f-title msb-max-menu-items msb-separator-diff] 9])
(byte-code "\303\302!\203 \304\305!\204 \303\300!\204 \306\300	B\305\307M\210\303\302!\203- \310\n>\204- \311\302\310\"\210\304\312!\203: \313\312\314\315 #\210\316\314!\210\317\314\320\321!\"\207" [msb--buffer-count current-load-list menu-bar-update-hook boundp fboundp frame-or-buffer-changed-p 0 #[nil "\302 G\211	U?\205 \303)\207" [count msb--buffer-count buffer-list t] 3] menu-bar-update-buffers add-hook mouse-buffer-menu substitute-key-definition msb current-global-map provide eval-after-load run-hooks msb-after-load-hooks] 4)
