annotate man/buffers.texi @ 31105:0c34d4d76e65

(Vcompletion_auto_help): Renamed from `auto_help'. (do_completion, Fminibuffer_complete_word): Use it. (syms_of_minibuf): Turn completion-auto-help into a proper Lisp var so it can take non-boolean values.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 22 Aug 2000 22:49:22 +0000
parents 3d90d6c1f3b9
children 4140a40525e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
Dave Love <fx@gnu.org>
parents:
diff changeset
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
Dave Love <fx@gnu.org>
parents:
diff changeset
3 @c See file emacs.texi for copying conditions.
Dave Love <fx@gnu.org>
parents:
diff changeset
4 @node Buffers, Windows, Files, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
5 @chapter Using Multiple Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
6
Dave Love <fx@gnu.org>
parents:
diff changeset
7 @cindex buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
8 The text you are editing in Emacs resides in an object called a
Dave Love <fx@gnu.org>
parents:
diff changeset
9 @dfn{buffer}. Each time you visit a file, a buffer is created to hold the
Dave Love <fx@gnu.org>
parents:
diff changeset
10 file's text. Each time you invoke Dired, a buffer is created to hold the
Dave Love <fx@gnu.org>
parents:
diff changeset
11 directory listing. If you send a message with @kbd{C-x m}, a buffer named
Dave Love <fx@gnu.org>
parents:
diff changeset
12 @samp{*mail*} is used to hold the text of the message. When you ask for a
Dave Love <fx@gnu.org>
parents:
diff changeset
13 command's documentation, that appears in a buffer called @samp{*Help*}.
Dave Love <fx@gnu.org>
parents:
diff changeset
14
Dave Love <fx@gnu.org>
parents:
diff changeset
15 @cindex selected buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
16 @cindex current buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
17 At any time, one and only one buffer is @dfn{selected}. It is also
Dave Love <fx@gnu.org>
parents:
diff changeset
18 called the @dfn{current buffer}. Often we say that a command operates on
Dave Love <fx@gnu.org>
parents:
diff changeset
19 ``the buffer'' as if there were only one; but really this means that the
Dave Love <fx@gnu.org>
parents:
diff changeset
20 command operates on the selected buffer (most commands do).
Dave Love <fx@gnu.org>
parents:
diff changeset
21
Dave Love <fx@gnu.org>
parents:
diff changeset
22 When Emacs has multiple windows, each window has a chosen buffer which
Dave Love <fx@gnu.org>
parents:
diff changeset
23 is displayed there, but at any time only one of the windows is selected and
Dave Love <fx@gnu.org>
parents:
diff changeset
24 its chosen buffer is the selected buffer. Each window's mode line displays
Dave Love <fx@gnu.org>
parents:
diff changeset
25 the name of the buffer that the window is displaying (@pxref{Windows}).
Dave Love <fx@gnu.org>
parents:
diff changeset
26
Dave Love <fx@gnu.org>
parents:
diff changeset
27 Each buffer has a name, which can be of any length, and you can select
Dave Love <fx@gnu.org>
parents:
diff changeset
28 any buffer by giving its name. Most buffers are made by visiting files,
Dave Love <fx@gnu.org>
parents:
diff changeset
29 and their names are derived from the files' names. But you can also create
Dave Love <fx@gnu.org>
parents:
diff changeset
30 an empty buffer with any name you want. A newly started Emacs has a buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
31 named @samp{*scratch*} which can be used for evaluating Lisp expressions in
Dave Love <fx@gnu.org>
parents:
diff changeset
32 Emacs. The distinction between upper and lower case matters in buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
33 names.
Dave Love <fx@gnu.org>
parents:
diff changeset
34
Dave Love <fx@gnu.org>
parents:
diff changeset
35 Each buffer records individually what file it is visiting, whether it is
Dave Love <fx@gnu.org>
parents:
diff changeset
36 modified, and what major mode and minor modes are in effect in it
Dave Love <fx@gnu.org>
parents:
diff changeset
37 (@pxref{Major Modes}). Any Emacs variable can be made @dfn{local to} a
Dave Love <fx@gnu.org>
parents:
diff changeset
38 particular buffer, meaning its value in that buffer can be different from
Dave Love <fx@gnu.org>
parents:
diff changeset
39 the value in other buffers. @xref{Locals}.
Dave Love <fx@gnu.org>
parents:
diff changeset
40
Dave Love <fx@gnu.org>
parents:
diff changeset
41 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
42 * Select Buffer:: Creating a new buffer or reselecting an old one.
Dave Love <fx@gnu.org>
parents:
diff changeset
43 * List Buffers:: Getting a list of buffers that exist.
Dave Love <fx@gnu.org>
parents:
diff changeset
44 * Misc Buffer:: Renaming; changing read-onlyness; copying text.
Dave Love <fx@gnu.org>
parents:
diff changeset
45 * Kill Buffer:: Killing buffers you no longer need.
Dave Love <fx@gnu.org>
parents:
diff changeset
46 * Several Buffers:: How to go through the list of all buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
47 and operate variously on several of them.
Dave Love <fx@gnu.org>
parents:
diff changeset
48 * Indirect Buffers:: An indirect buffer shares the text of another buffer.
30869
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
49 * Buffer Convenience:: Convenience and customization features for
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
50 buffer handling.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
51 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
52
Dave Love <fx@gnu.org>
parents:
diff changeset
53 @node Select Buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
54 @section Creating and Selecting Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
55 @cindex change buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
56 @cindex switch buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
57
Dave Love <fx@gnu.org>
parents:
diff changeset
58 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
59 @item C-x b @var{buffer} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
60 Select or create a buffer named @var{buffer} (@code{switch-to-buffer}).
Dave Love <fx@gnu.org>
parents:
diff changeset
61 @item C-x 4 b @var{buffer} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
62 Similar, but select @var{buffer} in another window
Dave Love <fx@gnu.org>
parents:
diff changeset
63 (@code{switch-to-buffer-other-window}).
Dave Love <fx@gnu.org>
parents:
diff changeset
64 @item C-x 5 b @var{buffer} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
65 Similar, but select @var{buffer} in a separate frame
Dave Love <fx@gnu.org>
parents:
diff changeset
66 (@code{switch-to-buffer-other-frame}).
Dave Love <fx@gnu.org>
parents:
diff changeset
67 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
68
Dave Love <fx@gnu.org>
parents:
diff changeset
69 @kindex C-x 4 b
Dave Love <fx@gnu.org>
parents:
diff changeset
70 @findex switch-to-buffer-other-window
Dave Love <fx@gnu.org>
parents:
diff changeset
71 @kindex C-x 5 b
Dave Love <fx@gnu.org>
parents:
diff changeset
72 @findex switch-to-buffer-other-frame
Dave Love <fx@gnu.org>
parents:
diff changeset
73 @kindex C-x b
Dave Love <fx@gnu.org>
parents:
diff changeset
74 @findex switch-to-buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
75 To select the buffer named @var{bufname}, type @kbd{C-x b @var{bufname}
Dave Love <fx@gnu.org>
parents:
diff changeset
76 @key{RET}}. This runs the command @code{switch-to-buffer} with argument
Dave Love <fx@gnu.org>
parents:
diff changeset
77 @var{bufname}. You can use completion on an abbreviation for the buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
78 name you want (@pxref{Completion}). An empty argument to @kbd{C-x b}
Dave Love <fx@gnu.org>
parents:
diff changeset
79 specifies the most recently selected buffer that is not displayed in any
Dave Love <fx@gnu.org>
parents:
diff changeset
80 window.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
81
Dave Love <fx@gnu.org>
parents:
diff changeset
82 Most buffers are created by visiting files, or by Emacs commands that
Dave Love <fx@gnu.org>
parents:
diff changeset
83 want to display some text, but you can also create a buffer explicitly
Dave Love <fx@gnu.org>
parents:
diff changeset
84 by typing @kbd{C-x b @var{bufname} @key{RET}}. This makes a new, empty
Dave Love <fx@gnu.org>
parents:
diff changeset
85 buffer that is not visiting any file, and selects it for editing. Such
Dave Love <fx@gnu.org>
parents:
diff changeset
86 buffers are used for making notes to yourself. If you try to save one,
Dave Love <fx@gnu.org>
parents:
diff changeset
87 you are asked for the file name to use. The new buffer's major mode is
Dave Love <fx@gnu.org>
parents:
diff changeset
88 determined by the value of @code{default-major-mode} (@pxref{Major
Dave Love <fx@gnu.org>
parents:
diff changeset
89 Modes}).
Dave Love <fx@gnu.org>
parents:
diff changeset
90
Dave Love <fx@gnu.org>
parents:
diff changeset
91 Note that @kbd{C-x C-f}, and any other command for visiting a file,
Dave Love <fx@gnu.org>
parents:
diff changeset
92 can also be used to switch to an existing file-visiting buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
93 @xref{Visiting}.
Dave Love <fx@gnu.org>
parents:
diff changeset
94
Dave Love <fx@gnu.org>
parents:
diff changeset
95 Emacs uses buffer names that start with a space for internal purposes.
Dave Love <fx@gnu.org>
parents:
diff changeset
96 It treats these buffers specially in minor ways---for example, by
Dave Love <fx@gnu.org>
parents:
diff changeset
97 default they do not record undo information. It is best to avoid using
Dave Love <fx@gnu.org>
parents:
diff changeset
98 such buffer names yourself.
Dave Love <fx@gnu.org>
parents:
diff changeset
99
Dave Love <fx@gnu.org>
parents:
diff changeset
100 @node List Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
101 @section Listing Existing Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
102
Dave Love <fx@gnu.org>
parents:
diff changeset
103 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
104 @item C-x C-b
Dave Love <fx@gnu.org>
parents:
diff changeset
105 List the existing buffers (@code{list-buffers}).
Dave Love <fx@gnu.org>
parents:
diff changeset
106 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
107
Dave Love <fx@gnu.org>
parents:
diff changeset
108 @cindex listing current buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
109 @kindex C-x C-b
Dave Love <fx@gnu.org>
parents:
diff changeset
110 @findex list-buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
111 To display a list of all the buffers that exist, type @kbd{C-x C-b}.
Dave Love <fx@gnu.org>
parents:
diff changeset
112 Each line in the list shows one buffer's name, major mode and visited
Dave Love <fx@gnu.org>
parents:
diff changeset
113 file. The buffers are listed in the order that they were current; the
Dave Love <fx@gnu.org>
parents:
diff changeset
114 buffers that were current most recently come first.
Dave Love <fx@gnu.org>
parents:
diff changeset
115
Dave Love <fx@gnu.org>
parents:
diff changeset
116 @samp{*} at the beginning of a line indicates the buffer is ``modified.''
Dave Love <fx@gnu.org>
parents:
diff changeset
117 If several buffers are modified, it may be time to save some with @kbd{C-x s}
Dave Love <fx@gnu.org>
parents:
diff changeset
118 (@pxref{Saving}). @samp{%} indicates a read-only buffer. @samp{.} marks the
Dave Love <fx@gnu.org>
parents:
diff changeset
119 selected buffer. Here is an example of a buffer list:@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
120
Dave Love <fx@gnu.org>
parents:
diff changeset
121 @smallexample
Dave Love <fx@gnu.org>
parents:
diff changeset
122 MR Buffer Size Mode File
Dave Love <fx@gnu.org>
parents:
diff changeset
123 -- ------ ---- ---- ----
Dave Love <fx@gnu.org>
parents:
diff changeset
124 .* emacs.tex 383402 Texinfo /u2/emacs/man/emacs.tex
Dave Love <fx@gnu.org>
parents:
diff changeset
125 *Help* 1287 Fundamental
Dave Love <fx@gnu.org>
parents:
diff changeset
126 files.el 23076 Emacs-Lisp /u2/emacs/lisp/files.el
Dave Love <fx@gnu.org>
parents:
diff changeset
127 % RMAIL 64042 RMAIL /u/rms/RMAIL
Dave Love <fx@gnu.org>
parents:
diff changeset
128 *% man 747 Dired /u2/emacs/man/
Dave Love <fx@gnu.org>
parents:
diff changeset
129 net.emacs 343885 Fundamental /u/rms/net.emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
130 fileio.c 27691 C /u2/emacs/src/fileio.c
Dave Love <fx@gnu.org>
parents:
diff changeset
131 NEWS 67340 Text /u2/emacs/etc/NEWS
Dave Love <fx@gnu.org>
parents:
diff changeset
132 *scratch* 0 Lisp Interaction
Dave Love <fx@gnu.org>
parents:
diff changeset
133 @end smallexample
Dave Love <fx@gnu.org>
parents:
diff changeset
134
Dave Love <fx@gnu.org>
parents:
diff changeset
135 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
136 Note that the buffer @samp{*Help*} was made by a help request; it is not
Dave Love <fx@gnu.org>
parents:
diff changeset
137 visiting any file. The buffer @code{man} was made by Dired on the
28384
11c8496abbfb *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25829
diff changeset
138 directory @file{/u2/emacs/man/}. You can list buffers visiting files
11c8496abbfb *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25829
diff changeset
139 only by giving the command a prefix, i.e. type @kbd{C-u C-x C-b}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
140
Dave Love <fx@gnu.org>
parents:
diff changeset
141 @need 2000
Dave Love <fx@gnu.org>
parents:
diff changeset
142 @node Misc Buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
143 @section Miscellaneous Buffer Operations
Dave Love <fx@gnu.org>
parents:
diff changeset
144
Dave Love <fx@gnu.org>
parents:
diff changeset
145 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
146 @item C-x C-q
Dave Love <fx@gnu.org>
parents:
diff changeset
147 Toggle read-only status of buffer (@code{vc-toggle-read-only}).
Dave Love <fx@gnu.org>
parents:
diff changeset
148 @item M-x rename-buffer @key{RET} @var{name} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
149 Change the name of the current buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
150 @item M-x rename-uniquely
Dave Love <fx@gnu.org>
parents:
diff changeset
151 Rename the current buffer by adding @samp{<@var{number}>} to the end.
Dave Love <fx@gnu.org>
parents:
diff changeset
152 @item M-x view-buffer @key{RET} @var{buffer} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
153 Scroll through buffer @var{buffer}.
Dave Love <fx@gnu.org>
parents:
diff changeset
154 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
155
Dave Love <fx@gnu.org>
parents:
diff changeset
156 @kindex C-x C-q
Dave Love <fx@gnu.org>
parents:
diff changeset
157 @findex vc-toggle-read-only
Dave Love <fx@gnu.org>
parents:
diff changeset
158 @vindex buffer-read-only
Dave Love <fx@gnu.org>
parents:
diff changeset
159 @cindex read-only buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
160 A buffer can be @dfn{read-only}, which means that commands to change
Dave Love <fx@gnu.org>
parents:
diff changeset
161 its contents are not allowed. The mode line indicates read-only buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
162 with @samp{%%} or @samp{%*} near the left margin. Read-only buffers are
Dave Love <fx@gnu.org>
parents:
diff changeset
163 usually made by subsystems such as Dired and Rmail that have special
Dave Love <fx@gnu.org>
parents:
diff changeset
164 commands to operate on the text; also by visiting a file whose access
30772
43cd847ecb62 (Misc Buffer): Document kill-read-only-ok.
Eli Zaretskii <eliz@gnu.org>
parents: 28384
diff changeset
165 control says you cannot write it. However, if the variable
43cd847ecb62 (Misc Buffer): Document kill-read-only-ok.
Eli Zaretskii <eliz@gnu.org>
parents: 28384
diff changeset
166 @code{kill-read-only-ok} is set to a non-@code{nil} value, you can kill
43cd847ecb62 (Misc Buffer): Document kill-read-only-ok.
Eli Zaretskii <eliz@gnu.org>
parents: 28384
diff changeset
167 (a.k.a.@: cut) read-only text, see @ref{Killing}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
168
Dave Love <fx@gnu.org>
parents:
diff changeset
169 If you wish to make changes in a read-only buffer, use the command
Dave Love <fx@gnu.org>
parents:
diff changeset
170 @kbd{C-x C-q} (@code{vc-toggle-read-only}). It makes a read-only buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
171 writable, and makes a writable buffer read-only. In most cases, this
Dave Love <fx@gnu.org>
parents:
diff changeset
172 works by setting the variable @code{buffer-read-only}, which has a local
Dave Love <fx@gnu.org>
parents:
diff changeset
173 value in each buffer and makes the buffer read-only if its value is
Dave Love <fx@gnu.org>
parents:
diff changeset
174 non-@code{nil}. If the file is maintained with version control,
Dave Love <fx@gnu.org>
parents:
diff changeset
175 @kbd{C-x C-q} works through the version control system to change the
Dave Love <fx@gnu.org>
parents:
diff changeset
176 read-only status of the file as well as the buffer. @xref{Version
Dave Love <fx@gnu.org>
parents:
diff changeset
177 Control}.
Dave Love <fx@gnu.org>
parents:
diff changeset
178
Dave Love <fx@gnu.org>
parents:
diff changeset
179 @findex rename-buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
180 @kbd{M-x rename-buffer} changes the name of the current buffer. Specify
Dave Love <fx@gnu.org>
parents:
diff changeset
181 the new name as a minibuffer argument. There is no default. If you
Dave Love <fx@gnu.org>
parents:
diff changeset
182 specify a name that is in use for some other buffer, an error happens and
Dave Love <fx@gnu.org>
parents:
diff changeset
183 no renaming is done.
Dave Love <fx@gnu.org>
parents:
diff changeset
184
Dave Love <fx@gnu.org>
parents:
diff changeset
185 @kbd{M-x rename-uniquely} renames the current buffer to a similar name
Dave Love <fx@gnu.org>
parents:
diff changeset
186 with a numeric suffix added to make it both different and unique. This
Dave Love <fx@gnu.org>
parents:
diff changeset
187 command does not need an argument. It is useful for creating multiple
Dave Love <fx@gnu.org>
parents:
diff changeset
188 shell buffers: if you rename the @samp{*Shell*} buffer, then do @kbd{M-x
Dave Love <fx@gnu.org>
parents:
diff changeset
189 shell} again, it makes a new shell buffer named @samp{*Shell*};
Dave Love <fx@gnu.org>
parents:
diff changeset
190 meanwhile, the old shell buffer continues to exist under its new name.
Dave Love <fx@gnu.org>
parents:
diff changeset
191 This method is also good for mail buffers, compilation buffers, and most
Dave Love <fx@gnu.org>
parents:
diff changeset
192 Emacs features that create special buffers with particular names.
Dave Love <fx@gnu.org>
parents:
diff changeset
193
Dave Love <fx@gnu.org>
parents:
diff changeset
194 @findex view-buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
195 @kbd{M-x view-buffer} is much like @kbd{M-x view-file} (@pxref{Misc
Dave Love <fx@gnu.org>
parents:
diff changeset
196 File Ops}) except that it examines an already existing Emacs buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
197 View mode provides commands for scrolling through the buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
198 conveniently but not for changing it. When you exit View mode with
Dave Love <fx@gnu.org>
parents:
diff changeset
199 @kbd{q}, that switches back to the buffer (and the position) which was
Dave Love <fx@gnu.org>
parents:
diff changeset
200 previously displayed in the window. Alternatively, if you exit View
Dave Love <fx@gnu.org>
parents:
diff changeset
201 mode with @kbd{e}, the buffer and the value of point that resulted from
Dave Love <fx@gnu.org>
parents:
diff changeset
202 your perusal remain in effect.
Dave Love <fx@gnu.org>
parents:
diff changeset
203
Dave Love <fx@gnu.org>
parents:
diff changeset
204 The commands @kbd{M-x append-to-buffer} and @kbd{M-x insert-buffer}
Dave Love <fx@gnu.org>
parents:
diff changeset
205 can be used to copy text from one buffer to another. @xref{Accumulating
Dave Love <fx@gnu.org>
parents:
diff changeset
206 Text}.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
207
Dave Love <fx@gnu.org>
parents:
diff changeset
208 @node Kill Buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
209 @section Killing Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
210
Dave Love <fx@gnu.org>
parents:
diff changeset
211 @cindex killing buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
212 If you continue an Emacs session for a while, you may accumulate a
Dave Love <fx@gnu.org>
parents:
diff changeset
213 large number of buffers. You may then find it convenient to @dfn{kill}
Dave Love <fx@gnu.org>
parents:
diff changeset
214 the buffers you no longer need. On most operating systems, killing a
Dave Love <fx@gnu.org>
parents:
diff changeset
215 buffer releases its space back to the operating system so that other
Dave Love <fx@gnu.org>
parents:
diff changeset
216 programs can use it. Here are some commands for killing buffers:
Dave Love <fx@gnu.org>
parents:
diff changeset
217
Dave Love <fx@gnu.org>
parents:
diff changeset
218 @c WideCommands
Dave Love <fx@gnu.org>
parents:
diff changeset
219 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
220 @item C-x k @var{bufname} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
221 Kill buffer @var{bufname} (@code{kill-buffer}).
Dave Love <fx@gnu.org>
parents:
diff changeset
222 @item M-x kill-some-buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
223 Offer to kill each buffer, one by one.
Dave Love <fx@gnu.org>
parents:
diff changeset
224 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
225
Dave Love <fx@gnu.org>
parents:
diff changeset
226 @findex kill-buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
227 @findex kill-some-buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
228 @kindex C-x k
Dave Love <fx@gnu.org>
parents:
diff changeset
229
Dave Love <fx@gnu.org>
parents:
diff changeset
230 @kbd{C-x k} (@code{kill-buffer}) kills one buffer, whose name you
Dave Love <fx@gnu.org>
parents:
diff changeset
231 specify in the minibuffer. The default, used if you type just @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
232 in the minibuffer, is to kill the current buffer. If you kill the
Dave Love <fx@gnu.org>
parents:
diff changeset
233 current buffer, another buffer is selected; one that has been selected
Dave Love <fx@gnu.org>
parents:
diff changeset
234 recently but does not appear in any window now. If you ask to kill a
Dave Love <fx@gnu.org>
parents:
diff changeset
235 file-visiting buffer that is modified (has unsaved editing), then you
Dave Love <fx@gnu.org>
parents:
diff changeset
236 must confirm with @kbd{yes} before the buffer is killed.
Dave Love <fx@gnu.org>
parents:
diff changeset
237
Dave Love <fx@gnu.org>
parents:
diff changeset
238 The command @kbd{M-x kill-some-buffers} asks about each buffer, one by
Dave Love <fx@gnu.org>
parents:
diff changeset
239 one. An answer of @kbd{y} means to kill the buffer. Killing the current
Dave Love <fx@gnu.org>
parents:
diff changeset
240 buffer or a buffer containing unsaved changes selects a new buffer or asks
Dave Love <fx@gnu.org>
parents:
diff changeset
241 for confirmation just like @code{kill-buffer}.
Dave Love <fx@gnu.org>
parents:
diff changeset
242
Dave Love <fx@gnu.org>
parents:
diff changeset
243 The buffer menu feature (@pxref{Several Buffers}) is also convenient
Dave Love <fx@gnu.org>
parents:
diff changeset
244 for killing various buffers.
Dave Love <fx@gnu.org>
parents:
diff changeset
245
Dave Love <fx@gnu.org>
parents:
diff changeset
246 @vindex kill-buffer-hook
Dave Love <fx@gnu.org>
parents:
diff changeset
247 If you want to do something special every time a buffer is killed, you
Dave Love <fx@gnu.org>
parents:
diff changeset
248 can add hook functions to the hook @code{kill-buffer-hook} (@pxref{Hooks}).
Dave Love <fx@gnu.org>
parents:
diff changeset
249
Dave Love <fx@gnu.org>
parents:
diff changeset
250 @findex clean-buffer-list
Dave Love <fx@gnu.org>
parents:
diff changeset
251 If you run one Emacs session for a period of days, as many people do,
Dave Love <fx@gnu.org>
parents:
diff changeset
252 it can fill up with buffers that you used several days ago. The command
Dave Love <fx@gnu.org>
parents:
diff changeset
253 @kbd{M-x clean-buffer-list} is a convenient way to purge them; it kills
Dave Love <fx@gnu.org>
parents:
diff changeset
254 all the unmodified buffers that you have not used for a long time. An
Dave Love <fx@gnu.org>
parents:
diff changeset
255 ordinary buffer is killed if it has not been displayed for three days;
Dave Love <fx@gnu.org>
parents:
diff changeset
256 however, you can specify certain buffers that should never be killed
Dave Love <fx@gnu.org>
parents:
diff changeset
257 automatically, and others that should be killed if they have been unused
Dave Love <fx@gnu.org>
parents:
diff changeset
258 for a mere hour.
Dave Love <fx@gnu.org>
parents:
diff changeset
259
Dave Love <fx@gnu.org>
parents:
diff changeset
260 @cindex Midnight mode
Dave Love <fx@gnu.org>
parents:
diff changeset
261 @vindex midnight-mode
Dave Love <fx@gnu.org>
parents:
diff changeset
262 @vindex midnight-hook
Dave Love <fx@gnu.org>
parents:
diff changeset
263 You can also have this buffer purging done for you, every day at
Dave Love <fx@gnu.org>
parents:
diff changeset
264 midnight, by enabling Midnight mode. Midnight mode operates each day at
Dave Love <fx@gnu.org>
parents:
diff changeset
265 midnight; at that time, it runs @code{clean-buffer-list}, or whichever
Dave Love <fx@gnu.org>
parents:
diff changeset
266 functions you have placed in the normal hook @code{midnight-hook}
Dave Love <fx@gnu.org>
parents:
diff changeset
267 (@pxref{Hooks}).
Dave Love <fx@gnu.org>
parents:
diff changeset
268
Dave Love <fx@gnu.org>
parents:
diff changeset
269 To enable Midnight mode, use the Customization buffer to set the
Dave Love <fx@gnu.org>
parents:
diff changeset
270 variable @code{midnight-mode} to @code{t}. @xref{Easy Customization}.
Dave Love <fx@gnu.org>
parents:
diff changeset
271
Dave Love <fx@gnu.org>
parents:
diff changeset
272 @node Several Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
273 @section Operating on Several Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
274 @cindex buffer menu
Dave Love <fx@gnu.org>
parents:
diff changeset
275
Dave Love <fx@gnu.org>
parents:
diff changeset
276 The @dfn{buffer-menu} facility is like a ``Dired for buffers''; it allows
Dave Love <fx@gnu.org>
parents:
diff changeset
277 you to request operations on various Emacs buffers by editing an Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
278 buffer containing a list of them. You can save buffers, kill them
Dave Love <fx@gnu.org>
parents:
diff changeset
279 (here called @dfn{deleting} them, for consistency with Dired), or display
Dave Love <fx@gnu.org>
parents:
diff changeset
280 them.
Dave Love <fx@gnu.org>
parents:
diff changeset
281
Dave Love <fx@gnu.org>
parents:
diff changeset
282 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
283 @item M-x buffer-menu
Dave Love <fx@gnu.org>
parents:
diff changeset
284 Begin editing a buffer listing all Emacs buffers.
Dave Love <fx@gnu.org>
parents:
diff changeset
285 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
286
Dave Love <fx@gnu.org>
parents:
diff changeset
287 @findex buffer-menu
Dave Love <fx@gnu.org>
parents:
diff changeset
288 The command @code{buffer-menu} writes a list of all Emacs buffers into
Dave Love <fx@gnu.org>
parents:
diff changeset
289 the buffer @samp{*Buffer List*}, and selects that buffer in Buffer Menu
Dave Love <fx@gnu.org>
parents:
diff changeset
290 mode. The buffer is read-only, and can be changed only through the
Dave Love <fx@gnu.org>
parents:
diff changeset
291 special commands described in this section. The usual Emacs cursor
Dave Love <fx@gnu.org>
parents:
diff changeset
292 motion commands can be used in the @samp{*Buffer List*} buffer. The
Dave Love <fx@gnu.org>
parents:
diff changeset
293 following commands apply to the buffer described on the current line.
Dave Love <fx@gnu.org>
parents:
diff changeset
294
Dave Love <fx@gnu.org>
parents:
diff changeset
295 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
296 @item d
Dave Love <fx@gnu.org>
parents:
diff changeset
297 Request to delete (kill) the buffer, then move down. The request
Dave Love <fx@gnu.org>
parents:
diff changeset
298 shows as a @samp{D} on the line, before the buffer name. Requested
Dave Love <fx@gnu.org>
parents:
diff changeset
299 deletions take place when you type the @kbd{x} command.
Dave Love <fx@gnu.org>
parents:
diff changeset
300 @item C-d
Dave Love <fx@gnu.org>
parents:
diff changeset
301 Like @kbd{d} but move up afterwards instead of down.
Dave Love <fx@gnu.org>
parents:
diff changeset
302 @item s
Dave Love <fx@gnu.org>
parents:
diff changeset
303 Request to save the buffer. The request shows as an @samp{S} on the
Dave Love <fx@gnu.org>
parents:
diff changeset
304 line. Requested saves take place when you type the @kbd{x} command.
Dave Love <fx@gnu.org>
parents:
diff changeset
305 You may request both saving and deletion for the same buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
306 @item x
Dave Love <fx@gnu.org>
parents:
diff changeset
307 Perform previously requested deletions and saves.
Dave Love <fx@gnu.org>
parents:
diff changeset
308 @item u
Dave Love <fx@gnu.org>
parents:
diff changeset
309 Remove any request made for the current line, and move down.
Dave Love <fx@gnu.org>
parents:
diff changeset
310 @item @key{DEL}
Dave Love <fx@gnu.org>
parents:
diff changeset
311 Move to previous line and remove any request made for that line.
Dave Love <fx@gnu.org>
parents:
diff changeset
312 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
313
Dave Love <fx@gnu.org>
parents:
diff changeset
314 The @kbd{d}, @kbd{C-d}, @kbd{s} and @kbd{u} commands to add or remove
Dave Love <fx@gnu.org>
parents:
diff changeset
315 flags also move down (or up) one line. They accept a numeric argument
Dave Love <fx@gnu.org>
parents:
diff changeset
316 as a repeat count.
Dave Love <fx@gnu.org>
parents:
diff changeset
317
Dave Love <fx@gnu.org>
parents:
diff changeset
318 These commands operate immediately on the buffer listed on the current
Dave Love <fx@gnu.org>
parents:
diff changeset
319 line:
Dave Love <fx@gnu.org>
parents:
diff changeset
320
Dave Love <fx@gnu.org>
parents:
diff changeset
321 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
322 @item ~
Dave Love <fx@gnu.org>
parents:
diff changeset
323 Mark the buffer ``unmodified.'' The command @kbd{~} does this
Dave Love <fx@gnu.org>
parents:
diff changeset
324 immediately when you type it.
Dave Love <fx@gnu.org>
parents:
diff changeset
325 @item %
Dave Love <fx@gnu.org>
parents:
diff changeset
326 Toggle the buffer's read-only flag. The command @kbd{%} does
Dave Love <fx@gnu.org>
parents:
diff changeset
327 this immediately when you type it.
Dave Love <fx@gnu.org>
parents:
diff changeset
328 @item t
Dave Love <fx@gnu.org>
parents:
diff changeset
329 Visit the buffer as a tags table. @xref{Select Tags Table}.
Dave Love <fx@gnu.org>
parents:
diff changeset
330 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
331
Dave Love <fx@gnu.org>
parents:
diff changeset
332 There are also commands to select another buffer or buffers:
Dave Love <fx@gnu.org>
parents:
diff changeset
333
Dave Love <fx@gnu.org>
parents:
diff changeset
334 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
335 @item q
Dave Love <fx@gnu.org>
parents:
diff changeset
336 Quit the buffer menu---immediately display the most recent formerly
Dave Love <fx@gnu.org>
parents:
diff changeset
337 visible buffer in its place.
Dave Love <fx@gnu.org>
parents:
diff changeset
338 @item @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
339 @itemx f
Dave Love <fx@gnu.org>
parents:
diff changeset
340 Immediately select this line's buffer in place of the @samp{*Buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
341 List*} buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
342 @item o
Dave Love <fx@gnu.org>
parents:
diff changeset
343 Immediately select this line's buffer in another window as if by
Dave Love <fx@gnu.org>
parents:
diff changeset
344 @kbd{C-x 4 b}, leaving @samp{*Buffer List*} visible.
Dave Love <fx@gnu.org>
parents:
diff changeset
345 @item C-o
Dave Love <fx@gnu.org>
parents:
diff changeset
346 Immediately display this line's buffer in another window, but don't
Dave Love <fx@gnu.org>
parents:
diff changeset
347 select the window.
Dave Love <fx@gnu.org>
parents:
diff changeset
348 @item 1
Dave Love <fx@gnu.org>
parents:
diff changeset
349 Immediately select this line's buffer in a full-screen window.
Dave Love <fx@gnu.org>
parents:
diff changeset
350 @item 2
Dave Love <fx@gnu.org>
parents:
diff changeset
351 Immediately set up two windows, with this line's buffer in one, and the
Dave Love <fx@gnu.org>
parents:
diff changeset
352 previously selected buffer (aside from the buffer @samp{*Buffer List*})
Dave Love <fx@gnu.org>
parents:
diff changeset
353 in the other.
Dave Love <fx@gnu.org>
parents:
diff changeset
354 @item b
Dave Love <fx@gnu.org>
parents:
diff changeset
355 Bury the buffer listed on this line.
Dave Love <fx@gnu.org>
parents:
diff changeset
356 @item m
Dave Love <fx@gnu.org>
parents:
diff changeset
357 Mark this line's buffer to be displayed in another window if you exit
Dave Love <fx@gnu.org>
parents:
diff changeset
358 with the @kbd{v} command. The request shows as a @samp{>} at the
Dave Love <fx@gnu.org>
parents:
diff changeset
359 beginning of the line. (A single buffer may not have both a delete
Dave Love <fx@gnu.org>
parents:
diff changeset
360 request and a display request.)
Dave Love <fx@gnu.org>
parents:
diff changeset
361 @item v
Dave Love <fx@gnu.org>
parents:
diff changeset
362 Immediately select this line's buffer, and also display in other windows
Dave Love <fx@gnu.org>
parents:
diff changeset
363 any buffers previously marked with the @kbd{m} command. If you have not
Dave Love <fx@gnu.org>
parents:
diff changeset
364 marked any buffers, this command is equivalent to @kbd{1}.
Dave Love <fx@gnu.org>
parents:
diff changeset
365 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
366
Dave Love <fx@gnu.org>
parents:
diff changeset
367 All that @code{buffer-menu} does directly is create and switch to a
Dave Love <fx@gnu.org>
parents:
diff changeset
368 suitable buffer, and turn on Buffer Menu mode. Everything else
Dave Love <fx@gnu.org>
parents:
diff changeset
369 described above is implemented by the special commands provided in
Dave Love <fx@gnu.org>
parents:
diff changeset
370 Buffer Menu mode. One consequence of this is that you can switch from
Dave Love <fx@gnu.org>
parents:
diff changeset
371 the @samp{*Buffer List*} buffer to another Emacs buffer, and edit there.
Dave Love <fx@gnu.org>
parents:
diff changeset
372 You can reselect the @samp{*Buffer List*} buffer later, to perform the
Dave Love <fx@gnu.org>
parents:
diff changeset
373 operations already requested, or you can kill it, or pay no further
Dave Love <fx@gnu.org>
parents:
diff changeset
374 attention to it.
Dave Love <fx@gnu.org>
parents:
diff changeset
375
Dave Love <fx@gnu.org>
parents:
diff changeset
376 The only difference between @code{buffer-menu} and @code{list-buffers}
Dave Love <fx@gnu.org>
parents:
diff changeset
377 is that @code{buffer-menu} switches to the @samp{*Buffer List*} buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
378 in the selected window; @code{list-buffers} displays it in another
Dave Love <fx@gnu.org>
parents:
diff changeset
379 window. If you run @code{list-buffers} (that is, type @kbd{C-x C-b})
Dave Love <fx@gnu.org>
parents:
diff changeset
380 and select the buffer list manually, you can use all of the commands
Dave Love <fx@gnu.org>
parents:
diff changeset
381 described here.
Dave Love <fx@gnu.org>
parents:
diff changeset
382
Dave Love <fx@gnu.org>
parents:
diff changeset
383 The buffer @samp{*Buffer List*} is not updated automatically when
Dave Love <fx@gnu.org>
parents:
diff changeset
384 buffers are created and killed; its contents are just text. If you have
Dave Love <fx@gnu.org>
parents:
diff changeset
385 created, deleted or renamed buffers, the way to update @samp{*Buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
386 List*} to show what you have done is to type @kbd{g}
Dave Love <fx@gnu.org>
parents:
diff changeset
387 (@code{revert-buffer}) or repeat the @code{buffer-menu} command.
Dave Love <fx@gnu.org>
parents:
diff changeset
388
Dave Love <fx@gnu.org>
parents:
diff changeset
389 @node Indirect Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
390 @section Indirect Buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
391 @cindex indirect buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
392 @cindex base buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
393
Dave Love <fx@gnu.org>
parents:
diff changeset
394 An @dfn{indirect buffer} shares the text of some other buffer, which
Dave Love <fx@gnu.org>
parents:
diff changeset
395 is called the @dfn{base buffer} of the indirect buffer. In some ways it
Dave Love <fx@gnu.org>
parents:
diff changeset
396 is the analogue, for buffers, of a symbolic link between files.
Dave Love <fx@gnu.org>
parents:
diff changeset
397
Dave Love <fx@gnu.org>
parents:
diff changeset
398 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
399 @findex make-indirect-buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
400 @item M-x make-indirect-buffer @var{base-buffer} @key{RET} @var{indirect-name} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
401 Create an indirect buffer named @var{indirect-name} whose base buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
402 is @var{base-buffer}.
31056
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
403 @findex clone-indirect-buffer
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
404 @item M-x clone-indirect-buffer @key{RET}
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
405 Create an indirect buffer that is a twin copy of the current buffer.
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
406 @kindex C-x 4 c
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
407 @findex clone-indirect-buffer-other-window
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
408 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
409 select it in another window (@code{clone-indirect-buffer-other-window}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
410 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
411
Dave Love <fx@gnu.org>
parents:
diff changeset
412 The text of the indirect buffer is always identical to the text of its
Dave Love <fx@gnu.org>
parents:
diff changeset
413 base buffer; changes made by editing either one are visible immediately
Dave Love <fx@gnu.org>
parents:
diff changeset
414 in the other. But in all other respects, the indirect buffer and its
Dave Love <fx@gnu.org>
parents:
diff changeset
415 base buffer are completely separate. They have different names,
Dave Love <fx@gnu.org>
parents:
diff changeset
416 different values of point, different narrowing, different markers,
Dave Love <fx@gnu.org>
parents:
diff changeset
417 different major modes, and different local variables.
Dave Love <fx@gnu.org>
parents:
diff changeset
418
Dave Love <fx@gnu.org>
parents:
diff changeset
419 An indirect buffer cannot visit a file, but its base buffer can. If
Dave Love <fx@gnu.org>
parents:
diff changeset
420 you try to save the indirect buffer, that actually works by saving the
Dave Love <fx@gnu.org>
parents:
diff changeset
421 base buffer. Killing the base buffer effectively kills the indirect
Dave Love <fx@gnu.org>
parents:
diff changeset
422 buffer, but killing an indirect buffer has no effect on its base buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
423
Dave Love <fx@gnu.org>
parents:
diff changeset
424 One way to use indirect buffers is to display multiple views of an
Dave Love <fx@gnu.org>
parents:
diff changeset
425 outline. @xref{Outline Views}.
30869
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
426
31056
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
427 The command @kbd{M-x make-indirect-buffer} creates an indirect buffer
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
428 whose name is @var{indirect-name} and whose text is identical to that of
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
429 the buffer @var{base-buffer}. It prompts for both @var{base-buffer} and
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
430 @var{indirect-name}.
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
431
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
432 The command @kbd{M-x clone-indirect-buffer} creates an indirect buffer
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
433 whose base buffer is the current buffer, and also selects the
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
434 newly-created indirect buffer. With a numeric argument, it prompts for
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
435 the name of the indirect buffer; otherwise it defaults to the name of
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
436 the current buffer, modifying it by adding a @samp{<@var{n}>} prefix if
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
437 required. @kbd{C-x 4 c} (@code{clone-indirect-buffer-other-window})
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
438 works like @kbd{M-x clone-indirect-buffer}, but it selects the cloned
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
439 buffer in another window.
3d90d6c1f3b9 Document clone-indirect-buffer.
Eli Zaretskii <eliz@gnu.org>
parents: 30869
diff changeset
440
30869
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
441 @node Buffer Convenience
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
442 @section Convenience Features and Customization of Buffer Handling
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
443
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
444 @menu
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
445 * Uniquify::
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
446 * BS::
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
447 * Iswitchb::
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
448 * MSB::
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
449 @end menu
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
450
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
451 @node Uniquify
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
452 @subsection Directory Names in Buffer Names
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
453
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
454 @findex toggle-uniquify-buffer-names
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
455 @vindex uniquify-buffer-name-style
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
456 @cindex unique buffer names
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
457 @cindex directories in buffer names
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
458 Emacs's standard method for making buffer names unique adds @samp{<2>},
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
459 @samp{<3>}, etc. to the end of (all but one of) the buffers. The
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
460 Uniquify package replaces that behavior, for buffers visiting files and
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
461 dired buffers. It implements a uniquification that adds parts of the
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
462 file name until the buffer names are unique. For instance, buffers
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
463 visiting @file{/u/mernst/tmp/Makefile} and
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
464 @file{/usr/projects/zaphod/Makefile} would be named @samp{tmp/Makefile}
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
465 and @samp{zaphod/Makefile}, respectively (instead of @samp{Makefile}
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
466 and @samp{Makefile<2>}). You can turn on this mode and select other
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
467 buffer name styles by customizing the user option
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
468 @code{uniquify-buffer-name-style}. The command @kbd{M-x
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
469 toggle-uniquify-buffer-names} can also be used to toggle the mode.
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
470
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
471 @node BS
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
472 @subsection BS Mode: Configurable Buffer Menus
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
473
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
474 @node Iswitchb
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
475 @subsection Iswitchb Mode: Switching Between Buffers using Substrings
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
476
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
477 @node MSB
1827bd720842 (Buffer Convenience): New.
Dave Love <fx@gnu.org>
parents: 30772
diff changeset
478 @subsection MSB Mode: Customizable Buffer Selection with Multiple Menus