Commit | Line | Data |
---|---|---|
8cf51b2c GM |
1 | @c This is part of the Emacs manual. |
2 | @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002, | |
3 | @c 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. | |
4 | @c See file emacs.texi for copying conditions. | |
5 | @node Screen, User Input, Acknowledgments, Top | |
6 | @chapter The Organization of the Screen | |
7 | @cindex screen | |
8 | @cindex parts of the screen | |
9 | ||
10 | On a text-only terminal, the Emacs display occupies the whole | |
11 | screen. On a graphical display, such as on GNU/Linux using the X | |
12 | Window System, Emacs creates its own windows to use. We use the term | |
13 | @dfn{frame} to mean the entire text-only screen or an entire | |
14 | system-level window used by Emacs. Emacs uses both kinds of frames, | |
15 | in the same way, to display your editing. Emacs normally starts out | |
16 | with just one frame, but you can create additional frames if you wish. | |
17 | @xref{Frames}. | |
18 | ||
19 | When you start Emacs, the main central area of the frame, all except | |
20 | for the top and bottom and sides, displays the text you are editing. | |
21 | This area is called @dfn{the window}. At the top there is normally a | |
22 | @dfn{menu bar} where you can access a series of menus; then there may | |
23 | be a @dfn{tool bar}, a row of icons that perform editing commands if | |
24 | you click on them. Below this, the window begins, often with a | |
25 | @dfn{scroll bar} on one side. Below the window comes the last line of | |
26 | the frame, a special @dfn{echo area} or @dfn{minibuffer window}, where | |
27 | prompts appear and you enter information when Emacs asks for it. See | |
28 | following sections for more information about these special lines. | |
29 | ||
30 | You can subdivide the window horizontally or vertically to make | |
31 | multiple text windows, each of which can independently display some | |
32 | file or text (@pxref{Windows}). In this manual, the word ``window'' | |
33 | refers to the initial large window if not subdivided, or any one of | |
34 | the multiple windows you have subdivided it into. | |
35 | ||
36 | At any time, one window is the @dfn{selected window}. On graphical | |
37 | displays, the selected window normally shows a more prominent cursor | |
38 | (usually solid and blinking) while other windows show a weaker cursor | |
39 | (such as a hollow box). Text terminals have just one cursor, so it | |
40 | always appears in the selected window. | |
41 | ||
42 | Most Emacs commands implicitly apply to the text in the selected | |
43 | window; the text in unselected windows is mostly visible for | |
44 | reference. However, mouse commands generally operate on whatever | |
45 | window you click them in, whether selected or not. If you use | |
46 | multiple frames on a graphical display, then giving the input focus to | |
47 | a particular frame selects a window in that frame. | |
48 | ||
49 | Each window's last line is a @dfn{mode line}, which describes what | |
50 | is going on in that window. It appears in different color and/or a ``3D'' | |
51 | box if the terminal supports them; its contents normally begin with | |
52 | @w{@samp{--:-- @ *scratch*}} when Emacs starts. The mode line | |
53 | displays status information such as what buffer is being displayed | |
54 | above it in the window, what major and minor modes are in use, and | |
55 | whether the buffer contains unsaved changes. | |
56 | ||
57 | @menu | |
58 | * Point:: The place in the text where editing commands operate. | |
59 | * Echo Area:: Short messages appear at the bottom of the screen. | |
60 | * Mode Line:: Interpreting the mode line. | |
61 | * Menu Bar:: How to use the menu bar. | |
62 | @end menu | |
63 | ||
64 | @node Point | |
65 | @section Point | |
66 | @cindex point | |
67 | @cindex cursor | |
68 | ||
69 | Within Emacs, the active cursor shows the location at which | |
70 | editing commands will take effect. This location is called @dfn{point}. | |
71 | Many Emacs commands move point through the text, so that you can edit at | |
72 | different places in it. You can also place point by clicking mouse | |
73 | button 1 (normally the left button). | |
74 | ||
75 | While the cursor appears to be @emph{on} a character, you should | |
76 | think of point as @emph{between} two characters; it points @emph{before} | |
77 | the character that appears under the cursor. For example, if your text | |
78 | looks like @samp{frob} with the cursor over the @samp{b}, then point is | |
79 | between the @samp{o} and the @samp{b}. If you insert the character | |
80 | @samp{!} at that position, the result is @samp{fro!b}, with point | |
81 | between the @samp{!} and the @samp{b}. Thus, the cursor remains over | |
82 | the @samp{b}, as before. | |
83 | ||
84 | Sometimes people speak of ``the cursor'' when they mean ``point,'' or | |
85 | speak of commands that move point as ``cursor motion'' commands. | |
86 | ||
87 | If you are editing several files in Emacs, each in its own buffer, | |
88 | each buffer has its own point location. A buffer that is not | |
89 | currently displayed remembers its point location in case you display | |
90 | it again later. When Emacs displays multiple windows, each window has | |
91 | its own point location. If the same buffer appears in more than one | |
92 | window, each window has its own point position in that buffer, and (when | |
93 | possible) its own cursor. | |
94 | ||
95 | A text-only terminal has just one cursor, in the selected window. | |
96 | The other windows do not show a cursor, even though they do have their | |
97 | own position of point. When Emacs updates the screen on a text-only | |
98 | terminal, it has to put the cursor temporarily at the place the output | |
99 | goes. This doesn't mean point is there, though. Once display | |
100 | updating finishes, Emacs puts the cursor where point is. | |
101 | ||
102 | On graphical displays, Emacs shows a cursor in each window; the | |
103 | selected window's cursor is solid and blinking, and the other cursors | |
104 | are just hollow. Thus, the most prominent cursor always shows you the | |
105 | selected window, on all kinds of terminals. | |
106 | ||
107 | @xref{Cursor Display}, for customizable variables that control display | |
108 | of the cursor or cursors. | |
109 | ||
110 | The term ``point'' comes from the character @samp{.}, which was the | |
111 | command in TECO (the language in which the original Emacs was written) | |
112 | for accessing the value now called ``point.'' | |
113 | ||
114 | @node Echo Area | |
115 | @section The Echo Area | |
116 | @cindex echo area | |
117 | ||
118 | The line at the bottom of the frame (below the mode line) is the | |
119 | @dfn{echo area}. It is used to display small amounts of text for | |
120 | various purposes. | |
121 | ||
122 | @dfn{Echoing} means displaying the characters that you type. At the | |
123 | command line, the operating system normally echoes all your input. | |
124 | Emacs handles echoing differently. | |
125 | ||
126 | Single-character commands do not echo in Emacs, and multi-character | |
127 | commands echo only if you pause while typing them. As soon as you pause | |
128 | for more than a second in the middle of a command, Emacs echoes all the | |
129 | characters of the command so far. This is to @dfn{prompt} you for the | |
130 | rest of the command. Once echoing has started, the rest of the command | |
131 | echoes immediately as you type it. This behavior is designed to give | |
132 | confident users fast response, while giving hesitant users maximum | |
133 | feedback. You can change this behavior by setting a variable | |
134 | (@pxref{Display Custom}). | |
135 | ||
136 | @cindex error message in the echo area | |
137 | If a command cannot do its job, it may display an @dfn{error | |
138 | message} in the echo area. Error messages are accompanied by beeping | |
139 | or by flashing the screen. The error also discards any input you have | |
140 | typed ahead. | |
141 | ||
142 | Some commands display informative messages in the echo area. These | |
143 | messages look much like error messages, but they are not announced | |
144 | with a beep and do not throw away input. Sometimes the message tells | |
145 | you what the command has done, when this is not obvious from looking | |
146 | at the text being edited. Sometimes the sole purpose of a command is | |
147 | to show you a message giving you specific information---for example, | |
148 | @kbd{C-x =} (hold down @key{CTRL} and type @kbd{x}, then let go of | |
149 | @key{CTRL} and type @kbd{=}) displays a message describing the | |
150 | character position of point in the text and its current column in the | |
151 | window. Commands that take a long time often display messages ending | |
152 | in @samp{...} while they are working, and add @samp{done} at the end | |
153 | when they are finished. They may also indicate progress with | |
154 | percentages. | |
155 | ||
156 | @cindex @samp{*Messages*} buffer | |
157 | @cindex saved echo area messages | |
158 | @cindex messages saved from echo area | |
159 | Echo-area informative messages are saved in an editor buffer named | |
160 | @samp{*Messages*}. (We have not explained buffers yet; see | |
161 | @ref{Buffers}, for more information about them.) If you miss a message | |
162 | that appears briefly on the screen, you can switch to the | |
163 | @samp{*Messages*} buffer to see it again. (Successive progress messages | |
164 | are often collapsed into one in that buffer.) | |
165 | ||
166 | @vindex message-log-max | |
167 | The size of @samp{*Messages*} is limited to a certain number of | |
168 | lines. The variable @code{message-log-max} specifies how many lines. | |
169 | Once the buffer has that many lines, adding lines at the end deletes lines | |
170 | from the beginning, to keep the size constant. @xref{Variables}, for | |
171 | how to set variables such as @code{message-log-max}. | |
172 | ||
173 | The echo area is also used to display the @dfn{minibuffer}, a window | |
174 | where you can input arguments to commands, such as the name of a file | |
175 | to be edited. When the minibuffer is in use, the echo area begins | |
176 | with a prompt string that usually ends with a colon; also, the cursor | |
177 | appears in that line because it is the selected window. You can | |
178 | always get out of the minibuffer by typing @kbd{C-g}. | |
179 | @xref{Minibuffer}. | |
180 | ||
181 | @node Mode Line | |
182 | @section The Mode Line | |
183 | @cindex mode line | |
184 | @cindex top level | |
185 | @c | |
186 | ||
187 | Each text window's last line is a @dfn{mode line}, which describes | |
188 | what is going on in that window. The mode line starts and ends with | |
189 | dashes. When there is only one text window, the mode line appears | |
190 | right above the echo area; it is the next-to-last line in the frame. | |
191 | On a text-only terminal, the mode line is in inverse video if the | |
192 | terminal supports that; on a graphics display, the mode line has a 3D | |
193 | box appearance to help it stand out. The mode line of the selected | |
194 | window is highlighted if possible; see @ref{Optional Mode Line}, for | |
195 | more information. | |
196 | ||
197 | Normally, the mode line looks like this: | |
198 | ||
199 | @example | |
200 | -@var{cs}:@var{ch}@var{R}-@var{fr} @var{buf} @var{pos} @var{line} (@var{major} @var{minor})------ | |
201 | @end example | |
202 | ||
203 | @noindent | |
204 | This gives information about the window and the buffer it displays: the | |
205 | buffer's name, what major and minor modes are in use, whether the | |
206 | buffer's text has been changed, and how far down the buffer you are | |
207 | currently looking. | |
208 | ||
209 | @var{ch} contains two stars @samp{**} if the text in the buffer has | |
210 | been edited (the buffer is ``modified''), or @samp{--} if the buffer has | |
211 | not been edited. For a read-only buffer, it is @samp{%*} if the buffer | |
212 | is modified, and @samp{%%} otherwise. | |
213 | ||
214 | @var{R} is @samp{@@} if the default-directory for the current buffer | |
215 | is on a remote machine, or a hyphen otherwise. | |
216 | ||
217 | @var{fr} gives the selected frame name (@pxref{Frames}). It appears | |
218 | only on text-only terminals. The initial frame's name is @samp{F1}. | |
219 | ||
220 | @var{buf} is the name of the window's @dfn{buffer}. Usually this is | |
221 | the same as the name of a file you are editing. @xref{Buffers}. | |
222 | ||
223 | The buffer displayed in the selected window (the window with the | |
224 | cursor) is the @dfn{current buffer}, where editing happens. When a | |
225 | command's effect applies to ``the buffer,'' we mean it does those | |
226 | things to the current buffer. | |
227 | ||
228 | @var{pos} tells you whether there is additional text above the top of | |
229 | the window, or below the bottom. If your buffer is small and it is all | |
230 | visible in the window, @var{pos} is @samp{All}. Otherwise, it is | |
231 | @samp{Top} if you are looking at the beginning of the buffer, @samp{Bot} | |
232 | if you are looking at the end of the buffer, or @samp{@var{nn}%}, where | |
233 | @var{nn} is the percentage of the buffer above the top of the window. | |
234 | With Size Indication mode, you can display the size of the buffer as | |
235 | well. @xref{Optional Mode Line}. | |
236 | ||
237 | @var{line} is @samp{L} followed by the current line number of point. | |
238 | This is present when Line Number mode is enabled (it normally is). | |
239 | You can display the current column number too, by turning on Column | |
240 | Number mode. It is not enabled by default because it is somewhat | |
241 | slower. @xref{Optional Mode Line}. | |
242 | ||
243 | @var{major} is the name of the @dfn{major mode} in effect in the | |
244 | buffer. A buffer can only be in one major mode at a time. The major | |
245 | modes available include Fundamental mode (the least specialized), Text | |
246 | mode, Lisp mode, C mode, Texinfo mode, and many others. @xref{Major | |
247 | Modes}, for details of how the modes differ and how to select | |
248 | them. | |
249 | ||
250 | Some major modes display additional information after the major mode | |
251 | name. For example, Rmail buffers display the current message number and | |
252 | the total number of messages. Compilation buffers and Shell buffers | |
253 | display the status of the subprocess. | |
254 | ||
255 | @var{minor} is a list of some of the @dfn{minor modes} that are | |
256 | turned on at the moment in the window's chosen buffer. For example, | |
257 | @samp{Fill} means that Auto Fill mode is on. @samp{Abbrev} means that | |
258 | Word Abbrev mode is on. @samp{Ovwrt} means that Overwrite mode is on. | |
259 | @xref{Minor Modes}, for more information. | |
260 | ||
261 | @samp{Narrow} means that the buffer being displayed has editing | |
262 | restricted to only a portion of its text. (This is not really a minor | |
263 | mode, but is like one.) @xref{Narrowing}. @samp{Def} means that a | |
264 | keyboard macro is being defined. @xref{Keyboard Macros}. | |
265 | ||
266 | In addition, if Emacs is inside a recursive editing level, square | |
267 | brackets (@samp{[@dots{}]}) appear around the parentheses that | |
268 | surround the modes. If Emacs is in one recursive editing level within | |
269 | another, double square brackets appear, and so on. Since recursive | |
270 | editing levels affect Emacs globally, not just one buffer, the square | |
271 | brackets appear in every window's mode line or not in any of them. | |
272 | @xref{Recursive Edit}.@refill | |
273 | ||
274 | @var{cs} states the coding system used for the file you are editing. | |
275 | A dash indicates the default state of affairs: no code conversion, | |
276 | except for end-of-line translation if the file contents call for that. | |
277 | @samp{=} means no conversion whatsoever. Nontrivial code conversions | |
278 | are represented by various letters---for example, @samp{1} refers to ISO | |
279 | Latin-1. @xref{Coding Systems}, for more information. | |
280 | ||
281 | On a text-only terminal, @var{cs} includes two additional characters | |
282 | which describe the coding system for keyboard input and the coding | |
283 | system for terminal output. They come right before the coding system | |
284 | used for the file you are editing. | |
285 | ||
286 | If you are using an input method, a string of the form | |
287 | @samp{@var{i}>} is added to the beginning of @var{cs}; @var{i} | |
288 | identifies the input method. (Some input methods show @samp{+} or | |
289 | @samp{@@} instead of @samp{>}.) @xref{Input Methods}. | |
290 | ||
291 | When multibyte characters are not enabled, @var{cs} does not appear at | |
292 | all. @xref{Enabling Multibyte}. | |
293 | ||
294 | @cindex end-of-line conversion, mode-line indication | |
295 | The colon after @var{cs} changes to another string in some cases. | |
296 | Emacs uses newline characters to separate lines in the buffer. Some | |
297 | files use different conventions for separating lines: either | |
298 | carriage-return linefeed (the MS-DOS convention) or just | |
299 | carriage-return (the Macintosh convention). If the buffer's file uses | |
300 | carriage-return linefeed, the colon changes to either a backslash | |
301 | (@samp{\}) or @samp{(DOS)}, depending on the operating system. If the | |
302 | file uses just carriage-return, the colon indicator changes to either | |
303 | a forward slash (@samp{/}) or @samp{(Mac)}. On some systems, Emacs | |
304 | displays @samp{(Unix)} instead of the colon for files that use newline | |
305 | as the line separator. | |
306 | ||
307 | @xref{Optional Mode Line}, to add other handy information to the | |
308 | mode line, such as the size of the buffer, the current column number | |
309 | of point, and whether new mail for you has arrived. | |
310 | ||
311 | The mode line is mouse-sensitive; when you move the mouse across | |
312 | various parts of it, Emacs displays help text to say what a click in | |
313 | that place will do. @xref{Mode Line Mouse}. | |
314 | ||
315 | @node Menu Bar | |
316 | @section The Menu Bar | |
317 | @cindex menu bar | |
318 | ||
319 | Each Emacs frame normally has a @dfn{menu bar} at the top which you | |
320 | can use to perform common operations. There's no need to list them | |
321 | here, as you can more easily see them yourself. | |
322 | ||
323 | @kindex M-` | |
324 | @kindex F10 | |
325 | @findex tmm-menubar | |
326 | @findex menu-bar-open | |
327 | On a graphical display, you can use the mouse to choose a command | |
328 | from the menu bar. A right-arrow at the end of the menu item means it | |
329 | leads to a subsidiary menu; @samp{...} at the end means that the | |
330 | command invoked will read arguments (further input from you) before it | |
331 | actually does anything. | |
332 | ||
333 | You can also invoke the first menu bar item by pressing @key{F10} (to run | |
334 | the command @code{menu-bar-open}). You can then navigate the menus with | |
335 | the arrow keys. You select an item by pressing @key{RET} and cancel menu | |
336 | navigation with @key{ESC}. | |
337 | ||
338 | To view the full command name and documentation for a menu item, type | |
339 | @kbd{C-h k}, and then select the menu bar with the mouse in the usual | |
340 | way (@pxref{Key Help}). | |
341 | ||
342 | On text-only terminals with no mouse, you can use the menu bar by | |
343 | typing @kbd{M-`} or @key{F10} (these run the command | |
344 | @code{tmm-menubar}). This lets you select a menu item with the | |
345 | keyboard. A provisional choice appears in the echo area. You can use | |
346 | the up and down arrow keys to move through the menu to different | |
347 | items, and then you can type @key{RET} to select the item. | |
348 | ||
349 | Each menu item also has an assigned letter or digit which designates | |
350 | that item; it is usually the initial of some word in the item's name. | |
351 | This letter or digit is separated from the item name by @samp{=>}. You | |
352 | can type the item's letter or digit to select the item. | |
353 | ||
354 | Some of the commands in the menu bar have ordinary key bindings as | |
355 | well; one such binding is shown in parentheses after the item itself. | |
356 | ||
357 | @ignore | |
358 | arch-tag: 104ba40e-d972-4866-a542-a98be94bdf2f | |
359 | @end ignore |