summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorColin Walters <walters@gnu.org>2002-08-06 06:04:44 +0000
committerColin Walters <walters@gnu.org>2002-08-06 06:04:44 +0000
commit0e1701c45f65bfd3644ea1c846390aaef0c3dcda (patch)
tree781b05792d0508de1abc78227a5e85d9a123bcb7 /lisp
parent5bc06df9fe280630c1db91bda476920b45a79667 (diff)
downloademacs-0e1701c45f65bfd3644ea1c846390aaef0c3dcda.tar.gz
(ibuffer-list-buffer-modes): New.
(ibuffer-filter-by-used-mode): New.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ibuf-ext.el39
1 files changed, 39 insertions, 0 deletions
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index ff4e8b76e81..6c279d2642f 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -922,6 +922,26 @@ of replacing the current filters."
(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 @@ of replacing the current filters."
"")))))
(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."