;ELC   
;;; Compiled by buildd@akateko.buildd on Fri Oct 25 13:51:50 2013
;;; from file /build/buildd/emacs23-23.4+1/debian/build-x/lisp/msb.el
;;; in Emacs version 23.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\301B\302\303!\210\304B\305\306!\210\307\310\311\312\313\314\315\316&\207" [current-load-list msb--few-menus (lambda (#1=#:defconst-tmp-var) (defconst msb--few-menus #1#)) (((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 message-mode gnus-group-mode gnus-article-mode score-mode gnus-browse-killed-mode))) 4010 "Mail (%d)") ((not buffer-file-name) 4099 "Buffers (%d)") ('no-multi 1099 "Files (%d)")) msb--very-many-menus (lambda (#2=#:defconst-tmp-var) (defconst msb--very-many-menus #2#)) (((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 message-mode gnus-group-mode gnus-article-mode score-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)")) custom-declare-group msb nil "Customizable buffer-selection with multiple menus." :prefix "msb-" :group mouse] 8)
#@44 Set the value of custom variables for msb.
(defalias 'msb-custom-set #[(symbol value) "	L\210\303\304!\205 \n\205 \305\306!\207" [symbol value msb-mode featurep msb msb-menu-bar-update-buffers t] 2 (#$ . 2932)])
#@1995 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.
A value of 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,
then 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 '(#$ . 3155) :type (byte-code "\302\303\304\305\306\257\303\304\307\306	\257\310BBB\207" [msb--very-many-menus msb--few-menus choice const :tag "long" :value "short" ((sexp :tag "user"))] 7) :set 'msb-custom-set :group 'msb)
#@40 The sort key for files sorted by mode.
(custom-declare-variable 'msb-modes-key '4000 '(#$ . 5445) :type 'integer :set 'msb-custom-set :group 'msb :version "20.3")
#@136 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 '(#$ . 5615) :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 (#$ . -5889))
#@181 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.  A value of nil means no limit.
(custom-declare-variable 'msb-max-menu-items '15 '(#$ . 5997) :type '(choice integer (const nil)) :set 'msb-custom-set :group 'msb)
#@339 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 '(#$ . 6316) :type 'integer :set 'msb-custom-set :group 'msb)
#@70 Where should the menu with the most recently used buffers be placed?
(custom-declare-variable 'msb-most-recently-used-sort-key '-1010 '(#$ . 6776) :type 'integer :set 'msb-custom-set :group 'msb)
#@121 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 '(#$ . 6979) :type 'integer :set 'msb-custom-set :group 'msb)
#@44 The title for the most-recently-used menu.
(custom-declare-variable 'msb-most-recently-used-title '"Most recently used (%d)" '(#$ . 7228) :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) (#$ . -7420))
#@142 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 '(#$ . 7569) :type 'boolean :set 'msb-custom-set :group 'msb)
#@501 *The appearance of a buffer menu.

The default function to call for handling the appearance of a menu
item.  It should take two 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 (#$ . -7842))
#@399 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 '(#$ . 8416) :type '(choice (const msb-sort-by-name) (const :tag "Newest first" t) (const :tag "Oldest first" nil)) :set 'msb-custom-set :group 'msb)
#@107 Non-nil means that files should be sorted by directory.
This is instead of the groups in `msb-menu-cond'.
(custom-declare-variable 'msb-files-by-directory 'nil '(#$ . 9039) :type 'boolean :set 'msb-custom-set :group 'msb)
#@49 Hook run after the msb package has been loaded.
(custom-declare-variable 'msb-after-load-hook 'nil '(#$ . 9267) :type 'hook :set 'msb-custom-set :group 'msb)
(byte-code "\301B\302\301!\204 \303\301\304\"\210\305B\302\305!\204 \303\305\304\"\210\304\207" [current-load-list msb--last-buffer-menu default-boundp set-default nil msb--error] 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 (#$ . 9621)])
(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 (#$ . 10376)])
#@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 (#$ . 10921)])
#@92 Sort the items ITEM1 and ITEM2 by their `buffer-name'.
An item looks like (NAME . BUFFER).
(defalias 'msb-sort-by-name #[(item1 item2) "\302A!\302	A!\231\207" [item1 item2 buffer-name] 3 (#$ . 11521)])
#@103 Sort the items ITEM1 and ITEM2 by directory name.  Made for dired.
An item look like (NAME . BUFFER).
(defalias 'msb-sort-by-directory #[(item1 item2) "rAq\210\302 )r	Aq\210\302 )\231\207" [item1 item2 msb--dired-directory] 2 (#$ . 11731)])
#@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) "\306 \211:\203 A@\202 \306 `\307\310F)\211@)\311\312!\204( \313!\210\314\315\316\"?\317!\211\203= \320!\210\202A \313\f!\210)\n\203R \321\322!>\203R \323 \210+\311\207" [event position early-release window old-window buffer selected-window (0 . 0) 0 nil framep select-window sit-for 0.1 t mouse-select-buffer switch-to-buffer down event-modifiers discard-input last-input-event] 6 (#$ . 11980) "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 (#$ . 12707)])
#@48 Strip one hierarchy level from the end of DIR.
(defalias 'msb--strip-dir #[(dir) "\301\302!!\207" [dir file-name-directory directory-file-name] 3 (#$ . 12981)])
(defalias 'msb--init-file-alist #[(list) "\304\305\306\307\310\"\"\311\"\312\211\305\306\307\313	\"\"\nBC\244+\207" [list buffer-alist buffers dir sort apply nconc mapcar #[(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) "	@\232\203 	A\nB\304\207\205 \nB	@	AC\205# C)\207" [dir item buffers result nil] 2]] 6])
#@44 Format a suitable title for the menu item.
(defalias 'msb--format-title #[(top-found-p dir number-of-items) "\303\203	 \304\202\n \305\306	!\n#\207" [top-found-p dir number-of-items format "%s... (%d)" "%s (%d)" abbreviate-file-name] 4 (#$ . 13608)])
#@70 Choose file-menu with respect to directory for every buffer in LIST.
(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!\203Y\307\307@\203\223 \fGX\203\223 @GGY\203\223 \312\313\307@\313G&\314=\203\223 \314\315\fA\"A\211@\202S \fGV\203\314 @\316@AG#ABB\307@A@A\202U\203\335 \314\fB\317!A\232\203\360 \203UGGY\203\312\313\307\313G&\314=\204,GGW\203U\312\313\307\313G&\314=\203U\316@AG#ABB\307@A@A+\202? \203r\316@AG#ABB\307\237.\n\207" [list msb--choose-file-menu-arg-list msb-max-file-menu-items old-dir buffers dir msb--init-file-alist nil 10 copy-sequence compare-strings 0 t append msb--format-title msb--strip-dir rest first last-dir top-found-p max-clumped-together final-list buffer-alist msb--choose-file-menu-list item tmp-rest found-p completion-ignore-case] 11 (#$ . 13866)])
#@221 Create a vector from an element MENU-COND-ELT of `msb-menu-cond'.
This takes the form:
[BUFFER-LIST-VARIABLE CONDITION MENU-SORT-KEY MENU-TITLE ITEM-HANDLER SORTER]
See `msb-menu-cond' for a description of its elements.
(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 (#$ . 14935)])
(defalias 'msb--collect #[(function-info-vector) "\306\211\211\307\306\211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=#:--cl-vec-- #2=#:--cl-idx-- nil -1 eval 1 no-multi multi t error "No catch-all in msb-menu-cond!" fi #3=#:--cl-var--] 5])
(put 'msb--collect 'byte-optimizer 'byte-compile-inline-expand)
#@164 Add BUFFER to the menu depicted by FUNCTION-INFO.
All side-effects.  Adds an element of form (BUFFER-TITLE . BUFFER)
to the buffer-list variable in FUNCTION-INFO.
(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 (#$ . 16278)])
#@41 Select the appropriate menu for BUFFER.
(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 "rq\210	\306\211\211	\307\306\211T\211GW\203W H\310\311H!\211\203M \f\312=\203> \204M \f\313=\203F \314B\f\203 \f\313=\204 \237,\211\204h \f\204h \315\316!\210\n,\306\211\203\211 @\317#\210A\211\204s +\306\207" [buffer function-info-vector function-info-list multi-flag result #1=#:--cl-vec-- nil -1 eval 1 no-multi multi t error "No catch-all in msb-menu-cond!" msb--add-to-menu #2=#:--cl-idx-- fi #3=#:--cl-var-- info #4=#:--cl-dolist-temp-- max-buffer-name-length] 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 (#$ . 16648)])
(put 'msb--choose-menu 'byte-optimizer 'byte-compile-inline-expand)
#@75 Return (SORT-KEY TITLE . BUFFER-LIST) or nil if the buffer-list is empty.
(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 (#$ . 17671)])
#@452 Return ALIST as a sorted, aggregated alist.

In the result all items with the same car element (according to
SAME-PREDICATE) are aggregated together.  The alist is first sorted by
SORT-PREDICATE.

Example:
(msb--aggregate-alist
 '((a . a1) (a . a2) (b . b1) (c . c3) (a . a4) (a . a3) (b . b3) (b . b2))
 (function string=)
 (lambda (item1 item2)
   (string< (symbol-name item1) (symbol-name item2))))
results in
((a a1 a2 a4 a3) (b b1 b3 b2) (c c3))
(defalias 'msb--aggregate-alist #[(alist same-predicate sort-predicate) "??\205! \306\211\211\307\306\310\311\312\313\314\315\"\"\"	\237BC\244-\207" [alist old-car first-time-p tmp-same tmp-old-car same nil t apply nconc mapcar #[(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]] 7 (#$ . 18007)])
(defalias 'msb--mode-menu-cond #[nil "\306\307\310\311\312 A\311\211\2037 \f@rq\210\313 \204/ \n\236\204/ \314\311\211$B\nB)\fA\211\204 *\n)\315\"\")\207" [msb-modes-key key mode-list buffer #1=#:--cl-dolist-temp-- major-mode mapcar #[(item) "T\302\303\304	@DE	A\305PE\207" [key item eq major-mode quote " (%d)"] 4] sort nil buffer-list msb-invisible-buffer-p format-mode-line #[(item1 item2) "A	A\231\207" [item1 item2] 2] mode-name] 10])
#@97 Return a list for the most recently used buffers.
It takes the form ((TITLE . BUFFER-LIST)...).
(defalias 'msb--most-recently-used-menu #[(max-buffer-name-length) "\247\205q \306V\205q \307 A\306	\310\211:\203R @r\fq\210\311 ?\205. \312=?)\203E r\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=#:--cl-var-- buffer #2=#:--cl-var-- 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 (#$ . 19415)])
(defalias 'msb--create-buffer-menu-2 #[nil "\306\307\211\310 \307\211\203) \f@\204 \311 \204\" \n\312!G]\fA\211\204 *\313\314\315\316\317%\320 \"\"\"\310 \307\211&\203v &@'\203W \321!\203W 	B\202m \n\204g \311!\204l \307\322\323\217\210+&A\211&\204A *	\203\202 \315\324\325	!\"\307(\326\n!)	*\327+\307\211,-\307.+T\211+*GW\203\302 *+H,\330,!\211-\203\232 -.B.\202\232 .\237-\244/\315\331\332\333)A\203\336 0)B/B\202\340 /\334\"!\"(\317\335\336(!1\205\365 \337\340DC\341'\203\377 \342\202 \343\344BBC$.\207" [function-info-vector file-buffers max-buffer-name-length buffer #1=#:--cl-dolist-temp-- msb-display-invisible-buffers-p 0 nil buffer-list msb-invisible-buffer-p buffer-name apply vector mapcar msb--create-function-info append msb--mode-menu-cond buffer-file-name (byte-code "rq\210	\306\211\211	\307\306\211T\211GW\203W H\310\311H!\211\203M \f\312=\203> \204M \f\313=\203F \314B\f\203 \f\313=\204 \237,\211\204h \f\204h \315\316!\210\n,\306\211\203\211 @\317#\210A\211\204s +\306\207" [buffer function-info-vector function-info-list multi-flag result #2=#:--cl-vec-- nil -1 eval 1 no-multi multi t error "No catch-all in msb-menu-cond!" msb--add-to-menu #3=#:--cl-idx-- fi #4=#:--cl-var-- info #5=#:--cl-dolist-temp-- max-buffer-name-length] 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))) #[(buffer-list) "	@\302\303\304	A\"\305\"BB\207" [msb-files-by-directory-sort-key buffer-list sort mapcar #[(buffer) "r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 msb-menu-cond #6=#:--cl-dolist-temp-- msb-files-by-directory menu most-recently-used #7=#:--cl-vec-- #8=#:--cl-idx-- elt value #9=#:--cl-var-- others msb-most-recently-used-sort-key msb-separator-diff] 7])
(defalias 'msb--create-buffer-menu #[nil "\301 \302\216\212\303 +\207" [save-match-data-internal match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) msb--create-buffer-menu-2] 1])
#@63 Multi-purpose function for selecting a buffer with the mouse.
(defalias 'msb--toggle-menu-type #[nil "?\301\302!\207" [msb-files-by-directory msb-menu-bar-update-buffers t] 2 (#$ . 22576) 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\210 \306\313!\203\210 \n\211:\2035 \nA@\202; \314 `\315\316F)\317\f8)@\n\211:\203O \nA@\202U \314 `\315\316F)\317\f8)A\n\211:\203i \nA@\202o \314 `\315\316F)\211@)\211 Z\211DD+\320\f	\"\211@\321=\203\235 \322 \210\323\n!\202\337 @\247\203\266 A\204\266 @	\236AA\323\n!)\202\337 @\247\203\303 A\211\202\267 @;\203\323 A\204\323 @\202\337 \204\333 \202\337 \324\325\"*\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 selected-window (0 . 0) 0 2 x-popup-menu toggle msb--toggle-menu-type mouse-select-buffer error "Unknown form for buffer: %s" posY posX msb-horizontal-shift-function] 7 (#$ . 22779)])
(defalias 'msb--add-separators #[(sorted-list) "\203	 \247\204 	\207\303\304\305\306\307	\"\")\207" [msb-separator-diff sorted-list last-key nil apply nconc mapcar #[(item) "\203 	\203 \n@	ZV\203 \n@\211\303B\nD\207\n@\nC\207" [msb-separator-diff last-key item separator] 3]] 5])
(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) "\302A!@	BB\207" [item end buffer-name] 3] keymap msb--split-menus] 4]] 3])
#@52 A re-written version of `menu-bar-update-buffers'.
(defalias 'msb-menu-bar-update-buffers #[(&optional arg) "\306\307 \310\"\205y \311\312!\203 \312 \204 \205y \313 \314\211\315 \211AA\203] G\316\317\"\250\203M \320V\203M V\203M \233\314\241\210\321\322\323\257\324\325\"\244*\n\203v 	\203v \326	\205o \327E\nA\244\202w \n\241+\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\"\301\302\"\303\211BE\304\303\305\306DF\244\207" [frame frame-parameter name nil lambda (interactive) menu-bar-select-frame] 6] "Buffers and Frames" (separator "--") f-title msb-max-menu-items global-buffers-menu-map msb-separator-diff] 6 (#$ . 24978)])
(byte-code "\302B\303\302!\204 \304\302\305\306!\307	\310\311#\210	)\"\210\302\207" [current-load-list map msb-mode-map default-boundp set-default make-sparse-keymap "Msb" define-key [remap mouse-buffer-menu] msb] 6)
#@245 Non-nil if Msb mode is enabled.
See the command `msb-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `msb-mode'.
(custom-declare-variable 'msb-mode 'nil '(#$ . 26093) :set 'custom-set-minor-mode :initialize 'custom-initialize-default :group 'msb :type 'boolean)
#@196 Toggle Msb mode.
With arg, turn Msb mode on if and only if arg is positive.
This mode overrides the binding(s) of `mouse-buffer-menu' to provide a
different buffer menu using the function `msb'.
(defalias 'msb-mode #[(&optional arg) "\303 	\304=\203 \n?\202( 	\203 \305	!\306V\202( \n\204\" \307\202( \310\311\302\"\210\312\211\203> \313\314\315\"\210\316\314\317\"\210\315\307!\210\202L \316\314\315\"\210\313\314\317\"\210\317\307!\210\320\321\n\203V \322\202W \323\"\210\324\325!\203| \326\302!\210\303 \203o \303 \232\203| \310\327\n\203y \330\202z \331\"\210)\332 \210\n\207" [#1=#:last-message arg msb-mode current-message toggle prefix-numeric-value 0 t message "Toggling %s off; better pass an explicit argument." nil add-hook menu-bar-update-hook msb-menu-bar-update-buffers remove-hook menu-bar-update-buffers run-hooks msb-mode-hook msb-mode-on-hook msb-mode-off-hook called-interactively-p any customize-mark-as-set "Msb mode %sabled" "en" "dis" force-mode-line-update] 4 (#$ . 26493) (list (or current-prefix-arg 'toggle))])
(byte-code "\301\302\303\304\300!\205\n #\207" [msb-mode-map add-minor-mode msb-mode nil boundp] 5)
#@25 Unload the Msb library.
(defalias 'msb-unload-function #[nil "\300\301!\210\302\207" [msb-mode -1 nil] 2 (#$ . 27643)])
(byte-code "\300\301!\210\302\303\304\"\207" [provide msb eval-after-load "msb" (run-hooks 'msb-after-load-hook 'msb-after-load-hooks)] 3)
