aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2012-04-23 23:40:57 -0400
committerStefan Monnier2012-04-23 23:40:57 -0400
commitd81bd05990457d9140300f2c882dcbf60c8ff74f (patch)
tree65e8f7c584e5c159f0c887ed065f942c3b26615c
parentc4cf6d91f36ebd8d05109926d9e16ba02693cb9f (diff)
downloademacs-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/NEWS3
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/ibuf-ext.el98
-rw-r--r--lisp/ibuffer.el8
4 files changed, 61 insertions, 57 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 8dcd70b413b..edac7f58eaa 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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 @@
12012-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
12012-04-24 Ivan Andrus <darthandrus@gmail.com> (tiny change) 102012-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.
978If INCLUDE-PARENTS is non-nil then include parent modes. 978If INCLUDE-PARENTS is non-nil then include parent modes."
979The 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)."
1018Called interactively, this function allows selection of modes 1014Called interactively, this function allows selection of modes
1019currently used by buffers." 1015currently 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")