# HG changeset patch # User Colin Walters # Date 1028613884 0 # Node ID f43392bbb789f6a683cbb703fec409f5e5086d98 # Parent 86fa1b4393a2f4d0f8e90d019672b191e6f0da6f (ibuffer-list-buffer-modes): New. (ibuffer-filter-by-used-mode): New. diff -r 86fa1b4393a2 -r f43392bbb789 lisp/ibuf-ext.el --- 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."