1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
3 @c 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Display, Search, Registers, Top
6 @chapter Controlling the Display
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
14 * Faces:: How to change the display style using faces.
15 * Standard Faces:: Emacs' predefined faces.
16 * Font Lock:: Minor mode for syntactic highlighting using faces.
17 * Highlight Interactively:: Tell Emacs what text to highlight.
18 * Highlight Changes:: Using colors to show where you changed the buffer.
19 * Scrolling:: Moving text up and down in a window.
20 * Horizontal Scrolling:: Moving text left and right in a window.
21 * Fringes:: Enabling or disabling window fringes.
22 * Useless Whitespace:: Showing possibly-spurious trailing whitespace.
23 * Follow Mode:: Follow mode lets two windows scroll as one.
24 * Selective Display:: Hiding lines with lots of indentation.
25 * Optional Mode Line:: Optional mode line display features.
26 * Text Display:: How text characters are normally displayed.
27 * Cursor Display:: Features for displaying the cursor.
28 * Display Custom:: Information on variables for customizing display.
32 @section Using Multiple Typefaces
35 You can specify various styles for displaying text using
36 @dfn{faces}. Each face can specify various @dfn{face attributes},
37 such as the font family, the height, weight and slant of the
38 characters, the foreground and background color, and underlining or
39 overlining. A face does not have to specify all of these attributes;
40 often it inherits most of them from another face.
42 On a window system, all the Emacs face attributes are meaningful.
43 On a character terminal, only some of them work. Some character
44 terminals support inverse video, bold, and underline attributes; some
45 support colors. Character terminals generally do not support changing
46 the height and width or the font family.
48 The easiest way to use faces is to turn on Font Lock mode.
49 @xref{Font Lock}, for more information about Font Lock mode and
50 syntactic highlighting. You can print out the buffer with the
51 highlighting that appears on your screen using the command
52 @code{ps-print-buffer-with-faces}. @xref{PostScript}.
54 Features which rely on text in multiple faces (such as Font Lock mode)
55 will also work on non-windowed terminals that can display more than one
56 face, whether by colors or underlining and emboldening. This includes
57 the console on GNU/Linux, an @code{xterm} which supports colors, the
58 MS-DOS display (@pxref{MS-DOS}), and the MS-Windows version invoked with
59 the @option{-nw} option. Emacs determines automatically whether the
60 terminal has this capability.
62 You control the appearance of a part of the text in the buffer by
63 specifying the face or faces to use for it. The style of display used
64 for any given character is determined by combining the attributes of
65 all the applicable faces specified for that character. Any attribute
66 that isn't specified by these faces is taken from the @code{default} face,
67 whose attributes reflect the default settings of the frame itself.
69 Enriched mode, the mode for editing formatted text, includes several
70 commands and menus for specifying faces for text in the buffer.
71 @xref{Format Faces}, for how to specify the font for text in the
72 buffer. @xref{Format Colors}, for how to specify the foreground and
75 @cindex face colors, setting
76 @findex set-face-foreground
77 @findex set-face-background
78 To alter the appearance of a face, use the customization buffer.
79 @xref{Face Customization}. You can also use X resources to specify
80 attributes of particular faces (@pxref{Resources}). Alternatively,
81 you can change the foreground and background colors of a specific face
82 with @kbd{M-x set-face-foreground} and @kbd{M-x set-face-background}.
83 These commands prompt in the minibuffer for a face name and a color
84 name, with completion, and then set that face to use the specified
85 color. Changing the colors of the @code{default} face also changes
86 the foreground and background colors on all frames, both existing and
87 those to be created in the future. (You can also set foreground and
88 background colors for the current frame only; see @ref{Frame
91 Emacs can correctly display variable-width fonts, but Emacs commands
92 that calculate width and indentation do not know how to calculate
93 variable widths. This can sometimes lead to incorrect results when
94 you use variable-width fonts. In particular, indentation commands can
95 give inconsistent results, so we recommend you avoid variable-width
96 fonts for editing program source code. Filling will sometimes make
97 lines too long or too short. We plan to address these issues in
98 future Emacs versions.
101 @section Standard Faces
103 @findex list-faces-display
104 To see what faces are currently defined, and what they look like,
105 type @kbd{M-x list-faces-display}. It's possible for a given face to
106 look different in different frames; this command shows the appearance
107 in the frame in which you type it.
109 Here are the standard faces for specifying text appearance. You can
110 use them on specific text, when you want the effects they produce.
114 This face is used for ordinary text that doesn't specify any other face.
116 This face uses a bold variant of the default font, if it has one.
117 It's up to you to choose a default font that has a bold variant,
118 if you want to use one.
120 This face uses an italic variant of the default font, if it has one.
122 This face uses a bold italic variant of the default font, if it has one.
124 This face underlines text.
126 This face forces use of a particular fixed-width font.
128 This face forces use of a particular variable-width font. It's
129 reasonable to customize this to use a different variable-width font,
130 if you like, but you should not make it a fixed-width font.
132 This face is used for making the text less noticeable than the surrounding
133 ordinary text. Usually this can be achieved by using shades of gray in
134 contrast with either black or white default foreground color.
137 Here's an incomplete list of faces used to highlight parts of the
138 text temporarily for specific purposes. (Many other modes define
139 their own faces for this purpose.)
143 This face is used for highlighting portions of text, in various modes.
144 For example, mouse-sensitive text is highlighted using this face.
145 @item mode-line-highlight
146 Like @code{highlight}, but used for portions of text on mode lines.
148 This face is used for highlighting Isearch matches.
150 This face is used for lazy highlighting of Isearch and Query Replace
151 matches other than the current one.
153 This face is used for displaying a selected region (when Transient Mark
154 mode is enabled---see below).
155 @item secondary-selection
156 This face is used for displaying a secondary X selection (@pxref{Secondary
158 @item trailing-whitespace
159 The face for highlighting excess spaces and tabs at the end of a line
160 when @code{show-trailing-whitespace} is non-@code{nil}; see
161 @ref{Useless Whitespace}.
163 The face for displaying the character ``nobreak space''.
165 The face for highlighting the @samp{\} or @samp{^} that indicates
166 a control character. It's also used when @samp{\} indicates a
167 nobreak space or nobreak (soft) hyphen.
170 @cindex @code{region} face
171 When Transient Mark mode is enabled, the text of the region is
172 highlighted when the mark is active. This uses the face named
173 @code{region}; you can control the style of highlighting by changing the
174 style of this face (@pxref{Face Customization}). @xref{Transient Mark},
175 for more information about Transient Mark mode and activation and
176 deactivation of the mark.
178 These faces control the appearance of parts of the Emacs frame.
179 They exist as faces to provide a consistent way to customize the
180 appearance of these parts of the frame.
185 This face is used for the mode line of the currently selected window,
186 and for menu bars when toolkit menus are not used. By default, it's
187 drawn with shadows for a ``raised'' effect on window systems, and
188 drawn as the inverse of the default face on non-windowed terminals.
189 @code{modeline} is an alias for the @code{mode-line} face, for
190 compatibility with old Emacs versions.
191 @item mode-line-inactive
192 Like @code{mode-line}, but used for mode lines of the windows other
193 than the selected one (if @code{mode-line-in-non-selected-windows} is
194 non-@code{nil}). This face inherits from @code{mode-line}, so changes
195 in that face affect mode lines in all windows.
197 Similar to @code{mode-line} for a window's header line. Most modes
198 don't use the header line, but some special modes, such the Info mode, do.
199 @item vertical-border
200 This face is used for the vertical divider between windows.
201 By default this face inherits from the @code{mode-line-inactive} face
202 on character terminals. On window systems the foreground color of
203 this face is used for the vertical line between windows without
205 @item minibuffer-prompt
206 @cindex @code{minibuffer-prompt} face
207 @vindex minibuffer-prompt-properties
208 This face is used for the prompt strings displayed in the minibuffer.
209 By default, Emacs automatically adds this face to the value of
210 @code{minibuffer-prompt-properties}, which is a list of text
211 properties used to display the prompt text.
213 @cindex @code{fringe} face
214 The face for the fringes to the left and right of windows on graphic
215 displays. (The fringes are the narrow portions of the Emacs frame
216 between the text area and the window's right and left borders.)
219 This face determines the visual appearance of the scroll bar.
222 This face determines the color of the frame border.
224 This face determines the color of the cursor.
226 This face determines the color of the mouse pointer.
228 This is the basic tool-bar face. No text appears in the tool bar, but the
229 colors of this face affect the appearance of tool bar icons. @xref{Tool Bars}.
231 This face is used for tooltips. @xref{Tooltips}.
233 @cindex menu bar appearance
234 @cindex @code{menu} face, no effect if customized
235 @cindex customization of @code{menu} face
236 This face determines the colors and font of Emacs's menus. @xref{Menu
237 Bars}. Setting the font of LessTif/Motif menus is currently not
238 supported; attempts to set the font are ignored in this case.
239 Likewise, attempts to customize this face in Emacs built with GTK and
240 in the MS-Windows port are ignored by the respective GUI toolkits;
241 you need to use system-wide styles and options to change the
242 appearance of the menus.
246 @section Font Lock mode
247 @cindex Font Lock mode
248 @cindex mode, Font Lock
249 @cindex syntax highlighting and coloring
251 Font Lock mode is a minor mode, always local to a particular buffer,
252 which highlights (or ``fontifies'') the buffer contents according to
253 the syntax of the text you are editing. It can recognize comments and
254 strings in most languages; in several languages, it can also recognize
255 and properly highlight various other important constructs---for
256 example, names of functions being defined or reserved keywords.
257 Some special modes, such as Occur mode and Info mode, have completely
258 specialized ways of assigning fonts for Font Lock mode.
260 @findex font-lock-mode
261 Font Lock mode is turned on by default in all modes which support it.
262 You can toggle font-lock for each buffer with the command @kbd{M-x
263 font-lock-mode}. Using a positive argument unconditionally turns Font
264 Lock mode on, and a negative or zero argument turns it off.
266 @findex global-font-lock-mode
267 @vindex global-font-lock-mode
268 If you do not wish Font Lock mode to be turned on by default,
269 customize the variable @code{global-font-lock-mode} using the Customize
270 interface (@pxref{Easy Customization}), or use the function
271 @code{global-font-lock-mode} in your @file{.emacs} file, like this:
274 (global-font-lock-mode 0)
278 Global Font Lock mode can also be set using the menu bar Options menu,
279 specifying first Syntax Highlighting and then Save Options.
281 @findex turn-on-font-lock
282 If you have disabled Global Font Lock mode, you can still enable font
283 lock for specific major modes by adding the function
284 @code{turn-on-font-lock} to the mode hooks (@pxref{Hooks}). For
285 example, to enable Font Lock mode for editing C files, you can do this:
288 (add-hook 'c-mode-hook 'turn-on-font-lock)
291 Font Lock mode uses several specifically named faces to do its job,
292 including @code{font-lock-string-face}, @code{font-lock-comment-face},
293 and others. The easiest way to find them all is to use
294 @kbd{M-x customize-group @key{RET} font-lock-faces @key{RET}}.
296 To change the colors or the fonts used by Font Lock mode to fontify
297 different parts of text, just change these faces. There are
302 Invoke @kbd{M-x set-face-foreground} or @kbd{M-x set-face-background}
303 to change the colors of a particular face used by Font Lock.
304 @xref{Faces}. The command @kbd{M-x list-faces-display} displays all
305 the faces currently known to Emacs, including those used by Font Lock.
308 Customize the faces interactively with @kbd{M-x customize-face}, as
309 described in @ref{Face Customization}.
312 @vindex font-lock-maximum-decoration
313 The variable @code{font-lock-maximum-decoration} specifies the
314 preferred level of fontification, for modes that provide multiple
315 levels. Level 1 is the least amount of fontification; some modes
316 support levels as high as 3. The normal default is ``as high as
317 possible.'' You can specify an integer, which applies to all modes, or
318 you can specify different numbers for particular major modes; for
319 example, to use level 1 for C/C++ modes, and the default level
323 (setq font-lock-maximum-decoration
324 '((c-mode . 1) (c++-mode . 1)))
327 @vindex font-lock-maximum-size
328 Fontification can be too slow for large buffers, so you can suppress
329 it. The variable @code{font-lock-maximum-size} specifies a buffer size,
330 beyond which buffer fontification is suppressed.
332 @c @w is used below to prevent a bad page-break.
333 @vindex font-lock-beginning-of-syntax-function
334 @cindex incorrect fontification
335 @cindex parenthesis in column zero and fontification
336 @cindex brace in column zero and fontification
337 Comment and string fontification (or ``syntactic'' fontification)
338 relies on analysis of the syntactic structure of the buffer text. For
339 the sake of speed, some modes, including C mode and Lisp mode,
340 rely on a special convention: an open-parenthesis or open-brace in the
341 leftmost column always defines the @w{beginning} of a defun, and is
342 thus always outside any string or comment. (@xref{Left Margin
343 Paren}.) If you don't follow this convention, Font Lock mode can
344 misfontify the text that follows an open-parenthesis or open-brace in
345 the leftmost column that is inside a string or comment.
347 @cindex slow display during scrolling
348 The variable @code{font-lock-beginning-of-syntax-function} (always
349 buffer-local) specifies how Font Lock mode can find a position
350 guaranteed to be outside any comment or string. In modes which use the
351 leftmost column parenthesis convention, the default value of the variable
352 is @code{beginning-of-defun}---that tells Font Lock mode to use the
353 convention. If you set this variable to @code{nil}, Font Lock no longer
354 relies on the convention. This avoids incorrect results, but the price
355 is that, in some cases, fontification for a changed text must rescan
356 buffer text from the beginning of the buffer. This can considerably
357 slow down redisplay while scrolling, particularly if you are close to
358 the end of a large buffer.
360 @findex font-lock-add-keywords
361 Font Lock highlighting patterns already exist for many modes, but you
362 may want to fontify additional patterns. You can use the function
363 @code{font-lock-add-keywords}, to add your own highlighting patterns for
364 a particular mode. For example, to highlight @samp{FIXME:} words in C
368 (font-lock-add-keywords
370 '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))
373 @findex font-lock-remove-keywords
374 To remove keywords from the font-lock highlighting patterns, use the
375 function @code{font-lock-remove-keywords}. @xref{Search-based
376 Fontification,,, elisp, The Emacs Lisp Reference Manual}, for
377 documentation of the format of this list.
379 @cindex just-in-time (JIT) font-lock
380 @cindex background syntax highlighting
381 Fontifying large buffers can take a long time. To avoid large
382 delays when a file is visited, Emacs fontifies only the visible
383 portion of a buffer. As you scroll through the buffer, each portion
384 that becomes visible is fontified as soon as it is displayed. The
385 parts of the buffer that are not displayed are fontified
386 ``stealthily,'' in the background, i.e.@: when Emacs is idle. You can
387 control this background fontification, also called @dfn{Just-In-Time}
388 (or @dfn{JIT}) Lock, by customizing variables in the customization
389 group @samp{jit-lock}. @xref{Specific Customization}.
391 @node Highlight Interactively
392 @section Interactive Highlighting by Matching
393 @cindex highlighting by matching
394 @cindex interactive highlighting
396 It is sometimes useful to highlight the strings that match a certain
397 regular expression. For example, you might wish to see all the
398 references to a certain variable in a program source file, or highlight
399 certain parts in a voluminous output of some program, or make certain
400 cliches stand out in an article.
403 Use the @kbd{M-x hi-lock-mode} command to turn on a minor mode that
404 allows you to specify regular expressions of the text to be
405 highlighted. Hi-lock mode works like Font Lock (@pxref{Font Lock}),
406 except that it lets you specify explicitly what parts of text to
407 highlight. You control Hi-lock mode with these commands:
410 @item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
412 @findex highlight-regexp
413 Highlight text that matches
414 @var{regexp} using face @var{face} (@code{highlight-regexp}).
415 By using this command more than once, you can highlight various
416 parts of the text in different ways.
418 @item C-x w r @var{regexp} @key{RET}
420 @findex unhighlight-regexp
421 Unhighlight @var{regexp} (@code{unhighlight-regexp}). You must enter
422 one of the regular expressions currently specified for highlighting.
423 (You can use completion, or choose from a menu, to enter one of them
426 @item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
428 @findex highlight-lines-matching-regexp
429 @cindex lines, highlighting
430 @cindex highlighting lines of text
431 Highlight entire lines containing a match for @var{regexp}, using face
432 @var{face} (@code{highlight-lines-matching-regexp}).
436 @findex hi-lock-write-interactive-patterns
437 Insert all the current highlighting regexp/face pairs into the buffer
438 at point, with comment delimiters to prevent them from changing your
439 program. This key binding runs the
440 @code{hi-lock-write-interactive-patterns} command.
442 These patterns will be read the next time you visit the file while
443 Hi-lock mode is enabled, or whenever you use the @kbd{M-x
444 hi-lock-find-patterns} command.
448 @findex hi-lock-find-patterns
449 @vindex hi-lock-exclude-modes
450 Re-read regexp/face pairs in the current buffer
451 (@code{hi-lock-write-interactive-patterns}). The list of pairs is
452 found no matter where in the buffer it may be.
454 This command does nothing if the major mode is a member of the list
455 @code{hi-lock-exclude-modes}.
458 @node Highlight Changes
459 @section Highlight Changes Mode
461 @findex highlight-changes-mode
462 Use @kbd{M-x highlight-changes-mode} to enable a minor mode
463 that uses faces (colors, typically) to indicate which parts of
464 the buffer were changed most recently.
469 If a buffer contains text that is too large to fit entirely within a
470 window that is displaying the buffer, Emacs shows a contiguous portion of
471 the text. The portion shown always contains point.
474 @dfn{Scrolling} means moving text up or down in the window so that
475 different parts of the text are visible. Scrolling forward means that text
476 moves up, and new text appears at the bottom. Scrolling backward moves
477 text down and new text appears at the top.
479 Scrolling happens automatically if you move point past the bottom or top
480 of the window. You can also explicitly request scrolling with the commands
485 Clear screen and redisplay, scrolling the selected window to center
486 point vertically within it (@code{recenter}).
488 Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
490 @itemx @key{PAGEDOWN}
491 Likewise, scroll forward.
493 Scroll backward (@code{scroll-down}).
496 Likewise, scroll backward.
498 Scroll so point is on line @var{arg} (@code{recenter}).
500 Scroll heuristically to bring useful information onto the screen
501 (@code{reposition-window}).
506 The most basic scrolling command is @kbd{C-l} (@code{recenter}) with
507 no argument. It scrolls the selected window so that point is halfway
508 down from the top of the window. On a text terminal, it also clears
509 the screen and redisplays all windows. That is useful in case the
510 screen is garbled (@pxref{Screen Garbled}).
520 @vindex next-screen-context-lines
521 To read the buffer a windowful at a time, use @kbd{C-v}
522 (@code{scroll-up}) with no argument. This scrolls forward by nearly
523 the whole window height. The effect is to take the two lines at the
524 bottom of the window and put them at the top, followed by nearly a
525 whole windowful of lines that were not previously visible. If point
526 was in the text that scrolled off the top, it ends up at the new top
529 @kbd{M-v} (@code{scroll-down}) with no argument scrolls backward in
530 a similar way, also with overlap. The number of lines of overlap
531 across a @kbd{C-v} or @kbd{M-v} is controlled by the variable
532 @code{next-screen-context-lines}; by default, it is 2. The function
533 keys @key{NEXT} and @key{PRIOR}, or @key{PAGEDOWN} and @key{PAGEUP},
534 are equivalent to @kbd{C-v} and @kbd{M-v}.
536 The commands @kbd{C-v} and @kbd{M-v} with a numeric argument scroll
537 the text in the selected window up or down a few lines. @kbd{C-v}
538 with an argument moves the text and point up, together, that many
539 lines; it brings the same number of new lines into view at the bottom
540 of the window. @kbd{M-v} with numeric argument scrolls the text
541 downward, bringing that many new lines into view at the top of the
542 window. @kbd{C-v} with a negative argument is like @kbd{M-v} and vice
545 The names of scroll commands are based on the direction that the
546 text moves in the window. Thus, the command to scroll forward is
547 called @code{scroll-up} because it moves the text upward on the
548 screen. The keys @key{PAGEDOWN} and @key{PAGEUP} derive their names
549 and customary meanings from a different convention that developed
550 elsewhere; hence the strange result that @key{PAGEDOWN} runs
553 @vindex scroll-preserve-screen-position
554 Some users like the full-screen scroll commands to keep point at the
555 same screen line. To enable this behavior, set the variable
556 @code{scroll-preserve-screen-position} to a non-@code{nil} value. In
557 this mode, when scrolling shifts point off the screen, or into the
558 scrolling margins, Emacs moves point to keep the same vertical
559 position within the window. This mode is convenient for browsing
560 through a file by scrolling by screenfuls; if you come back to the
561 screen where you started, point goes back to the line where it
562 started. However, this mode is inconvenient when you move to the next
563 screen in order to move point to the text there.
565 Another way to do scrolling is with @kbd{C-l} with a numeric argument.
566 @kbd{C-l} does not clear the screen when given an argument; it only scrolls
567 the selected window. With a positive argument @var{n}, it repositions text
568 to put point @var{n} lines down from the top. An argument of zero puts
569 point on the very top line. Point does not move with respect to the text;
570 rather, the text and point move rigidly on the screen. @kbd{C-l} with a
571 negative argument puts point that many lines from the bottom of the window.
572 For example, @kbd{C-u - 1 C-l} puts point on the bottom line, and @kbd{C-u
573 - 5 C-l} puts it five lines from the bottom. @kbd{C-u C-l} scrolls to put
574 point at the center (vertically) of the selected window.
577 @findex reposition-window
578 The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current
579 window heuristically in a way designed to get useful information onto
580 the screen. For example, in a Lisp file, this command tries to get the
581 entire current defun onto the screen if possible.
583 @vindex scroll-conservatively
584 Scrolling happens automatically when point moves out of the visible
585 portion of the text. Normally, automatic scrolling centers point
586 vertically within the window. However, if you set
587 @code{scroll-conservatively} to a small number @var{n}, then if you
588 move point just a little off the screen---less than @var{n}
589 lines---then Emacs scrolls the text just far enough to bring point
590 back on screen. By default, @code{scroll-conservatively} is 0.
592 @cindex aggressive scrolling
593 @vindex scroll-up-aggressively
594 @vindex scroll-down-aggressively
595 When the window does scroll by a longer distance, you can control
596 how aggressively it scrolls, by setting the variables
597 @code{scroll-up-aggressively} and @code{scroll-down-aggressively}.
598 The value of @code{scroll-up-aggressively} should be either
599 @code{nil}, or a fraction @var{f} between 0 and 1. A fraction
600 specifies where on the screen to put point when scrolling upward.
601 More precisely, when a window scrolls up because point is above the
602 window start, the new start position is chosen to put point @var{f}
603 part of the window height from the top. The larger @var{f}, the more
604 aggressive the scrolling.
606 @code{nil}, which is the default, scrolls to put point at the center.
607 So it is equivalent to .5.
609 Likewise, @code{scroll-down-aggressively} is used for scrolling
610 down. The value, @var{f}, specifies how far point should be placed
611 from the bottom of the window; thus, as with
612 @code{scroll-up-aggressively}, a larger value is more aggressive.
614 @vindex scroll-margin
615 The variable @code{scroll-margin} restricts how close point can come
616 to the top or bottom of a window. Its value is a number of screen
617 lines; if point comes within that many lines of the top or bottom of the
618 window, Emacs recenters the window. By default, @code{scroll-margin} is
621 @node Horizontal Scrolling
622 @section Horizontal Scrolling
623 @cindex horizontal scrolling
625 @dfn{Horizontal scrolling} means shifting all the lines sideways
626 within a window---so that some of the text near the left margin is not
627 displayed at all. When the text in a window is scrolled horizontally,
628 text lines are truncated rather than continued (@pxref{Display
629 Custom}). Whenever a window shows truncated lines, Emacs
630 automatically updates its horizontal scrolling whenever point moves
631 off the left or right edge of the screen. You can also use these
632 commands to do explicit horizontal scrolling.
636 Scroll text in current window to the left (@code{scroll-left}).
638 Scroll to the right (@code{scroll-right}).
645 The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
646 window to the left by @var{n} columns with argument @var{n}. This moves
647 part of the beginning of each line off the left edge of the window.
648 With no argument, it scrolls by almost the full width of the window (two
649 columns less, to be precise).
651 @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right. The
652 window cannot be scrolled any farther to the right once it is displayed
653 normally (with each line starting at the window's left margin);
654 attempting to do so has no effect. This means that you don't have to
655 calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large
656 argument will restore the normal display.
658 If you use those commands to scroll a window horizontally, that sets
659 a lower bound for automatic horizontal scrolling. Automatic scrolling
660 will continue to scroll the window, but never farther to the right
661 than the amount you previously set by @code{scroll-left}.
663 @vindex hscroll-margin
664 The value of the variable @code{hscroll-margin} controls how close
665 to the window's edges point is allowed to get before the window will
666 be automatically scrolled. It is measured in columns. If the value
667 is 5, then moving point within 5 columns of the edge causes horizontal
668 scrolling away from that edge.
671 The variable @code{hscroll-step} determines how many columns to
672 scroll the window when point gets too close to the edge. If it's
673 zero, horizontal scrolling centers point horizontally within the
674 window. If it's a positive integer, it specifies the number of
675 columns to scroll by. If it's a floating-point number, it specifies
676 the fraction of the window's width to scroll by. The default is zero.
678 @vindex auto-hscroll-mode
679 To disable automatic horizontal scrolling, set the variable
680 @code{auto-hscroll-mode} to @code{nil}.
683 @section Window Fringes
686 On a graphical display, each Emacs window normally has narrow
687 @dfn{fringes} on the left and right edges. The fringes display
688 indications about the text in the window.
690 The most common use of the fringes is to indicate a continuation
691 line, when one line of text is split into multiple lines on the
692 screen. The left fringe shows a curving arrow for each screen line
693 except the first, indicating that ``this is not the real beginning.''
694 The right fringe shows a curving arrow for each screen line except the
695 last, indicating that ``this is not the real end.''
697 The fringes indicate line truncation with short horizontal arrows
698 meaning ``there's more text on this line which is scrolled
699 horizontally out of view;'' clicking the mouse on one of the arrows
700 scrolls the display horizontally in the direction of the arrow. The
701 fringes can also indicate other things, such as empty lines, or where a
702 program you are debugging is executing (@pxref{Debuggers}).
704 @findex set-fringe-style
706 You can enable and disable the fringes for all frames using
707 @kbd{M-x fringe-mode}. To enable and disable the fringes
708 for the selected frame, use @kbd{M-x set-fringe-style}.
710 @node Useless Whitespace
711 @section Useless Whitespace
713 @cindex trailing whitespace
714 @cindex whitespace, trailing
715 @vindex show-trailing-whitespace
716 It is easy to leave unnecessary spaces at the end of a line, or
717 empty lines at the end of a file, without realizing it. In most
718 cases, this @dfn{trailing whitespace} has no effect, but there are
719 special circumstances where it matters.
721 You can make trailing whitespace at the end of a line visible on the
722 screen by setting the buffer-local variable
723 @code{show-trailing-whitespace} to @code{t}. Then Emacs displays
724 trailing whitespace in the face @code{trailing-whitespace}.
726 This feature does not apply when point is at the end of the line
727 containing the whitespace. Strictly speaking, that is ``trailing
728 whitespace'' nonetheless, but displaying it specially in that case
729 looks ugly while you are typing in new text. In this special case,
730 the location of point is enough to show you that the spaces are
733 @findex delete-trailing-whitespace
734 To delete all trailing whitespace within the current buffer's
735 accessible portion (@pxref{Narrowing}), type @kbd{M-x
736 delete-trailing-whitespace @key{RET}}. (This command does not remove
737 the form-feed characters.)
739 @vindex indicate-empty-lines
740 @vindex default-indicate-empty-lines
742 @cindex fringes, and unused line indication
743 Emacs can indicate unused lines at the end of the window with a
744 small image in the left fringe (@pxref{Fringes}). The image appears
745 for window lines that do not correspond to any buffer text. Blank
746 lines at the end of the buffer then stand out because they do not have
747 this image in the fringe.
749 To enable this feature, set the buffer-local variable
750 @code{indicate-empty-lines} to a non-@code{nil} value. The default
751 value of this variable is controlled by the variable
752 @code{default-indicate-empty-lines}; by setting that variable, you
753 can enable or disable this feature for all new buffers. (This feature
754 currently doesn't work on character terminals.)
761 @cindex windows, synchronizing
762 @cindex synchronizing windows
764 @dfn{Follow mode} is a minor mode that makes two windows, both
765 showing the same buffer, scroll as a single tall ``virtual window.''
766 To use Follow mode, go to a frame with just one window, split it into
767 two side-by-side windows using @kbd{C-x 3}, and then type @kbd{M-x
768 follow-mode}. From then on, you can edit the buffer in either of the
769 two windows, or scroll either one; the other window follows it.
771 In Follow mode, if you move point outside the portion visible in one
772 window and into the portion visible in the other window, that selects
773 the other window---again, treating the two as if they were parts of
776 To turn off Follow mode, type @kbd{M-x follow-mode} a second time.
778 @node Selective Display
779 @section Selective Display
780 @cindex selective display
781 @findex set-selective-display
784 Emacs has the ability to hide lines indented more than a certain number
785 of columns (you specify how many columns). You can use this to get an
786 overview of a part of a program.
788 To hide lines in the current buffer, type @kbd{C-x $}
789 (@code{set-selective-display}) with a numeric argument @var{n}. Then
790 lines with at least @var{n} columns of indentation disappear from the
791 screen. The only indication of their presence is that three dots
792 (@samp{@dots{}}) appear at the end of each visible line that is
793 followed by one or more hidden ones.
795 The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as
796 if they were not there.
798 The hidden lines are still present in the buffer, and most editing
799 commands see them as usual, so you may find point in the middle of the
800 hidden text. When this happens, the cursor appears at the end of the
801 previous line, after the three dots. If point is at the end of the
802 visible line, before the newline that ends it, the cursor appears before
805 To make all lines visible again, type @kbd{C-x $} with no argument.
807 @vindex selective-display-ellipses
808 If you set the variable @code{selective-display-ellipses} to
809 @code{nil}, the three dots do not appear at the end of a line that
810 precedes hidden lines. Then there is no visible indication of the
811 hidden lines. This variable becomes local automatically when set.
813 See also @ref{Outline Mode} for another way to hide part of
814 the text in a buffer.
816 @node Optional Mode Line
817 @section Optional Mode Line Features
819 @cindex buffer size display
820 @cindex display of buffer size
821 @findex size-indication-mode
822 The buffer percentage @var{pos} indicates the percentage of the
823 buffer above the top of the window. You can additionally display the
824 size of the buffer by typing @kbd{M-x size-indication-mode} to turn on
825 Size Indication mode. The size will be displayed immediately
826 following the buffer percentage like this:
829 @var{POS} of @var{SIZE}
833 Here @var{SIZE} is the human readable representation of the number of
834 characters in the buffer, which means that @samp{k} for 10^3, @samp{M}
835 for 10^6, @samp{G} for 10^9, etc., are used to abbreviate.
837 @cindex narrowing, and buffer size display
838 If you have narrowed the buffer (@pxref{Narrowing}), the size of the
839 accessible part of the buffer is shown.
841 @cindex line number display
842 @cindex display of line number
843 @findex line-number-mode
844 The current line number of point appears in the mode line when Line
845 Number mode is enabled. Use the command @kbd{M-x line-number-mode} to
846 turn this mode on and off; normally it is on. The line number appears
847 after the buffer percentage @var{pos}, with the letter @samp{L} to
848 indicate what it is. @xref{Minor Modes}, for more information about
849 minor modes and about how to use this command.
851 @cindex narrowing, and line number display
852 If you have narrowed the buffer (@pxref{Narrowing}), the displayed
853 line number is relative to the accessible portion of the buffer.
855 @vindex line-number-display-limit
856 If the buffer is very large (larger than the value of
857 @code{line-number-display-limit}), then the line number doesn't appear.
858 Emacs doesn't compute the line number when the buffer is large, because
859 that would be too slow. Set it to @code{nil} to remove the limit.
861 @vindex line-number-display-limit-width
862 Line-number computation can also be slow if the lines in the buffer
863 are too long. For this reason, Emacs normally doesn't display line
864 numbers if the average width, in characters, of lines near point is
865 larger than the value of the variable
866 @code{line-number-display-limit-width}. The default value is 200
869 @cindex Column Number mode
870 @cindex mode, Column Number
871 @findex column-number-mode
872 You can also display the current column number by turning on Column
873 Number mode. It displays the current column number preceded by the
874 letter @samp{C}. Type @kbd{M-x column-number-mode} to toggle this mode.
877 @cindex time (on mode line)
878 Emacs can optionally display the time and system load in all mode
879 lines. To enable this feature, type @kbd{M-x display-time} or customize
880 the option @code{display-time-mode}. The information added to the mode
881 line usually appears after the buffer name, before the mode names and
882 their parentheses. It looks like this:
885 @var{hh}:@var{mm}pm @var{l.ll}
889 @vindex display-time-24hr-format
890 Here @var{hh} and @var{mm} are the hour and minute, followed always by
891 @samp{am} or @samp{pm}. @var{l.ll} is the average number of running
892 processes in the whole system recently. (Some fields may be missing if
893 your operating system cannot support them.) If you prefer time display
894 in 24-hour format, set the variable @code{display-time-24hr-format}
897 @cindex mail (on mode line)
898 @vindex display-time-use-mail-icon
899 @vindex display-time-mail-face
900 @vindex display-time-mail-file
901 @vindex display-time-mail-directory
902 The word @samp{Mail} appears after the load level if there is mail
903 for you that you have not read yet. On a graphical display you can use
904 an icon instead of @samp{Mail} by customizing
905 @code{display-time-use-mail-icon}; this may save some space on the mode
906 line. You can customize @code{display-time-mail-face} to make the mail
907 indicator prominent. Use @code{display-time-mail-file} to specify
908 the mail file to check, or set @code{display-time-mail-directory}
909 to specify the directory to check for incoming mail (any nonempty regular
910 file in the directory is considered as ``newly arrived mail'').
912 @cindex mode line, 3D appearance
913 @cindex attributes of mode line, changing
914 @cindex non-integral number of lines in a window
915 By default, the mode line is drawn on graphics displays with
916 3D-style highlighting, like that of a button when it is not being
917 pressed. If you don't like this effect, you can disable the 3D
918 highlighting of the mode line, by customizing the attributes of the
919 @code{mode-line} face in your @file{.emacs} init file, like this:
922 (set-face-attribute 'mode-line nil :box nil)
926 Alternatively, you can turn off the box attribute in your
927 @file{.Xdefaults} file:
930 Emacs.mode-line.AttributeBox: off
933 @cindex non-selected windows, mode line appearance
934 By default, the mode line of nonselected windows is displayed in a
935 different face, called @code{mode-line-inactive}. Only the selected
936 window is displayed in the @code{mode-line} face. This helps show
937 which window is selected. When the minibuffer is selected, since
938 it has no mode line, the window from which you activated the minibuffer
939 has its mode line displayed using @code{mode-line}; as a result,
940 ordinary entry to the minibuffer does not change any mode lines.
942 @vindex mode-line-in-non-selected-windows
943 You can disable use of @code{mode-line-inactive} by setting variable
944 @code{mode-line-in-non-selected-windows} to @code{nil}; then all mode
945 lines are displayed in the @code{mode-line} face.
948 @section How Text Is Displayed
949 @cindex characters (in text)
951 @acronym{ASCII} printing characters (octal codes 040 through 0176) in Emacs
952 buffers are displayed with their graphics, as are non-ASCII multibyte
953 printing characters (octal codes above 0400).
955 Some @acronym{ASCII} control characters are displayed in special ways. The
956 newline character (octal code 012) is displayed by starting a new line.
957 The tab character (octal code 011) is displayed by moving to the next
958 tab stop column (normally every 8 columns).
960 Other @acronym{ASCII} control characters are normally displayed as a caret
961 (@samp{^}) followed by the non-control version of the character; thus,
962 control-A is displayed as @samp{^A}.
964 Non-@acronym{ASCII} characters 0200 through 0237 (octal) are displayed with
965 octal escape sequences; thus, character code 0230 (octal) is displayed
966 as @samp{\230}. The display of character codes 0240 through 0377
967 (octal) may be either as escape sequences or as graphics. They do not
968 normally occur in multibyte buffers, but if they do, they are displayed
969 as Latin-1 graphics. In unibyte mode, if you enable European display
970 they are displayed using their graphics (assuming your terminal supports
971 them), otherwise as escape sequences. @xref{Single-Byte Character
974 @vindex nobreak-char-display
975 @cindex no-break space, display
976 @cindex no-break hyphen, display
977 @cindex soft hyphen, display
978 Some character sets define ``no-break'' versions of the space and
979 hyphen characters, which are used where a line should not be broken.
980 Emacs normally displays these characters with special faces
981 (respectively, @code{nobreak-space} and @code{escape-glyph}) to
982 distinguish them from ordinary spaces and hyphens. You can turn off
983 this feature by setting the variable @code{nobreak-char-display} to
984 @code{nil}. If you set the variable to any other value, that means to
985 prefix these characters with an escape character.
988 @section Displaying the Cursor
990 @findex blink-cursor-mode
991 @vindex blink-cursor-alist
992 @cindex cursor, locating visually
993 @cindex cursor, blinking
994 You can customize the cursor's color, and whether it blinks, using
995 the @code{cursor} Custom group (@pxref{Easy Customization}). On
996 graphical terminals, the command @kbd{M-x blink-cursor-mode} enables
997 or disables the blinking of the cursor. (On text terminals, the
998 terminal itself blinks the cursor, and Emacs has no control over it.)
999 You can control how the cursor appears when it blinks off by setting
1000 the variable @code{blink-cursor-alist}.
1002 @cindex cursor in non-selected windows
1003 @vindex cursor-in-non-selected-windows
1004 Normally, the cursor appears in non-selected windows in the ``off''
1005 state, with the same appearance as when the blinking cursor blinks
1006 ``off''. For a box cursor, this is a hollow box; for a bar cursor,
1007 this is a thinner bar. To turn off cursors in non-selected windows,
1008 customize the variable @code{cursor-in-non-selected-windows} and assign
1009 it a @code{nil} value.
1011 @vindex x-stretch-cursor
1012 @cindex wide block cursor
1013 On graphical terminals, Emacs can optionally draw the block cursor
1014 as wide as the character under the cursor---for example, if the cursor
1015 is on a tab character, it would cover the full width occupied by that
1016 tab character. To enable this feature, set the variable
1017 @code{x-stretch-cursor} to a non-@code{nil} value.
1019 @findex hl-line-mode
1020 @findex global-hl-line-mode
1021 @cindex highlight current line
1022 If you find it hard to see the cursor, you might like HL Line mode,
1023 a minor mode that highlights the line containing point. Use @kbd{M-x
1024 hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x
1025 global-hl-line-mode} enables or disables the same mode globally.
1027 @node Display Custom
1028 @section Customization of Display
1030 This section contains information for customization only. Beginning
1031 users should skip it.
1033 @vindex inverse-video
1034 If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
1035 to invert all the lines of the display from what they normally are.
1037 @vindex visible-bell
1038 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
1039 to make the whole screen blink when it would normally make an audible bell
1040 sound. This variable has no effect if your terminal does not have a way
1041 to make the screen blink.
1043 @vindex no-redraw-on-reenter
1044 On a text terminal, when you reenter Emacs after suspending, Emacs
1045 normally clears the screen and redraws the entire display. On some
1046 terminals with more than one page of memory, it is possible to arrange
1047 the termcap entry so that the @samp{ti} and @samp{te} strings (output
1048 to the terminal when Emacs is entered and exited, respectively) switch
1049 between pages of memory so as to use one page for Emacs and another
1050 page for other output. Then you might want to set the variable
1051 @code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
1052 assume, when resumed, that the screen page it is using still contains
1053 what Emacs last wrote there.
1055 @vindex echo-keystrokes
1056 The variable @code{echo-keystrokes} controls the echoing of multi-character
1057 keys; its value is the number of seconds of pause required to cause echoing
1058 to start, or zero meaning don't echo at all. @xref{Echo Area}.
1061 If the variable @code{ctl-arrow} is @code{nil}, all control characters in
1062 the buffer are displayed with octal escape sequences, except for newline
1063 and tab. Altering the value of @code{ctl-arrow} makes it local to the
1064 current buffer; until that time, the default value is in effect. The
1065 default is initially @code{t}. @xref{Display Tables,, Display Tables,
1066 elisp, The Emacs Lisp Reference Manual}.
1069 @vindex default-tab-width
1070 Normally, a tab character in the buffer is displayed as whitespace which
1071 extends to the next display tab stop position, and display tab stops come
1072 at intervals equal to eight spaces. The number of spaces per tab is
1073 controlled by the variable @code{tab-width}, which is made local by
1074 changing it, just like @code{ctl-arrow}. Note that how the tab character
1075 in the buffer is displayed has nothing to do with the definition of
1076 @key{TAB} as a command. The variable @code{tab-width} must have an
1077 integer value between 1 and 1000, inclusive. The variable
1078 @code{default-tab-width} controls the default value of this variable
1079 for buffers where you have not set it locally.
1082 @cindex line truncation, and fringes
1083 As an alternative to continuation, Emacs can display long lines by
1084 @dfn{truncation}. This means that all the characters that do not fit
1085 in the width of the screen or window do not appear at all. On
1086 graphical terminals, a small straight arrow in the fringe indicates
1087 truncation at either end of the line. On text terminals, @samp{$}
1088 appears in the first column when there is text truncated to the left,
1089 and in the last column when there is text truncated to the right.
1091 @vindex truncate-lines
1092 @findex toggle-truncate-lines
1093 Horizontal scrolling automatically causes line truncation
1094 (@pxref{Horizontal Scrolling}). You can explicitly enable line
1095 truncation for a particular buffer with the command @kbd{M-x
1096 toggle-truncate-lines}. This works by locally changing the variable
1097 @code{truncate-lines}. If that variable is non-@code{nil}, long lines
1098 are truncated; if it is @code{nil}, they are continued onto multiple
1099 screen lines. Setting the variable @code{truncate-lines} in any way
1100 makes it local to the current buffer; until that time, the default
1101 value is in effect. The default value is normally @code{nil}.
1103 @c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows.
1104 If the variable @code{truncate-partial-width-windows} is
1105 non-@code{nil}, it forces truncation rather than continuation in any
1106 window less than the full width of the screen or frame, regardless of
1107 the value of @code{truncate-lines}. For information about side-by-side
1108 windows, see @ref{Split Window}. See also @ref{Display,, Display,
1109 elisp, The Emacs Lisp Reference Manual}.
1111 @vindex overflow-newline-into-fringe
1112 If the variable @code{overflow-newline-into-fringe} is
1113 non-@code{nil} on a window system, it specifies that lines which are
1114 exactly as wide as the window (not counting the final newline
1115 character) shall not be broken into two lines on the display (with
1116 just the newline on the second line). Instead, the newline
1117 overflows into the right fringe, and the cursor will be displayed in
1118 the fringe when positioned on that newline.
1120 @vindex indicate-buffer-boundaries
1121 On a window system, Emacs may indicate the buffer boundaries in the
1122 fringes. The buffer boundaries, i.e. first and last line in the
1123 buffer, can be marked with angle bitmaps in the left or right fringe.
1124 This can be combined with up and down arrow bitmaps shown at the top
1125 and bottom of the left or right fringe if the window can be scrolled
1126 in either direction.
1128 The buffer-local variable @code{indicate-buffer-boundaries} controls
1129 how the buffer boundaries and window scrolling is indicated in the
1132 If the value is @code{left} or @code{right}, both angle and arrow
1133 bitmaps are displayed in the left or right fringe, respectively.
1135 If value is an alist, each element @code{(@var{indicator} .
1136 @var{position})} specifies the position of one of the indicators.
1137 The @var{indicator} must be one of @code{top}, @code{bottom},
1138 @code{up}, @code{down}, or @code{t} which specifies the default
1139 position for the indicators not present in the alist.
1140 The @var{position} is one of @code{left}, @code{right}, or @code{nil}
1141 which specifies not to show this indicator.
1143 For example, @code{((top . left) (t . right))} places the top angle
1144 bitmap in left fringe, the bottom angle bitmap in right fringe, and
1145 both arrow bitmaps in right fringe. To show just the angle bitmaps in
1146 the left fringe, but no arrow bitmaps, use @code{((top . left)
1149 @vindex default-indicate-buffer-boundaries
1150 The value of the variable @code{default-indicate-buffer-boundaries}
1151 is the default value for @code{indicate-buffer-boundaries} in buffers
1152 that do not override it.
1155 The variable @anchor{baud-rate}@code{baud-rate} holds the output speed of the
1156 terminal, as far as Emacs knows. Setting this variable does not
1157 change the speed of actual data transmission, but the value is used
1158 for calculations. On terminals, it affects padding, and decisions
1159 about whether to scroll part of the screen or redraw it instead.
1160 It also affects the behavior of incremental search.
1162 On window-systems, @code{baud-rate} is only used to determine how
1163 frequently to look for pending input during display updating. A
1164 higher value of @code{baud-rate} means that check for pending input
1165 will be done less frequently.
1167 You can customize the way any particular character code is displayed
1168 by means of a display table. @xref{Display Tables,, Display Tables,
1169 elisp, The Emacs Lisp Reference Manual}.
1171 @cindex hourglass pointer display
1172 @vindex hourglass-delay
1173 On a window system, Emacs can optionally display the mouse pointer
1174 in a special shape to say that Emacs is busy. To turn this feature on
1175 or off, customize the group @code{cursor}. You can also control the
1176 amount of time Emacs must remain busy before the busy indicator is
1177 displayed, by setting the variable @code{hourglass-delay}.
1179 @findex tty-suppress-bold-inverse-default-colors
1180 On some text-only terminals, bold face and inverse video together
1181 result in text that is hard to read. Call the function
1182 @code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil}
1183 argument to suppress the effect of bold-face in this case.
1186 arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4