]> code.delx.au - gnu-emacs/blob - man/display.texi
Fix typo.
[gnu-emacs] / man / display.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997, 2000, 2001
3 @c Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Display, Search, Registers, Top
6 @chapter Controlling the Display
7
8 Since only part of a large buffer fits in the window, Emacs tries to
9 show a part that is likely to be interesting. Display-control commands
10 allow you to specify which part of the text you want to see, and how to
11 display it.
12
13 @menu
14 * Faces:: How to change the display style using faces.
15 * Font Lock:: Minor mode for syntactic highlighting using faces.
16 * Highlight Changes:: Using colors to show where you changed the buffer.
17 * Highlight Interactively:: Tell Emacs what text to highlight.
18 * Trailing Whitespace:: Showing possibly-spurious trailing whitespace.
19 * Scrolling:: Moving text up and down in a window.
20 * Horizontal Scrolling:: Moving text left and right in a window.
21 * Follow Mode:: Follow mode lets two windows scroll as one.
22 * Selective Display:: Hiding lines with lots of indentation.
23 * Optional Mode Line:: Optional mode line display features.
24 * Text Display:: How text characters are normally displayed.
25 * Display Custom:: Information on variables for customizing display.
26 * Cursor Display:: Features for displaying the cursor.
27 @end menu
28
29 @node Faces
30 @section Using Multiple Typefaces
31 @cindex faces
32
33 Emacs supports using multiple styles of displaying characters. Each
34 style is called a @dfn{face}. Each face can specify various @dfn{face
35 attributes}, such as the font family, the height, weight and slant of
36 the characters, the foreground and background color, and underlining
37 or overlining. A face does not have to specify all of these
38 attributes; often it inherits many of them from another face.
39
40 On a window system, all the Emacs face attributes are meaningful.
41 On a character terminal, only some of them work. Some character
42 terminals support inverse video, bold, and underline attributes; some
43 support colors. Character terminals generally do not support changing
44 the height and width or the font family.
45
46 Features which rely on text in multiple faces (such as Font Lock mode)
47 will also work on non-windowed terminals that can display more than one
48 face, whether by colors or underlining and emboldening. This includes
49 the console on GNU/Linux, an @code{xterm} which supports colors, the
50 MS-DOS display (@pxref{MS-DOS}), and the MS-Windows version invoked with
51 the @option{-nw} option. Emacs determines automatically whether the
52 terminal has this capability.
53
54 You control the appearance of a part of the text in the buffer by
55 specifying the face or faces to use for it. The style of display used
56 for any given character is determined by combining the attributes of
57 all the applicable faces specified for that character. Any attribute
58 that isn't specified by these faces is taken from the @code{default} face,
59 whose attributes reflect the default settings of the frame itself.
60
61 Enriched mode, the mode for editing formatted text, includes several
62 commands and menus for specifying faces for text in the buffer.
63 @xref{Format Faces}, for how to specify the font for text in the
64 buffer. @xref{Format Colors}, for how to specify the foreground and
65 background color.
66
67 @cindex face colors, setting
68 @findex set-face-foreground
69 @findex set-face-background
70 To alter the appearance of a face, use the customization buffer.
71 @xref{Face Customization}. You can also use X resources to specify
72 attributes of particular faces (@pxref{Resources}). Alternatively,
73 you can change the foreground and background colors of a specific face
74 with @kbd{M-x set-face-foreground} and @kbd{M-x set-face-background}.
75 These commands prompt in the minibuffer for a face name and a color
76 name, with completion, and then set that face to use the specified
77 color. Changing the colors of the @code{default} face also changes
78 the foreground and background colors on all frames, both existing and
79 those to be created in the future. (You can also set foreground and
80 background colors for the current frame only; see @ref{Frame
81 Parameters}.)
82
83 Emacs 21 can correctly display variable-width fonts, but Emacs
84 commands that calculate width and indentation do not know how to
85 calculate variable widths. This can sometimes lead to incorrect
86 results when you use variable-width fonts. In particular, indentation
87 commands can give inconsistent results, so we recommend you avoid
88 variable-width fonts for editing program source code. Filling will
89 sometimes make lines too long or too short. We plan to address these
90 issues in future Emacs versions.
91
92 @findex list-faces-display
93 To see what faces are currently defined, and what they look like, type
94 @kbd{M-x list-faces-display}. It's possible for a given face to look
95 different in different frames; this command shows the appearance in the
96 frame in which you type it. Here's a list of the standard defined
97 faces:
98
99 @table @code
100 @item default
101 This face is used for ordinary text that doesn't specify any other face.
102 @item mode-line
103 This face is used for mode lines. By default, it's drawn with shadows
104 for a ``raised'' effect on window systems, and drawn as the inverse of
105 the default face on non-windowed terminals. @xref{Display Custom}.
106 @item header-line
107 Similar to @code{mode-line} for a window's header line. Most modes
108 don't use the header line, but the Info mode does.
109 @item minibuffer-prompt
110 This face is used for the prompt strings displayed in the minibuffer.
111 @item highlight
112 This face is used for highlighting portions of text, in various modes.
113 For example, mouse-sensitive text is highlighted using this face.
114 @item isearch
115 This face is used for highlighting Isearch matches.
116 @item isearch-lazy-highlight-face
117 This face is used for lazy highlighting of Isearch matches other than
118 the current one.
119 @item region
120 This face is used for displaying a selected region (when Transient Mark
121 mode is enabled---see below).
122 @item secondary-selection
123 This face is used for displaying a secondary X selection (@pxref{Secondary
124 Selection}).
125 @item bold
126 This face uses a bold variant of the default font, if it has one.
127 @item italic
128 This face uses an italic variant of the default font, if it has one.
129 @item bold-italic
130 This face uses a bold italic variant of the default font, if it has one.
131 @item underline
132 This face underlines text.
133 @item fixed-pitch
134 The basic fixed-pitch face.
135 @item fringe
136 @cindex fringe
137 The face for the fringes to the left and right of windows on graphic
138 displays. (The fringes are the narrow portions of the Emacs frame
139 between the text area and the window's right and left borders.)
140 @item scroll-bar
141 This face determines the visual appearance of the scroll bar.
142 @item border
143 This face determines the color of the frame border.
144 @item cursor
145 This face determines the color of the cursor.
146 @item mouse
147 This face determines the color of the mouse pointer.
148 @item tool-bar
149 This is the basic tool-bar face. No text appears in the tool bar, but the
150 colors of this face affect the appearance of tool bar icons.
151 @item tooltip
152 This face is used for tooltips.
153 @item menu
154 This face determines the colors and font of Emacs's menus. Setting the
155 font of LessTif/Motif menus is currently not supported; attempts to set
156 the font are ignored in this case.
157 @item trailing-whitespace
158 The face for highlighting trailing whitespace when
159 @code{show-trailing-whitespace} is non-nil; see @ref{Trailing Whitespace}.
160 @item variable-pitch
161 The basic variable-pitch face.
162 @end table
163
164 @cindex @code{region} face
165 When Transient Mark mode is enabled, the text of the region is
166 highlighted when the mark is active. This uses the face named
167 @code{region}; you can control the style of highlighting by changing the
168 style of this face (@pxref{Face Customization}). @xref{Transient Mark},
169 for more information about Transient Mark mode and activation and
170 deactivation of the mark.
171
172 One easy way to use faces is to turn on Font Lock mode. This minor
173 mode, which is always local to a particular buffer, arranges to
174 choose faces according to the syntax of the text you are editing. It
175 can recognize comments and strings in most languages; in several
176 languages, it can also recognize and properly highlight various other
177 important constructs. @xref{Font Lock}, for more information about
178 Font Lock mode and syntactic highlighting.
179
180 You can print out the buffer with the highlighting that appears
181 on your screen using the command @code{ps-print-buffer-with-faces}.
182 @xref{PostScript}.
183
184 @node Font Lock
185 @section Font Lock mode
186 @cindex Font Lock mode
187 @cindex mode, Font Lock
188 @cindex syntax highlighting and coloring
189
190 Font Lock mode is a minor mode, always local to a particular
191 buffer, which highlights (or ``fontifies'') using various faces
192 according to the syntax of the text you are editing. It can
193 recognize comments and strings in most languages; in several
194 languages, it can also recognize and properly highlight various other
195 important constructs---for example, names of functions being defined
196 or reserved keywords.
197
198 @findex font-lock-mode
199 @findex turn-on-font-lock
200 The command @kbd{M-x font-lock-mode} turns Font Lock mode on or off
201 according to the argument, and toggles the mode when it has no argument.
202 The function @code{turn-on-font-lock} unconditionally enables Font Lock
203 mode. This is useful in mode-hook functions. For example, to enable
204 Font Lock mode whenever you edit a C file, you can do this:
205
206 @example
207 (add-hook 'c-mode-hook 'turn-on-font-lock)
208 @end example
209
210 @findex global-font-lock-mode
211 @vindex global-font-lock-mode
212 To turn on Font Lock mode automatically in all modes which support
213 it, customize the user option @code{global-font-lock-mode} or use the
214 function @code{global-font-lock-mode} in your @file{.emacs} file, like
215 this:
216
217 @example
218 (global-font-lock-mode 1)
219 @end example
220
221 Font Lock mode uses several specifically named faces to do its job,
222 including @code{font-lock-string-face}, @code{font-lock-comment-face},
223 and others. The easiest way to find them all is to use completion
224 on the face name in @code{set-face-foreground}.
225
226 To change the colors or the fonts used by Font Lock mode to fontify
227 different parts of text, just change these faces. There are
228 two ways to do it:
229
230 @itemize @bullet
231 @item
232 Invoke @kbd{M-x set-face-foreground} or @kbd{M-x set-face-background}
233 to change the colors of a particular face used by Font Lock.
234 @xref{Faces}. The command @kbd{M-x list-faces-display} displays all
235 the faces currently known to Emacs, including those used by Font Lock.
236
237 @item
238 Customize the faces interactively with @kbd{M-x customize-face}, as
239 described in @ref{Face Customization}.
240 @end itemize
241
242 To get the full benefit of Font Lock mode, you need to choose a
243 default font which has bold, italic, and bold-italic variants; or else
244 you need to have a color or gray-scale screen.
245
246 @vindex font-lock-maximum-decoration
247 The variable @code{font-lock-maximum-decoration} specifies the
248 preferred level of fontification, for modes that provide multiple
249 levels. Level 1 is the least amount of fontification; some modes
250 support levels as high as 3. The normal default is ``as high as
251 possible.'' You can specify an integer, which applies to all modes, or
252 you can specify different numbers for particular major modes; for
253 example, to use level 1 for C/C++ modes, and the default level
254 otherwise, use this:
255
256 @example
257 (setq font-lock-maximum-decoration
258 '((c-mode . 1) (c++-mode . 1)))
259 @end example
260
261 @vindex font-lock-maximum-size
262 Fontification can be too slow for large buffers, so you can suppress
263 it. The variable @code{font-lock-maximum-size} specifies a buffer size,
264 beyond which buffer fontification is suppressed.
265
266 @c @w is used below to prevent a bad page-break.
267 @vindex font-lock-beginning-of-syntax-function
268 @cindex incorrect fontification
269 @cindex parenthesis in column zero and fontification
270 @cindex brace in column zero and fontification
271 Comment and string fontification (or ``syntactic'' fontification)
272 relies on analysis of the syntactic structure of the buffer text. For
273 the sake of speed, some modes, including C mode and Lisp mode,
274 rely on a special convention: an open-parenthesis or open-brace in the
275 leftmost column always defines the @w{beginning} of a defun, and is
276 thus always outside any string or comment. (@xref{Left Margin
277 Paren}.) If you don't follow this convention, Font Lock mode can
278 misfontify the text that follows an open-parenthesis or open-brace in
279 the leftmost column that is inside a string or comment.
280
281 @cindex slow display during scrolling
282 The variable @code{font-lock-beginning-of-syntax-function} (always
283 buffer-local) specifies how Font Lock mode can find a position
284 guaranteed to be outside any comment or string. In modes which use the
285 leftmost column parenthesis convention, the default value of the variable
286 is @code{beginning-of-defun}---that tells Font Lock mode to use the
287 convention. If you set this variable to @code{nil}, Font Lock no longer
288 relies on the convention. This avoids incorrect results, but the price
289 is that, in some cases, fontification for a changed text must rescan
290 buffer text from the beginning of the buffer. This can considerably
291 slow down redisplay while scrolling, particularly if you are close to
292 the end of a large buffer.
293
294 @findex font-lock-add-keywords
295 Font Lock highlighting patterns already exist for many modes, but you
296 may want to fontify additional patterns. You can use the function
297 @code{font-lock-add-keywords}, to add your own highlighting patterns for
298 a particular mode. For example, to highlight @samp{FIXME:} words in C
299 comments, use this:
300
301 @example
302 (font-lock-add-keywords
303 'c-mode
304 '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))
305 @end example
306
307 @findex font-lock-remove-keywords
308 To remove keywords from the font-lock highlighting patterns, use the
309 function @code{font-lock-remove-keywords}.
310
311 @cindex just-in-time (JIT) font-lock
312 @cindex background syntax highlighting
313 Fontifying large buffers can take a long time. To avoid large
314 delays when a file is visited, Emacs fontifies only the visible
315 portion of a buffer. As you scroll through the buffer, each portion
316 that becomes visible is fontified as soon as it is displayed. The
317 parts of the buffer that are not displayed are fontified
318 ``stealthily'', in the background, i.e.@: when Emacs is idle. You can
319 control this background fontification, called @dfn{Just-In-Time}, or
320 @dfn{JIT} Font Lock, by customizing various options in the
321 customization group @samp{jit-lock}. @xref{Specific Customization}.
322
323 @node Highlight Changes
324 @section Highlight Changes Mode
325
326 @findex highlight-changes-mode
327 Use @kbd{M-x highlight-changes-mode} to enable a minor mode
328 that uses faces (colors, typically) to indicate which parts of
329 the buffer were changed most recently.
330
331 @node Highlight Interactively
332 @section Interactive Highlighting by Matching
333 @cindex highlighting by matching
334 @cindex interactive highlighting
335
336 It is sometimes useful to highlight the strings that match a certain
337 regular expression. For example, you might wish to see all the
338 references to a certain variable in a program source file, or highlight
339 certain parts in a voluminous output of some program, or make certain
340 cliches stand out in an article.
341
342 @findex hi-lock-mode
343 Use the @kbd{M-x hi-lock-mode} command to turn on a minor mode that
344 allows you to specify regular expressions of the text to be
345 highlighted. Hi-lock mode works like Font Lock (@pxref{Font Lock}),
346 except that it lets you specify explicitly what parts of text to
347 highlight. You control Hi-lock mode with these commands:
348
349 @table @kbd
350 @item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
351 @kindex C-x w h
352 @findex highlight-regexp
353 Highlight text that matches
354 @var{regexp} using face @var{face} (@code{highlight-regexp}).
355 By using this command more than once, you can highlight various
356 parts of the text in different ways.
357
358 @item C-x w r @var{regexp} @key{RET}
359 @kindex C-x w r
360 @findex unhighlight-regexp
361 Unhighlight @var{regexp} (@code{unhighlight-regexp}). You must enter
362 one of the regular expressions currently specified for highlighting.
363 (You can use completion, or choose from a menu, to enter one of them
364 conveniently.)
365
366 @item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
367 @kindex C-x w l
368 @findex highlight-lines-matching-regexp
369 @cindex lines, highlighting
370 @cindex highlighting lines of text
371 Highlight entire lines containing a match for @var{regexp}, using face
372 @var{face} (@code{highlight-lines-matching-regexp}).
373
374 @item C-x w b
375 @kindex C-x w b
376 @findex hi-lock-write-interactive-patterns
377 Insert all the current highlighting regexp/face pairs into the buffer
378 at point, with comment delimiters to prevent them from changing your
379 program. This key binding runs the
380 @code{hi-lock-write-interactive-patterns} command.
381
382 These patterns will be read the next time you visit the file while
383 Hi-lock mode is enabled, or whenever you use the @kbd{M-x
384 hi-lock-find-patterns} command.
385
386 @item C-x w i
387 @kindex C-x w i
388 @findex hi-lock-find-patterns
389 @vindex hi-lock-exclude-modes
390 Re-read regexp/face pairs in the current buffer
391 (@code{hi-lock-write-interactive-patterns}). The list of pairs is
392 found no matter where in the buffer it may be.
393
394 This command does nothing if the major mode is a member of the list
395 @code{hi-lock-exclude-modes}.
396 @end table
397
398 @node Trailing Whitespace
399 @section Trailing Whitespace
400
401 @cindex trailing whitespace
402 @cindex whitespace, trailing
403 @vindex show-trailing-whitespace
404 It is easy to leave unnecessary spaces at the end of a line without
405 realizing it. In most cases, this @dfn{trailing whitespace} has no
406 effect, but there are special circumstances where it matters.
407
408 You can make trailing whitespace visible on the screen by setting the
409 buffer-local variable @code{show-trailing-whitespace} to @code{t}. Then
410 Emacs displays trailing whitespace in the face
411 @code{trailing-whitespace}.
412
413 Trailing whitespace is defined as spaces or tabs at the end of a
414 line. But trailing whitespace is not displayed specially if point is
415 at the end of the line containing the whitespace. (Doing that looks
416 ugly while you are typing in new text, and the location of point is
417 enough in that case to show you that the spaces are present.)
418
419 @findex delete-trailing-whitespace
420 To delete all trailing whitespace within the current buffer's
421 restriction (@pxref{Narrowing}), type @kbd{M-x
422 delete-trailing-whitespace @key{RET}}. (This command does not remove
423 the form-feed characters.)
424
425 @vindex indicate-empty-lines
426 @vindex default-indicate-empty-lines
427 @cindex empty lines
428 @cindex fringes, and empty line indication
429 Emacs can indicate empty lines at the end of the buffer with a
430 special bitmap on the left fringe of the window. To enable this
431 feature, set the buffer-local variable @code{indicate-empty-lines} to
432 a non-@code{nil} value. The default value of this variable is
433 controlled by the variable @code{default-indicate-empty-lines};
434 by setting that variable, you can enable or disable this feature
435 for all new buffers. (This feature currently doesn't work on
436 character terminals.)
437
438 @node Scrolling
439 @section Scrolling
440
441 If a buffer contains text that is too large to fit entirely within a
442 window that is displaying the buffer, Emacs shows a contiguous portion of
443 the text. The portion shown always contains point.
444
445 @cindex scrolling
446 @dfn{Scrolling} means moving text up or down in the window so that
447 different parts of the text are visible. Scrolling forward means that text
448 moves up, and new text appears at the bottom. Scrolling backward moves
449 text down and new text appears at the top.
450
451 Scrolling happens automatically if you move point past the bottom or top
452 of the window. You can also explicitly request scrolling with the commands
453 in this section.
454
455 @table @kbd
456 @item C-l
457 Clear screen and redisplay, scrolling the selected window to center
458 point vertically within it (@code{recenter}).
459 @item C-v
460 Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
461 @item @key{NEXT}
462 @itemx @key{PAGEDOWN}
463 Likewise, scroll forward.
464 @item M-v
465 Scroll backward (@code{scroll-down}).
466 @item @key{PRIOR}
467 @itemx @key{PAGEUP}
468 Likewise, scroll backward.
469 @item @var{arg} C-l
470 Scroll so point is on line @var{arg} (@code{recenter}).
471 @item C-M-l
472 Scroll heuristically to bring useful information onto the screen
473 (@code{reposition-window}).
474 @end table
475
476 @kindex C-l
477 @findex recenter
478 The most basic scrolling command is @kbd{C-l} (@code{recenter}) with
479 no argument. It clears the entire screen and redisplays all windows.
480 In addition, it scrolls the selected window so that point is halfway
481 down from the top of the window.
482
483 @kindex C-v
484 @kindex M-v
485 @kindex NEXT
486 @kindex PRIOR
487 @kindex PAGEDOWN
488 @kindex PAGEUP
489 @findex scroll-up
490 @findex scroll-down
491 @vindex next-screen-context-lines
492 To read the buffer a windowful at a time, use @kbd{C-v}
493 (@code{scroll-up}) with no argument. This scrolls forward by nearly
494 the whole window height. The effect is to take the two lines at the
495 bottom of the window and put them at the top, followed by nearly a
496 whole windowful of lines that were not previously visible. If point
497 was in the text that scrolled off the top, it ends up at the new top
498 of the window.
499
500 @kbd{M-v} (@code{scroll-down}) with no argument scrolls backward in
501 a similar way, also with overlap. The number of lines of overlap
502 across a @kbd{C-v} or @kbd{M-v} is controlled by the variable
503 @code{next-screen-context-lines}; by default, it is 2. The function
504 keys @key{NEXT} and @key{PRIOR}, or @key{PAGEDOWN} and @key{PAGEUP},
505 are equivalent to @kbd{C-v} and @kbd{M-v}.
506
507 The commands @kbd{C-v} and @kbd{M-v} with a numeric argument scroll
508 the text in the selected window up or down a few lines. @kbd{C-v}
509 with an argument moves the text and point up, together, that many
510 lines; it brings the same number of new lines into view at the bottom
511 of the window. @kbd{M-v} with numeric argument scrolls the text
512 downward, bringing that many new lines into view at the top of the
513 window. @kbd{C-v} with a negative argument is like @kbd{M-v} and vice
514 versa.
515
516 The names of scroll commands are based on the direction that the
517 text moves in the window. Thus, the command to scroll forward is
518 called @code{scroll-up} because it moves the text upward on the
519 screen. The keys @key{PAGEDOWN} and @key{PAGEUP} derive their names
520 and customary meanings from a different convention that developed
521 elsewhere; hence the strange result that @key{PAGEDOWN} runs
522 @code{scroll-up}.
523
524 @vindex scroll-preserve-screen-position
525 Some users like the full-screen scroll commands to keep point at the
526 same screen line. To enable this behavior, set the variable
527 @code{scroll-preserve-screen-position} to a non-@code{nil} value. This
528 mode is convenient for browsing through a file by scrolling by
529 screenfuls; if you come back to the screen where you started, point goes
530 back to the line where it started. However, this mode is inconvenient
531 when you move to the next screen in order to move point to the text
532 there.
533
534 Another way to do scrolling is with @kbd{C-l} with a numeric argument.
535 @kbd{C-l} does not clear the screen when given an argument; it only scrolls
536 the selected window. With a positive argument @var{n}, it repositions text
537 to put point @var{n} lines down from the top. An argument of zero puts
538 point on the very top line. Point does not move with respect to the text;
539 rather, the text and point move rigidly on the screen. @kbd{C-l} with a
540 negative argument puts point that many lines from the bottom of the window.
541 For example, @kbd{C-u - 1 C-l} puts point on the bottom line, and @kbd{C-u
542 - 5 C-l} puts it five lines from the bottom. @kbd{C-u C-l} scrolls to put
543 point at the center (vertically) of the selected window.
544
545 @kindex C-M-l
546 @findex reposition-window
547 The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current
548 window heuristically in a way designed to get useful information onto
549 the screen. For example, in a Lisp file, this command tries to get the
550 entire current defun onto the screen if possible.
551
552 @vindex scroll-conservatively
553 Scrolling happens automatically when point moves out of the visible
554 portion of the text. Normally, automatic scrolling centers point
555 vertically within the window. However, if you set
556 @code{scroll-conservatively} to a small number @var{n}, then if you
557 move point just a little off the screen---less than @var{n}
558 lines---then Emacs scrolls the text just far enough to bring point
559 back on screen. By default, @code{scroll-conservatively} is 0.
560
561 @cindex aggressive scrolling
562 @vindex scroll-up-aggressively
563 @vindex scroll-down-aggressively
564 When the window does scroll by a longer distance, you can control
565 how aggressively it scrolls, by setting the variables
566 @code{scroll-up-aggressively} and @code{scroll-down-aggressively}.
567 The value of @code{scroll-up-aggressively} should be either
568 @code{nil}, or a fraction @var{f} between 0 and 1. A fraction
569 specifies where on the screen to put point when scrolling upward.
570 More precisely, when a window scrolls up because point is above the
571 window start, the new start position is chosen to put point @var{f}
572 part of the window height from the top. The larger @var{f}, the more
573 aggressive the scrolling.
574
575 @code{nil}, which is the default, scrolls to put point at the center.
576 So it is equivalent to .5.
577
578 Likewise, @code{scroll-down-aggressively} is used for scrolling
579 down. The value, @var{f}, specifies how far point should be placed
580 from the bottom of the window; thus, as with
581 @code{scroll-up-aggressively}, a larger value is more aggressive.
582
583 @vindex scroll-margin
584 The variable @code{scroll-margin} restricts how close point can come
585 to the top or bottom of a window. Its value is a number of screen
586 lines; if point comes within that many lines of the top or bottom of the
587 window, Emacs recenters the window. By default, @code{scroll-margin} is
588 0.
589
590 @node Horizontal Scrolling
591 @section Horizontal Scrolling
592 @cindex horizontal scrolling
593
594 @dfn{Horizontal scrolling} means shifting all the lines sideways
595 within a window---so that some of the text near the left margin is not
596 displayed at all. Emacs does this automatically in any window that
597 uses line truncation rather than continuation: whenever point moves
598 off the left or right edge of the screen, Emacs scrolls the buffer
599 horizontally to make point visible.
600
601 When a window has been scrolled horizontally, text lines are truncated
602 rather than continued (@pxref{Continuation Lines}), with a @samp{$}
603 appearing in the first column when there is text truncated to the left,
604 and in the last column when there is text truncated to the right.
605
606 You can use these commands to do explicit horizontal scrolling.
607
608 @table @kbd
609 @item C-x <
610 Scroll text in current window to the left (@code{scroll-left}).
611 @item C-x >
612 Scroll to the right (@code{scroll-right}).
613 @end table
614
615 @kindex C-x <
616 @kindex C-x >
617 @findex scroll-left
618 @findex scroll-right
619 The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
620 window to the left by @var{n} columns with argument @var{n}. This moves
621 part of the beginning of each line off the left edge of the window.
622 With no argument, it scrolls by almost the full width of the window (two
623 columns less, to be precise).
624
625 @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right. The
626 window cannot be scrolled any farther to the right once it is displayed
627 normally (with each line starting at the window's left margin);
628 attempting to do so has no effect. This means that you don't have to
629 calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large
630 argument will restore the normal display.
631
632 If you scroll a window horizontally by hand, that sets a lower bound
633 for automatic horizontal scrolling. Automatic scrolling will continue
634 to scroll the window, but never farther to the right than the amount
635 you previously set by @code{scroll-left}.
636
637 @vindex automatic-hscrolling
638 To disable automatic horizontal scrolling, set the variable
639 @code{automatic-hscrolling} to @code{nil}.
640
641 @node Follow Mode
642 @section Follow Mode
643 @cindex Follow mode
644 @cindex mode, Follow
645 @findex follow-mode
646 @cindex windows, synchronizing
647 @cindex synchronizing windows
648
649 @dfn{Follow mode} is a minor mode that makes two windows showing the
650 same buffer scroll as one tall ``virtual window.'' To use Follow mode,
651 go to a frame with just one window, split it into two side-by-side
652 windows using @kbd{C-x 3}, and then type @kbd{M-x follow-mode}. From
653 then on, you can edit the buffer in either of the two windows, or scroll
654 either one; the other window follows it.
655
656 In Follow mode, if you move point outside the portion visible in one
657 window and into the portion visible in the other window, that selects
658 the other window---again, treating the two as if they were parts of
659 one large window.
660
661 To turn off Follow mode, type @kbd{M-x follow-mode} a second time.
662
663 @node Selective Display
664 @section Selective Display
665 @cindex selective display
666 @findex set-selective-display
667 @kindex C-x $
668
669 Emacs has the ability to hide lines indented more than a certain number
670 of columns (you specify how many columns). You can use this to get an
671 overview of a part of a program.
672
673 To hide lines, type @kbd{C-x $} (@code{set-selective-display}) with a
674 numeric argument @var{n}. Then lines with at least @var{n} columns of
675 indentation disappear from the screen. The only indication of their
676 presence is that three dots (@samp{@dots{}}) appear at the end of each
677 visible line that is followed by one or more hidden ones.
678
679 The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as
680 if they were not there.
681
682 The hidden lines are still present in the buffer, and most editing
683 commands see them as usual, so you may find point in the middle of the
684 hidden text. When this happens, the cursor appears at the end of the
685 previous line, after the three dots. If point is at the end of the
686 visible line, before the newline that ends it, the cursor appears before
687 the three dots.
688
689 To make all lines visible again, type @kbd{C-x $} with no argument.
690
691 @vindex selective-display-ellipses
692 If you set the variable @code{selective-display-ellipses} to
693 @code{nil}, the three dots do not appear at the end of a line that
694 precedes hidden lines. Then there is no visible indication of the
695 hidden lines. This variable becomes local automatically when set.
696
697 @node Optional Mode Line
698 @section Optional Mode Line Features
699
700 @cindex line number display
701 @cindex display of line number
702 @findex line-number-mode
703 The current line number of point appears in the mode line when Line
704 Number mode is enabled. Use the command @kbd{M-x line-number-mode} to
705 turn this mode on and off; normally it is on. The line number appears
706 before the buffer percentage @var{pos}, with the letter @samp{L} to
707 indicate what it is. @xref{Minor Modes}, for more information about
708 minor modes and about how to use this command.
709
710 @cindex narrowing, and line number display
711 If you have narrowed the buffer (@pxref{Narrowing}), the displayed
712 line number is relative to the accessible portion of the buffer.
713
714 @vindex line-number-display-limit
715 If the buffer is very large (larger than the value of
716 @code{line-number-display-limit}), then the line number doesn't appear.
717 Emacs doesn't compute the line number when the buffer is large, because
718 that would be too slow. Set it to @code{nil} to remove the limit.
719
720 @vindex line-number-display-limit-width
721 Line-number computation can also be slow if the lines in the buffer
722 are too long. For this reason, Emacs normally doesn't display line
723 numbers if the average width, in characters, of lines near point is
724 larger than the value of the variable
725 @code{line-number-display-limit-width}. The default value is 200
726 characters.
727
728 @cindex Column Number mode
729 @cindex mode, Column Number
730 @findex column-number-mode
731 You can also display the current column number by turning on Column
732 Number mode. It displays the current column number preceded by the
733 letter @samp{C}. Type @kbd{M-x column-number-mode} to toggle this mode.
734
735 @findex display-time
736 @cindex time (on mode line)
737 Emacs can optionally display the time and system load in all mode
738 lines. To enable this feature, type @kbd{M-x display-time} or customize
739 the option @code{display-time-mode}. The information added to the mode
740 line usually appears after the buffer name, before the mode names and
741 their parentheses. It looks like this:
742
743 @example
744 @var{hh}:@var{mm}pm @var{l.ll}
745 @end example
746
747 @noindent
748 @vindex display-time-24hr-format
749 Here @var{hh} and @var{mm} are the hour and minute, followed always by
750 @samp{am} or @samp{pm}. @var{l.ll} is the average number of running
751 processes in the whole system recently. (Some fields may be missing if
752 your operating system cannot support them.) If you prefer time display
753 in 24-hour format, set the variable @code{display-time-24hr-format}
754 to @code{t}.
755
756 @cindex mail (on mode line)
757 @vindex display-time-use-mail-icon
758 @vindex display-time-mail-face
759 The word @samp{Mail} appears after the load level if there is mail
760 for you that you have not read yet. On a graphical display you can use
761 an icon instead of @samp{Mail} by customizing
762 @code{display-time-use-mail-icon}; this may save some space on the mode
763 line. You can customize @code{display-time-mail-face} to make the mail
764 indicator prominent.
765
766 @cindex mode line, 3D appearance
767 @cindex attributes of mode line, changing
768 @cindex non-integral number of lines in a window
769 By default, the mode line is drawn on graphics displays with
770 3D-style highlighting, like that of a button when it is not being
771 pressed. If you don't like this effect, you can disable the 3D
772 highlighting of the mode line, by customizing the attributes of the
773 @code{mode-line} face in your @file{.emacs} init file, like this:
774
775 @example
776 (set-face-attribute 'mode-line nil :box nil)
777 @end example
778
779 @noindent
780 Alternatively, you can turn off the box attribute in your
781 @file{.Xdefaults} file:
782
783 @example
784 Emacs.mode-line.AttributeBox: off
785 @end example
786
787 @node Text Display
788 @section How Text Is Displayed
789 @cindex characters (in text)
790
791 ASCII printing characters (octal codes 040 through 0176) in Emacs
792 buffers are displayed with their graphics, as are non-ASCII multibyte
793 printing characters (octal codes above 0400).
794
795 Some ASCII control characters are displayed in special ways. The
796 newline character (octal code 012) is displayed by starting a new line.
797 The tab character (octal code 011) is displayed by moving to the next
798 tab stop column (normally every 8 columns).
799
800 Other ASCII control characters are normally displayed as a caret
801 (@samp{^}) followed by the non-control version of the character; thus,
802 control-A is displayed as @samp{^A}.
803
804 Non-ASCII characters 0200 through 0237 (octal) are displayed with
805 octal escape sequences; thus, character code 0230 (octal) is displayed
806 as @samp{\230}. The display of character codes 0240 through 0377
807 (octal) may be either as escape sequences or as graphics. They do not
808 normally occur in multibyte buffers, but if they do, they are displayed
809 as Latin-1 graphics. In unibyte mode, if you enable European display
810 they are displayed using their graphics (assuming your terminal supports
811 them), otherwise as escape sequences. @xref{Single-Byte Character
812 Support}.
813
814 @node Display Custom
815 @section Customization of Display
816
817 This section contains information for customization only. Beginning
818 users should skip it.
819
820 @vindex mode-line-inverse-video
821 The variable @code{mode-line-inverse-video} is an obsolete way of
822 controlling whether the mode line is displayed in inverse video; the
823 preferred way of doing this is to change the @code{mode-line} face.
824 @xref{Mode Line}. However, if @code{mode-line-inverse-video} has a
825 value of @code{nil}, then the @code{mode-line} face will be ignored,
826 and mode-lines will be drawn using the default text face.
827 @xref{Faces}.
828
829 @vindex inverse-video
830 If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
831 to invert all the lines of the display from what they normally are.
832
833 @vindex visible-bell
834 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
835 to make the whole screen blink when it would normally make an audible bell
836 sound. This variable has no effect if your terminal does not have a way
837 to make the screen blink.@refill
838
839 @vindex no-redraw-on-reenter
840 When you reenter Emacs after suspending, Emacs normally clears the
841 screen and redraws the entire display. On some terminals with more than
842 one page of memory, it is possible to arrange the termcap entry so that
843 the @samp{ti} and @samp{te} strings (output to the terminal when Emacs
844 is entered and exited, respectively) switch between pages of memory so
845 as to use one page for Emacs and another page for other output. Then
846 you might want to set the variable @code{no-redraw-on-reenter}
847 non-@code{nil}; this tells Emacs to assume, when resumed, that the
848 screen page it is using still contains what Emacs last wrote there.
849
850 @vindex echo-keystrokes
851 The variable @code{echo-keystrokes} controls the echoing of multi-character
852 keys; its value is the number of seconds of pause required to cause echoing
853 to start, or zero meaning don't echo at all. @xref{Echo Area}.
854
855 @vindex ctl-arrow
856 If the variable @code{ctl-arrow} is @code{nil}, all control characters in
857 the buffer are displayed with octal escape sequences, except for newline
858 and tab. Altering the value of @code{ctl-arrow} makes it local to the
859 current buffer; until that time, the default value is in effect. The
860 default is initially @code{t}. @xref{Display Tables,, Display Tables,
861 elisp, The Emacs Lisp Reference Manual}.
862
863 @vindex tab-width
864 Normally, a tab character in the buffer is displayed as whitespace which
865 extends to the next display tab stop position, and display tab stops come
866 at intervals equal to eight spaces. The number of spaces per tab is
867 controlled by the variable @code{tab-width}, which is made local by
868 changing it, just like @code{ctl-arrow}. Note that how the tab character
869 in the buffer is displayed has nothing to do with the definition of
870 @key{TAB} as a command. The variable @code{tab-width} must have an
871 integer value between 1 and 1000, inclusive.
872
873 @c @vindex truncate-lines @c No index entry here, because we have one
874 @c in the continuation section.
875 If the variable @code{truncate-lines} is non-@code{nil}, then each
876 line of text gets just one screen line for display; if the text line is
877 too long, display shows only the part that fits. If
878 @code{truncate-lines} is @code{nil}, then long text lines display as
879 more than one screen line, enough to show the whole text of the line.
880 @xref{Continuation Lines}. Altering the value of @code{truncate-lines}
881 makes it local to the current buffer; until that time, the default value
882 is in effect. The default is initially @code{nil}.
883
884 @c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows.
885 If the variable @code{truncate-partial-width-windows} is
886 non-@code{nil}, it forces truncation rather than continuation in any
887 window less than the full width of the screen or frame, regardless of
888 the value of @code{truncate-lines}. For information about side-by-side
889 windows, see @ref{Split Window}. See also @ref{Display,, Display,
890 elisp, The Emacs Lisp Reference Manual}.
891
892 @vindex baud-rate
893 The variable @code{baud-rate} holds the output speed of the
894 terminal, as far as Emacs knows. Setting this variable does not
895 change the speed of actual data transmission, but the value is used
896 for calculations. On terminals, it affects padding, and decisions
897 about whether to scroll part of the screen or redraw it instead.
898 It also affects the behavior of incremental search.
899
900 On window-systems, @code{baud-rate} is only used to determine how
901 frequently to look for pending input during display updating. A
902 higher value of @code{baud-rate} means that check for pending input
903 will be done less frequently.
904
905 You can customize the way any particular character code is displayed
906 by means of a display table. @xref{Display Tables,, Display Tables,
907 elisp, The Emacs Lisp Reference Manual}.
908
909 @cindex hourglass pointer display
910 @vindex hourglass-delay
911 On a window system, Emacs can optionally display the mouse pointer
912 in a special shape to say that Emacs is busy. To turn this feature on
913 or off, customize the group @code{cursor}. You can also control the
914 amount of time Emacs must remain busy before the busy indicator is
915 displayed, by setting the variable @code{hourglass-delay}.
916
917 @findex tty-suppress-bold-inverse-default-colors
918 On some text-only terminals, bold face and inverse video together
919 result in text that is hard to read. Call the function
920 @code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil}
921 argument to suppress the effect of bold-face in this case.
922
923 @node Cursor Display
924 @section Displaying the Cursor
925
926 @findex hl-line-mode
927 @findex global-hl-line-mode
928 @cindex highlight current line
929 @findex blink-cursor-mode
930 @cindex cursor, locating visually
931 @cindex cursor, blinking
932 There are a number of ways to customize the display of the cursor.
933 @kbd{M-x hl-line-mode} enables or disables a minor mode which
934 highlights the line containing point. @kbd{M-x global-hl-line-mode}
935 enables the minor mode globally. On window systems, the command
936 @kbd{M-x blink-cursor-mode} turns on or off the blinking of the
937 cursor. (On terminals, the terminal itself blinks the cursor, and
938 Emacs has no control over it.)
939
940 You can customize the cursor's color, and whether it blinks, using
941 the @code{cursor} Custom group (@pxref{Easy Customization}).
942
943 @vindex x-stretch-cursor
944 @cindex wide block cursor
945 When displaying on a window system, Emacs can optionally draw the
946 block cursor as wide as the character under the cursor---for example,
947 if the cursor is on a tab character, it would cover the full width
948 occupied by that tab character. To enable this feature, set the
949 variable @code{x-stretch-cursor} to a non-@code{nil} value.
950
951 @cindex cursor in non-selected windows
952 @vindex cursor-in-non-selected-windows
953 Normally, the cursor in non-selected windows is shown as a hollow box.
954 To turn off cursor display in non-selected windows, customize the option
955 @code{cursor-in-non-selected-windows} to assign it a @code{nil} value.