annotate man/windows.texi @ 38212:6b14cc47a4f2

Major rewrite. Sections Tags, Emerge, Change Log and Authors moved to maintaining.texi. Some sections reordered. Node Misc for Programs moved to just before the language-specific sections. New node Defuns contains an intro plus the old Defuns node (now renamed Moving by Defuns) as well as Imenu, Which Function, and a node Left Margin Paren to explain the convention about this. New node Parentheses now documents M-x check-parens. It contains subnodes Expressions, Moving by Parens, and Matching. Expressions and Moving by Parens contain the material formerly in Lists and List Commands, but divided up differently. The section Balanced Editing has been deleted. Most of the C indentation customization (all except c-set-style), has been replaced with a reference to the C Modes manual. Documentation now is divided into three subsections. Some rewrites in the Program Indent section about C-u TAB and C-M-q.
author Richard M. Stallman <rms@gnu.org>
date Tue, 26 Jun 2001 13:43:32 +0000
parents e11682cc1516
children 5a3dae2132b4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
30875
e86dbf76e699 mainly indexing
Dave Love <fx@gnu.org>
parents: 28796
diff changeset
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000 Free Software Foundation, Inc.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
3 @c See file emacs.texi for copying conditions.
Dave Love <fx@gnu.org>
parents:
diff changeset
4 @node Windows, Frames, Buffers, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
5 @chapter Multiple Windows
Dave Love <fx@gnu.org>
parents:
diff changeset
6 @cindex windows in Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
7 @cindex multiple windows in Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
8
Dave Love <fx@gnu.org>
parents:
diff changeset
9 Emacs can split a frame into two or many windows. Multiple windows
Dave Love <fx@gnu.org>
parents:
diff changeset
10 can display parts of different buffers, or different parts of one
Dave Love <fx@gnu.org>
parents:
diff changeset
11 buffer. Multiple frames always imply multiple windows, because each
Dave Love <fx@gnu.org>
parents:
diff changeset
12 frame has its own set of windows. Each window belongs to one and only
Dave Love <fx@gnu.org>
parents:
diff changeset
13 one frame.
Dave Love <fx@gnu.org>
parents:
diff changeset
14
Dave Love <fx@gnu.org>
parents:
diff changeset
15 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
16 * Basic Window:: Introduction to Emacs windows.
Dave Love <fx@gnu.org>
parents:
diff changeset
17 * Split Window:: New windows are made by splitting existing windows.
Dave Love <fx@gnu.org>
parents:
diff changeset
18 * Other Window:: Moving to another window or doing something to it.
Dave Love <fx@gnu.org>
parents:
diff changeset
19 * Pop Up Window:: Finding a file or buffer in another window.
Dave Love <fx@gnu.org>
parents:
diff changeset
20 * Force Same Window:: Forcing certain buffers to appear in the selected
Dave Love <fx@gnu.org>
parents:
diff changeset
21 window rather than in another window.
Dave Love <fx@gnu.org>
parents:
diff changeset
22 * Change Window:: Deleting windows and changing their sizes.
28551
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
23 * Window Convenience:: Convenience functions for window handling.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
24 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
25
Dave Love <fx@gnu.org>
parents:
diff changeset
26 @node Basic Window
Dave Love <fx@gnu.org>
parents:
diff changeset
27 @section Concepts of Emacs Windows
Dave Love <fx@gnu.org>
parents:
diff changeset
28
Dave Love <fx@gnu.org>
parents:
diff changeset
29 Each Emacs window displays one Emacs buffer at any time. A single
Dave Love <fx@gnu.org>
parents:
diff changeset
30 buffer may appear in more than one window; if it does, any changes in
Dave Love <fx@gnu.org>
parents:
diff changeset
31 its text are displayed in all the windows where it appears. But the
Dave Love <fx@gnu.org>
parents:
diff changeset
32 windows showing the same buffer can show different parts of it, because
Dave Love <fx@gnu.org>
parents:
diff changeset
33 each window has its own value of point.
Dave Love <fx@gnu.org>
parents:
diff changeset
34
Dave Love <fx@gnu.org>
parents:
diff changeset
35 @cindex selected window
Dave Love <fx@gnu.org>
parents:
diff changeset
36 At any time, one of the windows is the @dfn{selected window}; the
Dave Love <fx@gnu.org>
parents:
diff changeset
37 buffer this window is displaying is the current buffer. The terminal's
Dave Love <fx@gnu.org>
parents:
diff changeset
38 cursor shows the location of point in this window. Each other window
Dave Love <fx@gnu.org>
parents:
diff changeset
39 has a location of point as well, but since the terminal has only one
Dave Love <fx@gnu.org>
parents:
diff changeset
40 cursor there is no way to show where those locations are. When multiple
35188
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 34565
diff changeset
41 frames are visible in X, each frame has a cursor which appears in the
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 34565
diff changeset
42 frame's selected window. The cursor in the selected frame is solid; the
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 34565
diff changeset
43 cursor in other frames is a hollow box.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
44
Dave Love <fx@gnu.org>
parents:
diff changeset
45 Commands to move point affect the value of point for the selected Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
46 window only. They do not change the value of point in any other Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
47 window, even one showing the same buffer. The same is true for commands
37986
e11682cc1516 selected buffer => current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 37121
diff changeset
48 such as @kbd{C-x b} to change the current buffer in the selected window;
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
49 they do not affect other windows at all. However, there are other commands
Dave Love <fx@gnu.org>
parents:
diff changeset
50 such as @kbd{C-x 4 b} that select a different window and switch buffers in
Dave Love <fx@gnu.org>
parents:
diff changeset
51 it. Also, all commands that display information in a window, including
Dave Love <fx@gnu.org>
parents:
diff changeset
52 (for example) @kbd{C-h f} (@code{describe-function}) and @kbd{C-x C-b}
Dave Love <fx@gnu.org>
parents:
diff changeset
53 (@code{list-buffers}), work by switching buffers in a nonselected window
Dave Love <fx@gnu.org>
parents:
diff changeset
54 without affecting the selected window.
Dave Love <fx@gnu.org>
parents:
diff changeset
55
Dave Love <fx@gnu.org>
parents:
diff changeset
56 When multiple windows show the same buffer, they can have different
Dave Love <fx@gnu.org>
parents:
diff changeset
57 regions, because they can have different values of point. However,
Dave Love <fx@gnu.org>
parents:
diff changeset
58 they all have the same value for the mark, because each buffer has
Dave Love <fx@gnu.org>
parents:
diff changeset
59 only one mark position.
Dave Love <fx@gnu.org>
parents:
diff changeset
60
Dave Love <fx@gnu.org>
parents:
diff changeset
61 Each window has its own mode line, which displays the buffer name,
Dave Love <fx@gnu.org>
parents:
diff changeset
62 modification status and major and minor modes of the buffer that is
Dave Love <fx@gnu.org>
parents:
diff changeset
63 displayed in the window. @xref{Mode Line}, for full details on the mode
Dave Love <fx@gnu.org>
parents:
diff changeset
64 line.
Dave Love <fx@gnu.org>
parents:
diff changeset
65
Dave Love <fx@gnu.org>
parents:
diff changeset
66 @iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
67 @break
Dave Love <fx@gnu.org>
parents:
diff changeset
68 @end iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
69
Dave Love <fx@gnu.org>
parents:
diff changeset
70 @node Split Window
Dave Love <fx@gnu.org>
parents:
diff changeset
71 @section Splitting Windows
Dave Love <fx@gnu.org>
parents:
diff changeset
72
Dave Love <fx@gnu.org>
parents:
diff changeset
73 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
74 @item C-x 2
Dave Love <fx@gnu.org>
parents:
diff changeset
75 Split the selected window into two windows, one above the other
Dave Love <fx@gnu.org>
parents:
diff changeset
76 (@code{split-window-vertically}).
Dave Love <fx@gnu.org>
parents:
diff changeset
77 @item C-x 3
Dave Love <fx@gnu.org>
parents:
diff changeset
78 Split the selected window into two windows positioned side by side
Dave Love <fx@gnu.org>
parents:
diff changeset
79 (@code{split-window-horizontally}).
Dave Love <fx@gnu.org>
parents:
diff changeset
80 @item C-Mouse-2
Dave Love <fx@gnu.org>
parents:
diff changeset
81 In the mode line or scroll bar of a window, split that window.
Dave Love <fx@gnu.org>
parents:
diff changeset
82 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
83
Dave Love <fx@gnu.org>
parents:
diff changeset
84 @kindex C-x 2
Dave Love <fx@gnu.org>
parents:
diff changeset
85 @findex split-window-vertically
Dave Love <fx@gnu.org>
parents:
diff changeset
86 The command @kbd{C-x 2} (@code{split-window-vertically}) breaks the
Dave Love <fx@gnu.org>
parents:
diff changeset
87 selected window into two windows, one above the other. Both windows start
Dave Love <fx@gnu.org>
parents:
diff changeset
88 out displaying the same buffer, with the same value of point. By default
Dave Love <fx@gnu.org>
parents:
diff changeset
89 the two windows each get half the height of the window that was split; a
Dave Love <fx@gnu.org>
parents:
diff changeset
90 numeric argument specifies how many lines to give to the top window.
Dave Love <fx@gnu.org>
parents:
diff changeset
91
Dave Love <fx@gnu.org>
parents:
diff changeset
92 @kindex C-x 3
Dave Love <fx@gnu.org>
parents:
diff changeset
93 @findex split-window-horizontally
Dave Love <fx@gnu.org>
parents:
diff changeset
94 @kbd{C-x 3} (@code{split-window-horizontally}) breaks the selected
Dave Love <fx@gnu.org>
parents:
diff changeset
95 window into two side-by-side windows. A numeric argument specifies how
Dave Love <fx@gnu.org>
parents:
diff changeset
96 many columns to give the one on the left. A line of vertical bars
Dave Love <fx@gnu.org>
parents:
diff changeset
97 separates the two windows. Windows that are not the full width of the
Dave Love <fx@gnu.org>
parents:
diff changeset
98 screen have mode lines, but they are truncated. On terminals where
Dave Love <fx@gnu.org>
parents:
diff changeset
99 Emacs does not support highlighting, truncated mode lines sometimes do
Dave Love <fx@gnu.org>
parents:
diff changeset
100 not appear in inverse video.
Dave Love <fx@gnu.org>
parents:
diff changeset
101
Dave Love <fx@gnu.org>
parents:
diff changeset
102 @kindex C-Mouse-2 @r{(scroll bar)}
Dave Love <fx@gnu.org>
parents:
diff changeset
103 You can split a window horizontally or vertically by clicking
37121
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
104 @kbd{C-Mouse-2} in the mode line or the scroll bar. (This does not
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
105 work in scroll bars implemented by X toolkits.) The line of splitting
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
106 goes through the place where you click: if you click on the mode line,
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
107 the new scroll bar goes above the spot; if you click in the scroll
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
108 bar, the mode line of the split window is side by side with your
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
109 click.
Dave Love <fx@gnu.org>
parents:
diff changeset
110
Dave Love <fx@gnu.org>
parents:
diff changeset
111 @vindex truncate-partial-width-windows
Dave Love <fx@gnu.org>
parents:
diff changeset
112 When a window is less than the full width, text lines too long to fit are
Dave Love <fx@gnu.org>
parents:
diff changeset
113 frequent. Continuing all those lines might be confusing. The variable
Dave Love <fx@gnu.org>
parents:
diff changeset
114 @code{truncate-partial-width-windows} can be set non-@code{nil} to force
Dave Love <fx@gnu.org>
parents:
diff changeset
115 truncation in all windows less than the full width of the screen,
Dave Love <fx@gnu.org>
parents:
diff changeset
116 independent of the buffer being displayed and its value for
Dave Love <fx@gnu.org>
parents:
diff changeset
117 @code{truncate-lines}. @xref{Continuation Lines}.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
118
Dave Love <fx@gnu.org>
parents:
diff changeset
119 Horizontal scrolling is often used in side-by-side windows.
Dave Love <fx@gnu.org>
parents:
diff changeset
120 @xref{Display}.
Dave Love <fx@gnu.org>
parents:
diff changeset
121
Dave Love <fx@gnu.org>
parents:
diff changeset
122 @vindex split-window-keep-point
37121
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
123 If @code{split-window-keep-point} is non-@code{nil}, the default,
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
124 both of the windows resulting from @kbd{C-x 2} inherit the value of
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
125 point from the window that was split. This means that scrolling is
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
126 inevitable. If this variable is @code{nil}, then @kbd{C-x 2} tries to
37121
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
127 avoid scrolling the text currently visible on the screen, by putting
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
128 point in each window at a position already visible in the window. It
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
129 also selects whichever window contain the screen line that the cursor
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
130 was previously on. Some users prefer the latter mode on slow
f9bd7ef13ddb Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 36875
diff changeset
131 terminals.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
132
Dave Love <fx@gnu.org>
parents:
diff changeset
133 @node Other Window
Dave Love <fx@gnu.org>
parents:
diff changeset
134 @section Using Other Windows
Dave Love <fx@gnu.org>
parents:
diff changeset
135
Dave Love <fx@gnu.org>
parents:
diff changeset
136 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
137 @item C-x o
Dave Love <fx@gnu.org>
parents:
diff changeset
138 Select another window (@code{other-window}). That is @kbd{o}, not zero.
Dave Love <fx@gnu.org>
parents:
diff changeset
139 @item C-M-v
Dave Love <fx@gnu.org>
parents:
diff changeset
140 Scroll the next window (@code{scroll-other-window}).
Dave Love <fx@gnu.org>
parents:
diff changeset
141 @item M-x compare-windows
Dave Love <fx@gnu.org>
parents:
diff changeset
142 Find next place where the text in the selected window does not match
Dave Love <fx@gnu.org>
parents:
diff changeset
143 the text in the next window.
Dave Love <fx@gnu.org>
parents:
diff changeset
144 @item Mouse-1
Dave Love <fx@gnu.org>
parents:
diff changeset
145 @kbd{Mouse-1}, in a window's mode line, selects that window
Dave Love <fx@gnu.org>
parents:
diff changeset
146 but does not move point in it (@code{mouse-select-window}).
Dave Love <fx@gnu.org>
parents:
diff changeset
147 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
148
Dave Love <fx@gnu.org>
parents:
diff changeset
149 @kindex C-x o
Dave Love <fx@gnu.org>
parents:
diff changeset
150 @findex other-window
Dave Love <fx@gnu.org>
parents:
diff changeset
151 To select a different window, click with @kbd{Mouse-1} on its mode
Dave Love <fx@gnu.org>
parents:
diff changeset
152 line. With the keyboard, you can switch windows by typing @kbd{C-x o}
36185
62cf166239f3 Change in quoting.
Richard M. Stallman <rms@gnu.org>
parents: 36182
diff changeset
153 (@code{other-window}). That is an @kbd{o}, for ``other,'' not a zero.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
154 When there are more than two windows, this command moves through all the
Dave Love <fx@gnu.org>
parents:
diff changeset
155 windows in a cyclic order, generally top to bottom and left to right.
Dave Love <fx@gnu.org>
parents:
diff changeset
156 After the rightmost and bottommost window, it goes back to the one at
Dave Love <fx@gnu.org>
parents:
diff changeset
157 the upper left corner. A numeric argument means to move several steps
Dave Love <fx@gnu.org>
parents:
diff changeset
158 in the cyclic order of windows. A negative argument moves around the
Dave Love <fx@gnu.org>
parents:
diff changeset
159 cycle in the opposite order. When the minibuffer is active, the
Dave Love <fx@gnu.org>
parents:
diff changeset
160 minibuffer is the last window in the cycle; you can switch from the
Dave Love <fx@gnu.org>
parents:
diff changeset
161 minibuffer window to one of the other windows, and later switch back and
Dave Love <fx@gnu.org>
parents:
diff changeset
162 finish supplying the minibuffer argument that is requested.
Dave Love <fx@gnu.org>
parents:
diff changeset
163 @xref{Minibuffer Edit}.
Dave Love <fx@gnu.org>
parents:
diff changeset
164
Dave Love <fx@gnu.org>
parents:
diff changeset
165 @kindex C-M-v
Dave Love <fx@gnu.org>
parents:
diff changeset
166 @findex scroll-other-window
Dave Love <fx@gnu.org>
parents:
diff changeset
167 The usual scrolling commands (@pxref{Display}) apply to the selected
Dave Love <fx@gnu.org>
parents:
diff changeset
168 window only, but there is one command to scroll the next window.
Dave Love <fx@gnu.org>
parents:
diff changeset
169 @kbd{C-M-v} (@code{scroll-other-window}) scrolls the window that
Dave Love <fx@gnu.org>
parents:
diff changeset
170 @kbd{C-x o} would select. It takes arguments, positive and negative,
Dave Love <fx@gnu.org>
parents:
diff changeset
171 like @kbd{C-v}. (In the minibuffer, @kbd{C-M-v} scrolls the window
Dave Love <fx@gnu.org>
parents:
diff changeset
172 that contains the minibuffer help display, if any, rather than the
Dave Love <fx@gnu.org>
parents:
diff changeset
173 next window in the standard cyclic order.)
Dave Love <fx@gnu.org>
parents:
diff changeset
174
Dave Love <fx@gnu.org>
parents:
diff changeset
175 The command @kbd{M-x compare-windows} lets you compare two files or
Dave Love <fx@gnu.org>
parents:
diff changeset
176 buffers visible in two windows, by moving through them to the next
Dave Love <fx@gnu.org>
parents:
diff changeset
177 mismatch. @xref{Comparing Files}, for details.
Dave Love <fx@gnu.org>
parents:
diff changeset
178
Dave Love <fx@gnu.org>
parents:
diff changeset
179 @node Pop Up Window
Dave Love <fx@gnu.org>
parents:
diff changeset
180 @section Displaying in Another Window
Dave Love <fx@gnu.org>
parents:
diff changeset
181
Dave Love <fx@gnu.org>
parents:
diff changeset
182 @cindex selecting buffers in other windows
Dave Love <fx@gnu.org>
parents:
diff changeset
183 @kindex C-x 4
Dave Love <fx@gnu.org>
parents:
diff changeset
184 @kbd{C-x 4} is a prefix key for commands that select another window
Dave Love <fx@gnu.org>
parents:
diff changeset
185 (splitting the window if there is only one) and select a buffer in that
Dave Love <fx@gnu.org>
parents:
diff changeset
186 window. Different @kbd{C-x 4} commands have different ways of finding the
Dave Love <fx@gnu.org>
parents:
diff changeset
187 buffer to select.
Dave Love <fx@gnu.org>
parents:
diff changeset
188
Dave Love <fx@gnu.org>
parents:
diff changeset
189 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
190 @item C-x 4 b @var{bufname} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
191 Select buffer @var{bufname} in another window. This runs
Dave Love <fx@gnu.org>
parents:
diff changeset
192 @code{switch-to-buffer-other-window}.
Dave Love <fx@gnu.org>
parents:
diff changeset
193 @item C-x 4 C-o @var{bufname} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
194 Display buffer @var{bufname} in another window, but
Dave Love <fx@gnu.org>
parents:
diff changeset
195 don't select that buffer or that window. This runs
Dave Love <fx@gnu.org>
parents:
diff changeset
196 @code{display-buffer}.
Dave Love <fx@gnu.org>
parents:
diff changeset
197 @item C-x 4 f @var{filename} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
198 Visit file @var{filename} and select its buffer in another window. This
Dave Love <fx@gnu.org>
parents:
diff changeset
199 runs @code{find-file-other-window}. @xref{Visiting}.
Dave Love <fx@gnu.org>
parents:
diff changeset
200 @item C-x 4 d @var{directory} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
201 Select a Dired buffer for directory @var{directory} in another window.
Dave Love <fx@gnu.org>
parents:
diff changeset
202 This runs @code{dired-other-window}. @xref{Dired}.
Dave Love <fx@gnu.org>
parents:
diff changeset
203 @item C-x 4 m
Dave Love <fx@gnu.org>
parents:
diff changeset
204 Start composing a mail message in another window. This runs
Dave Love <fx@gnu.org>
parents:
diff changeset
205 @code{mail-other-window}; its same-window analogue is @kbd{C-x m}
Dave Love <fx@gnu.org>
parents:
diff changeset
206 (@pxref{Sending Mail}).
Dave Love <fx@gnu.org>
parents:
diff changeset
207 @item C-x 4 .
Dave Love <fx@gnu.org>
parents:
diff changeset
208 Find a tag in the current tags table, in another window. This runs
Dave Love <fx@gnu.org>
parents:
diff changeset
209 @code{find-tag-other-window}, the multiple-window variant of @kbd{M-.}
Dave Love <fx@gnu.org>
parents:
diff changeset
210 (@pxref{Tags}).
Dave Love <fx@gnu.org>
parents:
diff changeset
211 @item C-x 4 r @var{filename} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
212 Visit file @var{filename} read-only, and select its buffer in another
Dave Love <fx@gnu.org>
parents:
diff changeset
213 window. This runs @code{find-file-read-only-other-window}.
Dave Love <fx@gnu.org>
parents:
diff changeset
214 @xref{Visiting}.
Dave Love <fx@gnu.org>
parents:
diff changeset
215 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
216
Dave Love <fx@gnu.org>
parents:
diff changeset
217 @node Force Same Window
Dave Love <fx@gnu.org>
parents:
diff changeset
218 @section Forcing Display in the Same Window
Dave Love <fx@gnu.org>
parents:
diff changeset
219
Dave Love <fx@gnu.org>
parents:
diff changeset
220 Certain Emacs commands switch to a specific buffer with special
Dave Love <fx@gnu.org>
parents:
diff changeset
221 contents. For example, @kbd{M-x shell} switches to a buffer named
Dave Love <fx@gnu.org>
parents:
diff changeset
222 @samp{*Shell*}. By convention, all these commands are written to pop up
Dave Love <fx@gnu.org>
parents:
diff changeset
223 the buffer in a separate window. But you can specify that certain of
Dave Love <fx@gnu.org>
parents:
diff changeset
224 these buffers should appear in the selected window.
Dave Love <fx@gnu.org>
parents:
diff changeset
225
Dave Love <fx@gnu.org>
parents:
diff changeset
226 @vindex same-window-buffer-names
Dave Love <fx@gnu.org>
parents:
diff changeset
227 If you add a buffer name to the list @code{same-window-buffer-names},
Dave Love <fx@gnu.org>
parents:
diff changeset
228 the effect is that such commands display that particular buffer by
Dave Love <fx@gnu.org>
parents:
diff changeset
229 switching to it in the selected window. For example, if you add the
Dave Love <fx@gnu.org>
parents:
diff changeset
230 element @code{"*grep*"} to the list, the @code{grep} command will
Dave Love <fx@gnu.org>
parents:
diff changeset
231 display its output buffer in the selected window.
Dave Love <fx@gnu.org>
parents:
diff changeset
232
Dave Love <fx@gnu.org>
parents:
diff changeset
233 The default value of @code{same-window-buffer-names} is not
Dave Love <fx@gnu.org>
parents:
diff changeset
234 @code{nil}: it specifies buffer names @samp{*info*}, @samp{*mail*} and
Dave Love <fx@gnu.org>
parents:
diff changeset
235 @samp{*shell*} (as well as others used by more obscure Emacs packages).
Dave Love <fx@gnu.org>
parents:
diff changeset
236 This is why @kbd{M-x shell} normally switches to the @samp{*shell*}
Dave Love <fx@gnu.org>
parents:
diff changeset
237 buffer in the selected window. If you delete this element from the
Dave Love <fx@gnu.org>
parents:
diff changeset
238 value of @code{same-window-buffer-names}, the behavior of @kbd{M-x
Dave Love <fx@gnu.org>
parents:
diff changeset
239 shell} will change---it will pop up the buffer in another window
Dave Love <fx@gnu.org>
parents:
diff changeset
240 instead.
Dave Love <fx@gnu.org>
parents:
diff changeset
241
Dave Love <fx@gnu.org>
parents:
diff changeset
242 @vindex same-window-regexps
Dave Love <fx@gnu.org>
parents:
diff changeset
243 You can specify these buffers more generally with the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
244 @code{same-window-regexps}. Set it to a list of regular expressions;
Dave Love <fx@gnu.org>
parents:
diff changeset
245 then any buffer whose name matches one of those regular expressions is
Dave Love <fx@gnu.org>
parents:
diff changeset
246 displayed by switching to it in the selected window. (Once again, this
Dave Love <fx@gnu.org>
parents:
diff changeset
247 applies only to buffers that normally get displayed for you in a
Dave Love <fx@gnu.org>
parents:
diff changeset
248 separate window.) The default value of this variable specifies Telnet
Dave Love <fx@gnu.org>
parents:
diff changeset
249 and rlogin buffers.
Dave Love <fx@gnu.org>
parents:
diff changeset
250
Dave Love <fx@gnu.org>
parents:
diff changeset
251 An analogous feature lets you specify buffers which should be
Dave Love <fx@gnu.org>
parents:
diff changeset
252 displayed in their own individual frames. @xref{Special Buffer Frames}.
Dave Love <fx@gnu.org>
parents:
diff changeset
253
Dave Love <fx@gnu.org>
parents:
diff changeset
254 @node Change Window
Dave Love <fx@gnu.org>
parents:
diff changeset
255 @section Deleting and Rearranging Windows
Dave Love <fx@gnu.org>
parents:
diff changeset
256
Dave Love <fx@gnu.org>
parents:
diff changeset
257 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
258 @item C-x 0
Dave Love <fx@gnu.org>
parents:
diff changeset
259 Delete the selected window (@code{delete-window}). The last character
Dave Love <fx@gnu.org>
parents:
diff changeset
260 in this key sequence is a zero.
Dave Love <fx@gnu.org>
parents:
diff changeset
261 @item C-x 1
Dave Love <fx@gnu.org>
parents:
diff changeset
262 Delete all windows in the selected frame except the selected window
Dave Love <fx@gnu.org>
parents:
diff changeset
263 (@code{delete-other-windows}).
Dave Love <fx@gnu.org>
parents:
diff changeset
264 @item C-x 4 0
Dave Love <fx@gnu.org>
parents:
diff changeset
265 Delete the selected window and kill the buffer that was showing in it
Dave Love <fx@gnu.org>
parents:
diff changeset
266 (@code{kill-buffer-and-window}). The last character in this key
Dave Love <fx@gnu.org>
parents:
diff changeset
267 sequence is a zero.
Dave Love <fx@gnu.org>
parents:
diff changeset
268 @item C-x ^
Dave Love <fx@gnu.org>
parents:
diff changeset
269 Make selected window taller (@code{enlarge-window}).
Dave Love <fx@gnu.org>
parents:
diff changeset
270 @item C-x @}
Dave Love <fx@gnu.org>
parents:
diff changeset
271 Make selected window wider (@code{enlarge-window-horizontally}).
Dave Love <fx@gnu.org>
parents:
diff changeset
272 @item C-x @{
Dave Love <fx@gnu.org>
parents:
diff changeset
273 Make selected window narrower (@code{shrink-window-horizontally}).
Dave Love <fx@gnu.org>
parents:
diff changeset
274 @item C-x -
Dave Love <fx@gnu.org>
parents:
diff changeset
275 Shrink this window if its buffer doesn't need so many lines
Dave Love <fx@gnu.org>
parents:
diff changeset
276 (@code{shrink-window-if-larger-than-buffer}).
Dave Love <fx@gnu.org>
parents:
diff changeset
277 @item C-x +
Dave Love <fx@gnu.org>
parents:
diff changeset
278 Make all windows the same height (@code{balance-windows}).
Dave Love <fx@gnu.org>
parents:
diff changeset
279 @item Drag-Mouse-1
Dave Love <fx@gnu.org>
parents:
diff changeset
280 Dragging a window's mode line up or down with @kbd{Mouse-1} changes
Dave Love <fx@gnu.org>
parents:
diff changeset
281 window heights.
Dave Love <fx@gnu.org>
parents:
diff changeset
282 @item Mouse-2
Dave Love <fx@gnu.org>
parents:
diff changeset
283 @kbd{Mouse-2} in a window's mode line deletes all other windows in the frame
Dave Love <fx@gnu.org>
parents:
diff changeset
284 (@code{mouse-delete-other-windows}).
Dave Love <fx@gnu.org>
parents:
diff changeset
285 @item Mouse-3
Dave Love <fx@gnu.org>
parents:
diff changeset
286 @kbd{Mouse-3} in a window's mode line deletes that window
35954
c869b148aa3f Document what does mouse-3 do on the mode line if there's only one window.
Eli Zaretskii <eliz@gnu.org>
parents: 35188
diff changeset
287 (@code{mouse-delete-window}), unless the frame has only one window, in
c869b148aa3f Document what does mouse-3 do on the mode line if there's only one window.
Eli Zaretskii <eliz@gnu.org>
parents: 35188
diff changeset
288 which case it buries the current buffer instead and switches to another
c869b148aa3f Document what does mouse-3 do on the mode line if there's only one window.
Eli Zaretskii <eliz@gnu.org>
parents: 35188
diff changeset
289 buffer.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
290 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
291
Dave Love <fx@gnu.org>
parents:
diff changeset
292 @kindex C-x 0
Dave Love <fx@gnu.org>
parents:
diff changeset
293 @findex delete-window
Dave Love <fx@gnu.org>
parents:
diff changeset
294 To delete a window, type @kbd{C-x 0} (@code{delete-window}). (That is
Dave Love <fx@gnu.org>
parents:
diff changeset
295 a zero.) The space occupied by the deleted window is given to an
Dave Love <fx@gnu.org>
parents:
diff changeset
296 adjacent window (but not the minibuffer window, even if that is active
Dave Love <fx@gnu.org>
parents:
diff changeset
297 at the time). Once a window is deleted, its attributes are forgotten;
Dave Love <fx@gnu.org>
parents:
diff changeset
298 only restoring a window configuration can bring it back. Deleting the
Dave Love <fx@gnu.org>
parents:
diff changeset
299 window has no effect on the buffer it used to display; the buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
300 continues to exist, and you can select it in any window with @kbd{C-x
Dave Love <fx@gnu.org>
parents:
diff changeset
301 b}.
Dave Love <fx@gnu.org>
parents:
diff changeset
302
Dave Love <fx@gnu.org>
parents:
diff changeset
303 @findex kill-buffer-and-window
Dave Love <fx@gnu.org>
parents:
diff changeset
304 @kindex C-x 4 0
Dave Love <fx@gnu.org>
parents:
diff changeset
305 @kbd{C-x 4 0} (@code{kill-buffer-and-window}) is a stronger command
Dave Love <fx@gnu.org>
parents:
diff changeset
306 than @kbd{C-x 0}; it kills the current buffer and then deletes the
Dave Love <fx@gnu.org>
parents:
diff changeset
307 selected window.
Dave Love <fx@gnu.org>
parents:
diff changeset
308
Dave Love <fx@gnu.org>
parents:
diff changeset
309 @kindex C-x 1
Dave Love <fx@gnu.org>
parents:
diff changeset
310 @findex delete-other-windows
Dave Love <fx@gnu.org>
parents:
diff changeset
311 @kbd{C-x 1} (@code{delete-other-windows}) is more powerful in a
Dave Love <fx@gnu.org>
parents:
diff changeset
312 different way; it deletes all the windows except the selected one (and
Dave Love <fx@gnu.org>
parents:
diff changeset
313 the minibuffer); the selected window expands to use the whole frame
Dave Love <fx@gnu.org>
parents:
diff changeset
314 except for the echo area.
Dave Love <fx@gnu.org>
parents:
diff changeset
315
Dave Love <fx@gnu.org>
parents:
diff changeset
316 You can also delete a window by clicking on its mode line with
Dave Love <fx@gnu.org>
parents:
diff changeset
317 @kbd{Mouse-2}, and delete all the windows in a frame except one window
Dave Love <fx@gnu.org>
parents:
diff changeset
318 by clicking on that window's mode line with @kbd{Mouse-3}.
Dave Love <fx@gnu.org>
parents:
diff changeset
319
Dave Love <fx@gnu.org>
parents:
diff changeset
320 The easiest way to adjust window heights is with a mouse. If you
Dave Love <fx@gnu.org>
parents:
diff changeset
321 press @kbd{Mouse-1} on a mode line, you can drag that mode line up or
Dave Love <fx@gnu.org>
parents:
diff changeset
322 down, changing the heights of the windows above and below it.
Dave Love <fx@gnu.org>
parents:
diff changeset
323
Dave Love <fx@gnu.org>
parents:
diff changeset
324 @kindex C-x ^
Dave Love <fx@gnu.org>
parents:
diff changeset
325 @findex enlarge-window
Dave Love <fx@gnu.org>
parents:
diff changeset
326 @kindex C-x @}
Dave Love <fx@gnu.org>
parents:
diff changeset
327 @findex enlarge-window-horizontally
Dave Love <fx@gnu.org>
parents:
diff changeset
328 @vindex window-min-height
Dave Love <fx@gnu.org>
parents:
diff changeset
329 @vindex window-min-width
Dave Love <fx@gnu.org>
parents:
diff changeset
330 To readjust the division of space among vertically adjacent windows,
Dave Love <fx@gnu.org>
parents:
diff changeset
331 use @kbd{C-x ^} (@code{enlarge-window}). It makes the currently
Dave Love <fx@gnu.org>
parents:
diff changeset
332 selected window get one line bigger, or as many lines as is specified
Dave Love <fx@gnu.org>
parents:
diff changeset
333 with a numeric argument. With a negative argument, it makes the
Dave Love <fx@gnu.org>
parents:
diff changeset
334 selected window smaller. @kbd{C-x @}}
Dave Love <fx@gnu.org>
parents:
diff changeset
335 (@code{enlarge-window-horizontally}) makes the selected window wider by
Dave Love <fx@gnu.org>
parents:
diff changeset
336 the specified number of columns. @kbd{C-x @{}
Dave Love <fx@gnu.org>
parents:
diff changeset
337 (@code{shrink-window-horizontally}) makes the selected window narrower
Dave Love <fx@gnu.org>
parents:
diff changeset
338 by the specified number of columns.
Dave Love <fx@gnu.org>
parents:
diff changeset
339
Dave Love <fx@gnu.org>
parents:
diff changeset
340 When you make a window bigger, the space comes from one of its
Dave Love <fx@gnu.org>
parents:
diff changeset
341 neighbors. If this makes any window too small, it is deleted and its
Dave Love <fx@gnu.org>
parents:
diff changeset
342 space is given to an adjacent window. The minimum size is specified by
Dave Love <fx@gnu.org>
parents:
diff changeset
343 the variables @code{window-min-height} and @code{window-min-width}.
Dave Love <fx@gnu.org>
parents:
diff changeset
344
Dave Love <fx@gnu.org>
parents:
diff changeset
345 @kindex C-x -
Dave Love <fx@gnu.org>
parents:
diff changeset
346 @findex shrink-window-if-larger-than-buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
347 The command @kbd{C-x -} (@code{shrink-window-if-larger-than-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
348 reduces the height of the selected window, if it is taller than
Dave Love <fx@gnu.org>
parents:
diff changeset
349 necessary to show the whole text of the buffer it is displaying. It
Dave Love <fx@gnu.org>
parents:
diff changeset
350 gives the extra lines to other windows in the frame.
Dave Love <fx@gnu.org>
parents:
diff changeset
351
Dave Love <fx@gnu.org>
parents:
diff changeset
352 @kindex C-x +
Dave Love <fx@gnu.org>
parents:
diff changeset
353 @findex balance-windows
Dave Love <fx@gnu.org>
parents:
diff changeset
354 You can also use @kbd{C-x +} (@code{balance-windows}) to even out the
Dave Love <fx@gnu.org>
parents:
diff changeset
355 heights of all the windows in the selected frame.
Dave Love <fx@gnu.org>
parents:
diff changeset
356
28551
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
357 @node Window Convenience
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
358 @section Window Handling Convenience Features and Customization
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
359
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
360 @findex winner-mode
30875
e86dbf76e699 mainly indexing
Dave Love <fx@gnu.org>
parents: 28796
diff changeset
361 @cindex Winner mode
e86dbf76e699 mainly indexing
Dave Love <fx@gnu.org>
parents: 28796
diff changeset
362 @cindex mode, Winner
28551
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
363 @cindex undoing window configuration changes
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
364 @cindex window configuration changes, undoing
36182
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
365 @kbd{M-x winner-mode} is a global minor mode that records the
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
366 changes in the window configuration (i.e. how the frames are
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
367 partitioned into windows), so that you can ``undo'' them. To undo,
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
368 use @kbd{C-x left} (@code{winner-undo}). If you change your mind
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
369 while undoing, you can redo the changes you had undone using @kbd{C-x
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
370 right} (@code{M-x winner-redo}). Another way to enable Winner mode is
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
371 by customizing the variable @code{winner-mode}.
28551
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
372
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
373 @cindex Windmove package
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
374 @cindex directional window selection
30875
e86dbf76e699 mainly indexing
Dave Love <fx@gnu.org>
parents: 28796
diff changeset
375 @findex windmove-right
e86dbf76e699 mainly indexing
Dave Love <fx@gnu.org>
parents: 28796
diff changeset
376 @findex windmove-default-keybindings
36875
6a6141e694a5 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 36263
diff changeset
377 The Windmove commands move directionally between neighbouring windows in
30875
e86dbf76e699 mainly indexing
Dave Love <fx@gnu.org>
parents: 28796
diff changeset
378 a frame. @kbd{M-x windmove-right} selects the window immediately to the
36182
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
379 right of the currently selected one, and similarly for the ``left,'' ``up,''
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
380 and ``down'' counterparts. @kbd{M-x windmove-default-keybindings} binds
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
381 these commands to @kbd{S-right} etc. (Not all terminals support shifted
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
382 arrow keys, however.)
28551
d212ead1f461 No resize-minibuffer.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
383
36182
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
384 Follow minor mode (@kbd{M-x follow-mode}) synchronizes several
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
385 windows on the same buffer so that they always display adjacent
36263
11db0318031d Remove redundant index entries.
Eli Zaretskii <eliz@gnu.org>
parents: 36185
diff changeset
386 sections of that buffer. @xref{Follow Mode}.
36182
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
387
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
388 @vindex scroll-all-mode
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
389 @cindex scrolling windows together
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
390 @cindex Scroll-all mode
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
391 @cindex mode, Scroll-all
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
392 @kbd{M-x scroll-all-mode} provides commands to scroll all visible
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
393 windows together. You can also turn it on by customizing the variable
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
394 @code{scroll-all-mode}. The commands provided are @kbd{M-x
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
395 scroll-all-scroll-down-all}, @kbd{M-x scroll-all-page-down-all} and
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
396 their corresponding ``up'' equivalents. To make this mode useful,
add12d9a298a Major rewrite in Window Convenience node.
Richard M. Stallman <rms@gnu.org>
parents: 35954
diff changeset
397 you should bind these commands to appropriate keys.