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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1 ;;; ibuf-ext.el --- extensions for ibuffer
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2
104940
a674a112e64f Put autoloads in ibuffer.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 102531
diff changeset
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 104940
diff changeset
4 ;; 2009, 2010 Free Software Foundation, Inc.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
5
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
6 ;; Author: Colin Walters <walters@verbum.org>
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
7 ;; Maintainer: John Paul Wallington <jpw@gnu.org>
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
8 ;; Created: 2 Dec 2001
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
9 ;; Keywords: buffer, convenience
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
10
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
11 ;; This file is part of GNU Emacs.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
12
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
16 ;; (at your option) any later version.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
17
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
21 ;; GNU General Public License for more details.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
22
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94503
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
25
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
27
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
28 ;; These functions should be automatically loaded when called, but you
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
29 ;; can explicity (require 'ibuf-ext) in your ~/.emacs to have them
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
30 ;; preloaded.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
31
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
32 ;;; Code:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
33
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
34 (require 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
35
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
36 (eval-when-compile
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
37 (require 'ibuf-macs)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
38 (require 'cl))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
39
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
40 ;;; Utility functions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
41 (defun ibuffer-delete-alist (key alist)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
42 "Delete all entries in ALIST that have a key equal to KEY."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
43 (let (entry)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
44 (while (setq entry (assoc key alist))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
45 (setq alist (delete entry alist)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
46 alist))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
47
48778
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
48 ;; borrowed from Gnus
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
49 (defun ibuffer-remove-duplicates (list)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
50 "Return a copy of LIST with duplicate elements removed."
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
51 (let ((new nil)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
52 (tail list))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
53 (while tail
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
54 (or (member (car tail) new)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
55 (setq new (cons (car tail) new)))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
56 (setq tail (cdr tail)))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
57 (nreverse new)))
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
58
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
59 (defun ibuffer-split-list (ibuffer-split-list-fn ibuffer-split-list-elts)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
60 (let ((hip-crowd nil)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
61 (lamers nil))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
62 (dolist (ibuffer-split-list-elt ibuffer-split-list-elts)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
63 (if (funcall ibuffer-split-list-fn ibuffer-split-list-elt)
44829
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
64 (push ibuffer-split-list-elt hip-crowd)
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
65 (push ibuffer-split-list-elt lamers)))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
66 ;; Too bad Emacs Lisp doesn't have multiple values.
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
67 (list (nreverse hip-crowd) (nreverse lamers))))
771798f69a5c (toplevel): Remove byte-compile-dynamic. Try to set up autoloads manually.
Colin Walters <walters@gnu.org>
parents: 44795
diff changeset
68
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
69 (defcustom ibuffer-never-show-predicates nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
70 "A list of predicates (a regexp or function) for buffers not to display.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
71 If a regexp, then it will be matched against the buffer's name.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
72 If a function, it will be called with the buffer as an argument, and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
73 should return non-nil if this buffer should not be shown."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
74 :type '(repeat (choice regexp function))
69452
b47862df4a6b (ibuffer-never-show-predicates): Add `require' keyword; require
John Paul Wallington <jpw@pobox.com>
parents: 68581
diff changeset
75 :require 'ibuf-ext
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
76 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
77
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
78 (defcustom ibuffer-always-show-predicates nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
79 "A list of predicates (a regexp or function) for buffers to always display.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
80 If a regexp, then it will be matched against the buffer's name.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
81 If a function, it will be called with the buffer as an argument, and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
82 should return non-nil if this buffer should be shown.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
83 Note that buffers matching one of these predicates will be shown
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
84 regardless of any active filters in this buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
85 :type '(repeat (choice regexp function))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
86 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
87
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
88 (defvar ibuffer-tmp-hide-regexps nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
89 "A list of regexps which should match buffer names to not show.")
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49498
diff changeset
90
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
91 (defvar ibuffer-tmp-show-regexps nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
92 "A list of regexps which should match buffer names to always show.")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
93
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
94 (defvar ibuffer-auto-buffers-changed nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
95
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
96 (defcustom ibuffer-saved-filters '(("gnus"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
97 ((or (mode . message-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
98 (mode . mail-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
101 (mode . gnus-article-mode))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
102 ("programming"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
103 ((or (mode . emacs-lisp-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
104 (mode . cperl-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
107 (mode . idl-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
108 (mode . lisp-mode)))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49498
diff changeset
109
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
110 "An alist of filter qualifiers to switch between.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
111
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
112 This variable should look like ((\"STRING\" QUALIFIERS)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
113 (\"STRING\" QUALIFIERS) ...), where
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
114 QUALIFIERS is a list of the same form as
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
115 `ibuffer-filtering-qualifiers'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
116 See also the variables `ibuffer-filtering-qualifiers',
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
117 `ibuffer-filtering-alist', and the functions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
118 `ibuffer-switch-to-saved-filters', `ibuffer-save-filters'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
119 :type '(repeat sexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
120 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
121
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
122 (defvar ibuffer-filtering-qualifiers nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
123 "A list like (SYMBOL . QUALIFIER) which filters the current buffer list.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
124 See also `ibuffer-filtering-alist'.")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
125
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
126 ;; This is now frobbed by `define-ibuffer-filter'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
127 (defvar ibuffer-filtering-alist nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
128 "An alist of (SYMBOL DESCRIPTION FUNCTION) which describes a filter.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
129
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
130 You most likely do not want to modify this variable directly; see
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
131 `define-ibuffer-filter'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
132
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
133 SYMBOL is the symbolic name of the filter. DESCRIPTION is used when
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
134 displaying information to the user. FUNCTION is given a buffer and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
135 the value of the qualifier, and returns non-nil if and only if the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
136 buffer should be displayed.")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
192 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
193
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
194 (defcustom ibuffer-save-with-custom t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
198 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
199 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
200
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
201 (defun ibuffer-ext-visible-p (buf all &optional ibuffer-buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
202 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
203 (ibuffer-buf-matches-predicates buf ibuffer-tmp-show-regexps)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
204 (and (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
205 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
206 (ibuffer-buf-matches-predicates buf ibuffer-tmp-hide-regexps)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
207 (ibuffer-buf-matches-predicates buf ibuffer-never-show-predicates)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
208 (or all
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
209 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
210 (ibuffer-buf-matches-predicates buf ibuffer-maybe-show-predicates)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
213 (not (eq ibuffer-buf buf))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
214 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
215 (ibuffer-included-in-filters-p buf ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
216 (ibuffer-buf-matches-predicates buf ibuffer-always-show-predicates)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
236
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
237 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
238 (defun ibuffer-mouse-filter-by-mode (event)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
239 "Enable or disable filtering by the major mode chosen via mouse."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
240 (interactive "e")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
241 (ibuffer-interactive-filter-by-mode event))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
242
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
243 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
244 (defun ibuffer-interactive-filter-by-mode (event-or-point)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
245 "Enable or disable filtering by the major mode at point."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
246 (interactive "d")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
249 (goto-char event-or-point))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
250 (let ((buf (ibuffer-current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
251 (if (assq 'mode ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
252 (setq ibuffer-filtering-qualifiers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
255 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
319 (define-ibuffer-op shell-command-pipe (command)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
320 "Pipe the contents of each marked buffer to shell command COMMAND."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
321 (:interactive "sPipe to shell command: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
322 :opstring "Shell command executed on"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
323 :modifier-p nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
324 (shell-command-on-region
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
325 (point-min) (point-max) command
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
326 (get-buffer-create "* ibuffer-shell-output*")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
329 (define-ibuffer-op shell-command-pipe-replace (command)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
330 "Replace the contents of marked buffers with output of pipe to COMMAND."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
331 (:interactive "sPipe to shell command (replace): "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
332 :opstring "Buffer contents replaced in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
333 :active-opstring "replace buffer contents in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
334 :dangerous t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
335 :modifier-p t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
336 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
337 (shell-command-on-region (point-min) (point-max)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
338 command nil t)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
341 (define-ibuffer-op shell-command-file (command)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
342 "Run shell command COMMAND separately on files of marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
343 (:interactive "sShell command on buffer's file: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
344 :opstring "Shell command executed on"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
345 :modifier-p nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
346 (shell-command (concat command " "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
347 (shell-quote-argument
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
348 (if buffer-file-name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
349 buffer-file-name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
350 (make-temp-file
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
354 (define-ibuffer-op eval (form)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
355 "Evaluate FORM in each of the buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
356 Does not display the buffer during evaluation. See
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
363 :opstring "evaluated in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
364 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
365 (eval form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
368 (define-ibuffer-op view-and-eval (form)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
369 "Evaluate FORM while displaying each of the marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
376 :opstring "evaluated in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
377 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
378 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
379 (let ((ibuffer-buf (current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
380 (unwind-protect
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
381 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
382 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
383 (eval form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
384 (switch-to-buffer ibuffer-buf))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
387 (define-ibuffer-op rename-uniquely ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
388 "Rename marked buffers as with `rename-uniquely'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
389 (:opstring "renamed"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
390 :modifier-p t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
391 (rename-uniquely))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
394 (define-ibuffer-op revert ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
395 "Revert marked buffers as with `revert-buffer'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
396 (:dangerous t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
397 :opstring "reverted"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
398 :active-opstring "revert"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
399 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
400 (revert-buffer t t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
421 (define-ibuffer-op replace-regexp (from-str to-str)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
422 "Perform a `replace-regexp' in marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
423 (:interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
424 (let* ((from-str (read-from-minibuffer "Replace regexp: "))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
425 (to-str (read-from-minibuffer (concat "Replace " from-str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
426 " with: "))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
427 (list from-str to-str))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
428 :opstring "replaced in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
429 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
430 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
431 (save-window-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
432 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
433 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
434 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
435 (let ((case-fold-search ibuffer-case-fold-search))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
436 (while (re-search-forward from-str nil t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
437 (replace-match to-str))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
438 t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
441 (define-ibuffer-op query-replace (&rest args)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
442 "Perform a `query-replace' in marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
445 :opstring "replaced in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
446 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
447 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
448 (save-window-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
449 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
450 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
451 (let ((case-fold-search ibuffer-case-fold-search))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
452 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
453 (apply #'query-replace args)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
454 t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
457 (define-ibuffer-op query-replace-regexp (&rest args)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
458 "Perform a `query-replace-regexp' in marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
461 :opstring "replaced in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
462 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
463 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
464 (save-window-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
465 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
466 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
467 (let ((case-fold-search ibuffer-case-fold-search))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
468 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
469 (apply #'query-replace-regexp args)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
470 t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
473 (define-ibuffer-op print ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
474 "Print marked buffers as with `print-buffer'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
475 (:opstring "printed"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
476 :modifier-p nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
477 (print-buffer))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
478
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
479 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
480 (defun ibuffer-included-in-filters-p (buf filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
481 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
482 (memq nil ;; a filter will return nil if it failed
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
483 (mapcar
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
484 ;; filter should be like (TYPE . QUALIFIER), or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
485 ;; (or (TYPE . QUALIFIER) (TYPE . QUALIFIER) ...)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
486 #'(lambda (qual)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
487 (ibuffer-included-in-filter-p buf qual))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
488 filters))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
489
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
490 (defun ibuffer-included-in-filter-p (buf filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
491 (if (eq (car filter) 'not)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
492 (not (ibuffer-included-in-filter-p-1 buf (cdr filter)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
493 (ibuffer-included-in-filter-p-1 buf filter)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
494
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
495 (defun ibuffer-included-in-filter-p-1 (buf filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
496 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
497 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
498 (case (car filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
499 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
500 (memq t (mapcar #'(lambda (x)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
501 (ibuffer-included-in-filter-p buf x))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
502 (cdr filter))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
503 (saved
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
504 (let ((data
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
505 (assoc (cdr filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
506 ibuffer-saved-filters)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
507 (unless data
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
508 (ibuffer-filter-disable)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
509 (error "Unknown saved filter %s" (cdr filter)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
510 (ibuffer-included-in-filters-p buf (cadr data))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
511 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
512 (let ((filterdat (assq (car filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
513 ibuffer-filtering-alist)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
514 ;; filterdat should be like (TYPE DESCRIPTION FUNC)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
515 ;; just a sanity check
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
516 (unless filterdat
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
517 (ibuffer-filter-disable)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
518 (error "Undefined filter %s" (car filter)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
519 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
520 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
521 (funcall (caddr filterdat)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
522 buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
523 (cdr filter))))))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
26dfa5308c26 M-v correctness.
Deepak Goel <deego@gnufans.org>
parents: 100908
diff changeset
539 (ibuffer-split-list (lambda (bufmark)
26dfa5308c26 M-v correctness.
Deepak Goel <deego@gnufans.org>
parents: 100908
diff changeset
540 (ibuffer-included-in-filters-p (car bufmark)
26dfa5308c26 M-v correctness.
Deepak Goel <deego@gnufans.org>
parents: 100908
diff changeset
541 filterset))
26dfa5308c26 M-v correctness.
Deepak Goel <deego@gnufans.org>
parents: 100908
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
771 (defun ibuffer-filter-disable ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
772 "Disable all filters currently in effect in this buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
773 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
779
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
780 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
781 (defun ibuffer-pop-filter ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
782 "Remove the top filter in this buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
783 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
784 (when (null ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
785 (error "No filters in effect"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
791
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
792 (defun ibuffer-push-filter (qualifier)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
793 "Add QUALIFIER to `ibuffer-filtering-qualifiers'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
794 (push qualifier ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
795
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
796 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
797 (defun ibuffer-decompose-filter ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
798 "Separate the top compound filter (OR, NOT, or SAVED) in this buffer.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
799
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
800 This means that the topmost filter on the filtering stack, which must
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
801 be a complex filter like (OR [name: foo] [mode: bar-mode]), will be
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
802 turned into two separate filters [name: foo] and [mode: bar-mode]."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
803 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
806 (let ((lim (pop ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
807 (case (car lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
808 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
809 (setq ibuffer-filtering-qualifiers (append
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
810 (cdr lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
811 ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
812 (saved
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
813 (let ((data
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
814 (assoc (cdr lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
815 ibuffer-saved-filters)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
816 (unless data
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
817 (ibuffer-filter-disable)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
818 (error "Unknown saved filter %s" (cdr lim)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
819 (setq ibuffer-filtering-qualifiers (append
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
820 (cadr data)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
821 ibuffer-filtering-qualifiers))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
822 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
823 (push (cdr lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
824 ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
825 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
826 (error "Filter type %s is not compound" (car lim)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
827 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
828
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
829 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
830 (defun ibuffer-exchange-filters ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
831 "Exchange the top two filters on the stack in this buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
832 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
833 (when (< (length ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
834 2)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
835 (error "Need two filters to exchange"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
836 (let ((first (pop ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
837 (second (pop ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
838 (push first ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
839 (push second ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
840 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
841
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
842 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
843 (defun ibuffer-negate-filter ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
844 "Negate the sense of the top filter in the current buffer."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
845 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
846 (when (null ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
847 (error "No filters in effect"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
848 (let ((lim (pop ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
849 (push (if (eq (car lim) 'not)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
850 (cdr lim)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
851 (cons 'not lim))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
852 ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
853 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
854
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
855 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
856 (defun ibuffer-or-filter (&optional reverse)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
857 "Replace the top two filters in this buffer with their logical OR.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
858 If optional argument REVERSE is non-nil, instead break the top OR
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
859 filter into parts."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
860 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
861 (if reverse
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
862 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
863 (when (or (null ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
864 (not (eq 'or (caar ibuffer-filtering-qualifiers))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
865 (error "Top filter is not an OR"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
869 (when (< (length ibuffer-filtering-qualifiers) 2)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
870 (error "Need two filters to OR"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
871 ;; If the second filter is an OR, just add to it.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
872 (let ((first (pop ibuffer-filtering-qualifiers))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
873 (second (pop ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
877 (push (list 'or first second)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
878 ibuffer-filtering-qualifiers))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
879 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
880
44855
663ebf8868d8 (ibuffer-filtering-groups): Renamed to
Colin Walters <walters@gnu.org>
parents: 44829
diff changeset
881 (defun ibuffer-maybe-save-stuff ()
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
882 (when ibuffer-save-with-custom
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
883 (if (fboundp 'customize-save-variable)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
884 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
889 (message "Not saved permanently: Customize not available"))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
890
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
891 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
892 (defun ibuffer-save-filters (name filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
893 "Save FILTERS in this buffer with name NAME in `ibuffer-saved-filters'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
894 Interactively, prompt for NAME, and use the current filters."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
895 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
896 (if (null ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
897 (error "No filters currently in effect")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
898 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
899 (read-from-minibuffer "Save current filters as: ")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
900 ibuffer-filtering-qualifiers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
901 (ibuffer-aif (assoc name ibuffer-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
905
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
906 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
907 (defun ibuffer-delete-saved-filters (name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
908 "Delete saved filters with NAME from `ibuffer-saved-filters'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
909 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
910 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
911 (if (null ibuffer-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
912 (error "No saved filters")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
913 (completing-read "Delete saved filters: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
914 ibuffer-saved-filters nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
915 (setq ibuffer-saved-filters
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
918 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
919
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
920 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
921 (defun ibuffer-add-saved-filters (name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
922 "Add saved filters from `ibuffer-saved-filters' to this buffer's filters."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
923 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
924 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
925 (if (null ibuffer-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
926 (error "No saved filters")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
927 (completing-read "Add saved filters: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
928 ibuffer-saved-filters nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
929 (push (cons 'saved name) ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
930 (ibuffer-update nil t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
931
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
932 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
935 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
936 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
937 (if (null ibuffer-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
938 (error "No saved filters")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
939 (completing-read "Switch to saved filters: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
940 ibuffer-saved-filters nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
941 (setq ibuffer-filtering-qualifiers (list (cons 'saved name)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
951 (defun ibuffer-format-qualifier (qualifier)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
952 (if (eq (car-safe qualifier) 'not)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
953 (concat " [NOT" (ibuffer-format-qualifier-1 (cdr qualifier)) "]")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
954 (ibuffer-format-qualifier-1 qualifier)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
955
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
956 (defun ibuffer-format-qualifier-1 (qualifier)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
957 (case (car qualifier)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
958 (saved
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
959 (concat " [filter: " (cdr qualifier) "]"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
960 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
961 (concat " [OR" (mapconcat #'ibuffer-format-qualifier
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
962 (cdr qualifier) "") "]"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
963 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
964 (let ((type (assq (car qualifier) ibuffer-filtering-alist)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
965 (unless qualifier
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
966 (error "Ibuffer: bad qualifier %s" qualifier))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
986 ;;; Extra operation definitions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
990 "Toggle current view to buffers with major mode QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
991 (:description "major mode"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
992 :reader
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
993 (intern
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
994 (completing-read "Filter by major mode: " obarray
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
995 #'(lambda (e)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
996 (string-match "-mode$"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
997 (symbol-name e)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
998 t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
999 (let ((buf (ibuffer-current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1026 "Toggle current view to buffers with name matching QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1029 (string-match qualifier (buffer-name buf)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1032 (define-ibuffer-filter filename
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1033 "Toggle current view to buffers with filename matching QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1041 "Toggle current view to buffers with size greater than QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1042 (:description "size greater than"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1043 :reader
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1044 (string-to-number (read-from-minibuffer "Filter by size greater than: ")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1045 (> (with-current-buffer buf (buffer-size))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1046 qualifier))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1047
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1048 ;;;###autoload (autoload 'ibuffer-filter-by-size-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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1050 "Toggle current view to buffers with size less than QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1051 (:description "size less than"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1052 :reader
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1053 (string-to-number (read-from-minibuffer "Filter by size less than: ")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1054 (< (with-current-buffer buf (buffer-size))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1055 qualifier))
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1058 (define-ibuffer-filter content
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1059 "Toggle current view to buffers whose contents match QUALIFIER."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1062 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1063 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1064 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1065 (re-search-forward qualifier nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1068 (define-ibuffer-filter predicate
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1069 "Toggle current view to buffers for which QUALIFIER returns non-nil."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1072 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1073 (eval qualifier)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1074
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1075 ;;; Sorting
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1076
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1077 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1078 (defun ibuffer-toggle-sorting-mode ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1081 Recency - the last time the buffer was viewed
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1082 Name - the name of the buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1083 Major Mode - the name of the major mode of the buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1084 Size - the size of the buffer"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1093 (ibuffer-redisplay t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1094
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1095 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1096 (defun ibuffer-invert-sorting ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1097 "Toggle whether or not sorting is in reverse order."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1098 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1099 (setq ibuffer-sorting-reversep (not ibuffer-sorting-reversep))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1100 (message "Sorting order %s"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1101 (if ibuffer-sorting-reversep
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1102 "reversed"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1103 "normal"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1104 (ibuffer-redisplay t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1107 (define-ibuffer-sorter major-mode
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1108 "Sort the buffers by major modes.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1109 Ordering is lexicographic."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1110 (:description "major mode")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1117 (define-ibuffer-sorter mode-name
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1118 "Sort the buffers by their mode name.
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
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
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
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
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
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
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1131 (define-ibuffer-sorter alphabetic
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1132 "Sort the buffers by their names.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1133 Ordering is lexicographic."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1134 (:description "buffer name")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1135 (string-lessp
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1136 (buffer-name (car a))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1137 (buffer-name (car b))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1138
65896
7cc413612d3d * ibuf-ext.el (ibuffer-do-shell-command-pipe)
Romain Francoise <romain@orebokech.com>
parents: 65180
diff changeset
1139 ;;;###autoload (autoload 'ibuffer-do-sort-by-size "ibuf-ext")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1140 (define-ibuffer-sorter size
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1141 "Sort the buffers by their size."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1142 (:description "size")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1143 (< (with-current-buffer (car a)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1144 (buffer-size))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1145 (with-current-buffer (car b)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1146 (buffer-size))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1162 ;;; Functions to emulate bs.el
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1163
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1164 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1165 (defun ibuffer-bs-show ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1166 "Emulate `bs-show' from the bs.el package."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1167 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1168 (ibuffer t "*Ibuffer-bs*" '((filename . ".*")) nil t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1169 (define-key (current-local-map) "a" 'ibuffer-bs-toggle-all))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1170
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1171 (defun ibuffer-bs-toggle-all ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1172 "Emulate `bs-toggle-show-all' from the bs.el package."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1173 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1174 (if ibuffer-filtering-qualifiers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1175 (ibuffer-pop-filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1176 (progn (ibuffer-push-filter '(filename . ".*"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1177 (ibuffer-update nil t))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1178
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1179 ;;; Handy functions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1180
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1181 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1182 (defun ibuffer-add-to-tmp-hide (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1183 "Add REGEXP to `ibuffer-tmp-hide-regexps'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1186 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1187 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1188 (read-from-minibuffer "Never show buffers matching: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1189 (regexp-quote (buffer-name (ibuffer-current-buffer t))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1190 (push regexp ibuffer-tmp-hide-regexps))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1191
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1192 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1193 (defun ibuffer-add-to-tmp-show (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1194 "Add REGEXP to `ibuffer-tmp-show-regexps'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1197 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1198 (list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1199 (read-from-minibuffer "Always show buffers matching: "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1200 (regexp-quote (buffer-name (ibuffer-current-buffer t))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1201 (push regexp ibuffer-tmp-show-regexps))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1202
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1203 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1204 (defun ibuffer-forward-next-marked (&optional count mark direction)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1205 "Move forward by COUNT marked buffers (default 1).
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1206
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1207 If MARK is non-nil, it should be a character denoting the type of mark
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1208 to move by. The default is `ibuffer-marked-char'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1209
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1210 If DIRECTION is non-nil, it should be an integer; negative integers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1211 mean move backwards, non-negative integers mean move forwards."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1212 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1213 (unless count
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1214 (setq count 1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1215 (unless mark
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1216 (setq mark ibuffer-marked-char))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1217 (unless direction
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1218 (setq direction 1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1219 ;; Skip the title
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1220 (ibuffer-forward-line 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1221 (let ((opos (point))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1222 curmark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1223 (ibuffer-forward-line direction)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1224 (while (not (or (= (point) opos)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1225 (eq (setq curmark (ibuffer-current-mark))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1226 mark)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1227 (ibuffer-forward-line direction))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1228 (when (and (= (point) opos)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1229 (not (eq (ibuffer-current-mark) mark)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1230 (error "No buffers with mark %c" mark))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1231
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1232 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1233 (defun ibuffer-backwards-next-marked (&optional count mark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1234 "Move backwards by COUNT marked buffers (default 1).
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1235
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1236 If MARK is non-nil, it should be a character denoting the type of mark
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1237 to move by. The default is `ibuffer-marked-char'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1238 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1239 (ibuffer-forward-next-marked count mark -1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1240
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1241 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1242 (defun ibuffer-do-kill-lines ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1243 "Hide all of the currently marked lines."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1244 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1245 (if (= (ibuffer-count-marked-lines) 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1246 (message "No buffers marked; use 'm' to mark a buffer")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1247 (let ((count
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1250 'kill))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1251 (message "Killed %s lines" count))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1252
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1253 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1350 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1354 This requires the external program \"diff\" to be in your `exec-path'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1372
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1373 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1374 (defun ibuffer-copy-filename-as-kill (&optional arg)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1377 The names are separated by a space.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1378 If a buffer has no filename, it is ignored.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1388 (message "No buffers marked; use 'm' to mark a buffer")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1394 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1395 'name))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1398 (setq ibuffer-copy-filename-as-kill-result
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1399 (concat ibuffer-copy-filename-as-kill-result
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1400 (let ((name (buffer-file-name buf)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1401 (if name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1402 (case type
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1403 (full
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1409 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1410 (file-name-nondirectory name)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1411 ""))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1416 (let ((count
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1428
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1429 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1430 (defun ibuffer-mark-by-name-regexp (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1431 "Mark all buffers whose name matches REGEXP."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1432 (interactive "sMark by name (regexp): ")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1433 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1434 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1435 (string-match regexp (buffer-name buf)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1436
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1437 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1438 (defun ibuffer-mark-by-mode-regexp (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1439 "Mark all buffers whose major mode matches REGEXP."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1440 (interactive "sMark by major mode (regexp): ")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1441 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1442 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1445
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1446 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1447 (defun ibuffer-mark-by-file-name-regexp (regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1448 "Mark all buffers whose file name matches REGEXP."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1449 (interactive "sMark by file name (regexp): ")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1450 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1451 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1452 (let ((name (or (buffer-file-name buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1453 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1454 (and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1455 (boundp 'dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1456 (stringp dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1457 dired-directory)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1458 (when name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1459 (string-match regexp name))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1460
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1461 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1462 (defun ibuffer-mark-by-mode (mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1463 "Mark all buffers whose major mode equals MODE."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1464 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1465 (list (intern (completing-read "Mark by major mode: " obarray
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1466 #'(lambda (e)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1467 ;; kind of a hack...
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1468 (and (fboundp e)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1469 (string-match "-mode$"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1470 (symbol-name e))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1471 t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1472 (let ((buf (ibuffer-current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1473 (if (and buf (buffer-live-p buf))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1474 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1475 (cons (symbol-name major-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1476 0))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1477 ""))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1478 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1481
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1482 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1483 (defun ibuffer-mark-modified-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1484 "Mark all modified buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1485 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1486 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1487 #'(lambda (buf) (buffer-modified-p buf))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1488
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1489 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1490 (defun ibuffer-mark-unsaved-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1491 "Mark all modified buffers that have an associated file."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1492 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1495 (buffer-modified-p buf)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1496
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1497 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1498 (defun ibuffer-mark-dissociated-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1499 "Mark all buffers whose associated file does not exist."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1500 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1501 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1502 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1503 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1504 (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1505 (and buffer-file-name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1506 (not (file-exists-p buffer-file-name)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1507 (and (eq major-mode 'dired-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1508 (boundp 'dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1509 (stringp dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1510 (not (file-exists-p (file-name-directory dired-directory)))))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1511
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1512 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1513 (defun ibuffer-mark-help-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1514 "Mark buffers like *Help*, *Apropos*, *Info*."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1515 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1516 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1517 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1520
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1521 ;;;###autoload
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1535 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1536 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1537 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1538 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1539 ;; hacked from midnight.el
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1540 (when buffer-display-time
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1541 (let* ((tm (current-time))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1542 (now (+ (* (float (ash 1 16)) (car tm))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1543 (float (cadr tm)) (* 0.0000001 (caddr tm))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1544 (then (+ (* (float (ash 1 16))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1545 (car buffer-display-time))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1546 (float (cadr buffer-display-time))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1549
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1550 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1551 (defun ibuffer-mark-special-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1552 "Mark all buffers whose name begins and ends with '*'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1553 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1554 (ibuffer-mark-on-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1555 #'(lambda (buf) (string-match "^\\*.+\\*$"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1556 (buffer-name buf)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1557
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1558 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1559 (defun ibuffer-mark-read-only-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1560 "Mark all read-only buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1561 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1564
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1565 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1566 (defun ibuffer-mark-dired-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1567 "Mark all `dired' buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1568 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1571
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1572 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1573 (defun ibuffer-do-occur (regexp &optional nlines)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1574 "View lines which match REGEXP in all marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1575 Optional argument NLINES says how many lines of context to display: it
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1578 (if (or (not (integerp nlines))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1581 (when (zerop (ibuffer-count-marked-lines))
43567
26cb2bd7070b (sorter mode-name): New.
Colin Walters <walters@gnu.org>
parents: 43490
diff changeset
1582 (ibuffer-set-mark ibuffer-marked-char))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1583 (let ((ibuffer-do-occur-bufs nil))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1584 ;; Accumulate a list of marked buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1589
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1590 (provide 'ibuf-ext)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
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
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1597 ;;; ibuf-ext.el ends here