@section Using Multiple Typefaces
@cindex faces
- When using Emacs with a window system, you can set up multiple
-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.
+ Emacs supports using multiple styles of displaying characters. Each
+style is called a @dfn{face}. 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 many 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
+terminals support inverse video, bold, and underline attributes; some
+support colors. Character terminals generally do not support changing
+the height and width or the font family.
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
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 default face,
+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
@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 X}). Alternatively,
+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.
+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
@item default
This face is used for ordinary text that doesn't specify any other face.
@item mode-line
-This face is used for mode lines. By default, it's drawn with shadows
-for a ``raised'' effect on window systems, and drawn as the inverse of
-the default face on non-windowed terminals. @xref{Display Custom}.
+This face is used for the mode line of the currently selected window.
+By default, it's drawn with shadows for a ``raised'' effect on window
+systems, and drawn as the inverse of the default face on non-windowed
+terminals. @xref{Display Custom}.
+@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 header-line
Similar to @code{mode-line} for a window's header line. Most modes
don't use the header line, but the Info mode does.
+@item minibuffer-prompt
+This face is used for the prompt strings displayed in the minibuffer.
@item highlight
This face is used for highlighting portions of text, in various modes.
For example, mouse-sensitive text is highlighted using this face.
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
@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,
+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
'(("\\<\\(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}.
+
+@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, called @dfn{Just-In-Time}, or
+@dfn{JIT} Font Lock, by customizing various options in the
+customization group @samp{jit-lock}. @xref{Specific Customization}.
+
@node Highlight Changes
@section Highlight Changes Mode
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
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
+@cindex fringes, and empty line indication
Emacs can indicate empty lines at the end of the buffer with a
special bitmap on the left fringe of the window. 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.
+for all new buffers. (This feature currently doesn't work on
+character terminals.)
@node Scrolling
@section Scrolling
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
-similarly with overlap. The number of lines of overlap across a
-@kbd{C-v} or @kbd{M-v} is controlled by the variable
+ @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}.
to scroll the window, but never farther to the right than the amount
you previously set by @code{scroll-left}.
-@vindex automatic-hscrolling
+@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{automatic-hscrolling} to @code{nil}.
+@code{auto-hscroll-mode} to @code{nil}.
@node Follow Mode
@section Follow Mode
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 with
Emacs.mode-line.AttributeBox: off
@end example
+@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.
+
@node Text Display
@section How Text Is Displayed
@cindex characters (in text)
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
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
+@findex global-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
-highlights the line containing point. On window systems, the command
+@kbd{M-x hl-line-mode} enables or disables a minor mode which
+highlights the line containing point. @kbd{M-x global-hl-line-mode}
+enables the minor mode globally. 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
Emacs has no control over it.)