4.3BSD/usr/contrib/emacs/lisp/ebuff-menu.elc


(require (quote electric))

(defvar Electric-buffer-menu-mode-map nil)

(defun electric-buffer-list (arg) "\
Vaguely like ITS lunar select buffer;
combining typeoutoid buffer listing with menuoid buffer selection.
This pops up a buffer describing the set of emacs buffers.
If the very next character typed is a space then the buffer list is killed.

Otherwise, one may use \\[next-line] and \\[previous-line] to move around in the buffer list window
and select a buffer by typing Space when the cursor is on the
appropriate line of the buffer-list window.
Other commands are much like those of buffer-menu-mode.

Calls value of  electric-buffer-menu-mode-hook  on entry if non-nil.
Calls value of  after-electric-buffer-menu  on exit (select) if non-nil.

\\{Electric-buffer-menu-mode-map}" (interactive "P") (byte-code "Ĉϋ
8q
s ab !55!9." [Helper-return-blurb Helper-major-mode Helper-mode-name goal-column nil select buffer arg first last t after-electric-buffer-menu "return to buffer editing" electric-buffer-menu-mode "Electric Buffer Menu" ((byte-code "Nj!!ˎ	q ΍)" [arg buffer select first last nil t ((byte-code "!" [arg list-buffers] 2)) window-buffer Electric-pop-up-window "*Buffer List*" ((byte-code "q 	
!!" [buffer select Buffer-menu-mode bury-buffer message ""] 4)) electric-buffer-menu-mode electric-buffer-menu-select (byte-code "eb!`db!`b
	B%*" [first last nil t forward-line 2 -1 Electric-command-loop electric-buffer-menu-select Electric-buffer-menu-looper] 9)] 5)) Buffer-menu-execute Buffer-menu-select boundp funcall] 6))

(defun Electric-buffer-menu-looper (state conditions) (byte-code "	@>?@A\"*`	@W! *`	AV* " [conditions state (buffer-read-only end-of-buffer beginning-of-buffer) signal Electric-buffer-menu-beginning Electric-buffer-menu-end] 4))

(defun electric-buffer-menu-mode nil "\
Major mode for editing a list of buffers.
Each line describes one of the buffers in Emacs.
Letters do not insert themselves; instead, they are commands.
C-g or C-c C-c -- exit buffer menu, returning to previous window and buffer
  configuration.  If the very first character typed is a space, it
  also has this effect.
Space -- select buffer of line point is on.
  Also show buffers marked with m in other windows,
  kills buffers marked with k, and saves those marked with s.
m -- mark buffer to be displayed.
~ -- clear modified-flag on that buffer.
s -- mark that buffer to be saved.
d or k or C-d or C-k -- mark that buffer to be killed.
u -- remove all kinds of marks from current line.
v -- view buffer, returning when done.
Delete -- back up a line and remove marks.
\\{Electric-buffer-menu-mode-map}
Entry to this mode via command \\[electric-buffer-list] calls the value of
electric-buffer-menu-mode-hook if it is non-nil.  The value of
after-electric-buffer-menu is called on exit (when a selection is made)
if it is non-nil." (byte-code " !ɉʉˉ!" [Electric-buffer-menu-mode-map mode-line-format truncate-lines t buffer-read-only major-mode mode-name kill-all-local-variables use-local-map "-- Electric Buffer List   %M   %[%]----%3p-%-" electric-buffer-menu-mode "Electric Buffer Menu" run-hooks electric-buffer-menu-mode-hook] 4))

(put (quote Electric-buffer-menu-undefined) (quote suppress-keymap) t)

(if Electric-buffer-menu-mode-map nil (let ((map (make-keymap))) (fillarray map (quote Electric-buffer-menu-undefined)) (define-key map "" (make-keymap)) (fillarray (lookup-key map "") (quote Electric-buffer-menu-undefined)) (define-key map "" (quote suspend-emacs)) (define-key map "v" (quote Electric-buffer-menu-mode-view-buffer)) (define-key map "" (quote Helper-help)) (define-key map "?" (quote Helper-describe-bindings)) (define-key map "" nil) (define-key map "" (quote Electric-buffer-menu-quit)) (define-key map "" (quote Electric-buffer-menu-quit)) (define-key map "q" (quote Electric-buffer-menu-quit)) (define-key map " " (quote Electric-buffer-menu-select)) (define-key map "" (quote recenter)) (define-key map "s" (quote Buffer-menu-save)) (define-key map "d" (quote Buffer-menu-kill)) (define-key map "k" (quote Buffer-menu-kill)) (define-key map "" (quote Buffer-menu-kill)) (define-key map "" (quote Buffer-menu-kill)) (define-key map "" (quote Buffer-menu-backup-unmark)) (define-key map "~" (quote Buffer-menu-not-modified)) (define-key map "u" (quote Buffer-menu-unmark)) (let ((i 48)) (while (<= i 57) (define-key map (char-to-string i) (quote digit-argument)) (define-key map (concat "" (char-to-string i)) (quote digit-argument)) (setq i (1+ i)))) (define-key map "-" (quote negative-argument)) (define-key map "-" (quote negative-argument)) (define-key map "m" (quote Buffer-menu-mark)) (define-key map "" (quote universal-argument)) (define-key map "" (quote previous-line)) (define-key map "" (quote next-line)) (define-key map "" (quote scroll-up)) (define-key map "v" (quote scroll-down)) (define-key map "" (quote scroll-other-window)) (define-key map ">" (quote Electric-buffer-menu-end)) (define-key map "<" (quote Electric-buffer-menu-beginning)) (setq Electric-buffer-menu-mode-map map)))

(defun Electric-buffer-menu-exit nil (interactive) (byte-code "ˆ	ď" [unread-command-char last-input-char nil (byte-code "\"" [nil throw electric-buffer-menu-select] 3) ((error (byte-code "  " [Buffer-menu-mode other-buffer] 3)))] 3))

(defun Electric-buffer-menu-select nil "\
Leave Electric Buffer Menu, selecting buffers and executing changes.
Saves buffers marked `S'.  Kills buffers marked `K'.
Selects buffer at point and displays buffers marked `>' in other
windows." (interactive) (byte-code "`\"" [nil throw electric-buffer-menu-select] 3))

(defun Electric-buffer-menu-quit nil "\
Leave Electric Buffer Menu, restoring previous window configuration.
Does not execute select, save, or kill commands." (interactive) (byte-code "\"" [nil throw electric-buffer-menu-select] 3))

(defun Electric-buffer-menu-undefined nil (interactive) (byte-code " !=#!=#!=#!=*̂-!!!" [nil ding message key-binding "" Electric-buffer-menu-quit " " Electric-buffer-menu-select "" Helper-help "?" Helper-describe-bindings "Type C-c C-c to exit, Space to select, C-h for help, ? for commands" substitute-command-keys "Type \\[Electric-buffer-menu-quit] to exit, \\[Electric-buffer-menu-select] to select, \\[Helper-help] for help, \\[Helper-describe-bindings] for commands." sit-for 4] 9))

(defun Electric-buffer-menu-beginning nil "\
Move to the first buffer description in Electric Buffer Menu." (interactive) (byte-code "eb!" [nil forward-line 2] 2))

(defun Electric-buffer-menu-end nil "\
Move to the last buffer description in Electric Buffer Menu." (interactive) (byte-code "db!d!? !\"S!" [nil forward-line -1 pos-visible-in-window-p recenter / window-height selected-window 2] 8))

(defun Electric-buffer-menu-mode-view-buffer nil "\
View buffer on current line in Electric Buffer Menu.
Returns to Electric Buffer Menu when done." (interactive) (byte-code "	!! \"!)" [bufnam nil Buffer-menu-buffer view-buffer ding message "Buffer %s does not exist!" sit-for 4] 6))