annotate lisp/ibuffer.el @ 56905:661d52db56de

(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'. (isearch-toggle-case-fold): Set `isearch-success' to `t'. (isearch-message-prefix): Add "pending" for isearch-adjusted. (isearch-other-meta-char): Restore isearch-point unconditionally. (isearch-query-replace): Add new arg `regexp-flag' and use it. Set point to start of match if region is not active in transient mark mode (to include the current match to region boundaries). Push the search string to `query-replace-from-history-variable'. Add prompt "Query replace regexp" for isearch-regexp. Add region beginning/end as last arguments of `perform-replace.' (isearch-query-replace-regexp): Replace code by the call to `isearch-query-replace' with arg `t'.
author Juri Linkov <juri@jurta.org>
date Fri, 03 Sep 2004 20:32:57 +0000
parents 50923476a86f
children 94a1ed353a39 3fd4a5c21153
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1 ;;; ibuffer.el --- operate on buffers like dired
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2
56337
a8f4413c6e97 Restore updated copyright info that was inadvertently removed.
John Paul Wallington <jpw@pobox.com>
parents: 55888
diff changeset
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
4
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
5 ;; Author: Colin Walters <walters@verbum.org>
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
6 ;; Maintainer: John Paul Wallington <jpw@gnu.org>
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
7 ;; Created: 8 Sep 2000
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
8 ;; Keywords: buffer, convenience
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
9
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
10 ;; This file is part of GNU Emacs.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
11
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
12 ;; This program is free software; you can redistribute it and/or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
13 ;; modify it under the terms of the GNU General Public License as
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
14 ;; published by the Free Software Foundation; either version 2, or (at
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
15 ;; your option) any later version.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
16
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
17 ;; This program is distributed in the hope that it will be useful, but
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
20 ;; General Public License for more details.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
21
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
23 ;; along with this program ; see the file COPYING. If not, write to
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
24 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
26
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
28
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
29 ;; ibuffer.el is an advanced replacement for the `buffer-menu' which
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
30 ;; is normally distributed with Emacs. Its interface is intended to
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
31 ;; be analogous to that of Dired.
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 (eval-when-compile
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
36 (require 'cl)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
37 (require 'ibuf-macs)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
38 (require 'dired))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
39
49723
8e685f71f253 (toplevel): Don't require `font-lock';
John Paul Wallington <jpw@pobox.com>
parents: 49588
diff changeset
40 (require 'font-core)
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
41
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
42 (defgroup ibuffer nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
43 "An advanced replacement for `buffer-menu'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
44
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
45 Ibuffer allows you to operate on buffers in a manner much like Dired.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
46 Operations include sorting, marking by regular expression, and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
47 the ability to filter the displayed buffers by various criteria."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
48 :group 'convenience)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
49
52325
5206a4b09125 (ibuffer-formats): Make name and size columns wider.
John Paul Wallington <jpw@pobox.com>
parents: 51741
diff changeset
50 (defcustom ibuffer-formats '((mark modified read-only " " (name 18 18 :left :elide)
5206a4b09125 (ibuffer-formats): Make name and size columns wider.
John Paul Wallington <jpw@pobox.com>
parents: 51741
diff changeset
51 " " (size 9 -1 :right)
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
52 " " (mode 16 16 :right :elide) " " filename-and-process)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
53 (mark " " (name 16 -1) " " filename))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
54 "A list of ways to display buffer lines.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
55
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
56 With Ibuffer, you are not limited to displaying just certain
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
57 attributes of a buffer such as size, name, and mode in a particular
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
58 order. Through this variable, you can completely customize and
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
59 control the appearance of an Ibuffer buffer. See also
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
60 `define-ibuffer-column', which allows you to define your own columns
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
61 for display.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
62
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
63 This variable has the form
42873
e4be1ae52e5c (toplevel, ibuffer-default-directory): Doc fixes.
Colin Walters <walters@gnu.org>
parents: 42871
diff changeset
64 ((COLUMN COLUMN ...) (COLUMN COLUMN ...) ...)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
65 Each element in `ibuffer-formats' should be a list containing COLUMN
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
66 specifiers. A COLUMN can be any of the following:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
67
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
68 SYMBOL - A symbol naming the column. Predefined columns are:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
69 mark modified read-only name size mode process filename
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
70 When you define your own columns using `define-ibuffer-column', just
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
71 use their name like the predefined columns here. This entry can
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
72 also be a function of two arguments, which should return a string.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
73 The first argument is the buffer object, and the second is the mark
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
74 on that buffer.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
75 or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
76 \"STRING\" - A literal string to display.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
77 or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
78 (SYMBOL MIN-SIZE MAX-SIZE &optional ALIGN ELIDE) - SYMBOL is a
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
79 symbol naming the column, and MIN-SIZE and MAX-SIZE are integers (or
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
80 functions of no arguments returning an integer) which constrict the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
81 size of a column. If MAX-SIZE is -1, there is no upper bound. The
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
82 default values are 0 and -1, respectively. If MIN-SIZE is negative,
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
83 use the end of the string. The optional element ALIGN describes the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
84 alignment of the column; it can be :left, :center or :right. The
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
85 optional element ELIDE describes whether or not to elide the column
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
86 if it is too long; valid values are :elide and nil. The default is
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
87 nil (don't elide).
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
88
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
89 Some example of valid entries in `ibuffer-formats', with
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
90 description (also, feel free to try them out, and experiment with your
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
91 own!):
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
92
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
93 (mark \" \" name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
94 This format just displays the current mark (if any) and the name of
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
95 the buffer, separated by a space.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
96 (mark modified read-only \" \" (name 16 16 :left) \" \" (size 6 -1 :right))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
97 This format displays the current mark (if any), its modification and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
98 read-only status, as well as the name of the buffer and its size. In
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
99 this format, the name is restricted to 16 characters (longer names
43104
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
100 will be truncated, and shorter names will be padded with spaces), and
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
101 the name is also aligned to the left. The size of the buffer will
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
102 be padded with spaces up to a minimum of six characters, but there is
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
103 no upper limit on its size. The size will also be aligned to the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
104 right.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
105
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
106 Thus, if you wanted to use these two formats, add
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
107
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
108 (setq ibuffer-formats '((mark \" \" name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
109 (mark modified read-only
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
110 (name 16 16 :left) (size 6 -1 :right))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
111
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
112 to your ~/.emacs file.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
113
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
114 Using \\[ibuffer-switch-format], you can rotate the display between
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
115 the specified formats in the list."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
116 :type '(repeat sexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
117 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
118
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
119 (defcustom ibuffer-always-compile-formats (featurep 'bytecomp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
120 "If non-nil, then use the byte-compiler to optimize `ibuffer-formats'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
121 This will increase the redisplay speed, at the cost of loading the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
122 elisp byte-compiler."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
123 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
124 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
125
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
126 (defcustom ibuffer-fontification-alist
46770
06873cff56e8 (ibuffer-fontification-alist): Use `font-lock-constant-face' instead
Colin Walters <walters@gnu.org>
parents: 46682
diff changeset
127 `((10 buffer-read-only font-lock-constant-face)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
128 (15 (string-match "^*" (buffer-name)) font-lock-keyword-face)
47147
bee830f164b7 (ibuffer-update): Revert expansion of `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 47114
diff changeset
129 (20 (and (string-match "^ " (buffer-name))
bee830f164b7 (ibuffer-update): Revert expansion of `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 47114
diff changeset
130 (null buffer-file-name))
bee830f164b7 (ibuffer-update): Revert expansion of `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 47114
diff changeset
131 italic)
44185
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
132 (25 (memq major-mode ibuffer-help-buffer-modes) font-lock-comment-face)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
133 (30 (eq major-mode 'dired-mode) font-lock-function-name-face))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
134 "An alist describing how to fontify buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
135 Each element should be of the form (PRIORITY FORM FACE), where
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
136 PRIORITY is an integer, FORM is an arbitrary form to evaluate in the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
137 buffer, and FACE is the face to use for fontification. If the FORM
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
138 evaluates to non-nil, then FACE will be put on the buffer name. The
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
139 element with the highest PRIORITY takes precedence.
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
140
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
141 If you change this variable, you must kill the Ibuffer buffer and
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
142 recreate it for the change to take effect."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
143 :type '(repeat
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
144 (list (integer :tag "Priority")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
145 (sexp :tag "Test Form")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
146 face))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
147 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
148
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
149 (defcustom ibuffer-use-other-window nil
48343
35889dbb9b84 (ibuffer-use-other-window, ibuffer-use-header-line)
John Paul Wallington <jpw@pobox.com>
parents: 48058
diff changeset
150 "If non-nil, display Ibuffer in another window by default."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
151 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
152 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
153
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
154 (defcustom ibuffer-default-shrink-to-minimum-size nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
155 "If non-nil, minimize the size of the Ibuffer window by default."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
156 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
157 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
158 (defvar ibuffer-shrink-to-minimum-size nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
159
51074
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
160 (defcustom ibuffer-display-summary t
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
161 "If non-nil, summarize Ibuffer columns."
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
162 :type 'boolean
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
163 :group 'ibuffer)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
164
43382
6d5695dd7639 (ibuffer-truncate-lines): New option.
Colin Walters <walters@gnu.org>
parents: 43249
diff changeset
165 (defcustom ibuffer-truncate-lines t
6d5695dd7639 (ibuffer-truncate-lines): New option.
Colin Walters <walters@gnu.org>
parents: 43249
diff changeset
166 "If non-nil, do not display continuation lines."
6d5695dd7639 (ibuffer-truncate-lines): New option.
Colin Walters <walters@gnu.org>
parents: 43249
diff changeset
167 :type 'boolean
6d5695dd7639 (ibuffer-truncate-lines): New option.
Colin Walters <walters@gnu.org>
parents: 43249
diff changeset
168 :group 'ibuffer)
6d5695dd7639 (ibuffer-truncate-lines): New option.
Colin Walters <walters@gnu.org>
parents: 43249
diff changeset
169
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
170 (defcustom ibuffer-case-fold-search case-fold-search
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
171 "If non-nil, ignore case when searching."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
172 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
173 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
174
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
175 (defcustom ibuffer-default-sorting-mode 'recency
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
176 "The criteria by which to sort the buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
177
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
178 Note that this variable is local to each Ibuffer buffer. Thus, you
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
179 can have multiple Ibuffer buffers open, each with a different sorted
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
180 view of the buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
181 :type '(choice (const :tag "Last view time" :value recency)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
182 (const :tag "Lexicographic" :value alphabetic)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
183 (const :tag "Buffer size" :value size)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
184 (const :tag "Major mode" :value major-mode))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
185 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
186 (defvar ibuffer-sorting-mode nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
187
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
188 (defcustom ibuffer-default-sorting-reversep nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
189 "If non-nil, reverse the default sorting order."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
190 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
191 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
192 (defvar ibuffer-sorting-reversep nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
193
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
194 (defcustom ibuffer-elide-long-columns nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
195 "If non-nil, then elide column entries which exceed their max length.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
196 This variable is deprecated; use the :elide argument of
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
197 `ibuffer-formats' to elide just certain columns."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
198 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
199 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
200
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
201 (defcustom ibuffer-eliding-string "..."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
202 "The string to use for eliding long columns."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
203 :type 'string
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
204 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
205
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
206 (defcustom ibuffer-maybe-show-predicates `(,(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
207 (and (string-match "^ " (buffer-name buf))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
208 (null buffer-file-name))))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
209 "A list of predicates for buffers to display conditionally.
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
210
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
211 A predicate can be a regexp or a function.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
212 If a regexp, then it will be matched against the buffer's name.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
213 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
214 should return non-nil if this buffer should be shown.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
215
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
216 Viewing of buffers hidden because of these predicates is enabled by
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
217 giving a non-nil prefix argument to `ibuffer-update'. Note that this
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
218 specialized filtering occurs before real filtering."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
219 :type '(repeat (choice regexp function))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
220 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
221
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
222 (defvar ibuffer-current-format nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
223
45839
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
224 (defcustom ibuffer-movement-cycle t
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
225 "If non-nil, then forward and backwards movement commands cycle."
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
226 :type 'boolean
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
227 :group 'ibuffer)
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
228
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
229 (defcustom ibuffer-modified-char ?*
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
230 "The character to display for modified buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
231 :type 'character
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
232 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
233
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
234 (defcustom ibuffer-read-only-char ?%
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
235 "The character to display for read-only buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
236 :type 'character
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
237 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
238
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
239 (defcustom ibuffer-marked-char ?>
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
240 "The character to display for marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
241 :type 'character
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
242 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
243
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
244 (defcustom ibuffer-deletion-char ?D
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
245 "The character to display for buffers marked for deletion."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
246 :type 'character
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
247 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
248
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
249 (defcustom ibuffer-expert nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
250 "If non-nil, don't ask for confirmation of \"dangerous\" operations."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
251 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
252 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
253
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
254 (defcustom ibuffer-view-ibuffer nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
255 "If non-nil, display the current Ibuffer buffer itself.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
256 Note that this has a drawback - the data about the current Ibuffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
257 buffer will most likely be inaccurate. This includes modification
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
258 state, size, etc."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
259 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
260 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
261
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
262 (defcustom ibuffer-always-show-last-buffer nil
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
263 "If non-nil, always display the previous buffer.
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
264 This variable takes precedence over filtering, and even
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
265 `ibuffer-never-show-predicates'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
266 :type '(choice (const :tag "Always" :value t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
267 (const :tag "Never" :value nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
268 (const :tag "Always except minibuffer" :value :nomini))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
269 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
270
55888
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 55388
diff changeset
271 (defcustom ibuffer-jump-offer-only-visible-buffers nil
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 55388
diff changeset
272 "If non-nil, only offer buffers visible in the Ibuffer buffer
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 55388
diff changeset
273 in completion lists of the `ibuffer-jump-to-buffer' command."
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 55388
diff changeset
274 :type 'boolean
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 55388
diff changeset
275 :group 'ibuffer)
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 55388
diff changeset
276
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
277 (defcustom ibuffer-use-header-line (boundp 'header-line-format)
48343
35889dbb9b84 (ibuffer-use-other-window, ibuffer-use-header-line)
John Paul Wallington <jpw@pobox.com>
parents: 48058
diff changeset
278 "If non-nil, display a header line containing current filters."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
279 :type 'boolean
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
280 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
281
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
282 (defcustom ibuffer-default-directory nil
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
283 "The default directory to use for a new Ibuffer buffer.
42873
e4be1ae52e5c (toplevel, ibuffer-default-directory): Doc fixes.
Colin Walters <walters@gnu.org>
parents: 42871
diff changeset
284 If nil, inherit the directory of the buffer in which `ibuffer' was
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
285 called. Otherwise, this variable should be a string naming a
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
286 directory, like `default-directory'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
287 :type '(choice (const :tag "Inherit" :value nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
288 string)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
289 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
290
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
291 (defcustom ibuffer-help-buffer-modes
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
292 '(help-mode apropos-mode Info-mode Info-edit-mode)
44185
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
293 "List of \"Help\" major modes."
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
294 :type '(repeat function)
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
295 :group 'ibuffer)
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
296
46772
9bc85060942d (ibuffer-hooks): Rename to `ibuffer-hook'; Add defvaralias for
Colin Walters <walters@gnu.org>
parents: 46770
diff changeset
297 (defcustom ibuffer-hook nil
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
298 "Hook run when `ibuffer' is called."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
299 :type 'hook
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
300 :group 'ibuffer)
46772
9bc85060942d (ibuffer-hooks): Rename to `ibuffer-hook'; Add defvaralias for
Colin Walters <walters@gnu.org>
parents: 46770
diff changeset
301 (defvaralias 'ibuffer-hooks 'ibuffer-hook)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
302
46772
9bc85060942d (ibuffer-hooks): Rename to `ibuffer-hook'; Add defvaralias for
Colin Walters <walters@gnu.org>
parents: 46770
diff changeset
303 (defcustom ibuffer-mode-hook nil
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
304 "Hook run upon entry into `ibuffer-mode'."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
305 :type 'hook
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
306 :group 'ibuffer)
46772
9bc85060942d (ibuffer-hooks): Rename to `ibuffer-hook'; Add defvaralias for
Colin Walters <walters@gnu.org>
parents: 46770
diff changeset
307 (defvaralias 'ibuffer-mode-hooks 'ibuffer-mode-hook)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
308
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
309 (defcustom ibuffer-load-hook nil
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
310 "Hook run when Ibuffer is loaded."
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
311 :type 'hook
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
312 :group 'ibuffer)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
313
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
314 (defcustom ibuffer-marked-face 'font-lock-warning-face
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
315 "Face used for displaying marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
316 :type 'face
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
317 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
318
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
319 (defcustom ibuffer-deletion-face 'font-lock-type-face
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
320 "Face used for displaying buffers marked for deletion."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
321 :type 'face
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
322 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
323
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
324 (defcustom ibuffer-title-face 'font-lock-type-face
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
325 "Face used for the title string."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
326 :type 'face
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
327 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
328
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
329 (defcustom ibuffer-filter-group-name-face 'bold
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
330 "Face used for displaying filtering group names."
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
331 :type 'face
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
332 :group 'ibuffer)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
333
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
334 (defcustom ibuffer-directory-abbrev-alist nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
335 "An alist of file name abbreviations like `directory-abbrev-alist'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
336 :type '(repeat (cons :format "%v"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
337 :value ("" . "")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
338 (regexp :tag "From")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
339 (regexp :tag "To")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
340 :group 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
341
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
342
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
343 (defvar ibuffer-mode-map nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
344 (defvar ibuffer-mode-operate-map nil)
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
345 (defvar ibuffer-mode-groups-popup nil)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
346 (unless ibuffer-mode-map
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
347 (let ((map (make-sparse-keymap))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
348 (operate-map (make-sparse-keymap "Operate"))
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
349 (groups-map (make-sparse-keymap "Filter Groups")))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
350 (define-key map (kbd "0") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
351 (define-key map (kbd "1") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
352 (define-key map (kbd "2") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
353 (define-key map (kbd "3") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
354 (define-key map (kbd "4") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
355 (define-key map (kbd "5") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
356 (define-key map (kbd "6") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
357 (define-key map (kbd "7") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
358 (define-key map (kbd "8") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
359 (define-key map (kbd "9") 'digit-argument)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
360
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
361 (define-key map (kbd "m") 'ibuffer-mark-forward)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
362 (define-key map (kbd "t") 'ibuffer-toggle-marks)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
363 (define-key map (kbd "u") 'ibuffer-unmark-forward)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
364 (define-key map (kbd "=") 'ibuffer-diff-with-file)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
365 (define-key map (kbd "j") 'ibuffer-jump-to-buffer)
55888
3d233a8d8d1f 2004-06-02 Romain Francoise <romain@orebokech.com>
John Paul Wallington <jpw@pobox.com>
parents: 55388
diff changeset
366 (define-key map (kbd "M-g") 'ibuffer-jump-to-buffer)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
367 (define-key map (kbd "DEL") 'ibuffer-unmark-backward)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
368 (define-key map (kbd "M-DEL") 'ibuffer-unmark-all)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
369 (define-key map (kbd "* *") 'ibuffer-unmark-all)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
370 (define-key map (kbd "* M") 'ibuffer-mark-by-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
371 (define-key map (kbd "* m") 'ibuffer-mark-modified-buffers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
372 (define-key map (kbd "* u") 'ibuffer-mark-unsaved-buffers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
373 (define-key map (kbd "* s") 'ibuffer-mark-special-buffers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
374 (define-key map (kbd "* r") 'ibuffer-mark-read-only-buffers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
375 (define-key map (kbd "* /") 'ibuffer-mark-dired-buffers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
376 (define-key map (kbd "* e") 'ibuffer-mark-dissociated-buffers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
377 (define-key map (kbd "* h") 'ibuffer-mark-help-buffers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
378 (define-key map (kbd ".") 'ibuffer-mark-old-buffers)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
379
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
380 (define-key map (kbd "d") 'ibuffer-mark-for-delete)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
381 (define-key map (kbd "C-d") 'ibuffer-mark-for-delete-backwards)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
382 (define-key map (kbd "k") 'ibuffer-mark-for-delete)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
383 (define-key map (kbd "x") 'ibuffer-do-kill-on-deletion-marks)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
384
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
385 ;; immediate operations
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
386 (define-key map (kbd "n") 'ibuffer-forward-line)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
387 (define-key map (kbd "<down>") 'ibuffer-forward-line)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
388 (define-key map (kbd "SPC") 'forward-line)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
389 (define-key map (kbd "p") 'ibuffer-backward-line)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
390 (define-key map (kbd "<up>") 'ibuffer-backward-line)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
391 (define-key map (kbd "M-}") 'ibuffer-forward-next-marked)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
392 (define-key map (kbd "M-{") 'ibuffer-backwards-next-marked)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
393 (define-key map (kbd "l") 'ibuffer-redisplay)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
394 (define-key map (kbd "g") 'ibuffer-update)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
395 (define-key map "`" 'ibuffer-switch-format)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
396 (define-key map "-" 'ibuffer-add-to-tmp-hide)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
397 (define-key map "+" 'ibuffer-add-to-tmp-show)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
398 (define-key map "b" 'ibuffer-bury-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
399 (define-key map (kbd ",") 'ibuffer-toggle-sorting-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
400 (define-key map (kbd "s i") 'ibuffer-invert-sorting)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
401 (define-key map (kbd "s a") 'ibuffer-do-sort-by-alphabetic)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
402 (define-key map (kbd "s v") 'ibuffer-do-sort-by-recency)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
403 (define-key map (kbd "s s") 'ibuffer-do-sort-by-size)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
404 (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
405
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
406 (define-key map (kbd "/ m") 'ibuffer-filter-by-mode)
46824
86fa1b4393a2 (ibuffer-mode-map): Added ibuffer-filter-by-used-mode.
Colin Walters <walters@gnu.org>
parents: 46772
diff changeset
407 (define-key map (kbd "/ M") 'ibuffer-filter-by-used-mode)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
408 (define-key map (kbd "/ n") 'ibuffer-filter-by-name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
409 (define-key map (kbd "/ c") 'ibuffer-filter-by-content)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
410 (define-key map (kbd "/ e") 'ibuffer-filter-by-predicate)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
411 (define-key map (kbd "/ f") 'ibuffer-filter-by-filename)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
412 (define-key map (kbd "/ >") 'ibuffer-filter-by-size-gt)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
413 (define-key map (kbd "/ <") 'ibuffer-filter-by-size-lt)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
414 (define-key map (kbd "/ r") 'ibuffer-switch-to-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
415 (define-key map (kbd "/ a") 'ibuffer-add-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
416 (define-key map (kbd "/ x") 'ibuffer-delete-saved-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
417 (define-key map (kbd "/ d") 'ibuffer-decompose-filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
418 (define-key map (kbd "/ s") 'ibuffer-save-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
419 (define-key map (kbd "/ p") 'ibuffer-pop-filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
420 (define-key map (kbd "/ !") 'ibuffer-negate-filter)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
421 (define-key map (kbd "/ t") 'ibuffer-exchange-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
422 (define-key map (kbd "/ TAB") 'ibuffer-exchange-filters)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
423 (define-key map (kbd "/ o") 'ibuffer-or-filter)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
424 (define-key map (kbd "/ g") 'ibuffer-filters-to-filter-group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
425 (define-key map (kbd "/ P") 'ibuffer-pop-filter-group)
45161
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
426 (define-key map (kbd "/ D") 'ibuffer-decompose-filter-group)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
427 (define-key map (kbd "/ /") 'ibuffer-filter-disable)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
428
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
429 (define-key map (kbd "M-n") 'ibuffer-forward-filter-group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
430 (define-key map (kbd "<right>") 'ibuffer-forward-filter-group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
431 (define-key map (kbd "M-p") 'ibuffer-backward-filter-group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
432 (define-key map (kbd "<left>") 'ibuffer-backward-filter-group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
433 (define-key map (kbd "M-j") 'ibuffer-jump-to-filter-group)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
434 (define-key map (kbd "C-k") 'ibuffer-kill-line)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
435 (define-key map (kbd "C-y") 'ibuffer-yank)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
436 (define-key map (kbd "/ S") 'ibuffer-save-filter-groups)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
437 (define-key map (kbd "/ R") 'ibuffer-switch-to-saved-filter-groups)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
438 (define-key map (kbd "/ X") 'ibuffer-delete-saved-filter-groups)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
439 (define-key map (kbd "/ \\") 'ibuffer-clear-filter-groups)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
440
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
441 (define-key map (kbd "q") 'ibuffer-quit)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
442 (define-key map (kbd "h") 'describe-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
443 (define-key map (kbd "?") 'describe-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
444
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
445 (define-key map (kbd "% n") 'ibuffer-mark-by-name-regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
446 (define-key map (kbd "% m") 'ibuffer-mark-by-mode-regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
447 (define-key map (kbd "% f") 'ibuffer-mark-by-file-name-regexp)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
448
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
449 (define-key map (kbd "C-t") 'ibuffer-visit-tags-table)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
450
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
451 (define-key map (kbd "|") 'ibuffer-do-shell-command-pipe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
452 (define-key map (kbd "!") 'ibuffer-do-shell-command-file)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
453 (define-key map (kbd "~") 'ibuffer-do-toggle-modified)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
454 ;; marked operations
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
455 (define-key map (kbd "A") 'ibuffer-do-view)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
456 (define-key map (kbd "D") 'ibuffer-do-delete)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
457 (define-key map (kbd "E") 'ibuffer-do-eval)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
458 (define-key map (kbd "F") 'ibuffer-do-shell-command-file)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
459 (define-key map (kbd "I") 'ibuffer-do-query-replace-regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
460 (define-key map (kbd "H") 'ibuffer-do-view-other-frame)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
461 (define-key map (kbd "N") 'ibuffer-do-shell-command-pipe-replace)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
462 (define-key map (kbd "M") 'ibuffer-do-toggle-modified)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
463 (define-key map (kbd "O") 'ibuffer-do-occur)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
464 (define-key map (kbd "P") 'ibuffer-do-print)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
465 (define-key map (kbd "Q") 'ibuffer-do-query-replace)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
466 (define-key map (kbd "R") 'ibuffer-do-rename-uniquely)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
467 (define-key map (kbd "S") 'ibuffer-do-save)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
468 (define-key map (kbd "T") 'ibuffer-do-toggle-read-only)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
469 (define-key map (kbd "U") 'ibuffer-do-replace-regexp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
470 (define-key map (kbd "V") 'ibuffer-do-revert)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
471 (define-key map (kbd "W") 'ibuffer-do-view-and-eval)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
472 (define-key map (kbd "X") 'ibuffer-do-shell-command-pipe)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
473
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
474 (define-key map (kbd "k") 'ibuffer-do-kill-lines)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
475 (define-key map (kbd "w") 'ibuffer-copy-filename-as-kill)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
476
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
477 (define-key map (kbd "RET") 'ibuffer-visit-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
478 (define-key map (kbd "e") 'ibuffer-visit-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
479 (define-key map (kbd "f") 'ibuffer-visit-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
480 (define-key map (kbd "C-x C-f") 'ibuffer-find-file)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
481 (define-key map (kbd "o") 'ibuffer-visit-buffer-other-window)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
482 (define-key map (kbd "C-o") 'ibuffer-visit-buffer-other-window-noselect)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
483 (define-key map (kbd "M-o") 'ibuffer-visit-buffer-1-window)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
484 (define-key map (kbd "v") 'ibuffer-do-view)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
485 (define-key map (kbd "C-x v") 'ibuffer-do-view-horizontally)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
486 (define-key map (kbd "C-c C-a") 'ibuffer-auto-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
487 (define-key map (kbd "C-x 4 RET") 'ibuffer-visit-buffer-other-window)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
488 (define-key map (kbd "C-x 5 RET") 'ibuffer-visit-buffer-other-frame)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
489
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
490 (define-key map [menu-bar view]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
491 (cons "View" (make-sparse-keymap "View")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
492
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
493 (define-key-after map [menu-bar view visit-buffer]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
494 '(menu-item "View this buffer" ibuffer-visit-buffer))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
495 (define-key-after map [menu-bar view visit-buffer-other-window]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
496 '(menu-item "View (other window)" ibuffer-visit-buffer-other-window))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
497 (define-key-after map [menu-bar view visit-buffer-other-frame]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
498 '(menu-item "View (other frame)" ibuffer-visit-buffer-other-frame))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
499 (define-key-after map [menu-bar view ibuffer-update]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
500 '(menu-item "Update" ibuffer-update
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
501 :help "Regenerate the list of buffers"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
502 (define-key-after map [menu-bar view switch-format]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
503 '(menu-item "Switch display format" ibuffer-switch-format
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
504 :help "Toggle between available values of `ibuffer-formats'"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
505
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
506 (define-key-after map [menu-bar view dashes]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
507 '("--"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
508
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
509 (define-key-after map [menu-bar view sort]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
510 (cons "Sort" (make-sparse-keymap "Sort")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
511
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
512 (define-key-after map [menu-bar view sort do-sort-by-major-mode]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
513 '(menu-item "Sort by major mode" ibuffer-do-sort-by-major-mode))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
514 (define-key-after map [menu-bar view sort do-sort-by-size]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
515 '(menu-item "Sort by buffer size" ibuffer-do-sort-by-size))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
516 (define-key-after map [menu-bar view sort do-sort-by-alphabetic]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
517 '(menu-item "Sort lexicographically" ibuffer-do-sort-by-alphabetic
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
518 :help "Sort by the alphabetic order of buffer name"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
519 (define-key-after map [menu-bar view sort do-sort-by-recency]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
520 '(menu-item "Sort by view time" ibuffer-do-sort-by-recency
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
521 :help "Sort by the last time the buffer was displayed"))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
522 (define-key-after map [menu-bar view sort dashes]
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
523 '("--"))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
524 (define-key-after map [menu-bar view sort invert-sorting]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
525 '(menu-item "Reverse sorting order" ibuffer-invert-sorting))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
526 (define-key-after map [menu-bar view sort toggle-sorting-mode]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
527 '(menu-item "Switch sorting mode" ibuffer-toggle-sorting-mode
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
528 :help "Switch between the various sorting criteria"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
529
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
530 (define-key-after map [menu-bar view filter]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
531 (cons "Filter" (make-sparse-keymap "Filter")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
532
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
533 (define-key-after map [menu-bar view filter filter-disable]
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
534 '(menu-item "Disable all filtering" ibuffer-filter-disable
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
535 :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
536 (define-key-after map [menu-bar view filter filter-by-mode]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
537 '(menu-item "Add filter by major mode..." ibuffer-filter-by-mode))
46824
86fa1b4393a2 (ibuffer-mode-map): Added ibuffer-filter-by-used-mode.
Colin Walters <walters@gnu.org>
parents: 46772
diff changeset
538 (define-key-after map [menu-bar view filter filter-by-mode]
86fa1b4393a2 (ibuffer-mode-map): Added ibuffer-filter-by-used-mode.
Colin Walters <walters@gnu.org>
parents: 46772
diff changeset
539 '(menu-item "Add filter by major mode in use..." ibuffer-filter-by-used-mode))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
540 (define-key-after map [menu-bar view filter filter-by-name]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
541 '(menu-item "Add filter by buffer name..." ibuffer-filter-by-name))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
542 (define-key-after map [menu-bar view filter filter-by-filename]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
543 '(menu-item "Add filter by filename..." ibuffer-filter-by-filename))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
544 (define-key-after map [menu-bar view filter filter-by-size-lt]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
545 '(menu-item "Add filter by size less than..." ibuffer-filter-by-size-lt))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
546 (define-key-after map [menu-bar view filter filter-by-size-gt]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
547 '(menu-item "Add filter by size greater than..." ibuffer-filter-by-size-gt))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
548 (define-key-after map [menu-bar view filter filter-by-content]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
549 '(menu-item "Add filter by content (regexp)..." ibuffer-filter-by-content))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
550 (define-key-after map [menu-bar view filter filter-by-predicate]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
551 '(menu-item "Add filter by Lisp predicate..." ibuffer-filter-by-predicate))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
552 (define-key-after map [menu-bar view filter pop-filter]
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
553 '(menu-item "Remove top filter" ibuffer-pop-filter
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
554 :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
555 (define-key-after map [menu-bar view filter or-filter]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
556 '(menu-item "OR top two filters" ibuffer-or-filter
45220
f7c52a0eaf23 Refine previous change.
Colin Walters <walters@gnu.org>
parents: 45213
diff changeset
557 :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers
f7c52a0eaf23 Refine previous change.
Colin Walters <walters@gnu.org>
parents: 45213
diff changeset
558 (cdr ibuffer-filtering-qualifiers))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
559 :help "Create a new filter which is the logical OR of the top two filters"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
560 (define-key-after map [menu-bar view filter negate-filter]
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
561 '(menu-item "Negate top filter" ibuffer-negate-filter
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
562 :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
563 (define-key-after map [menu-bar view filter decompose-filter]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
564 '(menu-item "Decompose top filter" ibuffer-decompose-filter
45220
f7c52a0eaf23 Refine previous change.
Colin Walters <walters@gnu.org>
parents: 45213
diff changeset
565 :enable (and (featurep 'ibuf-ext) (memq (car ibuffer-filtering-qualifiers) '(or saved not)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
566 :help "Break down a complex filter like OR or NOT"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
567 (define-key-after map [menu-bar view filter exchange-filters]
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
568 '(menu-item "Swap top two filters" ibuffer-exchange-filters
45220
f7c52a0eaf23 Refine previous change.
Colin Walters <walters@gnu.org>
parents: 45213
diff changeset
569 :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers
f7c52a0eaf23 Refine previous change.
Colin Walters <walters@gnu.org>
parents: 45213
diff changeset
570 (cdr ibuffer-filtering-qualifiers))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
571 (define-key-after map [menu-bar view filter save-filters]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
572 '(menu-item "Save current filters permanently..." ibuffer-save-filters
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
573 :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
574 :help "Use a mnemnonic name to store current filter stack"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
575 (define-key-after map [menu-bar view filter switch-to-saved-filters]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
576 '(menu-item "Restore permanently saved filters..." ibuffer-switch-to-saved-filters
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
577 :enable (and (featurep 'ibuf-ext) ibuffer-saved-filters)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
578 :help "Replace current filters with a saved stack"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
579 (define-key-after map [menu-bar view filter add-saved-filters]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
580 '(menu-item "Add to permanently saved filters..." ibuffer-add-saved-filters
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
581 :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
582 :help "Include already saved stack with current filters"))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
583 (define-key-after map [menu-bar view filter delete-saved-filters]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
584 '(menu-item "Delete permanently saved filters..."
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
585 ibuffer-delete-saved-filters
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
586 :enable (and (featurep 'ibuf-ext) ibuffer-saved-filters)))
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
587
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
588 ;; Filter groups
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
589
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
590 (define-key-after groups-map [filters-to-filter-group]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
591 '(menu-item "Create filter group from current filters..."
45161
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
592 ibuffer-filters-to-filter-group
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
593 :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
594 (define-key-after groups-map [forward-filter-group]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
595 '(menu-item "Move point to the next filter group"
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
596 ibuffer-forward-filter-group))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
597 (define-key-after groups-map [backward-filter-group]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
598 '(menu-item "Move point to the previous filter group"
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
599 ibuffer-backward-filter-group))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
600 (define-key-after groups-map [jump-to-filter-group]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
601 '(menu-item "Move point to a specific filter group..."
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
602 ibuffer-jump-to-filter-group))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
603 (define-key-after groups-map [kill-filter-group]
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
604 '(menu-item "Kill filter group named..."
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
605 ibuffer-kill-filter-group
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
606 :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
607 (define-key-after groups-map [yank-filter-group]
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
608 '(menu-item "Yank last killed filter group before..."
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
609 ibuffer-yank-filter-group
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
610 :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring)))
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
611 (define-key-after groups-map [pop-filter-group]
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
612 '(menu-item "Remove top filter group"
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
613 ibuffer-pop-filter-group
45161
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
614 :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
615 (define-key-after groups-map [clear-filter-groups]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
616 '(menu-item "Remove all filter groups"
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
617 ibuffer-clear-filter-groups
45161
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
618 :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
619 (define-key-after groups-map [pop-filter-group]
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
620 '(menu-item "Decompose filter group..."
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
621 ibuffer-pop-filter-group
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
622 :help "\"Unmake\" a filter group"
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
623 :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
624 (define-key-after groups-map [save-filter-groups]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
625 '(menu-item "Save current filter groups permanently..."
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
626 ibuffer-save-filter-groups
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
627 :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
628 :help "Use a mnemnonic name to store current filter groups"))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
629 (define-key-after groups-map [switch-to-saved-filter-groups]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
630 '(menu-item "Restore permanently saved filters..."
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
631 ibuffer-switch-to-saved-filter-groups
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
632 :enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
633 :help "Replace current filters with a saved stack"))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
634 (define-key-after groups-map [delete-saved-filter-groups]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
635 '(menu-item "Delete permanently saved filter groups..."
45213
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
636 ibuffer-delete-saved-filter-groups
162082d00c8f (ibuffer-mode-map): Add :enable guards for `ibuffer-filter-disable',
Colin Walters <walters@gnu.org>
parents: 45161
diff changeset
637 :enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups)))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
638 (define-key-after groups-map [set-filter-groups-by-mode]
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
639 '(menu-item "Set current filter groups to filter by mode"
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
640 ibuffer-set-filter-groups-by-mode))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
641
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
642 (define-key-after map [menu-bar view filter-groups]
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
643 (cons "Filter Groups" groups-map))
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
644
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
645 (define-key-after map [menu-bar view dashes2]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
646 '("--"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
647 (define-key-after map [menu-bar view diff-with-file]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
648 '(menu-item "Diff with file" ibuffer-diff-with-file
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
649 :help "View the differences between this buffer and its file"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
650 (define-key-after map [menu-bar view auto-mode]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
651 '(menu-item "Toggle Auto Mode" ibuffer-auto-mode
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
652 :help "Attempt to automatically update the Ibuffer buffer"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
653 (define-key-after map [menu-bar view customize]
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
654 '(menu-item "Customize Ibuffer" ibuffer-customize
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
655 :help "Use Custom to customize Ibuffer"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
656
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
657 (define-key-after map [menu-bar mark]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
658 (cons "Mark" (make-sparse-keymap "Mark")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
659
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
660 (define-key-after map [menu-bar mark toggle-marks]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
661 '(menu-item "Toggle marks" ibuffer-toggle-marks
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
662 :help "Unmark marked buffers, and mark unmarked buffers"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
663 (define-key-after map [menu-bar mark mark-forward]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
664 '(menu-item "Mark" ibuffer-mark-forward
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
665 :help "Mark the buffer at point"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
666 (define-key-after map [menu-bar mark unmark-forward]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
667 '(menu-item "Unmark" ibuffer-unmark-forward
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
668 :help "Unmark the buffer at point"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
669 (define-key-after map [menu-bar mark mark-by-mode]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
670 '(menu-item "Mark by mode..." ibuffer-mark-by-mode
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
671 :help "Mark all buffers in a particular major mode"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
672 (define-key-after map [menu-bar mark mark-modified-buffers]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
673 '(menu-item "Mark modified buffers" ibuffer-mark-modified-buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
674 :help "Mark all buffers which have been modified"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
675 (define-key-after map [menu-bar mark mark-unsaved-buffers]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
676 '(menu-item "Mark unsaved buffers" ibuffer-mark-unsaved-buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
677 :help "Mark all buffers which have a file and are modified"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
678 (define-key-after map [menu-bar mark mark-read-only-buffers]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
679 '(menu-item "Mark read-only buffers" ibuffer-mark-read-only-buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
680 :help "Mark all buffers which are read-only"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
681 (define-key-after map [menu-bar mark mark-special-buffers]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
682 '(menu-item "Mark special buffers" ibuffer-mark-special-buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
683 :help "Mark all buffers whose name begins with a *"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
684 (define-key-after map [menu-bar mark mark-dired-buffers]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
685 '(menu-item "Mark dired buffers" ibuffer-mark-dired-buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
686 :help "Mark buffers in dired-mode"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
687 (define-key-after map [menu-bar mark mark-dissociated-buffers]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
688 '(menu-item "Mark dissociated buffers" ibuffer-mark-dissociated-buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
689 :help "Mark buffers with a non-existent associated file"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
690 (define-key-after map [menu-bar mark mark-help-buffers]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
691 '(menu-item "Mark help buffers" ibuffer-mark-help-buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
692 :help "Mark buffers in help-mode"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
693 (define-key-after map [menu-bar mark mark-old-buffers]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
694 '(menu-item "Mark old buffers" ibuffer-mark-old-buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
695 :help "Mark buffers which have not been viewed recently"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
696 (define-key-after map [menu-bar mark unmark-all]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
697 '(menu-item "Unmark All" ibuffer-unmark-all))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
698
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
699 (define-key-after map [menu-bar mark dashes]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
700 '("--"))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
701
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
702 (define-key-after map [menu-bar mark mark-by-name-regexp]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
703 '(menu-item "Mark by buffer name (regexp)..." ibuffer-mark-by-name-regexp
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
704 :help "Mark buffers whose name matches a regexp"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
705 (define-key-after map [menu-bar mark mark-by-mode-regexp]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
706 '(menu-item "Mark by major mode (regexp)..." ibuffer-mark-by-mode-regexp
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
707 :help "Mark buffers whose major mode name matches a regexp"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
708 (define-key-after map [menu-bar mark mark-by-file-name-regexp]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
709 '(menu-item "Mark by file name (regexp)..." ibuffer-mark-by-file-name-regexp
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
710 :help "Mark buffers whose file name matches a regexp"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
711
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
712 ;; Operate map is added later
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
713
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
714 (define-key-after operate-map [do-view]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
715 '(menu-item "View" ibuffer-do-view))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
716 (define-key-after operate-map [do-view-other-frame]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
717 '(menu-item "View (separate frame)" ibuffer-do-view-other-frame))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
718 (define-key-after operate-map [do-save]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
719 '(menu-item "Save" ibuffer-do-save))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
720 (define-key-after operate-map [do-replace-regexp]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
721 '(menu-item "Replace (regexp)..." ibuffer-do-replace-regexp
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
722 :help "Replace text inside marked buffers"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
723 (define-key-after operate-map [do-query-replace]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
724 '(menu-item "Query Replace..." ibuffer-do-query-replace
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
725 :help "Replace text in marked buffers, asking each time"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
726 (define-key-after operate-map [do-query-replace-regexp]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
727 '(menu-item "Query Replace (regexp)..." ibuffer-do-query-replace-regexp
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
728 :help "Replace text in marked buffers by regexp, asking each time"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
729 (define-key-after operate-map [do-print]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
730 '(menu-item "Print" ibuffer-do-print))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
731 (define-key-after operate-map [do-toggle-modified]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
732 '(menu-item "Toggle modification flag" ibuffer-do-toggle-modified))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
733 (define-key-after operate-map [do-revert]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
734 '(menu-item "Revert" ibuffer-do-revert
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
735 :help "Revert marked buffers to their associated file"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
736 (define-key-after operate-map [do-rename-uniquely]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
737 '(menu-item "Rename Uniquely" ibuffer-do-rename-uniquely
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
738 :help "Rename marked buffers to a new, unique name"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
739 (define-key-after operate-map [do-delete]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
740 '(menu-item "Kill" ibuffer-do-delete))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
741 (define-key-after operate-map [do-occur]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
742 '(menu-item "List lines matching..." ibuffer-do-occur
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
743 :help "View all lines in marked buffers matching a regexp"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
744 (define-key-after operate-map [do-shell-command-pipe]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
745 '(menu-item "Pipe to shell command..." ibuffer-do-shell-command-pipe
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
746 :help "For each marked buffer, send its contents to a shell command"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
747 (define-key-after operate-map [do-shell-command-pipe-replace]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
748 '(menu-item "Pipe to shell command (replace)..." ibuffer-do-shell-command-pipe-replace
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
749 :help "For each marked buffer, replace its contents with output of shell command"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
750 (define-key-after operate-map [do-shell-command-file]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
751 '(menu-item "Shell command on buffer's file..." ibuffer-do-shell-command-file
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
752 :help "For each marked buffer, run a shell command with its file as argument"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
753 (define-key-after operate-map [do-eval]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
754 '(menu-item "Eval..." ibuffer-do-eval
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
755 :help "Evaluate a Lisp form in each marked buffer"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
756 (define-key-after operate-map [do-view-and-eval]
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
757 '(menu-item "Eval (viewing buffer)..." ibuffer-do-view-and-eval
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
758 :help "Evaluate a Lisp form in each marked buffer while viewing it"))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
759
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
760 (setq ibuffer-mode-map map
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
761 ibuffer-mode-operate-map operate-map
45161
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
762 ibuffer-mode-groups-popup (copy-keymap groups-map))))
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
763
91602250e999 (ibuffer-mode-map): Bind it. Add :enable guard around
Colin Walters <walters@gnu.org>
parents: 45129
diff changeset
764 (define-key ibuffer-mode-groups-popup [kill-filter-group]
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
765 '(menu-item "Kill filter group"
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
766 ibuffer-kill-line
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
767 :enable (and (featurep 'ibuf-ext)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
768 ibuffer-filter-groups)))
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
769 (define-key ibuffer-mode-groups-popup [yank-filter-group]
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
770 '(menu-item "Yank last killed filter group"
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
771 ibuffer-yank
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
772 :enable (and (featurep 'ibuf-ext)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
773 ibuffer-filter-group-kill-ring)))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
774
50708
c2c47be7d704 (ibuffer-name-map, ibuffer-mode-name-map)
John Paul Wallington <jpw@pobox.com>
parents: 50448
diff changeset
775 (defvar ibuffer-name-map
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
776 (let ((map (make-sparse-keymap)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
777 (define-key map [(mouse-1)] 'ibuffer-mouse-toggle-mark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
778 (define-key map [(mouse-2)] 'ibuffer-mouse-visit-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
779 (define-key map [down-mouse-3] 'ibuffer-mouse-popup-menu)
50708
c2c47be7d704 (ibuffer-name-map, ibuffer-mode-name-map)
John Paul Wallington <jpw@pobox.com>
parents: 50448
diff changeset
780 map))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
781
50708
c2c47be7d704 (ibuffer-name-map, ibuffer-mode-name-map)
John Paul Wallington <jpw@pobox.com>
parents: 50448
diff changeset
782 (defvar ibuffer-mode-name-map
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
783 (let ((map (make-sparse-keymap)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
784 (define-key map [(mouse-2)] 'ibuffer-mouse-filter-by-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
785 (define-key map (kbd "RET") 'ibuffer-interactive-filter-by-mode)
50708
c2c47be7d704 (ibuffer-name-map, ibuffer-mode-name-map)
John Paul Wallington <jpw@pobox.com>
parents: 50448
diff changeset
786 map))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
787
50708
c2c47be7d704 (ibuffer-name-map, ibuffer-mode-name-map)
John Paul Wallington <jpw@pobox.com>
parents: 50448
diff changeset
788 (defvar ibuffer-mode-filter-group-map
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
789 (let ((map (make-sparse-keymap)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
790 (define-key map [(mouse-1)] 'ibuffer-mouse-toggle-mark)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
791 (define-key map [(mouse-2)] 'ibuffer-mouse-toggle-filter-group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
792 (define-key map (kbd "RET") 'ibuffer-toggle-filter-group)
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
793 (define-key map [down-mouse-3] 'ibuffer-mouse-popup-menu)
50708
c2c47be7d704 (ibuffer-name-map, ibuffer-mode-name-map)
John Paul Wallington <jpw@pobox.com>
parents: 50448
diff changeset
794 map))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
795
54813
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
796 (defvar ibuffer-restore-window-config-on-quit nil
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
797 "If non-nil, restore previous window configuration upon exiting `ibuffer'.")
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
798
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
799 (defvar ibuffer-prev-window-config nil
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
800 "Window configuration before starting Ibuffer.")
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
801
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
802 (defvar ibuffer-did-modification nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
803
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
804 (defvar ibuffer-sorting-functions-alist nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
805 "An alist of functions which describe how to sort buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
806
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
807 Note: You most likely do not want to modify this variable directly;
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
808 use `define-ibuffer-sorter' instead.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
809
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
810 The alist elements are constructed like (NAME DESCRIPTION FUNCTION)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
811 Where NAME is a symbol describing the sorting method, DESCRIPTION is a
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
812 short string which will be displayed in the minibuffer and menu, and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
813 FUNCTION is a function of two arguments, which will be the buffers to
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
814 compare.")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
815
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
816 ;;; Utility functions
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
817 (defun ibuffer-columnize-and-insert-list (list &optional pad-width)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
818 "Insert LIST into the current buffer in as many columns as possible.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
819 The maximum number of columns is determined by the current window
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
820 width and the longest string in LIST."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
821 (unless pad-width
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
822 (setq pad-width 3))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
823 (let ((width (window-width))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
824 (max (+ (apply #'max (mapcar #'length list))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
825 pad-width)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
826 (let ((columns (/ width max)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
827 (when (zerop columns)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
828 (setq columns 1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
829 (while list
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
830 (dotimes (i (1- columns))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
831 (insert (concat (car list) (make-string (- max (length (car list)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
832 ? )))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
833 (setq list (cdr list)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
834 (when (not (null list))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
835 (insert (pop list)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
836 (insert "\n")))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
837
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
838 (defsubst ibuffer-current-mark ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
839 (cadr (get-text-property (line-beginning-position)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
840 'ibuffer-properties)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
841
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
842 (defun ibuffer-mouse-toggle-mark (event)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
843 "Toggle the marked status of the buffer chosen with the mouse."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
844 (interactive "e")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
845 (unwind-protect
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
846 (let ((pt (save-excursion
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
847 (mouse-set-point event)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
848 (point))))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
849 (ibuffer-aif (get-text-property (point) 'ibuffer-filter-group-name)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
850 (ibuffer-toggle-marks it)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
851 (goto-char pt)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
852 (let ((mark (ibuffer-current-mark)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
853 (setq buffer-read-only nil)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
854 (if (eq mark ibuffer-marked-char)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
855 (ibuffer-set-mark ? )
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
856 (ibuffer-set-mark ibuffer-marked-char)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
857 (setq buffer-read-only t)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
858
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
859 (defun ibuffer-find-file (file &optional wildcards)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
860 "Like `find-file', but default to the directory of the buffer at point."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
861 (interactive
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
862 (let ((default-directory (let ((buf (ibuffer-current-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
863 (if (buffer-live-p buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
864 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
865 default-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
866 default-directory))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
867 (list (read-file-name "Find file: " default-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
868 current-prefix-arg)))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
869 (find-file file (or wildcards (interactive-p))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
870
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
871 (defun ibuffer-mouse-visit-buffer (event)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
872 "Visit the buffer chosen with the mouse."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
873 (interactive "e")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
874 (switch-to-buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
875 (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
876 (mouse-set-point event)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
877 (ibuffer-current-buffer t))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
878
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
879 (defun ibuffer-mouse-popup-menu (event)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
880 "Display a menu of operations."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
881 (interactive "e")
48058
7dab1d891656 (ibuffer-mouse-popup-menu): Set point before popping
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
882 (let ((eventpt (posn-point (event-end event)))
7dab1d891656 (ibuffer-mouse-popup-menu): Set point before popping
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
883 (origpt (point)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
884 (unwind-protect
46682
7a836df2d686 (ibuffer-mouse-popup-menu): Allow point to be moved by menu functions.
Colin Walters <walters@gnu.org>
parents: 45839
diff changeset
885 (if (get-text-property eventpt 'ibuffer-filter-group-name)
48058
7dab1d891656 (ibuffer-mouse-popup-menu): Set point before popping
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
886 (progn
7dab1d891656 (ibuffer-mouse-popup-menu): Set point before popping
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
887 (goto-char eventpt)
7dab1d891656 (ibuffer-mouse-popup-menu): Set point before popping
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
888 (popup-menu ibuffer-mode-groups-popup))
46682
7a836df2d686 (ibuffer-mouse-popup-menu): Allow point to be moved by menu functions.
Colin Walters <walters@gnu.org>
parents: 45839
diff changeset
889 (let ((inhibit-read-only t))
45129
7b5b6369f90a (ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
Colin Walters <walters@gnu.org>
parents: 44936
diff changeset
890 (ibuffer-save-marks
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
891 ;; hm. we could probably do this in a better fashion
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
892 (ibuffer-unmark-all ?\r)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
893 (save-excursion
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
894 (goto-char eventpt)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
895 (ibuffer-set-mark ibuffer-marked-char))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
896 (save-excursion
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
897 (popup-menu ibuffer-mode-operate-map)))))
48058
7dab1d891656 (ibuffer-mouse-popup-menu): Set point before popping
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
898 (setq buffer-read-only t)
48778
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 48485
diff changeset
899 (if (= eventpt (point))
48058
7dab1d891656 (ibuffer-mouse-popup-menu): Set point before popping
John Paul Wallington <jpw@pobox.com>
parents: 47740
diff changeset
900 (goto-char origpt)))))
46682
7a836df2d686 (ibuffer-mouse-popup-menu): Allow point to be moved by menu functions.
Colin Walters <walters@gnu.org>
parents: 45839
diff changeset
901
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
902 (defun ibuffer-skip-properties (props direction)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
903 (while (and (not (eobp))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
904 (let ((hit nil))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
905 (dolist (prop props hit)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
906 (when (get-text-property (point) prop)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
907 (setq hit t)))))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
908 (forward-line direction)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
909 (beginning-of-line)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
910
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
911 (defun ibuffer-customize ()
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
912 "Begin customizing Ibuffer interactively."
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
913 (interactive)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
914 (customize-group 'ibuffer))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
915
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
916 (defun ibuffer-backward-line (&optional arg skip-group-names)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
917 "Move backwards ARG lines, wrapping around the list if necessary."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
918 (interactive "P")
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
919 (or arg (setq arg 1))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
920 (beginning-of-line)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
921 (while (> arg 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
922 (forward-line -1)
45839
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
923 (when (and ibuffer-movement-cycle
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
924 (or (get-text-property (point) 'ibuffer-title)
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
925 (and skip-group-names
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
926 (get-text-property (point)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
927 'ibuffer-filter-group-name))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
928 (goto-char (point-max))
44185
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
929 (beginning-of-line))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
930 (ibuffer-skip-properties (append '(ibuffer-summary)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
931 (when skip-group-names
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
932 '(ibuffer-filter-group-name)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
933 -1)
44185
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
934 ;; Handle the special case of no buffers.
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
935 (when (get-text-property (point) 'ibuffer-title)
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
936 (forward-line 1)
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
937 (setq arg 1))
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
938 (decf arg)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
939
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
940 (defun ibuffer-forward-line (&optional arg skip-group-names)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
941 "Move forward ARG lines, wrapping around the list if necessary."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
942 (interactive "P")
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
943 (or arg (setq arg 1))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
944 (beginning-of-line)
45839
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
945 (when (and ibuffer-movement-cycle
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
946 (or (eobp)
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
947 (get-text-property (point) 'ibuffer-summary)))
44245
8bff6cc92867 (ibuffer-mark-interactive): Use `ibuffer-forward-line' instead of
Colin Walters <walters@gnu.org>
parents: 44185
diff changeset
948 (goto-char (point-min)))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
949 (when (or (get-text-property (point) 'ibuffer-title)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
950 (and skip-group-names
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
951 (get-text-property (point) 'ibuffer-filter-group-name)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
952 (when (> arg 0)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
953 (decf arg))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
954 (ibuffer-skip-properties (append '(ibuffer-title)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
955 (when skip-group-names
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
956 '(ibuffer-filter-group-name)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
957 1))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
958 (if (< arg 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
959 (ibuffer-backward-line (- arg))
44185
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
960 (while (> arg 0)
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
961 (forward-line 1)
45839
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
962 (when (and ibuffer-movement-cycle
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
963 (or (eobp)
a3da6ddded28 (ibuffer-movement-cycle): New variable.
Colin Walters <walters@gnu.org>
parents: 45764
diff changeset
964 (get-text-property (point) 'ibuffer-summary)))
44185
c4de5a5d6ecb (ibuffer-help-buffer-modes): New variable.
Colin Walters <walters@gnu.org>
parents: 44137
diff changeset
965 (goto-char (point-min)))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
966 (decf arg)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
967 (ibuffer-skip-properties (append '(ibuffer-title)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
968 (when skip-group-names
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
969 '(ibuffer-filter-group-name)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
970 1))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
971
44659
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
972 (defun ibuffer-visit-buffer (&optional single)
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
973 "Visit the buffer on this line.
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
974 If optional argument SINGLE is non-nil, then also ensure there is only
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
975 one window."
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
976 (interactive "P")
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
977 (let ((buf (ibuffer-current-buffer t)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
978 (bury-buffer (current-buffer))
44659
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
979 (switch-to-buffer buf)
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
980 (when single
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
981 (delete-other-windows))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
982
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
983 (defun ibuffer-visit-buffer-other-window (&optional noselect)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
984 "Visit the buffer on this line in another window."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
985 (interactive)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
986 (let ((buf (ibuffer-current-buffer t)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
987 (bury-buffer (current-buffer))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
988 (if noselect
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
989 (let ((curwin (selected-window)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
990 (pop-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
991 (select-window curwin))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
992 (switch-to-buffer-other-window buf))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
993
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
994 (defun ibuffer-visit-buffer-other-window-noselect ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
995 "Visit the buffer on this line in another window, but don't select it."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
996 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
997 (ibuffer-visit-buffer-other-window t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
998
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
999 (defun ibuffer-visit-buffer-other-frame ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1000 "Visit the buffer on this line in another frame."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1001 (interactive)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1002 (let ((buf (ibuffer-current-buffer t)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1003 (bury-buffer (current-buffer))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1004 (switch-to-buffer-other-frame buf)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1005
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1006 (defun ibuffer-visit-buffer-1-window ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1007 "Visit the buffer on this line, and delete other windows."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1008 (interactive)
44659
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1009 (ibuffer-visit-buffer t))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1010
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1011 (defun ibuffer-bury-buffer ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1012 "Bury the buffer on this line."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1013 (interactive)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1014 (let ((buf (ibuffer-current-buffer t))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1015 (line (+ 1 (count-lines 1 (point)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1016 (bury-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1017 (ibuffer-update nil t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1018 (goto-line line)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1019
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1020 (defun ibuffer-visit-tags-table ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1021 "Visit the tags table in the buffer on this line. See `visit-tags-table'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1022 (interactive)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1023 (let ((file (buffer-file-name (ibuffer-current-buffer t))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1024 (if file
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1025 (visit-tags-table file)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1026 (error "Specified buffer has no file"))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1027
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1028 (defun ibuffer-do-view (&optional other-frame)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1029 "View marked buffers, or the buffer on the current line.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1030 If optional argument OTHER-FRAME is non-nil, then display each
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1031 marked buffer in a new frame. Otherwise, display each buffer as
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1032 a new window in the current frame, splitting vertically."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1033 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1034 (ibuffer-do-view-1 (if other-frame 'other-frame 'vertically)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1035
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1036 (defun ibuffer-do-view-horizontally (&optional other-frame)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1037 "As `ibuffer-do-view', but split windows horizontally."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1038 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1039 (ibuffer-do-view-1 (if other-frame 'other-frame 'horizontally)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1040
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1041 (defun ibuffer-do-view-1 (type)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1042 (let ((marked-bufs (ibuffer-get-marked-buffers)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1043 (when (null marked-bufs)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1044 (setq marked-bufs (list (ibuffer-current-buffer t))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1045 (unless (and (eq type 'other-frame)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1046 (not ibuffer-expert)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1047 (> (length marked-bufs) 3)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1048 (not (y-or-n-p (format "Really create a new frame for %s buffers? "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1049 (length marked-bufs)))))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1050 (set-buffer-modified-p nil)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1051 (delete-other-windows)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1052 (switch-to-buffer (pop marked-bufs))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1053 (let ((height (/ (1- (if (eq type 'horizontally) (frame-width)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1054 (frame-height)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1055 (1+ (length marked-bufs)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1056 (mapcar (if (eq type 'other-frame)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1057 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1058 (let ((curframe (selected-frame)))
50708
c2c47be7d704 (ibuffer-name-map, ibuffer-mode-name-map)
John Paul Wallington <jpw@pobox.com>
parents: 50448
diff changeset
1059 (select-frame (make-frame))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1060 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1061 (select-frame curframe)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1062 #'(lambda (buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1063 (split-window nil height (eq type 'horizontally))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1064 (other-window 1)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1065 (switch-to-buffer buf)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1066 marked-bufs)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1067
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1068 (defun ibuffer-do-view-other-frame ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1069 "View each of the marked buffers in a separate frame."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1070 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1071 (ibuffer-do-view t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1072
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1073 (defsubst ibuffer-map-marked-lines (func)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1074 (prog1 (ibuffer-map-on-mark ibuffer-marked-char func)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1075 (ibuffer-redisplay t)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1076
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1077 (defun ibuffer-shrink-to-fit (&optional owin)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1078 (fit-window-to-buffer nil (when owin (/ (frame-height)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1079 (length (window-list (selected-frame)))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1080
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1081 (defun ibuffer-confirm-operation-on (operation names)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1082 "Display a buffer asking whether to perform OPERATION on NAMES."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1083 (or ibuffer-expert
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1084 (if (= (length names) 1)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1085 (y-or-n-p (format "Really %s buffer %s? " operation (car names)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1086 (let ((buf (get-buffer-create "*Ibuffer confirmation*")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1087 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1088 (setq buffer-read-only nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1089 (erase-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1090 (ibuffer-columnize-and-insert-list names)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1091 (goto-char (point-min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1092 (setq buffer-read-only t))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1093 (let ((lastwin (car (last (window-list nil 'nomini)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1094 ;; Now attempt to display the buffer...
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1095 (save-window-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1096 (select-window lastwin)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1097 ;; The window might be too small to split; in that case,
48343
35889dbb9b84 (ibuffer-use-other-window, ibuffer-use-header-line)
John Paul Wallington <jpw@pobox.com>
parents: 48058
diff changeset
1098 ;; try a few times to increase its size before giving up.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1099 (let ((attempts 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1100 (trying t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1101 (while trying
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1102 (condition-case err
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1103 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1104 (split-window)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1105 (setq trying nil))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1106 (error
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1107 ;; Handle a failure
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1108 (if (or (> (incf attempts) 4)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1109 (and (stringp (cadr err))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
1110 ;; This definitely falls in the
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1111 ;; ghetto hack category...
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1112 (not (string-match "too small" (cadr err)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1113 (apply #'signal err)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1114 (enlarge-window 3))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1115 (select-window (next-window))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1116 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1117 (unwind-protect
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1118 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1119 (fit-window-to-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1120 (y-or-n-p (format "Really %s %d buffers? "
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1121 operation (length names))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1122 (kill-buffer buf))))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1123
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1124 (defsubst ibuffer-map-lines-nomodify (function)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1125 "As `ibuffer-map-lines', but don't set the modification flag."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1126 (ibuffer-map-lines function t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1127
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1128 (defun ibuffer-buffer-names-with-mark (mark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1129 (let ((ibuffer-buffer-names-with-mark-result nil))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1130 (ibuffer-map-lines-nomodify
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1131 #'(lambda (buf mk)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1132 (when (char-equal mark mk)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1133 (push (buffer-name buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1134 ibuffer-buffer-names-with-mark-result))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1135 ibuffer-buffer-names-with-mark-result))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1136
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1137 (defsubst ibuffer-marked-buffer-names ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1138 (ibuffer-buffer-names-with-mark ibuffer-marked-char))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1139
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1140 (defsubst ibuffer-deletion-marked-buffer-names ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1141 (ibuffer-buffer-names-with-mark ibuffer-deletion-char))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1142
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1143 (defun ibuffer-count-marked-lines (&optional all)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1144 (if all
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1145 (ibuffer-map-lines-nomodify
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1146 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1147 (not (char-equal mark ? ))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1148 (ibuffer-map-lines-nomodify
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1149 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1150 (char-equal mark ibuffer-marked-char)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1151
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1152 (defsubst ibuffer-count-deletion-lines ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1153 (ibuffer-map-lines-nomodify
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1154 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1155 (char-equal mark ibuffer-deletion-char))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1156
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1157 (defsubst ibuffer-map-deletion-lines (func)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1158 (ibuffer-map-on-mark ibuffer-deletion-char func))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1159
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1160 (define-ibuffer-op ibuffer-do-save ()
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1161 "Save marked buffers as with `save-buffer'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1162 (:complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1163 :opstring "saved"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1164 :modifier-p :maybe)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1165 (when (buffer-modified-p buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1166 (if (not (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1167 buffer-file-name))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1168 ;; handle the case where we're prompted
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1169 ;; for a file name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1170 (save-window-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1171 (switch-to-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1172 (save-buffer))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1173 (with-current-buffer buf
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1174 (save-buffer))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1175 t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1176
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1177 (define-ibuffer-op ibuffer-do-toggle-modified ()
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1178 "Toggle modification flag of marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1179 (:opstring "(un)marked as modified"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1180 :modifier-p t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1181 (set-buffer-modified-p (not (buffer-modified-p))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1182
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1183 (define-ibuffer-op ibuffer-do-toggle-read-only ()
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1184 "Toggle read only status in marked buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1185 (:opstring "toggled read only status in"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1186 :modifier-p t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1187 (toggle-read-only))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1188
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1189 (define-ibuffer-op ibuffer-do-delete ()
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1190 "Kill marked buffers as with `kill-this-buffer'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1191 (:opstring "killed"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1192 :active-opstring "kill"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1193 :dangerous t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1194 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1195 :modifier-p t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1196 (if (kill-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1197 'kill
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1198 nil))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1199
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1200 (define-ibuffer-op ibuffer-do-kill-on-deletion-marks ()
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1201 "Kill buffers marked for deletion as with `kill-this-buffer'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1202 (:opstring "killed"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1203 :active-opstring "kill"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1204 :dangerous t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1205 :complex t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1206 :mark :deletion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1207 :modifier-p t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1208 (if (kill-buffer buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1209 'kill
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1210 nil))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1211
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1212 (defun ibuffer-unmark-all (mark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1213 "Unmark all buffers with mark MARK."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1214 (interactive "cRemove marks (RET means all):")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1215 (if (= (ibuffer-count-marked-lines t) 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1216 (message "No buffers marked; use 'm' to mark a buffer")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1217 (cond
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1218 ((char-equal mark ibuffer-marked-char)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1219 (ibuffer-map-marked-lines
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1220 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1221 (ibuffer-set-mark-1 ? )
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1222 t)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1223 ((char-equal mark ibuffer-deletion-char)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1224 (ibuffer-map-deletion-lines
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1225 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1226 (ibuffer-set-mark-1 ? )
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1227 t)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1228 (t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1229 (ibuffer-map-lines
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1230 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1231 (when (not (char-equal mark ? ))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1232 (ibuffer-set-mark-1 ? ))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1233 t)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1234 (ibuffer-redisplay t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1235
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1236 (defun ibuffer-toggle-marks (&optional group)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1237 "Toggle which buffers are marked.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1238 In other words, unmarked buffers become marked, and marked buffers
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1239 become unmarked.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1240 If point is on a group name, then this function operates on that
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1241 group."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1242 (interactive)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1243 (ibuffer-aif (get-text-property (point) 'ibuffer-filter-group-name)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1244 (setq group it))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1245 (let ((count
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1246 (ibuffer-map-lines
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1247 #'(lambda (buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1248 (cond ((eq mark ibuffer-marked-char)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1249 (ibuffer-set-mark-1 ? )
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1250 nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1251 ((eq mark ? )
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1252 (ibuffer-set-mark-1 ibuffer-marked-char)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1253 t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1254 (t
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1255 nil)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1256 nil group)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1257 (message "%s buffers marked" count))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1258 (ibuffer-redisplay t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1259
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1260 (defun ibuffer-mark-forward (arg)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1261 "Mark the buffer on this line, and move forward ARG lines.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1262 If point is on a group name, this function operates on that group."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1263 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1264 (ibuffer-mark-interactive arg ibuffer-marked-char 1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1265
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1266 (defun ibuffer-unmark-forward (arg)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1267 "Unmark the buffer on this line, and move forward ARG lines.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1268 If point is on a group name, this function operates on that group."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1269 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1270 (ibuffer-mark-interactive arg ? 1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1271
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1272 (defun ibuffer-unmark-backward (arg)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1273 "Unmark the buffer on this line, and move backward ARG lines.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1274 If point is on a group name, this function operates on that group."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1275 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1276 (ibuffer-mark-interactive arg ? -1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1277
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1278 (defun ibuffer-mark-interactive (arg mark movement)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1279 (assert (eq major-mode 'ibuffer-mode))
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1280 (or arg (setq arg 1))
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1281 (ibuffer-forward-line 0)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1282 (ibuffer-aif (get-text-property (point) 'ibuffer-filter-group-name)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1283 (progn
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1284 (require 'ibuf-ext)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1285 (ibuffer-mark-on-buffer #'identity mark it))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1286 (ibuffer-forward-line 0 t)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1287 (let ((inhibit-read-only t))
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1288 (while (> arg 0)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1289 (ibuffer-set-mark mark)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1290 (ibuffer-forward-line movement t)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1291 (setq arg (1- arg))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1292
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1293 (defun ibuffer-set-mark (mark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1294 (assert (eq major-mode 'ibuffer-mode))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1295 (let ((inhibit-read-only t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1296 (ibuffer-set-mark-1 mark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1297 (setq ibuffer-did-modification t)
44021
b2462b8e1cf2 (ibuffer-set-mark): Go back to the beginning of the line after setting
Colin Walters <walters@gnu.org>
parents: 43873
diff changeset
1298 (ibuffer-redisplay-current)
b2462b8e1cf2 (ibuffer-set-mark): Go back to the beginning of the line after setting
Colin Walters <walters@gnu.org>
parents: 43873
diff changeset
1299 (beginning-of-line)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1300
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1301 (defun ibuffer-set-mark-1 (mark)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1302 (let ((beg (line-beginning-position))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1303 (end (line-end-position)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1304 (put-text-property beg end 'ibuffer-properties
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1305 (list (ibuffer-current-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1306 mark))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1307
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1308 (defun ibuffer-mark-for-delete (arg)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1309 "Mark the buffers on ARG lines forward for deletion.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1310 If point is on a group name, this function operates on that group."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1311 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1312 (ibuffer-mark-interactive arg ibuffer-deletion-char 1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1313
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1314 (defun ibuffer-mark-for-delete-backwards (arg)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1315 "Mark the buffers on ARG lines backward for deletion.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
1316 If point is on a group name, this function operates on that group."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1317 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1318 (ibuffer-mark-interactive arg ibuffer-deletion-char -1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1319
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1320 (defun ibuffer-current-buffer (&optional must-be-live)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1321 (let ((buf (car (get-text-property (line-beginning-position)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1322 'ibuffer-properties))))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1323 (when must-be-live
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1324 (if (bufferp buf)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1325 (unless (buffer-live-p buf)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1326 (error (substitute-command-keys "Buffer %s has been killed; use `\\[ibuffer-update]' to update") buf))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1327 (error "No buffer on this line")))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1328 buf))
43104
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1329
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1330 (defun ibuffer-active-formats-name ()
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1331 (if (boundp 'ibuffer-filter-format-alist)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1332 (let ((ret nil))
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1333 (dolist (filter ibuffer-filtering-qualifiers ret)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1334 (let ((val (assq (car filter) ibuffer-filter-format-alist)))
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1335 (when val
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1336 (setq ret (car filter)))))
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1337 (if ret
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1338 ret
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1339 :ibuffer-formats))
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1340 :ibuffer-formats))
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1341
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1342 (defun ibuffer-current-formats (uncompiledp)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1343 (let* ((name (ibuffer-active-formats-name)))
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1344 (ibuffer-check-formats)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1345 (if (eq name :ibuffer-formats)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1346 (if uncompiledp
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1347 ibuffer-formats
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1348 ibuffer-compiled-formats)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1349 (cadr (assq name
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1350 (if uncompiledp
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1351 ibuffer-filter-format-alist
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1352 ibuffer-compiled-filter-formats))))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
1353
43104
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1354 (defun ibuffer-current-format (&optional uncompiledp)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1355 (or ibuffer-current-format
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1356 (setq ibuffer-current-format 0))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1357 (nth ibuffer-current-format (ibuffer-current-formats uncompiledp)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1358
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1359 (defun ibuffer-expand-format-entry (form)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1360 (if (or (consp form)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1361 (symbolp form))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1362 (let ((sym (intern (concat "ibuffer-make-column-"
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1363 (symbol-name (if (consp form)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1364 (car form)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1365 form))))))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1366 (unless (or (fboundp sym)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1367 (assq sym ibuffer-inline-columns))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1368 (error "Unknown column %s in ibuffer-formats" form))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1369 (let (min max align elide)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1370 (if (consp form)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1371 (setq min (or (nth 1 form) 0)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1372 max (or (nth 2 form) -1)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1373 align (or (nth 3 form) :left)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1374 elide (or (nth 4 form) nil))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1375 (setq min 0
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1376 max -1
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1377 align :left
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1378 elide nil))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1379 (list sym min max align elide)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1380 form))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
1381
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1382 (defun ibuffer-compile-make-eliding-form (strvar elide from-end-p)
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1383 (let ((ellipsis (propertize ibuffer-eliding-string 'font-lock-face 'bold)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1384 (if (or elide ibuffer-elide-long-columns)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1385 `(if (> strlen 5)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1386 ,(if from-end-p
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1387 `(concat ,ellipsis
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1388 (substring ,strvar
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1389 (length ibuffer-eliding-string)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1390 `(concat
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1391 (substring ,strvar 0 (- strlen ,(length ellipsis)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1392 ,ellipsis))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1393 ,strvar)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1394 strvar)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1395
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1396 (defun ibuffer-compile-make-substring-form (strvar maxvar from-end-p)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1397 (if from-end-p
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1398 `(substring str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1399 (- strlen ,maxvar))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1400 `(substring ,strvar 0 ,maxvar)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1401
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1402 (defun ibuffer-compile-make-format-form (strvar widthform alignment)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1403 (let* ((left `(make-string tmp2 ? ))
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1404 (right `(make-string (- tmp1 tmp2) ? )))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1405 `(progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1406 (setq tmp1 ,widthform
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1407 tmp2 (/ tmp1 2))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1408 ,(case alignment
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1409 (:right `(concat ,left ,right ,strvar))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1410 (:center `(concat ,left ,strvar ,right))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1411 (:left `(concat ,strvar ,left ,right))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1412 (t (error "Invalid alignment %s" alignment))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1413
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1414 (defun ibuffer-compile-format (format)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1415 (let ((result nil)
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1416 ;; We use these variables to keep track of which variables
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1417 ;; inside the generated function we need to bind, since
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1418 ;; binding variables in Emacs takes time.
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1419 str-used tmp1-used tmp2-used global-strlen-used)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1420 (dolist (form format)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1421 (push
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1422 ;; Generate a form based on a particular format entry, like
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1423 ;; " ", mark, or (mode 16 16 :right).
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1424 (if (stringp form)
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1425 ;; It's a string; all we need to do is insert it.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1426 `(insert ,form)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1427 (let* ((form (ibuffer-expand-format-entry form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1428 (sym (nth 0 form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1429 (min (nth 1 form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1430 (max (nth 2 form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1431 (align (nth 3 form))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1432 (elide (nth 4 form)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1433 (let* ((from-end-p (when (minusp min)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1434 (setq min (- min))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1435 t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1436 (letbindings nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1437 (outforms nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1438 minform
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1439 maxform
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1440 min-used max-used strlen-used)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1441 (when (or (not (integerp min)) (>= min 0))
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1442 ;; This is a complex case; they want it limited to a
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1443 ;; minimum size.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1444 (setq min-used t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1445 (setq str-used t strlen-used t global-strlen-used t
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1446 tmp1-used t tmp2-used t)
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1447 ;; Generate code to limit the string to a minimum size.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1448 (setq minform `(progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1449 (setq str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1450 ,(ibuffer-compile-make-format-form
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1451 'str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1452 `(- ,(if (integerp min)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1453 min
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1454 'min)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1455 strlen)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1456 align)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1457 (when (or (not (integerp max)) (> max 0))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1458 (setq str-used t max-used t)
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1459 ;; Generate code to limit the string to a maximum size.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1460 (setq maxform `(progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1461 (setq str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1462 ,(ibuffer-compile-make-substring-form
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1463 'str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1464 (if (integerp max)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1465 max
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1466 'max)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1467 from-end-p))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1468 (setq strlen (length str))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1469 (setq str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1470 ,(ibuffer-compile-make-eliding-form 'str
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1471 elide
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1472 from-end-p)))))
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1473 ;; Now, put these forms together with the rest of the code.
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1474 (let ((callform
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1475 ;; Is this an "inline" column? This means we have
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1476 ;; to get the code from the
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1477 ;; `ibuffer-inline-columns' alist and insert it
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1478 ;; into our generated code. Otherwise, we just
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1479 ;; generate a call to the column function.
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1480 (ibuffer-aif (assq sym ibuffer-inline-columns)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1481 (nth 1 it)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1482 `(,sym buffer mark)))
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1483 ;; You're not expected to understand this. Hell, I
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1484 ;; don't even understand it, and I wrote it five
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1485 ;; minutes ago.
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1486 (insertgenfn (ibuffer-aif (get sym 'ibuffer-column-summarizer)
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1487 ;; I really, really wish Emacs Lisp had closures.
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1488 (lambda (arg sym)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1489 `(insert
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1490 (let ((ret ,arg))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1491 (put ',sym 'ibuffer-column-summary
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1492 (cons ret (get ',sym 'ibuffer-column-summary)))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1493 ret)))
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1494 (lambda (arg sym)
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1495 `(insert ,arg))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1496 (mincompform `(< strlen ,(if (integerp min)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1497 min
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1498 'min)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1499 (maxcompform `(> strlen ,(if (integerp max)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1500 max
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1501 'max))))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1502 (if (or min-used max-used)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1503 ;; The complex case, where we have to limit the
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1504 ;; form to a maximum or minimum size.
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1505 (progn
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1506 (when (and min-used (not (integerp min)))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1507 (push `(min ,min) letbindings))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1508 (when (and max-used (not (integerp max)))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1509 (push `(max ,max) letbindings))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1510 (push
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1511 (if (and min-used max-used)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1512 `(if ,mincompform
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1513 ,minform
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1514 (if ,maxcompform
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1515 ,maxform))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1516 (if min-used
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1517 `(when ,mincompform
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1518 ,minform)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1519 `(when ,maxcompform
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1520 ,maxform)))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1521 outforms)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1522 (push (append
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1523 `(setq str ,callform)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1524 (when strlen-used
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1525 `(strlen (length str))))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1526 outforms)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1527 (setq outforms
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1528 (append outforms (list (funcall insertgenfn 'str sym)))))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1529 ;; The simple case; just insert the string.
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1530 (push (funcall insertgenfn callform sym) outforms))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1531 ;; Finally, return a `let' form which binds the
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1532 ;; variables in `letbindings', and contains all the
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1533 ;; code in `outforms'.
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1534 `(let ,letbindings
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1535 ,@outforms)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1536 result))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1537 (setq result
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1538 ;; We don't want to unconditionally load the byte-compiler.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1539 (funcall (if (or ibuffer-always-compile-formats
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1540 (featurep 'bytecomp))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1541 #'byte-compile
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1542 #'identity)
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1543 ;; Here, we actually create a lambda form which
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1544 ;; inserts all the generated forms for each entry
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1545 ;; in the format string.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1546 (nconc (list 'lambda '(buffer mark))
43489
ffa9b62fa5b9 (ibuffer-compile-format): Don't uselessly bind `pt' in generated
Colin Walters <walters@gnu.org>
parents: 43382
diff changeset
1547 `((let ,(append (when str-used
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1548 '(str))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1549 (when global-strlen-used
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1550 '(strlen))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1551 (when tmp1-used
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1552 '(tmp1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1553 (when tmp2-used
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1554 '(tmp2)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1555 ,@(nreverse result))))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1556
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1557 (defvar ibuffer-compiled-formats nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1558 (defvar ibuffer-cached-formats nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1559 (defvar ibuffer-cached-eliding-string nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1560 (defvar ibuffer-cached-elide-long-columns 0)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1561
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1562 (defun ibuffer-recompile-formats ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1563 "Recompile `ibuffer-formats'."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1564 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1565 (setq ibuffer-compiled-formats
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1566 (mapcar #'ibuffer-compile-format ibuffer-formats))
43104
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1567 (when (boundp 'ibuffer-filter-format-alist)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1568 (setq ibuffer-compiled-filter-formats
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1569 (mapcar #'(lambda (entry)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1570 (cons (car entry)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1571 (mapcar #'(lambda (formats)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1572 (mapcar #'ibuffer-compile-format formats))
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1573 (cdr entry))))
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1574 ibuffer-filter-format-alist))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1575
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1576 (defun ibuffer-clear-summary-columns (format)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1577 (dolist (form format)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1578 (ibuffer-awhen (and (consp form)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1579 (get (car form) 'ibuffer-column-summarizer))
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1580 (put (car form) 'ibuffer-column-summary nil))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
1581
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1582 (defun ibuffer-check-formats ()
43104
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1583 (when (null ibuffer-formats)
2a6ac08c9a18 (ibuffer): Remove link; the "home page" for ibuffer is now the Emacs
Colin Walters <walters@gnu.org>
parents: 42884
diff changeset
1584 (error "No formats!"))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1585 (let ((ext-loaded (featurep 'ibuf-ext)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1586 (when (or (null ibuffer-compiled-formats)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1587 (null ibuffer-cached-formats)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1588 (not (eq ibuffer-cached-formats ibuffer-formats))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1589 (null ibuffer-cached-eliding-string)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1590 (not (equal ibuffer-cached-eliding-string ibuffer-eliding-string))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1591 (eql 0 ibuffer-cached-elide-long-columns)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1592 (not (eql ibuffer-cached-elide-long-columns
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1593 ibuffer-elide-long-columns))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1594 (and ext-loaded
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1595 (not (eq ibuffer-cached-filter-formats
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1596 ibuffer-filter-format-alist))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1597 (and ibuffer-filter-format-alist
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1598 (null ibuffer-compiled-filter-formats))))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1599 (message "Formats have changed, recompiling...")
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1600 (ibuffer-recompile-formats)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1601 (setq ibuffer-cached-formats ibuffer-formats
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1602 ibuffer-cached-eliding-string ibuffer-eliding-string
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1603 ibuffer-cached-elide-long-columns ibuffer-elide-long-columns)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1604 (when ext-loaded
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1605 (setq ibuffer-cached-filter-formats ibuffer-filter-format-alist))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1606 (message "Formats have changed, recompiling...done"))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1607
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1608 (defvar ibuffer-inline-columns nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1609
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1610 (define-ibuffer-column mark (:name " " :inline t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1611 (string mark))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1612
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1613 (define-ibuffer-column read-only (:name "R" :inline t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1614 (if buffer-read-only
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1615 (string ibuffer-read-only-char)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1616 " "))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1617
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1618 (define-ibuffer-column modified (:name "M" :inline t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1619 (if (buffer-modified-p)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1620 (string ibuffer-modified-char)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1621 " "))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1622
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1623 (define-ibuffer-column name
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1624 (:inline t
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1625 :props
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1626 ('mouse-face 'highlight 'keymap ibuffer-name-map
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1627 'ibuffer-name-column t
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1628 'help-echo '(if tooltip-mode
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1629 "mouse-1: mark this buffer\nmouse-2: select this buffer\nmouse-3: operate on this buffer"
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1630 "mouse-1: mark buffer mouse-2: select buffer mouse-3: operate"))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1631 :summarizer
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1632 (lambda (strings)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1633 (let ((bufs (length strings)))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1634 (cond ((zerop bufs) "No buffers")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1635 ((= 1 bufs) "1 buffer")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1636 (t (format "%s buffers" bufs))))))
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1637 (propertize (buffer-name) 'font-lock-face (ibuffer-buffer-name-face buffer mark)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
1638
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1639 (define-ibuffer-column size
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1640 (:inline t
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1641 :summarizer
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1642 (lambda (column-strings)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1643 (let ((total 0))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1644 (dolist (string column-strings)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1645 (setq total
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1646 ;; like, ewww ...
56630
50923476a86f (define-ibuffer-column size): Use string-to-number instead of string-to-int.
John Paul Wallington <jpw@pobox.com>
parents: 56337
diff changeset
1647 (+ (float (string-to-number string))
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1648 total)))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1649 (format "%.0f" total))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1650 (format "%s" (buffer-size)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1651
56630
50923476a86f (define-ibuffer-column size): Use string-to-number instead of string-to-int.
John Paul Wallington <jpw@pobox.com>
parents: 56337
diff changeset
1652 (define-ibuffer-column mode
50923476a86f (define-ibuffer-column size): Use string-to-number instead of string-to-int.
John Paul Wallington <jpw@pobox.com>
parents: 56337
diff changeset
1653 (:inline t
50923476a86f (define-ibuffer-column size): Use string-to-number instead of string-to-int.
John Paul Wallington <jpw@pobox.com>
parents: 56337
diff changeset
1654 :props
50923476a86f (define-ibuffer-column size): Use string-to-number instead of string-to-int.
John Paul Wallington <jpw@pobox.com>
parents: 56337
diff changeset
1655 ('mouse-face 'highlight
50923476a86f (define-ibuffer-column size): Use string-to-number instead of string-to-int.
John Paul Wallington <jpw@pobox.com>
parents: 56337
diff changeset
1656 'keymap ibuffer-mode-name-map
50923476a86f (define-ibuffer-column size): Use string-to-number instead of string-to-int.
John Paul Wallington <jpw@pobox.com>
parents: 56337
diff changeset
1657 'help-echo "mouse-2: filter by this mode"))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1658 (format "%s" mode-name))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1659
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1660 (define-ibuffer-column process
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1661 (:summarizer
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1662 (lambda (strings)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1663 (let ((total (length (delete "" strings))))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1664 (cond ((zerop total) "No processes")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1665 ((= 1 total) "1 process")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1666 (t (format "%d processes" total))))))
44870
ed308b745565 (define column process): Use `ibuffer-aif'.
Colin Walters <walters@gnu.org>
parents: 44854
diff changeset
1667 (ibuffer-aif (get-buffer-process buffer)
ed308b745565 (define column process): Use `ibuffer-aif'.
Colin Walters <walters@gnu.org>
parents: 44854
diff changeset
1668 (format "(%s %s)" it (process-status it))
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1669 ""))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1670
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1671 (define-ibuffer-column filename
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1672 (:summarizer
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1673 (lambda (strings)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1674 (let ((total (length (delete "" strings))))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1675 (cond ((zerop total) "No files")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1676 ((= 1 total) "1 file")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1677 (t (format "%d files" total))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1678 (let ((directory-abbrev-alist ibuffer-directory-abbrev-alist))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1679 (abbreviate-file-name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1680 (or buffer-file-name
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1681 (and (boundp 'dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1682 dired-directory)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1683 ""))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1684
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1685 (define-ibuffer-column filename-and-process
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1686 (:name "Filename/Process"
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1687 :summarizer
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1688 (lambda (strings)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1689 (setq strings (delete "" strings))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1690 (let ((procs 0)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1691 (files 0))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1692 (dolist (string strings)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1693 (if (string-match "\\(\?:\\`(\[\[:ascii:\]\]\+)\\)" string)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1694 (progn (setq procs (1+ procs))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1695 (if (< (match-end 0) (length string))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1696 (setq files (1+ files))))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1697 (setq files (1+ files))))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1698 (concat (cond ((zerop files) "No files")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1699 ((= 1 files) "1 file")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1700 (t (format "%d files" files)))
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1701 ", "
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1702 (cond ((zerop procs) "no processes")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1703 ((= 1 procs) "1 process")
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1704 (t (format "%d processes" procs)))))))
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1705 (let ((proc (get-buffer-process buffer))
45705
650fdcae4092 (ibuffer-mode): Do set `font-lock-defaults', and be sure to set
Colin Walters <walters@gnu.org>
parents: 45687
diff changeset
1706 (filename (ibuffer-make-column-filename buffer mark)))
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1707 (if proc
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1708 (concat (propertize (format "(%s %s)" proc (process-status proc))
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1709 'font-lock-face 'italic)
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1710 (if (> (length filename) 0)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1711 (format " %s" filename)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
1712 ""))
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1713 filename)))
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1714
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1715 (defun ibuffer-format-column (str width alignment)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1716 (let ((left (make-string (/ width 2) ? ))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1717 (right (make-string (- width (/ width 2)) ? )))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1718 (case alignment
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1719 (:right (concat left right str))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1720 (:center (concat left str right))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1721 (t (concat str left right)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1722
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1723 (defun ibuffer-buffer-name-face (buf mark)
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1724 (cond ((char-equal mark ibuffer-marked-char)
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1725 ibuffer-marked-face)
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1726 ((char-equal mark ibuffer-deletion-char)
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1727 ibuffer-deletion-face)
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1728 (t
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1729 (let ((level -1)
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1730 result)
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1731 (dolist (e ibuffer-fontification-alist result)
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1732 (when (and (> (car e) level)
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1733 (with-current-buffer buf
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1734 (eval (nth 1 e))))
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1735 (setq level (car e)
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1736 result (nth 2 e))))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1737
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1738 (defun ibuffer-insert-buffer-line (buffer mark format)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1739 "Insert a line describing BUFFER and MARK using FORMAT."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1740 (assert (eq major-mode 'ibuffer-mode))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1741 (let ((beg (point)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1742 (funcall format buffer mark)
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1743 (put-text-property beg (point) 'ibuffer-properties (list buffer mark)))
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1744 (insert "\n"))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1745
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1746 ;; This function knows a bit too much of the internals. It would be
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1747 ;; nice if it was all abstracted away.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1748 (defun ibuffer-redisplay-current ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1749 (assert (eq major-mode 'ibuffer-mode))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1750 (when (eobp)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1751 (forward-line -1))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1752 (beginning-of-line)
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1753 (let ((curformat (mapcar #'ibuffer-expand-format-entry
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1754 (ibuffer-current-format t))))
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1755 (ibuffer-clear-summary-columns curformat)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1756 (let ((buf (ibuffer-current-buffer)))
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1757 (when buf
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1758 (let ((mark (ibuffer-current-mark)))
43873
2ce5d75bd538 (ibuffer-redisplay-current): Don't move point when redisplaying a
Colin Walters <walters@gnu.org>
parents: 43768
diff changeset
1759 (save-excursion
2ce5d75bd538 (ibuffer-redisplay-current): Don't move point when redisplaying a
Colin Walters <walters@gnu.org>
parents: 43768
diff changeset
1760 (delete-region (point) (1+ (line-end-position)))
2ce5d75bd538 (ibuffer-redisplay-current): Don't move point when redisplaying a
Colin Walters <walters@gnu.org>
parents: 43768
diff changeset
1761 (ibuffer-insert-buffer-line
2ce5d75bd538 (ibuffer-redisplay-current): Don't move point when redisplaying a
Colin Walters <walters@gnu.org>
parents: 43768
diff changeset
1762 buf mark
2ce5d75bd538 (ibuffer-redisplay-current): Don't move point when redisplaying a
Colin Walters <walters@gnu.org>
parents: 43768
diff changeset
1763 (ibuffer-current-format)))
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1764 (when ibuffer-shrink-to-minimum-size
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1765 (ibuffer-shrink-to-fit)))))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
1766
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1767 (defun ibuffer-map-on-mark (mark func)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1768 (ibuffer-map-lines
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1769 #'(lambda (buf mk)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1770 (if (char-equal mark mk)
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1771 (funcall func buf mark)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1772 nil))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1773
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1774 (defun ibuffer-map-lines (function &optional nomodify group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1775 "Call FUNCTION for each buffer.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1776 Don't set the ibuffer modification flag iff NOMODIFY is non-nil.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1777
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1778 If optional argument GROUP is non-nil, then only call FUNCTION on
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1779 buffers in filtering group GROUP.
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1780
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1781 FUNCTION is called with two arguments:
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1782 the buffer object itself and the current mark symbol."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1783 (assert (eq major-mode 'ibuffer-mode))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1784 (ibuffer-forward-line 0)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1785 (let* ((orig-target-line (1+ (count-lines (save-excursion
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1786 (goto-char (point-min))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1787 (ibuffer-forward-line 0)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1788 (point))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1789 (point))))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1790 (target-line-offset orig-target-line)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1791 (ibuffer-map-lines-total 0)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1792 (ibuffer-map-lines-count 0))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1793 (unwind-protect
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1794 (progn
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1795 (setq buffer-read-only nil)
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1796 (goto-char (point-min))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1797 (ibuffer-forward-line 0 t)
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1798 (while (and (not (eobp))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1799 (not (get-text-property (point) 'ibuffer-summary))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1800 (progn
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1801 (ibuffer-forward-line 0 t)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1802 (and (not (eobp))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1803 (not (get-text-property (point) 'ibuffer-summary)))))
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1804 (let ((result
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1805 (if (buffer-live-p (ibuffer-current-buffer))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1806 (when (or (null group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1807 (ibuffer-aif (get-text-property (point) 'ibuffer-filter-group)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1808 (equal group it)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1809 (save-excursion
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1810 (funcall function
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1811 (ibuffer-current-buffer)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1812 (ibuffer-current-mark))))
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1813 ;; Kill the line if the buffer is dead
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1814 'kill)))
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1815 ;; A given mapping function should return:
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1816 ;; `nil' if it chose not to affect the buffer
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1817 ;; `kill' means the remove line from the buffer list
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1818 ;; `t' otherwise
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1819 (incf ibuffer-map-lines-total)
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1820 (cond ((null result)
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1821 (forward-line 1))
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1822 ((eq result 'kill)
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1823 (delete-region (line-beginning-position)
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1824 (1+ (line-end-position)))
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1825 (incf ibuffer-map-lines-count)
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1826 (when (< ibuffer-map-lines-total
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1827 orig-target-line)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1828 (decf target-line-offset)))
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1829 (t
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1830 (incf ibuffer-map-lines-count)
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1831 (forward-line 1)))))
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1832 ibuffer-map-lines-count)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1833 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1834 (setq buffer-read-only t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1835 (unless nomodify
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1836 (set-buffer-modified-p nil))
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1837 (goto-char (point-min))
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
1838 (ibuffer-forward-line 0)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1839 (ibuffer-forward-line (1- target-line-offset))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1840
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1841 (defun ibuffer-get-marked-buffers ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1842 "Return a list of buffer objects currently marked."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1843 (delq nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1844 (mapcar #'(lambda (e)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1845 (when (eq (cdr e) ibuffer-marked-char)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1846 (car e)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1847 (ibuffer-current-state-list))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1848
44659
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1849 (defun ibuffer-current-state-list (&optional pos)
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1850 "Return a list like (BUF . MARK) of all buffers in an ibuffer.
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1851 If POS is non-nil, return a list like (BUF MARK POINT), where POINT is
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1852 the value of point at the beginning of the line for that buffer."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1853 (let ((ibuffer-current-state-list-tmp '()))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1854 ;; ah, if only we had closures. I bet this will mysteriously
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1855 ;; break later. Don't blame me.
44659
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1856 (if pos
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1857 (ibuffer-map-lines-nomodify
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1858 #'(lambda (buf mark)
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1859 (when (buffer-live-p buf)
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1860 (push (list buf mark (point)) ibuffer-current-state-list-tmp))))
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1861 (ibuffer-map-lines-nomodify
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1862 #'(lambda (buf mark)
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1863 (when (buffer-live-p buf)
9d84a456037d (ibuffer-visit-buffer): Optionally allow reducing to one window.
Colin Walters <walters@gnu.org>
parents: 44571
diff changeset
1864 (push (cons buf mark) ibuffer-current-state-list-tmp)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1865 (nreverse ibuffer-current-state-list-tmp)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1866
44501
5fa7b088231f Fix previous change.
Colin Walters <walters@gnu.org>
parents: 44482
diff changeset
1867 (defun ibuffer-current-buffers-with-marks (curbufs)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1868 "Return a list like (BUF . MARK) of all open buffers."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1869 (let ((bufs (ibuffer-current-state-list)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1870 (mapcar #'(lambda (buf) (let ((e (assq buf bufs)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1871 (if e
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1872 e
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1873 (cons buf ? ))))
44501
5fa7b088231f Fix previous change.
Colin Walters <walters@gnu.org>
parents: 44482
diff changeset
1874 curbufs)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1875
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1876 (defun ibuffer-buf-matches-predicates (buf predicates)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1877 (let ((hit nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1878 (name (buffer-name buf)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1879 (dolist (pred predicates)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1880 (when (if (stringp pred)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1881 (string-match pred name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1882 (funcall pred buf))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1883 (setq hit t)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1884 hit))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
1885
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1886 (defun ibuffer-filter-buffers (ibuffer-buf last bmarklist all)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1887 (let ((ext-loaded (featurep 'ibuf-ext)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1888 (delq nil
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1889 (mapcar
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1890 ;; element should be like (BUFFER . MARK)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1891 #'(lambda (e)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1892 (let* ((buf (car e)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1893 (when
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1894 ;; This takes precedence over anything else
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1895 (or (and ibuffer-always-show-last-buffer
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1896 (eq last buf))
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1897 (funcall (if ext-loaded
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1898 #'ibuffer-ext-visible-p
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1899 #'ibuffer-visible-p)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1900 buf all ibuffer-buf))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1901 e)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
1902 bmarklist))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1903
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1904 (defun ibuffer-visible-p (buf all &optional ibuffer-buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1905 (and (or all
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1906 (not
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1907 (ibuffer-buf-matches-predicates buf ibuffer-maybe-show-predicates)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1908 (or ibuffer-view-ibuffer
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1909 (and ibuffer-buf
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1910 (not (eq ibuffer-buf buf))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1911
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1912 ;; This function is a special case; it's not defined by
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1913 ;; `ibuffer-define-sorter'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1914 (defun ibuffer-do-sort-by-recency ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1915 "Sort the buffers by last view time."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1916 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1917 (setq ibuffer-sorting-mode 'recency)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1918 (ibuffer-redisplay t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1919
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1920 (defun ibuffer-update-format ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1921 (when (null ibuffer-current-format)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1922 (setq ibuffer-current-format 0))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1923 (when (null ibuffer-formats)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1924 (error "Ibuffer error: no formats!")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1925
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1926 (defun ibuffer-switch-format ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1927 "Switch the current display format."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1928 (interactive)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1929 (assert (eq major-mode 'ibuffer-mode))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1930 (unless (consp ibuffer-formats)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1931 (error "Ibuffer error: No formats!"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1932 (setq ibuffer-current-format
43249
783a6eac348c (ibuffer-switch-format): Supply required argument for
Colin Walters <walters@gnu.org>
parents: 43104
diff changeset
1933 (if (>= ibuffer-current-format (1- (length (ibuffer-current-formats nil))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1934 0
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1935 (1+ ibuffer-current-format)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1936 (ibuffer-update-format)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1937 (ibuffer-redisplay t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1938
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1939 (defun ibuffer-update-title-and-summary (format)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1940 (assert (eq major-mode 'ibuffer-mode))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1941 ;; Don't do funky font-lock stuff here
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1942 (let ((after-change-functions nil))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1943 (if (get-text-property (point-min) 'ibuffer-title)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1944 (delete-region (point-min)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1945 (next-single-property-change
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1946 (point-min) 'ibuffer-title)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1947 (goto-char (point-min))
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1948 (add-text-properties
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1949 (point)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1950 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1951 (let ((opos (point)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1952 ;; Insert the title names.
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1953 (dolist (element format)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1954 (insert
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1955 (if (stringp element)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1956 element
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1957 (let ((sym (car element))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1958 (min (cadr element))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1959 ;; (max (caddr element))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1960 (align (cadddr element)))
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
1961 ;; Ignore a negative min when we're inserting the title
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1962 (when (minusp min)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1963 (setq min (- min)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1964 (let* ((name (or (get sym 'ibuffer-column-name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1965 (error "Unknown column %s in ibuffer-formats" sym)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1966 (len (length name)))
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1967 (if (< len min)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1968 (ibuffer-format-column name
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1969 (- min len)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1970 align)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1971 name))))))
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
1972 (add-text-properties opos (point) `(ibuffer-title-header t))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1973 (insert "\n")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1974 ;; Add the underlines
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1975 (let ((str (save-excursion
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1976 (forward-line -1)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1977 (beginning-of-line)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1978 (buffer-substring (point) (line-end-position)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1979 (apply #'insert (mapcar
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1980 #'(lambda (c)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1981 (if (not (or (char-equal c ? )
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1982 (char-equal c ?\n)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1983 ?-
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1984 ? ))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1985 str)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1986 (insert "\n"))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
1987 (point))
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
1988 `(ibuffer-title t font-lock-face ,ibuffer-title-face))
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1989 ;; Now, insert the summary columns.
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1990 (goto-char (point-max))
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1991 (if (get-text-property (1- (point-max)) 'ibuffer-summary)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1992 (delete-region (previous-single-property-change
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1993 (point-max) 'ibuffer-summary)
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
1994 (point-max)))
51074
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
1995 (if ibuffer-display-summary
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
1996 (add-text-properties
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
1997 (point)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
1998 (progn
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
1999 (insert "\n")
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2000 (dolist (element format)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2001 (insert
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2002 (if (stringp element)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2003 (make-string (length element) ? )
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2004 (let ((sym (car element)))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2005 (let ((min (cadr element))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2006 ;; (max (caddr element))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2007 (align (cadddr element)))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2008 ;; Ignore a negative min when we're inserting the title
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2009 (when (minusp min)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2010 (setq min (- min)))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2011 (let* ((summary (if (get sym 'ibuffer-column-summarizer)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2012 (funcall (get sym 'ibuffer-column-summarizer)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2013 (get sym 'ibuffer-column-summary))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2014 (make-string (length (get sym 'ibuffer-column-name))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2015 ? )))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2016 (len (length summary)))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2017 (if (< len min)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2018 (ibuffer-format-column summary
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2019 (- min len)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2020 align)
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2021 summary)))))))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2022 (point))
9765d874366d (ibuffer-display-summary): New customizable variable.
John Paul Wallington <jpw@pobox.com>
parents: 50708
diff changeset
2023 `(ibuffer-summary t)))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2024
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2025 (defun ibuffer-update-mode-name ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2026 (setq mode-name (format "Ibuffer by %s" (if ibuffer-sorting-mode
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2027 ibuffer-sorting-mode
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
2028 "view time")))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2029 (when ibuffer-sorting-reversep
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2030 (setq mode-name (concat mode-name " [rev]")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2031 (when (and (featurep 'ibuf-ext)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2032 ibuffer-auto-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2033 (setq mode-name (concat mode-name " (Auto)")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2034 (let ((result ""))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2035 (when (featurep 'ibuf-ext)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2036 (dolist (qualifier ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2037 (setq result
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2038 (concat result (ibuffer-format-qualifier qualifier))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2039 (if ibuffer-use-header-line
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2040 (setq header-line-format
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2041 (when ibuffer-filtering-qualifiers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2042 (replace-regexp-in-string "%" "%%"
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2043 (concat mode-name result))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2044 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2045 (setq mode-name (concat mode-name result))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2046 (when (boundp 'header-line-format)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2047 (setq header-line-format nil)))))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2048
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2049 (defun ibuffer-redisplay (&optional silent)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2050 "Redisplay the current list of buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2051 This does not show new buffers; use `ibuffer-update' for that.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2052
48343
35889dbb9b84 (ibuffer-use-other-window, ibuffer-use-header-line)
John Paul Wallington <jpw@pobox.com>
parents: 48058
diff changeset
2053 If optional arg SILENT is non-nil, do not display progress messages."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2054 (interactive)
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
2055 (ibuffer-forward-line 0)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2056 (unless silent
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2057 (message "Redisplaying current buffer list..."))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2058 (let ((blist (ibuffer-current-state-list)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2059 (when (null blist)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2060 (if (and (featurep 'ibuf-ext)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2061 (or ibuffer-filtering-qualifiers ibuffer-hidden-filter-groups))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2062 (message "No buffers! (note: filtering in effect)")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2063 (error "No buffers!")))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2064 (ibuffer-redisplay-engine blist t)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2065 (ibuffer-update-mode-name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2066 (unless silent
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
2067 (message "Redisplaying current buffer list...done"))
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
2068 (ibuffer-forward-line 0)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2069
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2070 (defun ibuffer-update (arg &optional silent)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2071 "Regenerate the list of all buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2072 Display buffers whose name matches one of `ibuffer-maybe-show-predicates'
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
2073 iff arg ARG is non-nil.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2074
48343
35889dbb9b84 (ibuffer-use-other-window, ibuffer-use-header-line)
John Paul Wallington <jpw@pobox.com>
parents: 48058
diff changeset
2075 If optional arg SILENT is non-nil, do not display progress messages."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2076 (interactive "P")
44571
be1cb50b8859 (ibuffer-forward-line): Just skip header if we're
Colin Walters <walters@gnu.org>
parents: 44501
diff changeset
2077 (ibuffer-forward-line 0)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2078 (let* ((bufs (buffer-list))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2079 (blist (ibuffer-filter-buffers
47114
b0e4184605e5 * ibuffer.el (ibuffer-update): Use `minibufferp'. Expand `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 46824
diff changeset
2080 (current-buffer)
b0e4184605e5 * ibuffer.el (ibuffer-update): Use `minibufferp'. Expand `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 46824
diff changeset
2081 (if (and
b0e4184605e5 * ibuffer.el (ibuffer-update): Use `minibufferp'. Expand `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 46824
diff changeset
2082 (cadr bufs)
b0e4184605e5 * ibuffer.el (ibuffer-update): Use `minibufferp'. Expand `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 46824
diff changeset
2083 (eq ibuffer-always-show-last-buffer
b0e4184605e5 * ibuffer.el (ibuffer-update): Use `minibufferp'. Expand `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 46824
diff changeset
2084 :nomini)
47624
dbdc31f1646b (ibuffer-update): Call `minibufferp' with argument
John Paul Wallington <jpw@pobox.com>
parents: 47378
diff changeset
2085 (minibufferp (cadr bufs)))
47147
bee830f164b7 (ibuffer-update): Revert expansion of `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 47114
diff changeset
2086 (caddr bufs)
47114
b0e4184605e5 * ibuffer.el (ibuffer-update): Use `minibufferp'. Expand `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 46824
diff changeset
2087 (cadr bufs))
b0e4184605e5 * ibuffer.el (ibuffer-update): Use `minibufferp'. Expand `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 46824
diff changeset
2088 (ibuffer-current-buffers-with-marks bufs)
b0e4184605e5 * ibuffer.el (ibuffer-update): Use `minibufferp'. Expand `caddr'.
John Paul Wallington <jpw@pobox.com>
parents: 46824
diff changeset
2089 arg)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2090 (when (null blist)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2091 (if (and (featurep 'ibuf-ext)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2092 ibuffer-filtering-qualifiers)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2093 (message "No buffers! (note: filtering in effect)")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2094 (error "No buffers!")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2095 (unless silent
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2096 (message "Updating buffer list..."))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2097 (ibuffer-redisplay-engine blist arg)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2098 (ibuffer-update-mode-name)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2099 (unless silent
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2100 (message "Updating buffer list...done")))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2101 (if (eq ibuffer-shrink-to-minimum-size 'onewindow)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2102 (ibuffer-shrink-to-fit t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2103 (when ibuffer-shrink-to-minimum-size
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2104 (ibuffer-shrink-to-fit)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2105 (ibuffer-forward-line 0))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2106
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2107 (defun ibuffer-sort-bufferlist (bmarklist)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2108 (let* ((sortdat (assq ibuffer-sorting-mode
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2109 ibuffer-sorting-functions-alist))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2110 (func (caddr sortdat)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2111 (let ((result
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2112 ;; actually sort the buffers
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2113 (if (and sortdat func)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2114 (sort bmarklist func)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2115 bmarklist)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2116 ;; perhaps reverse the sorted buffer list
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2117 (if ibuffer-sorting-reversep
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2118 (nreverse result)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2119 result))))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2120
45270
087cbd1a5087 (ibuffer-insert-filter-group): New argument filter-string.
Colin Walters <walters@gnu.org>
parents: 45220
diff changeset
2121 (defun ibuffer-insert-filter-group (name display-name filter-string format bmarklist)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2122 (add-text-properties
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2123 (point)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2124 (progn
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2125 (insert "[ " display-name " ]")
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2126 (point))
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2127 `(ibuffer-filter-group-name
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2128 ,name
45687
434d9f56eab8 (ibuffer-category-alist): Delete.
Colin Walters <walters@gnu.org>
parents: 45443
diff changeset
2129 font-lock-face ,ibuffer-filter-group-name-face
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2130 keymap ,ibuffer-mode-filter-group-map
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2131 mouse-face highlight
50444
2ca336b1259d (ibuffer-insert-filter-group): `help-echo' text property dynamically
John Paul Wallington <jpw@pobox.com>
parents: 49723
diff changeset
2132 help-echo ,(let ((echo '(if tooltip-mode
2ca336b1259d (ibuffer-insert-filter-group): `help-echo' text property dynamically
John Paul Wallington <jpw@pobox.com>
parents: 49723
diff changeset
2133 "mouse-1: toggle marks in this group\nmouse-2: hide/show this filtering group"
50448
6ced6cabcc81 (ibuffer-insert-filter-group): Fix spazz.
John Paul Wallington <jpw@pobox.com>
parents: 50444
diff changeset
2134 "mouse-1: toggle marks mouse-2: hide/show")))
50444
2ca336b1259d (ibuffer-insert-filter-group): `help-echo' text property dynamically
John Paul Wallington <jpw@pobox.com>
parents: 49723
diff changeset
2135 (if (> (length filter-string) 0)
50448
6ced6cabcc81 (ibuffer-insert-filter-group): Fix spazz.
John Paul Wallington <jpw@pobox.com>
parents: 50444
diff changeset
2136 `(concat ,filter-string
6ced6cabcc81 (ibuffer-insert-filter-group): Fix spazz.
John Paul Wallington <jpw@pobox.com>
parents: 50444
diff changeset
2137 (if tooltip-mode "\n" " ")
6ced6cabcc81 (ibuffer-insert-filter-group): Fix spazz.
John Paul Wallington <jpw@pobox.com>
parents: 50444
diff changeset
2138 ,echo)
50444
2ca336b1259d (ibuffer-insert-filter-group): `help-echo' text property dynamically
John Paul Wallington <jpw@pobox.com>
parents: 49723
diff changeset
2139 echo))))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2140 (insert "\n")
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2141 (when bmarklist
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2142 (put-text-property
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2143 (point)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2144 (progn
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2145 (dolist (entry bmarklist)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2146 (ibuffer-insert-buffer-line (car entry) (cdr entry) format))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2147 (point))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2148 'ibuffer-filter-group
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2149 name)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2150
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2151 (defun ibuffer-redisplay-engine (bmarklist &optional all)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2152 (assert (eq major-mode 'ibuffer-mode))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2153 (let* ((--ibuffer-insert-buffers-and-marks-format
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2154 (ibuffer-current-format))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2155 (--ibuffer-expanded-format (mapcar #'ibuffer-expand-format-entry
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2156 (ibuffer-current-format t)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2157 (orig (count-lines (point-min) (point)))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2158 ;; Inhibit font-lock caching tricks, since we're modifying the
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2159 ;; entire buffer at once
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2160 (after-change-functions nil)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2161 (ext-loaded (featurep 'ibuf-ext))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2162 (bgroups (if ext-loaded
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2163 (ibuffer-generate-filter-groups bmarklist)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2164 (list (cons "Default" bmarklist)))))
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
2165 (ibuffer-clear-summary-columns --ibuffer-expanded-format)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2166 (unwind-protect
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2167 (progn
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2168 (setq buffer-read-only nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2169 (erase-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2170 (ibuffer-update-format)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2171 (dolist (group (nreverse bgroups))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2172 (let* ((name (car group))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2173 (disabled (and ext-loaded
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2174 (member name ibuffer-hidden-filter-groups)))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2175 (bmarklist (cdr group)))
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2176 (unless (and (null bmarklist)
55388
7df6b4d2d69d 2004-05-06 Romain Francoise <romain@orebokech.com> (tiny change)
John Paul Wallington <jpw@pobox.com>
parents: 54813
diff changeset
2177 (not disabled)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2178 ext-loaded
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2179 (null ibuffer-show-empty-filter-groups))
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2180 (ibuffer-insert-filter-group
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2181 name
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2182 (if disabled (concat name " ...") name)
45270
087cbd1a5087 (ibuffer-insert-filter-group): New argument filter-string.
Colin Walters <walters@gnu.org>
parents: 45220
diff changeset
2183 (if ext-loaded
087cbd1a5087 (ibuffer-insert-filter-group): New argument filter-string.
Colin Walters <walters@gnu.org>
parents: 45220
diff changeset
2184 (ibuffer-format-filter-group-data name)
087cbd1a5087 (ibuffer-insert-filter-group): New argument filter-string.
Colin Walters <walters@gnu.org>
parents: 45220
diff changeset
2185 "")
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2186 --ibuffer-insert-buffers-and-marks-format
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2187 (if disabled
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2188 nil
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2189 (ibuffer-sort-bufferlist bmarklist))))))
43768
643faa52276e (ibuffer-update-mode-name): Substitute "view time" instead of
Colin Walters <walters@gnu.org>
parents: 43489
diff changeset
2190 (ibuffer-update-title-and-summary --ibuffer-expanded-format))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2191 (setq buffer-read-only t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2192 (set-buffer-modified-p ibuffer-did-modification)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2193 (setq ibuffer-did-modification nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2194 (goto-line (1+ orig)))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2195
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2196 (defun ibuffer-quit ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2197 "Quit this `ibuffer' session.
54813
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
2198 Try to restore the previous window configuration iff
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
2199 `ibuffer-restore-window-config-on-quit' is non-nil."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2200 (interactive)
54813
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
2201 (if ibuffer-restore-window-config-on-quit
56630
50923476a86f (define-ibuffer-column size): Use string-to-number instead of string-to-int.
John Paul Wallington <jpw@pobox.com>
parents: 56337
diff changeset
2202 (progn
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2203 (bury-buffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2204 (unless (= (count-windows) 1)
54813
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
2205 (set-window-configuration ibuffer-prev-window-config)))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2206 (bury-buffer)))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2207
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2208 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2209 (defun ibuffer-list-buffers (&optional files-only)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2210 "Display a list of buffers, in another window.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2211 If optional argument FILES-ONLY is non-nil, then add a filter for
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2212 buffers which are visiting a file."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2213 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2214 (ibuffer t nil (when files-only
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2215 '((filename . ".*"))) t))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2216
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2217 ;;;###autoload
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2218 (defun ibuffer-other-window (&optional files-only)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2219 "Like `ibuffer', but displayed in another window by default.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2220 If optional argument FILES-ONLY is non-nil, then add a filter for
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2221 buffers which are visiting a file."
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2222 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2223 (ibuffer t nil (when files-only
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2224 '((filename . ".*")))))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2225
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2226 ;;;###autoload
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2227 (defun ibuffer (&optional other-window-p name qualifiers noselect
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2228 shrink filter-groups formats)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2229 "Begin using `ibuffer' to edit a list of buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2230 Type 'h' after entering ibuffer for more information.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2231
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2232 Optional argument OTHER-WINDOW-P says to use another window.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2233 Optional argument NAME specifies the name of the buffer; it defaults
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2234 to \"*Ibuffer*\".
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2235 Optional argument QUALIFIERS is an initial set of filtering qualifiers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2236 to use; see `ibuffer-filtering-qualifiers'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2237 Optional argument NOSELECT means don't select the Ibuffer buffer.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2238 Optional argument SHRINK means shrink the buffer to minimal size. The
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2239 special value `onewindow' means always use another window.
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2240 Optional argument FILTER-GROUPS is an initial set of filtering
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2241 groups to use; see `ibuffer-filter-groups'.
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2242 Optional argument FORMATS is the value to use for `ibuffer-formats'.
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2243 If specified, then the variable `ibuffer-formats' will have that value
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2244 locally in this buffer."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2245 (interactive "P")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2246 (when ibuffer-use-other-window
44137
32c7d9355caf (ibuffer): If the user has `ibuffer-use-other-window' non-nil, then
Colin Walters <walters@gnu.org>
parents: 44021
diff changeset
2247 (setq other-window-p t))
54813
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
2248 (setq ibuffer-prev-window-config (current-window-configuration))
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
2249 (let ((buf (get-buffer-create (or name "*Ibuffer*"))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2250 (if other-window-p
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2251 (funcall (if noselect #'(lambda (buf) (display-buffer buf t)) #'pop-to-buffer) buf)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2252 (funcall (if noselect #'display-buffer #'switch-to-buffer) buf))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2253 (with-current-buffer buf
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2254 (save-selected-window
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2255 ;; We switch to the buffer's window in order to be able
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2256 ;; to modify the value of point
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2257 (select-window (get-buffer-window buf))
51741
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
2258 (or (eq major-mode 'ibuffer-mode)
09f746b0e209 (ibuffer-backward-line, ibuffer-forward-line)
John Paul Wallington <jpw@pobox.com>
parents: 51074
diff changeset
2259 (ibuffer-mode))
54813
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
2260 (setq ibuffer-restore-window-config-on-quit other-window-p)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2261 (when shrink
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2262 (setq ibuffer-shrink-to-minimum-size shrink))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2263 (when qualifiers
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2264 (require 'ibuf-ext)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2265 (setq ibuffer-filtering-qualifiers qualifiers))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2266 (when filter-groups
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2267 (require 'ibuf-ext)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2268 (setq ibuffer-filter-groups filter-groups))
45443
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2269 (when formats
8fd13e1863ed (toplevel): Require font-lock, to get the face definitions.
Colin Walters <walters@gnu.org>
parents: 45270
diff changeset
2270 (set (make-local-variable 'ibuffer-formats) formats))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2271 (ibuffer-update nil)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2272 ;; Skip the group name by default.
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2273 (ibuffer-forward-line 0 t)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2274 (unwind-protect
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2275 (progn
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2276 (setq buffer-read-only nil)
48343
35889dbb9b84 (ibuffer-use-other-window, ibuffer-use-header-line)
John Paul Wallington <jpw@pobox.com>
parents: 48058
diff changeset
2277 (run-hooks 'ibuffer-hook))
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2278 (setq buffer-read-only t))
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2279 (unless ibuffer-expert
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2280 (message "Commands: m, u, t, RET, g, k, S, D, Q; q to quit; h for help"))))))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2281
44482
510e978b6292 (ibuffer-canonicalize-state-list): Delete unused function.
Colin Walters <walters@gnu.org>
parents: 44245
diff changeset
2282 (put 'ibuffer-mode 'mode-class 'special)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2283 (defun ibuffer-mode ()
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2284 "A major mode for viewing a list of buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2285 In ibuffer, you can conveniently perform many operations on the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2286 currently open buffers, in addition to filtering your view to a
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2287 particular subset of them, and sorting by various criteria.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2288
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2289 Operations on marked buffers:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2290
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2291 '\\[ibuffer-do-save]' - Save the marked buffers
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2292 '\\[ibuffer-do-view]' - View the marked buffers in this frame.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2293 '\\[ibuffer-do-view-other-frame]' - View the marked buffers in another frame.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2294 '\\[ibuffer-do-revert]' - Revert the marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2295 '\\[ibuffer-do-toggle-read-only]' - Toggle read-only state of marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2296 '\\[ibuffer-do-delete]' - Kill the marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2297 '\\[ibuffer-do-replace-regexp]' - Replace by regexp in each of the marked
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2298 buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2299 '\\[ibuffer-do-query-replace]' - Query replace in each of the marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2300 '\\[ibuffer-do-query-replace-regexp]' - As above, with a regular expression.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2301 '\\[ibuffer-do-print]' - Print the marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2302 '\\[ibuffer-do-occur]' - List lines in all marked buffers which match
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2303 a given regexp (like the function `occur').
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2304 '\\[ibuffer-do-shell-command-pipe]' - Pipe the contents of the marked
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2305 buffers to a shell command.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2306 '\\[ibuffer-do-shell-command-pipe-replace]' - Replace the contents of the marked
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2307 buffers with the output of a shell command.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2308 '\\[ibuffer-do-shell-command-file]' - Run a shell command with the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2309 buffer's file as an argument.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2310 '\\[ibuffer-do-eval]' - Evaluate a form in each of the marked buffers. This
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2311 is a very flexible command. For example, if you want to make all
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2312 of the marked buffers read only, try using (toggle-read-only 1) as
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2313 the input form.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2314 '\\[ibuffer-do-view-and-eval]' - As above, but view each buffer while the form
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2315 is evaluated.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2316 '\\[ibuffer-do-kill-lines]' - Remove the marked lines from the *Ibuffer* buffer,
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2317 but don't kill the associated buffer.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2318 '\\[ibuffer-do-kill-on-deletion-marks]' - Kill all buffers marked for deletion.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2319
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2320 Marking commands:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2321
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2322 '\\[ibuffer-mark-forward]' - Mark the buffer at point.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2323 '\\[ibuffer-toggle-marks]' - Unmark all currently marked buffers, and mark
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2324 all unmarked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2325 '\\[ibuffer-unmark-forward]' - Unmark the buffer at point.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2326 '\\[ibuffer-unmark-backward]' - Unmark the buffer at point, and move to the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2327 previous line.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2328 '\\[ibuffer-unmark-all]' - Unmark all marked buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2329 '\\[ibuffer-mark-by-mode]' - Mark buffers by major mode.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2330 '\\[ibuffer-mark-unsaved-buffers]' - Mark all \"unsaved\" buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2331 This means that the buffer is modified, and has an associated file.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2332 '\\[ibuffer-mark-modified-buffers]' - Mark all modified buffers,
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2333 regardless of whether or not they have an associated file.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2334 '\\[ibuffer-mark-special-buffers]' - Mark all buffers whose name begins and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2335 ends with '*'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2336 '\\[ibuffer-mark-dissociated-buffers]' - Mark all buffers which have
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2337 an associated file, but that file doesn't currently exist.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2338 '\\[ibuffer-mark-read-only-buffers]' - Mark all read-only buffers.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2339 '\\[ibuffer-mark-dired-buffers]' - Mark buffers in `dired' mode.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2340 '\\[ibuffer-mark-help-buffers]' - Mark buffers in `help-mode', `apropos-mode', etc.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2341 '\\[ibuffer-mark-old-buffers]' - Mark buffers older than `ibuffer-old-time'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2342 '\\[ibuffer-mark-for-delete]' - Mark the buffer at point for deletion.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2343 '\\[ibuffer-mark-by-name-regexp]' - Mark buffers by their name, using a regexp.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2344 '\\[ibuffer-mark-by-mode-regexp]' - Mark buffers by their major mode, using a regexp.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2345 '\\[ibuffer-mark-by-file-name-regexp]' - Mark buffers by their filename, using a regexp.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2346
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2347 Filtering commands:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2348
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2349 '\\[ibuffer-filter-by-mode]' - Add a filter by major mode.
46824
86fa1b4393a2 (ibuffer-mode-map): Added ibuffer-filter-by-used-mode.
Colin Walters <walters@gnu.org>
parents: 46772
diff changeset
2350 '\\[ibuffer-filter-by-used-mode]' - Add a filter by major mode now in use.
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2351 '\\[ibuffer-filter-by-name]' - Add a filter by buffer name.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2352 '\\[ibuffer-filter-by-content]' - Add a filter by buffer content.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2353 '\\[ibuffer-filter-by-filename]' - Add a filter by filename.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2354 '\\[ibuffer-filter-by-size-gt]' - Add a filter by buffer size.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2355 '\\[ibuffer-filter-by-size-lt]' - Add a filter by buffer size.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2356 '\\[ibuffer-filter-by-predicate]' - Add a filter by an arbitrary Lisp predicate.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2357 '\\[ibuffer-save-filters]' - Save the current filters with a name.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2358 '\\[ibuffer-switch-to-saved-filters]' - Switch to previously saved filters.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2359 '\\[ibuffer-add-saved-filters]' - Add saved filters to current filters.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2360 '\\[ibuffer-or-filter]' - Replace the top two filters with their logical OR.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2361 '\\[ibuffer-pop-filter]' - Remove the top filter.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2362 '\\[ibuffer-negate-filter]' - Invert the logical sense of the top filter.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2363 '\\[ibuffer-decompose-filter]' - Break down the topmost filter.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2364 '\\[ibuffer-filter-disable]' - Remove all filtering currently in effect.
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2365
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2366 Filter group commands:
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2367
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2368 '\\[ibuffer-filters-to-filter-group]' - Create filter group from filters.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2369 '\\[ibuffer-pop-filter-group]' - Remove top filter group.
44936
ee04dcf4fae7 (ibuffer-mode): Additional documentation on filter groups.
Colin Walters <walters@gnu.org>
parents: 44870
diff changeset
2370 '\\[ibuffer-forward-filter-group]' - Move to the next filter group.
ee04dcf4fae7 (ibuffer-mode): Additional documentation on filter groups.
Colin Walters <walters@gnu.org>
parents: 44870
diff changeset
2371 '\\[ibuffer-backward-filter-group]' - Move to the previous filter group.
ee04dcf4fae7 (ibuffer-mode): Additional documentation on filter groups.
Colin Walters <walters@gnu.org>
parents: 44870
diff changeset
2372 '\\[ibuffer-clear-filter-groups]' - Remove all active filter groups.
ee04dcf4fae7 (ibuffer-mode): Additional documentation on filter groups.
Colin Walters <walters@gnu.org>
parents: 44870
diff changeset
2373 '\\[ibuffer-save-filter-groups]' - Save the current groups with a name.
ee04dcf4fae7 (ibuffer-mode): Additional documentation on filter groups.
Colin Walters <walters@gnu.org>
parents: 44870
diff changeset
2374 '\\[ibuffer-switch-to-saved-filter-groups]' - Restore previously saved groups.
ee04dcf4fae7 (ibuffer-mode): Additional documentation on filter groups.
Colin Walters <walters@gnu.org>
parents: 44870
diff changeset
2375 '\\[ibuffer-delete-saved-filter-groups]' - Delete previously saved groups.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49410
diff changeset
2376
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2377 Sorting commands:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2378
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2379 '\\[ibuffer-toggle-sorting-mode]' - Rotate between the various sorting modes.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2380 '\\[ibuffer-invert-sorting]' - Reverse the current sorting order.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2381 '\\[ibuffer-do-sort-by-alphabetic]' - Sort the buffers lexicographically.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2382 '\\[ibuffer-do-sort-by-recency]' - Sort the buffers by last viewing time.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2383 '\\[ibuffer-do-sort-by-size]' - Sort the buffers by size.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2384 '\\[ibuffer-do-sort-by-major-mode]' - Sort the buffers by major mode.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2385
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2386 Other commands:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2387
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2388 '\\[ibuffer-switch-format]' - Change the current display format.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2389 '\\[forward-line]' - Move point to the next line.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2390 '\\[previous-line]' - Move point to the previous line.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2391 '\\[ibuffer-update]' - As above, but add new buffers to the list.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2392 '\\[ibuffer-quit]' - Bury the Ibuffer buffer.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2393 '\\[describe-mode]' - This help.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2394 '\\[ibuffer-diff-with-file]' - View the differences between this buffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2395 and its associated file.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2396 '\\[ibuffer-visit-buffer]' - View the buffer on this line.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2397 '\\[ibuffer-visit-buffer-other-window]' - As above, but in another window.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2398 '\\[ibuffer-visit-buffer-other-window-noselect]' - As both above, but don't select
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2399 the new window.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2400 '\\[ibuffer-bury-buffer]' - Bury (not kill!) the buffer on this line.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2401
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2402 ** Information on Filtering:
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2403
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2404 You can filter your ibuffer view via different critera. Each Ibuffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2405 buffer has its own stack of active filters. For example, suppose you
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2406 are working on an Emacs Lisp project. You can create an Ibuffer
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2407 buffer displays buffers in just `emacs-lisp' modes via
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2408 '\\[ibuffer-filter-by-mode] emacs-lisp-mode RET'. In this case, there
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2409 is just one entry on the filtering stack.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2410
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2411 You can also combine filters. The various filtering commands push a
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2412 new filter onto the stack, and the filters combine to show just
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2413 buffers which satisfy ALL criteria on the stack. For example, suppose
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2414 you only want to see buffers in `emacs-lisp' mode, whose names begin
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2415 with \"gnus\". You can accomplish this via:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2416 '\\[ibuffer-filter-by-mode] emacs-lisp-mode RET
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2417 \\[ibuffer-filter-by-name] ^gnus RET'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2418
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2419 Additionally, you can OR the top two filters together with
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2420 '\\[ibuffer-or-filters]'. To see all buffers in either
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2421 `emacs-lisp-mode' or `lisp-interaction-mode', type:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2422
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2423 '\\[ibuffer-filter-by-mode] emacs-lisp-mode RET \\[ibuffer-filter-by-mode] lisp-interaction-mode RET \\[ibuffer-or-filters]'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2424
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2425 Filters can also be saved and restored using mnemonic names: see the
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2426 functions `ibuffer-save-filters' and `ibuffer-switch-to-saved-filters'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2427
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2428 To remove the top filter on the stack, use '\\[ibuffer-pop-filter]', and
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2429 to disable all filtering currently in effect, use
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2430 '\\[ibuffer-filter-disable]'.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2431
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2432 ** Filter Groups:
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2433
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2434 Once one has mastered filters, the next logical step up is \"filter
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2435 groups\". A filter group is basically a named group of buffers which
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2436 match a filter, which are displayed together in an Ibuffer buffer. To
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2437 create a filter group, simply use the regular functions to create a
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2438 filter, and then type '\\[ibuffer-filters-to-filter-group]'.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2439
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2440 A quick example will make things clearer. Suppose that one wants to
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2441 group all of one's Emacs Lisp buffers together. To do this, type
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2442
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2443 '\\[ibuffer-filter-by-mode] emacs-lisp-mode RET \\[ibuffer-filters-to-filter-group] RET emacs lisp buffers RET'
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2444
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2445 You may, of course, name the group whatever you want; it doesn't have
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2446 to be \"emacs lisp buffers\". Filter groups may be composed of any
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2447 arbitrary combination of filters.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2448
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2449 Just like filters themselves, filter groups act as a stack. Buffers
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2450 will not be displayed multiple times if they would be included in
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2451 multiple filter groups; instead, the first filter group is used. The
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2452 filter groups are displayed in this order of precedence.
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2453
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2454 You may rearrange filter groups by using the regular
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2455 '\\[ibuffer-kill-line]' and '\\[ibuffer-yank]' pair. Yanked groups
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2456 will be inserted before the group at point."
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2457 (kill-all-local-variables)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2458 (use-local-map ibuffer-mode-map)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2459 (setq major-mode 'ibuffer-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2460 (setq mode-name "Ibuffer")
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2461 (setq buffer-read-only t)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2462 (buffer-disable-undo)
43382
6d5695dd7639 (ibuffer-truncate-lines): New option.
Colin Walters <walters@gnu.org>
parents: 43249
diff changeset
2463 (setq truncate-lines ibuffer-truncate-lines)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2464 ;; This makes things less ugly for Emacs 21 users with a non-nil
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2465 ;; `show-trailing-whitespace'.
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2466 (setq show-trailing-whitespace nil)
48778
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 48485
diff changeset
2467 ;; disable `show-paren-mode' buffer-locally
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 48485
diff changeset
2468 (if (bound-and-true-p show-paren-mode)
d414c281a629 * ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
John Paul Wallington <jpw@pobox.com>
parents: 48485
diff changeset
2469 (set (make-local-variable 'show-paren-mode) nil))
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2470 (set (make-local-variable 'revert-buffer-function)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2471 #'ibuffer-update)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2472 (set (make-local-variable 'ibuffer-sorting-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2473 ibuffer-default-sorting-mode)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2474 (set (make-local-variable 'ibuffer-sorting-reversep)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2475 ibuffer-default-sorting-reversep)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2476 (set (make-local-variable 'ibuffer-shrink-to-minimum-size)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2477 ibuffer-default-shrink-to-minimum-size)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2478 (set (make-local-variable 'ibuffer-filtering-qualifiers) nil)
44854
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2479 (set (make-local-variable 'ibuffer-filter-groups) nil)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2480 (set (make-local-variable 'ibuffer-filter-group-kill-ring) nil)
6cd35f994b33 (ibuffer-formats): Doc fix.
Colin Walters <walters@gnu.org>
parents: 44830
diff changeset
2481 (set (make-local-variable 'ibuffer-hidden-filter-groups) nil)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2482 (set (make-local-variable 'ibuffer-compiled-formats) nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2483 (set (make-local-variable 'ibuffer-cached-formats) nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2484 (set (make-local-variable 'ibuffer-cached-eliding-string) nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2485 (set (make-local-variable 'ibuffer-cached-elide-long-columns) nil)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2486 (set (make-local-variable 'ibuffer-current-format) nil)
54813
59f2a23a44d1 (ibuffer-delete-window-on-quit): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 52401
diff changeset
2487 (set (make-local-variable 'ibuffer-restore-window-config-on-quit) nil)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2488 (set (make-local-variable 'ibuffer-did-modification) nil)
44830
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2489 (set (make-local-variable 'ibuffer-tmp-hide-regexps) nil)
ce8cb080a127 (ibuffer-filter-group-name-face): New.
Colin Walters <walters@gnu.org>
parents: 44796
diff changeset
2490 (set (make-local-variable 'ibuffer-tmp-show-regexps) nil)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2491 (define-key ibuffer-mode-map [menu-bar edit] 'undefined)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2492 (define-key ibuffer-mode-map [menu-bar operate] (cons "Operate" ibuffer-mode-operate-map))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2493 (ibuffer-update-format)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2494 (when ibuffer-default-directory
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2495 (setq default-directory ibuffer-default-directory))
47378
84e278f2225f (ibuffer-mode): Add font-lock-defontify to change-major-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents: 47147
diff changeset
2496 (add-hook 'change-major-mode-hook 'font-lock-defontify nil t)
48343
35889dbb9b84 (ibuffer-use-other-window, ibuffer-use-header-line)
John Paul Wallington <jpw@pobox.com>
parents: 48058
diff changeset
2497 (run-hooks 'ibuffer-mode-hook)
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2498 ;; called after mode hooks to allow the user to add filters
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2499 (ibuffer-update-mode-name))
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2500
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2501 (provide 'ibuffer)
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2502
49410
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
2503 (run-hooks 'ibuffer-load-hook)
798119a6859c * ibuffer.el (ibuffer-window-list): Remove.
John Paul Wallington <jpw@pobox.com>
parents: 48778
diff changeset
2504
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2505 ;; Local Variables:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2506 ;; coding: iso-8859-1
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2507 ;; End:
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2508
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52325
diff changeset
2509 ;;; arch-tag: 72581688-0603-4954-b8cf-837c700f62e8
42702
fb0b4579a45d Initial revision.
Colin Walters <walters@gnu.org>
parents:
diff changeset
2510 ;;; ibuffer.el ends here