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