summaryrefslogtreecommitdiff
path: root/doc/emacs/display.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/emacs/display.texi')
-rw-r--r--doc/emacs/display.texi1259
1 files changed, 1259 insertions, 0 deletions
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
new file mode 100644
index 00000000000..d4d2945d584
--- /dev/null
+++ b/doc/emacs/display.texi
@@ -0,0 +1,1259 @@
+@c This is part of the Emacs manual.
+@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
+@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+@c See file emacs.texi for copying conditions.
+@node Display, Search, Registers, Top
+@chapter Controlling the Display
+
+ Since only part of a large buffer fits in the window, Emacs tries to
+show a part that is likely to be interesting. Display-control
+commands allow you to specify which part of the text you want to see,
+and how to display it. Many variables also affect the details of
+redisplay. Unless otherwise stated, the variables described in this
+chapter have their effect by customizing redisplay itself; therefore,
+their values only make a difference at the time of redisplay.
+
+@menu
+* Scrolling:: Commands to move text up and down in a window.
+* Auto Scrolling:: Redisplay scrolls text automatically when needed.
+* Horizontal Scrolling:: Moving text left and right in a window.
+* Follow Mode:: Follow mode lets two windows scroll as one.
+* Faces:: How to change the display style using faces.
+* Standard Faces:: Emacs' predefined faces.
+* Font Lock:: Minor mode for syntactic highlighting using faces.
+* Highlight Interactively:: Tell Emacs what text to highlight.
+* Fringes:: Enabling or disabling window fringes.
+* Displaying Boundaries:: Displaying top and bottom of the buffer.
+* Useless Whitespace:: Showing possibly-spurious trailing whitespace.
+* Selective Display:: Hiding lines with lots of indentation.
+* Optional Mode Line:: Optional mode line display features.
+* Text Display:: How text characters are normally displayed.
+* Cursor Display:: Features for displaying the cursor.
+* Line Truncation:: Truncating lines to fit the screen width instead
+ of continuing them to multiple screen lines.
+* Display Custom:: Information on variables for customizing display.
+@end menu
+
+@node Scrolling
+@section Scrolling
+
+ If a buffer contains text that is too large to fit entirely within a
+window that is displaying the buffer, Emacs shows a contiguous portion of
+the text. The portion shown always contains point.
+
+@cindex scrolling
+ @dfn{Scrolling} means moving text up or down in the window so that
+different parts of the text are visible. Scrolling ``forward'' or
+``up'' means that text moves up, and new text appears at the bottom.
+Scrolling ``backward'' or ``down'' moves text down, and new text
+appears at the top.
+
+ Scrolling happens automatically if you move point past the bottom or
+top of the window. You can also scroll explicitly with the commands
+in this section.
+
+@table @kbd
+@item C-l
+Clear screen and redisplay, scrolling the selected window to center
+point vertically within it (@code{recenter}).
+@item C-v
+Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
+@item @key{NEXT}
+@itemx @key{PAGEDOWN}
+Likewise, scroll forward.
+@item M-v
+Scroll backward (@code{scroll-down}).
+@item @key{PRIOR}
+@itemx @key{PAGEUP}
+Likewise, scroll backward.
+@item @var{arg} C-l
+Scroll so point is on line @var{arg} (@code{recenter}).
+@item C-M-l
+Scroll heuristically to bring useful information onto the screen
+(@code{reposition-window}).
+@end table
+
+@kindex C-l
+@findex recenter
+ The most basic scrolling command is @kbd{C-l} (@code{recenter}) with
+no argument. It scrolls the selected window so that point is halfway
+down from the top of the window. On a text terminal, it also clears
+the screen and redisplays all windows. That is useful in case the
+screen is garbled (@pxref{Screen Garbled}).
+
+@kindex C-v
+@kindex M-v
+@kindex NEXT
+@kindex PRIOR
+@kindex PAGEDOWN
+@kindex PAGEUP
+@findex scroll-up
+@findex scroll-down
+ To read the buffer a windowful at a time, use @kbd{C-v}
+(@code{scroll-up}) with no argument. This scrolls forward by nearly
+the whole window height. The effect is to take the two lines at the
+bottom of the window and put them at the top, followed by nearly a
+whole windowful of lines that were not previously visible. If point
+was in the text that scrolled off the top, it ends up at the new top
+of the window.
+
+@vindex next-screen-context-lines
+ @kbd{M-v} (@code{scroll-down}) with no argument scrolls backward in
+a similar way, also with overlap. The number of lines of overlap that
+the @kbd{C-v} or @kbd{M-v} commands leave is controlled by the
+variable @code{next-screen-context-lines}; by default, it is 2. The
+function keys @key{NEXT} and @key{PRIOR}, or @key{PAGEDOWN} and
+@key{PAGEUP}, are equivalent to @kbd{C-v} and @kbd{M-v}.
+
+ The commands @kbd{C-v} and @kbd{M-v} with a numeric argument scroll
+the text in the selected window up or down a few lines. @kbd{C-v}
+with an argument moves the text and point up, together, that many
+lines; it brings the same number of new lines into view at the bottom
+of the window. @kbd{M-v} with numeric argument scrolls the text
+downward, bringing that many new lines into view at the top of the
+window. @kbd{C-v} with a negative argument is like @kbd{M-v} and vice
+versa.
+
+ The names of scroll commands are based on the direction that the
+text moves in the window. Thus, the command to scroll forward is
+called @code{scroll-up} because it moves the text upward on the
+screen. The keys @key{PAGEDOWN} and @key{PAGEUP} derive their names
+and customary meanings from a different convention that developed
+elsewhere; hence the strange result that @key{PAGEDOWN} runs
+@code{scroll-up}.
+
+@vindex scroll-preserve-screen-position
+ Some users like the full-screen scroll commands to keep point at the
+same screen line. To enable this behavior, set the variable
+@code{scroll-preserve-screen-position} to a non-@code{nil} value. In
+this mode, when these commands would scroll the text around point off
+the screen, or within @code{scroll-margin} lines of the edge, they
+move point to keep the same vertical position within the window.
+This mode is convenient for browsing through a file by scrolling by
+screenfuls; if you come back to the screen where you started, point
+goes back to the line where it started. However, this mode is
+inconvenient when you move to the next screen in order to move point
+to the text there.
+
+ Another way to do scrolling is with @kbd{C-l} with a numeric argument.
+@kbd{C-l} does not clear the screen when given an argument; it only scrolls
+the selected window. With a positive argument @var{n}, it repositions text
+to put point @var{n} lines down from the top. An argument of zero puts
+point on the very top line. Point does not move with respect to the text;
+rather, the text and point move rigidly on the screen. @kbd{C-l} with a
+negative argument puts point that many lines from the bottom of the window.
+For example, @kbd{C-u - 1 C-l} puts point on the bottom line, and @kbd{C-u
+- 5 C-l} puts it five lines from the bottom. @kbd{C-u C-l} scrolls to put
+point at the center (vertically) of the selected window.
+
+@kindex C-M-l
+@findex reposition-window
+ The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current
+window heuristically in a way designed to get useful information onto
+the screen. For example, in a Lisp file, this command tries to get the
+entire current defun onto the screen if possible.
+
+@node Auto Scrolling
+@section Automatic Scrolling
+
+@vindex scroll-conservatively
+ Redisplay scrolls the buffer automatically when point moves out of
+the visible portion of the text. The purpose of automatic scrolling
+is to make point visible, but you can customize many aspects of how
+this is done.
+
+ Normally, automatic scrolling centers point vertically within the
+window. However, if you set @code{scroll-conservatively} to a small
+number @var{n}, then if you move point just a little off the
+screen---less than @var{n} lines---then Emacs scrolls the text just
+far enough to bring point back on screen. By default,
+@code{scroll-conservatively} is@tie{}0.
+
+@cindex aggressive scrolling
+@vindex scroll-up-aggressively
+@vindex scroll-down-aggressively
+ When the window does scroll by a longer distance, you can control
+how aggressively it scrolls, by setting the variables
+@code{scroll-up-aggressively} and @code{scroll-down-aggressively}.
+The value of @code{scroll-up-aggressively} should be either
+@code{nil}, or a fraction @var{f} between 0 and 1. A fraction
+specifies where on the screen to put point when scrolling upward.
+More precisely, when a window scrolls up because point is above the
+window start, the new start position is chosen to put point @var{f}
+part of the window height from the top. The larger @var{f}, the more
+aggressive the scrolling.
+
+ @code{nil}, which is the default, scrolls to put point at the center.
+So it is equivalent to .5.
+
+ Likewise, @code{scroll-down-aggressively} is used for scrolling
+down. The value, @var{f}, specifies how far point should be placed
+from the bottom of the window; thus, as with
+@code{scroll-up-aggressively}, a larger value is more aggressive.
+
+@vindex scroll-margin
+ The variable @code{scroll-margin} restricts how close point can come
+to the top or bottom of a window. Its value is a number of screen
+lines; if point comes within that many lines of the top or bottom of the
+window, Emacs recenters the window. By default, @code{scroll-margin} is
+0.
+
+@node Horizontal Scrolling
+@section Horizontal Scrolling
+@cindex horizontal scrolling
+
+ @dfn{Horizontal scrolling} means shifting all the lines sideways
+within a window---so that some of the text near the left margin is not
+displayed at all. When the text in a window is scrolled horizontally,
+text lines are truncated rather than continued (@pxref{Line
+Truncation}). Whenever a window shows truncated lines, Emacs
+automatically updates its horizontal scrolling whenever point moves
+off the left or right edge of the screen. You can also use these
+commands to do explicit horizontal scrolling.
+
+@table @kbd
+@item C-x <
+Scroll text in current window to the left (@code{scroll-left}).
+@item C-x >
+Scroll to the right (@code{scroll-right}).
+@end table
+
+@kindex C-x <
+@kindex C-x >
+@findex scroll-left
+@findex scroll-right
+ The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
+window to the left by @var{n} columns with argument @var{n}. This moves
+part of the beginning of each line off the left edge of the window.
+With no argument, it scrolls by almost the full width of the window (two
+columns less, to be precise).
+
+ @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right. The
+window cannot be scrolled any farther to the right once it is displayed
+normally (with each line starting at the window's left margin);
+attempting to do so has no effect. This means that you don't have to
+calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large
+argument will restore the normal display.
+
+ If you use those commands to scroll a window horizontally, that sets
+a lower bound for automatic horizontal scrolling. Automatic scrolling
+will continue to scroll the window, but never farther to the right
+than the amount you previously set by @code{scroll-left}.
+
+@vindex hscroll-margin
+ The value of the variable @code{hscroll-margin} controls how close
+to the window's edges point is allowed to get before the window will
+be automatically scrolled. It is measured in columns. If the value
+is 5, then moving point within 5 columns of the edge causes horizontal
+scrolling away from that edge.
+
+@vindex hscroll-step
+ The variable @code{hscroll-step} determines how many columns to
+scroll the window when point gets too close to the edge. If it's
+zero, horizontal scrolling centers point horizontally within the
+window. If it's a positive integer, it specifies the number of
+columns to scroll by. If it's a floating-point number, it specifies
+the fraction of the window's width to scroll by. The default is zero.
+
+@vindex auto-hscroll-mode
+ To disable automatic horizontal scrolling, set the variable
+@code{auto-hscroll-mode} to @code{nil}.
+
+@node Follow Mode
+@section Follow Mode
+@cindex Follow mode
+@cindex mode, Follow
+@findex follow-mode
+@cindex windows, synchronizing
+@cindex synchronizing windows
+
+ @dfn{Follow mode} is a minor mode that makes two windows, both
+showing the same buffer, scroll as a single tall ``virtual window.''
+To use Follow mode, go to a frame with just one window, split it into
+two side-by-side windows using @kbd{C-x 3}, and then type @kbd{M-x
+follow-mode}. From then on, you can edit the buffer in either of the
+two windows, or scroll either one; the other window follows it.
+
+ In Follow mode, if you move point outside the portion visible in one
+window and into the portion visible in the other window, that selects
+the other window---again, treating the two as if they were parts of
+one large window.
+
+ To turn off Follow mode, type @kbd{M-x follow-mode} a second time.
+
+@node Faces
+@section Faces: Controlling Text Display Style
+@cindex faces
+
+ You can specify various styles for displaying text using
+@dfn{faces}. Each face can specify various @dfn{face attributes},
+such as the font family, the height, weight and slant of the
+characters, the foreground and background color, and underlining or
+overlining. A face does not have to specify all of these attributes;
+often it inherits most of them from another face.
+
+ On graphical display, all the Emacs face attributes are meaningful.
+On a text-only terminal, only some of them work. Some text-only
+terminals support inverse video, bold, and underline attributes; some
+support colors. Text-only terminals generally do not support changing
+the height and width or the font family.
+
+ Most major modes assign faces to the text automatically through the
+work of Font Lock mode. @xref{Font Lock}, for more information about
+Font Lock mode and syntactic highlighting. You can print the current
+buffer with the highlighting that appears on your screen using the
+command @code{ps-print-buffer-with-faces}. @xref{PostScript}.
+
+ You control the appearance of a part of the text in the buffer by
+specifying the face or faces to use for it. The style of display used
+for any given character is determined by combining the attributes of
+all the applicable faces specified for that character. Any attribute
+that isn't specified by these faces is taken from the @code{default} face,
+whose attributes reflect the default settings of the frame itself.
+
+ Enriched mode, the mode for editing formatted text, includes several
+commands and menus for specifying faces for text in the buffer.
+@xref{Format Faces}, for how to specify the font for text in the
+buffer. @xref{Format Colors}, for how to specify the foreground and
+background color.
+
+@cindex face colors, setting
+@findex set-face-foreground
+@findex set-face-background
+ To alter the appearance of a face, use the customization buffer.
+@xref{Face Customization}. You can also use X resources to specify
+attributes of particular faces (@pxref{Resources}). Alternatively,
+you can change the foreground and background colors of a specific face
+with @kbd{M-x set-face-foreground} and @kbd{M-x set-face-background}.
+These commands prompt in the minibuffer for a face name and a color
+name, with completion, and then set that face to use the specified
+color. Changing the colors of the @code{default} face also changes
+the foreground and background colors on all frames, both existing and
+those to be created in the future. (You can also set foreground and
+background colors for the current frame only; see @ref{Frame
+Parameters}.)
+
+ If you want to alter the appearance of all Emacs frames, you need to
+customize the frame parameters in the variable
+@code{default-frame-alist}; see @ref{Creating Frames,
+default-frame-alist}.
+
+ Emacs can correctly display variable-width fonts, but Emacs commands
+that calculate width and indentation do not know how to calculate
+variable widths. This can sometimes lead to incorrect results when
+you use variable-width fonts. In particular, indentation commands can
+give inconsistent results, so we recommend you avoid variable-width
+fonts for editing program source code. Filling will sometimes make
+lines too long or too short. We plan to address these issues in
+future Emacs versions.
+
+@node Standard Faces
+@section Standard Faces
+
+@findex list-faces-display
+ To see what faces are currently defined, and what they look like,
+type @kbd{M-x list-faces-display}. It's possible for a given face to
+look different in different frames; this command shows the appearance
+in the frame in which you type it. With a prefix argument, this
+prompts for a regular expression, and displays only faces with names
+matching that regular expression.
+
+ Here are the standard faces for specifying text appearance. You can
+apply them to specific text when you want the effects they produce.
+
+@table @code
+@item default
+This face is used for ordinary text that doesn't specify any face.
+@item bold
+This face uses a bold variant of the default font, if it has one.
+It's up to you to choose a default font that has a bold variant,
+if you want to use one.
+@item italic
+This face uses an italic variant of the default font, if it has one.
+@item bold-italic
+This face uses a bold italic variant of the default font, if it has one.
+@item underline
+This face underlines text.
+@item fixed-pitch
+This face forces use of a particular fixed-width font.
+@item variable-pitch
+This face forces use of a particular variable-width font. It's
+reasonable to customize this face to use a different variable-width font,
+if you like, but you should not make it a fixed-width font.
+@item shadow
+This face is used for making the text less noticeable than the surrounding
+ordinary text. Usually this can be achieved by using shades of gray in
+contrast with either black or white default foreground color.
+@end table
+
+ Here's an incomplete list of faces used to highlight parts of the
+text temporarily for specific purposes. (Many other modes define
+their own faces for this purpose.)
+
+@table @code
+@item highlight
+This face is used for highlighting portions of text, in various modes.
+For example, mouse-sensitive text is highlighted using this face.
+@item isearch
+This face is used for highlighting the current Isearch match.
+@item query-replace
+This face is used for highlighting the current Query Replace match.
+@item lazy-highlight
+This face is used for lazy highlighting of Isearch and Query Replace
+matches other than the current one.
+@item region
+This face is used for displaying a selected region (when Transient Mark
+mode is enabled---see below).
+@item secondary-selection
+This face is used for displaying a secondary X selection (@pxref{Secondary
+Selection}).
+@item trailing-whitespace
+The face for highlighting excess spaces and tabs at the end of a line
+when @code{show-trailing-whitespace} is non-@code{nil}; see
+@ref{Useless Whitespace}.
+@item nobreak-space
+The face for displaying the character ``nobreak space.''
+@item escape-glyph
+The face for highlighting the @samp{\} or @samp{^} that indicates
+a control character. It's also used when @samp{\} indicates a
+nobreak space or nobreak (soft) hyphen.
+@end table
+
+@cindex @code{region} face
+ When Transient Mark mode is enabled, the text of the region is
+highlighted when the mark is active. This uses the face named
+@code{region}; you can control the style of highlighting by changing the
+style of this face (@pxref{Face Customization}). @xref{Transient Mark},
+for more information about Transient Mark mode and activation and
+deactivation of the mark.
+
+ These faces control the appearance of parts of the Emacs frame.
+They exist as faces to provide a consistent way to customize the
+appearance of these parts of the frame.
+
+@table @code
+@item mode-line
+@itemx modeline
+This face is used for the mode line of the currently selected window,
+and for menu bars when toolkit menus are not used. By default, it's
+drawn with shadows for a ``raised'' effect on graphical displays, and
+drawn as the inverse of the default face on non-windowed terminals.
+@code{modeline} is an alias for the @code{mode-line} face, for
+compatibility with old Emacs versions.
+@item mode-line-inactive
+Like @code{mode-line}, but used for mode lines of the windows other
+than the selected one (if @code{mode-line-in-non-selected-windows} is
+non-@code{nil}). This face inherits from @code{mode-line}, so changes
+in that face affect mode lines in all windows.
+@item mode-line-highlight
+Like @code{highlight}, but used for portions of text on mode lines.
+@item mode-line-buffer-id
+This face is used for buffer identification parts in the mode line.
+@item header-line
+Similar to @code{mode-line} for a window's header line, which appears
+at the top of a window just as the mode line appears at the bottom.
+Most windows do not have a header line---only some special modes, such
+Info mode, create one.
+@item vertical-border
+This face is used for the vertical divider between windows.
+By default this face inherits from the @code{mode-line-inactive} face
+on character terminals. On graphical displays the foreground color of
+this face is used for the vertical line between windows without
+scrollbars.
+@item minibuffer-prompt
+@cindex @code{minibuffer-prompt} face
+@vindex minibuffer-prompt-properties
+This face is used for the prompt strings displayed in the minibuffer.
+By default, Emacs automatically adds this face to the value of
+@code{minibuffer-prompt-properties}, which is a list of text
+properties used to display the prompt text. (This variable takes
+effect when you enter the minibuffer.)
+@item fringe
+@cindex @code{fringe} face
+The face for the fringes to the left and right of windows on graphic
+displays. (The fringes are the narrow portions of the Emacs frame
+between the text area and the window's right and left borders.)
+@xref{Fringes}.
+@item scroll-bar
+This face determines the visual appearance of the scroll bar.
+@xref{Scroll Bars}.
+@item border
+This face determines the color of the frame border.
+@item cursor
+This face determines the color of the cursor.
+@item mouse
+This face determines the color of the mouse pointer.
+@item tool-bar
+This face determines the color of tool bar icons. @xref{Tool Bars}.
+@item tooltip
+This face is used for tooltips. @xref{Tooltips}.
+@item menu
+@cindex menu bar appearance
+@cindex @code{menu} face, no effect if customized
+@cindex customization of @code{menu} face
+This face determines the colors and font of Emacs's menus. @xref{Menu
+Bars}. Setting the font of LessTif/Motif menus is currently not
+supported; attempts to set the font are ignored in this case.
+Likewise, attempts to customize this face in Emacs built with GTK and
+in the MS-Windows/Mac ports are ignored by the respective GUI toolkits;
+you need to use system-wide styles and options to change the
+appearance of the menus.
+@end table
+
+@node Font Lock
+@section Font Lock mode
+@cindex Font Lock mode
+@cindex mode, Font Lock
+@cindex syntax highlighting and coloring
+
+ Font Lock mode is a minor mode, always local to a particular buffer,
+which highlights (or ``fontifies'') the buffer contents according to
+the syntax of the text you are editing. It can recognize comments and
+strings in most languages; in several languages, it can also recognize
+and properly highlight various other important constructs---for
+example, names of functions being defined or reserved keywords.
+Some special modes, such as Occur mode and Info mode, have completely
+specialized ways of assigning fonts for Font Lock mode.
+
+@findex font-lock-mode
+ Font Lock mode is turned on by default in all modes which support it.
+You can toggle font-lock for each buffer with the command @kbd{M-x
+font-lock-mode}. Using a positive argument unconditionally turns Font
+Lock mode on, and a negative or zero argument turns it off.
+
+@findex global-font-lock-mode
+@vindex global-font-lock-mode
+ If you do not wish Font Lock mode to be turned on by default,
+customize the variable @code{global-font-lock-mode} using the Customize
+interface (@pxref{Easy Customization}), or use the function
+@code{global-font-lock-mode} in your @file{.emacs} file, like this:
+
+@example
+(global-font-lock-mode 0)
+@end example
+
+@noindent
+This variable, like all the variables that control Font Lock mode,
+take effect whenever fontification is done; that is, potentially at
+any time.
+
+@findex turn-on-font-lock
+ If you have disabled Global Font Lock mode, you can still enable Font
+Lock for specific major modes by adding the function
+@code{turn-on-font-lock} to the mode hooks (@pxref{Hooks}). For
+example, to enable Font Lock mode for editing C files, you can do this:
+
+@example
+(add-hook 'c-mode-hook 'turn-on-font-lock)
+@end example
+
+ Font Lock mode uses several specifically named faces to do its job,
+including @code{font-lock-string-face}, @code{font-lock-comment-face},
+and others. The easiest way to find them all is to use @kbd{M-x
+customize-group @key{RET} font-lock-faces @key{RET}}. You can then
+use that customization buffer to customize the appearance of these
+faces. @xref{Face Customization}.
+
+ You can also customize these faces using @kbd{M-x
+set-face-foreground} or @kbd{M-x set-face-background}. @xref{Faces}.
+
+@vindex font-lock-maximum-decoration
+ The variable @code{font-lock-maximum-decoration} specifies the
+preferred level of fontification, for modes that provide multiple
+levels. Level 1 is the least amount of fontification; some modes
+support levels as high as 3. The normal default is ``as high as
+possible.'' You can specify an integer, which applies to all modes, or
+you can specify different numbers for particular major modes; for
+example, to use level 1 for C/C++ modes, and the default level
+otherwise, use this:
+
+@example
+(setq font-lock-maximum-decoration
+ '((c-mode . 1) (c++-mode . 1)))
+@end example
+
+@vindex font-lock-maximum-size
+ Fontification can be too slow for large buffers, so you can suppress
+it for buffers above a certain size. The variable
+@code{font-lock-maximum-size} specifies a buffer size, beyond which
+buffer fontification is suppressed.
+
+@c @w is used below to prevent a bad page-break.
+@vindex font-lock-beginning-of-syntax-function
+@cindex incorrect fontification
+@cindex parenthesis in column zero and fontification
+@cindex brace in column zero and fontification
+ Comment and string fontification (or ``syntactic'' fontification)
+relies on analysis of the syntactic structure of the buffer text. For
+the sake of speed, some modes, including Lisp mode, rely on a special
+convention: an open-parenthesis or open-brace in the leftmost column
+always defines the @w{beginning} of a defun, and is thus always
+outside any string or comment. (@xref{Left Margin Paren}.) If you
+don't follow this convention, Font Lock mode can misfontify the text
+that follows an open-parenthesis or open-brace in the leftmost column
+that is inside a string or comment.
+
+@cindex slow display during scrolling
+ The variable @code{font-lock-beginning-of-syntax-function} (always
+buffer-local) specifies how Font Lock mode can find a position
+guaranteed to be outside any comment or string. In modes which use the
+leftmost column parenthesis convention, the default value of the variable
+is @code{beginning-of-defun}---that tells Font Lock mode to use the
+convention. If you set this variable to @code{nil}, Font Lock no longer
+relies on the convention. This avoids incorrect results, but the price
+is that, in some cases, fontification for a changed text must rescan
+buffer text from the beginning of the buffer. This can considerably
+slow down redisplay while scrolling, particularly if you are close to
+the end of a large buffer.
+
+@findex font-lock-add-keywords
+ Font Lock highlighting patterns already exist for many modes, but you
+may want to fontify additional patterns. You can use the function
+@code{font-lock-add-keywords}, to add your own highlighting patterns for
+a particular mode. For example, to highlight @samp{FIXME:} words in C
+comments, use this:
+
+@example
+(font-lock-add-keywords
+ 'c-mode
+ '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))
+@end example
+
+@findex font-lock-remove-keywords
+ To remove keywords from the font-lock highlighting patterns, use the
+function @code{font-lock-remove-keywords}. @xref{Search-based
+Fontification,,, elisp, The Emacs Lisp Reference Manual}, for
+documentation of the format of this list.
+
+@cindex just-in-time (JIT) font-lock
+@cindex background syntax highlighting
+ Fontifying large buffers can take a long time. To avoid large
+delays when a file is visited, Emacs fontifies only the visible
+portion of a buffer. As you scroll through the buffer, each portion
+that becomes visible is fontified as soon as it is displayed. The
+parts of the buffer that are not displayed are fontified
+``stealthily,'' in the background, i.e.@: when Emacs is idle. You can
+control this background fontification, also called @dfn{Just-In-Time}
+(or @dfn{JIT}) Lock, by customizing variables in the customization
+group @samp{jit-lock}. @xref{Specific Customization}.
+
+@node Highlight Interactively
+@section Interactive Highlighting
+@cindex highlighting by matching
+@cindex interactive highlighting
+@cindex Highlight Changes mode
+
+@findex highlight-changes-mode
+ Use @kbd{M-x highlight-changes-mode} to enable (or disable)
+Highlight Changes mode, a minor mode that uses faces (colors,
+typically) to indicate which parts of the buffer were changed most
+recently.
+
+@cindex Hi Lock mode
+@findex hi-lock-mode
+ Hi Lock mode highlights text that matches regular expressions you
+specify. For example, you might wish to see all the references to a
+certain variable in a program source file, highlight certain parts in
+a voluminous output of some program, or make certain names stand out
+in an article. Use the @kbd{M-x hi-lock-mode} command to enable (or
+disable) Hi Lock mode. To enable Hi Lock mode for all buffers, use
+@kbd{M-x global-hi-lock-mode} or place @code{(global-hi-lock-mode 1)}
+in your @file{.emacs} file.
+
+ Hi Lock mode works like Font Lock mode (@pxref{Font Lock}), except
+that you specify explicitly the regular expressions to highlight. You
+control them with these commands:
+
+@table @kbd
+@item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
+@kindex C-x w h
+@findex highlight-regexp
+Highlight text that matches @var{regexp} using face @var{face}
+(@code{highlight-regexp}). The highlighting will remain as long as
+the buffer is loaded. For example, to highlight all occurrences of
+the word ``whim'' using the default face (a yellow background)
+@kbd{C-x w h whim @key{RET} @key{RET}}. Any face can be used for
+highlighting, Hi Lock provides several of its own and these are
+pre-loaded into a history list. While being prompted for a face use
+@kbd{M-p} and @kbd{M-n} to cycle through them.
+
+You can use this command multiple times, specifying various regular
+expressions to highlight in different ways.
+
+@item C-x w r @var{regexp} @key{RET}
+@kindex C-x w r
+@findex unhighlight-regexp
+Unhighlight @var{regexp} (@code{unhighlight-regexp}).
+
+If you invoke this from the menu, you select the expression to
+unhighlight from a list. If you invoke this from the keyboard, you
+use the minibuffer. It will show the most recently added regular
+expression; use @kbd{M-p} to show the next older expression and
+@kbd{M-n} to select the next newer expression. (You can also type the
+expression by hand, with completion.) When the expression you want to
+unhighlight appears in the minibuffer, press @kbd{@key{RET}} to exit
+the minibuffer and unhighlight it.
+
+@item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
+@kindex C-x w l
+@findex highlight-lines-matching-regexp
+@cindex lines, highlighting
+@cindex highlighting lines of text
+Highlight entire lines containing a match for @var{regexp}, using face
+@var{face} (@code{highlight-lines-matching-regexp}).
+
+@item C-x w b
+@kindex C-x w b
+@findex hi-lock-write-interactive-patterns
+Insert all the current highlighting regexp/face pairs into the buffer
+at point, with comment delimiters to prevent them from changing your
+program. (This key binding runs the
+@code{hi-lock-write-interactive-patterns} command.)
+
+These patterns are extracted from the comments, if appropriate, if you
+invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while
+Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}).
+
+@item C-x w i
+@kindex C-x w i
+@findex hi-lock-find-patterns
+Extract regexp/face pairs from comments in the current buffer
+(@code{hi-lock-find-patterns}). Thus, you can enter patterns
+interactively with @code{highlight-regexp}, store them into the file
+with @code{hi-lock-write-interactive-patterns}, edit them (perhaps
+including different faces for different parenthesized parts of the
+match), and finally use this command (@code{hi-lock-find-patterns}) to
+have Hi Lock highlight the edited patterns.
+
+@vindex hi-lock-file-patterns-policy
+The variable @code{hi-lock-file-patterns-policy} controls whether Hi
+Lock mode should automatically extract and highlight patterns found in
+a file when it is visited. Its value can be @code{nil} (never
+highlight), @code{t} (highlight the patterns), @code{ask} (query the
+user), or a function. If it is a function,
+@code{hi-lock-find-patterns} calls it with the patterns as argument;
+if the function returns non-@code{nil}, the patterns are used. The
+default is @code{nil}. Note that patterns are always highlighted if
+you call @code{hi-lock-find-patterns} directly, regardless of the
+value of this variable.
+
+@vindex hi-lock-exclude-modes
+Also, @code{hi-lock-find-patterns} does nothing if the current major
+mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
+@end table
+
+@node Fringes
+@section Window Fringes
+@cindex fringes
+
+ On a graphical display, each Emacs window normally has narrow
+@dfn{fringes} on the left and right edges. The fringes display
+indications about the text in the window.
+
+ The most common use of the fringes is to indicate a continuation
+line, when one line of text is split into multiple lines on the
+screen. The left fringe shows a curving arrow for each screen line
+except the first, indicating that ``this is not the real beginning.''
+The right fringe shows a curving arrow for each screen line except the
+last, indicating that ``this is not the real end.''
+
+ The fringes indicate line truncation with short horizontal arrows
+meaning ``there's more text on this line which is scrolled
+horizontally out of view;'' clicking the mouse on one of the arrows
+scrolls the display horizontally in the direction of the arrow. The
+fringes can also indicate other things, such as empty lines, or where a
+program you are debugging is executing (@pxref{Debuggers}).
+
+@findex set-fringe-style
+@findex fringe-mode
+ You can enable and disable the fringes for all frames using
+@kbd{M-x fringe-mode}. To enable and disable the fringes
+for the selected frame, use @kbd{M-x set-fringe-style}.
+
+@node Displaying Boundaries
+@section Displaying Boundaries
+
+@vindex indicate-buffer-boundaries
+ On a graphical display, Emacs can indicate the buffer boundaries in
+the fringes. It indicates the first line and the last line with
+angle images in the fringes. This can be combined with up and down
+arrow images which say whether it is possible to scroll the window up
+and down.
+
+ The buffer-local variable @code{indicate-buffer-boundaries} controls
+how the buffer boundaries and window scrolling is indicated in the
+fringes. If the value is @code{left} or @code{right}, both angle and
+arrow bitmaps are displayed in the left or right fringe, respectively.
+
+ If value is an alist, each element @code{(@var{indicator} .
+@var{position})} specifies the position of one of the indicators.
+The @var{indicator} must be one of @code{top}, @code{bottom},
+@code{up}, @code{down}, or @code{t} which specifies the default
+position for the indicators not present in the alist.
+The @var{position} is one of @code{left}, @code{right}, or @code{nil}
+which specifies not to show this indicator.
+
+ For example, @code{((top . left) (t . right))} places the top angle
+bitmap in left fringe, the bottom angle bitmap in right fringe, and
+both arrow bitmaps in right fringe. To show just the angle bitmaps in
+the left fringe, but no arrow bitmaps, use @code{((top . left)
+(bottom . left))}.
+
+@vindex default-indicate-buffer-boundaries
+ The value of the variable @code{default-indicate-buffer-boundaries}
+is the default value for @code{indicate-buffer-boundaries} in buffers
+that do not override it.
+
+@node Useless Whitespace
+@section Useless Whitespace
+
+@cindex trailing whitespace
+@cindex whitespace, trailing
+@vindex show-trailing-whitespace
+ It is easy to leave unnecessary spaces at the end of a line, or
+empty lines at the end of a file, without realizing it. In most
+cases, this @dfn{trailing whitespace} has no effect, but there are
+special circumstances where it matters. It can also be a nuisance
+that the line has ``changed,'' when the change is just spaces added or
+removed at the end.
+
+ You can make trailing whitespace at the end of a line visible on the
+screen by setting the buffer-local variable
+@code{show-trailing-whitespace} to @code{t}. Then Emacs displays
+trailing whitespace in the face @code{trailing-whitespace}.
+
+ This feature does not apply when point is at the end of the line
+containing the whitespace. Strictly speaking, that is ``trailing
+whitespace'' nonetheless, but displaying it specially in that case
+looks ugly while you are typing in new text. In this special case,
+the location of point is enough to show you that the spaces are
+present.
+
+@findex delete-trailing-whitespace
+ To delete all trailing whitespace within the current buffer's
+accessible portion (@pxref{Narrowing}), type @kbd{M-x
+delete-trailing-whitespace @key{RET}}. (This command does not remove
+the form-feed characters.)
+
+@vindex indicate-empty-lines
+@vindex default-indicate-empty-lines
+@cindex unused lines
+@cindex fringes, and unused line indication
+ Emacs can indicate unused lines at the end of the window with a
+small image in the left fringe (@pxref{Fringes}). The image appears
+for window lines that do not correspond to any buffer text. Blank
+lines at the end of the buffer then stand out because they do not have
+this image in the fringe.
+
+ To enable this feature, set the buffer-local variable
+@code{indicate-empty-lines} to a non-@code{nil} value. The default
+value of this variable is controlled by the variable
+@code{default-indicate-empty-lines}; by setting that variable, you
+can enable or disable this feature for all new buffers. (This feature
+currently doesn't work on text-only terminals.)
+
+@node Selective Display
+@section Selective Display
+@cindex selective display
+@findex set-selective-display
+@kindex C-x $
+
+ Emacs has the ability to hide lines indented more than a certain number
+of columns (you specify how many columns). You can use this to get an
+overview of a part of a program.
+
+ To hide lines in the current buffer, type @kbd{C-x $}
+(@code{set-selective-display}) with a numeric argument @var{n}. Then
+lines with at least @var{n} columns of indentation disappear from the
+screen. The only indication of their presence is that three dots
+(@samp{@dots{}}) appear at the end of each visible line that is
+followed by one or more hidden ones.
+
+ The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as
+if they were not there.
+
+ The hidden lines are still present in the buffer, and most editing
+commands see them as usual, so you may find point in the middle of the
+hidden text. When this happens, the cursor appears at the end of the
+previous line, after the three dots. If point is at the end of the
+visible line, before the newline that ends it, the cursor appears before
+the three dots.
+
+ To make all lines visible again, type @kbd{C-x $} with no argument.
+
+@vindex selective-display-ellipses
+ If you set the variable @code{selective-display-ellipses} to
+@code{nil}, the three dots do not appear at the end of a line that
+precedes hidden lines. Then there is no visible indication of the
+hidden lines. This variable becomes local automatically when set.
+
+ See also @ref{Outline Mode} for another way to hide part of
+the text in a buffer.
+
+@node Optional Mode Line
+@section Optional Mode Line Features
+
+@cindex buffer size display
+@cindex display of buffer size
+@findex size-indication-mode
+ The buffer percentage @var{pos} indicates the percentage of the
+buffer above the top of the window. You can additionally display the
+size of the buffer by typing @kbd{M-x size-indication-mode} to turn on
+Size Indication mode. The size will be displayed immediately
+following the buffer percentage like this:
+
+@example
+@var{POS} of @var{SIZE}
+@end example
+
+@noindent
+Here @var{SIZE} is the human readable representation of the number of
+characters in the buffer, which means that @samp{k} for 10^3, @samp{M}
+for 10^6, @samp{G} for 10^9, etc., are used to abbreviate.
+
+@cindex narrowing, and buffer size display
+ If you have narrowed the buffer (@pxref{Narrowing}), the size of the
+accessible part of the buffer is shown.
+
+@cindex line number display
+@cindex display of line number
+@findex line-number-mode
+ The current line number of point appears in the mode line when Line
+Number mode is enabled. Use the command @kbd{M-x line-number-mode} to
+turn this mode on and off; normally it is on. The line number appears
+after the buffer percentage @var{pos}, with the letter @samp{L} to
+indicate what it is.
+
+@cindex Column Number mode
+@cindex mode, Column Number
+@findex column-number-mode
+ Similarly, you can display the current column number by turning on
+Column number mode with @kbd{M-x column-number-mode}. The column
+number is indicated by the letter @samp{C}. However, when both of
+these modes are enabled, the line and column numbers are displayed in
+parentheses, the line number first, rather than with @samp{L} and
+@samp{C}. For example: @samp{(561,2)}. @xref{Minor Modes}, for more
+information about minor modes and about how to use these commands.
+
+@cindex narrowing, and line number display
+ If you have narrowed the buffer (@pxref{Narrowing}), the displayed
+line number is relative to the accessible portion of the buffer.
+Thus, it isn't suitable as an argument to @code{goto-line}. (Use
+@code{what-line} command to see the line number relative to the whole
+file.)
+
+@vindex line-number-display-limit
+ If the buffer is very large (larger than the value of
+@code{line-number-display-limit}), then the line number doesn't appear.
+Emacs doesn't compute the line number when the buffer is large, because
+that would be too slow. Set it to @code{nil} to remove the limit.
+
+@vindex line-number-display-limit-width
+ Line-number computation can also be slow if the lines in the buffer
+are too long. For this reason, Emacs normally doesn't display line
+numbers if the average width, in characters, of lines near point is
+larger than the value of the variable
+@code{line-number-display-limit-width}. The default value is 200
+characters.
+
+@findex display-time
+@cindex time (on mode line)
+ Emacs can optionally display the time and system load in all mode
+lines. To enable this feature, type @kbd{M-x display-time} or customize
+the option @code{display-time-mode}. The information added to the mode
+line usually appears after the buffer name, before the mode names and
+their parentheses. It looks like this:
+
+@example
+@var{hh}:@var{mm}pm @var{l.ll}
+@end example
+
+@noindent
+@vindex display-time-24hr-format
+Here @var{hh} and @var{mm} are the hour and minute, followed always by
+@samp{am} or @samp{pm}. @var{l.ll} is the average number of running
+processes in the whole system recently. (Some fields may be missing if
+your operating system cannot support them.) If you prefer time display
+in 24-hour format, set the variable @code{display-time-24hr-format}
+to @code{t}.
+
+@cindex mail (on mode line)
+@vindex display-time-use-mail-icon
+@vindex display-time-mail-face
+@vindex display-time-mail-file
+@vindex display-time-mail-directory
+ The word @samp{Mail} appears after the load level if there is mail
+for you that you have not read yet. On a graphical display you can use
+an icon instead of @samp{Mail} by customizing
+@code{display-time-use-mail-icon}; this may save some space on the mode
+line. You can customize @code{display-time-mail-face} to make the mail
+indicator prominent. Use @code{display-time-mail-file} to specify
+the mail file to check, or set @code{display-time-mail-directory}
+to specify the directory to check for incoming mail (any nonempty regular
+file in the directory is considered as ``newly arrived mail'').
+
+@cindex mode line, 3D appearance
+@cindex attributes of mode line, changing
+@cindex non-integral number of lines in a window
+ By default, the mode line is drawn on graphics displays with
+3D-style highlighting, like that of a button when it is not being
+pressed. If you don't like this effect, you can disable the 3D
+highlighting of the mode line, by customizing the attributes of the
+@code{mode-line} face. @xref{Face Customization}.
+
+@cindex non-selected windows, mode line appearance
+ By default, the mode line of nonselected windows is displayed in a
+different face, called @code{mode-line-inactive}. Only the selected
+window is displayed in the @code{mode-line} face. This helps show
+which window is selected. When the minibuffer is selected, since
+it has no mode line, the window from which you activated the minibuffer
+has its mode line displayed using @code{mode-line}; as a result,
+ordinary entry to the minibuffer does not change any mode lines.
+
+@vindex mode-line-in-non-selected-windows
+ You can disable use of @code{mode-line-inactive} by setting variable
+@code{mode-line-in-non-selected-windows} to @code{nil}; then all mode
+lines are displayed in the @code{mode-line} face.
+
+@vindex eol-mnemonic-unix
+@vindex eol-mnemonic-dos
+@vindex eol-mnemonic-mac
+@vindex eol-mnemonic-undecided
+ You can customize the mode line display for each of the end-of-line
+formats by setting each of the variables @code{eol-mnemonic-unix},
+@code{eol-mnemonic-dos}, @code{eol-mnemonic-mac}, and
+@code{eol-mnemonic-undecided} to the strings you prefer.
+
+@node Text Display
+@section How Text Is Displayed
+@cindex characters (in text)
+
+ @acronym{ASCII} printing characters (octal codes 040 through 0176) in Emacs
+buffers are displayed with their graphics, as are non-ASCII multibyte
+printing characters (octal codes above 0400).
+
+ Some @acronym{ASCII} control characters are displayed in special ways. The
+newline character (octal code 012) is displayed by starting a new line.
+The tab character (octal code 011) is displayed by moving to the next
+tab stop column (normally every 8 columns).
+
+ Other @acronym{ASCII} control characters are normally displayed as a caret
+(@samp{^}) followed by the non-control version of the character; thus,
+control-A is displayed as @samp{^A}. The caret appears in face
+@code{escape-glyph}.
+
+ Non-@acronym{ASCII} characters 0200 through 0237 (octal) are
+displayed with octal escape sequences; thus, character code 0230
+(octal) is displayed as @samp{\230}. The backslash appears in face
+@code{escape-glyph}.
+
+@vindex ctl-arrow
+ If the variable @code{ctl-arrow} is @code{nil}, control characters in
+the buffer are displayed with octal escape sequences, except for newline
+and tab. Altering the value of @code{ctl-arrow} makes it local to the
+current buffer; until that time, the default value is in effect. The
+default is initially @code{t}.
+
+ The display of character codes 0240 through 0377 (octal) may be
+either as escape sequences or as graphics. They do not normally occur
+in multibyte buffers, but if they do, they are displayed as Latin-1
+graphics. In unibyte mode, if you enable European display they are
+displayed using their graphics (assuming your terminal supports them),
+otherwise as escape sequences. @xref{Unibyte Mode}.
+
+@vindex nobreak-char-display
+@cindex no-break space, display
+@cindex no-break hyphen, display
+@cindex soft hyphen, display
+ Some character sets define ``no-break'' versions of the space and
+hyphen characters, which are used where a line should not be broken.
+Emacs normally displays these characters with special faces
+(respectively, @code{nobreak-space} and @code{escape-glyph}) to
+distinguish them from ordinary spaces and hyphens. You can turn off
+this feature by setting the variable @code{nobreak-char-display} to
+@code{nil}. If you set the variable to any other value, that means to
+prefix these characters with an escape character.
+
+@vindex tab-width
+@vindex default-tab-width
+ Normally, a tab character in the buffer is displayed as whitespace which
+extends to the next display tab stop position, and display tab stops come
+at intervals equal to eight spaces. The number of spaces per tab is
+controlled by the variable @code{tab-width}, which is made local by
+changing it. Note that how the tab character
+in the buffer is displayed has nothing to do with the definition of
+@key{TAB} as a command. The variable @code{tab-width} must have an
+integer value between 1 and 1000, inclusive. The variable
+@code{default-tab-width} controls the default value of this variable
+for buffers where you have not set it locally.
+
+ You can customize the way any particular character code is displayed
+by means of a display table. @xref{Display Tables,, Display Tables,
+elisp, The Emacs Lisp Reference Manual}.
+
+@node Cursor Display
+@section Displaying the Cursor
+
+@findex blink-cursor-mode
+@vindex blink-cursor-alist
+@cindex cursor, locating visually
+@cindex cursor, blinking
+ You can customize the cursor's color, and whether it blinks, using
+the @code{cursor} Custom group (@pxref{Easy Customization}). On
+a graphical display, the command @kbd{M-x blink-cursor-mode} enables
+or disables the blinking of the cursor. (On text terminals, the
+terminal itself blinks the cursor, and Emacs has no control over it.)
+You can control how the cursor appears when it blinks off by setting
+the variable @code{blink-cursor-alist}.
+
+@vindex visible-cursor
+ Some text terminals offer two different cursors: the normal cursor
+and the very visible cursor, where the latter may be e.g. bigger or
+blinking. By default Emacs uses the very visible cursor, and switches
+to it when you start or resume Emacs. If the variable
+@code{visible-cursor} is @code{nil} when Emacs starts or resumes, it
+doesn't switch, so it uses the normal cursor.
+
+@cindex cursor in non-selected windows
+@vindex cursor-in-non-selected-windows
+ Normally, the cursor appears in non-selected windows in the ``off''
+state, with the same appearance as when the blinking cursor blinks
+``off.'' For a box cursor, this is a hollow box; for a bar cursor,
+this is a thinner bar. To turn off cursors in non-selected windows,
+customize the variable @code{cursor-in-non-selected-windows} and assign
+it a @code{nil} value.
+
+@vindex x-stretch-cursor
+@cindex wide block cursor
+ On graphical displays, Emacs can optionally draw the block cursor
+as wide as the character under the cursor---for example, if the cursor
+is on a tab character, it would cover the full width occupied by that
+tab character. To enable this feature, set the variable
+@code{x-stretch-cursor} to a non-@code{nil} value.
+
+@findex hl-line-mode
+@findex global-hl-line-mode
+@cindex highlight current line
+ To make the cursor even more visible, you can use HL Line mode, a
+minor mode that highlights the line containing point. Use @kbd{M-x
+hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x
+global-hl-line-mode} enables or disables the same mode globally.
+
+@node Line Truncation
+@section Truncation of Lines
+
+@cindex truncation
+@cindex line truncation, and fringes
+ As an alternative to continuation, Emacs can display long lines by
+@dfn{truncation}. This means that all the characters that do not fit
+in the width of the screen or window do not appear at all. On
+graphical displays, a small straight arrow in the fringe indicates
+truncation at either end of the line. On text-only terminals, @samp{$}
+appears in the first column when there is text truncated to the left,
+and in the last column when there is text truncated to the right.
+
+@vindex truncate-lines
+@findex toggle-truncate-lines
+ Horizontal scrolling automatically causes line truncation
+(@pxref{Horizontal Scrolling}). You can explicitly enable line
+truncation for a particular buffer with the command @kbd{M-x
+toggle-truncate-lines}. This works by locally changing the variable
+@code{truncate-lines}. If that variable is non-@code{nil}, long lines
+are truncated; if it is @code{nil}, they are continued onto multiple
+screen lines. Setting the variable @code{truncate-lines} in any way
+makes it local to the current buffer; until that time, the default
+value is in effect. The default value is normally @code{nil}.
+
+@c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows.
+ If the variable @code{truncate-partial-width-windows} is
+non-@code{nil}, it forces truncation rather than continuation in any
+window less than the full width of the screen or frame, regardless of
+the value of @code{truncate-lines}. For information about side-by-side
+windows, see @ref{Split Window}. See also @ref{Display,, Display,
+elisp, The Emacs Lisp Reference Manual}.
+
+@vindex overflow-newline-into-fringe
+ If the variable @code{overflow-newline-into-fringe} is
+non-@code{nil} on a graphical display, then Emacs does not continue or
+truncate a line which is exactly as wide as the window. Instead, the
+newline overflows into the right fringe, and the cursor appears in the
+fringe when positioned on that newline.
+
+@node Display Custom
+@section Customization of Display
+
+ This section describes variables (@pxref{Variables}) that you can
+change to customize how Emacs displays. Beginning users can skip
+it.
+@c the reason for that pxref is because an xref early in the
+@c ``echo area'' section leads here.
+
+@vindex inverse-video
+ If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
+to invert all the lines of the display from what they normally are.
+
+@vindex visible-bell
+ If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
+to make the whole screen blink when it would normally make an audible bell
+sound. This variable has no effect if your terminal does not have a way
+to make the screen blink.
+
+@vindex echo-keystrokes
+ The variable @code{echo-keystrokes} controls the echoing of multi-character
+keys; its value is the number of seconds of pause required to cause echoing
+to start, or zero, meaning don't echo at all. The value takes effect when
+there is someting to echo. @xref{Echo Area}.
+
+@vindex baud-rate
+ The variable @anchor{baud-rate}@code{baud-rate} holds the output
+speed of the terminal, as far as Emacs knows. Setting this variable
+does not change the speed of actual data transmission, but the value
+is used for calculations. On text-only terminals, it affects padding,
+and decisions about whether to scroll part of the screen or redraw it
+instead. It also affects the behavior of incremental search.
+
+ On graphical displays, @code{baud-rate} is only used to determine
+how frequently to look for pending input during display updating. A
+higher value of @code{baud-rate} means that check for pending input
+will be done less frequently.
+
+@cindex hourglass pointer display
+@vindex hourglass-delay
+ On graphical display, Emacs can optionally display the mouse pointer
+in a special shape to say that Emacs is busy. To turn this feature on
+or off, customize the group @code{cursor}. You can also control the
+amount of time Emacs must remain busy before the busy indicator is
+displayed, by setting the variable @code{hourglass-delay}.
+
+@vindex overline-margin
+ On graphical display, this variables specifies the vertical position
+of an overline above the text, including the height of the overline
+itself (1 pixel). The default value is 2 pixels.
+
+@vindex x-underline-at-descent-line
+ On graphical display, Emacs normally draws an underline at the
+baseline level of the font. If @code{x-underline-at-descent-line} is
+non-@code{nil}, Emacs draws the underline at the same height as the
+font's descent line.
+
+@findex tty-suppress-bold-inverse-default-colors
+ On some text-only terminals, bold face and inverse video together
+result in text that is hard to read. Call the function
+@code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil}
+argument to suppress the effect of bold-face in this case.
+
+@vindex no-redraw-on-reenter
+ On a text-only terminal, when you reenter Emacs after suspending, Emacs
+normally clears the screen and redraws the entire display. On some
+terminals with more than one page of memory, it is possible to arrange
+the termcap entry so that the @samp{ti} and @samp{te} strings (output
+to the terminal when Emacs is entered and exited, respectively) switch
+between pages of memory so as to use one page for Emacs and another
+page for other output. On such terminals, you might want to set the variable
+@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
+assume, when resumed, that the screen page it is using still contains
+what Emacs last wrote there.
+
+@ignore
+ arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4
+@end ignore