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