From 0e1701c45f65bfd3644ea1c846390aaef0c3dcda Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 6 Aug 2002 06:04:44 +0000 Subject: [PATCH] (ibuffer-list-buffer-modes): New. (ibuffer-filter-by-used-mode): New. --- lisp/ibuf-ext.el | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) 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." -- 2.39.5