diff options
| -rw-r--r-- | lisp/ibuf-ext.el | 39 |
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." | |||
| 922 | (error "Ibuffer: bad qualifier %s" qualifier)) | 922 | (error "Ibuffer: bad qualifier %s" qualifier)) |
| 923 | (concat " [" (cadr type) ": " (format "%s]" (cdr qualifier))))))) | 923 | (concat " [" (cadr type) ": " (format "%s]" (cdr qualifier))))))) |
| 924 | 924 | ||
| 925 | |||
| 926 | (defun ibuffer-list-buffer-modes () | ||
| 927 | "Create an alist of buffer modes currently in use. | ||
| 928 | The list returned will be of the form ("MODE-NAME" . MODE-SYMBOL)." | ||
| 929 | (let ((bufs (buffer-list)) | ||
| 930 | (modes) | ||
| 931 | (this-mode)) | ||
| 932 | (while bufs | ||
| 933 | (setq this-mode | ||
| 934 | (with-current-buffer | ||
| 935 | (car bufs) | ||
| 936 | major-mode) | ||
| 937 | bufs (cdr bufs)) | ||
| 938 | (add-to-list | ||
| 939 | 'modes | ||
| 940 | `(,(symbol-name this-mode) . | ||
| 941 | ,this-mode))) | ||
| 942 | modes)) | ||
| 943 | |||
| 944 | |||
| 925 | ;;; Extra operation definitions | 945 | ;;; Extra operation definitions |
| 926 | 946 | ||
| 927 | ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext.el") | 947 | ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext.el") |
| @@ -942,6 +962,25 @@ of replacing the current filters." | |||
| 942 | ""))))) | 962 | ""))))) |
| 943 | (eq qualifier (with-current-buffer buf major-mode))) | 963 | (eq qualifier (with-current-buffer buf major-mode))) |
| 944 | 964 | ||
| 965 | ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext.el") | ||
| 966 | (define-ibuffer-filter used-mode | ||
| 967 | "Toggle current view to buffers with major mode QUALIFIER. | ||
| 968 | Called interactively, this function allows selection of modes | ||
| 969 | currently used by buffers." | ||
| 970 | (:description "major mode in use" | ||
| 971 | :reader | ||
| 972 | (intern | ||
| 973 | (completing-read "Filter by major mode: " | ||
| 974 | (ibuffer-list-buffer-modes) | ||
| 975 | nil | ||
| 976 | t | ||
| 977 | (let ((buf (ibuffer-current-buffer))) | ||
| 978 | (if (and buf (buffer-live-p buf)) | ||
| 979 | (with-current-buffer buf | ||
| 980 | (symbol-name major-mode)) | ||
| 981 | ""))))) | ||
| 982 | (eq qualifier (with-current-buffer buf major-mode))) | ||
| 983 | |||
| 945 | ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext.el") | 984 | ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext.el") |
| 946 | (define-ibuffer-filter name | 985 | (define-ibuffer-filter name |
| 947 | "Toggle current view to buffers with name matching QUALIFIER." | 986 | "Toggle current view to buffers with name matching QUALIFIER." |