Mercurial > emacs
annotate man/buffers.texi @ 42811:cf0c0ef57504
*** empty log message ***
| author | Jason Rumney <jasonr@gnu.org> |
|---|---|
| date | Thu, 17 Jan 2002 19:29:24 +0000 |
| parents | bcf374d89a4d |
| children | 1649dc94d8df |
| rev | line source |
|---|---|
| 25829 | 1 @c This is part of the Emacs manual. |
|
37794
7a3c8aa0ba51
(Buffers): Document the maximum buffer size.
Eli Zaretskii <eliz@gnu.org>
parents:
37773
diff
changeset
|
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000, 2001 |
| 31311 | 3 @c Free Software Foundation, Inc. |
| 25829 | 4 @c See file emacs.texi for copying conditions. |
| 5 @node Buffers, Windows, Files, Top | |
| 6 @chapter Using Multiple Buffers | |
| 7 | |
| 8 @cindex buffers | |
| 9 The text you are editing in Emacs resides in an object called a | |
| 10 @dfn{buffer}. Each time you visit a file, a buffer is created to hold the | |
| 11 file's text. Each time you invoke Dired, a buffer is created to hold the | |
| 12 directory listing. If you send a message with @kbd{C-x m}, a buffer named | |
| 13 @samp{*mail*} is used to hold the text of the message. When you ask for a | |
| 14 command's documentation, that appears in a buffer called @samp{*Help*}. | |
| 15 | |
| 16 @cindex selected buffer | |
| 17 @cindex current buffer | |
|
37987
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
18 At any time, one and only one buffer is @dfn{current}. It is also |
|
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
19 called the @dfn{selected buffer}. Often we say that a command operates on |
| 25829 | 20 ``the buffer'' as if there were only one; but really this means that the |
|
37987
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
21 command operates on the current buffer (most commands do). |
| 25829 | 22 |
| 37121 | 23 When Emacs has multiple windows, each window has its own chosen |
| 24 buffer and displays it; at any time, only one of the windows is | |
|
37987
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
25 selected, and its chosen buffer is the current buffer. Each window's |
| 37121 | 26 mode line normally displays the name of the window's chosen buffer |
| 27 (@pxref{Windows}). | |
| 25829 | 28 |
| 29 Each buffer has a name, which can be of any length, and you can select | |
| 30 any buffer by giving its name. Most buffers are made by visiting files, | |
| 31 and their names are derived from the files' names. But you can also create | |
| 32 an empty buffer with any name you want. A newly started Emacs has a buffer | |
| 33 named @samp{*scratch*} which can be used for evaluating Lisp expressions in | |
| 34 Emacs. The distinction between upper and lower case matters in buffer | |
| 35 names. | |
| 36 | |
| 37 Each buffer records individually what file it is visiting, whether it is | |
| 38 modified, and what major mode and minor modes are in effect in it | |
| 39 (@pxref{Major Modes}). Any Emacs variable can be made @dfn{local to} a | |
| 40 particular buffer, meaning its value in that buffer can be different from | |
| 41 the value in other buffers. @xref{Locals}. | |
| 42 | |
|
37794
7a3c8aa0ba51
(Buffers): Document the maximum buffer size.
Eli Zaretskii <eliz@gnu.org>
parents:
37773
diff
changeset
|
43 @cindex buffer size, maximum |
|
7a3c8aa0ba51
(Buffers): Document the maximum buffer size.
Eli Zaretskii <eliz@gnu.org>
parents:
37773
diff
changeset
|
44 A buffer's size cannot be larger than some maximum, which is defined |
| 37821 | 45 by the largest buffer position representable by the @dfn{Emacs integer} |
| 46 data type. This is because Emacs tracks buffer positions using that | |
| 47 data type. For 32-bit machines, the largest buffer size is 128 | |
| 48 megabytes. | |
|
37794
7a3c8aa0ba51
(Buffers): Document the maximum buffer size.
Eli Zaretskii <eliz@gnu.org>
parents:
37773
diff
changeset
|
49 |
| 25829 | 50 @menu |
| 51 * Select Buffer:: Creating a new buffer or reselecting an old one. | |
| 52 * List Buffers:: Getting a list of buffers that exist. | |
| 53 * Misc Buffer:: Renaming; changing read-onlyness; copying text. | |
| 54 * Kill Buffer:: Killing buffers you no longer need. | |
| 55 * Several Buffers:: How to go through the list of all buffers | |
| 56 and operate variously on several of them. | |
| 57 * Indirect Buffers:: An indirect buffer shares the text of another buffer. | |
| 30869 | 58 * Buffer Convenience:: Convenience and customization features for |
| 59 buffer handling. | |
| 25829 | 60 @end menu |
| 61 | |
| 62 @node Select Buffer | |
| 63 @section Creating and Selecting Buffers | |
| 64 @cindex change buffers | |
| 65 @cindex switch buffers | |
| 66 | |
| 67 @table @kbd | |
| 68 @item C-x b @var{buffer} @key{RET} | |
| 69 Select or create a buffer named @var{buffer} (@code{switch-to-buffer}). | |
| 70 @item C-x 4 b @var{buffer} @key{RET} | |
| 71 Similar, but select @var{buffer} in another window | |
| 72 (@code{switch-to-buffer-other-window}). | |
| 73 @item C-x 5 b @var{buffer} @key{RET} | |
| 74 Similar, but select @var{buffer} in a separate frame | |
| 75 (@code{switch-to-buffer-other-frame}). | |
| 76 @end table | |
| 77 | |
| 78 @kindex C-x b | |
| 79 @findex switch-to-buffer | |
| 80 To select the buffer named @var{bufname}, type @kbd{C-x b @var{bufname} | |
| 81 @key{RET}}. This runs the command @code{switch-to-buffer} with argument | |
| 82 @var{bufname}. You can use completion on an abbreviation for the buffer | |
| 83 name you want (@pxref{Completion}). An empty argument to @kbd{C-x b} | |
|
37987
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
84 specifies the buffer that was current most recently among those not |
|
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
85 now displayed in any window. |
| 25829 | 86 |
|
37773
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
87 @kindex C-x 4 b |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
88 @findex switch-to-buffer-other-window |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
89 @vindex even-window-heights |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
90 To select a buffer in a window other than the current one, type |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
91 @kbd{C-x 4 b @var{bufname} @key{RET}}. This runs the command |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
92 @code{switch-to-buffer-other-window} which displays the buffer |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
93 @var{bufname} in another window. By default, if displaying the buffer |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
94 causes two vertically adjacent windows to be displayed, the heights of |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
95 those windows are evened out; to countermand that and preserve the |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
96 window configuration, set the variable @code{even-window-heights} to |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
97 @code{nil}. |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
98 |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
99 @kindex C-x 5 b |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
100 @findex switch-to-buffer-other-frame |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
101 Similarly, @kbd{C-x 5 b @var{buffer} @key{RET}} runs the command |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
102 @code{switch-to-buffer-other-frame} which selects a buffer in another |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
103 frame. |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
104 |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
105 @vindex display-buffer-reuse-frames |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
106 You can control how certain buffers are handled by these commands by |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
107 customizing the variables @code{special-display-buffer-names}, |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
108 @code{special-display-regexps}, @code{same-window-buffer-names}, and |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
109 @code{same-window-regexps}. See @ref{Force Same Window}, and |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
110 @ref{Special Buffer Frames}, for more about these variables. In |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
111 addition, if the value of @code{display-buffer-reuse-frames} is |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
112 non-@code{nil}, and the buffer you want to switch to is already |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
113 displayed in some frame, Emacs will raise that frame. |
|
9b4454d43e72
(Select Buffer): Document even-window-heights and
Eli Zaretskii <eliz@gnu.org>
parents:
37121
diff
changeset
|
114 |
| 25829 | 115 Most buffers are created by visiting files, or by Emacs commands that |
| 116 want to display some text, but you can also create a buffer explicitly | |
| 117 by typing @kbd{C-x b @var{bufname} @key{RET}}. This makes a new, empty | |
| 118 buffer that is not visiting any file, and selects it for editing. Such | |
| 119 buffers are used for making notes to yourself. If you try to save one, | |
| 120 you are asked for the file name to use. The new buffer's major mode is | |
| 121 determined by the value of @code{default-major-mode} (@pxref{Major | |
| 122 Modes}). | |
| 123 | |
| 124 Note that @kbd{C-x C-f}, and any other command for visiting a file, | |
| 125 can also be used to switch to an existing file-visiting buffer. | |
| 126 @xref{Visiting}. | |
| 127 | |
| 128 Emacs uses buffer names that start with a space for internal purposes. | |
| 129 It treats these buffers specially in minor ways---for example, by | |
| 130 default they do not record undo information. It is best to avoid using | |
| 131 such buffer names yourself. | |
| 132 | |
| 133 @node List Buffers | |
| 134 @section Listing Existing Buffers | |
| 135 | |
| 136 @table @kbd | |
| 137 @item C-x C-b | |
| 138 List the existing buffers (@code{list-buffers}). | |
| 139 @end table | |
| 140 | |
| 141 @cindex listing current buffers | |
| 142 @kindex C-x C-b | |
| 143 @findex list-buffers | |
| 144 To display a list of all the buffers that exist, type @kbd{C-x C-b}. | |
| 145 Each line in the list shows one buffer's name, major mode and visited | |
| 146 file. The buffers are listed in the order that they were current; the | |
| 147 buffers that were current most recently come first. | |
| 148 | |
| 149 @samp{*} at the beginning of a line indicates the buffer is ``modified.'' | |
| 150 If several buffers are modified, it may be time to save some with @kbd{C-x s} | |
| 151 (@pxref{Saving}). @samp{%} indicates a read-only buffer. @samp{.} marks the | |
|
37987
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
152 current buffer. Here is an example of a buffer list:@refill |
| 25829 | 153 |
| 154 @smallexample | |
| 155 MR Buffer Size Mode File | |
| 156 -- ------ ---- ---- ---- | |
| 157 .* emacs.tex 383402 Texinfo /u2/emacs/man/emacs.tex | |
| 158 *Help* 1287 Fundamental | |
| 159 files.el 23076 Emacs-Lisp /u2/emacs/lisp/files.el | |
| 160 % RMAIL 64042 RMAIL /u/rms/RMAIL | |
| 161 *% man 747 Dired /u2/emacs/man/ | |
| 162 net.emacs 343885 Fundamental /u/rms/net.emacs | |
| 163 fileio.c 27691 C /u2/emacs/src/fileio.c | |
| 164 NEWS 67340 Text /u2/emacs/etc/NEWS | |
| 165 *scratch* 0 Lisp Interaction | |
| 166 @end smallexample | |
| 167 | |
| 168 @noindent | |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
169 Note that the buffer @samp{*Help*} was made by a help request; it is |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
170 not visiting any file. The buffer @code{man} was made by Dired on the |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
171 directory @file{/u2/emacs/man/}. You can list only buffers that are |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
172 visiting files by giving the command a prefix; for instance, by typing |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
173 @kbd{C-u C-x C-b}. |
| 25829 | 174 |
|
40491
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
175 @code{list-buffers} omits buffers whose name begins with a blank, |
|
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
176 unless they visit files: such buffers are used internally by Emacs. |
|
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
177 |
| 25829 | 178 @need 2000 |
| 179 @node Misc Buffer | |
| 180 @section Miscellaneous Buffer Operations | |
| 181 | |
| 182 @table @kbd | |
| 183 @item C-x C-q | |
| 184 Toggle read-only status of buffer (@code{vc-toggle-read-only}). | |
| 185 @item M-x rename-buffer @key{RET} @var{name} @key{RET} | |
| 186 Change the name of the current buffer. | |
| 187 @item M-x rename-uniquely | |
| 188 Rename the current buffer by adding @samp{<@var{number}>} to the end. | |
| 189 @item M-x view-buffer @key{RET} @var{buffer} @key{RET} | |
| 190 Scroll through buffer @var{buffer}. | |
| 191 @end table | |
| 192 | |
| 193 @kindex C-x C-q | |
|
36263
11db0318031d
Remove redundant index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
36143
diff
changeset
|
194 @c Don't index vc-toggle-read-only here, it is indexed in files.texi, |
|
11db0318031d
Remove redundant index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
36143
diff
changeset
|
195 @c in the node "Basic VC Editing". |
|
11db0318031d
Remove redundant index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
36143
diff
changeset
|
196 @c @findex vc-toggle-read-only |
| 25829 | 197 @vindex buffer-read-only |
| 198 @cindex read-only buffer | |
| 199 A buffer can be @dfn{read-only}, which means that commands to change | |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
200 its contents are not allowed. The mode line indicates read-only |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
201 buffers with @samp{%%} or @samp{%*} near the left margin. Read-only |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
202 buffers are usually made by subsystems such as Dired and Rmail that |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
203 have special commands to operate on the text; also by visiting a file |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
204 whose access control says you cannot write it. |
| 25829 | 205 |
| 206 If you wish to make changes in a read-only buffer, use the command | |
| 207 @kbd{C-x C-q} (@code{vc-toggle-read-only}). It makes a read-only buffer | |
| 208 writable, and makes a writable buffer read-only. In most cases, this | |
| 209 works by setting the variable @code{buffer-read-only}, which has a local | |
| 210 value in each buffer and makes the buffer read-only if its value is | |
| 211 non-@code{nil}. If the file is maintained with version control, | |
| 212 @kbd{C-x C-q} works through the version control system to change the | |
| 213 read-only status of the file as well as the buffer. @xref{Version | |
| 214 Control}. | |
| 215 | |
| 216 @findex rename-buffer | |
| 217 @kbd{M-x rename-buffer} changes the name of the current buffer. Specify | |
| 218 the new name as a minibuffer argument. There is no default. If you | |
| 219 specify a name that is in use for some other buffer, an error happens and | |
| 220 no renaming is done. | |
| 221 | |
| 222 @kbd{M-x rename-uniquely} renames the current buffer to a similar name | |
| 223 with a numeric suffix added to make it both different and unique. This | |
| 224 command does not need an argument. It is useful for creating multiple | |
| 225 shell buffers: if you rename the @samp{*Shell*} buffer, then do @kbd{M-x | |
| 226 shell} again, it makes a new shell buffer named @samp{*Shell*}; | |
| 227 meanwhile, the old shell buffer continues to exist under its new name. | |
| 228 This method is also good for mail buffers, compilation buffers, and most | |
| 229 Emacs features that create special buffers with particular names. | |
| 230 | |
| 231 @findex view-buffer | |
| 232 @kbd{M-x view-buffer} is much like @kbd{M-x view-file} (@pxref{Misc | |
| 233 File Ops}) except that it examines an already existing Emacs buffer. | |
| 234 View mode provides commands for scrolling through the buffer | |
| 235 conveniently but not for changing it. When you exit View mode with | |
| 236 @kbd{q}, that switches back to the buffer (and the position) which was | |
| 237 previously displayed in the window. Alternatively, if you exit View | |
| 238 mode with @kbd{e}, the buffer and the value of point that resulted from | |
| 239 your perusal remain in effect. | |
| 240 | |
| 241 The commands @kbd{M-x append-to-buffer} and @kbd{M-x insert-buffer} | |
| 242 can be used to copy text from one buffer to another. @xref{Accumulating | |
| 243 Text}.@refill | |
| 244 | |
| 245 @node Kill Buffer | |
| 246 @section Killing Buffers | |
| 247 | |
| 248 @cindex killing buffers | |
| 249 If you continue an Emacs session for a while, you may accumulate a | |
| 250 large number of buffers. You may then find it convenient to @dfn{kill} | |
| 251 the buffers you no longer need. On most operating systems, killing a | |
| 252 buffer releases its space back to the operating system so that other | |
| 253 programs can use it. Here are some commands for killing buffers: | |
| 254 | |
| 255 @table @kbd | |
| 256 @item C-x k @var{bufname} @key{RET} | |
| 257 Kill buffer @var{bufname} (@code{kill-buffer}). | |
| 258 @item M-x kill-some-buffers | |
| 259 Offer to kill each buffer, one by one. | |
| 260 @end table | |
| 261 | |
| 262 @findex kill-buffer | |
| 263 @findex kill-some-buffers | |
| 264 @kindex C-x k | |
| 265 | |
| 266 @kbd{C-x k} (@code{kill-buffer}) kills one buffer, whose name you | |
|
37987
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
267 specify in the minibuffer. The default, used if you type just |
|
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
268 @key{RET} in the minibuffer, is to kill the current buffer. If you |
|
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
269 kill the current buffer, another buffer becomes current: one that was |
|
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
270 current in the recent past but is not displayed in any window now. If |
|
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
271 you ask to kill a file-visiting buffer that is modified (has unsaved |
|
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
272 editing), then you must confirm with @kbd{yes} before the buffer is |
|
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
273 killed. |
| 25829 | 274 |
| 275 The command @kbd{M-x kill-some-buffers} asks about each buffer, one by | |
| 276 one. An answer of @kbd{y} means to kill the buffer. Killing the current | |
| 277 buffer or a buffer containing unsaved changes selects a new buffer or asks | |
| 278 for confirmation just like @code{kill-buffer}. | |
| 279 | |
| 280 The buffer menu feature (@pxref{Several Buffers}) is also convenient | |
| 281 for killing various buffers. | |
| 282 | |
| 283 @vindex kill-buffer-hook | |
| 284 If you want to do something special every time a buffer is killed, you | |
| 285 can add hook functions to the hook @code{kill-buffer-hook} (@pxref{Hooks}). | |
| 286 | |
| 287 @findex clean-buffer-list | |
| 288 If you run one Emacs session for a period of days, as many people do, | |
| 289 it can fill up with buffers that you used several days ago. The command | |
| 290 @kbd{M-x clean-buffer-list} is a convenient way to purge them; it kills | |
| 291 all the unmodified buffers that you have not used for a long time. An | |
| 292 ordinary buffer is killed if it has not been displayed for three days; | |
| 293 however, you can specify certain buffers that should never be killed | |
| 294 automatically, and others that should be killed if they have been unused | |
| 295 for a mere hour. | |
| 296 | |
| 297 @cindex Midnight mode | |
| 298 @vindex midnight-mode | |
| 299 @vindex midnight-hook | |
| 300 You can also have this buffer purging done for you, every day at | |
| 301 midnight, by enabling Midnight mode. Midnight mode operates each day at | |
| 302 midnight; at that time, it runs @code{clean-buffer-list}, or whichever | |
| 303 functions you have placed in the normal hook @code{midnight-hook} | |
| 304 (@pxref{Hooks}). | |
| 305 | |
| 306 To enable Midnight mode, use the Customization buffer to set the | |
| 307 variable @code{midnight-mode} to @code{t}. @xref{Easy Customization}. | |
| 308 | |
| 309 @node Several Buffers | |
| 310 @section Operating on Several Buffers | |
| 311 @cindex buffer menu | |
| 312 | |
| 313 The @dfn{buffer-menu} facility is like a ``Dired for buffers''; it allows | |
| 314 you to request operations on various Emacs buffers by editing an Emacs | |
| 315 buffer containing a list of them. You can save buffers, kill them | |
| 316 (here called @dfn{deleting} them, for consistency with Dired), or display | |
| 317 them. | |
| 318 | |
| 319 @table @kbd | |
| 320 @item M-x buffer-menu | |
| 321 Begin editing a buffer listing all Emacs buffers. | |
|
40491
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
322 @item M-x buffer-menu-other-window. |
|
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
323 Similar, but do it in another window. |
| 25829 | 324 @end table |
| 325 | |
| 326 @findex buffer-menu | |
|
40491
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
327 @findex buffer-menu-other-window |
|
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
328 The command @code{buffer-menu} writes a list of all Emacs |
|
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
329 buffers@footnote{Buffers which don't visit files and whose names begin |
|
40616
bcf374d89a4d
(Several Buffers): Add a cross-reference to the description of the
Eli Zaretskii <eliz@gnu.org>
parents:
40491
diff
changeset
|
330 with a space are omitted: these are used internally by Emacs.} into the |
|
bcf374d89a4d
(Several Buffers): Add a cross-reference to the description of the
Eli Zaretskii <eliz@gnu.org>
parents:
40491
diff
changeset
|
331 buffer @samp{*Buffer List*}, and selects that buffer in Buffer Menu |
|
bcf374d89a4d
(Several Buffers): Add a cross-reference to the description of the
Eli Zaretskii <eliz@gnu.org>
parents:
40491
diff
changeset
|
332 mode. The list in the @samp{*Buffer List*} buffer looks exactly as |
|
bcf374d89a4d
(Several Buffers): Add a cross-reference to the description of the
Eli Zaretskii <eliz@gnu.org>
parents:
40491
diff
changeset
|
333 described in @ref{List Buffers}. The buffer is read-only, and can be |
|
bcf374d89a4d
(Several Buffers): Add a cross-reference to the description of the
Eli Zaretskii <eliz@gnu.org>
parents:
40491
diff
changeset
|
334 changed only through the special commands described in this section. |
|
bcf374d89a4d
(Several Buffers): Add a cross-reference to the description of the
Eli Zaretskii <eliz@gnu.org>
parents:
40491
diff
changeset
|
335 The usual Emacs cursor motion commands can be used in the @samp{*Buffer |
|
bcf374d89a4d
(Several Buffers): Add a cross-reference to the description of the
Eli Zaretskii <eliz@gnu.org>
parents:
40491
diff
changeset
|
336 List*} buffer. The following commands apply to the buffer described on |
|
bcf374d89a4d
(Several Buffers): Add a cross-reference to the description of the
Eli Zaretskii <eliz@gnu.org>
parents:
40491
diff
changeset
|
337 the current line. |
| 25829 | 338 |
| 339 @table @kbd | |
| 340 @item d | |
| 341 Request to delete (kill) the buffer, then move down. The request | |
| 342 shows as a @samp{D} on the line, before the buffer name. Requested | |
| 343 deletions take place when you type the @kbd{x} command. | |
| 344 @item C-d | |
| 345 Like @kbd{d} but move up afterwards instead of down. | |
| 346 @item s | |
| 347 Request to save the buffer. The request shows as an @samp{S} on the | |
| 348 line. Requested saves take place when you type the @kbd{x} command. | |
| 349 You may request both saving and deletion for the same buffer. | |
| 350 @item x | |
| 351 Perform previously requested deletions and saves. | |
| 352 @item u | |
| 353 Remove any request made for the current line, and move down. | |
| 354 @item @key{DEL} | |
| 355 Move to previous line and remove any request made for that line. | |
| 356 @end table | |
| 357 | |
| 358 The @kbd{d}, @kbd{C-d}, @kbd{s} and @kbd{u} commands to add or remove | |
| 359 flags also move down (or up) one line. They accept a numeric argument | |
| 360 as a repeat count. | |
| 361 | |
| 362 These commands operate immediately on the buffer listed on the current | |
| 363 line: | |
| 364 | |
| 365 @table @kbd | |
| 366 @item ~ | |
| 367 Mark the buffer ``unmodified.'' The command @kbd{~} does this | |
| 368 immediately when you type it. | |
| 369 @item % | |
| 370 Toggle the buffer's read-only flag. The command @kbd{%} does | |
| 371 this immediately when you type it. | |
| 372 @item t | |
| 373 Visit the buffer as a tags table. @xref{Select Tags Table}. | |
| 374 @end table | |
| 375 | |
| 376 There are also commands to select another buffer or buffers: | |
| 377 | |
| 378 @table @kbd | |
| 379 @item q | |
| 380 Quit the buffer menu---immediately display the most recent formerly | |
| 381 visible buffer in its place. | |
| 382 @item @key{RET} | |
| 383 @itemx f | |
| 384 Immediately select this line's buffer in place of the @samp{*Buffer | |
| 385 List*} buffer. | |
| 386 @item o | |
| 387 Immediately select this line's buffer in another window as if by | |
| 388 @kbd{C-x 4 b}, leaving @samp{*Buffer List*} visible. | |
| 389 @item C-o | |
| 390 Immediately display this line's buffer in another window, but don't | |
| 391 select the window. | |
| 392 @item 1 | |
| 393 Immediately select this line's buffer in a full-screen window. | |
| 394 @item 2 | |
| 395 Immediately set up two windows, with this line's buffer in one, and the | |
|
37987
39cfe73648c8
selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
37821
diff
changeset
|
396 previously current buffer (aside from the buffer @samp{*Buffer List*}) |
| 25829 | 397 in the other. |
| 398 @item b | |
| 399 Bury the buffer listed on this line. | |
| 400 @item m | |
| 401 Mark this line's buffer to be displayed in another window if you exit | |
| 402 with the @kbd{v} command. The request shows as a @samp{>} at the | |
| 403 beginning of the line. (A single buffer may not have both a delete | |
| 404 request and a display request.) | |
| 405 @item v | |
| 406 Immediately select this line's buffer, and also display in other windows | |
| 407 any buffers previously marked with the @kbd{m} command. If you have not | |
| 408 marked any buffers, this command is equivalent to @kbd{1}. | |
| 409 @end table | |
| 410 | |
| 411 All that @code{buffer-menu} does directly is create and switch to a | |
| 412 suitable buffer, and turn on Buffer Menu mode. Everything else | |
| 413 described above is implemented by the special commands provided in | |
| 414 Buffer Menu mode. One consequence of this is that you can switch from | |
| 415 the @samp{*Buffer List*} buffer to another Emacs buffer, and edit there. | |
| 416 You can reselect the @samp{*Buffer List*} buffer later, to perform the | |
| 417 operations already requested, or you can kill it, or pay no further | |
| 418 attention to it. | |
| 419 | |
| 420 The only difference between @code{buffer-menu} and @code{list-buffers} | |
| 421 is that @code{buffer-menu} switches to the @samp{*Buffer List*} buffer | |
| 422 in the selected window; @code{list-buffers} displays it in another | |
| 423 window. If you run @code{list-buffers} (that is, type @kbd{C-x C-b}) | |
| 424 and select the buffer list manually, you can use all of the commands | |
| 425 described here. | |
| 426 | |
| 427 The buffer @samp{*Buffer List*} is not updated automatically when | |
| 428 buffers are created and killed; its contents are just text. If you have | |
| 429 created, deleted or renamed buffers, the way to update @samp{*Buffer | |
| 430 List*} to show what you have done is to type @kbd{g} | |
| 431 (@code{revert-buffer}) or repeat the @code{buffer-menu} command. | |
| 432 | |
|
40491
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
433 The command @code{buffer-menu-other-window} works the same as |
|
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
434 @code{buffer-menu}, except that it displays the buffers list in |
|
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
435 another window. |
|
4ce165b55ef1
(List Buffers, Several Buffers): Document that internal buffers are
Eli Zaretskii <eliz@gnu.org>
parents:
39264
diff
changeset
|
436 |
| 25829 | 437 @node Indirect Buffers |
| 438 @section Indirect Buffers | |
| 439 @cindex indirect buffer | |
| 440 @cindex base buffer | |
| 441 | |
| 442 An @dfn{indirect buffer} shares the text of some other buffer, which | |
| 443 is called the @dfn{base buffer} of the indirect buffer. In some ways it | |
| 444 is the analogue, for buffers, of a symbolic link between files. | |
| 445 | |
| 446 @table @kbd | |
| 447 @findex make-indirect-buffer | |
|
36455
0f5618d75b4a
(Indirect Buffers): Add a @key[RET}.
Gerd Moellmann <gerd@gnu.org>
parents:
36263
diff
changeset
|
448 @item M-x make-indirect-buffer @key{RET} @var{base-buffer} @key{RET} @var{indirect-name} @key{RET} |
| 25829 | 449 Create an indirect buffer named @var{indirect-name} whose base buffer |
| 450 is @var{base-buffer}. | |
|
31056
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
451 @findex clone-indirect-buffer |
|
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
452 @item M-x clone-indirect-buffer @key{RET} |
|
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
453 Create an indirect buffer that is a twin copy of the current buffer. |
| 36884 | 454 @item C-x 4 c |
|
31056
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
455 @kindex C-x 4 c |
|
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
456 @findex clone-indirect-buffer-other-window |
|
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
457 Create an indirect buffer that is a twin copy of the current buffer, and |
|
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
458 select it in another window (@code{clone-indirect-buffer-other-window}). |
| 25829 | 459 @end table |
| 460 | |
| 461 The text of the indirect buffer is always identical to the text of its | |
| 462 base buffer; changes made by editing either one are visible immediately | |
| 463 in the other. But in all other respects, the indirect buffer and its | |
| 464 base buffer are completely separate. They have different names, | |
| 465 different values of point, different narrowing, different markers, | |
| 466 different major modes, and different local variables. | |
| 467 | |
| 468 An indirect buffer cannot visit a file, but its base buffer can. If | |
| 469 you try to save the indirect buffer, that actually works by saving the | |
| 470 base buffer. Killing the base buffer effectively kills the indirect | |
| 471 buffer, but killing an indirect buffer has no effect on its base buffer. | |
| 472 | |
| 473 One way to use indirect buffers is to display multiple views of an | |
| 474 outline. @xref{Outline Views}. | |
| 30869 | 475 |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
476 @cindex multiple @samp{*info*} and @samp{*Help*} buffers |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
477 A quick and handy way to make an indirect buffer is with the command |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
478 @kbd{M-x clone-indirect-buffer}. It creates and selects an indirect |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
479 buffer whose base buffer is the current buffer. With a numeric |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
480 argument, it prompts for the name of the indirect buffer; otherwise it |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
481 defaults to the name of the current buffer, modifying it by adding a |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
482 @samp{<@var{n}>} prefix if required. @kbd{C-x 4 c} |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
483 (@code{clone-indirect-buffer-other-window}) works like @kbd{M-x |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
484 clone-indirect-buffer}, but it selects the cloned buffer in another |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
485 window. These commands come in handy if you want to create new |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
486 @samp{*info*} or @samp{*Help*} buffers, for example. |
|
31056
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
487 |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
488 The more general way is with the command @kbd{M-x |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
489 make-indirect-buffer}. It creates an indirect buffer from buffer |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
490 @var{base-buffer}, under the name @var{indirect-name}. It prompts for |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
491 both @var{base-buffer} and @var{indirect-name} using the minibuffer. |
|
31056
3d90d6c1f3b9
Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents:
30869
diff
changeset
|
492 |
| 30869 | 493 @node Buffer Convenience |
| 494 @section Convenience Features and Customization of Buffer Handling | |
| 495 | |
| 37121 | 496 This section describes several modes and features that make it more |
| 497 convenient to switch between buffers. | |
| 498 | |
| 30869 | 499 @menu |
| 31311 | 500 * Uniquify:: Buffer names can contain directory parts. |
| 31815 | 501 * Iswitchb:: Switching between buffers with substrings. |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
502 * Buffer Menus:: Configurable buffer menu. |
| 30869 | 503 @end menu |
| 504 | |
| 505 @node Uniquify | |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
506 @subsection Making Buffer Names Unique |
| 30869 | 507 |
| 508 @cindex unique buffer names | |
| 509 @cindex directories in buffer names | |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
510 When several buffers visit identically-named files, Emacs must give |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
511 the buffers distinct names. The usual method for making buffer names |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
512 unique adds @samp{<2>}, @samp{<3>}, etc. to the end of the buffer |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
513 names (all but one of them). |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
514 |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
515 @vindex uniquify-buffer-name-style |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
516 Other methods work by adding parts of each file's directory to the |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
517 buffer name. To select one, customize the variable |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
518 @code{uniquify-buffer-name-style} (@pxref{Easy Customization}). |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
519 |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
520 For instance, the @code{forward} naming method puts part of the |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
521 directory name at the beginning of the buffer name; using this method, |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
522 buffers visiting @file{/u/mernst/tmp/Makefile} and |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
523 @file{/usr/projects/zaphod/Makefile} would be named |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
524 @samp{tmp/Makefile} and @samp{zaphod/Makefile}, respectively (instead |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
525 of @samp{Makefile} and @samp{Makefile<2>}). |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
526 |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
527 By contrast, the @code{post-forward} naming method would call the |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
528 buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}, and the |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
529 @code{reverse} naming method would call them @samp{Makefile\tmp} and |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
530 @samp{Makefile\zaphod}. The nontrivial difference between |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
531 @code{post-forward} and @code{reverse} occurs when just one directory |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
532 name is not enough to distinguish two files; then @code{reverse} puts |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
533 the directory names in reverse order, so that @file{/top/middle/file} |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
534 becomes @samp{file\middle\top}, while @code{post-forward} puts them in |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
535 forward order after the file name, as in @samp{file|top/middle}. |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
536 |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
537 Which rule to follow for putting the directory names in the buffer |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
538 name is not very important if you are going to @emph{look} at the |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
539 buffer names before you type one. But as an experienced user, if you |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
540 know the rule, you won't have to look. And then you may find that one |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
541 rule or another is easier for you to remember and utilize fast. |
| 30869 | 542 |
| 31815 | 543 @node Iswitchb |
| 544 @subsection Switching Between Buffers using Substrings | |
| 545 | |
| 546 @findex iswitchb-mode | |
| 547 @cindex Iswitchb mode | |
| 548 @cindex mode, Iswitchb | |
| 549 @kindex C-x b @r{(Iswitchb mode)} | |
| 550 @kindex C-x 4 b @r{(Iswitchb mode)} | |
| 551 @kindex C-x 5 b @r{(Iswitchb mode)} | |
| 552 @kindex C-x 4 C-o @r{(Iswitchb mode)} | |
| 553 | |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
554 Iswitchb global minor mode provides convenient switching between |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
555 buffers using substrings of their names. It replaces the normal |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
556 definitions of @kbd{C-x b}, @kbd{C-x 4 b}, @kbd{C-x 5 b}, and @kbd{C-x |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
557 4 C-o} with alternative commands that are somewhat ``smarter.'' |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
558 |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
559 When one of these commands prompts you for a buffer name, you can |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
560 type in just a substring of the name you want to choose. As you enter |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
561 the substring, Iswitchb mode continuously displays a list of buffers |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
562 that match the substring you have typed. |
| 31815 | 563 |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
564 At any time, you can type @key{RET} to select the first buffer in |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
565 the list. So the way to select a particular buffer is to make it the |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
566 first in the list. There are two ways to do this. You can type more |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
567 of the buffer name and thus narrow down the list, excluding unwanted |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
568 buffers above the desired one. Alternatively, you can use @kbd{C-s} |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
569 and @kbd{C-r} to rotate the list until the desired buffer is first. |
| 31815 | 570 |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
571 @key{TAB} while entering the buffer name performs completion on the |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
572 string you have entered, based on the displayed list of buffers. |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
573 |
| 37121 | 574 To enable Iswitchb mode, type @kbd{M-x iswitchb-mode}, or customize |
| 575 the variable @code{iswitchb-mode} to @code{t} (@pxref{Easy | |
| 576 Customization}). | |
| 577 | |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
578 @node Buffer Menus |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
579 @subsection Customizing Buffer Menus |
| 30869 | 580 |
| 31311 | 581 @findex bs-show |
| 582 @cindex buffer list, customizable | |
| 583 @table @kbd | |
| 584 @item M-x bs-show | |
| 585 Make a list of buffers similarly to @kbd{M-x list-buffers} but | |
| 586 customizable. | |
| 587 @end table | |
| 588 | |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
589 @kbd{M-x bs-show} pops up a buffer list similar to the one normally |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
590 displayed by @kbd{C-x C-b} but which you can customize. If you prefer |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
591 this to the usual buffer list, you can bind this command to @kbd{C-x |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
592 C-b}. To customize this buffer list, use the @code{bs} Custom group |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
593 (@pxref{Easy Customization}). |
| 30869 | 594 |
| 31815 | 595 @findex msb-mode |
| 596 @cindex mode, MSB | |
| 597 @cindex MSB mode | |
| 598 @cindex buffer menu | |
| 599 @findex mouse-buffer-menu | |
|
36143
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
600 @kindex C-Down-Mouse-1 |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
601 MSB global minor mode (``MSB'' stands for ``mouse select buffer'') |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
602 provides a different and customizable mouse buffer menu which you may |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
603 prefer. It replaces the bindings of @code{mouse-buffer-menu}, |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
604 normally on @kbd{C-Down-Mouse-1}, and the menu bar buffer menu. You |
|
44a6f7ea121f
Major rewrite of Uniquify node and Iswitchb node.
Richard M. Stallman <rms@gnu.org>
parents:
31815
diff
changeset
|
605 can customize the menu in the @code{msb} Custom group. |
