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