annotate lisp/ibuf-ext.el @ 106768:21fd634f447a

Make line<->pixel_y conversion macros aware of native menu/tool bars. They are placed above the internal border. This supersedes special treatment of native tool bars in the display code. This fixes wrong display position of native menu bars and bogus mouse highlighting of native tool bars, both of which can be found when internal border width is large. Also it fixes wrong flashed part on visible bell with native menu bars. * frame.h (FRAME_TOP_MARGIN_HEIGHT): New macro. (FRAME_LINE_TO_PIXEL_Y, FRAME_PIXEL_Y_TO_LINE): Take account of pseudo windows above internal border. * window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P): New macros. (WINDOW_TOP_EDGE_Y, WINDOW_BOTTOM_EDGE_Y): Take account of pseudo windows above internal border. * xdisp.c (get_glyph_string_clip_rects, init_glyph_string): Don't treat tool bar windows specially. * xfns.c (x_set_tool_bar_lines): Take account of menu bar height. * xterm.c (x_after_update_window_line): Don't treat tool bar windows specially. (XTflash): Take account of menu bar height. * w32term.c (x_after_update_window_line): Don't treat tool bar windows specially.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Sat, 09 Jan 2010 13:16:32 +0900
parents a674a112e64f
children 1d1d5d9bd884
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1 ;;; ibuf-ext.el --- extensions for ibuffer
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2
104940
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
4 ;; 2009 Free Software Foundation, Inc.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
5
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
6 ;; Author: Colin Walters <walters@verbum.org>
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
7 ;; Maintainer: John Paul Wallington <jpw@gnu.org>
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
8 ;; Created: 2 Dec 2001
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
9 ;; Keywords: buffer, convenience
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
10
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
11 ;; This file is part of GNU Emacs.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
12
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
16 ;; (at your option) any later version.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
17
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
21 ;; GNU General Public License for more details.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
22
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
25
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
27
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
28 ;; These functions should be automatically loaded when called, but you
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
29 ;; can explicity (require 'ibuf-ext) in your ~/.emacs to have them
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
30 ;; preloaded.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
31
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
32 ;;; Code:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
33
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
34 (require 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
35
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
36 (eval-when-compile
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
37 (require 'ibuf-macs)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
38 (require 'cl))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
39
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
40 ;;; Utility functions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
41 (defun ibuffer-delete-alist (key alist)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
42 "Delete all entries in ALIST that have a key equal to KEY."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
43 (let (entry)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
44 (while (setq entry (assoc key alist))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
45 (setq alist (delete entry alist)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
46 alist))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
47
48778
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
48 ;; borrowed from Gnus
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
49 (defun ibuffer-remove-duplicates (list)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
50 "Return a copy of LIST with duplicate elements removed."
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
51 (let ((new nil)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
52 (tail list))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
53 (while tail
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
54 (or (member (car tail) new)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
55 (setq new (cons (car tail) new)))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
56 (setq tail (cdr tail)))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
57 (nreverse new)))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
58
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
59 (defun ibuffer-split-list (ibuffer-split-list-fn ibuffer-split-list-elts)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
60 (let ((hip-crowd nil)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
61 (lamers nil))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
62 (dolist (ibuffer-split-list-elt ibuffer-split-list-elts)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
63 (if (funcall ibuffer-split-list-fn ibuffer-split-list-elt)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
64 (push ibuffer-split-list-elt hip-crowd)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
65 (push ibuffer-split-list-elt lamers)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
66 ;; Too bad Emacs Lisp doesn't have multiple values.
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
67 (list (nreverse hip-crowd) (nreverse lamers))))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
68
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
69 (defcustom ibuffer-never-show-predicates nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
70 "A list of predicates (a regexp or function) for buffers not to display.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
71 If a regexp, then it will be matched against the buffer's name.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
72 If a function, it will be called with the buffer as an argument, and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
73 should return non-nil if this buffer should not be shown."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
74 :type '(repeat (choice regexp function))
69452
b47862df4a6b (ibuffer-never-show-predicates): Add `require' keyword; require
John Paul Wallington <jpw@pobox.com>
parents: 68581
diff changeset
75 :require 'ibuf-ext
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
76 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
77
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
78 (defcustom ibuffer-always-show-predicates nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
79 "A list of predicates (a regexp or function) for buffers to always display.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
80 If a regexp, then it will be matched against the buffer's name.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
81 If a function, it will be called with the buffer as an argument, and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
82 should return non-nil if this buffer should be shown.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
83 Note that buffers matching one of these predicates will be shown
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
84 regardless of any active filters in this buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
85 :type '(repeat (choice regexp function))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
86 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
87
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
88 (defvar ibuffer-tmp-hide-regexps nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
89 "A list of regexps which should match buffer names to not show.")
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49498
diff changeset
90
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
91 (defvar ibuffer-tmp-show-regexps nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
92 "A list of regexps which should match buffer names to always show.")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
93
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
94 (defvar ibuffer-auto-mode nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
95 "If non-nil, Ibuffer auto-mode should be enabled for this buffer.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
96 Do not set this variable directly! Use the function
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
97 `ibuffer-auto-mode' instead.")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
98
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
99 (defvar ibuffer-auto-buffers-changed nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
100
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
101 (defcustom ibuffer-saved-filters '(("gnus"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
102 ((or (mode . message-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
103 (mode . mail-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
104 (mode . gnus-group-mode)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
105 (mode . gnus-summary-mode)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
106 (mode . gnus-article-mode))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
107 ("programming"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
108 ((or (mode . emacs-lisp-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
109 (mode . cperl-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
110 (mode . c-mode)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
111 (mode . java-mode)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
112 (mode . idl-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
113 (mode . lisp-mode)))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49498
diff changeset
114
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
115 "An alist of filter qualifiers to switch between.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
116
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
117 This variable should look like ((\"STRING\" QUALIFIERS)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
118 (\"STRING\" QUALIFIERS) ...), where
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
119 QUALIFIERS is a list of the same form as
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
120 `ibuffer-filtering-qualifiers'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
121 See also the variables `ibuffer-filtering-qualifiers',
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
122 `ibuffer-filtering-alist', and the functions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
123 `ibuffer-switch-to-saved-filters', `ibuffer-save-filters'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
124 :type '(repeat sexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
125 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
126
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
127 (defvar ibuffer-filtering-qualifiers nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
128 "A list like (SYMBOL . QUALIFIER) which filters the current buffer list.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
129 See also `ibuffer-filtering-alist'.")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
130
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
131 ;; This is now frobbed by `define-ibuffer-filter'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
132 (defvar ibuffer-filtering-alist nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
133 "An alist of (SYMBOL DESCRIPTION FUNCTION) which describes a filter.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
134
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
135 You most likely do not want to modify this variable directly; see
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
136 `define-ibuffer-filter'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
137
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
138 SYMBOL is the symbolic name of the filter. DESCRIPTION is used when
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
139 displaying information to the user. FUNCTION is given a buffer and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
140 the value of the qualifier, and returns non-nil if and only if the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
141 buffer should be displayed.")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
142
43102
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
143 (defcustom ibuffer-filter-format-alist nil
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
144 "An alist which has special formats used when a filter is active.
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
145 The contents of this variable should look like:
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
146 ((FILTER (FORMAT FORMAT ...)) (FILTER (FORMAT FORMAT ...)) ...)
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
147
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
148 For example, suppose that when you add a filter for buffers whose
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
149 major mode is `emacs-lisp-mode', you only want to see the mark and the
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
150 name of the buffer. You could accomplish that by adding:
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
151 (mode ((mark \" \" name)))
43769
72eb9658393c (ibuffer-filter-format-alist): Add type and group.
Colin Walters <walters@gnu.org>
parents: 43567
diff changeset
152 to this variable."
72eb9658393c (ibuffer-filter-format-alist): Add type and group.
Colin Walters <walters@gnu.org>
parents: 43567
diff changeset
153 :type '(repeat (list :tag "Association" (symbol :tag "Filter")
72eb9658393c (ibuffer-filter-format-alist): Add type and group.
Colin Walters <walters@gnu.org>
parents: 43567
diff changeset
154 (list :tag "Formats" (repeat (sexp :tag "Format")))))
72eb9658393c (ibuffer-filter-format-alist): Add type and group.
Colin Walters <walters@gnu.org>
parents: 43567
diff changeset
155 :group 'ibuffer)
43102
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
156
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
157 (defvar ibuffer-cached-filter-formats nil)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
158 (defvar ibuffer-compiled-filter-formats nil)
43102
280c82e97c2a (ibuffer-filter-format-alist, ibuffer-cached-filter-formats,
Colin Walters <walters@gnu.org>
parents: 42813
diff changeset
159
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
160 (defvar ibuffer-filter-groups nil
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
161 "A list like ((\"NAME\" ((SYMBOL . QUALIFIER) ...) ...) which groups buffers.
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
162 The SYMBOL should be one from `ibuffer-filtering-alist'.
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
163 The QUALIFIER should be the same as QUALIFIER in
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
164 `ibuffer-filtering-qualifiers'.")
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
165
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
166 (defcustom ibuffer-show-empty-filter-groups t
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
167 "If non-nil, then show the names of filter groups which are empty."
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
168 :type 'boolean
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
169 :group 'ibuffer)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
170
44871
15b639b48157 (ibuffer-saved-filter-groups): Don't include broken defaults.
Colin Walters <walters@gnu.org>
parents: 44855
diff changeset
171 (defcustom ibuffer-saved-filter-groups nil
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
172 "An alist of filtering groups to switch between.
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
173
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
174 This variable should look like ((\"STRING\" QUALIFIERS)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
175 (\"STRING\" QUALIFIERS) ...), where
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
176 QUALIFIERS is a list of the same form as
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
177 `ibuffer-filtering-qualifiers'.
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
178
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
179 See also the variables `ibuffer-filter-groups',
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
180 `ibuffer-filtering-qualifiers', `ibuffer-filtering-alist', and the
79135
ae47ede3f248 (ibuffer-saved-filter-groups): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 78492
diff changeset
181 functions `ibuffer-switch-to-saved-filter-groups',
ae47ede3f248 (ibuffer-saved-filter-groups): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 78492
diff changeset
182 `ibuffer-save-filter-groups'."
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
183 :type '(repeat sexp)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
184 :group 'ibuffer)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
185
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
186 (defvar ibuffer-hidden-filter-groups nil
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
187 "A list of filtering groups which are currently hidden.")
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
188
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
189 (defvar ibuffer-filter-group-kill-ring nil)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
190
43490
a08f4763cba4 (ibuffer-old-time): Change to hours.
Colin Walters <walters@gnu.org>
parents: 43379
diff changeset
191 (defcustom ibuffer-old-time 72
a08f4763cba4 (ibuffer-old-time): Change to hours.
Colin Walters <walters@gnu.org>
parents: 43379
diff changeset
192 "The number of hours before a buffer is considered \"old\"."
a08f4763cba4 (ibuffer-old-time): Change to hours.
Colin Walters <walters@gnu.org>
parents: 43379
diff changeset
193 :type '(choice (const :tag "72 hours (3 days)" 72)
a08f4763cba4 (ibuffer-old-time): Change to hours.
Colin Walters <walters@gnu.org>
parents: 43379
diff changeset
194 (const :tag "48 hours (2 days)" 48)
a08f4763cba4 (ibuffer-old-time): Change to hours.
Colin Walters <walters@gnu.org>
parents: 43379
diff changeset
195 (const :tag "24 hours (1 day)" 24)
a08f4763cba4 (ibuffer-old-time): Change to hours.
Colin Walters <walters@gnu.org>
parents: 43379
diff changeset
196 (integer :tag "hours"))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
197 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
198
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
199 (defcustom ibuffer-save-with-custom t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
200 "If non-nil, then use Custom to save interactively changed variables.
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
201 Currently, this only applies to `ibuffer-saved-filters' and
49722
f90856c1755e (ibuffer-save-with-custom, ibuffer-add-to-tmp-hide)
John Paul Wallington <jpw@pobox.com>
parents: 49588
diff changeset
202 `ibuffer-saved-filter-groups'."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
203 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
204 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
205
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
206 (defun ibuffer-ext-visible-p (buf all &optional ibuffer-buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
207 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
208 (ibuffer-buf-matches-predicates buf ibuffer-tmp-show-regexps)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
209 (and (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
210 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
211 (ibuffer-buf-matches-predicates buf ibuffer-tmp-hide-regexps)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
212 (ibuffer-buf-matches-predicates buf ibuffer-never-show-predicates)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
213 (or all
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
214 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
215 (ibuffer-buf-matches-predicates buf ibuffer-maybe-show-predicates)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
216 (or ibuffer-view-ibuffer
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
217 (and ibuffer-buf
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
218 (not (eq ibuffer-buf buf))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
219 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
220 (ibuffer-included-in-filters-p buf ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
221 (ibuffer-buf-matches-predicates buf ibuffer-always-show-predicates)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
222
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
223 (defun ibuffer-auto-update-changed ()
65180
6705c5e7dee2 (ibuffer-auto-update-changed): Use `frame-or-buffer-changed-p' to
John Paul Wallington <jpw@pobox.com>
parents: 64762
diff changeset
224 (when (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed)
85590
3055282f9d8f (ibuffer-auto-update-changed): Use `dolist' rather than `mapcar';
Juanma Barranquero <lekktu@gmail.com>
parents: 79182
diff changeset
225 (dolist (buf (buffer-list))
3055282f9d8f (ibuffer-auto-update-changed): Use `dolist' rather than `mapcar';
Juanma Barranquero <lekktu@gmail.com>
parents: 79182
diff changeset
226 (ignore-errors
3055282f9d8f (ibuffer-auto-update-changed): Use `dolist' rather than `mapcar';
Juanma Barranquero <lekktu@gmail.com>
parents: 79182
diff changeset
227 (with-current-buffer buf
3055282f9d8f (ibuffer-auto-update-changed): Use `dolist' rather than `mapcar';
Juanma Barranquero <lekktu@gmail.com>
parents: 79182
diff changeset
228 (when (and ibuffer-auto-mode
87790
d4459bad23ea (ibuffer-auto-update-changed, ibuffer-auto-mode): Use derived-mode-p.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
229 (derived-mode-p 'ibuffer-mode))
85590
3055282f9d8f (ibuffer-auto-update-changed): Use `dolist' rather than `mapcar';
Juanma Barranquero <lekktu@gmail.com>
parents: 79182
diff changeset
230 (ibuffer-update nil t)))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
231
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
232 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
233 (defun ibuffer-auto-mode (&optional arg)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
234 "Toggle use of Ibuffer's auto-update facility.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
235 With numeric ARG, enable auto-update if and only if ARG is positive."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
236 (interactive)
87790
d4459bad23ea (ibuffer-auto-update-changed, ibuffer-auto-mode): Use derived-mode-p.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
237 (unless (derived-mode-p 'ibuffer-mode)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
238 (error "This buffer is not in Ibuffer mode"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
239 (set (make-local-variable 'ibuffer-auto-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
240 (if arg
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
241 (plusp arg)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
242 (not ibuffer-auto-mode)))
85590
3055282f9d8f (ibuffer-auto-update-changed): Use `dolist' rather than `mapcar';
Juanma Barranquero <lekktu@gmail.com>
parents: 79182
diff changeset
243 (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed) ; Initialize state vector
87802
0df22905486e (ibuffer-auto-mode): Remove call to deleted ibuffer-update-mode-name.
Glenn Morris <rgm@gnu.org>
parents: 87790
diff changeset
244 (add-hook 'post-command-hook 'ibuffer-auto-update-changed))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
245
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
246 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
247 (defun ibuffer-mouse-filter-by-mode (event)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
248 "Enable or disable filtering by the major mode chosen via mouse."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
249 (interactive "e")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
250 (ibuffer-interactive-filter-by-mode event))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
251
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
252 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
253 (defun ibuffer-interactive-filter-by-mode (event-or-point)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
254 "Enable or disable filtering by the major mode at point."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
255 (interactive "d")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
256 (if (eventp event-or-point)
66970
d94285b2b933 (ibuffer-interactive-filter-by-mode): Use `posn-set-point' instead of
John Paul Wallington <jpw@pobox.com>
parents: 65896
diff changeset
257 (posn-set-point (event-end event-or-point))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
258 (goto-char event-or-point))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
259 (let ((buf (ibuffer-current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
260 (if (assq 'mode ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
261 (setq ibuffer-filtering-qualifiers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
262 (ibuffer-delete-alist 'mode ibuffer-filtering-qualifiers))
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
263 (ibuffer-push-filter (cons 'mode (buffer-local-value 'major-mode buf)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
264 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
265
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
266 ;;;###autoload
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
267 (defun ibuffer-mouse-toggle-filter-group (event)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
268 "Toggle the display status of the filter group chosen with the mouse."
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
269 (interactive "e")
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
270 (ibuffer-toggle-filter-group-1 (save-excursion
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
271 (mouse-set-point event)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
272 (point))))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
273
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
274 ;;;###autoload
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
275 (defun ibuffer-toggle-filter-group ()
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
276 "Toggle the display status of the filter group on this line."
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
277 (interactive)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
278 (ibuffer-toggle-filter-group-1 (point)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
279
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
280 (defun ibuffer-toggle-filter-group-1 (posn)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
281 (let ((name (get-text-property posn 'ibuffer-filter-group-name)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
282 (unless (stringp name)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
283 (error "No filtering group name present"))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
284 (if (member name ibuffer-hidden-filter-groups)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
285 (setq ibuffer-hidden-filter-groups
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
286 (delete name ibuffer-hidden-filter-groups))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
287 (push name ibuffer-hidden-filter-groups))
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
288 (ibuffer-update nil t)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
289
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
290 ;;;###autoload
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
291 (defun ibuffer-forward-filter-group (&optional count)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
292 "Move point forwards by COUNT filtering groups."
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
293 (interactive "P")
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
294 (unless count
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
295 (setq count 1))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
296 (when (> count 0)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
297 (when (get-text-property (point) 'ibuffer-filter-group-name)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
298 (goto-char (next-single-property-change
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
299 (point) 'ibuffer-filter-group-name
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
300 nil (point-max))))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
301 (goto-char (next-single-property-change
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
302 (point) 'ibuffer-filter-group-name
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
303 nil (point-max)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
304 (ibuffer-forward-filter-group (1- count)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
305 (ibuffer-forward-line 0))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
306
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
307 ;;;###autoload
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
308 (defun ibuffer-backward-filter-group (&optional count)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
309 "Move point backwards by COUNT filtering groups."
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
310 (interactive "P")
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
311 (unless count
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
312 (setq count 1))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
313 (when (> count 0)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
314 (when (get-text-property (point) 'ibuffer-filter-group-name)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
315 (goto-char (previous-single-property-change
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
316 (point) 'ibuffer-filter-group-name
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
317 nil (point-min))))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
318 (goto-char (previous-single-property-change
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
319 (point) 'ibuffer-filter-group-name
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
320 nil (point-min)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
321 (ibuffer-backward-filter-group (1- count)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
322 (when (= (point) (point-min))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
323 (goto-char (point-max))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
324 (ibuffer-backward-filter-group 1))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
325 (ibuffer-forward-line 0))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
326
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
327 ;;;###autoload (autoload 'ibuffer-do-shell-command-pipe "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
328 (define-ibuffer-op shell-command-pipe (command)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
329 "Pipe the contents of each marked buffer to shell command COMMAND."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
330 (:interactive "sPipe to shell command: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
331 :opstring "Shell command executed on"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
332 :modifier-p nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
333 (shell-command-on-region
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
334 (point-min) (point-max) command
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
335 (get-buffer-create "* ibuffer-shell-output*")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
336
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
337 ;;;###autoload (autoload 'ibuffer-do-shell-command-pipe-replace "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
338 (define-ibuffer-op shell-command-pipe-replace (command)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
339 "Replace the contents of marked buffers with output of pipe to COMMAND."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
340 (:interactive "sPipe to shell command (replace): "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
341 :opstring "Buffer contents replaced in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
342 :active-opstring "replace buffer contents in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
343 :dangerous t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
344 :modifier-p t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
345 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
346 (shell-command-on-region (point-min) (point-max)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
347 command nil t)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
348
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
349 ;;;###autoload (autoload 'ibuffer-do-shell-command-file "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
350 (define-ibuffer-op shell-command-file (command)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
351 "Run shell command COMMAND separately on files of marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
352 (:interactive "sShell command on buffer's file: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
353 :opstring "Shell command executed on"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
354 :modifier-p nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
355 (shell-command (concat command " "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
356 (shell-quote-argument
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
357 (if buffer-file-name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
358 buffer-file-name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
359 (make-temp-file
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
360 (substring (buffer-name) 0 (min 10 (length (buffer-name))))))))))
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
361
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
362 ;;;###autoload (autoload 'ibuffer-do-eval "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
363 (define-ibuffer-op eval (form)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
364 "Evaluate FORM in each of the buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
365 Does not display the buffer during evaluation. See
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
366 `ibuffer-do-view-and-eval' for that."
73221
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
367 (:interactive
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
368 (list
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
369 (read-from-minibuffer
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
370 "Eval in buffers (form): "
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
371 nil read-expression-map t 'read-expression-history))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
372 :opstring "evaluated in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
373 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
374 (eval form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
375
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
376 ;;;###autoload (autoload 'ibuffer-do-view-and-eval "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
377 (define-ibuffer-op view-and-eval (form)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
378 "Evaluate FORM while displaying each of the marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
379 To evaluate a form without viewing the buffer, see `ibuffer-do-eval'."
73221
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
380 (:interactive
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
381 (list
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
382 (read-from-minibuffer
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
383 "Eval viewing in buffers (form): "
a13e990ebd44 (eval, view-and-eval) <define-ibuffer-op>: Use the interactive spec of
John Paul Wallington <jpw@pobox.com>
parents: 69642
diff changeset
384 nil read-expression-map t 'read-expression-history))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
385 :opstring "evaluated in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
386 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
387 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
388 (let ((ibuffer-buf (current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
389 (unwind-protect
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
390 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
391 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
392 (eval form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
393 (switch-to-buffer ibuffer-buf))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
394
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
395 ;;;###autoload (autoload 'ibuffer-do-rename-uniquely "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
396 (define-ibuffer-op rename-uniquely ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
397 "Rename marked buffers as with `rename-uniquely'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
398 (:opstring "renamed"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
399 :modifier-p t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
400 (rename-uniquely))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
401
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
402 ;;;###autoload (autoload 'ibuffer-do-revert "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
403 (define-ibuffer-op revert ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
404 "Revert marked buffers as with `revert-buffer'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
405 (:dangerous t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
406 :opstring "reverted"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
407 :active-opstring "revert"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
408 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
409 (revert-buffer t t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
410
96955
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
411 ;;;###autoload (autoload 'ibuffer-do-isearch "ibuf-ext")
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
412 (define-ibuffer-op ibuffer-do-isearch ()
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
413 "Perform a `isearch-forward' in marked buffers."
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
414 (:interactive ()
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
415 :opstring "searched in"
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
416 :complex t
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
417 :modifier-p :maybe)
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
418 (multi-isearch-buffers (ibuffer-get-marked-buffers)))
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
419
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
420 ;;;###autoload (autoload 'ibuffer-do-isearch-regexp "ibuf-ext")
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
421 (define-ibuffer-op ibuffer-do-isearch-regexp ()
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
422 "Perform a `isearch-forward-regexp' in marked buffers."
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
423 (:interactive ()
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
424 :opstring "searched regexp in"
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
425 :complex t
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
426 :modifier-p :maybe)
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
427 (multi-isearch-buffers-regexp (ibuffer-get-marked-buffers)))
57fc87925078 (ibuffer-do-isearch, ibuffer-do-isearch-regexp): New functions.
Juri Linkov <juri@jurta.org>
parents: 96377
diff changeset
428
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
429 ;;;###autoload (autoload 'ibuffer-do-replace-regexp "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
430 (define-ibuffer-op replace-regexp (from-str to-str)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
431 "Perform a `replace-regexp' in marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
432 (:interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
433 (let* ((from-str (read-from-minibuffer "Replace regexp: "))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
434 (to-str (read-from-minibuffer (concat "Replace " from-str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
435 " with: "))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
436 (list from-str to-str))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
437 :opstring "replaced in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
438 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
439 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
440 (save-window-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
441 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
442 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
443 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
444 (let ((case-fold-search ibuffer-case-fold-search))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
445 (while (re-search-forward from-str nil t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
446 (replace-match to-str))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
447 t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
448
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
449 ;;;###autoload (autoload 'ibuffer-do-query-replace "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
450 (define-ibuffer-op query-replace (&rest args)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
451 "Perform a `query-replace' in marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
452 (:interactive
44190
598fbedb891e (operation query-replace): Use new `noerror' arg for
Colin Walters <walters@gnu.org>
parents: 44186
diff changeset
453 (query-replace-read-args "Query replace" t t)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
454 :opstring "replaced in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
455 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
456 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
457 (save-window-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
458 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
459 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
460 (let ((case-fold-search ibuffer-case-fold-search))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
461 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
462 (apply #'query-replace args)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
463 t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
464
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
465 ;;;###autoload (autoload 'ibuffer-do-query-replace-regexp "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
466 (define-ibuffer-op query-replace-regexp (&rest args)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
467 "Perform a `query-replace-regexp' in marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
468 (:interactive
44190
598fbedb891e (operation query-replace): Use new `noerror' arg for
Colin Walters <walters@gnu.org>
parents: 44186
diff changeset
469 (query-replace-read-args "Query replace regexp" t t)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
470 :opstring "replaced in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
471 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
472 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
473 (save-window-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
474 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
475 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
476 (let ((case-fold-search ibuffer-case-fold-search))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
477 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
478 (apply #'query-replace-regexp args)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
479 t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
480
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
481 ;;;###autoload (autoload 'ibuffer-do-print "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
482 (define-ibuffer-op print ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
483 "Print marked buffers as with `print-buffer'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
484 (:opstring "printed"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
485 :modifier-p nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
486 (print-buffer))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
487
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
488 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
489 (defun ibuffer-included-in-filters-p (buf filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
490 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
491 (memq nil ;; a filter will return nil if it failed
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
492 (mapcar
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
493 ;; filter should be like (TYPE . QUALIFIER), or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
494 ;; (or (TYPE . QUALIFIER) (TYPE . QUALIFIER) ...)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
495 #'(lambda (qual)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
496 (ibuffer-included-in-filter-p buf qual))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
497 filters))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
498
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
499 (defun ibuffer-included-in-filter-p (buf filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
500 (if (eq (car filter) 'not)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
501 (not (ibuffer-included-in-filter-p-1 buf (cdr filter)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
502 (ibuffer-included-in-filter-p-1 buf filter)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
503
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
504 (defun ibuffer-included-in-filter-p-1 (buf filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
505 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
506 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
507 (case (car filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
508 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
509 (memq t (mapcar #'(lambda (x)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
510 (ibuffer-included-in-filter-p buf x))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
511 (cdr filter))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
512 (saved
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
513 (let ((data
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
514 (assoc (cdr filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
515 ibuffer-saved-filters)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
516 (unless data
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
517 (ibuffer-filter-disable)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
518 (error "Unknown saved filter %s" (cdr filter)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
519 (ibuffer-included-in-filters-p buf (cadr data))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
520 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
521 (let ((filterdat (assq (car filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
522 ibuffer-filtering-alist)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
523 ;; filterdat should be like (TYPE DESCRIPTION FUNC)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
524 ;; just a sanity check
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
525 (unless filterdat
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
526 (ibuffer-filter-disable)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
527 (error "Undefined filter %s" (car filter)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
528 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
529 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
530 (funcall (caddr filterdat)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
531 buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
532 (cdr filter))))))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
533
69642
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
534 (defun ibuffer-generate-filter-groups (bmarklist &optional noempty nodefault)
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
535 (let ((filter-group-alist (if nodefault
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
536 ibuffer-filter-groups
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
537 (append ibuffer-filter-groups
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
538 (list (cons "Default" nil))))))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
539 ;; (dolist (hidden ibuffer-hidden-filter-groups)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
540 ;; (setq filter-group-alist (ibuffer-delete-alist
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
541 ;; hidden filter-group-alist)))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
542 (let ((vec (make-vector (length filter-group-alist) nil))
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
543 (i 0))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
544 (dolist (filtergroup filter-group-alist)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
545 (let ((filterset (cdr filtergroup)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
546 (multiple-value-bind (hip-crowd lamers)
104940
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
547 (values-list
102531
26dfa5308c26 M-v correctness.
Deepak Goel <deego@gnufans.org>
parents: 100908
diff changeset
548 (ibuffer-split-list (lambda (bufmark)
26dfa5308c26 M-v correctness.
Deepak Goel <deego@gnufans.org>
parents: 100908
diff changeset
549 (ibuffer-included-in-filters-p (car bufmark)
26dfa5308c26 M-v correctness.
Deepak Goel <deego@gnufans.org>
parents: 100908
diff changeset
550 filterset))
26dfa5308c26 M-v correctness.
Deepak Goel <deego@gnufans.org>
parents: 100908
diff changeset
551 bmarklist))
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
552 (aset vec i hip-crowd)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
553 (incf i)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
554 (setq bmarklist lamers))))
69642
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
555 (let (ret)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
556 (dotimes (j i ret)
69642
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
557 (let ((bufs (aref vec j)))
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
558 (unless (and noempty (null bufs))
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
559 (push (cons (car (nth j filter-group-alist))
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
560 bufs)
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
561 ret))))))))
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
562
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
563 ;;;###autoload
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
564 (defun ibuffer-filters-to-filter-group (name)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
565 "Make the current filters into a filtering group."
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
566 (interactive "sName for filtering group: ")
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
567 (when (null ibuffer-filtering-qualifiers)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
568 (error "No filters in effect"))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
569 (push (cons name ibuffer-filtering-qualifiers) ibuffer-filter-groups)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
570 (ibuffer-filter-disable))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
571
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
572 ;;;###autoload
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
573 (defun ibuffer-set-filter-groups-by-mode ()
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
574 "Set the current filter groups to filter by mode."
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
575 (interactive)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
576 (setq ibuffer-filter-groups
44935
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
577 (mapcar (lambda (mode)
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
578 (cons (format "%s" mode) `((mode . ,mode))))
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
579 (let ((modes
48778
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
580 (ibuffer-remove-duplicates
79182
87b5a80ae953 (ibuffer-switch-to-saved-filters, ibuffer-switch-to-saved-filter-groups):
Juanma Barranquero <lekktu@gmail.com>
parents: 79135
diff changeset
581 (mapcar (lambda (buf)
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
582 (buffer-local-value 'major-mode buf))
44935
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
583 (buffer-list)))))
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
584 (if ibuffer-view-ibuffer
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
585 modes
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
586 (delq 'ibuffer-mode modes)))))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
587 (ibuffer-update nil t))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
588
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
589 ;;;###autoload
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
590 (defun ibuffer-pop-filter-group ()
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
591 "Remove the first filter group."
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
592 (interactive)
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
593 (when (null ibuffer-filter-groups)
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
594 (error "No filter groups active"))
44935
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
595 (setq ibuffer-hidden-filter-groups
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
596 (delete (pop ibuffer-filter-groups)
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
597 ibuffer-hidden-filter-groups))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
598 (ibuffer-update nil t))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
599
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
600 (defun ibuffer-read-filter-group-name (msg &optional nodefault noerror)
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
601 (when (and (not noerror) (null ibuffer-filter-groups))
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
602 (error "No filter groups active"))
69642
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
603 ;; `ibuffer-generate-filter-groups' returns all non-hidden filter
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
604 ;; groups, possibly excluding empty groups or Default.
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
605 ;; We add `ibuffer-hidden-filter-groups' to the list, excluding
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
606 ;; Default if necessary.
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
607 (completing-read msg (nconc
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
608 (ibuffer-generate-filter-groups
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
609 (ibuffer-current-state-list)
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
610 (not ibuffer-show-empty-filter-groups)
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
611 nodefault)
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
612 (if nodefault
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
613 (remove "Default" ibuffer-hidden-filter-groups)
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
614 ibuffer-hidden-filter-groups))
297538763ac1 (ibuffer-read-filter-group-name):
Romain Francoise <romain@orebokech.com>
parents: 69452
diff changeset
615 nil t))
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
616
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
617 ;;;###autoload
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
618 (defun ibuffer-decompose-filter-group (group)
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
619 "Decompose the filter group GROUP into active filters."
79182
87b5a80ae953 (ibuffer-switch-to-saved-filters, ibuffer-switch-to-saved-filter-groups):
Juanma Barranquero <lekktu@gmail.com>
parents: 79135
diff changeset
620 (interactive
51740
b9b903974028 Don't require `derived' at compile-time.
John Paul Wallington <jpw@pobox.com>
parents: 50445
diff changeset
621 (list (ibuffer-read-filter-group-name "Decompose filter group: " t)))
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
622 (let ((data (cdr (assoc group ibuffer-filter-groups))))
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
623 (setq ibuffer-filter-groups (ibuffer-delete-alist
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
624 group ibuffer-filter-groups)
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
625 ibuffer-filtering-qualifiers data))
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
626 (ibuffer-update nil t))
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
627
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
628 ;;;###autoload
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
629 (defun ibuffer-clear-filter-groups ()
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
630 "Remove all filter groups."
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
631 (interactive)
44935
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
632 (setq ibuffer-filter-groups nil
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
633 ibuffer-hidden-filter-groups nil)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
634 (ibuffer-update nil t))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
635
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
636 (defun ibuffer-current-filter-groups-with-position ()
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
637 (save-excursion
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
638 (goto-char (point-min))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
639 (let ((pos nil)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
640 (result nil))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
641 (while (and (not (eobp))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
642 (setq pos (next-single-property-change
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
643 (point) 'ibuffer-filter-group-name)))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
644 (goto-char pos)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
645 (push (cons (get-text-property (point) 'ibuffer-filter-group-name)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
646 pos)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
647 result)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
648 (goto-char (next-single-property-change
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
649 pos 'ibuffer-filter-group-name)))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
650 (nreverse result))))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
651
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
652 ;;;###autoload
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
653 (defun ibuffer-jump-to-filter-group (name)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
654 "Move point to the filter group whose name is NAME."
79182
87b5a80ae953 (ibuffer-switch-to-saved-filters, ibuffer-switch-to-saved-filter-groups):
Juanma Barranquero <lekktu@gmail.com>
parents: 79135
diff changeset
655 (interactive
51740
b9b903974028 Don't require `derived' at compile-time.
John Paul Wallington <jpw@pobox.com>
parents: 50445
diff changeset
656 (list (ibuffer-read-filter-group-name "Jump to filter group: ")))
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
657 (ibuffer-aif (assoc name (ibuffer-current-filter-groups-with-position))
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
658 (goto-char (cdr it))
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
659 (error "No filter group with name %s" name)))
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
660
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
661 ;;;###autoload
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
662 (defun ibuffer-kill-filter-group (name)
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
663 "Kill the filter group named NAME.
45128
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
664 The group will be added to `ibuffer-filter-group-kill-ring'."
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
665 (interactive (list (ibuffer-read-filter-group-name "Kill filter group: " t)))
45128
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
666 (when (equal name "Default")
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
667 (error "Can't kill default filter group"))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
668 (ibuffer-aif (assoc name ibuffer-filter-groups)
44935
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
669 (progn
45128
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
670 (push (copy-tree it) ibuffer-filter-group-kill-ring)
44935
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
671 (setq ibuffer-filter-groups (ibuffer-delete-alist
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
672 name ibuffer-filter-groups))
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
673 (setq ibuffer-hidden-filter-groups
44995
f365c85cce40 (ibuffer-kill-filter-group): Call `delete' function.
Colin Walters <walters@gnu.org>
parents: 44935
diff changeset
674 (delete name ibuffer-hidden-filter-groups)))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
675 (error "No filter group with name \"%s\"" name))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
676 (ibuffer-update nil t))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
677
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
678 ;;;###autoload
57655
ba7d42763f73 (ibuffer-kill-line): Set arg `interactive-p' in interactive spec
John Paul Wallington <jpw@pobox.com>
parents: 57648
diff changeset
679 (defun ibuffer-kill-line (&optional arg interactive-p)
45162
b266348db08f (ibuffer-pop-filter-group): Doc fix.
Colin Walters <walters@gnu.org>
parents: 45128
diff changeset
680 "Kill the filter group at point.
45128
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
681 See also `ibuffer-kill-filter-group'."
57655
ba7d42763f73 (ibuffer-kill-line): Set arg `interactive-p' in interactive spec
John Paul Wallington <jpw@pobox.com>
parents: 57648
diff changeset
682 (interactive "P\np")
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
683 (ibuffer-aif (save-excursion
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
684 (ibuffer-forward-line 0)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
685 (get-text-property (point) 'ibuffer-filter-group-name))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
686 (progn
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
687 (ibuffer-kill-filter-group it))
57655
ba7d42763f73 (ibuffer-kill-line): Set arg `interactive-p' in interactive spec
John Paul Wallington <jpw@pobox.com>
parents: 57648
diff changeset
688 (funcall (if interactive-p #'call-interactively #'funcall)
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
689 #'kill-line arg)))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
690
45128
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
691 (defun ibuffer-insert-filter-group-before (newgroup group)
48778
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
692 (let* ((found nil)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
693 (pos (let ((groups (mapcar #'car ibuffer-filter-groups))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
694 (res 0))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
695 (while groups
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
696 (if (equal (car groups) group)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
697 (setq found t
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
698 groups nil)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
699 (incf res)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
700 (setq groups (cdr groups))))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
701 res)))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
702 (cond ((not found)
51740
b9b903974028 Don't require `derived' at compile-time.
John Paul Wallington <jpw@pobox.com>
parents: 50445
diff changeset
703 (setq ibuffer-filter-groups
b9b903974028 Don't require `derived' at compile-time.
John Paul Wallington <jpw@pobox.com>
parents: 50445
diff changeset
704 (nconc ibuffer-filter-groups (list newgroup))))
48778
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
705 ((zerop pos)
45128
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
706 (push newgroup ibuffer-filter-groups))
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
707 (t
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
708 (let ((cell (nthcdr pos ibuffer-filter-groups)))
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
709 (setf (cdr cell) (cons (car cell) (cdr cell)))
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
710 (setf (car cell) newgroup))))))
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
711
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
712 ;;;###autoload
45128
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
713 (defun ibuffer-yank ()
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
714 "Yank the last killed filter group before group at point."
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
715 (interactive)
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
716 (ibuffer-yank-filter-group
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
717 (or (get-text-property (point) 'ibuffer-filter-group-name)
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
718 (get-text-property (point) 'ibuffer-filter-group)
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
719 (error "No filter group at point"))))
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
720
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
721 ;;;###autoload
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
722 (defun ibuffer-yank-filter-group (name)
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
723 "Yank the last killed filter group before group named NAME."
49498
324254ee7473 (ibuffer-yank-filter-group): Move check for empty
John Paul Wallington <jpw@pobox.com>
parents: 49410
diff changeset
724 (interactive (list (ibuffer-read-filter-group-name
324254ee7473 (ibuffer-yank-filter-group): Move check for empty
John Paul Wallington <jpw@pobox.com>
parents: 49410
diff changeset
725 "Yank filter group before group: ")))
324254ee7473 (ibuffer-yank-filter-group): Move check for empty
John Paul Wallington <jpw@pobox.com>
parents: 49410
diff changeset
726 (unless ibuffer-filter-group-kill-ring
324254ee7473 (ibuffer-yank-filter-group): Move check for empty
John Paul Wallington <jpw@pobox.com>
parents: 49410
diff changeset
727 (error "The Ibuffer filter group kill-ring is empty"))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
728 (save-excursion
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
729 (ibuffer-forward-line 0)
45128
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
730 (ibuffer-insert-filter-group-before (pop ibuffer-filter-group-kill-ring)
18c2dfafd097 (ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Colin Walters <walters@gnu.org>
parents: 44995
diff changeset
731 name))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
732 (ibuffer-update nil t))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
733
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
734 ;;;###autoload
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
735 (defun ibuffer-save-filter-groups (name groups)
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
736 "Save all active filter groups GROUPS as NAME.
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
737 They are added to `ibuffer-saved-filter-groups'. Interactively,
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
738 prompt for NAME, and use the current filters."
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
739 (interactive
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
740 (if (null ibuffer-filter-groups)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
741 (error "No filter groups active")
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
742 (list
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
743 (read-from-minibuffer "Save current filter groups as: ")
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
744 ibuffer-filter-groups)))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
745 (ibuffer-aif (assoc name ibuffer-saved-filter-groups)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
746 (setcdr it groups)
44871
15b639b48157 (ibuffer-saved-filter-groups): Don't include broken defaults.
Colin Walters <walters@gnu.org>
parents: 44855
diff changeset
747 (push (cons name groups) ibuffer-saved-filter-groups))
87806
b0a079d21ed0 (ibuffer-save-filter-groups, ibuffer-save-filters): Remove calls to
Glenn Morris <rgm@gnu.org>
parents: 87802
diff changeset
748 (ibuffer-maybe-save-stuff))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
749
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
750 ;;;###autoload
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
751 (defun ibuffer-delete-saved-filter-groups (name)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
752 "Delete saved filter groups with NAME.
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
753 They are removed from `ibuffer-saved-filter-groups'."
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
754 (interactive
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
755 (list
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
756 (if (null ibuffer-saved-filter-groups)
44995
f365c85cce40 (ibuffer-kill-filter-group): Call `delete' function.
Colin Walters <walters@gnu.org>
parents: 44935
diff changeset
757 (error "No saved filter groups")
f365c85cce40 (ibuffer-kill-filter-group): Call `delete' function.
Colin Walters <walters@gnu.org>
parents: 44935
diff changeset
758 (completing-read "Delete saved filter group: "
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
759 ibuffer-saved-filter-groups nil t))))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
760 (setq ibuffer-saved-filter-groups
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
761 (ibuffer-delete-alist name ibuffer-saved-filter-groups))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
762 (ibuffer-maybe-save-stuff)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
763 (ibuffer-update nil t))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
764
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
765 ;;;###autoload
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
766 (defun ibuffer-switch-to-saved-filter-groups (name)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
767 "Set this buffer's filter groups to saved version with NAME.
79182
87b5a80ae953 (ibuffer-switch-to-saved-filters, ibuffer-switch-to-saved-filter-groups):
Juanma Barranquero <lekktu@gmail.com>
parents: 79135
diff changeset
768 The value from `ibuffer-saved-filter-groups' is used."
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
769 (interactive
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
770 (list
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
771 (if (null ibuffer-saved-filter-groups)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
772 (error "No saved filters")
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
773 (completing-read "Switch to saved filter group: "
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
774 ibuffer-saved-filter-groups nil t))))
44935
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
775 (setq ibuffer-filter-groups (cdr (assoc name ibuffer-saved-filter-groups))
34f60f6d5261 (ibuffer-set-filter-groups-by-mode): Don't make an ibuffer-mode filter
Colin Walters <walters@gnu.org>
parents: 44871
diff changeset
776 ibuffer-hidden-filter-groups nil)
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
777 (ibuffer-update nil t))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
778
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
779 ;;;###autoload
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
780 (defun ibuffer-filter-disable ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
781 "Disable all filters currently in effect in this buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
782 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
783 (setq ibuffer-filtering-qualifiers nil)
60343
48db693e88d3 (ibuffer-filter-disable): Move back to the current buffer after
John Paul Wallington <jpw@pobox.com>
parents: 57655
diff changeset
784 (let ((buf (ibuffer-current-buffer)))
48db693e88d3 (ibuffer-filter-disable): Move back to the current buffer after
John Paul Wallington <jpw@pobox.com>
parents: 57655
diff changeset
785 (ibuffer-update nil t)
48db693e88d3 (ibuffer-filter-disable): Move back to the current buffer after
John Paul Wallington <jpw@pobox.com>
parents: 57655
diff changeset
786 (when buf
48db693e88d3 (ibuffer-filter-disable): Move back to the current buffer after
John Paul Wallington <jpw@pobox.com>
parents: 57655
diff changeset
787 (ibuffer-jump-to-buffer (buffer-name buf)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
788
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
789 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
790 (defun ibuffer-pop-filter ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
791 "Remove the top filter in this buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
792 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
793 (when (null ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
794 (error "No filters in effect"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
795 (pop ibuffer-filtering-qualifiers)
60343
48db693e88d3 (ibuffer-filter-disable): Move back to the current buffer after
John Paul Wallington <jpw@pobox.com>
parents: 57655
diff changeset
796 (let ((buf (ibuffer-current-buffer)))
48db693e88d3 (ibuffer-filter-disable): Move back to the current buffer after
John Paul Wallington <jpw@pobox.com>
parents: 57655
diff changeset
797 (ibuffer-update nil t)
48db693e88d3 (ibuffer-filter-disable): Move back to the current buffer after
John Paul Wallington <jpw@pobox.com>
parents: 57655
diff changeset
798 (when buf
48db693e88d3 (ibuffer-filter-disable): Move back to the current buffer after
John Paul Wallington <jpw@pobox.com>
parents: 57655
diff changeset
799 (ibuffer-jump-to-buffer (buffer-name buf)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
800
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
801 (defun ibuffer-push-filter (qualifier)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
802 "Add QUALIFIER to `ibuffer-filtering-qualifiers'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
803 (push qualifier ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
804
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
805 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
806 (defun ibuffer-decompose-filter ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
807 "Separate the top compound filter (OR, NOT, or SAVED) in this buffer.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
808
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
809 This means that the topmost filter on the filtering stack, which must
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
810 be a complex filter like (OR [name: foo] [mode: bar-mode]), will be
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
811 turned into two separate filters [name: foo] and [mode: bar-mode]."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
812 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
813 (when (null ibuffer-filtering-qualifiers)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
814 (error "No filters in effect"))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
815 (let ((lim (pop ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
816 (case (car lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
817 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
818 (setq ibuffer-filtering-qualifiers (append
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
819 (cdr lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
820 ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
821 (saved
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
822 (let ((data
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
823 (assoc (cdr lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
824 ibuffer-saved-filters)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
825 (unless data
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
826 (ibuffer-filter-disable)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
827 (error "Unknown saved filter %s" (cdr lim)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
828 (setq ibuffer-filtering-qualifiers (append
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
829 (cadr data)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
830 ibuffer-filtering-qualifiers))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
831 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
832 (push (cdr lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
833 ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
834 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
835 (error "Filter type %s is not compound" (car lim)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
836 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
837
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
838 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
839 (defun ibuffer-exchange-filters ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
840 "Exchange the top two filters on the stack in this buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
841 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
842 (when (< (length ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
843 2)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
844 (error "Need two filters to exchange"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
845 (let ((first (pop ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
846 (second (pop ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
847 (push first ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
848 (push second ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
849 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
850
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
851 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
852 (defun ibuffer-negate-filter ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
853 "Negate the sense of the top filter in the current buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
854 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
855 (when (null ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
856 (error "No filters in effect"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
857 (let ((lim (pop ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
858 (push (if (eq (car lim) 'not)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
859 (cdr lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
860 (cons 'not lim))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
861 ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
862 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
863
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
864 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
865 (defun ibuffer-or-filter (&optional reverse)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
866 "Replace the top two filters in this buffer with their logical OR.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
867 If optional argument REVERSE is non-nil, instead break the top OR
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
868 filter into parts."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
869 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
870 (if reverse
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
871 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
872 (when (or (null ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
873 (not (eq 'or (caar ibuffer-filtering-qualifiers))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
874 (error "Top filter is not an OR"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
875 (let ((lim (pop ibuffer-filtering-qualifiers)))
79182
87b5a80ae953 (ibuffer-switch-to-saved-filters, ibuffer-switch-to-saved-filter-groups):
Juanma Barranquero <lekktu@gmail.com>
parents: 79135
diff changeset
876 (setq ibuffer-filtering-qualifiers
51740
b9b903974028 Don't require `derived' at compile-time.
John Paul Wallington <jpw@pobox.com>
parents: 50445
diff changeset
877 (nconc (cdr lim) ibuffer-filtering-qualifiers))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
878 (when (< (length ibuffer-filtering-qualifiers) 2)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
879 (error "Need two filters to OR"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
880 ;; If the second filter is an OR, just add to it.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
881 (let ((first (pop ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
882 (second (pop ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
883 (if (eq 'or (car second))
51740
b9b903974028 Don't require `derived' at compile-time.
John Paul Wallington <jpw@pobox.com>
parents: 50445
diff changeset
884 (push (nconc (list 'or first) (cdr second))
b9b903974028 Don't require `derived' at compile-time.
John Paul Wallington <jpw@pobox.com>
parents: 50445
diff changeset
885 ibuffer-filtering-qualifiers)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
886 (push (list 'or first second)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
887 ibuffer-filtering-qualifiers))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
888 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
889
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
890 (defun ibuffer-maybe-save-stuff ()
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
891 (when ibuffer-save-with-custom
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
892 (if (fboundp 'customize-save-variable)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
893 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
894 (customize-save-variable 'ibuffer-saved-filters
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
895 ibuffer-saved-filters)
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
896 (customize-save-variable 'ibuffer-saved-filter-groups
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
897 ibuffer-saved-filter-groups))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
898 (message "Not saved permanently: Customize not available"))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
899
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
900 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
901 (defun ibuffer-save-filters (name filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
902 "Save FILTERS in this buffer with name NAME in `ibuffer-saved-filters'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
903 Interactively, prompt for NAME, and use the current filters."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
904 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
905 (if (null ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
906 (error "No filters currently in effect")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
907 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
908 (read-from-minibuffer "Save current filters as: ")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
909 ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
910 (ibuffer-aif (assoc name ibuffer-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
911 (setcdr it filters)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
912 (push (list name filters) ibuffer-saved-filters))
87806
b0a079d21ed0 (ibuffer-save-filter-groups, ibuffer-save-filters): Remove calls to
Glenn Morris <rgm@gnu.org>
parents: 87802
diff changeset
913 (ibuffer-maybe-save-stuff))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
914
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
915 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
916 (defun ibuffer-delete-saved-filters (name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
917 "Delete saved filters with NAME from `ibuffer-saved-filters'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
918 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
919 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
920 (if (null ibuffer-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
921 (error "No saved filters")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
922 (completing-read "Delete saved filters: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
923 ibuffer-saved-filters nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
924 (setq ibuffer-saved-filters
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
925 (ibuffer-delete-alist name ibuffer-saved-filters))
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
926 (ibuffer-maybe-save-stuff)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
927 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
928
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
929 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
930 (defun ibuffer-add-saved-filters (name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
931 "Add saved filters from `ibuffer-saved-filters' to this buffer's filters."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
932 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
933 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
934 (if (null ibuffer-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
935 (error "No saved filters")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
936 (completing-read "Add saved filters: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
937 ibuffer-saved-filters nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
938 (push (cons 'saved name) ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
939 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
940
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
941 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
942 (defun ibuffer-switch-to-saved-filters (name)
79182
87b5a80ae953 (ibuffer-switch-to-saved-filters, ibuffer-switch-to-saved-filter-groups):
Juanma Barranquero <lekktu@gmail.com>
parents: 79135
diff changeset
943 "Set this buffer's filters to filters with NAME from `ibuffer-saved-filters'."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
944 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
945 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
946 (if (null ibuffer-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
947 (error "No saved filters")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
948 (completing-read "Switch to saved filters: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
949 ibuffer-saved-filters nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
950 (setq ibuffer-filtering-qualifiers (list (cons 'saved name)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
951 (ibuffer-update nil t))
45269
9f06588d9f44 (ibuffer-format-filter-group-data): New function.
Colin Walters <walters@gnu.org>
parents: 45212
diff changeset
952
9f06588d9f44 (ibuffer-format-filter-group-data): New function.
Colin Walters <walters@gnu.org>
parents: 45212
diff changeset
953 (defun ibuffer-format-filter-group-data (filter)
9f06588d9f44 (ibuffer-format-filter-group-data): New function.
Colin Walters <walters@gnu.org>
parents: 45212
diff changeset
954 (if (equal filter "Default")
9f06588d9f44 (ibuffer-format-filter-group-data): New function.
Colin Walters <walters@gnu.org>
parents: 45212
diff changeset
955 ""
50445
cb7054372647 (ibuffer-format-filter-group-data): Don't append "\n".
John Paul Wallington <jpw@pobox.com>
parents: 49722
diff changeset
956 (concat "Filter:" (mapconcat #'ibuffer-format-qualifier
cb7054372647 (ibuffer-format-filter-group-data): Don't append "\n".
John Paul Wallington <jpw@pobox.com>
parents: 49722
diff changeset
957 (cdr (assq filter ibuffer-filter-groups))
cb7054372647 (ibuffer-format-filter-group-data): Don't append "\n".
John Paul Wallington <jpw@pobox.com>
parents: 49722
diff changeset
958 " "))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49498
diff changeset
959
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
960 (defun ibuffer-format-qualifier (qualifier)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
961 (if (eq (car-safe qualifier) 'not)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
962 (concat " [NOT" (ibuffer-format-qualifier-1 (cdr qualifier)) "]")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
963 (ibuffer-format-qualifier-1 qualifier)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
964
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
965 (defun ibuffer-format-qualifier-1 (qualifier)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
966 (case (car qualifier)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
967 (saved
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
968 (concat " [filter: " (cdr qualifier) "]"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
969 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
970 (concat " [OR" (mapconcat #'ibuffer-format-qualifier
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
971 (cdr qualifier) "") "]"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
972 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
973 (let ((type (assq (car qualifier) ibuffer-filtering-alist)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
974 (unless qualifier
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
975 (error "Ibuffer: bad qualifier %s" qualifier))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
976 (concat " [" (cadr type) ": " (format "%s]" (cdr qualifier)))))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49498
diff changeset
977
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
978
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
979 (defun ibuffer-list-buffer-modes ()
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
980 "Create an alist of buffer modes currently in use.
46930
04575c095d32 (ibuffer-list-buffer-modes): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 46825
diff changeset
981 The list returned will be of the form (\"MODE-NAME\" . MODE-SYMBOL)."
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
982 (let ((bufs (buffer-list))
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
983 (modes)
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
984 (this-mode))
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
985 (while bufs
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
986 (setq this-mode (buffer-local-value 'major-mode (car bufs))
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
987 bufs (cdr bufs))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
988 (add-to-list
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
989 'modes
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
990 `(,(symbol-name this-mode) .
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
991 ,this-mode)))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
992 modes))
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
993
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
994
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
995 ;;; Extra operation definitions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
996
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
997 ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext")
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
998 (define-ibuffer-filter mode
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
999 "Toggle current view to buffers with major mode QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1000 (:description "major mode"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1001 :reader
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1002 (intern
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1003 (completing-read "Filter by major mode: " obarray
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1004 #'(lambda (e)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1005 (string-match "-mode$"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1006 (symbol-name e)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1007 t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1008 (let ((buf (ibuffer-current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1009 (if (and buf (buffer-live-p buf))
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1010 (symbol-name (buffer-local-value 'major-mode buf))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1011 "")))))
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1012 (eq qualifier (buffer-local-value 'major-mode buf)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1013
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1014 ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext")
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1015 (define-ibuffer-filter used-mode
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1016 "Toggle current view to buffers with major mode QUALIFIER.
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1017 Called interactively, this function allows selection of modes
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1018 currently used by buffers."
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1019 (:description "major mode in use"
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1020 :reader
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1021 (intern
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1022 (completing-read "Filter by major mode: "
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1023 (ibuffer-list-buffer-modes)
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1024 nil
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1025 t
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1026 (let ((buf (ibuffer-current-buffer)))
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1027 (if (and buf (buffer-live-p buf))
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1028 (symbol-name (buffer-local-value
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1029 'major-mode buf))
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1030 "")))))
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1031 (eq qualifier (buffer-local-value 'major-mode buf)))
46825
f43392bbb789 (ibuffer-list-buffer-modes): New.
Colin Walters <walters@gnu.org>
parents: 45269
diff changeset
1032
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1033 ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext")
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1034 (define-ibuffer-filter name
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1035 "Toggle current view to buffers with name matching QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1036 (:description "buffer name"
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
1037 :reader (read-from-minibuffer "Filter by name (regexp): "))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1038 (string-match qualifier (buffer-name buf)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1039
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1040 ;;;###autoload (autoload 'ibuffer-filter-by-filename "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1041 (define-ibuffer-filter filename
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1042 "Toggle current view to buffers with filename matching QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1043 (:description "filename"
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
1044 :reader (read-from-minibuffer "Filter by filename (regexp): "))
97397
4c5ef9f11950 (ibuffer-define-filter filename): Use plain old `buffer-file-name'
John Paul Wallington <jpw@pobox.com>
parents: 96955
diff changeset
1045 (ibuffer-awhen (buffer-local-value 'buffer-file-name buf)
4c5ef9f11950 (ibuffer-define-filter filename): Use plain old `buffer-file-name'
John Paul Wallington <jpw@pobox.com>
parents: 96955
diff changeset
1046 (string-match qualifier it)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1047
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1048 ;;;###autoload (autoload 'ibuffer-filter-by-size-gt "ibuf-ext")
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1049 (define-ibuffer-filter size-gt
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1050 "Toggle current view to buffers with size greater than QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1051 (:description "size greater than"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1052 :reader
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1053 (string-to-number (read-from-minibuffer "Filter by size greater than: ")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1054 (> (with-current-buffer buf (buffer-size))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1055 qualifier))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1056
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1057 ;;;###autoload (autoload 'ibuffer-filter-by-size-lt "ibuf-ext")
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1058 (define-ibuffer-filter size-lt
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1059 "Toggle current view to buffers with size less than QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1060 (:description "size less than"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1061 :reader
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1062 (string-to-number (read-from-minibuffer "Filter by size less than: ")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1063 (< (with-current-buffer buf (buffer-size))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1064 qualifier))
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
1065
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1066 ;;;###autoload (autoload 'ibuffer-filter-by-content "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1067 (define-ibuffer-filter content
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1068 "Toggle current view to buffers whose contents match QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1069 (:description "content"
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
1070 :reader (read-from-minibuffer "Filter by content (regexp): "))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1071 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1072 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1073 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1074 (re-search-forward qualifier nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1075
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1076 ;;;###autoload (autoload 'ibuffer-filter-by-predicate "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1077 (define-ibuffer-filter predicate
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1078 "Toggle current view to buffers for which QUALIFIER returns non-nil."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1079 (:description "predicate"
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
1080 :reader (read-minibuffer "Filter by predicate (form): "))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1081 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1082 (eval qualifier)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1083
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1084 ;;; Sorting
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1085
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1086 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1087 (defun ibuffer-toggle-sorting-mode ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1088 "Toggle the current sorting mode.
43379
3fce95e542b1 (ibuffer-toggle-sorting-mode): Make it work. Patch from John Paul
Colin Walters <walters@gnu.org>
parents: 43102
diff changeset
1089 Default sorting modes are:
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1090 Recency - the last time the buffer was viewed
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1091 Name - the name of the buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1092 Major Mode - the name of the major mode of the buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1093 Size - the size of the buffer"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1094 (interactive)
43379
3fce95e542b1 (ibuffer-toggle-sorting-mode): Make it work. Patch from John Paul
Colin Walters <walters@gnu.org>
parents: 43102
diff changeset
1095 (let ((modes (mapcar 'car ibuffer-sorting-functions-alist)))
3fce95e542b1 (ibuffer-toggle-sorting-mode): Make it work. Patch from John Paul
Colin Walters <walters@gnu.org>
parents: 43102
diff changeset
1096 (add-to-list 'modes 'recency)
3fce95e542b1 (ibuffer-toggle-sorting-mode): Make it work. Patch from John Paul
Colin Walters <walters@gnu.org>
parents: 43102
diff changeset
1097 (setq modes (sort modes 'string-lessp))
44020
784c6f7e7ed3 (ibuffer-toggle-sorting-mode): Remove `find-if' so we don't require
Colin Walters <walters@gnu.org>
parents: 43769
diff changeset
1098 (let ((next (or (car-safe (cdr-safe (memq ibuffer-sorting-mode modes)))
43379
3fce95e542b1 (ibuffer-toggle-sorting-mode): Make it work. Patch from John Paul
Colin Walters <walters@gnu.org>
parents: 43102
diff changeset
1099 (car modes))))
3fce95e542b1 (ibuffer-toggle-sorting-mode): Make it work. Patch from John Paul
Colin Walters <walters@gnu.org>
parents: 43102
diff changeset
1100 (setq ibuffer-sorting-mode next)
3fce95e542b1 (ibuffer-toggle-sorting-mode): Make it work. Patch from John Paul
Colin Walters <walters@gnu.org>
parents: 43102
diff changeset
1101 (message "Sorting by %s" next)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1102 (ibuffer-redisplay t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1103
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1104 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1105 (defun ibuffer-invert-sorting ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1106 "Toggle whether or not sorting is in reverse order."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1107 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1108 (setq ibuffer-sorting-reversep (not ibuffer-sorting-reversep))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1109 (message "Sorting order %s"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1110 (if ibuffer-sorting-reversep
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1111 "reversed"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1112 "normal"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1113 (ibuffer-redisplay t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1114
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1115 ;;;###autoload (autoload 'ibuffer-do-sort-by-major-mode "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1116 (define-ibuffer-sorter major-mode
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1117 "Sort the buffers by major modes.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1118 Ordering is lexicographic."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1119 (:description "major mode")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1120 (string-lessp (downcase
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1121 (symbol-name (buffer-local-value 'major-mode (car a))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1122 (downcase
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1123 (symbol-name (buffer-local-value 'major-mode (car b))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1124
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1125 ;;;###autoload (autoload 'ibuffer-do-sort-by-mode-name "ibuf-ext")
43567
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1126 (define-ibuffer-sorter mode-name
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1127 "Sort the buffers by their mode name.
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1128 Ordering is lexicographic."
44186
9ea4e6199d1c (sorter mode-name): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44020
diff changeset
1129 (:description "major mode name")
43567
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1130 (string-lessp (downcase
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1131 (with-current-buffer
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1132 (car a)
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1133 (format-mode-line mode-name)))
43567
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1134 (downcase
44020
784c6f7e7ed3 (ibuffer-toggle-sorting-mode): Remove `find-if' so we don't require
Colin Walters <walters@gnu.org>
parents: 43769
diff changeset
1135 (with-current-buffer
784c6f7e7ed3 (ibuffer-toggle-sorting-mode): Remove `find-if' so we don't require
Colin Walters <walters@gnu.org>
parents: 43769
diff changeset
1136 (car b)
87543
d8fd4b494f77 * ibuf-ext.el (mode-name sorter, ibuffer-mark-by-mode-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85590
diff changeset
1137 (format-mode-line mode-name)))))
43567
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1138
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1139 ;;;###autoload (autoload 'ibuffer-do-sort-by-alphabetic "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1140 (define-ibuffer-sorter alphabetic
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1141 "Sort the buffers by their names.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1142 Ordering is lexicographic."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1143 (:description "buffer name")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1144 (string-lessp
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1145 (buffer-name (car a))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1146 (buffer-name (car b))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1147
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1148 ;;;###autoload (autoload 'ibuffer-do-sort-by-size "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1149 (define-ibuffer-sorter size
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1150 "Sort the buffers by their size."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1151 (:description "size")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1152 (< (with-current-buffer (car a)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1153 (buffer-size))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1154 (with-current-buffer (car b)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1155 (buffer-size))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1156
87960
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1157 ;;;###autoload (autoload 'ibuffer-do-sort-by-filename/process "ibuf-ext")
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1158 (define-ibuffer-sorter filename/process
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1159 "Sort the buffers by their file name/process name."
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1160 (:description "file name")
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1161 (string-lessp
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1162 ;; FIXME: For now just compare the file name and the process name
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1163 ;; (if it exists). Is there a better way to do this?
104940
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
1164 (or (buffer-file-name (car a))
87960
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1165 (let ((pr-a (get-buffer-process (car a))))
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1166 (and (processp pr-a) (process-name pr-a))))
104940
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
1167 (or (buffer-file-name (car b))
87960
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1168 (let ((pr-b (get-buffer-process (car b))))
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1169 (and (processp pr-b) (process-name pr-b))))))
4693d30bd9c1 * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87806
diff changeset
1170
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1171 ;;; Functions to emulate bs.el
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1172
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1173 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1174 (defun ibuffer-bs-show ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1175 "Emulate `bs-show' from the bs.el package."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1176 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1177 (ibuffer t "*Ibuffer-bs*" '((filename . ".*")) nil t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1178 (define-key (current-local-map) "a" 'ibuffer-bs-toggle-all))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1179
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1180 (defun ibuffer-bs-toggle-all ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1181 "Emulate `bs-toggle-show-all' from the bs.el package."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1182 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1183 (if ibuffer-filtering-qualifiers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1184 (ibuffer-pop-filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1185 (progn (ibuffer-push-filter '(filename . ".*"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1186 (ibuffer-update nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1187
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1188 ;;; Handy functions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1189
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1190 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1191 (defun ibuffer-add-to-tmp-hide (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1192 "Add REGEXP to `ibuffer-tmp-hide-regexps'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1193 This means that buffers whose name matches REGEXP will not be shown
49722
f90856c1755e (ibuffer-save-with-custom, ibuffer-add-to-tmp-hide)
John Paul Wallington <jpw@pobox.com>
parents: 49588
diff changeset
1194 for this Ibuffer session."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1195 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1196 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1197 (read-from-minibuffer "Never show buffers matching: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1198 (regexp-quote (buffer-name (ibuffer-current-buffer t))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1199 (push regexp ibuffer-tmp-hide-regexps))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1200
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1201 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1202 (defun ibuffer-add-to-tmp-show (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1203 "Add REGEXP to `ibuffer-tmp-show-regexps'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1204 This means that buffers whose name matches REGEXP will always be shown
49722
f90856c1755e (ibuffer-save-with-custom, ibuffer-add-to-tmp-hide)
John Paul Wallington <jpw@pobox.com>
parents: 49588
diff changeset
1205 for this Ibuffer session."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1206 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1207 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1208 (read-from-minibuffer "Always show buffers matching: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1209 (regexp-quote (buffer-name (ibuffer-current-buffer t))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1210 (push regexp ibuffer-tmp-show-regexps))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1211
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1212 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1213 (defun ibuffer-forward-next-marked (&optional count mark direction)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1214 "Move forward by COUNT marked buffers (default 1).
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1215
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1216 If MARK is non-nil, it should be a character denoting the type of mark
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1217 to move by. The default is `ibuffer-marked-char'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1218
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1219 If DIRECTION is non-nil, it should be an integer; negative integers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1220 mean move backwards, non-negative integers mean move forwards."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1221 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1222 (unless count
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1223 (setq count 1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1224 (unless mark
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1225 (setq mark ibuffer-marked-char))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1226 (unless direction
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1227 (setq direction 1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1228 ;; Skip the title
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1229 (ibuffer-forward-line 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1230 (let ((opos (point))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1231 curmark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1232 (ibuffer-forward-line direction)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1233 (while (not (or (= (point) opos)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1234 (eq (setq curmark (ibuffer-current-mark))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1235 mark)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1236 (ibuffer-forward-line direction))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1237 (when (and (= (point) opos)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1238 (not (eq (ibuffer-current-mark) mark)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1239 (error "No buffers with mark %c" mark))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1240
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1241 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1242 (defun ibuffer-backwards-next-marked (&optional count mark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1243 "Move backwards by COUNT marked buffers (default 1).
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1244
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1245 If MARK is non-nil, it should be a character denoting the type of mark
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1246 to move by. The default is `ibuffer-marked-char'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1247 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1248 (ibuffer-forward-next-marked count mark -1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1249
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1250 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1251 (defun ibuffer-do-kill-lines ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1252 "Hide all of the currently marked lines."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1253 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1254 (if (= (ibuffer-count-marked-lines) 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1255 (message "No buffers marked; use 'm' to mark a buffer")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1256 (let ((count
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1257 (ibuffer-map-marked-lines
44573
3e16ea61b8c4 Update callers of `ibuffer-map-lines'.
Colin Walters <walters@gnu.org>
parents: 44190
diff changeset
1258 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1259 'kill))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1260 (message "Killed %s lines" count))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1261
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1262 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1263 (defun ibuffer-jump-to-buffer (name)
55888
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1264 "Move point to the buffer whose name is NAME.
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1265
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1266 If called interactively, prompt for a buffer name and go to the
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1267 corresponding line in the Ibuffer buffer. If said buffer is in a
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1268 hidden group filter, open it.
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1269
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1270 If `ibuffer-jump-offer-only-visible-buffers' is non-nil, only offer
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1271 visible buffers in the completion list. Calling the command with
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
1272 a prefix argument reverses the meaning of that variable."
57648
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1273 (interactive (list
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1274 (let ((only-visible ibuffer-jump-offer-only-visible-buffers))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1275 (when current-prefix-arg
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1276 (setq only-visible (not only-visible)))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1277 (if only-visible
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1278 (let ((table (mapcar #'(lambda (x)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1279 (buffer-name (car x)))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1280 (ibuffer-current-state-list))))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1281 (when (null table)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1282 (error "No buffers!"))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1283 (completing-read "Jump to buffer: "
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1284 table nil t))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1285 (read-buffer "Jump to buffer: " nil t)))))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1286 (when (not (string= "" name))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1287 (let (buf-point)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1288 ;; Blindly search for our buffer: it is very likely that it is
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1289 ;; not in a hidden filter group.
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1290 (ibuffer-map-lines #'(lambda (buf marks)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1291 (when (string= (buffer-name buf) name)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1292 (setq buf-point (point))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1293 nil))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1294 t nil)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1295 (when (and
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1296 (null buf-point)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1297 (not (null ibuffer-hidden-filter-groups)))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1298 ;; We did not find our buffer. It must be in a hidden filter
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1299 ;; group, so go through all hidden filter groups to find it.
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1300 (catch 'found
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1301 (dolist (group ibuffer-hidden-filter-groups)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1302 (ibuffer-jump-to-filter-group group)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1303 (ibuffer-toggle-filter-group)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1304 (ibuffer-map-lines #'(lambda (buf marks)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1305 (when (string= (buffer-name buf) name)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1306 (setq buf-point (point))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1307 nil))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1308 t group)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1309 (if buf-point
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1310 (throw 'found nil)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1311 (ibuffer-toggle-filter-group)))))
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1312 (if (null buf-point)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1313 ;; Still not found even though we expanded all hidden filter
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1314 ;; groups: that must be because it's hidden by predicate:
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1315 ;; we won't bother trying to display it.
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1316 (error "No buffer with name %s" name)
f2e389526e8b (ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
John Paul Wallington <jpw@pobox.com>
parents: 57128
diff changeset
1317 (goto-char buf-point)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1318
96377
45e9e9c42e29 * ibuf-ext.el (diff-sentinel): Declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 96329
diff changeset
1319 (declare-function diff-sentinel "diff" (code))
45e9e9c42e29 * ibuf-ext.el (diff-sentinel): Declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 96329
diff changeset
1320
96329
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1321 (defun ibuffer-diff-buffer-with-file-1 (buffer)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1322 (let ((bufferfile (buffer-local-value 'buffer-file-name buffer))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1323 (tempfile (make-temp-file "buffer-content-")))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1324 (when bufferfile
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1325 (unwind-protect
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1326 (progn
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1327 (with-current-buffer buffer
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1328 (write-region nil nil tempfile nil 'nomessage))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1329 (let* ((old (expand-file-name bufferfile))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1330 (new (expand-file-name tempfile))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1331 (oldtmp (file-local-copy old))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1332 (newtmp (file-local-copy new))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1333 (switches diff-switches)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1334 (command
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1335 (mapconcat
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1336 'identity
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1337 `(,diff-command
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1338 ;; Use explicitly specified switches
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1339 ,@(if (listp switches) switches (list switches))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1340 ,@(if (or old new)
98077
9fe85fbeb8eb (ibuffer-diff-buffer-with-file-1): Shell quote buffer's filename.
John Paul Wallington <jpw@pobox.com>
parents: 97397
diff changeset
1341 (list "-L" (shell-quote-argument old)
96329
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1342 "-L" (shell-quote-argument
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1343 (format "Buffer %s" (buffer-name buffer)))))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1344 ,(shell-quote-argument (or oldtmp old))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1345 ,(shell-quote-argument (or newtmp new)))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1346 " "))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1347 proc)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1348 (let ((inhibit-read-only t))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1349 (insert command "\n")
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1350 (diff-sentinel
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1351 (call-process shell-file-name nil
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1352 (current-buffer) nil
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1353 shell-command-switch command)))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1354 (insert "\n"))))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1355 (sit-for 0)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1356 (when (file-exists-p tempfile)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1357 (delete-file tempfile)))))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1358
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1359 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1360 (defun ibuffer-diff-with-file ()
96329
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1361 "View the differences between marked buffers and their associated files.
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1362 If no buffers are marked, use buffer at point.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1363 This requires the external program \"diff\" to be in your `exec-path'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1364 (interactive)
96329
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1365 (require 'diff)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1366 (let ((marked-bufs (ibuffer-get-marked-buffers)))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1367 (when (null marked-bufs)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1368 (setq marked-bufs (list (ibuffer-current-buffer t))))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1369 (with-current-buffer (get-buffer-create "*Ibuffer Diff*")
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1370 (setq buffer-read-only nil)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1371 (buffer-disable-undo (current-buffer))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1372 (erase-buffer)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1373 (buffer-enable-undo (current-buffer))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1374 (diff-mode)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1375 (dolist (buf marked-bufs)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1376 (unless (buffer-live-p buf)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1377 (error "Buffer %s has been killed" buf))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1378 (ibuffer-diff-buffer-with-file-1 buf))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1379 (setq buffer-read-only t)))
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1380 (switch-to-buffer "*Ibuffer Diff*"))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1381
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1382 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1383 (defun ibuffer-copy-filename-as-kill (&optional arg)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1384 "Copy filenames of marked buffers into the kill ring.
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1385
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1386 The names are separated by a space.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1387 If a buffer has no filename, it is ignored.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1388
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1389 With no prefix arg, use the filename sans its directory of each marked file.
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1390 With a zero prefix arg, use the complete filename of each marked file.
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1391 With \\[universal-argument], use the filename of each marked file relative
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78381
diff changeset
1392 to `ibuffer-default-directory' if non-nil, otherwise `default-directory'.
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1393
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1394 You can then feed the file name(s) to other commands with \\[yank]."
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1395 (interactive "p")
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1396 (if (zerop (ibuffer-count-marked-lines))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1397 (message "No buffers marked; use 'm' to mark a buffer")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1398 (let ((ibuffer-copy-filename-as-kill-result "")
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1399 (type (cond ((zerop arg)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1400 'full)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1401 ((= arg 4)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1402 'relative)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1403 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1404 'name))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1405 (ibuffer-map-marked-lines
44573
3e16ea61b8c4 Update callers of `ibuffer-map-lines'.
Colin Walters <walters@gnu.org>
parents: 44190
diff changeset
1406 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1407 (setq ibuffer-copy-filename-as-kill-result
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1408 (concat ibuffer-copy-filename-as-kill-result
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1409 (let ((name (buffer-file-name buf)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1410 (if name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1411 (case type
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1412 (full
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1413 name)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1414 (relative
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1415 (file-relative-name
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1416 name (or ibuffer-default-directory
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1417 default-directory)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1418 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1419 (file-name-nondirectory name)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1420 ""))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1421 " "))))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1422 (kill-new ibuffer-copy-filename-as-kill-result))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1423
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
1424 (defun ibuffer-mark-on-buffer (func &optional ibuffer-mark-on-buffer-mark group)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1425 (let ((count
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1426 (ibuffer-map-lines
44573
3e16ea61b8c4 Update callers of `ibuffer-map-lines'.
Colin Walters <walters@gnu.org>
parents: 44190
diff changeset
1427 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1428 (when (funcall func buf)
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
1429 (ibuffer-set-mark-1 (or ibuffer-mark-on-buffer-mark
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
1430 ibuffer-marked-char))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
1431 t))
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
1432 nil
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
1433 group)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1434 (ibuffer-redisplay t)
96329
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1435 (unless (eq ibuffer-mark-on-buffer-mark ?\s)
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1436 (message "Marked %s buffers" count))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1437
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1438 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1439 (defun ibuffer-mark-by-name-regexp (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1440 "Mark all buffers whose name matches REGEXP."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1441 (interactive "sMark by name (regexp): ")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1442 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1443 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1444 (string-match regexp (buffer-name buf)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1445
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1446 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1447 (defun ibuffer-mark-by-mode-regexp (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1448 "Mark all buffers whose major mode matches REGEXP."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1449 (interactive "sMark by major mode (regexp): ")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1450 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1451 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1452 (with-current-buffer buf
87790
d4459bad23ea (ibuffer-auto-update-changed, ibuffer-auto-mode): Use derived-mode-p.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
1453 (string-match regexp (format-mode-line mode-name nil nil buf))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1454
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1455 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1456 (defun ibuffer-mark-by-file-name-regexp (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1457 "Mark all buffers whose file name matches REGEXP."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1458 (interactive "sMark by file name (regexp): ")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1459 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1460 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1461 (let ((name (or (buffer-file-name buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1462 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1463 (and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1464 (boundp 'dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1465 (stringp dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1466 dired-directory)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1467 (when name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1468 (string-match regexp name))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1469
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1470 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1471 (defun ibuffer-mark-by-mode (mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1472 "Mark all buffers whose major mode equals MODE."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1473 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1474 (list (intern (completing-read "Mark by major mode: " obarray
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1475 #'(lambda (e)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1476 ;; kind of a hack...
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1477 (and (fboundp e)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1478 (string-match "-mode$"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1479 (symbol-name e))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1480 t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1481 (let ((buf (ibuffer-current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1482 (if (and buf (buffer-live-p buf))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1483 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1484 (cons (symbol-name major-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1485 0))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1486 ""))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1487 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1488 #'(lambda (buf)
96329
987e540891e7 (ibuffer-diff-buffer-with-file-1): New function.
John Paul Wallington <jpw@pobox.com>
parents: 94985
diff changeset
1489 (eq (buffer-local-value 'major-mode buf) mode))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1490
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1491 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1492 (defun ibuffer-mark-modified-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1493 "Mark all modified buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1494 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1495 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1496 #'(lambda (buf) (buffer-modified-p buf))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1497
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1498 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1499 (defun ibuffer-mark-unsaved-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1500 "Mark all modified buffers that have an associated file."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1501 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1502 (ibuffer-mark-on-buffer
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1503 #'(lambda (buf) (and (buffer-local-value 'buffer-file-name buf)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1504 (buffer-modified-p buf)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1505
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1506 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1507 (defun ibuffer-mark-dissociated-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1508 "Mark all buffers whose associated file does not exist."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1509 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1510 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1511 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1512 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1513 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1514 (and buffer-file-name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1515 (not (file-exists-p buffer-file-name)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1516 (and (eq major-mode 'dired-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1517 (boundp 'dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1518 (stringp dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1519 (not (file-exists-p (file-name-directory dired-directory)))))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1520
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1521 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1522 (defun ibuffer-mark-help-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1523 "Mark buffers like *Help*, *Apropos*, *Info*."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1524 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1525 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1526 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1527 (with-current-buffer buf
44186
9ea4e6199d1c (sorter mode-name): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44020
diff changeset
1528 (memq major-mode ibuffer-help-buffer-modes)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1529
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1530 ;;;###autoload
68581
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1531 (defun ibuffer-mark-compressed-file-buffers ()
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1532 "Mark buffers whose associated file is compressed."
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1533 (interactive)
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1534 (ibuffer-mark-on-buffer
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1535 #'(lambda (buf)
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1536 (with-current-buffer buf
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1537 (and buffer-file-name
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1538 (string-match ibuffer-compressed-file-name-regexp
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1539 buffer-file-name))))))
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1540
0a74d0792db2 (ibuffer-mark-compressed-file-buffers): New command.
John Paul Wallington <jpw@pobox.com>
parents: 67408
diff changeset
1541 ;;;###autoload
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1542 (defun ibuffer-mark-old-buffers ()
78381
d6c34660c23b Docstring fix
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 78236
diff changeset
1543 "Mark buffers which have not been viewed in `ibuffer-old-time' hours."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1544 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1545 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1546 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1547 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1548 ;; hacked from midnight.el
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1549 (when buffer-display-time
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1550 (let* ((tm (current-time))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1551 (now (+ (* (float (ash 1 16)) (car tm))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1552 (float (cadr tm)) (* 0.0000001 (caddr tm))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1553 (then (+ (* (float (ash 1 16))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1554 (car buffer-display-time))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1555 (float (cadr buffer-display-time))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1556 (* 0.0000001 (caddr buffer-display-time)))))
43490
a08f4763cba4 (ibuffer-old-time): Change to hours.
Colin Walters <walters@gnu.org>
parents: 43379
diff changeset
1557 (> (- now then) (* 60 60 ibuffer-old-time))))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1558
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1559 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1560 (defun ibuffer-mark-special-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1561 "Mark all buffers whose name begins and ends with '*'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1562 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1563 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1564 #'(lambda (buf) (string-match "^\\*.+\\*$"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1565 (buffer-name buf)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1566
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1567 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1568 (defun ibuffer-mark-read-only-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1569 "Mark all read-only buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1570 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1571 (ibuffer-mark-on-buffer
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1572 #'(lambda (buf) (buffer-local-value 'buffer-read-only buf))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1573
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1574 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1575 (defun ibuffer-mark-dired-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1576 "Mark all `dired' buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1577 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1578 (ibuffer-mark-on-buffer
94985
78ec9a87d0e5 (ibuffer-interactive-filter-by-mode)
John Paul Wallington <jpw@pobox.com>
parents: 94906
diff changeset
1579 #'(lambda (buf) (eq (buffer-local-value 'major-mode buf) 'dired-mode))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1580
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1581 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1582 (defun ibuffer-do-occur (regexp &optional nlines)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1583 "View lines which match REGEXP in all marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1584 Optional argument NLINES says how many lines of context to display: it
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1585 defaults to one."
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
1586 (interactive (occur-read-primary-args))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1587 (if (or (not (integerp nlines))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1588 (< nlines 0))
45212
580bcb04cd4f (ibuffer-do-occur): Default to 0 context lines.
Colin Walters <walters@gnu.org>
parents: 45162
diff changeset
1589 (setq nlines 0))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1590 (when (zerop (ibuffer-count-marked-lines))
43567
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1591 (ibuffer-set-mark ibuffer-marked-char))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1592 (let ((ibuffer-do-occur-bufs nil))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1593 ;; Accumulate a list of marked buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1594 (ibuffer-map-marked-lines
44573
3e16ea61b8c4 Update callers of `ibuffer-map-lines'.
Colin Walters <walters@gnu.org>
parents: 44190
diff changeset
1595 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1596 (push buf ibuffer-do-occur-bufs)))
44795
b614094753a1 (ibuffer-depropertize-string): Delete.
Colin Walters <walters@gnu.org>
parents: 44573
diff changeset
1597 (occur-1 regexp nlines ibuffer-do-occur-bufs)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1598
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1599 (provide 'ibuf-ext)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1600
104940
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
1601 ;; Local Variables:
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
1602 ;; generated-autoload-file: "ibuffer.el"
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
1603 ;; End:
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
1604
87790
d4459bad23ea (ibuffer-auto-update-changed, ibuffer-auto-mode): Use derived-mode-p.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
1605 ;; arch-tag: 9af21953-deda-4c30-b76d-f81d9128e76d
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1606 ;;; ibuf-ext.el ends here