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