]> code.delx.au - gnu-emacs/blobdiff - man/display.texi
* xmenu.c (popup_activated): Define outside HAVE_MENUS.
[gnu-emacs] / man / display.texi
index e1f40e790b15b0b7bdbe051cda82e33be9b0e230..73d91dfb1f29d858b2ff773fd21ac1ca45839d42 100644 (file)
 @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 Free Software Foundation, Inc.
+@c   2002, 2003, 2004, 2005, 2006 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.
+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.
-* Highlight Changes::      Using colors to show where you changed the buffer.
-* Scrolling::             Moving text up and down in a window.
-* Horizontal Scrolling::   Moving text left and right in a window.
 * Fringes::                Enabling or disabling window fringes.
+* Displaying Boundaries::  Displaying top and bottom of the buffer.
 * Useless Whitespace::     Showing possibly-spurious trailing whitespace.
-* Follow Mode::            Follow mode lets two windows scroll as one.
 * 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
+moves 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 Using Multiple Typefaces
 @cindex faces
@@ -39,26 +292,18 @@ 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 a window system, all the Emacs face attributes are meaningful.
-On a character terminal, only some of them work.  Some character
+  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.  Character terminals generally do not support changing
+support colors.  Text-only terminals generally do not support changing
 the height and width or the font family.
 
-  The easiest way to use faces is to turn on Font Lock mode.
-@xref{Font Lock}, for more information about Font Lock mode and
-syntactic highlighting.  You can print out the buffer with the
-highlighting that appears on your screen using the command
+  Emacs uses faces automatically for highlighting, through the work of
+Font Lock mode.  @xref{Font Lock}, for more information about Font
+Lock mode and syntactic highlighting.  You can print out the buffer
+with the highlighting that appears on your screen using the command
 @code{ps-print-buffer-with-faces}.  @xref{PostScript}.
 
-  Features which rely on text in multiple faces (such as Font Lock mode)
-will also work on non-windowed terminals that can display more than one
-face, whether by colors or underlining and emboldening.  This includes
-the console on GNU/Linux, an @code{xterm} which supports colors, the
-MS-DOS display (@pxref{MS-DOS}), and the MS-Windows version invoked with
-the @option{-nw} option.  Emacs determines automatically whether the
-terminal has this capability.
-
   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
@@ -106,12 +351,12 @@ 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.
 
-Here are the standard faces for specifying text appearance.  You can
-use them on specific text, when you want the effects they produce.
+  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 other face.
+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,
@@ -126,7 +371,7 @@ This face underlines text.
 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 to use a different variable-width font,
+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
@@ -143,7 +388,9 @@ their own faces for this purpose.)
 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 Isearch matches.
+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.
@@ -158,7 +405,7 @@ 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''.
+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
@@ -182,7 +429,7 @@ appearance of these parts of the frame.
 @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 window systems, and
+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.
@@ -196,12 +443,14 @@ 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.  Most modes
-don't use the header line, but some special modes, such the Info mode, do.
+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 window systems the foreground color of
+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
@@ -210,7 +459,8 @@ scrollbars.
 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.
+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
@@ -227,8 +477,7 @@ This face determines the color of the cursor.
 @item mouse
 This face determines the color of the mouse pointer.
 @item tool-bar
-This is the basic tool-bar face.  No text appears in the tool bar, but the
-colors of this face affect the appearance of tool bar icons.  @xref{Tool Bars}.
+This face determines the color of tool bar icons.  @xref{Tool Bars}.
 @item tooltip
 This face is used for tooltips.  @xref{Tooltips}.
 @item menu
@@ -239,7 +488,7 @@ 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 port are ignored by the respective GUI toolkits;
+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
@@ -276,9 +525,14 @@ interface (@pxref{Easy Customization}), or use the function
 (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
+  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:
 
@@ -288,24 +542,13 @@ example, to enable Font Lock mode for editing C files, you can do this:
 
   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}}.
+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}.
 
-  To change the colors or the fonts used by Font Lock mode to fontify
-different parts of text, just change these faces.  There are
-two ways to do it:
-
-@itemize @bullet
-@item
-Invoke @kbd{M-x set-face-foreground} or @kbd{M-x set-face-background}
-to change the colors of a particular face used by Font Lock.
-@xref{Faces}.  The command @kbd{M-x list-faces-display} displays all
-the faces currently known to Emacs, including those used by Font Lock.
-
-@item
-Customize the faces interactively with @kbd{M-x customize-face}, as
-described in @ref{Face Customization}.
-@end itemize
+  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
@@ -324,8 +567,9 @@ otherwise, use this:
 
 @vindex font-lock-maximum-size
   Fontification can be too slow for large buffers, so you can suppress
-it.  The variable @code{font-lock-maximum-size} specifies a buffer size,
-beyond which buffer fontification is suppressed.
+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
@@ -334,13 +578,13 @@ beyond which buffer fontification is suppressed.
 @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 C mode and 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.
+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
@@ -387,52 +631,62 @@ control this background fontification, also called @dfn{Just-In-Time}
 group @samp{jit-lock}.  @xref{Specific Customization}.
 
 @node Highlight Interactively
-@section Interactive Highlighting by Matching
+@section Interactive Highlighting
 @cindex highlighting by matching
 @cindex interactive highlighting
+@cindex Highlight Changes mode
 
-  It is sometimes useful to temporarily highlight text that
-matches a certain regular expression.  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.
+@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
-  Use the @kbd{M-x hi-lock-mode} command to turn on a minor mode that
-allows you to interactively add and remove regular expressions
-specifying text to be highlighted.  Hi Lock mode works like Font Lock
-mode (@pxref{Font Lock}), except that it lets you easily add and
-remove regular expressions while you are editing a buffer.  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.
-
-You control Hi Lock mode with these commands:
+  Hi Lock mode is another minor mode, which highlights text that
+matches your specified regular expressions.  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}).  By using this command more than once, you
-can highlight various parts of the text in different ways.  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.
+(@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}).
-When activated from the menu select the expression to unhighlight from
-a list.  When activated from the keyboard the most recently added
-expression will be shown.  Use @kbd{M-p} to show the next older
-expression and @kbd{M-n} to select the next newer expression.  When
-the expression to unhighlight appears press @kbd{@key{RET}} to unhighlight
-it.  The expression can also be typed and completion is available.
+
+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
@@ -447,8 +701,8 @@ Highlight entire lines containing a match for @var{regexp}, using face
 @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.
+program.  (This key binding runs the
+@code{hi-lock-write-interactive-patterns} command.)
 
 These patterns will be read the next time you visit the file while
 Hi Lock mode is enabled, or whenever you use the @kbd{M-x
@@ -468,261 +722,71 @@ match, and finally use this command
 (@code{hi-lock-write-interactive-patterns}) to have Hi Lock highlight
 them.
 
-This command does nothing if the major mode is a member of the list
-@code{hi-lock-exclude-modes}.
+This command does nothing if the current major mode's symbol is a member
+of the list @code{hi-lock-exclude-modes}.
 @end table
 
-@node Highlight Changes
-@section Highlight Changes Mode
-
-@findex highlight-changes-mode
-  Use @kbd{M-x highlight-changes-mode} to enable a minor mode
-that uses faces (colors, typically) to indicate which parts of
-the buffer were changed most recently.
-
-@node Scrolling
-@section Scrolling
+@node Fringes
+@section Window Fringes
+@cindex fringes
 
-  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.
+  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.
 
-@cindex scrolling
-  @dfn{Scrolling} means moving text up or down in the window so that
-different parts of the text are visible.  Scrolling forward means that text
-moves up, and new text appears at the bottom.  Scrolling backward moves
-text down and new text appears at the top.
+  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.''
 
-  Scrolling happens automatically if you move point past the bottom or top
-of the window.  You can also explicitly request scrolling with the commands
-in this section.
+  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}).
 
-@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
-@vindex next-screen-context-lines
-  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.
-
-  @kbd{M-v} (@code{scroll-down}) with no argument scrolls backward in
-a similar way, also with overlap.  The number of lines of overlap
-across a @kbd{C-v} or @kbd{M-v} 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 scrolling shifts point off the screen, or into the
-scrolling margins, Emacs moves 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.
-
-@vindex scroll-conservatively
-  Scrolling happens automatically when point moves out of the visible
-portion of the text.  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 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{Display
-Custom}).  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.
+@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}.
 
-@vindex auto-hscroll-mode
-  To disable automatic horizontal scrolling, set the variable
-@code{auto-hscroll-mode} to @code{nil}.
+@node Displaying Boundaries
+@section Displaying Boundaries
 
-@node Fringes
-@section Window Fringes
-@cindex fringes
+@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.
 
-  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 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.
 
-  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.''
+  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.
 
-  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}).
+  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))}.
 
-@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}.
+@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
@@ -733,7 +797,9 @@ for the selected frame, use @kbd{M-x set-fringe-style}.
   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.
+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
@@ -768,29 +834,7 @@ this image in the fringe.
 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 character terminals.)
-
-@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.
+currently doesn't work on text-only terminals.)
 
 @node Selective Display
 @section Selective Display
@@ -868,6 +912,9 @@ minor modes and about how to use this command.
 @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
@@ -933,19 +980,7 @@ file in the directory is considered as ``newly arrived mail'').
 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 in your @file{.emacs} init file, like this:
-
-@example
-(set-face-attribute 'mode-line nil :box nil)
-@end example
-
-@noindent
-Alternatively, you can turn off the box attribute in your
-@file{.Xdefaults} file:
-
-@example
-Emacs.mode-line.AttributeBox: off
-@end example
+@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
@@ -961,6 +996,15 @@ ordinary entry to the minibuffer does not change any mode lines.
 @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)
@@ -976,17 +1020,27 @@ 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}.
-
-  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 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{Single-Byte Character
-Support}.
+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
@@ -1001,6 +1055,23 @@ 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
 
@@ -1010,7 +1081,7 @@ prefix these characters with an escape character.
 @cindex cursor, blinking
   You can customize the cursor's color, and whether it blinks, using
 the @code{cursor} Custom group (@pxref{Easy Customization}).  On
-graphical terminals, the command @kbd{M-x blink-cursor-mode} enables
+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
@@ -1019,22 +1090,23 @@ 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.  Setting the
-variable @code{visible-cursor} to @code{nil} makes it use the
-normal cursor.
+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,
+``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 terminals, Emacs can optionally draw the 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
@@ -1043,72 +1115,21 @@ tab character.  To enable this feature, set the variable
 @findex hl-line-mode
 @findex global-hl-line-mode
 @cindex highlight current line
-  If you find it hard to see the cursor, you might like HL Line mode,
-minor mode that highlights the line containing point.  Use @kbd{M-x
+  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 Display Custom
-@section Customization of Display
-
-  This section contains information for customization only.  Beginning
-users should skip it.
-
-@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 no-redraw-on-reenter
-  On a text 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.  Then 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.
-
-@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.  @xref{Echo Area}.
-
-@vindex ctl-arrow
-  If the variable @code{ctl-arrow} is @code{nil}, all 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}.  @xref{Display Tables,, Display Tables,
-elisp, The Emacs Lisp Reference Manual}.
-
-@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, just like @code{ctl-arrow}.  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.
+@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 terminals, a small straight arrow in the fringe indicates
-truncation at either end of the line.  On text terminals, @samp{$}
+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.
 
@@ -1134,78 +1155,86 @@ 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 window system, it specifies that lines which are
-exactly as wide as the window (not counting the final newline
-character) shall not be broken into two lines on the display (with
-just the newline on the second line).  Instead, the newline
-overflows into the right fringe, and the cursor will be displayed in
-the fringe when positioned on that newline.
+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.
 
-@vindex indicate-buffer-boundaries
-  On a window system, Emacs may indicate the buffer boundaries in the
-fringes.  The buffer boundaries, i.e. first and last line in the
-buffer, can be marked with angle bitmaps in the left or right fringe.
-This can be combined with up and down arrow bitmaps shown at the top
-and bottom of the left or right fringe if the window can be scrolled
-in either direction.
-
-  The buffer-local variable @code{indicate-buffer-boundaries} controls
-how the buffer boundaries and window scrolling is indicated in the
-fringes.
+@node Display Custom
+@section Customization of Display
 
-  If the value is @code{left} or @code{right}, both angle and arrow
-bitmaps are displayed in the left or right fringe, respectively.
+  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.
 
-  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.
+@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.
 
-  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 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 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.
+@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 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 window-systems, @code{baud-rate} is only used to determine how
-frequently to look for pending input during display updating.  A
+  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.
 
-  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}.
-
 @cindex hourglass pointer display
 @vindex hourglass-delay
-  On a window system, Emacs can optionally display the mouse pointer
+  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