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