]> code.delx.au - gnu-emacs/blob - doc/emacs/display.texi
Merge from emacs--rel--22
[gnu-emacs] / doc / emacs / display.texi
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, 2006, 2007, 2008 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
10 commands allow you to specify which part of the text you want to see,
11 and how to display it. Many variables also affect the details of
12 redisplay. Unless otherwise stated, the variables described in this
13 chapter have their effect by customizing redisplay itself; therefore,
14 their values only make a difference at the time of redisplay.
15
16 @menu
17 * Scrolling:: Commands to move text up and down in a window.
18 * Auto Scrolling:: Redisplay scrolls text automatically when needed.
19 * Horizontal Scrolling:: Moving text left and right in a window.
20 * Follow Mode:: Follow mode lets two windows scroll as one.
21 * Faces:: How to change the display style using faces.
22 * Standard Faces:: Emacs' predefined faces.
23 * Font Lock:: Minor mode for syntactic highlighting using faces.
24 * Highlight Interactively:: Tell Emacs what text to highlight.
25 * Fringes:: Enabling or disabling window fringes.
26 * Displaying Boundaries:: Displaying top and bottom of the buffer.
27 * Useless Whitespace:: Showing possibly-spurious trailing whitespace.
28 * Selective Display:: Hiding lines with lots of indentation.
29 * Optional Mode Line:: Optional mode line display features.
30 * Text Display:: How text characters are normally displayed.
31 * Cursor Display:: Features for displaying the cursor.
32 * Line Truncation:: Truncating lines to fit the screen width instead
33 of continuing them to multiple screen lines.
34 * Visual Line Mode:: Word wrap and screen line-based editing.
35 * Temporary Face Changes:: Commands to temporarily modify the default text face
36 * Display Custom:: Information on variables for customizing display.
37 @end menu
38
39 @node Scrolling
40 @section Scrolling
41
42 If a buffer contains text that is too large to fit entirely within a
43 window that is displaying the buffer, Emacs shows a contiguous portion of
44 the text. The portion shown always contains point.
45
46 @cindex scrolling
47 @dfn{Scrolling} means moving text up or down in the window so that
48 different parts of the text are visible. Scrolling ``forward'' or
49 ``up'' means that text moves up, and new text appears at the bottom.
50 Scrolling ``backward'' or ``down'' moves text down, and new text
51 appears at the top.
52
53 Scrolling happens automatically if you move point past the bottom or
54 top of the window. You can also scroll explicitly with the commands
55 in this section.
56
57 @table @kbd
58 @item C-l
59 Clear screen and redisplay, scrolling the selected window to center
60 point vertically within it (@code{recenter}).
61 @item C-v
62 Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
63 @item @key{NEXT}
64 @itemx @key{PAGEDOWN}
65 Likewise, scroll forward.
66 @item M-v
67 Scroll backward (@code{scroll-down}).
68 @item @key{PRIOR}
69 @itemx @key{PAGEUP}
70 Likewise, scroll backward.
71 @item @var{arg} C-l
72 Scroll so point is on line @var{arg} (@code{recenter}).
73 @item C-M-l
74 Scroll heuristically to bring useful information onto the screen
75 (@code{reposition-window}).
76 @end table
77
78 @kindex C-l
79 @findex recenter
80 The most basic scrolling command is @kbd{C-l} (@code{recenter}) with
81 no argument. It scrolls the selected window so that point is halfway
82 down from the top of the window. On a text terminal, it also clears
83 the screen and redisplays all windows. That is useful in case the
84 screen is garbled (@pxref{Screen Garbled}).
85
86 @kindex C-v
87 @kindex M-v
88 @kindex NEXT
89 @kindex PRIOR
90 @kindex PAGEDOWN
91 @kindex PAGEUP
92 @findex scroll-up
93 @findex scroll-down
94 To read the buffer a windowful at a time, use @kbd{C-v}
95 (@code{scroll-up}) with no argument. This scrolls forward by nearly
96 the whole window height. The effect is to take the two lines at the
97 bottom of the window and put them at the top, followed by nearly a
98 whole windowful of lines that were not previously visible. If point
99 was in the text that scrolled off the top, it ends up at the new top
100 of the window.
101
102 @vindex next-screen-context-lines
103 @kbd{M-v} (@code{scroll-down}) with no argument scrolls backward in
104 a similar way, also with overlap. The number of lines of overlap that
105 the @kbd{C-v} or @kbd{M-v} commands leave is controlled by the
106 variable @code{next-screen-context-lines}; by default, it is 2. The
107 function keys @key{NEXT} and @key{PRIOR}, or @key{PAGEDOWN} and
108 @key{PAGEUP}, are equivalent to @kbd{C-v} and @kbd{M-v}.
109
110 The commands @kbd{C-v} and @kbd{M-v} with a numeric argument scroll
111 the text in the selected window up or down a few lines. @kbd{C-v}
112 with an argument moves the text and point up, together, that many
113 lines; it brings the same number of new lines into view at the bottom
114 of the window. @kbd{M-v} with numeric argument scrolls the text
115 downward, bringing that many new lines into view at the top of the
116 window. @kbd{C-v} with a negative argument is like @kbd{M-v} and vice
117 versa.
118
119 The names of scroll commands are based on the direction that the
120 text moves in the window. Thus, the command to scroll forward is
121 called @code{scroll-up} because it moves the text upward on the
122 screen. The keys @key{PAGEDOWN} and @key{PAGEUP} derive their names
123 and customary meanings from a different convention that developed
124 elsewhere; hence the strange result that @key{PAGEDOWN} runs
125 @code{scroll-up}.
126
127 @vindex scroll-preserve-screen-position
128 Some users like the full-screen scroll commands to keep point at the
129 same screen line. To enable this behavior, set the variable
130 @code{scroll-preserve-screen-position} to a non-@code{nil} value. In
131 this mode, when these commands would scroll the text around point off
132 the screen, or within @code{scroll-margin} lines of the edge, they
133 move point to keep the same vertical position within the window.
134 This mode is convenient for browsing through a file by scrolling by
135 screenfuls; if you come back to the screen where you started, point
136 goes back to the line where it started. However, this mode is
137 inconvenient when you move to the next screen in order to move point
138 to the text there.
139
140 Another way to do scrolling is with @kbd{C-l} with a numeric argument.
141 @kbd{C-l} does not clear the screen when given an argument; it only scrolls
142 the selected window. With a positive argument @var{n}, it repositions text
143 to put point @var{n} lines down from the top. An argument of zero puts
144 point on the very top line. Point does not move with respect to the text;
145 rather, the text and point move rigidly on the screen. @kbd{C-l} with a
146 negative argument puts point that many lines from the bottom of the window.
147 For example, @kbd{C-u - 1 C-l} puts point on the bottom line, and @kbd{C-u
148 - 5 C-l} puts it five lines from the bottom. @kbd{C-u C-l} scrolls to put
149 point at the center (vertically) of the selected window.
150
151 @kindex C-M-l
152 @findex reposition-window
153 The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current
154 window heuristically in a way designed to get useful information onto
155 the screen. For example, in a Lisp file, this command tries to get the
156 entire current defun onto the screen if possible.
157
158 @node Auto Scrolling
159 @section Automatic Scrolling
160
161 @vindex scroll-conservatively
162 Redisplay scrolls the buffer automatically when point moves out of
163 the visible portion of the text. The purpose of automatic scrolling
164 is to make point visible, but you can customize many aspects of how
165 this is done.
166
167 Normally, automatic scrolling centers point vertically within the
168 window. However, if you set @code{scroll-conservatively} to a small
169 number @var{n}, then if you move point just a little off the
170 screen---less than @var{n} lines---then Emacs scrolls the text just
171 far enough to bring point back on screen. By default,
172 @code{scroll-conservatively} is@tie{}0.
173
174 @cindex aggressive scrolling
175 @vindex scroll-up-aggressively
176 @vindex scroll-down-aggressively
177 When the window does scroll by a longer distance, you can control
178 how aggressively it scrolls, by setting the variables
179 @code{scroll-up-aggressively} and @code{scroll-down-aggressively}.
180 The value of @code{scroll-up-aggressively} should be either
181 @code{nil}, or a fraction @var{f} between 0 and 1. A fraction
182 specifies where on the screen to put point when scrolling upward.
183 More precisely, when a window scrolls up because point is above the
184 window start, the new start position is chosen to put point @var{f}
185 part of the window height from the top. The larger @var{f}, the more
186 aggressive the scrolling.
187
188 @code{nil}, which is the default, scrolls to put point at the center.
189 So it is equivalent to .5.
190
191 Likewise, @code{scroll-down-aggressively} is used for scrolling
192 down. The value, @var{f}, specifies how far point should be placed
193 from the bottom of the window; thus, as with
194 @code{scroll-up-aggressively}, a larger value is more aggressive.
195
196 @vindex scroll-margin
197 The variable @code{scroll-margin} restricts how close point can come
198 to the top or bottom of a window. Its value is a number of screen
199 lines; if point comes within that many lines of the top or bottom of the
200 window, Emacs recenters the window. By default, @code{scroll-margin} is
201 0.
202
203 @node Horizontal Scrolling
204 @section Horizontal Scrolling
205 @cindex horizontal scrolling
206
207 @dfn{Horizontal scrolling} means shifting all the lines sideways
208 within a window---so that some of the text near the left margin is not
209 displayed at all. When the text in a window is scrolled horizontally,
210 text lines are truncated rather than continued (@pxref{Line
211 Truncation}). Whenever a window shows truncated lines, Emacs
212 automatically updates its horizontal scrolling whenever point moves
213 off the left or right edge of the screen. You can also use these
214 commands to do explicit horizontal scrolling.
215
216 @table @kbd
217 @item C-x <
218 Scroll text in current window to the left (@code{scroll-left}).
219 @item C-x >
220 Scroll to the right (@code{scroll-right}).
221 @end table
222
223 @kindex C-x <
224 @kindex C-x >
225 @findex scroll-left
226 @findex scroll-right
227 The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
228 window to the left by @var{n} columns with argument @var{n}. This moves
229 part of the beginning of each line off the left edge of the window.
230 With no argument, it scrolls by almost the full width of the window (two
231 columns less, to be precise).
232
233 @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right. The
234 window cannot be scrolled any farther to the right once it is displayed
235 normally (with each line starting at the window's left margin);
236 attempting to do so has no effect. This means that you don't have to
237 calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large
238 argument will restore the normal display.
239
240 If you use those commands to scroll a window horizontally, that sets
241 a lower bound for automatic horizontal scrolling. Automatic scrolling
242 will continue to scroll the window, but never farther to the right
243 than the amount you previously set by @code{scroll-left}.
244
245 @vindex hscroll-margin
246 The value of the variable @code{hscroll-margin} controls how close
247 to the window's edges point is allowed to get before the window will
248 be automatically scrolled. It is measured in columns. If the value
249 is 5, then moving point within 5 columns of the edge causes horizontal
250 scrolling away from that edge.
251
252 @vindex hscroll-step
253 The variable @code{hscroll-step} determines how many columns to
254 scroll the window when point gets too close to the edge. If it's
255 zero, horizontal scrolling centers point horizontally within the
256 window. If it's a positive integer, it specifies the number of
257 columns to scroll by. If it's a floating-point number, it specifies
258 the fraction of the window's width to scroll by. The default is zero.
259
260 @vindex auto-hscroll-mode
261 To disable automatic horizontal scrolling, set the variable
262 @code{auto-hscroll-mode} to @code{nil}.
263
264 @node Follow Mode
265 @section Follow Mode
266 @cindex Follow mode
267 @cindex mode, Follow
268 @findex follow-mode
269 @cindex windows, synchronizing
270 @cindex synchronizing windows
271
272 @dfn{Follow mode} is a minor mode that makes two windows, both
273 showing the same buffer, scroll as a single tall ``virtual window.''
274 To use Follow mode, go to a frame with just one window, split it into
275 two side-by-side windows using @kbd{C-x 3}, and then type @kbd{M-x
276 follow-mode}. From then on, you can edit the buffer in either of the
277 two windows, or scroll either one; the other window follows it.
278
279 In Follow mode, if you move point outside the portion visible in one
280 window and into the portion visible in the other window, that selects
281 the other window---again, treating the two as if they were parts of
282 one large window.
283
284 To turn off Follow mode, type @kbd{M-x follow-mode} a second time.
285
286 @node Faces
287 @section Faces: Controlling Text Display Style
288 @cindex faces
289
290 You can specify various styles for displaying text using
291 @dfn{faces}. Each face can specify various @dfn{face attributes},
292 such as the font family, the height, weight and slant of the
293 characters, the foreground and background color, and underlining or
294 overlining. A face does not have to specify all of these attributes;
295 often it inherits most of them from another face.
296
297 On graphical display, all the Emacs face attributes are meaningful.
298 On a text-only terminal, only some of them work. Some text-only
299 terminals support inverse video, bold, and underline attributes; some
300 support colors. Text-only terminals generally do not support changing
301 the height and width or the font family.
302
303 Most major modes assign faces to the text automatically through the
304 work of Font Lock mode. @xref{Font Lock}, for more information about
305 Font Lock mode and syntactic highlighting. You can print the current
306 buffer with the highlighting that appears on your screen using the
307 command @code{ps-print-buffer-with-faces}. @xref{PostScript}.
308
309 You control the appearance of a part of the text in the buffer by
310 specifying the face or faces to use for it. The style of display used
311 for any given character is determined by combining the attributes of
312 all the applicable faces specified for that character. Any attribute
313 that isn't specified by these faces is taken from the @code{default} face,
314 whose attributes reflect the default settings of the frame itself.
315
316 Enriched mode, the mode for editing formatted text, includes several
317 commands and menus for specifying faces for text in the buffer.
318 @xref{Format Faces}, for how to specify the font for text in the
319 buffer. @xref{Format Colors}, for how to specify the foreground and
320 background color.
321
322 @cindex face colors, setting
323 @findex set-face-foreground
324 @findex set-face-background
325 To alter the appearance of a face, use the customization buffer.
326 @xref{Face Customization}. You can also use X resources to specify
327 attributes of particular faces (@pxref{Resources}). Alternatively,
328 you can change the foreground and background colors of a specific face
329 with @kbd{M-x set-face-foreground} and @kbd{M-x set-face-background}.
330 These commands prompt in the minibuffer for a face name and a color
331 name, with completion, and then set that face to use the specified
332 color. Changing the colors of the @code{default} face also changes
333 the foreground and background colors on all frames, both existing and
334 those to be created in the future. (You can also set foreground and
335 background colors for the current frame only; see @ref{Frame
336 Parameters}.)
337
338 If you want to alter the appearance of all Emacs frames, you need to
339 customize the frame parameters in the variable
340 @code{default-frame-alist}; see @ref{Creating Frames,
341 default-frame-alist}.
342
343 Emacs can correctly display variable-width fonts, but Emacs commands
344 that calculate width and indentation do not know how to calculate
345 variable widths. This can sometimes lead to incorrect results when
346 you use variable-width fonts. In particular, indentation commands can
347 give inconsistent results, so we recommend you avoid variable-width
348 fonts for editing program source code. Filling will sometimes make
349 lines too long or too short. We plan to address these issues in
350 future Emacs versions.
351
352 @node Standard Faces
353 @section Standard Faces
354
355 @findex list-faces-display
356 To see what faces are currently defined, and what they look like,
357 type @kbd{M-x list-faces-display}. It's possible for a given face to
358 look different in different frames; this command shows the appearance
359 in the frame in which you type it. With a prefix argument, this
360 prompts for a regular expression, and displays only faces with names
361 matching that regular expression.
362
363 Here are the standard faces for specifying text appearance. You can
364 apply them to specific text when you want the effects they produce.
365
366 @table @code
367 @item default
368 This face is used for ordinary text that doesn't specify any face.
369 @item bold
370 This face uses a bold variant of the default font, if it has one.
371 It's up to you to choose a default font that has a bold variant,
372 if you want to use one.
373 @item italic
374 This face uses an italic variant of the default font, if it has one.
375 @item bold-italic
376 This face uses a bold italic variant of the default font, if it has one.
377 @item underline
378 This face underlines text.
379 @item fixed-pitch
380 This face forces use of a particular fixed-width font.
381 @item variable-pitch
382 This face forces use of a particular variable-width font. It's
383 reasonable to customize this face to use a different variable-width font,
384 if you like, but you should not make it a fixed-width font.
385 @item shadow
386 This face is used for making the text less noticeable than the surrounding
387 ordinary text. Usually this can be achieved by using shades of gray in
388 contrast with either black or white default foreground color.
389 @end table
390
391 Here's an incomplete list of faces used to highlight parts of the
392 text temporarily for specific purposes. (Many other modes define
393 their own faces for this purpose.)
394
395 @table @code
396 @item highlight
397 This face is used for highlighting portions of text, in various modes.
398 For example, mouse-sensitive text is highlighted using this face.
399 @item isearch
400 This face is used for highlighting the current Isearch match.
401 @item query-replace
402 This face is used for highlighting the current Query Replace match.
403 @item lazy-highlight
404 This face is used for lazy highlighting of Isearch and Query Replace
405 matches other than the current one.
406 @item region
407 This face is used for displaying a selected region (@pxref{Mark}).
408 @item secondary-selection
409 This face is used for displaying a secondary X selection (@pxref{Secondary
410 Selection}).
411 @item trailing-whitespace
412 The face for highlighting excess spaces and tabs at the end of a line
413 when @code{show-trailing-whitespace} is non-@code{nil}; see
414 @ref{Useless Whitespace}.
415 @item nobreak-space
416 The face for displaying the character ``nobreak space.''
417 @item escape-glyph
418 The face for highlighting the @samp{\} or @samp{^} that indicates
419 a control character. It's also used when @samp{\} indicates a
420 nobreak space or nobreak (soft) hyphen.
421 @end table
422
423 These faces control the appearance of parts of the Emacs frame.
424 They exist as faces to provide a consistent way to customize the
425 appearance of these parts of the frame.
426
427 @table @code
428 @item mode-line
429 @itemx modeline
430 This face is used for the mode line of the currently selected window,
431 and for menu bars when toolkit menus are not used. By default, it's
432 drawn with shadows for a ``raised'' effect on graphical displays, and
433 drawn as the inverse of the default face on non-windowed terminals.
434 @code{modeline} is an alias for the @code{mode-line} face, for
435 compatibility with old Emacs versions.
436 @item mode-line-inactive
437 Like @code{mode-line}, but used for mode lines of the windows other
438 than the selected one (if @code{mode-line-in-non-selected-windows} is
439 non-@code{nil}). This face inherits from @code{mode-line}, so changes
440 in that face affect mode lines in all windows.
441 @item mode-line-highlight
442 Like @code{highlight}, but used for portions of text on mode lines.
443 @item mode-line-buffer-id
444 This face is used for buffer identification parts in the mode line.
445 @item header-line
446 Similar to @code{mode-line} for a window's header line, which appears
447 at the top of a window just as the mode line appears at the bottom.
448 Most windows do not have a header line---only some special modes, such
449 Info mode, create one.
450 @item vertical-border
451 This face is used for the vertical divider between windows.
452 By default this face inherits from the @code{mode-line-inactive} face
453 on character terminals. On graphical displays the foreground color of
454 this face is used for the vertical line between windows without
455 scrollbars.
456 @item minibuffer-prompt
457 @cindex @code{minibuffer-prompt} face
458 @vindex minibuffer-prompt-properties
459 This face is used for the prompt strings displayed in the minibuffer.
460 By default, Emacs automatically adds this face to the value of
461 @code{minibuffer-prompt-properties}, which is a list of text
462 properties used to display the prompt text. (This variable takes
463 effect when you enter the minibuffer.)
464 @item fringe
465 @cindex @code{fringe} face
466 The face for the fringes to the left and right of windows on graphic
467 displays. (The fringes are the narrow portions of the Emacs frame
468 between the text area and the window's right and left borders.)
469 @xref{Fringes}.
470 @item scroll-bar
471 This face determines the visual appearance of the scroll bar.
472 @xref{Scroll Bars}.
473 @item border
474 This face determines the color of the frame border.
475 @item cursor
476 This face determines the color of the cursor.
477 @item mouse
478 This face determines the color of the mouse pointer.
479 @item tool-bar
480 This face determines the color of tool bar icons. @xref{Tool Bars}.
481 @item tooltip
482 This face is used for tooltips. @xref{Tooltips}.
483 @item menu
484 @cindex menu bar appearance
485 @cindex @code{menu} face, no effect if customized
486 @cindex customization of @code{menu} face
487 This face determines the colors and font of Emacs's menus. @xref{Menu
488 Bars}. Setting the font of LessTif/Motif menus is currently not
489 supported; attempts to set the font are ignored in this case.
490 Likewise, attempts to customize this face in Emacs built with GTK and
491 in the MS-Windows/Mac ports are ignored by the respective GUI toolkits;
492 you need to use system-wide styles and options to change the
493 appearance of the menus.
494 @end table
495
496 @node Font Lock
497 @section Font Lock mode
498 @cindex Font Lock mode
499 @cindex mode, Font Lock
500 @cindex syntax highlighting and coloring
501
502 Font Lock mode is a minor mode, always local to a particular buffer,
503 which highlights (or ``fontifies'') the buffer contents according to
504 the syntax of the text you are editing. It can recognize comments and
505 strings in most languages; in several languages, it can also recognize
506 and properly highlight various other important constructs---for
507 example, names of functions being defined or reserved keywords.
508 Some special modes, such as Occur mode and Info mode, have completely
509 specialized ways of assigning fonts for Font Lock mode.
510
511 @findex font-lock-mode
512 Font Lock mode is turned on by default in all modes which support it.
513 You can toggle font-lock for each buffer with the command @kbd{M-x
514 font-lock-mode}. Using a positive argument unconditionally turns Font
515 Lock mode on, and a negative or zero argument turns it off.
516
517 @findex global-font-lock-mode
518 @vindex global-font-lock-mode
519 If you do not wish Font Lock mode to be turned on by default,
520 customize the variable @code{global-font-lock-mode} using the Customize
521 interface (@pxref{Easy Customization}), or use the function
522 @code{global-font-lock-mode} in your @file{.emacs} file, like this:
523
524 @example
525 (global-font-lock-mode 0)
526 @end example
527
528 @noindent
529 This variable, like all the variables that control Font Lock mode,
530 take effect whenever fontification is done; that is, potentially at
531 any time.
532
533 @findex turn-on-font-lock
534 If you have disabled Global Font Lock mode, you can still enable Font
535 Lock for specific major modes by adding the function
536 @code{turn-on-font-lock} to the mode hooks (@pxref{Hooks}). For
537 example, to enable Font Lock mode for editing C files, you can do this:
538
539 @example
540 (add-hook 'c-mode-hook 'turn-on-font-lock)
541 @end example
542
543 Font Lock mode uses several specifically named faces to do its job,
544 including @code{font-lock-string-face}, @code{font-lock-comment-face},
545 and others. The easiest way to find them all is to use @kbd{M-x
546 customize-group @key{RET} font-lock-faces @key{RET}}. You can then
547 use that customization buffer to customize the appearance of these
548 faces. @xref{Face Customization}.
549
550 You can also customize these faces using @kbd{M-x
551 set-face-foreground} or @kbd{M-x set-face-background}. @xref{Faces}.
552
553 @vindex font-lock-maximum-decoration
554 The variable @code{font-lock-maximum-decoration} specifies the
555 preferred level of fontification, for modes that provide multiple
556 levels. Level 1 is the least amount of fontification; some modes
557 support levels as high as 3. The normal default is ``as high as
558 possible.'' You can specify an integer, which applies to all modes, or
559 you can specify different numbers for particular major modes; for
560 example, to use level 1 for C/C++ modes, and the default level
561 otherwise, use this:
562
563 @example
564 (setq font-lock-maximum-decoration
565 '((c-mode . 1) (c++-mode . 1)))
566 @end example
567
568 @vindex font-lock-maximum-size
569 Fontification can be too slow for large buffers, so you can suppress
570 it for buffers above a certain size. The variable
571 @code{font-lock-maximum-size} specifies a buffer size, beyond which
572 buffer fontification is suppressed.
573
574 @c @w is used below to prevent a bad page-break.
575 @vindex font-lock-beginning-of-syntax-function
576 @cindex incorrect fontification
577 @cindex parenthesis in column zero and fontification
578 @cindex brace in column zero and fontification
579 Comment and string fontification (or ``syntactic'' fontification)
580 relies on analysis of the syntactic structure of the buffer text. For
581 the sake of speed, some modes, including Lisp mode, rely on a special
582 convention: an open-parenthesis or open-brace in the leftmost column
583 always defines the @w{beginning} of a defun, and is thus always
584 outside any string or comment. (@xref{Left Margin Paren}.) If you
585 don't follow this convention, Font Lock mode can misfontify the text
586 that follows an open-parenthesis or open-brace in the leftmost column
587 that is inside a string or comment.
588
589 @cindex slow display during scrolling
590 The variable @code{font-lock-beginning-of-syntax-function} (always
591 buffer-local) specifies how Font Lock mode can find a position
592 guaranteed to be outside any comment or string. In modes which use the
593 leftmost column parenthesis convention, the default value of the variable
594 is @code{beginning-of-defun}---that tells Font Lock mode to use the
595 convention. If you set this variable to @code{nil}, Font Lock no longer
596 relies on the convention. This avoids incorrect results, but the price
597 is that, in some cases, fontification for a changed text must rescan
598 buffer text from the beginning of the buffer. This can considerably
599 slow down redisplay while scrolling, particularly if you are close to
600 the end of a large buffer.
601
602 @findex font-lock-add-keywords
603 Font Lock highlighting patterns already exist for many modes, but you
604 may want to fontify additional patterns. You can use the function
605 @code{font-lock-add-keywords}, to add your own highlighting patterns for
606 a particular mode. For example, to highlight @samp{FIXME:} words in C
607 comments, use this:
608
609 @example
610 (add-hook 'c-mode-hook
611 (lambda ()
612 (font-lock-add-keywords nil
613 '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))))
614 @end example
615
616 @findex font-lock-remove-keywords
617 To remove keywords from the font-lock highlighting patterns, use the
618 function @code{font-lock-remove-keywords}. @xref{Search-based
619 Fontification,,, elisp, The Emacs Lisp Reference Manual}, for
620 documentation of the format of this list.
621
622 @cindex just-in-time (JIT) font-lock
623 @cindex background syntax highlighting
624 Fontifying large buffers can take a long time. To avoid large
625 delays when a file is visited, Emacs fontifies only the visible
626 portion of a buffer. As you scroll through the buffer, each portion
627 that becomes visible is fontified as soon as it is displayed. The
628 parts of the buffer that are not displayed are fontified
629 ``stealthily,'' in the background, i.e.@: when Emacs is idle. You can
630 control this background fontification, also called @dfn{Just-In-Time}
631 (or @dfn{JIT}) Lock, by customizing variables in the customization
632 group @samp{jit-lock}. @xref{Specific Customization}.
633
634 @node Highlight Interactively
635 @section Interactive Highlighting
636 @cindex highlighting by matching
637 @cindex interactive highlighting
638 @cindex Highlight Changes mode
639
640 @findex highlight-changes-mode
641 Use @kbd{M-x highlight-changes-mode} to enable (or disable)
642 Highlight Changes mode, a minor mode that uses faces (colors,
643 typically) to indicate which parts of the buffer were changed most
644 recently.
645
646 @cindex Hi Lock mode
647 @findex hi-lock-mode
648 Hi Lock mode highlights text that matches regular expressions you
649 specify. For example, you might wish to see all the references to a
650 certain variable in a program source file, highlight certain parts in
651 a voluminous output of some program, or make certain names stand out
652 in an article. Use the @kbd{M-x hi-lock-mode} command to enable (or
653 disable) Hi Lock mode. To enable Hi Lock mode for all buffers, use
654 @kbd{M-x global-hi-lock-mode} or place @code{(global-hi-lock-mode 1)}
655 in your @file{.emacs} file.
656
657 Hi Lock mode works like Font Lock mode (@pxref{Font Lock}), except
658 that you specify explicitly the regular expressions to highlight. You
659 control them with these commands:
660
661 @table @kbd
662 @item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
663 @kindex C-x w h
664 @findex highlight-regexp
665 Highlight text that matches @var{regexp} using face @var{face}
666 (@code{highlight-regexp}). The highlighting will remain as long as
667 the buffer is loaded. For example, to highlight all occurrences of
668 the word ``whim'' using the default face (a yellow background)
669 @kbd{C-x w h whim @key{RET} @key{RET}}. Any face can be used for
670 highlighting, Hi Lock provides several of its own and these are
671 pre-loaded into a history list. While being prompted for a face use
672 @kbd{M-p} and @kbd{M-n} to cycle through them.
673
674 You can use this command multiple times, specifying various regular
675 expressions to highlight in different ways.
676
677 @item C-x w r @var{regexp} @key{RET}
678 @kindex C-x w r
679 @findex unhighlight-regexp
680 Unhighlight @var{regexp} (@code{unhighlight-regexp}).
681
682 If you invoke this from the menu, you select the expression to
683 unhighlight from a list. If you invoke this from the keyboard, you
684 use the minibuffer. It will show the most recently added regular
685 expression; use @kbd{M-p} to show the next older expression and
686 @kbd{M-n} to select the next newer expression. (You can also type the
687 expression by hand, with completion.) When the expression you want to
688 unhighlight appears in the minibuffer, press @kbd{@key{RET}} to exit
689 the minibuffer and unhighlight it.
690
691 @item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
692 @kindex C-x w l
693 @findex highlight-lines-matching-regexp
694 @cindex lines, highlighting
695 @cindex highlighting lines of text
696 Highlight entire lines containing a match for @var{regexp}, using face
697 @var{face} (@code{highlight-lines-matching-regexp}).
698
699 @item C-x w b
700 @kindex C-x w b
701 @findex hi-lock-write-interactive-patterns
702 Insert all the current highlighting regexp/face pairs into the buffer
703 at point, with comment delimiters to prevent them from changing your
704 program. (This key binding runs the
705 @code{hi-lock-write-interactive-patterns} command.)
706
707 These patterns are extracted from the comments, if appropriate, if you
708 invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while
709 Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}).
710
711 @item C-x w i
712 @kindex C-x w i
713 @findex hi-lock-find-patterns
714 Extract regexp/face pairs from comments in the current buffer
715 (@code{hi-lock-find-patterns}). Thus, you can enter patterns
716 interactively with @code{highlight-regexp}, store them into the file
717 with @code{hi-lock-write-interactive-patterns}, edit them (perhaps
718 including different faces for different parenthesized parts of the
719 match), and finally use this command (@code{hi-lock-find-patterns}) to
720 have Hi Lock highlight the edited patterns.
721
722 @vindex hi-lock-file-patterns-policy
723 The variable @code{hi-lock-file-patterns-policy} controls whether Hi
724 Lock mode should automatically extract and highlight patterns found in
725 a file when it is visited. Its value can be @code{nil} (never
726 highlight), @code{t} (highlight the patterns), @code{ask} (query the
727 user), or a function. If it is a function,
728 @code{hi-lock-find-patterns} calls it with the patterns as argument;
729 if the function returns non-@code{nil}, the patterns are used. The
730 default is @code{nil}. Note that patterns are always highlighted if
731 you call @code{hi-lock-find-patterns} directly, regardless of the
732 value of this variable.
733
734 @vindex hi-lock-exclude-modes
735 Also, @code{hi-lock-find-patterns} does nothing if the current major
736 mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
737 @end table
738
739 @node Fringes
740 @section Window Fringes
741 @cindex fringes
742
743 On a graphical display, each Emacs window normally has narrow
744 @dfn{fringes} on the left and right edges. The fringes display
745 indications about the text in the window.
746
747 The most common use of the fringes is to indicate a continuation
748 line, when one line of text is split into multiple lines on the
749 screen. The left fringe shows a curving arrow for each screen line
750 except the first, indicating that ``this is not the real beginning.''
751 The right fringe shows a curving arrow for each screen line except the
752 last, indicating that ``this is not the real end.''
753
754 The fringes indicate line truncation with short horizontal arrows
755 meaning ``there's more text on this line which is scrolled
756 horizontally out of view;'' clicking the mouse on one of the arrows
757 scrolls the display horizontally in the direction of the arrow. The
758 fringes can also indicate other things, such as empty lines, or where a
759 program you are debugging is executing (@pxref{Debuggers}).
760
761 @findex set-fringe-style
762 @findex fringe-mode
763 You can enable and disable the fringes for all frames using
764 @kbd{M-x fringe-mode}. To enable and disable the fringes
765 for the selected frame, use @kbd{M-x set-fringe-style}.
766
767 @node Displaying Boundaries
768 @section Displaying Boundaries
769
770 @vindex indicate-buffer-boundaries
771 On a graphical display, Emacs can indicate the buffer boundaries in
772 the fringes. It indicates the first line and the last line with
773 angle images in the fringes. This can be combined with up and down
774 arrow images which say whether it is possible to scroll the window up
775 and down.
776
777 The buffer-local variable @code{indicate-buffer-boundaries} controls
778 how the buffer boundaries and window scrolling is indicated in the
779 fringes. If the value is @code{left} or @code{right}, both angle and
780 arrow bitmaps are displayed in the left or right fringe, respectively.
781
782 If value is an alist, each element @code{(@var{indicator} .
783 @var{position})} specifies the position of one of the indicators.
784 The @var{indicator} must be one of @code{top}, @code{bottom},
785 @code{up}, @code{down}, or @code{t} which specifies the default
786 position for the indicators not present in the alist.
787 The @var{position} is one of @code{left}, @code{right}, or @code{nil}
788 which specifies not to show this indicator.
789
790 For example, @code{((top . left) (t . right))} places the top angle
791 bitmap in left fringe, the bottom angle bitmap in right fringe, and
792 both arrow bitmaps in right fringe. To show just the angle bitmaps in
793 the left fringe, but no arrow bitmaps, use @code{((top . left)
794 (bottom . left))}.
795
796 @vindex default-indicate-buffer-boundaries
797 The value of the variable @code{default-indicate-buffer-boundaries}
798 is the default value for @code{indicate-buffer-boundaries} in buffers
799 that do not override it.
800
801 @node Useless Whitespace
802 @section Useless Whitespace
803
804 @cindex trailing whitespace
805 @cindex whitespace, trailing
806 @vindex show-trailing-whitespace
807 It is easy to leave unnecessary spaces at the end of a line, or
808 empty lines at the end of a file, without realizing it. In most
809 cases, this @dfn{trailing whitespace} has no effect, but there are
810 special circumstances where it matters. It can also be a nuisance
811 that the line has ``changed,'' when the change is just spaces added or
812 removed at the end.
813
814 You can make trailing whitespace at the end of a line visible on the
815 screen by setting the buffer-local variable
816 @code{show-trailing-whitespace} to @code{t}. Then Emacs displays
817 trailing whitespace in the face @code{trailing-whitespace}.
818
819 This feature does not apply when point is at the end of the line
820 containing the whitespace. Strictly speaking, that is ``trailing
821 whitespace'' nonetheless, but displaying it specially in that case
822 looks ugly while you are typing in new text. In this special case,
823 the location of point is enough to show you that the spaces are
824 present.
825
826 @findex delete-trailing-whitespace
827 To delete all trailing whitespace within the current buffer's
828 accessible portion (@pxref{Narrowing}), type @kbd{M-x
829 delete-trailing-whitespace @key{RET}}. (This command does not remove
830 the form-feed characters.)
831
832 @vindex indicate-empty-lines
833 @vindex default-indicate-empty-lines
834 @cindex unused lines
835 @cindex fringes, and unused line indication
836 Emacs can indicate unused lines at the end of the window with a
837 small image in the left fringe (@pxref{Fringes}). The image appears
838 for window lines that do not correspond to any buffer text. Blank
839 lines at the end of the buffer then stand out because they do not have
840 this image in the fringe.
841
842 To enable this feature, set the buffer-local variable
843 @code{indicate-empty-lines} to a non-@code{nil} value. The default
844 value of this variable is controlled by the variable
845 @code{default-indicate-empty-lines}; by setting that variable, you
846 can enable or disable this feature for all new buffers. (This feature
847 currently doesn't work on text-only terminals.)
848
849 @node Selective Display
850 @section Selective Display
851 @cindex selective display
852 @findex set-selective-display
853 @kindex C-x $
854
855 Emacs has the ability to hide lines indented more than a certain number
856 of columns (you specify how many columns). You can use this to get an
857 overview of a part of a program.
858
859 To hide lines in the current buffer, type @kbd{C-x $}
860 (@code{set-selective-display}) with a numeric argument @var{n}. Then
861 lines with at least @var{n} columns of indentation disappear from the
862 screen. The only indication of their presence is that three dots
863 (@samp{@dots{}}) appear at the end of each visible line that is
864 followed by one or more hidden ones.
865
866 The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as
867 if they were not there.
868
869 The hidden lines are still present in the buffer, and most editing
870 commands see them as usual, so you may find point in the middle of the
871 hidden text. When this happens, the cursor appears at the end of the
872 previous line, after the three dots. If point is at the end of the
873 visible line, before the newline that ends it, the cursor appears before
874 the three dots.
875
876 To make all lines visible again, type @kbd{C-x $} with no argument.
877
878 @vindex selective-display-ellipses
879 If you set the variable @code{selective-display-ellipses} to
880 @code{nil}, the three dots do not appear at the end of a line that
881 precedes hidden lines. Then there is no visible indication of the
882 hidden lines. This variable becomes local automatically when set.
883
884 See also @ref{Outline Mode} for another way to hide part of
885 the text in a buffer.
886
887 @node Optional Mode Line
888 @section Optional Mode Line Features
889
890 @cindex buffer size display
891 @cindex display of buffer size
892 @findex size-indication-mode
893 The buffer percentage @var{pos} indicates the percentage of the
894 buffer above the top of the window. You can additionally display the
895 size of the buffer by typing @kbd{M-x size-indication-mode} to turn on
896 Size Indication mode. The size will be displayed immediately
897 following the buffer percentage like this:
898
899 @example
900 @var{POS} of @var{SIZE}
901 @end example
902
903 @noindent
904 Here @var{SIZE} is the human readable representation of the number of
905 characters in the buffer, which means that @samp{k} for 10^3, @samp{M}
906 for 10^6, @samp{G} for 10^9, etc., are used to abbreviate.
907
908 @cindex narrowing, and buffer size display
909 If you have narrowed the buffer (@pxref{Narrowing}), the size of the
910 accessible part of the buffer is shown.
911
912 @cindex line number display
913 @cindex display of line number
914 @findex line-number-mode
915 The current line number of point appears in the mode line when Line
916 Number mode is enabled. Use the command @kbd{M-x line-number-mode} to
917 turn this mode on and off; normally it is on. The line number appears
918 after the buffer percentage @var{pos}, with the letter @samp{L} to
919 indicate what it is.
920
921 @cindex Column Number mode
922 @cindex mode, Column Number
923 @findex column-number-mode
924 Similarly, you can display the current column number by turning on
925 Column number mode with @kbd{M-x column-number-mode}. The column
926 number is indicated by the letter @samp{C}. However, when both of
927 these modes are enabled, the line and column numbers are displayed in
928 parentheses, the line number first, rather than with @samp{L} and
929 @samp{C}. For example: @samp{(561,2)}. @xref{Minor Modes}, for more
930 information about minor modes and about how to use these commands.
931
932 @cindex narrowing, and line number display
933 If you have narrowed the buffer (@pxref{Narrowing}), the displayed
934 line number is relative to the accessible portion of the buffer.
935 Thus, it isn't suitable as an argument to @code{goto-line}. (Use
936 @code{what-line} command to see the line number relative to the whole
937 file.)
938
939 @vindex line-number-display-limit
940 If the buffer is very large (larger than the value of
941 @code{line-number-display-limit}), then the line number doesn't appear.
942 Emacs doesn't compute the line number when the buffer is large, because
943 that would be too slow. Set it to @code{nil} to remove the limit.
944
945 @vindex line-number-display-limit-width
946 Line-number computation can also be slow if the lines in the buffer
947 are too long. For this reason, Emacs normally doesn't display line
948 numbers if the average width, in characters, of lines near point is
949 larger than the value of the variable
950 @code{line-number-display-limit-width}. The default value is 200
951 characters.
952
953 @findex display-time
954 @cindex time (on mode line)
955 Emacs can optionally display the time and system load in all mode
956 lines. To enable this feature, type @kbd{M-x display-time} or customize
957 the option @code{display-time-mode}. The information added to the mode
958 line usually appears after the buffer name, before the mode names and
959 their parentheses. It looks like this:
960
961 @example
962 @var{hh}:@var{mm}pm @var{l.ll}
963 @end example
964
965 @noindent
966 @vindex display-time-24hr-format
967 Here @var{hh} and @var{mm} are the hour and minute, followed always by
968 @samp{am} or @samp{pm}. @var{l.ll} is the average number of running
969 processes in the whole system recently. (Some fields may be missing if
970 your operating system cannot support them.) If you prefer time display
971 in 24-hour format, set the variable @code{display-time-24hr-format}
972 to @code{t}.
973
974 @cindex mail (on mode line)
975 @vindex display-time-use-mail-icon
976 @vindex display-time-mail-face
977 @vindex display-time-mail-file
978 @vindex display-time-mail-directory
979 The word @samp{Mail} appears after the load level if there is mail
980 for you that you have not read yet. On a graphical display you can use
981 an icon instead of @samp{Mail} by customizing
982 @code{display-time-use-mail-icon}; this may save some space on the mode
983 line. You can customize @code{display-time-mail-face} to make the mail
984 indicator prominent. Use @code{display-time-mail-file} to specify
985 the mail file to check, or set @code{display-time-mail-directory}
986 to specify the directory to check for incoming mail (any nonempty regular
987 file in the directory is considered as ``newly arrived mail'').
988
989 @cindex mode line, 3D appearance
990 @cindex attributes of mode line, changing
991 @cindex non-integral number of lines in a window
992 By default, the mode line is drawn on graphics displays with
993 3D-style highlighting, like that of a button when it is not being
994 pressed. If you don't like this effect, you can disable the 3D
995 highlighting of the mode line, by customizing the attributes of the
996 @code{mode-line} face. @xref{Face Customization}.
997
998 @cindex non-selected windows, mode line appearance
999 By default, the mode line of nonselected windows is displayed in a
1000 different face, called @code{mode-line-inactive}. Only the selected
1001 window is displayed in the @code{mode-line} face. This helps show
1002 which window is selected. When the minibuffer is selected, since
1003 it has no mode line, the window from which you activated the minibuffer
1004 has its mode line displayed using @code{mode-line}; as a result,
1005 ordinary entry to the minibuffer does not change any mode lines.
1006
1007 @vindex mode-line-in-non-selected-windows
1008 You can disable use of @code{mode-line-inactive} by setting variable
1009 @code{mode-line-in-non-selected-windows} to @code{nil}; then all mode
1010 lines are displayed in the @code{mode-line} face.
1011
1012 @vindex eol-mnemonic-unix
1013 @vindex eol-mnemonic-dos
1014 @vindex eol-mnemonic-mac
1015 @vindex eol-mnemonic-undecided
1016 You can customize the mode line display for each of the end-of-line
1017 formats by setting each of the variables @code{eol-mnemonic-unix},
1018 @code{eol-mnemonic-dos}, @code{eol-mnemonic-mac}, and
1019 @code{eol-mnemonic-undecided} to the strings you prefer.
1020
1021 @node Text Display
1022 @section How Text Is Displayed
1023 @cindex characters (in text)
1024
1025 @acronym{ASCII} printing characters (octal codes 040 through 0176) in Emacs
1026 buffers are displayed with their graphics, as are non-ASCII multibyte
1027 printing characters (octal codes above 0400).
1028
1029 Some @acronym{ASCII} control characters are displayed in special ways. The
1030 newline character (octal code 012) is displayed by starting a new line.
1031 The tab character (octal code 011) is displayed by moving to the next
1032 tab stop column (normally every 8 columns).
1033
1034 Other @acronym{ASCII} control characters are normally displayed as a caret
1035 (@samp{^}) followed by the non-control version of the character; thus,
1036 control-A is displayed as @samp{^A}. The caret appears in face
1037 @code{escape-glyph}.
1038
1039 Non-@acronym{ASCII} characters 0200 through 0237 (octal) are
1040 displayed with octal escape sequences; thus, character code 0230
1041 (octal) is displayed as @samp{\230}. The backslash appears in face
1042 @code{escape-glyph}.
1043
1044 @vindex ctl-arrow
1045 If the variable @code{ctl-arrow} is @code{nil}, control characters in
1046 the buffer are displayed with octal escape sequences, except for newline
1047 and tab. Altering the value of @code{ctl-arrow} makes it local to the
1048 current buffer; until that time, the default value is in effect. The
1049 default is initially @code{t}.
1050
1051 The display of character codes 0240 through 0377 (octal) may be
1052 either as escape sequences or as graphics. They do not normally occur
1053 in multibyte buffers, but if they do, they are displayed as Latin-1
1054 graphics. In unibyte mode, if you enable European display they are
1055 displayed using their graphics (assuming your terminal supports them),
1056 otherwise as escape sequences. @xref{Unibyte Mode}.
1057
1058 @vindex nobreak-char-display
1059 @cindex no-break space, display
1060 @cindex no-break hyphen, display
1061 @cindex soft hyphen, display
1062 Some character sets define ``no-break'' versions of the space and
1063 hyphen characters, which are used where a line should not be broken.
1064 Emacs normally displays these characters with special faces
1065 (respectively, @code{nobreak-space} and @code{escape-glyph}) to
1066 distinguish them from ordinary spaces and hyphens. You can turn off
1067 this feature by setting the variable @code{nobreak-char-display} to
1068 @code{nil}. If you set the variable to any other value, that means to
1069 prefix these characters with an escape character.
1070
1071 @vindex tab-width
1072 @vindex default-tab-width
1073 Normally, a tab character in the buffer is displayed as whitespace which
1074 extends to the next display tab stop position, and display tab stops come
1075 at intervals equal to eight spaces. The number of spaces per tab is
1076 controlled by the variable @code{tab-width}, which is made local by
1077 changing it. Note that how the tab character
1078 in the buffer is displayed has nothing to do with the definition of
1079 @key{TAB} as a command. The variable @code{tab-width} must have an
1080 integer value between 1 and 1000, inclusive. The variable
1081 @code{default-tab-width} controls the default value of this variable
1082 for buffers where you have not set it locally.
1083
1084 You can customize the way any particular character code is displayed
1085 by means of a display table. @xref{Display Tables,, Display Tables,
1086 elisp, The Emacs Lisp Reference Manual}.
1087
1088 @node Cursor Display
1089 @section Displaying the Cursor
1090
1091 @findex blink-cursor-mode
1092 @vindex blink-cursor-alist
1093 @cindex cursor, locating visually
1094 @cindex cursor, blinking
1095 You can customize the cursor's color, and whether it blinks, using
1096 the @code{cursor} Custom group (@pxref{Easy Customization}). On
1097 a graphical display, the command @kbd{M-x blink-cursor-mode} enables
1098 or disables the blinking of the cursor. (On text terminals, the
1099 terminal itself blinks the cursor, and Emacs has no control over it.)
1100 You can control how the cursor appears when it blinks off by setting
1101 the variable @code{blink-cursor-alist}.
1102
1103 @vindex visible-cursor
1104 Some text terminals offer two different cursors: the normal cursor
1105 and the very visible cursor, where the latter may be e.g. bigger or
1106 blinking. By default Emacs uses the very visible cursor, and switches
1107 to it when you start or resume Emacs. If the variable
1108 @code{visible-cursor} is @code{nil} when Emacs starts or resumes, it
1109 doesn't switch, so it uses the normal cursor.
1110
1111 @cindex cursor in non-selected windows
1112 @vindex cursor-in-non-selected-windows
1113 Normally, the cursor appears in non-selected windows without
1114 blinking, with the same appearance as when the blinking cursor blinks
1115 ``off.'' For a box cursor, this is a hollow box; for a bar cursor,
1116 this is a thinner bar. To turn off cursors in non-selected windows,
1117 customize the variable @code{cursor-in-non-selected-windows} and
1118 assign it a @code{nil} value.
1119
1120 @vindex x-stretch-cursor
1121 @cindex wide block cursor
1122 On graphical displays, Emacs can optionally draw the block cursor
1123 as wide as the character under the cursor---for example, if the cursor
1124 is on a tab character, it would cover the full width occupied by that
1125 tab character. To enable this feature, set the variable
1126 @code{x-stretch-cursor} to a non-@code{nil} value.
1127
1128 @findex hl-line-mode
1129 @findex global-hl-line-mode
1130 @cindex highlight current line
1131 To make the cursor even more visible, you can use HL Line mode, a
1132 minor mode that highlights the line containing point. Use @kbd{M-x
1133 hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x
1134 global-hl-line-mode} enables or disables the same mode globally.
1135
1136 @node Line Truncation
1137 @section Truncation of Lines
1138
1139 @cindex truncation
1140 @cindex line truncation, and fringes
1141 As an alternative to continuation, Emacs can display long lines by
1142 @dfn{truncation}. This means that all the characters that do not fit
1143 in the width of the screen or window do not appear at all. On
1144 graphical displays, a small straight arrow in the fringe indicates
1145 truncation at either end of the line. On text-only terminals, @samp{$}
1146 appears in the first column when there is text truncated to the left,
1147 and in the last column when there is text truncated to the right.
1148
1149 @vindex truncate-lines
1150 @findex toggle-truncate-lines
1151 Horizontal scrolling automatically causes line truncation
1152 (@pxref{Horizontal Scrolling}). You can explicitly enable line
1153 truncation for a particular buffer with the command @kbd{M-x
1154 toggle-truncate-lines}. This works by locally changing the variable
1155 @code{truncate-lines}. If that variable is non-@code{nil}, long lines
1156 are truncated; if it is @code{nil}, they are continued onto multiple
1157 screen lines. Setting the variable @code{truncate-lines} in any way
1158 makes it local to the current buffer; until that time, the default
1159 value is in effect. The default value is normally @code{nil}.
1160
1161 @c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows.
1162 If the variable @code{truncate-partial-width-windows} is
1163 non-@code{nil}, it forces truncation rather than continuation in any
1164 window less than the full width of the screen or frame, regardless of
1165 the value of @code{truncate-lines}. For information about side-by-side
1166 windows, see @ref{Split Window}. See also @ref{Display,, Display,
1167 elisp, The Emacs Lisp Reference Manual}.
1168
1169 @vindex overflow-newline-into-fringe
1170 If the variable @code{overflow-newline-into-fringe} is
1171 non-@code{nil} on a graphical display, then Emacs does not continue or
1172 truncate a line which is exactly as wide as the window. Instead, the
1173 newline overflows into the right fringe, and the cursor appears in the
1174 fringe when positioned on that newline.
1175
1176 @node Visual Line Mode
1177 @section Visual Line Mode
1178
1179 @cindex word wrap
1180 Another alternative to ordinary line continuation is to use
1181 @dfn{word wrap}. Here, each long logical line is divided into two or
1182 more screen lines, like in ordinary line continuation. However, Emacs
1183 attempts to wrap the line at word boundaries near the right window
1184 edge. This makes the text easier to read, as wrapping does not occur
1185 in the middle of words.
1186
1187 @cindex Visual Line mode
1188 @findex visual-line-mode
1189 @findex global-visual-line-mode
1190 Word wrap is enabled by Visual Line mode, an optional minor mode.
1191 To turn on Visual Line mode in the current buffer, type @kbd{M-x
1192 visual-line-mode}; repeating this command turns it off. You can also
1193 turn on Visual Line mode using the menu bar: in the Options menu,
1194 select the @samp{Line Wrapping in this Buffer} submenu, followed by
1195 the @samp{Word Wrap (Visual Line Mode)} menu item. While Visual Line
1196 mode is enabled, the mode-line shows the string @samp{wrap} in the
1197 mode display. The command @kbd{M-x global-visual-line-mode} toggles
1198 Visual Line mode in all buffers.
1199
1200 @findex beginning-of-visual-line
1201 @findex end-of-visual-line
1202 @findex next-logical-line
1203 @findex previous-logical-line
1204 In Visual Line mode, some editing commands work on screen lines
1205 instead of logical lines: @kbd{C-a} (@code{beginning-of-visual-line})
1206 moves to the beginning of the screen line, @kbd{C-e}
1207 (@code{end-of-visual-line}) moves to the end of the screen line, and
1208 @kbd{C-k} (@code{kill-visual-line}) kills text to the end of the
1209 screen line. Furthermore, the commands @kbd{M-]}
1210 (@code{next-logical-line}) and @kbd{M-[}
1211 (@code{previous-logical-line}) move point to the next logical line and
1212 previous logical line respectively.
1213
1214 By default, word-wrapped lines do not display fringe indicators.
1215 Visual Line mode is often used to edit files that contain many long
1216 logical lines, so having a fringe indicator for each wrapped line
1217 would be visually distracting. You can change this by customizing the
1218 variable @code{visual-line-fringe-indicators}.
1219
1220 @node Temporary Face Changes
1221 @section Temporary Face Changes
1222
1223 These are commands which temporarily change the default face used to
1224 display text in a buffer.
1225
1226 @cindex adjust buffer face height
1227 @findex text-scale-adjust
1228 @kindex C-x C-+
1229 @kindex C-x C--
1230 @kindex C-x C-=
1231 @kindex C-x C-0
1232 To increase the height of the default face in the current buffer one
1233 step, type @kbd{C-x C-+} or @kbd{C-x C-=}. To decrease it one step,
1234 type @kbd{C-x C--}. To restore the default (global) face height, type
1235 @kbd{C-x C-0}. These keys are all bound to the same command,
1236 @code{text-scale-adjust}, which looks at the last key typed to
1237 determine the adjustment to make.
1238
1239 The final key of these commands may be repeated without the leading
1240 @kbd{C-x} -- for instance, @kbd{C-x C-= C-= C-=} increases the face
1241 height by three steps.
1242
1243 Each step scales the height of the default face by the value of the
1244 variable @code{text-scale-mode-step} (a negative number of steps
1245 decreases the height by the same amount). As a special case, an
1246 argument of 0 will remove any scaling currently active.
1247
1248 This command is a special-purpose wrapper around the
1249 @code{text-scale-increase} command which makes repetition convenient
1250 even when it is bound in a non-top-level keymap. For binding in a
1251 top-level keymap, @code{text-scale-increase} or
1252 @code{text-scale-decrease} may be more appropriate."
1253
1254 @cindex increase buffer face height
1255 @findex text-scale-increase
1256 @cindex decrease buffer face height
1257 @findex text-scale-decrease
1258 The @code{text-scale-increase} and @code{text-scale-decrease} commands
1259 increase or decrease the height of the default face in the current
1260 buffer by one step. With a numeric prefix argument, the size will be
1261 increased/decreased by that many steps; each step scales the font
1262 height by the value of the variable @code{text-scale-mode-step}. If
1263 repeated, this command has a cumulative effect. As a special case, a
1264 prefix argument of 0 will remove any scaling currently active.
1265
1266 @findex text-scale-mode
1267 These commands automatically enable or disable the
1268 @code{text-scale-mode} minor-mode, depending on whether the current
1269 font scaling is other than 1 or not.
1270
1271 @cindex variable pitch mode
1272 @findex variable-pitch-mode
1273 To temporarily change the display face in the current buffer to a
1274 variable-pitch (``proportional'') font, use the command @kbd{M-x
1275 variable-pitch-mode} to enable or disable the Variable Pitch minor
1276 mode.
1277
1278 @node Display Custom
1279 @section Customization of Display
1280
1281 This section describes variables (@pxref{Variables}) that you can
1282 change to customize how Emacs displays. Beginning users can skip
1283 it.
1284 @c the reason for that pxref is because an xref early in the
1285 @c ``echo area'' section leads here.
1286
1287 @vindex inverse-video
1288 If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
1289 to invert all the lines of the display from what they normally are.
1290
1291 @vindex visible-bell
1292 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
1293 to make the whole screen blink when it would normally make an audible bell
1294 sound. This variable has no effect if your terminal does not have a way
1295 to make the screen blink.
1296
1297 @vindex echo-keystrokes
1298 The variable @code{echo-keystrokes} controls the echoing of multi-character
1299 keys; its value is the number of seconds of pause required to cause echoing
1300 to start, or zero, meaning don't echo at all. The value takes effect when
1301 there is someting to echo. @xref{Echo Area}.
1302
1303 @vindex baud-rate
1304 The variable @anchor{baud-rate}@code{baud-rate} holds the output
1305 speed of the terminal, as far as Emacs knows. Setting this variable
1306 does not change the speed of actual data transmission, but the value
1307 is used for calculations. On text-only terminals, it affects padding,
1308 and decisions about whether to scroll part of the screen or redraw it
1309 instead. It also affects the behavior of incremental search.
1310
1311 On graphical displays, @code{baud-rate} is only used to determine
1312 how frequently to look for pending input during display updating. A
1313 higher value of @code{baud-rate} means that check for pending input
1314 will be done less frequently.
1315
1316 @cindex hourglass pointer display
1317 @vindex hourglass-delay
1318 On graphical display, Emacs can optionally display the mouse pointer
1319 in a special shape to say that Emacs is busy. To turn this feature on
1320 or off, customize the group @code{cursor}. You can also control the
1321 amount of time Emacs must remain busy before the busy indicator is
1322 displayed, by setting the variable @code{hourglass-delay}.
1323
1324 @vindex overline-margin
1325 On graphical display, the variable @code{overline-margin} specifies the vertical position
1326 of an overline above the text, including the height of the overline
1327 itself (1 pixel). The default value is 2 pixels.
1328
1329 @vindex x-underline-at-descent-line
1330 On graphical display, Emacs normally draws an underline at the
1331 baseline level of the font. If @code{x-underline-at-descent-line} is
1332 non-@code{nil}, Emacs draws the underline at the same height as the
1333 font's descent line.
1334
1335 @findex tty-suppress-bold-inverse-default-colors
1336 On some text-only terminals, bold face and inverse video together
1337 result in text that is hard to read. Call the function
1338 @code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil}
1339 argument to suppress the effect of bold-face in this case.
1340
1341 @vindex no-redraw-on-reenter
1342 On a text-only terminal, when you reenter Emacs after suspending, Emacs
1343 normally clears the screen and redraws the entire display. On some
1344 terminals with more than one page of memory, it is possible to arrange
1345 the termcap entry so that the @samp{ti} and @samp{te} strings (output
1346 to the terminal when Emacs is entered and exited, respectively) switch
1347 between pages of memory so as to use one page for Emacs and another
1348 page for other output. On such terminals, you might want to set the variable
1349 @code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
1350 assume, when resumed, that the screen page it is using still contains
1351 what Emacs last wrote there.
1352
1353 @ignore
1354 arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4
1355 @end ignore