annotate lisp/ibuf-ext.el @ 57315:0d912ccf6554

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