]> code.delx.au - gnu-emacs/blob - doc/emacs/buffers.texi
Convert consecutive FSF copyright years to ranges.
[gnu-emacs] / doc / emacs / buffers.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
3 @c Free Software Foundation, Inc.
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 Each buffer has a unique name, which can be of any length. When a
17 buffer is displayed in a window, its name is shown in the mode line
18 (@pxref{Mode Line}). The distinction between upper and lower case
19 matters in buffer names. Most buffers are made by visiting files, and
20 their names are derived from the files' names; however, you can also
21 create an empty buffer with any name you want. A newly started Emacs
22 has a buffer named @samp{*scratch*}, which is not associated with any
23 file and can be used for evaluating Lisp expressions in Emacs
24 (@pxref{Lisp Interaction}).
25
26 @cindex selected buffer
27 @cindex current buffer
28 At any time, one and only one buffer is @dfn{current}. This is also
29 called the @dfn{selected buffer}. We often say that a command
30 operates on ``the buffer''; this really means that the command
31 operates on the current buffer (most commands do). When there is only
32 one Emacs window, the buffer displayed in that window is current.
33 When there are multiple windows present, the buffer displayed in the
34 @dfn{selected window} is current. @xref{Windows}.
35
36 Each buffer records individually what file it is visiting (if any),
37 whether it is modified, and what major mode and minor modes are in
38 effect (@pxref{Major Modes}). Any Emacs variable can be made
39 @dfn{local to} a particular buffer, meaning its value in that buffer
40 can be different from the value in other buffers. @xref{Locals}.
41
42 @cindex buffer size, maximum
43 A buffer's size cannot be larger than some maximum, which is defined
44 by the largest buffer position representable by the @dfn{Emacs
45 integer} data type. This is because Emacs tracks buffer positions
46 using that data type. For 32-bit machines, the largest buffer size is
47 512 megabytes.
48
49 @menu
50 * Select Buffer:: Creating a new buffer or reselecting an old one.
51 * List Buffers:: Getting a list of buffers that exist.
52 * Misc Buffer:: Renaming; changing read-onlyness; copying text.
53 * Kill Buffer:: Killing buffers you no longer need.
54 * Several Buffers:: How to go through the list of all buffers
55 and operate variously on several of them.
56 * Indirect Buffers:: An indirect buffer shares the text of another buffer.
57 * Buffer Convenience:: Convenience and customization features for
58 buffer handling.
59 @end menu
60
61 @node Select Buffer
62 @section Creating and Selecting Buffers
63 @cindex change buffers
64 @cindex switch buffers
65
66 @table @kbd
67 @item C-x b @var{buffer} @key{RET}
68 Select or create a buffer named @var{buffer} (@code{switch-to-buffer}).
69 @item C-x 4 b @var{buffer} @key{RET}
70 Similar, but select @var{buffer} in another window
71 (@code{switch-to-buffer-other-window}).
72 @item C-x 5 b @var{buffer} @key{RET}
73 Similar, but select @var{buffer} in a separate frame
74 (@code{switch-to-buffer-other-frame}).
75 @item C-x @key{LEFT}
76 Select the previous buffer in the list of existing buffers.
77 @item C-x @key{RIGHT}
78 Select the next buffer in the list of existing buffers.
79 @item C-u M-g M-g
80 @itemx C-u M-g g
81 Read a number @var{n} and move to line @var{n} in the most recently
82 selected buffer other than the current buffer.
83 @end table
84
85 @kindex C-x b
86 @findex switch-to-buffer
87 To select the buffer named @var{bufname}, type @kbd{C-x b
88 @var{bufname} @key{RET}}. This runs the command
89 @code{switch-to-buffer} with argument @var{bufname}. While entering
90 the buffer name, you can use the usual minibuffer completion and
91 history commands (@pxref{Minibuffer}). An empty argument to @kbd{C-x
92 b} specifies the buffer that was current most recently among those not
93 now displayed in any window.
94
95 @cindex minibuffer confirmation
96 @cindex confirming in the minibuffer
97 If you specify a buffer that does not exist, @kbd{C-x b} creates a
98 new, empty buffer that is not visiting any file, and selects it for
99 editing. First, however, Emacs might prompt you for confirmation, in
100 case you entered the wrong buffer name. Emacs asks for confirmation
101 only if the last key you typed, before submitting the minibuffer input
102 with @key{RET}, was @key{TAB} (@code{minibuffer-complete}). This
103 catches a common mistake, in which one types @key{RET} before
104 realizing that @key{TAB} did not complete far enough to yield the
105 desired buffer name (@pxref{Completion}). Emacs asks for confirmation
106 by putting the message @samp{[Confirm]} in the minibuffer; type
107 @key{RET} again to confirm and visit the buffer.
108
109 @vindex confirm-nonexistent-file-or-buffer
110 The variable @code{confirm-nonexistent-file-or-buffer} controls
111 whether Emacs asks for confirmation before visiting a buffer that did
112 not previously exist. The default value, @code{after-completion},
113 gives the behavior we have just described. If the value is
114 @code{nil}, Emacs never asks for confirmation; for any other
115 non-@code{nil} value, Emacs always asks for confirmation. This
116 variable also affects the @code{find-file} command (@pxref{Visiting}).
117
118 One reason to create a new buffer is to use it for making temporary
119 notes. If you try to save it, Emacs asks for the file name to use.
120 The default value of the variable @code{major-mode} determines the new
121 buffer's major mode; the default value is Fundamental mode. @xref{Major
122 Modes}.
123
124 @kindex C-x @key{LEFT}
125 @kindex C-x @key{RIGHT}
126 @findex next-buffer
127 @findex previous-buffer
128 For conveniently switching between a few buffers, use the commands
129 @kbd{C-x @key{LEFT}} and @kbd{C-x @key{RIGHT}}. @kbd{C-x @key{RIGHT}}
130 (@code{previous-buffer}) selects the previous buffer (following the order
131 of most recent selection in the current frame), while @kbd{C-x @key{LEFT}}
132 (@code{next-buffer}) moves through buffers in the reverse direction.
133
134 @kindex C-x 4 b
135 @findex switch-to-buffer-other-window
136 @vindex even-window-heights
137 To select a buffer in a window other than the current one, type
138 @kbd{C-x 4 b} (@code{switch-to-buffer-other-window}). This prompts
139 for a buffer name using the minibuffer, displays that buffer in
140 another window, and selects that window. By default, if displaying
141 the buffer causes two vertically adjacent windows to be displayed, the
142 heights of those windows are evened out; to countermand that and
143 preserve the window configuration, set the variable
144 @code{even-window-heights} to @code{nil}.
145
146 @kindex C-x 5 b
147 @findex switch-to-buffer-other-frame
148 Similarly, @kbd{C-x 5 b} (@code{switch-to-buffer-other-frame})
149 prompts for a buffer name, displays that buffer in another frame, and
150 selects that frame.
151
152 In addition, @kbd{C-x C-f}, and any other command for visiting a
153 file, can also be used to switch to an existing file-visiting buffer.
154 @xref{Visiting}.
155
156 @vindex display-buffer-reuse-frames
157 You can control how certain buffers are handled by these commands by
158 customizing the variables @code{special-display-buffer-names},
159 @code{special-display-regexps}, @code{same-window-buffer-names}, and
160 @code{same-window-regexps}. See @ref{Force Same Window}, and
161 @ref{Special Buffer Frames}, for more about these variables. In
162 addition, if the value of @code{display-buffer-reuse-frames} is
163 non-@code{nil}, and the buffer you want to switch to is already
164 displayed in some frame, Emacs will just raise that frame.
165
166 @findex goto-line
167 @kbd{C-u M-g M-g}, that is @code{goto-line} with a plain prefix
168 argument, reads a number @var{n} using the minibuffer, selects the
169 most recently selected buffer other than the current buffer in another
170 window, and then moves point to the beginning of line number @var{n}
171 in that buffer. This is mainly useful in a buffer that refers to line
172 numbers in another buffer: if point is on or just after a number,
173 @code{goto-line} uses that number as the default for @var{n}. Note
174 that prefix arguments other than just @kbd{C-u} behave differently.
175 @kbd{C-u 4 M-g M-g} goes to line 4 in the @emph{current} buffer,
176 without reading a number from the minibuffer. (Remember that @kbd{M-g
177 M-g} without prefix argument reads a number @var{n} and then moves to
178 line number @var{n} in the current buffer. @xref{Moving Point}.)
179
180 Emacs uses buffer names that start with a space for internal purposes.
181 It treats these buffers specially in minor ways---for example, by
182 default they do not record undo information. It is best to avoid using
183 such buffer names yourself.
184
185 @node List Buffers
186 @section Listing Existing Buffers
187
188 @table @kbd
189 @item C-x C-b
190 List the existing buffers (@code{list-buffers}).
191 @end table
192
193 @cindex listing current buffers
194 @kindex C-x C-b
195 @findex list-buffers
196 To display a list of existing buffers, type @kbd{C-x C-b}. Each
197 line in the list shows one buffer's name, major mode and visited file.
198 The buffers are listed in the order that they were current; the
199 buffers that were current most recently come first.
200
201 @samp{.} in the first field of a line indicates that the buffer is
202 current. @samp{%} indicates a read-only buffer. @samp{*} indicates
203 that the buffer is ``modified.'' If several buffers are modified, it
204 may be time to save some with @kbd{C-x s} (@pxref{Save Commands}).
205 Here is an example of a buffer list:
206
207 @smallexample
208 CRM Buffer Size Mode File
209 . * .emacs 3294 Emacs-Lisp ~/.emacs
210 % *Help* 101 Help
211 search.c 86055 C ~/cvs/emacs/src/search.c
212 % src 20959 Dired by name ~/cvs/emacs/src/
213 * *mail* 42 Mail
214 % HELLO 1607 Fundamental ~/cvs/emacs/etc/HELLO
215 % NEWS 481184 Outline ~/cvs/emacs/etc/NEWS
216 *scratch* 191 Lisp Interaction
217 * *Messages* 1554 Fundamental
218 @end smallexample
219
220 @noindent
221 The buffer @samp{*Help*} was made by a help request (@pxref{Help}); it
222 is not visiting any file. The buffer @code{src} was made by Dired on
223 the directory @file{~/cvs/emacs/src/}. You can list only buffers that
224 are visiting files by giving the command a prefix argument, as in
225 @kbd{C-u C-x C-b}.
226
227 @code{list-buffers} omits buffers whose names begin with a space,
228 unless they visit files: such buffers are used internally by Emacs.
229
230 @node Misc Buffer
231 @section Miscellaneous Buffer Operations
232
233 @table @kbd
234 @item C-x C-q
235 Toggle read-only status of buffer (@code{toggle-read-only}).
236 @item M-x rename-buffer @key{RET} @var{name} @key{RET}
237 Change the name of the current buffer.
238 @item M-x rename-uniquely
239 Rename the current buffer by adding @samp{<@var{number}>} to the end.
240 @item M-x view-buffer @key{RET} @var{buffer} @key{RET}
241 Scroll through buffer @var{buffer}.
242 @end table
243
244 @kindex C-x C-q
245 @vindex buffer-read-only
246 @cindex read-only buffer
247 A buffer can be @dfn{read-only}, which means that commands to change
248 its contents are not allowed. The mode line indicates read-only
249 buffers with @samp{%%} or @samp{%*} near the left margin. Read-only
250 buffers are usually made by subsystems such as Dired and Rmail that
251 have special commands to operate on the text; also by visiting a file
252 whose access control says you cannot write it.
253
254 @findex toggle-read-only
255 If you wish to make changes in a read-only buffer, use the command
256 @kbd{C-x C-q} (@code{toggle-read-only}). It makes a read-only buffer
257 writable, and makes a writable buffer read-only. This
258 works by setting the variable @code{buffer-read-only}, which has a local
259 value in each buffer and makes the buffer read-only if its value is
260 non-@code{nil}. If you have files under version control, you may find
261 it convenient to bind @kbd{C-x C-q} to @code{vc-toggle-read-only}
262 instead. This will guard you against an operation that will confuse
263 most modern version-conmtrol systems. @xref{Version Control}.
264
265 @findex rename-buffer
266 @kbd{M-x rename-buffer} changes the name of the current buffer. You
267 specify the new name as a minibuffer argument; there is no default.
268 If you specify a name that is in use for some other buffer, an error
269 happens and no renaming is done.
270
271 @findex rename-uniquely
272 @kbd{M-x rename-uniquely} renames the current buffer to a similar
273 name with a numeric suffix added to make it both different and unique.
274 This command does not need an argument. It is useful for creating
275 multiple shell buffers: if you rename the @samp{*shell*} buffer, then
276 do @kbd{M-x shell} again, it makes a new shell buffer named
277 @samp{*shell*}; meanwhile, the old shell buffer continues to exist
278 under its new name. This method is also good for mail buffers,
279 compilation buffers, and most Emacs features that create special
280 buffers with particular names. (With some of these features, such as
281 @kbd{M-x compile}, @kbd{M-x grep} an @kbd{M-x info}, you need to
282 switch to some other buffer before using the command, in order for it
283 to make a different buffer.)
284
285 @findex view-buffer
286 @kbd{M-x view-buffer} is much like @kbd{M-x view-file} (@pxref{Misc
287 File Ops}) except that it examines an already existing Emacs buffer.
288 View mode provides commands for scrolling through the buffer
289 conveniently but not for changing it. When you exit View mode with
290 @kbd{q}, that switches back to the buffer (and the position) which was
291 previously displayed in the window. Alternatively, if you exit View
292 mode with @kbd{e}, the buffer and the value of point that resulted from
293 your perusal remain in effect.
294
295 The commands @kbd{M-x append-to-buffer} and @kbd{M-x insert-buffer}
296 can be used to copy text from one buffer to another. @xref{Accumulating
297 Text}.
298
299 @node Kill Buffer
300 @section Killing Buffers
301
302 @cindex killing buffers
303 If you continue an Emacs session for a while, you may accumulate a
304 large number of buffers. You may then find it convenient to @dfn{kill}
305 the buffers you no longer need. On most operating systems, killing a
306 buffer releases its space back to the operating system so that other
307 programs can use it. Here are some commands for killing buffers:
308
309 @table @kbd
310 @item C-x k @var{bufname} @key{RET}
311 Kill buffer @var{bufname} (@code{kill-buffer}).
312 @item M-x kill-some-buffers
313 Offer to kill each buffer, one by one.
314 @item M-x kill-matching-buffers
315 Offer to kill all buffers matching a regular expression.
316 @end table
317
318 @findex kill-buffer
319 @kindex C-x k
320 @kbd{C-x k} (@code{kill-buffer}) kills one buffer, whose name you
321 specify in the minibuffer. The default, used if you type just
322 @key{RET} in the minibuffer, is to kill the current buffer. If you
323 kill the current buffer, another buffer becomes current: one that was
324 current in the recent past but is not displayed in any window now. If
325 you ask to kill a file-visiting buffer that is modified, then you must
326 confirm with @kbd{yes} before the buffer is killed.
327
328 @findex kill-some-buffers
329 The command @kbd{M-x kill-some-buffers} asks about each buffer, one
330 by one. An answer of @kbd{y} means to kill the buffer, just like
331 @code{kill-buffer}. This command ignores buffers whose names begin
332 with a space, which are used internally by Emacs.
333
334 @findex kill-matching-buffers
335 The command @kbd{M-x kill-matching-buffers} prompts for a regular
336 expression and kills all buffers whose names match that expression.
337 @xref{Regexps}. Like @code{kill-some-buffers}, it asks for
338 confirmation before each kill. This command normally ignores buffers
339 whose names begin with a space, which are used internally by Emacs.
340 To kill internal buffers as well, call @code{kill-matching-buffers}
341 with a prefix argument.
342
343 The buffer menu feature is also convenient for killing various
344 buffers. @xref{Several Buffers}.
345
346 @vindex kill-buffer-hook
347 If you want to do something special every time a buffer is killed, you
348 can add hook functions to the hook @code{kill-buffer-hook} (@pxref{Hooks}).
349
350 @findex clean-buffer-list
351 If you run one Emacs session for a period of days, as many people do,
352 it can fill up with buffers that you used several days ago. The command
353 @kbd{M-x clean-buffer-list} is a convenient way to purge them; it kills
354 all the unmodified buffers that you have not used for a long time. An
355 ordinary buffer is killed if it has not been displayed for three days;
356 however, you can specify certain buffers that should never be killed
357 automatically, and others that should be killed if they have been unused
358 for a mere hour.
359
360 @cindex Midnight mode
361 @vindex midnight-mode
362 @vindex midnight-hook
363 You can also have this buffer purging done for you, every day at
364 midnight, by enabling Midnight mode. Midnight mode operates each day
365 at midnight; at that time, it runs @code{clean-buffer-list}, or
366 whichever functions you have placed in the normal hook
367 @code{midnight-hook} (@pxref{Hooks}). To enable Midnight mode, use
368 the Customization buffer to set the variable @code{midnight-mode} to
369 @code{t}. @xref{Easy Customization}.
370
371 @node Several Buffers
372 @section Operating on Several Buffers
373 @cindex buffer menu
374
375 @table @kbd
376 @item M-x buffer-menu
377 Begin editing a buffer listing all Emacs buffers.
378 @item M-x buffer-menu-other-window.
379 Similar, but do it in another window.
380 @end table
381
382 The @dfn{buffer menu} opened by @kbd{C-x C-b} (@pxref{List Buffers})
383 does not merely list buffers. It also allows you to perform various
384 operations on buffers, through an interface similar to Dired
385 (@pxref{Dired}). You can save buffers, kill them (here called
386 @dfn{deleting} them, for consistency with Dired), or display them.
387
388 @findex buffer-menu
389 @findex buffer-menu-other-window
390 To use the buffer menu, type @kbd{C-x C-b} and switch to the window
391 displaying the @samp{*Buffer List*} buffer. You can also type
392 @kbd{M-x buffer-menu} to open the buffer menu in the selected window.
393 Alternatively, the command @kbd{M-x buffer-menu-other-window} opens
394 the buffer menu in another window, and selects that window.
395
396 The buffer menu is a read-only buffer, and can be changed only
397 through the special commands described in this section. The usual
398 Emacs cursor motion commands can be used in this buffer. The
399 following commands apply to the buffer described on the current line:
400
401 @table @kbd
402 @item d
403 Request to delete (kill) the buffer, then move down. The request
404 shows as a @samp{D} on the line, before the buffer name. Requested
405 deletions take place when you type the @kbd{x} command.
406 @item C-d
407 Like @kbd{d} but move up afterwards instead of down.
408 @item s
409 Request to save the buffer. The request shows as an @samp{S} on the
410 line. Requested saves take place when you type the @kbd{x} command.
411 You may request both saving and deletion for the same buffer.
412 @item x
413 Perform previously requested deletions and saves.
414 @item u
415 Remove any request made for the current line, and move down.
416 @item @key{DEL}
417 Move to previous line and remove any request made for that line.
418 @end table
419
420 The @kbd{d}, @kbd{C-d}, @kbd{s} and @kbd{u} commands to add or remove
421 flags also move down (or up) one line. They accept a numeric argument
422 as a repeat count.
423
424 These commands operate immediately on the buffer listed on the current
425 line:
426
427 @table @kbd
428 @item ~
429 Mark the buffer ``unmodified.'' The command @kbd{~} does this
430 immediately when you type it.
431 @item %
432 Toggle the buffer's read-only flag. The command @kbd{%} does
433 this immediately when you type it.
434 @item t
435 Visit the buffer as a tags table. @xref{Select Tags Table}.
436 @end table
437
438 There are also commands to select another buffer or buffers:
439
440 @table @kbd
441 @item q
442 Quit the buffer menu---immediately display the most recent formerly
443 visible buffer in its place.
444 @item @key{RET}
445 @itemx f
446 Immediately select this line's buffer in place of the @samp{*Buffer
447 List*} buffer.
448 @item o
449 Immediately select this line's buffer in another window as if by
450 @kbd{C-x 4 b}, leaving @samp{*Buffer List*} visible.
451 @item C-o
452 Immediately display this line's buffer in another window, but don't
453 select the window.
454 @item 1
455 Immediately select this line's buffer in a full-screen window.
456 @item 2
457 Immediately set up two windows, with this line's buffer selected in
458 one, and the previously current buffer (aside from the buffer
459 @samp{*Buffer List*}) displayed in the other.
460 @item b
461 Bury the buffer listed on this line.
462 @item m
463 Mark this line's buffer to be displayed in another window if you exit
464 with the @kbd{v} command. The request shows as a @samp{>} at the
465 beginning of the line. (A single buffer may not have both a delete
466 request and a display request.)
467 @item v
468 Immediately select this line's buffer, and also display in other windows
469 any buffers previously marked with the @kbd{m} command. If you have not
470 marked any buffers, this command is equivalent to @kbd{1}.
471 @end table
472
473 There is also a command that affects the entire buffer list:
474
475 @table @kbd
476 @item T
477 Delete, or reinsert, lines for non-file buffers. This command toggles
478 the inclusion of such buffers in the buffer list.
479 @end table
480
481 What @code{buffer-menu} actually does is create and switch to a
482 suitable buffer, and turn on Buffer Menu mode in it. Everything else
483 described above is implemented by the special commands provided in
484 Buffer Menu mode. One consequence of this is that you can switch from
485 the @samp{*Buffer List*} buffer to another Emacs buffer, and edit
486 there. You can reselect the @samp{*Buffer List*} buffer later, to
487 perform the operations already requested, or you can kill it, or pay
488 no further attention to it.
489
490 Normally, the buffer @samp{*Buffer List*} is not updated
491 automatically when buffers are created and killed; its contents are
492 just text. If you have created, deleted or renamed buffers, the way
493 to update @samp{*Buffer List*} to show what you have done is to type
494 @kbd{g} (@code{revert-buffer}). You can make this happen regularly
495 every @code{auto-revert-interval} seconds if you enable Auto Revert
496 mode in this buffer, as long as it is not marked modified. Global
497 Auto Revert mode applies to the @samp{*Buffer List*} buffer only if
498 @code{global-auto-revert-non-file-buffers} is non-@code{nil}.
499 @iftex
500 @inforef{Autorevert,, emacs-xtra}, for details.
501 @end iftex
502 @ifnottex
503 @xref{Autorevert, global-auto-revert-non-file-buffers}, for details.
504 @end ifnottex
505
506 @node Indirect Buffers
507 @section Indirect Buffers
508 @cindex indirect buffer
509 @cindex base buffer
510
511 An @dfn{indirect buffer} shares the text of some other buffer, which
512 is called the @dfn{base buffer} of the indirect buffer. In some ways it
513 is the analogue, for buffers, of a symbolic link between files.
514
515 @table @kbd
516 @findex make-indirect-buffer
517 @item M-x make-indirect-buffer @key{RET} @var{base-buffer} @key{RET} @var{indirect-name} @key{RET}
518 Create an indirect buffer named @var{indirect-name} whose base buffer
519 is @var{base-buffer}.
520 @findex clone-indirect-buffer
521 @item M-x clone-indirect-buffer @key{RET}
522 Create an indirect buffer that is a twin copy of the current buffer.
523 @item C-x 4 c
524 @kindex C-x 4 c
525 @findex clone-indirect-buffer-other-window
526 Create an indirect buffer that is a twin copy of the current buffer, and
527 select it in another window (@code{clone-indirect-buffer-other-window}).
528 @end table
529
530 The text of the indirect buffer is always identical to the text of its
531 base buffer; changes made by editing either one are visible immediately
532 in the other. But in all other respects, the indirect buffer and its
533 base buffer are completely separate. They can have different names,
534 different values of point, different narrowing, different markers,
535 different major modes, and different local variables.
536
537 An indirect buffer cannot visit a file, but its base buffer can. If
538 you try to save the indirect buffer, that actually works by saving the
539 base buffer. Killing the base buffer effectively kills the indirect
540 buffer, but killing an indirect buffer has no effect on its base buffer.
541
542 One way to use indirect buffers is to display multiple views of an
543 outline. @xref{Outline Views}.
544
545 @vindex clone-indirect-buffer-hook
546 A quick and handy way to make an indirect buffer is with the command
547 @kbd{M-x clone-indirect-buffer}. It creates and selects an indirect
548 buffer whose base buffer is the current buffer. With a numeric
549 argument, it prompts for the name of the indirect buffer; otherwise it
550 uses the name of the current buffer, with a @samp{<@var{n}>} suffix
551 added. @kbd{C-x 4 c} (@code{clone-indirect-buffer-other-window})
552 works like @kbd{M-x clone-indirect-buffer}, but it selects the new
553 buffer in another window. These functions run the hook
554 @code{clone-indirect-buffer-hook} after creating the indirect buffer.
555
556 The more general way to make an indirect buffer is with the command
557 @kbd{M-x make-indirect-buffer}. It creates an indirect buffer from
558 buffer @var{base-buffer}, under the name @var{indirect-name}. It
559 prompts for both @var{base-buffer} and @var{indirect-name} using the
560 minibuffer.
561
562 @node Buffer Convenience
563 @section Convenience Features and Customization of Buffer Handling
564
565 This section describes several modes and features that make it more
566 convenient to switch between buffers.
567
568 @menu
569 * Uniquify:: Making buffer names unique with directory parts.
570 * Iswitchb:: Switching between buffers with substrings.
571 * Buffer Menus:: Configurable buffer menu.
572 @end menu
573
574 @node Uniquify
575 @subsection Making Buffer Names Unique
576
577 @cindex unique buffer names
578 @cindex directories in buffer names
579 When several buffers visit identically-named files, Emacs must give
580 the buffers distinct names. The usual method for making buffer names
581 unique adds @samp{<2>}, @samp{<3>}, etc. to the end of the buffer
582 names (all but one of them).
583
584 @vindex uniquify-buffer-name-style
585 Other methods work by adding parts of each file's directory to the
586 buffer name. To select one, load the library @file{uniquify} (e.g.
587 using @code{(require 'uniquify)}), and customize the variable
588 @code{uniquify-buffer-name-style} (@pxref{Easy Customization}).
589
590 To begin with, the @code{forward} naming method includes part of the
591 file's directory name at the beginning of the buffer name; using this
592 method, buffers visiting the files @file{/u/rms/tmp/Makefile} and
593 @file{/usr/projects/zaphod/Makefile} would be named
594 @samp{tmp/Makefile} and @samp{zaphod/Makefile}, respectively (instead
595 of @samp{Makefile} and @samp{Makefile<2>}).
596
597 In contrast, the @code{post-forward} naming method would call the
598 buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}, and the
599 @code{reverse} naming method would call them @samp{Makefile\tmp} and
600 @samp{Makefile\zaphod}. The nontrivial difference between
601 @code{post-forward} and @code{reverse} occurs when just one directory
602 name is not enough to distinguish two files; then @code{reverse} puts
603 the directory names in reverse order, so that @file{/top/middle/file}
604 becomes @samp{file\middle\top}, while @code{post-forward} puts them in
605 forward order after the file name, as in @samp{file|top/middle}.
606
607 Which rule to follow for putting the directory names in the buffer
608 name is not very important if you are going to @emph{look} at the
609 buffer names before you type one. But as an experienced user, if you
610 know the rule, you won't have to look. And then you may find that one
611 rule or another is easier for you to remember and apply quickly.
612
613 @node Iswitchb
614 @subsection Switching Between Buffers using Substrings
615
616 @findex iswitchb-mode
617 @cindex Iswitchb mode
618 @cindex mode, Iswitchb
619 @kindex C-x b @r{(Iswitchb mode)}
620 @kindex C-x 4 b @r{(Iswitchb mode)}
621 @kindex C-x 5 b @r{(Iswitchb mode)}
622 @kindex C-x 4 C-o @r{(Iswitchb mode)}
623
624 Iswitchb global minor mode provides convenient switching between
625 buffers using substrings of their names. It replaces the normal
626 definitions of @kbd{C-x b}, @kbd{C-x 4 b}, @kbd{C-x 5 b}, and @kbd{C-x
627 4 C-o} with alternative commands that are somewhat ``smarter.''
628
629 When one of these commands prompts you for a buffer name, you can
630 type in just a substring of the name you want to choose. As you enter
631 the substring, Iswitchb mode continuously displays a list of buffers
632 that match the substring you have typed.
633
634 At any time, you can type @key{RET} to select the first buffer in
635 the list. So the way to select a particular buffer is to make it the
636 first in the list. There are two ways to do this. You can type more
637 of the buffer name and thus narrow down the list, excluding unwanted
638 buffers above the desired one. Alternatively, you can use @kbd{C-s}
639 and @kbd{C-r} to rotate the list until the desired buffer is first.
640
641 @key{TAB} while entering the buffer name performs completion on the
642 string you have entered, based on the displayed list of buffers.
643
644 To enable Iswitchb mode, type @kbd{M-x iswitchb-mode}, or customize
645 the variable @code{iswitchb-mode} to @code{t} (@pxref{Easy
646 Customization}).
647
648 @node Buffer Menus
649 @subsection Customizing Buffer Menus
650
651 @findex bs-show
652 @cindex buffer list, customizable
653 @table @kbd
654 @item M-x bs-show
655 Make a list of buffers similarly to @kbd{M-x list-buffers} but
656 customizable.
657 @end table
658
659 @kbd{M-x bs-show} pops up a buffer list similar to the one normally
660 displayed by @kbd{C-x C-b} but which you can customize. If you prefer
661 this to the usual buffer list, you can bind this command to @kbd{C-x
662 C-b}. To customize this buffer list, use the @code{bs} Custom group
663 (@pxref{Easy Customization}).
664
665 @findex msb-mode
666 @cindex mode, MSB
667 @cindex MSB mode
668 @cindex buffer menu
669 @findex mouse-buffer-menu
670 @kindex C-Down-Mouse-1
671 MSB global minor mode (``MSB'' stands for ``mouse select buffer'')
672 provides a different and customizable mouse buffer menu which you may
673 prefer. It replaces the bindings of @code{mouse-buffer-menu},
674 normally on @kbd{C-Down-Mouse-1}, and the menu bar buffer menu. You
675 can customize the menu in the @code{msb} Custom group.