(Finsert_string, Fml_if, Fml_provide_prefix_argument)
[bpt/emacs.git] / man / display.texi
index 701d51d..e086a6e 100644 (file)
@@ -31,10 +31,10 @@ display it.
 @cindex faces
 
   When using Emacs with a window system, you can set up multiple
-styles of displaying characters.  Some of the aspects of style that
-you can control are the type font, the foreground color, the
-background color, and whether or not to underline text, and in which
-color.
+styles of displaying characters.  Each style is called a @dfn{face}.
+Each face can specify various attributes, such as the height, weight
+and slant of the characters, the foreground and background color, and
+underlining.  But it does not have to specify all of them.
 
   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
@@ -44,41 +44,49 @@ 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.
 
-  The way you control display style is by defining named @dfn{faces}.
-Each face can specify various attributes, like the type font's height,
-weight and slant, foreground and background color, and underlining,
-but it does not have to specify all of them.  By specifying the face
-or faces to use for a given part of the text in the buffer, you
-control how that text appears.
-
-  The style of display used for a given character in the text is
-determined by combining several faces.  Any aspect of the display
-style that isn't specified by overlays or text properties comes from a
-default face which inherits its settings from the frame itself.
+  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.  @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.
-
-  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 X}).
+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
-  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.
+  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 X}).  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}.)
+
+  Emacs 21 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.
 
 @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.  Here's a list of the standardly defined
+frame in which you type it.  Here's a list of the standard defined
 faces:
 
 @table @code
@@ -139,7 +147,7 @@ font of LessTif/Motif menus is currently not supported; attempts to set
 the font are ignored in this case.
 @item trailing-whitespace
 The face for highlighting trailing whitespace when
-@code{show-trailing-whitespace} is non-nil.
+@code{show-trailing-whitespace} is non-nil; see @ref{Trailing Whitespace}.
 @item variable-pitch
 The basic variable-pitch face.
 @end table
@@ -248,13 +256,17 @@ 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 purposes of speed, some modes including C mode and Lisp mode rely on
-a special convention: an open-parenthesis in the leftmost column always
-defines the @w{beginning} of a defun, and is thus always outside any string
-or comment.  (@xref{Defuns}.)  If you don't follow this convention,
-then Font Lock mode can misfontify the text after an open-parenthesis in
+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.
 
 @cindex slow display during scrolling
@@ -283,6 +295,10 @@ comments, use this:
  '(("\\<\\(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}.
+
 @node Highlight Changes
 @section Highlight Changes Mode
 
@@ -323,7 +339,7 @@ parts of the text in different ways.
 @findex unhighlight-regexp
 Unhighlight @var{regexp} (@code{unhighlight-regexp}).  You must enter
 one of the regular expressions currently specified for highlighting.
-(You can use completion, or a menu, to enter one of them
+(You can use completion, or choose from a menu, to enter one of them
 conveniently.)
 
 @item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
@@ -331,7 +347,7 @@ conveniently.)
 @findex highlight-lines-matching-regexp
 @cindex lines, highlighting
 @cindex highlighting lines of text
-Highlight lines containing a match for @var{regexp}, using face
+Highlight entire lines containing a match for @var{regexp}, using face
 @var{face} (@code{highlight-lines-matching-regexp}).
 
 @item C-x w b
@@ -368,9 +384,10 @@ This command does nothing if the major mode is a member of the list
 realizing it.  In most cases, this @dfn{trailing whitespace} has no
 effect, but there are special circumstances where it matters.
 
-  You can make trailing whitespace visible on the screen by setting
-the variable @code{show-trailing-whitespace} to @code{t}.  Then Emacs
-displays trailing whitespace in the face @code{trailing-whitespace}.
+  You can make trailing whitespace 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}.
 
   Trailing whitespace is defined as spaces or tabs at the end of a
 line.  But trailing whitespace is not displayed specially if point is
@@ -378,6 +395,12 @@ at the end of the line containing the whitespace.  (Doing that looks
 ugly while you are typing in new text, and the location of point is
 enough in that case to show you that the spaces are present.)
 
+@findex delete-trailing-whitespace
+  To delete all trailing whitespace within the current buffer's
+restriction (@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 empty lines
@@ -413,10 +436,12 @@ 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}).
@@ -436,30 +461,42 @@ down from the top of the window.
 @kindex M-v
 @kindex NEXT
 @kindex PRIOR
+@kindex PAGEDOWN
+@kindex PAGEUP
 @findex scroll-up
 @findex scroll-down
-  The scrolling commands @kbd{C-v} and @kbd{M-v} let you move all the text
-in the window up or down a few lines.  @kbd{C-v} (@code{scroll-up}) with an
-argument shows you that many more lines at the bottom of the window, moving
-the text and point up together as @kbd{C-l} might.  @kbd{C-v} with a
-negative argument shows you more lines at the top of the window.
-@kbd{M-v} (@code{scroll-down}) is like @kbd{C-v}, but moves in the
-opposite direction.  The function keys @key{NEXT} and @key{PRIOR} are
-equivalent to @kbd{C-v} and @kbd{M-v}.
-
-  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.
-
 @vindex next-screen-context-lines
-  To read the buffer a windowful at a time, use @kbd{C-v} with no argument.
-It takes the last two lines at the bottom of the window and puts them at
-the top, followed by nearly a whole windowful of lines not previously
-visible.  If point was in the text scrolled off the top, it moves to the
-new top of the window.  @kbd{M-v} with no argument moves backward with
-overlap similarly.  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.
+  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
@@ -479,8 +516,8 @@ 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.  Just @kbd{C-u} as argument,
-as in @kbd{C-u C-l}, scrolls point to the center of the selected window.
+- 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
@@ -490,13 +527,13 @@ 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 if point has moved out of the visible
-portion of the text when it is time to display.  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.
+  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
@@ -533,7 +570,7 @@ window, Emacs recenters the window.  By default, @code{scroll-margin} is
 
   @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.  Emacs does this automatically, in any window that
+displayed at all.  Emacs does this automatically in any window that
 uses line truncation rather than continuation: whenever point moves
 off the left or right edge of the screen, Emacs scrolls the buffer
 horizontally to make point visible.
@@ -647,13 +684,23 @@ before the buffer percentage @var{pos}, with the letter @samp{L} to
 indicate what it is.  @xref{Minor Modes}, for more information about
 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.
+
 @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.  If
-you have narrowed the buffer (@pxref{Narrowing}), the displayed line
-number is relative to the accessible portion of the buffer.
+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.
 
 @cindex Column Number mode
 @cindex mode, Column Number
@@ -693,28 +740,25 @@ an icon instead of @samp{Mail} by customizing
 line.  You can customize @code{display-time-mail-face} to make the mail
 indicator prominent.
 
-@cindex mode line, 3D appearence
+@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 as a 3D
-released button.  Depending on the font used for the mode line's text,
-this might make the mode line use more space than a text line in a
-window, and cause the last line of the window be partially obscured.
-That is, the window displays a non-integral number of text lines.  If
-you don't like this effect, you can disable the 3D appearence of the
-mode line by customizing the attributes of the @code{mode-line} face in
-your @file{.emacs} init file, like this:
+  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 in your @file{.emacs} init file, like this:
 
 @example
- (set-face-attribute 'mode-line nil :box nil)
+(set-face-attribute 'mode-line nil :box nil)
 @end example
 
 @noindent
-Alternatively, you could turn off the box attribute in your
+Alternatively, you can turn off the box attribute in your
 @file{.Xdefaults} file:
 
 @example
- Emacs.mode-line.AttributeBox: off
+Emacs.mode-line.AttributeBox: off
 @end example
 
 @node Text Display
@@ -722,7 +766,7 @@ Alternatively, you could turn off the box attribute in your
 @cindex characters (in text)
 
   ASCII printing characters (octal codes 040 through 0176) in Emacs
-buffers are displayed with their graphics.  So are non-ASCII multibyte
+buffers are displayed with their graphics, as are non-ASCII multibyte
 printing characters (octal codes above 0400).
 
   Some ASCII control characters are displayed in special ways.  The
@@ -738,7 +782,7 @@ control-A is displayed as @samp{^A}.
 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
+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
@@ -754,10 +798,10 @@ users should skip it.
   The variable @code{mode-line-inverse-video} is an obsolete way of
 controlling whether the mode line is displayed in inverse video; the
 preferred way of doing this is to change the @code{mode-line} face.
-@xref{Mode Line}.  If you specify the foreground color for the
-@code{mode-line} face, and @code{mode-line-inverse-video} is
-non-@code{nil}, then the default background color for that face is the
-usual foreground color.  @xref{Faces}.
+@xref{Mode Line}.  However, if @code{mode-line-inverse-video} has a
+value of @code{nil}, then the @code{mode-line} face will be ignored,
+and mode-lines will be drawn using the default text face.
+@xref{Faces}.
 
 @vindex inverse-video
   If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
@@ -786,7 +830,7 @@ 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}, control characters in
+  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
@@ -847,15 +891,22 @@ 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}.
 
+@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.
+
 @node Cursor Display
 @section Displaying the Cursor
 
 @findex hl-line-mode
+@cindex highlight current line
 @findex blink-cursor-mode
 @cindex cursor, locating visually
 @cindex cursor, blinking
   There are a number of ways to customize the display of the cursor.
-@kbd{M-x hl-line-mode} enables or disables a global minor mode which
+@kbd{M-x hl-line-mode} enables or disables a minor mode which
 highlights the line containing point.  On window systems, the command
 @kbd{M-x blink-cursor-mode} turns on or off the blinking of the
 cursor.  (On terminals, the terminal itself blinks the cursor, and
@@ -873,9 +924,7 @@ occupied by that tab character.  To enable this feature, set the
 variable @code{x-stretch-cursor} to a non-@code{nil} value.
 
 @cindex cursor in non-selected windows
-@vindex show-cursor-in-non-selected-windows
 @vindex cursor-in-non-selected-windows
   Normally, the cursor in non-selected windows is shown as a hollow box.
 To turn off cursor display in non-selected windows, customize the option
-@code{show-cursor-in-non-selected-windows}, or set the variable
-@code{cursor-in-non-selected-windows} to @code{nil}.
+@code{cursor-in-non-selected-windows} to assign it a @code{nil} value.