annotate lisp/ibuf-ext.el @ 110410:f2e111723c3a

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