mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 18:40:39 -08:00
Convert ibuffer menus to easymenu
* lisp/ibuffer.el (ibuffer-mode-map): Move menu from here... (ibuffer-mode-mark-menu, ibuffer-mode-view-menu): ...to here. Convert to easymenu. (ibuffer-mode--groups-menu-definition): New function. Fix bug where "Kill filter by group named" and "Yank last killed filter group before" was overwritten and never shown in the menu. (ibuffer-mode-groups-popup): Convert to easymenu. (ibuffer-mode-operate-menu): Rename from 'ibuffer-mode-operate-map' and update uses. Convert to easymenu. (ibuffer-mode-operate-map): Make into obsolete alias for above renamed variable.
This commit is contained in:
parent
0fd206badc
commit
c537b6384f
1 changed files with 224 additions and 353 deletions
577
lisp/ibuffer.el
577
lisp/ibuffer.el
|
|
@ -364,64 +364,6 @@ directory, like `default-directory'."
|
|||
(regexp :tag "From")
|
||||
(regexp :tag "To"))))
|
||||
|
||||
(defvar ibuffer-mode-groups-popup
|
||||
(let ((groups-map (make-sparse-keymap "Filter Groups")))
|
||||
;; Filter groups
|
||||
|
||||
(define-key-after groups-map [filters-to-filter-group]
|
||||
'(menu-item "Create filter group from current filters..."
|
||||
ibuffer-filters-to-filter-group
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
|
||||
(define-key-after groups-map [forward-filter-group]
|
||||
'(menu-item "Move point to the next filter group"
|
||||
ibuffer-forward-filter-group))
|
||||
(define-key-after groups-map [backward-filter-group]
|
||||
'(menu-item "Move point to the previous filter group"
|
||||
ibuffer-backward-filter-group))
|
||||
(define-key-after groups-map [jump-to-filter-group]
|
||||
'(menu-item "Move point to a specific filter group..."
|
||||
ibuffer-jump-to-filter-group))
|
||||
(define-key-after groups-map [kill-filter-group]
|
||||
'(menu-item "Kill filter group named..."
|
||||
ibuffer-kill-filter-group
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
|
||||
(define-key-after groups-map [yank-filter-group]
|
||||
'(menu-item "Yank last killed filter group before..."
|
||||
ibuffer-yank-filter-group
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring)))
|
||||
(define-key-after groups-map [pop-filter-group]
|
||||
'(menu-item "Remove top filter group"
|
||||
ibuffer-pop-filter-group
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
|
||||
(define-key-after groups-map [clear-filter-groups]
|
||||
'(menu-item "Remove all filter groups"
|
||||
ibuffer-clear-filter-groups
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
|
||||
(define-key-after groups-map [pop-filter-group]
|
||||
'(menu-item "Decompose filter group..."
|
||||
ibuffer-pop-filter-group
|
||||
:help "\"Unmake\" a filter group"
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
|
||||
(define-key-after groups-map [save-filter-groups]
|
||||
'(menu-item "Save current filter groups permanently..."
|
||||
ibuffer-save-filter-groups
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)
|
||||
:help "Use a mnemonic name to store current filter groups"))
|
||||
(define-key-after groups-map [switch-to-saved-filter-groups]
|
||||
'(menu-item "Restore permanently saved filters..."
|
||||
ibuffer-switch-to-saved-filter-groups
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups)
|
||||
:help "Replace current filters with a saved stack"))
|
||||
(define-key-after groups-map [delete-saved-filter-groups]
|
||||
'(menu-item "Delete permanently saved filter groups..."
|
||||
ibuffer-delete-saved-filter-groups
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups)))
|
||||
(define-key-after groups-map [set-filter-groups-by-mode]
|
||||
'(menu-item "Set current filter groups to filter by mode"
|
||||
ibuffer-set-filter-groups-by-mode))
|
||||
|
||||
groups-map))
|
||||
|
||||
(defvar ibuffer--filter-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map (kbd "RET") 'ibuffer-filter-by-mode)
|
||||
|
|
@ -588,303 +530,233 @@ directory, like `default-directory'."
|
|||
(define-key map (kbd "C-x 5 RET") 'ibuffer-visit-buffer-other-frame)
|
||||
|
||||
(define-key map (kbd "/") ibuffer--filter-map)
|
||||
|
||||
(define-key map [menu-bar view]
|
||||
(cons "View" (make-sparse-keymap "View")))
|
||||
|
||||
(define-key-after map [menu-bar view visit-buffer]
|
||||
'(menu-item "View this buffer" ibuffer-visit-buffer))
|
||||
(define-key-after map [menu-bar view visit-buffer-other-window]
|
||||
'(menu-item "View (other window)" ibuffer-visit-buffer-other-window))
|
||||
(define-key-after map [menu-bar view visit-buffer-other-frame]
|
||||
'(menu-item "View (other frame)" ibuffer-visit-buffer-other-frame))
|
||||
(define-key-after map [menu-bar view ibuffer-update]
|
||||
'(menu-item "Update" ibuffer-update
|
||||
:help "Regenerate the list of buffers"))
|
||||
(define-key-after map [menu-bar view switch-format]
|
||||
'(menu-item "Switch display format" ibuffer-switch-format
|
||||
:help "Toggle between available values of `ibuffer-formats'"))
|
||||
|
||||
(define-key-after map [menu-bar view dashes]
|
||||
'("--"))
|
||||
|
||||
(define-key-after map [menu-bar view sort]
|
||||
(cons "Sort" (make-sparse-keymap "Sort")))
|
||||
|
||||
(define-key-after map [menu-bar view sort do-sort-by-major-mode]
|
||||
'(menu-item "Sort by major mode" ibuffer-do-sort-by-major-mode))
|
||||
(define-key-after map [menu-bar view sort do-sort-by-size]
|
||||
'(menu-item "Sort by buffer size" ibuffer-do-sort-by-size))
|
||||
(define-key-after map [menu-bar view sort do-sort-by-alphabetic]
|
||||
'(menu-item "Sort lexicographically" ibuffer-do-sort-by-alphabetic
|
||||
:help "Sort by the alphabetic order of buffer name"))
|
||||
(define-key-after map [menu-bar view sort do-sort-by-recency]
|
||||
'(menu-item "Sort by view time" ibuffer-do-sort-by-recency
|
||||
:help "Sort by the last time the buffer was displayed"))
|
||||
(define-key-after map [menu-bar view sort dashes]
|
||||
'("--"))
|
||||
(define-key-after map [menu-bar view sort invert-sorting]
|
||||
'(menu-item "Reverse sorting order" ibuffer-invert-sorting))
|
||||
(define-key-after map [menu-bar view sort toggle-sorting-mode]
|
||||
'(menu-item "Switch sorting mode" ibuffer-toggle-sorting-mode
|
||||
:help "Switch between the various sorting criteria"))
|
||||
|
||||
(define-key-after map [menu-bar view filter]
|
||||
(cons "Filter" (make-sparse-keymap "Filter")))
|
||||
|
||||
(define-key-after map [menu-bar view filter filter-disable]
|
||||
'(menu-item "Disable all filtering" ibuffer-filter-disable
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
|
||||
(define-key-after map [menu-bar view filter filter-by-mode]
|
||||
'(menu-item "Add filter by any major mode..." ibuffer-filter-by-mode))
|
||||
(define-key-after map [menu-bar view filter filter-by-used-mode]
|
||||
'(menu-item "Add filter by a major mode in use..."
|
||||
ibuffer-filter-by-used-mode))
|
||||
(define-key-after map [menu-bar view filter filter-by-derived-mode]
|
||||
'(menu-item "Add filter by derived mode..."
|
||||
ibuffer-filter-by-derived-mode))
|
||||
(define-key-after map [menu-bar view filter filter-by-name]
|
||||
'(menu-item "Add filter by buffer name..." ibuffer-filter-by-name))
|
||||
(define-key-after map [menu-bar view filter filter-by-starred-name]
|
||||
'(menu-item "Add filter by starred buffer name..."
|
||||
ibuffer-filter-by-starred-name
|
||||
:help "List buffers whose names begin with a star"))
|
||||
(define-key-after map [menu-bar view filter filter-by-filename]
|
||||
'(menu-item "Add filter by full filename..." ibuffer-filter-by-filename
|
||||
:help
|
||||
(concat "For a buffer associated with file `/a/b/c.d', "
|
||||
"list buffer if a given pattern matches `/a/b/c.d'")))
|
||||
(define-key-after map [menu-bar view filter filter-by-basename]
|
||||
'(menu-item "Add filter by file basename..."
|
||||
ibuffer-filter-by-basename
|
||||
:help (concat "For a buffer associated with file `/a/b/c.d', "
|
||||
"list buffer if a given pattern matches `c.d'")))
|
||||
(define-key-after map [menu-bar view filter filter-by-file-extension]
|
||||
'(menu-item "Add filter by file name extension..."
|
||||
ibuffer-filter-by-file-extension
|
||||
:help (concat "For a buffer associated with file `/a/b/c.d', "
|
||||
"list buffer if a given pattern matches `d'")))
|
||||
(define-key-after map [menu-bar view filter filter-by-directory]
|
||||
'(menu-item "Add filter by filename's directory..."
|
||||
ibuffer-filter-by-directory
|
||||
:help
|
||||
(concat "For a buffer associated with file `/a/b/c.d', "
|
||||
"list buffer if a given pattern matches `/a/b'")))
|
||||
(define-key-after map [menu-bar view filter filter-by-size-lt]
|
||||
'(menu-item "Add filter by size less than..." ibuffer-filter-by-size-lt))
|
||||
(define-key-after map [menu-bar view filter filter-by-size-gt]
|
||||
'(menu-item "Add filter by size greater than..."
|
||||
ibuffer-filter-by-size-gt))
|
||||
(define-key-after map [menu-bar view filter filter-by-modified]
|
||||
'(menu-item "Add filter by modified buffer" ibuffer-filter-by-modified
|
||||
:help "List buffers that are marked as modified"))
|
||||
(define-key-after map [menu-bar view filter filter-by-visiting-file]
|
||||
'(menu-item "Add filter by buffer visiting a file"
|
||||
ibuffer-filter-by-visiting-file
|
||||
:help "List buffers that are visiting files"))
|
||||
(define-key-after map [menu-bar view filter filter-by-content]
|
||||
'(menu-item "Add filter by content (regexp)..."
|
||||
ibuffer-filter-by-content))
|
||||
(define-key-after map [menu-bar view filter filter-by-predicate]
|
||||
'(menu-item "Add filter by Lisp predicate..."
|
||||
ibuffer-filter-by-predicate))
|
||||
(define-key-after map [menu-bar view filter pop-filter]
|
||||
'(menu-item "Remove top filter" ibuffer-pop-filter
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
|
||||
(define-key-after map [menu-bar view filter and-filter]
|
||||
'(menu-item "AND top two filters" ibuffer-and-filter
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers
|
||||
(cdr ibuffer-filtering-qualifiers))
|
||||
:help
|
||||
"Create a new filter which is the logical AND of the top two filters"))
|
||||
(define-key-after map [menu-bar view filter or-filter]
|
||||
'(menu-item "OR top two filters" ibuffer-or-filter
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers
|
||||
(cdr ibuffer-filtering-qualifiers))
|
||||
:help
|
||||
"Create a new filter which is the logical OR of the top two filters"))
|
||||
(define-key-after map [menu-bar view filter negate-filter]
|
||||
'(menu-item "Negate top filter" ibuffer-negate-filter
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
|
||||
(define-key-after map [menu-bar view filter decompose-filter]
|
||||
'(menu-item "Decompose top filter" ibuffer-decompose-filter
|
||||
:enable (and (featurep 'ibuf-ext)
|
||||
(memq (car ibuffer-filtering-qualifiers) '(or saved not)))
|
||||
:help "Break down a complex filter like OR or NOT"))
|
||||
(define-key-after map [menu-bar view filter exchange-filters]
|
||||
'(menu-item "Swap top two filters" ibuffer-exchange-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers
|
||||
(cdr ibuffer-filtering-qualifiers))))
|
||||
(define-key-after map [menu-bar view filter save-filters]
|
||||
'(menu-item "Save current filters permanently..." ibuffer-save-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)
|
||||
:help "Use a mnemonic name to store current filter stack"))
|
||||
(define-key-after map [menu-bar view filter switch-to-saved-filters]
|
||||
'(menu-item "Restore permanently saved filters..."
|
||||
ibuffer-switch-to-saved-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-saved-filters)
|
||||
:help "Replace current filters with a saved stack"))
|
||||
(define-key-after map [menu-bar view filter add-saved-filters]
|
||||
'(menu-item "Add to permanently saved filters..."
|
||||
ibuffer-add-saved-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)
|
||||
:help "Include already saved stack with current filters"))
|
||||
(define-key-after map [menu-bar view filter delete-saved-filters]
|
||||
'(menu-item "Delete permanently saved filters..."
|
||||
ibuffer-delete-saved-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-saved-filters)))
|
||||
|
||||
(define-key-after map [menu-bar view filter-groups]
|
||||
(cons "Filter Groups" ibuffer-mode-groups-popup))
|
||||
|
||||
(define-key-after map [menu-bar view dashes2]
|
||||
'("--"))
|
||||
(define-key-after map [menu-bar view auto-mode]
|
||||
'(menu-item "Auto Mode" ibuffer-auto-mode
|
||||
:button (:toggle . ibuffer-auto-mode)
|
||||
:help "Attempt to automatically update the Ibuffer buffer"))
|
||||
|
||||
(define-key-after map [menu-bar mark]
|
||||
(cons "Mark" (make-sparse-keymap "Mark")))
|
||||
|
||||
(define-key-after map [menu-bar mark toggle-marks]
|
||||
'(menu-item "Toggle marks" ibuffer-toggle-marks
|
||||
:help "Unmark marked buffers, and mark unmarked buffers"))
|
||||
(define-key-after map [menu-bar mark change-marks]
|
||||
'(menu-item "Change marks" ibuffer-change-marks
|
||||
:help "Change OLD mark for marked buffers with NEW"))
|
||||
(define-key-after map [menu-bar mark mark-forward]
|
||||
'(menu-item "Mark" ibuffer-mark-forward
|
||||
:help "Mark the buffer at point"))
|
||||
(define-key-after map [menu-bar mark unmark-forward]
|
||||
'(menu-item "Unmark" ibuffer-unmark-forward
|
||||
:help "Unmark the buffer at point"))
|
||||
(define-key-after map [menu-bar mark mark-by-mode]
|
||||
'(menu-item "Mark by mode..." ibuffer-mark-by-mode
|
||||
:help "Mark all buffers in a particular major mode"))
|
||||
(define-key-after map [menu-bar mark mark-modified-buffers]
|
||||
'(menu-item "Mark modified buffers" ibuffer-mark-modified-buffers
|
||||
:help "Mark all buffers which have been modified"))
|
||||
(define-key-after map [menu-bar mark mark-unsaved-buffers]
|
||||
'(menu-item "Mark unsaved buffers" ibuffer-mark-unsaved-buffers
|
||||
:help "Mark all buffers which have a file and are modified"))
|
||||
(define-key-after map [menu-bar mark mark-read-only-buffers]
|
||||
'(menu-item "Mark read-only buffers" ibuffer-mark-read-only-buffers
|
||||
:help "Mark all buffers which are read-only"))
|
||||
(define-key-after map [menu-bar mark mark-special-buffers]
|
||||
'(menu-item "Mark special buffers" ibuffer-mark-special-buffers
|
||||
:help "Mark all buffers whose name begins with a *"))
|
||||
(define-key-after map [menu-bar mark mark-dired-buffers]
|
||||
'(menu-item "Mark dired buffers" ibuffer-mark-dired-buffers
|
||||
:help "Mark buffers in dired-mode"))
|
||||
(define-key-after map [menu-bar mark mark-dissociated-buffers]
|
||||
'(menu-item "Mark dissociated buffers" ibuffer-mark-dissociated-buffers
|
||||
:help "Mark buffers with a non-existent associated file"))
|
||||
(define-key-after map [menu-bar mark mark-help-buffers]
|
||||
'(menu-item "Mark help buffers" ibuffer-mark-help-buffers
|
||||
:help "Mark buffers in help-mode"))
|
||||
(define-key-after map [menu-bar mark mark-compressed-file-buffers]
|
||||
'(menu-item "Mark compressed file buffers"
|
||||
ibuffer-mark-compressed-file-buffers
|
||||
:help "Mark buffers which have a file that is compressed"))
|
||||
(define-key-after map [menu-bar mark mark-old-buffers]
|
||||
'(menu-item "Mark old buffers" ibuffer-mark-old-buffers
|
||||
:help "Mark buffers which have not been viewed recently"))
|
||||
(define-key-after map [menu-bar mark unmark-all]
|
||||
'(menu-item "Unmark All" ibuffer-unmark-all))
|
||||
(define-key-after map [menu-bar mark unmark-all-marks]
|
||||
'(menu-item "Unmark All buffers" ibuffer-unmark-all-marks))
|
||||
|
||||
(define-key-after map [menu-bar mark dashes]
|
||||
'("--"))
|
||||
|
||||
(define-key-after map [menu-bar mark mark-by-name-regexp]
|
||||
'(menu-item "Mark by buffer name (regexp)..." ibuffer-mark-by-name-regexp
|
||||
:help "Mark buffers whose name matches a regexp"))
|
||||
(define-key-after map [menu-bar mark mark-by-mode-regexp]
|
||||
'(menu-item "Mark by major mode (regexp)..." ibuffer-mark-by-mode-regexp
|
||||
:help "Mark buffers whose major mode name matches a regexp"))
|
||||
(define-key-after map [menu-bar mark mark-by-file-name-regexp]
|
||||
'(menu-item "Mark by file name (regexp)..."
|
||||
ibuffer-mark-by-file-name-regexp
|
||||
:help "Mark buffers whose file name matches a regexp"))
|
||||
(define-key-after map [menu-bar mark ibuffer-mark-by-content-regexp]
|
||||
'(menu-item "Mark by content (regexp)..."
|
||||
ibuffer-mark-by-content-regexp
|
||||
:help "Mark buffers whose content matches a regexp"))
|
||||
(define-key-after map [menu-bar mark mark-by-locked]
|
||||
'(menu-item "Mark by locked buffers..." ibuffer-mark-by-locked
|
||||
:help "Mark all locked buffers"))
|
||||
|
||||
map))
|
||||
|
||||
(defvar ibuffer-mode-operate-map
|
||||
(let ((operate-map (make-sparse-keymap "Operate")))
|
||||
(define-key-after operate-map [do-view]
|
||||
'(menu-item "View" ibuffer-do-view))
|
||||
(define-key-after operate-map [do-view-other-frame]
|
||||
'(menu-item "View (separate frame)" ibuffer-do-view-other-frame))
|
||||
(define-key-after operate-map [do-save]
|
||||
'(menu-item "Save" ibuffer-do-save))
|
||||
(define-key-after operate-map [do-replace-regexp]
|
||||
'(menu-item "Replace (regexp)..." ibuffer-do-replace-regexp
|
||||
:help "Replace text inside marked buffers"))
|
||||
(define-key-after operate-map [do-query-replace]
|
||||
'(menu-item "Query Replace..." ibuffer-do-query-replace
|
||||
:help "Replace text in marked buffers, asking each time"))
|
||||
(define-key-after operate-map [do-query-replace-regexp]
|
||||
'(menu-item "Query Replace (regexp)..." ibuffer-do-query-replace-regexp
|
||||
:help "Replace text in marked buffers by regexp, asking each time"))
|
||||
(define-key-after operate-map [do-print]
|
||||
'(menu-item "Print" ibuffer-do-print))
|
||||
(define-key-after operate-map [do-toggle-modified]
|
||||
'(menu-item "Toggle modification flag" ibuffer-do-toggle-modified))
|
||||
(define-key-after operate-map [do-toggle-read-only]
|
||||
'(menu-item "Toggle read-only flag" ibuffer-do-toggle-read-only))
|
||||
(define-key-after operate-map [do-toggle-lock]
|
||||
'(menu-item "Toggle lock flag" ibuffer-do-toggle-lock))
|
||||
(define-key-after operate-map [do-revert]
|
||||
'(menu-item "Revert" ibuffer-do-revert
|
||||
:help "Revert marked buffers to their associated file"))
|
||||
(define-key-after operate-map [do-rename-uniquely]
|
||||
'(menu-item "Rename Uniquely" ibuffer-do-rename-uniquely
|
||||
:help "Rename marked buffers to a new, unique name"))
|
||||
(define-key-after operate-map [do-delete]
|
||||
'(menu-item "Kill" ibuffer-do-delete))
|
||||
(define-key-after operate-map [do-occur]
|
||||
'(menu-item "List lines matching..." ibuffer-do-occur
|
||||
:help "View all lines in marked buffers matching a regexp"))
|
||||
(define-key-after operate-map [do-shell-command-pipe]
|
||||
'(menu-item "Pipe to shell command..." ibuffer-do-shell-command-pipe
|
||||
:help "For each marked buffer, send its contents to a shell command"))
|
||||
(define-key-after operate-map [do-shell-command-pipe-replace]
|
||||
'(menu-item "Pipe to shell command (replace)..." ibuffer-do-shell-command-pipe-replace
|
||||
:help "For each marked buffer, replace its contents with output of shell command"))
|
||||
(define-key-after operate-map [do-shell-command-file]
|
||||
'(menu-item "Shell command on buffer's file..." ibuffer-do-shell-command-file
|
||||
:help "For each marked buffer, run a shell command with its file as argument"))
|
||||
(define-key-after operate-map [do-eval]
|
||||
'(menu-item "Eval..." ibuffer-do-eval
|
||||
:help "Evaluate a Lisp form in each marked buffer"))
|
||||
(define-key-after operate-map [do-view-and-eval]
|
||||
'(menu-item "Eval (viewing buffer)..." ibuffer-do-view-and-eval
|
||||
:help "Evaluate a Lisp form in each marked buffer while viewing it"))
|
||||
(define-key-after operate-map [diff-with-file]
|
||||
'(menu-item "Diff with file" ibuffer-diff-with-file
|
||||
:help "View the differences between this buffer and its file"))
|
||||
(defun ibuffer-mode--groups-menu-definition (&optional is-popup)
|
||||
"Build the `ibuffer' \"Filter\" menu. Internal."
|
||||
`("Filter Groups"
|
||||
["Create filter group from current filters..."
|
||||
ibuffer-filters-to-filter-group
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)]
|
||||
["Move point to the next filter group"
|
||||
ibuffer-forward-filter-group]
|
||||
["Move point to the previous filter group"
|
||||
ibuffer-backward-filter-group]
|
||||
["Move point to a specific filter group..."
|
||||
ibuffer-jump-to-filter-group]
|
||||
,@(if is-popup
|
||||
'(["Kill filter group"
|
||||
ibuffer-kill-line
|
||||
:enable (and (featurep 'ibuf-ext)
|
||||
ibuffer-filter-groups)]
|
||||
["Yank last killed filter group"
|
||||
ibuffer-yank
|
||||
:enable (and (featurep 'ibuf-ext)
|
||||
ibuffer-filter-group-kill-ring)])
|
||||
'(["Kill filter group named..."
|
||||
ibuffer-kill-filter-group
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)]
|
||||
["Yank last killed filter group before..."
|
||||
ibuffer-yank-filter-group
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring)]))
|
||||
["Remove top filter group"
|
||||
ibuffer-pop-filter-group
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)]
|
||||
["Remove all filter groups"
|
||||
ibuffer-clear-filter-groups
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)]
|
||||
["Decompose filter group..."
|
||||
ibuffer-pop-filter-group
|
||||
:help "\"Unmake\" a filter group"
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)]
|
||||
["Save current filter groups permanently..."
|
||||
ibuffer-save-filter-groups
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)
|
||||
:help "Use a mnemonic name to store current filter groups"]
|
||||
["Restore permanently saved filters..."
|
||||
ibuffer-switch-to-saved-filter-groups
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups)
|
||||
:help "Replace current filters with a saved stack"]
|
||||
["Delete permanently saved filter groups..."
|
||||
ibuffer-delete-saved-filter-groups
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups)]
|
||||
["Set current filter groups to filter by mode"
|
||||
ibuffer-set-filter-groups-by-mode]))
|
||||
|
||||
operate-map))
|
||||
(easy-menu-define ibuffer-mode-groups-popup nil
|
||||
"Menu for `ibuffer'."
|
||||
(ibuffer-mode--groups-menu-definition 'is-popup))
|
||||
|
||||
(define-key ibuffer-mode-groups-popup [kill-filter-group]
|
||||
'(menu-item "Kill filter group"
|
||||
ibuffer-kill-line
|
||||
:enable (and (featurep 'ibuf-ext)
|
||||
ibuffer-filter-groups)))
|
||||
(define-key ibuffer-mode-groups-popup [yank-filter-group]
|
||||
'(menu-item "Yank last killed filter group"
|
||||
ibuffer-yank
|
||||
:enable (and (featurep 'ibuf-ext)
|
||||
ibuffer-filter-group-kill-ring)))
|
||||
(easy-menu-define ibuffer-mode-mark-menu ibuffer-mode-map
|
||||
"Mark menu for `ibuffer'."
|
||||
'("Mark"
|
||||
["Toggle marks" ibuffer-toggle-marks
|
||||
:help "Unmark marked buffers, and mark unmarked buffers"]
|
||||
["Change marks" ibuffer-change-marks
|
||||
:help "Change OLD mark for marked buffers with NEW"]
|
||||
["Mark" ibuffer-mark-forward
|
||||
:help "Mark the buffer at point"]
|
||||
["Unmark" ibuffer-unmark-forward
|
||||
:help "Unmark the buffer at point"]
|
||||
["Mark by mode..." ibuffer-mark-by-mode
|
||||
:help "Mark all buffers in a particular major mode"]
|
||||
["Mark modified buffers" ibuffer-mark-modified-buffers
|
||||
:help "Mark all buffers which have been modified"]
|
||||
["Mark unsaved buffers" ibuffer-mark-unsaved-buffers
|
||||
:help "Mark all buffers which have a file and are modified"]
|
||||
["Mark read-only buffers" ibuffer-mark-read-only-buffers
|
||||
:help "Mark all buffers which are read-only"]
|
||||
["Mark special buffers" ibuffer-mark-special-buffers
|
||||
:help "Mark all buffers whose name begins with a *"]
|
||||
["Mark dired buffers" ibuffer-mark-dired-buffers
|
||||
:help "Mark buffers in dired-mode"]
|
||||
["Mark dissociated buffers" ibuffer-mark-dissociated-buffers
|
||||
:help "Mark buffers with a non-existent associated file"]
|
||||
["Mark help buffers" ibuffer-mark-help-buffers
|
||||
:help "Mark buffers in help-mode"]
|
||||
["Mark compressed file buffers" ibuffer-mark-compressed-file-buffers
|
||||
:help "Mark buffers which have a file that is compressed"]
|
||||
["Mark old buffers" ibuffer-mark-old-buffers
|
||||
:help "Mark buffers which have not been viewed recently"]
|
||||
["Unmark All" ibuffer-unmark-all]
|
||||
["Unmark All buffers" ibuffer-unmark-all-marks]
|
||||
"---"
|
||||
["Mark by buffer name (regexp)..." ibuffer-mark-by-name-regexp
|
||||
:help "Mark buffers whose name matches a regexp"]
|
||||
["Mark by major mode (regexp)..." ibuffer-mark-by-mode-regexp
|
||||
:help "Mark buffers whose major mode name matches a regexp"]
|
||||
["Mark by file name (regexp)..." ibuffer-mark-by-file-name-regexp
|
||||
:help "Mark buffers whose file name matches a regexp"]
|
||||
["Mark by content (regexp)..." ibuffer-mark-by-content-regexp
|
||||
:help "Mark buffers whose content matches a regexp"]
|
||||
["Mark by locked buffers..." ibuffer-mark-by-locked
|
||||
:help "Mark all locked buffers"]))
|
||||
|
||||
(easy-menu-define ibuffer-mode-view-menu ibuffer-mode-map
|
||||
"View menu for `ibuffer'."
|
||||
`("View"
|
||||
["View this buffer" ibuffer-visit-buffer]
|
||||
["View (other window)" ibuffer-visit-buffer-other-window]
|
||||
["View (other frame)" ibuffer-visit-buffer-other-frame]
|
||||
["Update" ibuffer-update
|
||||
:help "Regenerate the list of buffers"]
|
||||
["Switch display format" ibuffer-switch-format
|
||||
:help "Toggle between available values of `ibuffer-formats'"]
|
||||
"---"
|
||||
("Sort"
|
||||
["Sort by major mode" ibuffer-do-sort-by-major-mode]
|
||||
["Sort by buffer size" ibuffer-do-sort-by-size]
|
||||
["Sort lexicographically" ibuffer-do-sort-by-alphabetic
|
||||
:help "Sort by the alphabetic order of buffer name"]
|
||||
["Sort by view time" ibuffer-do-sort-by-recency
|
||||
:help "Sort by the last time the buffer was displayed"]
|
||||
"---"
|
||||
["Reverse sorting order" ibuffer-invert-sorting]
|
||||
["Switch sorting mode" ibuffer-toggle-sorting-mode
|
||||
:help "Switch between the various sorting criteria"])
|
||||
("Filter"
|
||||
["Disable all filtering" ibuffer-filter-disable
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)]
|
||||
["Add filter by any major mode..." ibuffer-filter-by-mode]
|
||||
["Add filter by a major mode in use..." ibuffer-filter-by-used-mode]
|
||||
["Add filter by derived mode..." ibuffer-filter-by-derived-mode]
|
||||
["Add filter by buffer name..." ibuffer-filter-by-name]
|
||||
["Add filter by starred buffer name..." ibuffer-filter-by-starred-name
|
||||
:help "List buffers whose names begin with a star"]
|
||||
["Add filter by full filename..." ibuffer-filter-by-filename
|
||||
:help (concat "For a buffer associated with file `/a/b/c.d', "
|
||||
"list buffer if a given pattern matches `/a/b/c.d'")]
|
||||
["Add filter by file basename..." ibuffer-filter-by-basename
|
||||
:help (concat "For a buffer associated with file `/a/b/c.d', "
|
||||
"list buffer if a given pattern matches `c.d'")]
|
||||
["Add filter by file name extension..." ibuffer-filter-by-file-extension
|
||||
:help (concat "For a buffer associated with file `/a/b/c.d', "
|
||||
"list buffer if a given pattern matches `d'")]
|
||||
["Add filter by filename's directory..." ibuffer-filter-by-directory
|
||||
:help (concat "For a buffer associated with file `/a/b/c.d', "
|
||||
"list buffer if a given pattern matches `/a/b'")]
|
||||
["Add filter by size less than..." ibuffer-filter-by-size-lt]
|
||||
["Add filter by size greater than..." ibuffer-filter-by-size-gt]
|
||||
["Add filter by modified buffer" ibuffer-filter-by-modified
|
||||
:help "List buffers that are marked as modified"]
|
||||
["Add filter by buffer visiting a file" ibuffer-filter-by-visiting-file
|
||||
:help "List buffers that are visiting files"]
|
||||
["Add filter by content (regexp)..." ibuffer-filter-by-content]
|
||||
["Add filter by Lisp predicate..." ibuffer-filter-by-predicate]
|
||||
["Remove top filter" ibuffer-pop-filter
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)]
|
||||
["AND top two filters" ibuffer-and-filter
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers
|
||||
(cdr ibuffer-filtering-qualifiers))
|
||||
:help "Create a new filter which is the logical AND of the top two filters"]
|
||||
["OR top two filters" ibuffer-or-filter
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers
|
||||
(cdr ibuffer-filtering-qualifiers))
|
||||
:help "Create a new filter which is the logical OR of the top two filters"]
|
||||
["Negate top filter" ibuffer-negate-filter
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)]
|
||||
["Decompose top filter" ibuffer-decompose-filter
|
||||
:enable (and (featurep 'ibuf-ext)
|
||||
(memq (car ibuffer-filtering-qualifiers) '(or saved not)))
|
||||
:help "Break down a complex filter like OR or NOT"]
|
||||
["Swap top two filters" ibuffer-exchange-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers
|
||||
(cdr ibuffer-filtering-qualifiers))]
|
||||
["Save current filters permanently..." ibuffer-save-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)
|
||||
:help "Use a mnemonic name to store current filter stack"]
|
||||
["Restore permanently saved filters..." ibuffer-switch-to-saved-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-saved-filters)
|
||||
:help "Replace current filters with a saved stack"]
|
||||
["Add to permanently saved filters..." ibuffer-add-saved-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)
|
||||
:help "Include already saved stack with current filters"]
|
||||
["Delete permanently saved filters..." ibuffer-delete-saved-filters
|
||||
:enable (and (featurep 'ibuf-ext) ibuffer-saved-filters)])
|
||||
;; The "Filter Groups" menu:
|
||||
,(ibuffer-mode--groups-menu-definition)
|
||||
"---"
|
||||
["Auto Mode" ibuffer-auto-mode
|
||||
:style toggle
|
||||
:selected ibuffer-auto-mode
|
||||
:help "Attempt to automatically update the Ibuffer buffer"]))
|
||||
|
||||
(define-obsolete-variable-alias 'ibuffer-mode-operate-map 'ibuffer-mode-operate-menu "28.1")
|
||||
(easy-menu-define ibuffer-mode-operate-menu ibuffer-mode-map
|
||||
"Operate menu for `ibuffer'."
|
||||
'("Operate"
|
||||
["View" ibuffer-do-view]
|
||||
["View (separate frame)" ibuffer-do-view-other-frame]
|
||||
["Save" ibuffer-do-save]
|
||||
["Replace (regexp)..." ibuffer-do-replace-regexp
|
||||
:help "Replace text inside marked buffers"]
|
||||
["Query Replace..." ibuffer-do-query-replace
|
||||
:help "Replace text in marked buffers, asking each time"]
|
||||
["Query Replace (regexp)..." ibuffer-do-query-replace-regexp
|
||||
:help "Replace text in marked buffers by regexp, asking each time"]
|
||||
["Print" ibuffer-do-print]
|
||||
["Toggle modification flag" ibuffer-do-toggle-modified]
|
||||
["Toggle read-only flag" ibuffer-do-toggle-read-only]
|
||||
["Toggle lock flag" ibuffer-do-toggle-lock]
|
||||
["Revert" ibuffer-do-revert
|
||||
:help "Revert marked buffers to their associated file"]
|
||||
["Rename Uniquely" ibuffer-do-rename-uniquely
|
||||
:help "Rename marked buffers to a new, unique name"]
|
||||
["Kill" ibuffer-do-delete]
|
||||
["List lines matching..." ibuffer-do-occur
|
||||
:help "View all lines in marked buffers matching a regexp"]
|
||||
["Pipe to shell command..." ibuffer-do-shell-command-pipe
|
||||
:help "For each marked buffer, send its contents to a shell command"]
|
||||
["Pipe to shell command (replace)..." ibuffer-do-shell-command-pipe-replace
|
||||
:help "For each marked buffer, replace its contents with output of shell command"]
|
||||
["Shell command on buffer's file..." ibuffer-do-shell-command-file
|
||||
:help "For each marked buffer, run a shell command with its file as argument"]
|
||||
["Eval..." ibuffer-do-eval
|
||||
:help "Evaluate a Lisp form in each marked buffer"]
|
||||
["Eval (viewing buffer)..." ibuffer-do-view-and-eval
|
||||
:help "Evaluate a Lisp form in each marked buffer while viewing it"]
|
||||
["Diff with file" ibuffer-diff-with-file
|
||||
:help "View the differences between this buffer and its file"]))
|
||||
|
||||
(defvar ibuffer-name-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
|
|
@ -1025,7 +897,7 @@ width and the longest string in LIST."
|
|||
(goto-char eventpt)
|
||||
(ibuffer-set-mark ibuffer-marked-char))
|
||||
(save-excursion
|
||||
(popup-menu ibuffer-mode-operate-map)))))
|
||||
(popup-menu ibuffer-mode-operate-menu)))))
|
||||
(setq buffer-read-only t)
|
||||
(if (= eventpt (point))
|
||||
(goto-char origpt)))))
|
||||
|
|
@ -2734,7 +2606,6 @@ will be inserted before the group at point."
|
|||
(setq-local ibuffer-tmp-hide-regexps nil)
|
||||
(setq-local ibuffer-tmp-show-regexps nil)
|
||||
(define-key ibuffer-mode-map [menu-bar edit] 'undefined)
|
||||
(define-key ibuffer-mode-map [menu-bar operate] (cons "Operate" ibuffer-mode-operate-map))
|
||||
(ibuffer-update-format)
|
||||
(when ibuffer-default-directory
|
||||
(setq default-directory ibuffer-default-directory))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue