Mercurial > hg > xemacs-beta
comparison man/xemacs/windows.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | e45d5e7c476e |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:376386a54a3c |
---|---|
1 | |
2 @node Windows, Major Modes, Buffers, Top | |
3 @chapter Multiple Windows | |
4 @cindex windows | |
5 | |
6 Emacs can split the frame into two or many windows, which can display | |
7 parts of different buffers or different parts of one buffer. If you are | |
8 running XEmacs under X, that means you can have the X window that contains | |
9 the Emacs frame have multiple subwindows. | |
10 | |
11 @menu | |
12 * Basic Window:: Introduction to Emacs windows. | |
13 * Split Window:: New windows are made by splitting existing windows. | |
14 * Other Window:: Moving to another window or doing something to it. | |
15 * Pop Up Window:: Finding a file or buffer in another window. | |
16 * Change Window:: Deleting windows and changing their sizes. | |
17 @end menu | |
18 | |
19 @node Basic Window, Split Window, Windows, Windows | |
20 @section Concepts of Emacs Windows | |
21 | |
22 When Emacs displays multiple windows, each window has one Emacs | |
23 buffer designated for display. The same buffer may appear in more | |
24 than one window; if it does, any changes in its text are displayed in all | |
25 the windows that display it. Windows showing the same buffer can | |
26 show different parts of it, because each window has its own value of point. | |
27 | |
28 @cindex selected window | |
29 At any time, one window is the @dfn{selected window}; the buffer | |
30 displayed by that window is the current buffer. The cursor | |
31 shows the location of point in that window. Each other window has a | |
32 location of point as well, but since the terminal has only one cursor, it | |
33 cannot show the location of point in the other windows. | |
34 | |
35 Commands to move point affect the value of point for the selected Emacs | |
36 window only. They do not change the value of point in any other Emacs | |
37 window, including those showing the same buffer. The same is true for commands | |
38 such as @kbd{C-x b} to change the selected buffer in the selected window; | |
39 they do not affect other windows at all. However, there are other commands | |
40 such as @kbd{C-x 4 b} that select a different window and switch buffers in | |
41 it. Also, all commands that display information in a window, including | |
42 (for example) @kbd{C-h f} (@code{describe-function}) and @kbd{C-x C-b} | |
43 (@code{list-buffers}), work by switching buffers in a non-selected window | |
44 without affecting the selected window. | |
45 | |
46 Each window has its own mode line, which displays the buffer name, | |
47 modification status, and major and minor modes of the buffer that is | |
48 displayed in the window. @xref{Mode Line}, for details on the mode | |
49 line. | |
50 | |
51 @node Split Window, Other Window, Basic Window, Windows | |
52 @section Splitting Windows | |
53 | |
54 @table @kbd | |
55 @item C-x 2 | |
56 Split the selected window into two windows, one above the other | |
57 (@code{split-window-vertically}). | |
58 @item C-x 3 | |
59 Split the selected window into two windows positioned side by side | |
60 (@code{split-window-horizontally}). | |
61 @item C-x 6 | |
62 Save the current window configuration in register @var{reg} (a letter). | |
63 @item C-x 7 | |
64 Restore (make current) the window configuration in register | |
65 @var{reg} (a letter). Use with a register previously set with @kbd{C-x 6}. | |
66 @end table | |
67 | |
68 @kindex C-x 2 | |
69 @findex split-window-vertically | |
70 The command @kbd{C-x 2} (@code{split-window-vertically}) breaks the | |
71 selected window into two windows, one above the other. Both windows | |
72 start out displaying the same buffer, with the same value of point. By | |
73 default each of the two windows gets half the height of the window that | |
74 was split. A numeric argument specifies how many lines to give to the | |
75 top window. | |
76 | |
77 @kindex C-x 3 | |
78 @findex split-window-horizontally | |
79 @kbd{C-x 3} (@code{split-window-horizontally}) breaks the selected | |
80 window into two side-by-side windows. A numeric argument specifies how | |
81 many columns to give the one on the left. A line of vertical bars | |
82 separates the two windows. Windows that are not the full width of the | |
83 frame have truncated mode lines which do not always appear in inverse | |
84 video, because Emacs display routines cannot display a region of inverse | |
85 video that is only part of a line on the screen. | |
86 | |
87 @vindex truncate-partial-width-windows | |
88 When a window is less than the full width, many text lines are too | |
89 long to fit. Continuing all those lines might be confusing. Set the | |
90 variable @code{truncate-partial-width-windows} to non-@code{nil} to | |
91 force truncation in all windows less than the full width of the frame, | |
92 independent of the buffer and its value for @code{truncate-lines}. | |
93 @xref{Continuation Lines}.@refill | |
94 | |
95 Horizontal scrolling is often used in side-by-side windows. | |
96 @xref{Display}. | |
97 | |
98 @findex jump-to-register | |
99 @findex window-configuration-to-register | |
100 You can resize a window and store that configuration in a register by | |
101 supplying a @var{register} argument to @code{window-configuration-to-register} | |
102 (@kbd{C-x 6}). To return to the window configuration established with | |
103 @code{window-configuration-to-register}, use @code{jump-to-register} | |
104 (@kbd{C-x j}). | |
105 | |
106 @node Other Window, Pop Up Window, Split Window, Windows | |
107 @section Using Other Windows | |
108 | |
109 @table @kbd | |
110 @item C-x o | |
111 Select another window (@code{other-window}). That is the letter `o', not zero. | |
112 @item M-C-v | |
113 Scroll the next window (@code{scroll-other-window}). | |
114 @item M-x compare-windows | |
115 Find the next place where the text in the selected window does not match | |
116 the text in the next window. | |
117 @item M-x other-window-any-frame @var{n} | |
118 Select the @var{n}th different window on any frame. | |
119 @end table | |
120 | |
121 @kindex C-x o | |
122 @findex other-window | |
123 To select a different window, use @kbd{C-x o} (@code{other-window}). | |
124 That is an `o', for `other', not a zero. When there are more than | |
125 two windows, the command moves through all the windows in a cyclic | |
126 order, generally top to bottom and left to right. From the rightmost | |
127 and bottommost window, it goes back to the one at the upper left corner. | |
128 A numeric argument, @var{n}, moves several steps in the cyclic order of | |
129 windows. A negative numeric argument moves around the cycle in the | |
130 opposite order. If the optional second argument @var{all-frames} is | |
131 non-@code{nil}, the function cycles through all frames. When the | |
132 minibuffer is active, the minibuffer is the last window in the cycle; | |
133 you can switch from the minibuffer window to one of the other windows, | |
134 and later switch back and finish supplying the minibuffer argument that | |
135 is requested. @xref{Minibuffer Edit}. | |
136 | |
137 @findex other-window-any-frame | |
138 The command @kbd{M-x other-window-any-frame} also selects the window | |
139 @var{n} steps away in the cyclic order. However, unlike @code{other-window}, | |
140 this command selects a window on the next or previous frame instead of | |
141 wrapping around to the top or bottom of the current frame, when there | |
142 are no more windows. | |
143 | |
144 @kindex C-M-v | |
145 @findex scroll-other-window | |
146 The usual scrolling commands (@pxref{Display}) apply to the selected | |
147 window only. @kbd{M-C-v} (@code{scroll-other-window}) scrolls the | |
148 window that @kbd{C-x o} would select. Like @kbd{C-v}, it takes positive | |
149 and negative arguments. | |
150 | |
151 @findex compare-windows | |
152 The command @kbd{M-x compare-windows} compares the text in the current | |
153 window with the text in the next window. Comparison starts at point in each | |
154 window. Point moves forward in each window, a character at a time, | |
155 until the next set of characters in the two windows are different. Then the | |
156 command is finished. | |
157 | |
158 A prefix argument @var{ignore-whitespace} means ignore changes in | |
159 whitespace. The variable @code{compare-windows-whitespace} controls how | |
160 whitespace is skipped. | |
161 | |
162 If @code{compare-ignore-case} is non-@code{nil}, changes in case are | |
163 also ignored. | |
164 | |
165 @node Pop Up Window, Change Window, Other Window, Windows | |
166 @section Displaying in Another Window | |
167 | |
168 @kindex C-x 4 | |
169 @kbd{C-x 4} is a prefix key for commands that select another window | |
170 (splitting the window if there is only one) and select a buffer in that | |
171 window. Different @kbd{C-x 4} commands have different ways of finding the | |
172 buffer to select. | |
173 | |
174 @findex switch-to-buffer-other-window | |
175 @findex find-file-other-window | |
176 @findex find-tag-other-window | |
177 @findex dired-other-window | |
178 @findex mail-other-window | |
179 @table @kbd | |
180 @item C-x 4 b @var{bufname} @key{RET} | |
181 Select buffer @var{bufname} in another window. This runs | |
182 @code{switch-to-buffer-other-window}. | |
183 @item C-x 4 f @var{filename} @key{RET} | |
184 Visit file @var{filename} and select its buffer in another window. This | |
185 runs @code{find-file-other-window}. @xref{Visiting}. | |
186 @item C-x 4 d @var{directory} @key{RET} | |
187 Select a Dired buffer for directory @var{directory} in another window. | |
188 This runs @code{dired-other-window}. @xref{Dired}. | |
189 @item C-x 4 m | |
190 Start composing a mail message in another window. This runs | |
191 @code{mail-other-window}, and its same-window version is @kbd{C-x m} | |
192 (@pxref{Sending Mail}). | |
193 @item C-x 4 . | |
194 Find a tag in the current tag table in another window. This runs | |
195 @code{find-tag-other-window}, the multiple-window variant of @kbd{M-.} | |
196 (@pxref{Tags}). | |
197 @end table | |
198 | |
199 @vindex display-buffer-function | |
200 If the variable @code{display-buffer-function} is non-@code{nil}, its value is | |
201 the function to call to handle @code{display-buffer}. It receives two | |
202 arguments, the buffer and a flag that if non-@code{nil} means that the | |
203 currently selected window is not acceptable. Commands such as | |
204 @code{switch-to-buffer-other-window} and @code{find-file-other-window} | |
205 work using this function. | |
206 | |
207 @node Change Window,, Pop Up Window, Windows | |
208 @section Deleting and Rearranging Windows | |
209 | |
210 @table @kbd | |
211 @item C-x 0 | |
212 Get rid of the selected window (@code{delete-window}). That is a zero. | |
213 If there is more than one Emacs frame, deleting the sole remaining | |
214 window on that frame deletes the frame as well. If the current frame | |
215 is the only frame, it is not deleted. | |
216 @item C-x 1 | |
217 Get rid of all windows except the selected one | |
218 (@code{delete-other-windows}). | |
219 @item C-x ^ | |
220 Make the selected window taller, at the expense of the other(s) | |
221 @*(@code{enlarge-window}). | |
222 @item C-x @} | |
223 Make the selected window wider (@code{enlarge-window-horizontally}). | |
224 @end table | |
225 | |
226 @kindex C-x 0 | |
227 @findex delete-window | |
228 To delete a window, type @kbd{C-x 0} (@code{delete-window}). (That is a | |
229 zero.) The space occupied by the deleted window is distributed among the | |
230 other active windows (but not the minibuffer window, even if that is active | |
231 at the time). Once a window is deleted, its attributes are forgotten; | |
232 there is no automatic way to make another window of the same shape or | |
233 showing the same buffer. The buffer continues to exist, and you can | |
234 select it in any window with @kbd{C-x b}. | |
235 | |
236 @kindex C-x 1 | |
237 @findex delete-other-windows | |
238 @kbd{C-x 1} (@code{delete-other-windows}) is more powerful than @kbd{C-x 0}; | |
239 it deletes all the windows except the selected one (and the minibuffer). | |
240 The selected window expands to use the whole frame except for the echo | |
241 area. | |
242 | |
243 @kindex C-x ^ | |
244 @findex enlarge-window | |
245 @kindex C-x @} | |
246 @findex enlarge-window-horizontally | |
247 @vindex window-min-height | |
248 @vindex window-min-width | |
249 To readjust the division of space among existing windows, use @kbd{C-x | |
250 ^} (@code{enlarge-window}). It makes the currently selected window | |
251 longer by one line or as many lines as a numeric argument specifies. | |
252 With a negative argument, it makes the selected window smaller. | |
253 @kbd{C-x @}} (@code{enlarge-window-horizontally}) makes the selected | |
254 window wider by the specified number of columns. The extra screen space | |
255 given to a window comes from one of its neighbors, if that is possible; | |
256 otherwise, all the competing windows are shrunk in the same proportion. | |
257 If this makes some windows too small, those windows are deleted and their | |
258 space is divided up. Minimum window size is specified by the variables | |
259 @code{window-min-height} and @code{window-min-width}. | |
260 | |
261 You can also resize windows within a frame by clicking the left mouse | |
262 button on a modeline, and dragging. | |
263 | |
264 Clicking the right button on a mode line pops up a menu of common window | |
265 manager operations. This menu contains the following options: | |
266 | |
267 @cindex Windows menu | |
268 @cindex Pull-down Menus | |
269 @cindex menus | |
270 @table @b | |
271 @item Delete Window | |
272 Remove the window above this modeline from the frame. | |
273 | |
274 @item Delete Other Windows | |
275 Delete all windows on the frame except for the one above this modeline. | |
276 | |
277 @item Split Window | |
278 Split the window above the mode line in half, creating another window. | |
279 | |
280 @item Split Window Horizontally | |
281 Split the window above the mode line in half horizontally, so that there | |
282 will be two windows side-by-side. | |
283 | |
284 @item Balance Windows | |
285 Readjust the sizes of all windows on the frame until all windows have | |
286 roughly the same number of lines. | |
287 @end table |