diff options
| author | Stefan Monnier | 2012-04-23 23:40:57 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2012-04-23 23:40:57 -0400 |
| commit | d81bd05990457d9140300f2c882dcbf60c8ff74f (patch) | |
| tree | 65e8f7c584e5c159f0c887ed065f942c3b26615c | |
| parent | c4cf6d91f36ebd8d05109926d9e16ba02693cb9f (diff) | |
| download | emacs-d81bd05990457d9140300f2c882dcbf60c8ff74f.tar.gz emacs-d81bd05990457d9140300f2c882dcbf60c8ff74f.zip | |
* lisp/ibuffer.el (ibuffer-mode-map): Bind `/ m' to filter-used-mode
and `/ M' to filter-derived-mode.
* lisp/ibuf-ext.el (ibuffer-list-buffer-modes): Simplify; avoid add-to-list.
(ibuffer-filter-by-mode, ibuffer-filter-by-used-mode)
(ibuffer-mark-by-mode): Use default rather than initial-input.
(ibuffer-filter-by-derived-mode): Autoload and require-match.
| -rw-r--r-- | etc/NEWS | 3 | ||||
| -rw-r--r-- | lisp/ChangeLog | 9 | ||||
| -rw-r--r-- | lisp/ibuf-ext.el | 98 | ||||
| -rw-r--r-- | lisp/ibuffer.el | 8 |
4 files changed, 61 insertions, 57 deletions
| @@ -74,7 +74,8 @@ character when doing minibuffer filename prompts. | |||
| 74 | 74 | ||
| 75 | * Changes in Specialized Modes and Packages in Emacs 24.2 | 75 | * Changes in Specialized Modes and Packages in Emacs 24.2 |
| 76 | 76 | ||
| 77 | ** New `derived-mode' filter for Ibuffer, bound to `/ w'. | 77 | ** New `derived-mode' filter for Ibuffer, bound to `/ M'. |
| 78 | `/ m' is now bound to filter by used-mode, which used to be bound to `/ M'. | ||
| 78 | 79 | ||
| 79 | ** Apropos | 80 | ** Apropos |
| 80 | 81 | ||
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8b4409fec0a..848fc434956 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | 2012-04-24 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * ibuffer.el (ibuffer-mode-map): Bind `/ m' to filter-used-mode | ||
| 4 | and `/ M' to filter-derived-mode. | ||
| 5 | * ibuf-ext.el (ibuffer-list-buffer-modes): Simplify; avoid add-to-list. | ||
| 6 | (ibuffer-filter-by-mode, ibuffer-filter-by-used-mode) | ||
| 7 | (ibuffer-mark-by-mode): Use default rather than initial-input. | ||
| 8 | (ibuffer-filter-by-derived-mode): Autoload and require-match. | ||
| 9 | |||
| 1 | 2012-04-24 Ivan Andrus <darthandrus@gmail.com> (tiny change) | 10 | 2012-04-24 Ivan Andrus <darthandrus@gmail.com> (tiny change) |
| 2 | 11 | ||
| 3 | * ibuf-ext.el (ibuffer-list-buffer-modes): Add `include-parents' arg. | 12 | * ibuf-ext.el (ibuffer-list-buffer-modes): Add `include-parents' arg. |
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index dc90617f92e..f943bd2fe58 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el | |||
| @@ -974,23 +974,16 @@ Interactively, prompt for NAME, and use the current filters." | |||
| 974 | 974 | ||
| 975 | 975 | ||
| 976 | (defun ibuffer-list-buffer-modes (&optional include-parents) | 976 | (defun ibuffer-list-buffer-modes (&optional include-parents) |
| 977 | "Create an alist of buffer modes currently in use. | 977 | "Create a completion table of buffer modes currently in use. |
| 978 | If INCLUDE-PARENTS is non-nil then include parent modes. | 978 | If INCLUDE-PARENTS is non-nil then include parent modes." |
| 979 | The list returned will be of the form (\"MODE-NAME\" . MODE-SYMBOL)." | 979 | (let ((modes)) |
| 980 | (let ((bufs (buffer-list)) | 980 | (dolist (buf (buffer-list)) |
| 981 | (modes) | 981 | (let ((this-mode (buffer-local-value 'major-mode buf))) |
| 982 | (this-mode)) | 982 | (while (and this-mode (not (memq this-mode modes))) |
| 983 | (while bufs | 983 | (push this-mode modes) |
| 984 | (setq this-mode (buffer-local-value 'major-mode (car bufs)) | 984 | (setq this-mode (and include-parents |
| 985 | bufs (cdr bufs)) | 985 | (get this-mode 'derived-mode-parent)))))) |
| 986 | (while this-mode | 986 | (mapcar #'symbol-name modes))) |
| 987 | (add-to-list | ||
| 988 | 'modes | ||
| 989 | `(,(symbol-name this-mode) . | ||
| 990 | ,this-mode)) | ||
| 991 | (setq this-mode (and include-parents | ||
| 992 | (get this-mode 'derived-mode-parent))))) | ||
| 993 | modes)) | ||
| 994 | 987 | ||
| 995 | 988 | ||
| 996 | ;;; Extra operation definitions | 989 | ;;; Extra operation definitions |
| @@ -1000,16 +993,19 @@ The list returned will be of the form (\"MODE-NAME\" . MODE-SYMBOL)." | |||
| 1000 | "Toggle current view to buffers with major mode QUALIFIER." | 993 | "Toggle current view to buffers with major mode QUALIFIER." |
| 1001 | (:description "major mode" | 994 | (:description "major mode" |
| 1002 | :reader | 995 | :reader |
| 1003 | (intern | 996 | (let* ((buf (ibuffer-current-buffer)) |
| 1004 | (completing-read "Filter by major mode: " obarray | 997 | (default (if (and buf (buffer-live-p buf)) |
| 1005 | #'(lambda (e) | 998 | (symbol-name (buffer-local-value |
| 1006 | (string-match "-mode$" | 999 | 'major-mode buf))))) |
| 1007 | (symbol-name e))) | 1000 | (intern |
| 1008 | t | 1001 | (completing-read |
| 1009 | (let ((buf (ibuffer-current-buffer))) | 1002 | (if default |
| 1010 | (if (and buf (buffer-live-p buf)) | 1003 | (format "Filter by major mode (default %s): " default) |
| 1011 | (symbol-name (buffer-local-value 'major-mode buf)) | 1004 | "Filter by major mode: ") |
| 1012 | ""))))) | 1005 | obarray |
| 1006 | #'(lambda (e) | ||
| 1007 | (string-match "-mode\\'" (symbol-name e))) | ||
| 1008 | t nil nil default)))) | ||
| 1013 | (eq qualifier (buffer-local-value 'major-mode buf))) | 1009 | (eq qualifier (buffer-local-value 'major-mode buf))) |
| 1014 | 1010 | ||
| 1015 | ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") | 1011 | ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") |
| @@ -1018,19 +1014,20 @@ The list returned will be of the form (\"MODE-NAME\" . MODE-SYMBOL)." | |||
| 1018 | Called interactively, this function allows selection of modes | 1014 | Called interactively, this function allows selection of modes |
| 1019 | currently used by buffers." | 1015 | currently used by buffers." |
| 1020 | (:description "major mode in use" | 1016 | (:description "major mode in use" |
| 1021 | :reader | 1017 | :reader |
| 1022 | (intern | 1018 | (let* ((buf (ibuffer-current-buffer)) |
| 1023 | (completing-read "Filter by major mode: " | 1019 | (default (if (and buf (buffer-live-p buf)) |
| 1024 | (ibuffer-list-buffer-modes) | 1020 | (symbol-name (buffer-local-value |
| 1025 | nil | 1021 | 'major-mode buf))))) |
| 1026 | t | 1022 | (intern |
| 1027 | (let ((buf (ibuffer-current-buffer))) | 1023 | (completing-read |
| 1028 | (if (and buf (buffer-live-p buf)) | 1024 | (if default |
| 1029 | (symbol-name (buffer-local-value | 1025 | (format "Filter by major mode (default %s): " default) |
| 1030 | 'major-mode buf)) | 1026 | "Filter by major mode: ") |
| 1031 | ""))))) | 1027 | (ibuffer-list-buffer-modes) nil t nil nil default)))) |
| 1032 | (eq qualifier (buffer-local-value 'major-mode buf))) | 1028 | (eq qualifier (buffer-local-value 'major-mode buf))) |
| 1033 | 1029 | ||
| 1030 | ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") | ||
| 1034 | (define-ibuffer-filter derived-mode | 1031 | (define-ibuffer-filter derived-mode |
| 1035 | "Toggle current view to buffers whose major mode inherits from QUALIFIER." | 1032 | "Toggle current view to buffers whose major mode inherits from QUALIFIER." |
| 1036 | (:description "derived mode" | 1033 | (:description "derived mode" |
| @@ -1038,7 +1035,7 @@ currently used by buffers." | |||
| 1038 | (intern | 1035 | (intern |
| 1039 | (completing-read "Filter by derived mode: " | 1036 | (completing-read "Filter by derived mode: " |
| 1040 | (ibuffer-list-buffer-modes t) | 1037 | (ibuffer-list-buffer-modes t) |
| 1041 | nil nil ""))) | 1038 | nil t))) |
| 1042 | (with-current-buffer buf (derived-mode-p qualifier))) | 1039 | (with-current-buffer buf (derived-mode-p qualifier))) |
| 1043 | 1040 | ||
| 1044 | ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext") | 1041 | ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext") |
| @@ -1480,19 +1477,16 @@ You can then feed the file name(s) to other commands with \\[yank]." | |||
| 1480 | (defun ibuffer-mark-by-mode (mode) | 1477 | (defun ibuffer-mark-by-mode (mode) |
| 1481 | "Mark all buffers whose major mode equals MODE." | 1478 | "Mark all buffers whose major mode equals MODE." |
| 1482 | (interactive | 1479 | (interactive |
| 1483 | (list (intern (completing-read "Mark by major mode: " obarray | 1480 | (let* ((buf (ibuffer-current-buffer)) |
| 1484 | #'(lambda (e) | 1481 | (default (if (and buf (buffer-live-p buf)) |
| 1485 | ;; kind of a hack... | 1482 | (symbol-name (buffer-local-value |
| 1486 | (and (fboundp e) | 1483 | 'major-mode buf))))) |
| 1487 | (string-match "-mode$" | 1484 | (list (intern |
| 1488 | (symbol-name e)))) | 1485 | (completing-read |
| 1489 | t | 1486 | (if default |
| 1490 | (let ((buf (ibuffer-current-buffer))) | 1487 | (format "Mark by major mode (default %s): " default) |
| 1491 | (if (and buf (buffer-live-p buf)) | 1488 | "Mark by major mode: ") |
| 1492 | (with-current-buffer buf | 1489 | (ibuffer-list-buffer-modes) nil t nil nil default))))) |
| 1493 | (cons (symbol-name major-mode) | ||
| 1494 | 0)) | ||
| 1495 | "")))))) | ||
| 1496 | (ibuffer-mark-on-buffer | 1490 | (ibuffer-mark-on-buffer |
| 1497 | #'(lambda (buf) | 1491 | #'(lambda (buf) |
| 1498 | (eq (buffer-local-value 'major-mode buf) mode)))) | 1492 | (eq (buffer-local-value 'major-mode buf) mode)))) |
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index b8c000b6884..ffede147144 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el | |||
| @@ -501,9 +501,8 @@ directory, like `default-directory'." | |||
| 501 | (define-key map (kbd "s f") 'ibuffer-do-sort-by-filename/process) | 501 | (define-key map (kbd "s f") 'ibuffer-do-sort-by-filename/process) |
| 502 | (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode) | 502 | (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode) |
| 503 | 503 | ||
| 504 | (define-key map (kbd "/ m") 'ibuffer-filter-by-mode) | 504 | (define-key map (kbd "/ m") 'ibuffer-filter-by-used-mode) |
| 505 | (define-key map (kbd "/ M") 'ibuffer-filter-by-used-mode) | 505 | (define-key map (kbd "/ M") 'ibuffer-filter-by-derived-mode) |
| 506 | (define-key map (kbd "/ w") 'ibuffer-filter-by-derived-mode) | ||
| 507 | (define-key map (kbd "/ n") 'ibuffer-filter-by-name) | 506 | (define-key map (kbd "/ n") 'ibuffer-filter-by-name) |
| 508 | (define-key map (kbd "/ c") 'ibuffer-filter-by-content) | 507 | (define-key map (kbd "/ c") 'ibuffer-filter-by-content) |
| 509 | (define-key map (kbd "/ e") 'ibuffer-filter-by-predicate) | 508 | (define-key map (kbd "/ e") 'ibuffer-filter-by-predicate) |
| @@ -2646,7 +2645,7 @@ will be inserted before the group at point." | |||
| 2646 | ;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group | 2645 | ;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group |
| 2647 | ;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group | 2646 | ;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group |
| 2648 | ;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode | 2647 | ;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode |
| 2649 | ;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "b2b8f11ad22546ad05d6db0b7d388ac1") | 2648 | ;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "98491557b04909791f687f2eecc88320") |
| 2650 | ;;; Generated autoloads from ibuf-ext.el | 2649 | ;;; Generated autoloads from ibuf-ext.el |
| 2651 | 2650 | ||
| 2652 | (autoload 'ibuffer-auto-mode "ibuf-ext" "\ | 2651 | (autoload 'ibuffer-auto-mode "ibuf-ext" "\ |
| @@ -2836,6 +2835,7 @@ Set this buffer's filters to filters with NAME from `ibuffer-saved-filters'. | |||
| 2836 | \(fn NAME)" t nil) | 2835 | \(fn NAME)" t nil) |
| 2837 | (autoload 'ibuffer-filter-by-mode "ibuf-ext") | 2836 | (autoload 'ibuffer-filter-by-mode "ibuf-ext") |
| 2838 | (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") | 2837 | (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") |
| 2838 | (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") | ||
| 2839 | (autoload 'ibuffer-filter-by-name "ibuf-ext") | 2839 | (autoload 'ibuffer-filter-by-name "ibuf-ext") |
| 2840 | (autoload 'ibuffer-filter-by-filename "ibuf-ext") | 2840 | (autoload 'ibuffer-filter-by-filename "ibuf-ext") |
| 2841 | (autoload 'ibuffer-filter-by-size-gt "ibuf-ext") | 2841 | (autoload 'ibuffer-filter-by-size-gt "ibuf-ext") |