(Help): Add @key[RET} in @items.
[emacs.git] / man / display.texi
blob2778d4fe060d7086f0f09ba67bc856c7cc84cc32
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997, 2000 Free Software Foundation, Inc.
3 @c See file emacs.texi for copying conditions.
4 @node Display, Search, Registers, Top
5 @chapter Controlling the Display
7   Since only part of a large buffer fits in the window, Emacs tries to
8 show a part that is likely to be interesting.  Display-control commands
9 allow you to specify which part of the text you want to see, and how to
10 display it.
12 @menu
13 * Scrolling::              Moving text up and down in a window.
14 * Horizontal Scrolling::   Moving text left and right in a window.
15 * Follow Mode::            Follow mode lets two windows scroll as one.
16 * Selective Display::      Hiding lines with lots of indentation.
17 * Optional Mode Line::     Optional mode line display features.
18 * Text Display::           How text characters are normally displayed.
19 * Display Custom::         Information on variables for customizing display.
20 * Cursor Display::         Features for displaying the cursor.
21 @end menu
23 @node Scrolling
24 @section Scrolling
26   If a buffer contains text that is too large to fit entirely within a
27 window that is displaying the buffer, Emacs shows a contiguous portion of
28 the text.  The portion shown always contains point.
30 @cindex scrolling
31   @dfn{Scrolling} means moving text up or down in the window so that
32 different parts of the text are visible.  Scrolling forward means that text
33 moves up, and new text appears at the bottom.  Scrolling backward moves
34 text down and new text appears at the top.
36   Scrolling happens automatically if you move point past the bottom or top
37 of the window.  You can also explicitly request scrolling with the commands
38 in this section.
40 @table @kbd
41 @item C-l
42 Clear screen and redisplay, scrolling the selected window to center
43 point vertically within it (@code{recenter}).
44 @item C-v
45 Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
46 @item @key{NEXT}
47 Likewise, scroll forward.
48 @item M-v
49 Scroll backward (@code{scroll-down}).
50 @item @key{PRIOR}
51 Likewise, scroll backward.
52 @item @var{arg} C-l
53 Scroll so point is on line @var{arg} (@code{recenter}).
54 @item C-M-l
55 Scroll heuristically to bring useful information onto the screen
56 (@code{reposition-window}).
57 @end table
59 @kindex C-l
60 @findex recenter
61   The most basic scrolling command is @kbd{C-l} (@code{recenter}) with
62 no argument.  It clears the entire screen and redisplays all windows.
63 In addition, it scrolls the selected window so that point is halfway
64 down from the top of the window.
66 @kindex C-v
67 @kindex M-v
68 @kindex NEXT
69 @kindex PRIOR
70 @findex scroll-up
71 @findex scroll-down
72   The scrolling commands @kbd{C-v} and @kbd{M-v} let you move all the text
73 in the window up or down a few lines.  @kbd{C-v} (@code{scroll-up}) with an
74 argument shows you that many more lines at the bottom of the window, moving
75 the text and point up together as @kbd{C-l} might.  @kbd{C-v} with a
76 negative argument shows you more lines at the top of the window.
77 @kbd{M-v} (@code{scroll-down}) is like @kbd{C-v}, but moves in the
78 opposite direction.  The function keys @key{NEXT} and @key{PRIOR} are
79 equivalent to @kbd{C-v} and @kbd{M-v}.
81   The names of scroll commands are based on the direction that the text
82 moves in the window.  Thus, the command to scroll forward is called
83 @code{scroll-up} because it moves the text upward on the screen.
85 @vindex next-screen-context-lines
86   To read the buffer a windowful at a time, use @kbd{C-v} with no argument.
87 It takes the last two lines at the bottom of the window and puts them at
88 the top, followed by nearly a whole windowful of lines not previously
89 visible.  If point was in the text scrolled off the top, it moves to the
90 new top of the window.  @kbd{M-v} with no argument moves backward with
91 overlap similarly.  The number of lines of overlap across a @kbd{C-v} or
92 @kbd{M-v} is controlled by the variable @code{next-screen-context-lines}; by
93 default, it is 2.
95 @vindex scroll-preserve-screen-position
96   Some users like the full-screen scroll commands to keep point at the
97 same screen line.  To enable this behavior, set the variable
98 @code{scroll-preserve-screen-position} to a non-@code{nil} value.  This
99 mode is convenient for browsing through a file by scrolling by
100 screenfuls; if you come back to the screen where you started, point goes
101 back to the line where it started.  However, this mode is inconvenient
102 when you move to the next screen in order to move point to the text
103 there.
105   Another way to do scrolling is with @kbd{C-l} with a numeric argument.
106 @kbd{C-l} does not clear the screen when given an argument; it only scrolls
107 the selected window.  With a positive argument @var{n}, it repositions text
108 to put point @var{n} lines down from the top.  An argument of zero puts
109 point on the very top line.  Point does not move with respect to the text;
110 rather, the text and point move rigidly on the screen.  @kbd{C-l} with a
111 negative argument puts point that many lines from the bottom of the window.
112 For example, @kbd{C-u - 1 C-l} puts point on the bottom line, and @kbd{C-u
113 - 5 C-l} puts it five lines from the bottom.  Just @kbd{C-u} as argument,
114 as in @kbd{C-u C-l}, scrolls point to the center of the selected window.
116 @kindex C-M-l
117 @findex reposition-window
118   The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current
119 window heuristically in a way designed to get useful information onto
120 the screen.  For example, in a Lisp file, this command tries to get the
121 entire current defun onto the screen if possible.
123 @vindex scroll-conservatively
124   Scrolling happens automatically if point has moved out of the visible
125 portion of the text when it is time to display.  Normally, automatic
126 scrolling centers point vertically within the window.  However, if you
127 set @code{scroll-conservatively} to a small number @var{n}, then if you
128 move point just a little off the screen---less than @var{n} lines---then
129 Emacs scrolls the text just far enough to bring point back on screen.
130 By default, @code{scroll-conservatively} is 0.
132 @cindex aggressive scrolling
133 @vindex scroll-up-aggressively
134 @vindex scroll-down-aggressively 
135   When the window does scroll by a longer distance, you can control
136 how aggressively it scrolls, by setting the variables
137 @code{scroll-up-aggressively} and @code{scroll-down-aggressively}.
138 The value of @code{scroll-up-aggressively} should be either
139 @code{nil}, or a fraction @var{f} between 0 and 1.  A fraction
140 specifies where on the screen to put point when scrolling upward.
141 More precisely, when a window scrolls up because point is above the
142 window start, the new start position is chosen to put point @var{f}
143 part of the window height from the top.  The larger @var{f}, the more
144 aggressive the scrolling.
146   @code{nil}, which is the default, scrolls to put point at the center.
147 So it is equivalent to .5.
149   Likewise, @code{scroll-down-aggressively} is used for scrolling
150 down.  The value, @var{f}, specifies how far point should be placed
151 from the bottom of the window; thus, as with
152 @code{scroll-up-aggressively}, a larger value is more aggressive.
154 @vindex scroll-margin
155   The variable @code{scroll-margin} restricts how close point can come
156 to the top or bottom of a window.  Its value is a number of screen
157 lines; if point comes within that many lines of the top or bottom of the
158 window, Emacs recenters the window.  By default, @code{scroll-margin} is
161 @node Horizontal Scrolling
162 @section Horizontal Scrolling
163 @cindex horizontal scrolling
165   @dfn{Horizontal scrolling} means shifting all the lines sideways
166 within a window---so that some of the text near the left margin is not
167 displayed at all.  Emacs does this automatically, in any window that
168 uses line truncation rather than continuation: whenever point moves
169 off the left or right edge of the screen, Emacs scrolls the buffer
170 horizontally to make point visible.
172   When a window has been scrolled horizontally, text lines are truncated
173 rather than continued (@pxref{Continuation Lines}), with a @samp{$}
174 appearing in the first column when there is text truncated to the left,
175 and in the last column when there is text truncated to the right.
177   You can use these commands to do explicit horizontal scrolling.
179 @table @kbd
180 @item C-x <
181 Scroll text in current window to the left (@code{scroll-left}).
182 @item C-x >
183 Scroll to the right (@code{scroll-right}).
184 @end table
186 @kindex C-x <
187 @kindex C-x >
188 @findex scroll-left
189 @findex scroll-right
190   The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
191 window to the left by @var{n} columns with argument @var{n}.  This moves
192 part of the beginning of each line off the left edge of the window.
193 With no argument, it scrolls by almost the full width of the window (two
194 columns less, to be precise).
196   @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right.  The
197 window cannot be scrolled any farther to the right once it is displayed
198 normally (with each line starting at the window's left margin);
199 attempting to do so has no effect.  This means that you don't have to
200 calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large
201 argument will restore the normal display.
203   If you scroll a window horizontally by hand, that sets a lower bound
204 for automatic horizontal scrolling.  Automatic scrolling will continue
205 to scroll the window, but never further to the right than the amount
206 you previously set by @code{scroll-left}.
208 @vindex automatic-hscrolling
209   To disable automatic horizontal scrolling, set the variable
210 @code{automatic-hscrolling} to @code{nil}.
212 @node Follow Mode
213 @section Follow Mode
214 @cindex Follow mode
215 @cindex mode, Follow
216 @findex follow-mode
217 @cindex windows, synchronizing
218 @cindex synchronizing windows
220   @dfn{Follow mode} is a minor mode that makes two windows showing the
221 same buffer scroll as one tall ``virtual window.''  To use Follow mode,
222 go to a frame with just one window, split it into two side-by-side
223 windows using @kbd{C-x 3}, and then type @kbd{M-x follow-mode}.  From
224 then on, you can edit the buffer in either of the two windows, or scroll
225 either one; the other window follows it.
227   In Follow mode, if you move point outside the portion visible in one
228 window and into the portion visible in the other window, that selects
229 the other window---again, treating the two as if they were parts of
230 one large window.
232   To turn off Follow mode, type @kbd{M-x follow-mode} a second time.
234 @node Selective Display
235 @section Selective Display
236 @cindex selective display
237 @findex set-selective-display
238 @kindex C-x $
240   Emacs has the ability to hide lines indented more than a certain number
241 of columns (you specify how many columns).  You can use this to get an
242 overview of a part of a program.
244   To hide lines, type @kbd{C-x $} (@code{set-selective-display}) with a
245 numeric argument @var{n}.  Then lines with at least @var{n} columns of
246 indentation disappear from the screen.  The only indication of their
247 presence is that three dots (@samp{@dots{}}) appear at the end of each
248 visible line that is followed by one or more hidden ones.
250   The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as
251 if they were not there.
253   The hidden lines are still present in the buffer, and most editing
254 commands see them as usual, so you may find point in the middle of the
255 hidden text.  When this happens, the cursor appears at the end of the
256 previous line, after the three dots.  If point is at the end of the
257 visible line, before the newline that ends it, the cursor appears before
258 the three dots.
260   To make all lines visible again, type @kbd{C-x $} with no argument.
262 @vindex selective-display-ellipses
263   If you set the variable @code{selective-display-ellipses} to
264 @code{nil}, the three dots do not appear at the end of a line that
265 precedes hidden lines.  Then there is no visible indication of the
266 hidden lines.  This variable becomes local automatically when set.
268 @node Optional Mode Line
269 @section Optional Mode Line Features
271 @cindex line number display
272 @cindex display of line number
273 @findex line-number-mode
274   The current line number of point appears in the mode line when Line
275 Number mode is enabled.  Use the command @kbd{M-x line-number-mode} to
276 turn this mode on and off; normally it is on.  The line number appears
277 before the buffer percentage @var{pos}, with the letter @samp{L} to
278 indicate what it is.  @xref{Minor Modes}, for more information about
279 minor modes and about how to use this command.
281 @vindex line-number-display-limit
282   If the buffer is very large (larger than the value of
283 @code{line-number-display-limit}), then the line number doesn't appear.
284 Emacs doesn't compute the line number when the buffer is large, because
285 that would be too slow.  Set it to @code{nil} to remove the limit.  If
286 you have narrowed the buffer (@pxref{Narrowing}), the displayed line
287 number is relative to the accessible portion of the buffer.
289 @cindex Column Number mode
290 @cindex mode, Column Number
291 @findex column-number-mode
292   You can also display the current column number by turning on Column
293 Number mode.  It displays the current column number preceded by the
294 letter @samp{C}.  Type @kbd{M-x column-number-mode} to toggle this mode.
296 @findex display-time
297 @cindex time (on mode line)
298   Emacs can optionally display the time and system load in all mode
299 lines.  To enable this feature, type @kbd{M-x display-time} or customize
300 the option @code{display-time-mode}.  The information added to the mode
301 line usually appears after the buffer name, before the mode names and
302 their parentheses.  It looks like this:
304 @example
305 @var{hh}:@var{mm}pm @var{l.ll}
306 @end example
308 @noindent
309 @vindex display-time-24hr-format
310 Here @var{hh} and @var{mm} are the hour and minute, followed always by
311 @samp{am} or @samp{pm}.  @var{l.ll} is the average number of running
312 processes in the whole system recently.  (Some fields may be missing if
313 your operating system cannot support them.)  If you prefer time display
314 in 24-hour format, set the variable @code{display-time-24hr-format}
315 to @code{t}.
317 @cindex mail (on mode line)
318 @vindex display-time-use-mail-icon
319 @vindex display-time-mail-face
320   The word @samp{Mail} appears after the load level if there is mail
321 for you that you have not read yet.  On a graphical display you can use
322 an icon instead of @samp{Mail} by customizing
323 @code{display-time-use-mail-icon}; this may save some space on the mode
324 line.  You can customize @code{display-time-mail-face} to make the mail
325 indicator prominent.
327 @cindex mode line, 3D appearence
328 @cindex attributes of mode line, changing
329 @cindex non-integral number of lines in a window
330   By default, the mode line is drawn on graphics displays as a 3D
331 released button.  Depending on the font used for the mode line's text,
332 this might make the mode line use more space than a text line in a
333 window, and cause the last line of the window be partially obscured.
334 That is, the window displays a non-integral number of text lines.  If
335 you don't like this effect, you can disable the 3D appearence of the
336 mode line by customizing the attributes of the @code{mode-line} face in
337 your @file{.emacs} init file, like this:
339 @example
340  (set-face-attribute 'mode-line nil :box nil)
341 @end example
343 @noindent
344 Alternatively, you could turn off the box attribute in your
345 @file{.Xdefaults} file:
347 @example
348  Emacs.mode-line.AttributeBox: off
349 @end example
351 @node Text Display
352 @section How Text Is Displayed
353 @cindex characters (in text)
355   ASCII printing characters (octal codes 040 through 0176) in Emacs
356 buffers are displayed with their graphics.  So are non-ASCII multibyte
357 printing characters (octal codes above 0400).
359   Some ASCII control characters are displayed in special ways.  The
360 newline character (octal code 012) is displayed by starting a new line.
361 The tab character (octal code 011) is displayed by moving to the next
362 tab stop column (normally every 8 columns).
364   Other ASCII control characters are normally displayed as a caret
365 (@samp{^}) followed by the non-control version of the character; thus,
366 control-A is displayed as @samp{^A}.
368   Non-ASCII characters 0200 through 0237 (octal) are displayed with
369 octal escape sequences; thus, character code 0230 (octal) is displayed
370 as @samp{\230}.  The display of character codes 0240 through 0377
371 (octal) may be either as escape sequences or as graphics.  They do not
372 normally occur in multibyte buffers but if they do, they are displayed
373 as Latin-1 graphics.  In unibyte mode, if you enable European display
374 they are displayed using their graphics (assuming your terminal supports
375 them), otherwise as escape sequences.  @xref{Single-Byte Character
376 Support}.
378 @node Display Custom
379 @section Customization of Display
381   This section contains information for customization only.  Beginning
382 users should skip it.
384 @vindex mode-line-inverse-video
385   The variable @code{mode-line-inverse-video} is an obsolete way of
386 controlling whether the mode line is displayed in inverse video; the
387 preferred way of doing this is to change the @code{mode-line} face.
388 @xref{Mode Line}.  If you specify the foreground color for the
389 @code{mode-line} face, and @code{mode-line-inverse-video} is
390 non-@code{nil}, then the default background color for that face is the
391 usual foreground color.  @xref{Faces}.
393 @vindex inverse-video
394   If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
395 to invert all the lines of the display from what they normally are.
397 @vindex visible-bell
398   If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
399 to make the whole screen blink when it would normally make an audible bell
400 sound.  This variable has no effect if your terminal does not have a way
401 to make the screen blink.@refill
403 @vindex no-redraw-on-reenter
404   When you reenter Emacs after suspending, Emacs normally clears the
405 screen and redraws the entire display.  On some terminals with more than
406 one page of memory, it is possible to arrange the termcap entry so that
407 the @samp{ti} and @samp{te} strings (output to the terminal when Emacs
408 is entered and exited, respectively) switch between pages of memory so
409 as to use one page for Emacs and another page for other output.  Then
410 you might want to set the variable @code{no-redraw-on-reenter}
411 non-@code{nil}; this tells Emacs to assume, when resumed, that the
412 screen page it is using still contains what Emacs last wrote there.
414 @vindex echo-keystrokes
415   The variable @code{echo-keystrokes} controls the echoing of multi-character
416 keys; its value is the number of seconds of pause required to cause echoing
417 to start, or zero meaning don't echo at all.  @xref{Echo Area}.
419 @vindex ctl-arrow
420   If the variable @code{ctl-arrow} is @code{nil}, control characters in
421 the buffer are displayed with octal escape sequences, except for newline
422 and tab.  Altering the value of @code{ctl-arrow} makes it local to the
423 current buffer; until that time, the default value is in effect.  The
424 default is initially @code{t}.  @xref{Display Tables,, Display Tables,
425 elisp, The Emacs Lisp Reference Manual}.
427 @vindex tab-width
428   Normally, a tab character in the buffer is displayed as whitespace which
429 extends to the next display tab stop position, and display tab stops come
430 at intervals equal to eight spaces.  The number of spaces per tab is
431 controlled by the variable @code{tab-width}, which is made local by
432 changing it, just like @code{ctl-arrow}.  Note that how the tab character
433 in the buffer is displayed has nothing to do with the definition of
434 @key{TAB} as a command.  The variable @code{tab-width} must have an
435 integer value between 1 and 1000, inclusive.
437 @c @vindex truncate-lines  @c No index entry here, because we have one
438 @c in the continuation section.
439   If the variable @code{truncate-lines} is non-@code{nil}, then each
440 line of text gets just one screen line for display; if the text line is
441 too long, display shows only the part that fits.  If
442 @code{truncate-lines} is @code{nil}, then long text lines display as
443 more than one screen line, enough to show the whole text of the line.
444 @xref{Continuation Lines}.  Altering the value of @code{truncate-lines}
445 makes it local to the current buffer; until that time, the default value
446 is in effect.  The default is initially @code{nil}.
448 @c @vindex truncate-partial-width-windows  @c Idx entry is in Split Windows.
449   If the variable @code{truncate-partial-width-windows} is
450 non-@code{nil}, it forces truncation rather than continuation in any
451 window less than the full width of the screen or frame, regardless of
452 the value of @code{truncate-lines}.  For information about side-by-side
453 windows, see @ref{Split Window}.  See also @ref{Display,, Display,
454 elisp, The Emacs Lisp Reference Manual}.
456 @vindex baud-rate
457   The variable @code{baud-rate} holds the output speed of the
458 terminal, as far as Emacs knows.  Setting this variable does not
459 change the speed of actual data transmission, but the value is used
460 for calculations.  On terminals, it affects padding, and decisions
461 about whether to scroll part of the screen or redraw it instead.
463   On window-systems, @code{baud-rate} is only used to determine how
464 frequently to look for pending input during display updating.  A
465 higher value of @code{baud-rate} means that check for pending input
466 will be done less frequently.
468   You can customize the way any particular character code is displayed
469 by means of a display table.  @xref{Display Tables,, Display Tables,
470 elisp, The Emacs Lisp Reference Manual}.
472 @cindex hourglass pointer display
473 @vindex hourglass-delay
474   On a window system, Emacs can optionally display the mouse pointer
475 in a special shape to say that Emacs is busy.  To turn this feature on
476 or off, customize the group @code{cursor}.  You can also control the
477 amount of time Emacs must remain busy before the busy indicator is
478 displayed, by setting the variable @code{hourglass-delay}.
480 @node Cursor Display
481 @section Displaying the Cursor
483 @findex hl-line-mode
484 @findex blink-cursor-mode
485 @cindex cursor, locating visually
486 @cindex cursor, blinking
487   There are a number of ways to customize the display of the cursor.
488 @kbd{M-x hl-line-mode} enables or disables a global minor mode which
489 highlights the line containing point.  On window systems, the command
490 @kbd{M-x blink-cursor-mode} turns on or off the blinking of the
491 cursor.  (On terminals, the terminal itself blinks the cursor, and
492 Emacs has no control over it.)
494   You can customize the cursor's color, and whether it blinks, using
495 the @code{cursor} Custom group (@pxref{Easy Customization}).
497 @vindex x-stretch-cursor
498 @cindex wide block cursor
499   When displaying on a window system, Emacs can optionally draw the
500 block cursor as wide as the character under the cursor---for example,
501 if the cursor is on a tab character, it would cover the full width
502 occupied by that tab character.  To enable this feature, set the
503 variable @code{x-stretch-cursor} to a non-@code{nil} value.
505 @cindex cursor in non-selected windows
506 @vindex show-cursor-in-non-selected-windows
507 @vindex cursor-in-non-selected-windows
508   Normally, the cursor in non-selected windows is shown as a hollow box.
509 To turn off cursor display in non-selected windows, customize the option
510 @code{show-cursor-in-non-selected-windows}, or set the variable
511 @code{cursor-in-non-selected-windows} to @code{nil}.