X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/9fb9d0706c9353ea76d8355361854947bba2550d..08974112ae68aefba658a8516c8faa3374edc924:/lisp/ibuffer.el diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 9a1f3b9a0d..126b5a32b2 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -36,6 +36,7 @@ (require 'dired)) (require 'font-core) +(require 'seq) (require 'ibuffer-loaddefs) ;; These come from ibuf-ext.el, which can not be require'd at compile time @@ -544,6 +545,8 @@ directory, like `default-directory'." (define-key map (kbd "% n") 'ibuffer-mark-by-name-regexp) (define-key map (kbd "% m") 'ibuffer-mark-by-mode-regexp) (define-key map (kbd "% f") 'ibuffer-mark-by-file-name-regexp) + (define-key map (kbd "% c") 'ibuffer-mark-by-content-regexp) + (define-key map (kbd "% g") 'ibuffer-mark-by-content-regexp) (define-key map (kbd "C-t") 'ibuffer-visit-tags-table) @@ -700,16 +703,10 @@ directory, like `default-directory'." (define-key-after map [menu-bar view dashes2] '("--")) - (define-key-after map [menu-bar view diff-with-file] - '(menu-item "Diff with file" ibuffer-diff-with-file - :help "View the differences between this buffer and its file")) (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 view customize] - '(menu-item "Customize Ibuffer" ibuffer-customize - :help "Use Custom to customize Ibuffer")) (define-key-after map [menu-bar mark] (cons "Mark" (make-sparse-keymap "Mark"))) @@ -770,6 +767,10 @@ directory, like `default-directory'." '(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")) map)) @@ -820,6 +821,9 @@ directory, like `default-directory'." (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")) operate-map)) @@ -1743,7 +1747,13 @@ If point is on a group name, this function operates on that group." (cond ((zerop bufs) "No buffers") ((= 1 bufs) "1 buffer") (t (format "%s buffers" bufs)))))) - (propertize (buffer-name) 'font-lock-face (ibuffer-buffer-name-face buffer mark))) + (let ((string (propertize (buffer-name) + 'font-lock-face + (ibuffer-buffer-name-face buffer mark)))) + (if (not (seq-position string ?\n)) + string + (replace-regexp-in-string + "\n" (propertize "^J" 'font-lock-face 'escape-glyph) string)))) (define-ibuffer-column size (:inline t @@ -2337,7 +2347,8 @@ FORMATS is the value to use for `ibuffer-formats'. (setq other-window-p t)) (let ((buf (get-buffer-create (or name "*Ibuffer*")))) (if other-window-p - (funcall (if noselect (lambda (buf) (display-buffer buf t)) #'pop-to-buffer) buf) + (or (and noselect (display-buffer buf t)) + (pop-to-buffer buf t)) (funcall (if noselect #'display-buffer #'switch-to-buffer) buf)) (with-current-buffer buf (save-selected-window @@ -2433,6 +2444,7 @@ Marking commands: `\\[ibuffer-mark-by-name-regexp]' - Mark buffers by their name, using a regexp. `\\[ibuffer-mark-by-mode-regexp]' - Mark buffers by their major mode, using a regexp. `\\[ibuffer-mark-by-file-name-regexp]' - Mark buffers by their filename, using a regexp. + `\\[ibuffer-mark-by-content-regexp]' - Mark buffers by their content, using a regexp. Filtering commands: