Mercurial > emacs
changeset 46825:f43392bbb789
(ibuffer-list-buffer-modes): New.
(ibuffer-filter-by-used-mode): New.
author | Colin Walters <walters@gnu.org> |
---|---|
date | Tue, 06 Aug 2002 06:04:44 +0000 |
parents | 86fa1b4393a2 |
children | e020f18c490a |
files | lisp/ibuf-ext.el |
diffstat | 1 files changed, 39 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ibuf-ext.el Tue Aug 06 06:04:22 2002 +0000 +++ b/lisp/ibuf-ext.el Tue Aug 06 06:04:44 2002 +0000 @@ -922,6 +922,26 @@ (error "Ibuffer: bad qualifier %s" qualifier)) (concat " [" (cadr type) ": " (format "%s]" (cdr qualifier))))))) + +(defun ibuffer-list-buffer-modes () + "Create an alist of buffer modes currently in use. +The list returned will be of the form ("MODE-NAME" . MODE-SYMBOL)." + (let ((bufs (buffer-list)) + (modes) + (this-mode)) + (while bufs + (setq this-mode + (with-current-buffer + (car bufs) + major-mode) + bufs (cdr bufs)) + (add-to-list + 'modes + `(,(symbol-name this-mode) . + ,this-mode))) + modes)) + + ;;; Extra operation definitions ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext.el") @@ -942,6 +962,25 @@ ""))))) (eq qualifier (with-current-buffer buf major-mode))) +;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext.el") +(define-ibuffer-filter used-mode + "Toggle current view to buffers with major mode QUALIFIER. +Called interactively, this function allows selection of modes +currently used by buffers." + (:description "major mode in use" + :reader + (intern + (completing-read "Filter by major mode: " + (ibuffer-list-buffer-modes) + nil + t + (let ((buf (ibuffer-current-buffer))) + (if (and buf (buffer-live-p buf)) + (with-current-buffer buf + (symbol-name major-mode)) + ""))))) + (eq qualifier (with-current-buffer buf major-mode))) + ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext.el") (define-ibuffer-filter name "Toggle current view to buffers with name matching QUALIFIER."