annotate doc/emacs/buffers.texi @ 112278:ef719132ddfa

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