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