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