diff options
Diffstat (limited to 'lisp/buff-menu.el')
-rw-r--r-- | lisp/buff-menu.el | 186 |
1 files changed, 84 insertions, 102 deletions
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el index bb39e1f5795..340c926f8d6 100644 --- a/lisp/buff-menu.el +++ b/lisp/buff-menu.el @@ -117,8 +117,7 @@ This is set by the prefix argument to `buffer-menu' and related commands.") (defvar Buffer-menu-mode-map - (let ((map (make-sparse-keymap)) - (menu-map (make-sparse-keymap))) + (let ((map (make-sparse-keymap))) (set-keymap-parent map tabulated-list-mode-map) (define-key map "v" 'Buffer-menu-select) (define-key map "2" 'Buffer-menu-2-window) @@ -152,82 +151,63 @@ commands.") (define-key map [mouse-2] 'Buffer-menu-mouse-select) (define-key map [follow-link] 'mouse-face) - - (define-key map [menu-bar Buffer-menu-mode] (cons (purecopy "Buffer-Menu") menu-map)) - (bindings--define-key menu-map [quit] - '(menu-item "Quit" quit-window - :help "Remove the buffer menu from the display")) - (bindings--define-key menu-map [rev] - '(menu-item "Refresh" revert-buffer - :help "Refresh the *Buffer List* buffer contents")) - (bindings--define-key menu-map [s0] menu-bar-separator) - (bindings--define-key menu-map [tf] - '(menu-item "Show Only File Buffers" Buffer-menu-toggle-files-only - :button (:toggle . Buffer-menu-files-only) - :help "Toggle whether the current buffer-menu displays only file buffers")) - (bindings--define-key menu-map [s1] menu-bar-separator) - ;; FIXME: The "Select" entries could use better names... - (bindings--define-key menu-map [sel] - '(menu-item "Select Marked" Buffer-menu-select - :help "Select this line's buffer; also display buffers marked with `>'")) - (bindings--define-key menu-map [bm2] - '(menu-item "Select Two" Buffer-menu-2-window - :help "Select this line's buffer, with previous buffer in second window")) - (bindings--define-key menu-map [bm1] - '(menu-item "Select Current" Buffer-menu-1-window - :help "Select this line's buffer, alone, in full frame")) - (bindings--define-key menu-map [ow] - '(menu-item "Select in Other Window" Buffer-menu-other-window - :help "Select this line's buffer in other window, leaving buffer menu visible")) - (bindings--define-key menu-map [tw] - '(menu-item "Select in Current Window" Buffer-menu-this-window - :help "Select this line's buffer in this window")) - (bindings--define-key menu-map [s2] menu-bar-separator) - (bindings--define-key menu-map [is] - '(menu-item "Regexp Isearch Marked Buffers..." Buffer-menu-isearch-buffers-regexp - :help "Search for a regexp through all marked buffers using Isearch")) - (bindings--define-key menu-map [ir] - '(menu-item "Isearch Marked Buffers..." Buffer-menu-isearch-buffers - :help "Search for a string through all marked buffers using Isearch")) - (bindings--define-key menu-map [mo] - '(menu-item "Multi Occur Marked Buffers..." Buffer-menu-multi-occur - :help "Show lines matching a regexp in marked buffers using Occur")) - (bindings--define-key menu-map [s3] menu-bar-separator) - (bindings--define-key menu-map [by] - '(menu-item "Bury" Buffer-menu-bury - :help "Bury the buffer listed on this line")) - (bindings--define-key menu-map [vt] - '(menu-item "Set Unmodified" Buffer-menu-not-modified - :help "Mark buffer on this line as unmodified (no changes to save)")) - (bindings--define-key menu-map [ex] - '(menu-item "Execute" Buffer-menu-execute - :help "Save and/or delete buffers marked with s or k commands")) - (bindings--define-key menu-map [s4] menu-bar-separator) - (bindings--define-key menu-map [delb] - '(menu-item "Mark for Delete and Move Backwards" Buffer-menu-delete-backwards - :help "Mark buffer on this line to be deleted by x command and move up one line")) - (bindings--define-key menu-map [del] - '(menu-item "Mark for Delete" Buffer-menu-delete - :help "Mark buffer on this line to be deleted by x command")) - - (bindings--define-key menu-map [sv] - '(menu-item "Mark for Save" Buffer-menu-save - :help "Mark buffer on this line to be saved by x command")) - (bindings--define-key menu-map [umk] - '(menu-item "Unmark" Buffer-menu-unmark - :help "Cancel all requested operations on buffer on this line and move down")) - (bindings--define-key menu-map [umkab] - '(menu-item "Remove marks..." Buffer-menu-unmark-all-buffers - :help "Cancel a requested operation on all buffers")) - (bindings--define-key menu-map [umka] - '(menu-item "Unmark all" Buffer-menu-unmark-all - :help "Cancel all requested operations on buffers")) - (bindings--define-key menu-map [mk] - '(menu-item "Mark" Buffer-menu-mark - :help "Mark buffer on this line for being displayed by v command")) map) "Local keymap for `Buffer-menu-mode' buffers.") +(easy-menu-define Buffer-menu-mode-menu Buffer-menu-mode-map + "Menu for `Buffer-menu-mode' buffers." + '("Buffer-Menu" + ["Mark" Buffer-menu-mark + :help "Mark buffer on this line for being displayed by v command"] + ["Unmark all" Buffer-menu-unmark-all + :help "Cancel all requested operations on buffers"] + ["Remove marks..." Buffer-menu-unmark-all-buffers + :help "Cancel a requested operation on all buffers"] + ["Unmark" Buffer-menu-unmark + :help "Cancel all requested operations on buffer on this line and move down"] + ["Mark for Save" Buffer-menu-save + :help "Mark buffer on this line to be saved by x command"] + ["Mark for Delete" Buffer-menu-delete + :help "Mark buffer on this line to be deleted by x command"] + ["Mark for Delete and Move Backwards" Buffer-menu-delete-backwards + :help "Mark buffer on this line to be deleted by x command and move up one line"] + "---" + ["Execute" Buffer-menu-execute + :help "Save and/or delete buffers marked with s or k commands"] + ["Set Unmodified" Buffer-menu-not-modified + :help "Mark buffer on this line as unmodified (no changes to save)"] + ["Bury" Buffer-menu-bury + :help "Bury the buffer listed on this line"] + "---" + ["Multi Occur Marked Buffers..." Buffer-menu-multi-occur + :help "Show lines matching a regexp in marked buffers using Occur"] + ["Isearch Marked Buffers..." Buffer-menu-isearch-buffers + :help "Search for a string through all marked buffers using Isearch"] + ["Regexp Isearch Marked Buffers..." Buffer-menu-isearch-buffers-regexp + :help "Search for a regexp through all marked buffers using Isearch"] + "---" + ;; FIXME: The "Select" entries could use better names... + ["Select in Current Window" Buffer-menu-this-window + :help "Select this line's buffer in this window"] + ["Select in Other Window" Buffer-menu-other-window + :help "Select this line's buffer in other window, leaving buffer menu visible"] + ["Select Current" Buffer-menu-1-window + :help "Select this line's buffer, alone, in full frame"] + ["Select Two" Buffer-menu-2-window + :help "Select this line's buffer, with previous buffer in second window"] + ["Select Marked" Buffer-menu-select + :help "Select this line's buffer; also display buffers marked with `>'"] + "---" + ["Show Only File Buffers" Buffer-menu-toggle-files-only + :help "Toggle whether the current buffer-menu displays only file buffers" + :style toggle + :selected Buffer-menu-files-only] + "---" + ["Refresh" revert-buffer + :help "Refresh the *Buffer List* buffer contents"] + ["Quit" quit-window + :help "Remove the buffer menu from the display"])) + (define-derived-mode Buffer-menu-mode tabulated-list-mode "Buffer Menu" "Major mode for Buffer Menu buffers. The Buffer Menu is invoked by the commands \\[list-buffers], @@ -268,6 +248,7 @@ In Buffer Menu mode, the following commands are defined: \\[revert-buffer] Update the list of buffers. \\[Buffer-menu-toggle-files-only] Toggle whether the menu displays only file buffers. \\[Buffer-menu-bury] Bury the buffer listed on this line." + :interactive nil (setq-local buffer-stale-function (lambda (&optional _noconfirm) 'fast)) (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t)) @@ -328,7 +309,7 @@ ARG, show only buffers that are visiting files." "Toggle whether the current buffer-menu displays only file buffers. With a positive ARG, display only file buffers. With zero or negative ARG, display other buffers as well." - (interactive "P") + (interactive "P" Buffer-menu-mode) (setq Buffer-menu-files-only (cond ((not arg) (not Buffer-menu-files-only)) ((> (prefix-numeric-value arg) 0) t))) @@ -337,7 +318,8 @@ negative ARG, display other buffers as well." "Showing all non-internal buffers.")) (revert-buffer)) -(defalias 'Buffer-menu-sort 'tabulated-list-sort) +(define-obsolete-function-alias 'Buffer-menu-sort 'tabulated-list-sort + "28.1") (defun Buffer-menu-buffer (&optional error-if-non-existent-p) @@ -373,14 +355,14 @@ is nil or omitted, and signal an error otherwise." (defun Buffer-menu-mark () "Mark the Buffer menu entry at point for later display. It will be displayed by the \\<Buffer-menu-mode-map>\\[Buffer-menu-select] command." - (interactive) + (interactive nil Buffer-menu-mode) (tabulated-list-set-col 0 (char-to-string Buffer-menu-marker-char) t) (forward-line)) (defun Buffer-menu-unmark (&optional backup) "Cancel all requested operations on buffer on this line and move down. Optional prefix arg means move up." - (interactive "P") + (interactive "P" Buffer-menu-mode) (Buffer-menu--unmark) (forward-line (if backup -1 1))) @@ -388,7 +370,7 @@ Optional prefix arg means move up." "Cancel a requested operation on all buffers. MARK is the character to flag the operation on the buffers. When called interactively prompt for MARK; RET remove all marks." - (interactive "cRemove marks (RET means all):") + (interactive "cRemove marks (RET means all):" Buffer-menu-mode) (save-excursion (goto-char (point-min)) (when (tabulated-list-header-overlay-p) @@ -403,12 +385,12 @@ When called interactively prompt for MARK; RET remove all marks." (defun Buffer-menu-unmark-all () "Cancel all requested operations on buffers." - (interactive) + (interactive nil Buffer-menu-mode) (Buffer-menu-unmark-all-buffers ?\r)) (defun Buffer-menu-backup-unmark () "Move up and cancel all requested operations on buffer on line above." - (interactive) + (interactive nil Buffer-menu-mode) (forward-line -1) (Buffer-menu--unmark)) @@ -427,7 +409,7 @@ will delete it. If prefix argument ARG is non-nil, it specifies the number of buffers to delete; a negative ARG means to delete backwards." - (interactive "p") + (interactive "p" Buffer-menu-mode) (if (or (null arg) (= arg 0)) (setq arg 1)) (while (> arg 0) @@ -446,14 +428,14 @@ buffers to delete; a negative ARG means to delete backwards." A subsequent \\<Buffer-menu-mode-map>`\\[Buffer-menu-execute]' command will delete the marked buffer. Prefix ARG means move that many lines." - (interactive "p") + (interactive "p" Buffer-menu-mode) (Buffer-menu-delete (- (or arg 1)))) (defun Buffer-menu-save () "Mark the buffer on this Buffer Menu line for saving. A subsequent \\<Buffer-menu-mode-map>`\\[Buffer-menu-execute]' command will save it." - (interactive) + (interactive nil Buffer-menu-mode) (when (Buffer-menu-buffer) (tabulated-list-set-col 2 "S" t) (forward-line 1))) @@ -462,7 +444,7 @@ will save it." "Mark the buffer on this line as unmodified (no changes to save). If ARG is non-nil (interactively, with a prefix argument), mark it as modified." - (interactive "P") + (interactive "P" Buffer-menu-mode) (with-current-buffer (Buffer-menu-buffer t) (set-buffer-modified-p arg)) (tabulated-list-set-col 2 (if arg "*" " ") t)) @@ -471,7 +453,7 @@ it as modified." "Save and/or delete marked buffers in the Buffer Menu. Buffers marked with \\<Buffer-menu-mode-map>`\\[Buffer-menu-save]' are saved. Buffers marked with \\<Buffer-menu-mode-map>`\\[Buffer-menu-delete]' are deleted." - (interactive) + (interactive nil Buffer-menu-mode) (save-excursion (Buffer-menu-beginning) (while (not (eobp)) @@ -502,7 +484,7 @@ You can mark buffers with the \\<Buffer-menu-mode-map>`\\[Buffer-menu-mark]' com This command deletes and replaces all the previously existing windows in the selected frame, and will remove any marks." - (interactive) + (interactive nil Buffer-menu-mode) (let* ((this-buffer (Buffer-menu-buffer t)) (menu-buffer (current-buffer)) (others (delq this-buffer (Buffer-menu-marked-buffers t))) @@ -533,23 +515,23 @@ If UNMARK is non-nil, unmark them." (defun Buffer-menu-isearch-buffers () "Search for a string through all marked buffers using Isearch." - (interactive) + (interactive nil Buffer-menu-mode) (multi-isearch-buffers (Buffer-menu-marked-buffers))) (defun Buffer-menu-isearch-buffers-regexp () "Search for a regexp through all marked buffers using Isearch." - (interactive) + (interactive nil Buffer-menu-mode) (multi-isearch-buffers-regexp (Buffer-menu-marked-buffers))) (defun Buffer-menu-multi-occur (regexp &optional nlines) "Show all lines in marked buffers containing a match for a regexp." - (interactive (occur-read-primary-args)) + (interactive (occur-read-primary-args) Buffer-menu-mode) (multi-occur (Buffer-menu-marked-buffers) regexp nlines)) (defun Buffer-menu-visit-tags-table () "Visit the tags table in the buffer on this line. See `visit-tags-table'." - (interactive) + (interactive nil Buffer-menu-mode) (let ((file (buffer-file-name (Buffer-menu-buffer t)))) (if file (visit-tags-table file) @@ -557,30 +539,30 @@ If UNMARK is non-nil, unmark them." (defun Buffer-menu-1-window () "Select this line's buffer, alone, in full frame." - (interactive) + (interactive nil Buffer-menu-mode) (switch-to-buffer (Buffer-menu-buffer t)) (bury-buffer (other-buffer)) (delete-other-windows)) (defun Buffer-menu-this-window () "Select this line's buffer in this window." - (interactive) + (interactive nil Buffer-menu-mode) (switch-to-buffer (Buffer-menu-buffer t))) (defun Buffer-menu-other-window () "Select this line's buffer in other window, leaving buffer menu visible." - (interactive) + (interactive nil Buffer-menu-mode) (switch-to-buffer-other-window (Buffer-menu-buffer t))) (defun Buffer-menu-switch-other-window () "Make the other window select this line's buffer. The current window remains selected." - (interactive) + (interactive nil Buffer-menu-mode) (display-buffer (Buffer-menu-buffer t) t)) (defun Buffer-menu-2-window () "Select this line's buffer, with previous buffer in second window." - (interactive) + (interactive nil Buffer-menu-mode) (let ((buff (Buffer-menu-buffer t)) (menu (current-buffer))) (delete-other-windows) @@ -591,7 +573,7 @@ The current window remains selected." (defun Buffer-menu-toggle-read-only () "Toggle read-only status of buffer on this line. This behaves like invoking \\[read-only-mode] in that buffer." - (interactive) + (interactive nil Buffer-menu-mode) (let ((read-only (with-current-buffer (Buffer-menu-buffer t) (read-only-mode 'toggle) @@ -600,7 +582,7 @@ This behaves like invoking \\[read-only-mode] in that buffer." (defun Buffer-menu-bury () "Bury the buffer listed on this line." - (interactive) + (interactive nil Buffer-menu-mode) (let ((buffer (tabulated-list-get-id))) (cond ((null buffer)) ((buffer-live-p buffer) @@ -616,12 +598,12 @@ This behaves like invoking \\[read-only-mode] in that buffer." (defun Buffer-menu-view () "View this line's buffer in View mode." - (interactive) + (interactive nil Buffer-menu-mode) (view-buffer (Buffer-menu-buffer t))) (defun Buffer-menu-view-other-window () "View this line's buffer in View mode in another window." - (interactive) + (interactive nil Buffer-menu-mode) (view-buffer-other-window (Buffer-menu-buffer t))) ;;; Functions for populating the Buffer Menu. @@ -646,7 +628,7 @@ means list those buffers and no others." (defun Buffer-menu-mouse-select (event) "Select the buffer whose line you click on." - (interactive "e") + (interactive "e" Buffer-menu-mode) (select-window (posn-window (event-end event))) (let ((buffer (tabulated-list-get-id (posn-point (event-end event))))) (when (buffer-live-p buffer) |