* Kill Buffer:: Killing buffers you no longer need.
* Several Buffers:: How to go through the list of all buffers
and operate variously on several of them.
-* Indirect Buffers:: An indirect buffer shares the text of another buffer.
+* Indirect Buffers:: An indirect buffer shares the text of another buffer.
* Buffer Convenience:: Convenience and customization features for
buffer handling.
@end menu
file. The buffers are listed in the order that they were current; the
buffers that were current most recently come first.
- @samp{*} at the beginning of a line indicates the buffer is ``modified.''
+ @samp{*} in the first field of a line indicates the buffer is ``modified.''
If several buffers are modified, it may be time to save some with @kbd{C-x s}
(@pxref{Saving}). @samp{%} indicates a read-only buffer. @samp{.} marks the
current buffer. Here is an example of a buffer list:@refill
@smallexample
- MR Buffer Size Mode File
- -- ------ ---- ---- ----
-.* emacs.tex 383402 Texinfo /u2/emacs/man/emacs.tex
- *Help* 1287 Fundamental
- files.el 23076 Emacs-Lisp /u2/emacs/lisp/files.el
- % RMAIL 64042 RMAIL /u/rms/RMAIL
- *% man 747 Dired /u2/emacs/man/
- net.emacs 343885 Fundamental /u/rms/net.emacs
- fileio.c 27691 C /u2/emacs/src/fileio.c
- NEWS 67340 Text /u2/emacs/etc/NEWS
- *scratch* 0 Lisp Interaction
+CRM Buffer Size Mode File
+. * .emacs 3294 Emacs-Lisp ~/.emacs
+ % *Help* 101 Help
+ search.c 86055 C ~/cvs/emacs/src/search.c
+ % src 20959 Dired by name ~/cvs/emacs/src/
+ * *mail* 42 Mail
+ % HELLO 1607 Fundamental ~/cvs/emacs/etc/HELLO
+ % NEWS 481184 Outline ~/cvs/emacs/etc/NEWS
+ *scratch* 191 Lisp Interaction
+ * *Messages* 1554 Fundamental
@end smallexample
@noindent
Note that the buffer @samp{*Help*} was made by a help request; it is
-not visiting any file. The buffer @code{man} was made by Dired on the
-directory @file{/u2/emacs/man/}. You can list only buffers that are
+not visiting any file. The buffer @code{src} was made by Dired on the
+directory @file{~/cvs/emacs/src/}. You can list only buffers that are
visiting files by giving the command a prefix; for instance, by typing
@kbd{C-u C-x C-b}.
@table @kbd
@item C-x C-q
-Toggle read-only status of buffer (@code{vc-toggle-read-only}).
+Toggle read-only status of buffer (@code{toggle-read-only}).
@item M-x rename-buffer @key{RET} @var{name} @key{RET}
Change the name of the current buffer.
@item M-x rename-uniquely
@end table
@kindex C-x C-q
-@c Don't index vc-toggle-read-only here, it is indexed in files.texi,
-@c in the node "Basic VC Editing".
-@c @findex vc-toggle-read-only
@vindex buffer-read-only
@cindex read-only buffer
A buffer can be @dfn{read-only}, which means that commands to change
have special commands to operate on the text; also by visiting a file
whose access control says you cannot write it.
+@findex toggle-read-only
If you wish to make changes in a read-only buffer, use the command
-@kbd{C-x C-q} (@code{vc-toggle-read-only}). It makes a read-only buffer
-writable, and makes a writable buffer read-only. In most cases, this
+@kbd{C-x C-q} (@code{toggle-read-only}). It makes a read-only buffer
+writable, and makes a writable buffer read-only. This
works by setting the variable @code{buffer-read-only}, which has a local
value in each buffer and makes the buffer read-only if its value is
-non-@code{nil}. If the file is maintained with version control,
-@kbd{C-x C-q} works through the version control system to change the
-read-only status of the file as well as the buffer. @xref{Version
+non-@code{nil}. If you have files under version control, you may find
+it convenient to bind @kbd{C-x C-q} to @code{vc-toggle-read-only}
+instead. Then, typing @kbd{C-x C-q} not only changes the read-only
+flag, but it also checks the file in or out. @xref{Version
Control}.
@findex rename-buffer
specify a name that is in use for some other buffer, an error happens and
no renaming is done.
- @kbd{M-x rename-uniquely} renames the current buffer to a similar name
-with a numeric suffix added to make it both different and unique. This
-command does not need an argument. It is useful for creating multiple
-shell buffers: if you rename the @samp{*Shell*} buffer, then do @kbd{M-x
-shell} again, it makes a new shell buffer named @samp{*Shell*};
-meanwhile, the old shell buffer continues to exist under its new name.
-This method is also good for mail buffers, compilation buffers, and most
-Emacs features that create special buffers with particular names.
+@findex rename-uniquely
+ @kbd{M-x rename-uniquely} renames the current buffer to a similar
+name with a numeric suffix added to make it both different and unique.
+This command does not need an argument. It is useful for creating
+multiple shell buffers: if you rename the @samp{*Shell*} buffer, then
+do @kbd{M-x shell} again, it makes a new shell buffer named
+@samp{*Shell*}; meanwhile, the old shell buffer continues to exist
+under its new name. This method is also good for mail buffers,
+compilation buffers, and most Emacs features that create special
+buffers with particular names. (With some of these features, such as
+@kbd{M-x compile}, @kbd{M-x grep} an @kbd{M-x info}, you need to
+switch to some other buffer before using the command, in order for it
+to make a different buffer.)
@findex view-buffer
@kbd{M-x view-buffer} is much like @kbd{M-x view-file} (@pxref{Misc
@findex buffer-menu-other-window
The command @code{buffer-menu} writes a list of all Emacs
buffers@footnote{Buffers which don't visit files and whose names begin
-with a space are omitted: these are used internally by Emacs.} into
-the buffer @samp{*Buffer List*}, and selects that buffer in Buffer Menu
-mode. The buffer is read-only, and can be changed only through the
-special commands described in this section. The usual Emacs cursor
-motion commands can be used in the @samp{*Buffer List*} buffer. The
-following commands apply to the buffer described on the current line.
+with a space are omitted: these are used internally by Emacs.} into the
+buffer @samp{*Buffer List*}, and selects that buffer in Buffer Menu
+mode. The list in the @samp{*Buffer List*} buffer looks exactly as
+described in @ref{List Buffers}. The buffer is read-only, and can be
+changed only through the special commands described in this section.
+The usual Emacs cursor motion commands can be used in the @samp{*Buffer
+List*} buffer. The following commands apply to the buffer described on
+the current line.
@table @kbd
@item d
One way to use indirect buffers is to display multiple views of an
outline. @xref{Outline Views}.
-@cindex multiple @samp{*info*} and @samp{*Help*} buffers
A quick and handy way to make an indirect buffer is with the command
@kbd{M-x clone-indirect-buffer}. It creates and selects an indirect
buffer whose base buffer is the current buffer. With a numeric
argument, it prompts for the name of the indirect buffer; otherwise it
defaults to the name of the current buffer, modifying it by adding a
-@samp{<@var{n}>} prefix if required. @kbd{C-x 4 c}
+@samp{<@var{n}>} suffix if required. @kbd{C-x 4 c}
(@code{clone-indirect-buffer-other-window}) works like @kbd{M-x
-clone-indirect-buffer}, but it selects the cloned buffer in another
-window. These commands come in handy if you want to create new
-@samp{*info*} or @samp{*Help*} buffers, for example.
+clone-indirect-buffer}, but it selects the new buffer in another
+window.
- The more general way is with the command @kbd{M-x
-make-indirect-buffer}. It creates an indirect buffer from buffer
-@var{base-buffer}, under the name @var{indirect-name}. It prompts for
-both @var{base-buffer} and @var{indirect-name} using the minibuffer.
+ The more general way to make an indirect buffer is with the command
+@kbd{M-x make-indirect-buffer}. It creates an indirect buffer from
+buffer @var{base-buffer}, under the name @var{indirect-name}. It
+prompts for both @var{base-buffer} and @var{indirect-name} using the
+minibuffer.
@node Buffer Convenience
@section Convenience Features and Customization of Buffer Handling
@menu
* Uniquify:: Buffer names can contain directory parts.
* Iswitchb:: Switching between buffers with substrings.
-* Buffer Menus:: Configurable buffer menu.
+* Buffer Menus:: Configurable buffer menu.
@end menu
@node Uniquify
prefer. It replaces the bindings of @code{mouse-buffer-menu},
normally on @kbd{C-Down-Mouse-1}, and the menu bar buffer menu. You
can customize the menu in the @code{msb} Custom group.
+
+@ignore
+ arch-tag: 08c43460-f4f4-4b43-9cb5-1ea9ad991695
+@end ignore