annotate lisp/ibuf-ext.el @ 72863:526dc1f36b09

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