]> code.delx.au - gnu-emacs/blobdiff - lispref/display.texi
(undigestify-rmail-message): If in summary, switch to the Rmail buffer.
[gnu-emacs] / lispref / display.texi
index 146dee69531e5e5a93219256e6a1fffc7c89eac8..dfc7877d1c991189705fb7f024a58ff4732218ec 100644 (file)
@@ -45,6 +45,11 @@ Even more powerful is @code{redraw-display}:
 This function clears and redisplays all visible frames.
 @end deffn
 
+  Processing user input takes absolute priority over redisplay.  If you
+call these functions when input is available, they do nothing
+immediately, but a full redisplay does happen eventually---after all the
+input has been processed.
+
   Normally, suspending and resuming Emacs also refreshes the screen.
 Some terminal emulators record separate contents for display-oriented
 programs such as Emacs and for ordinary sequential display.  If you are
@@ -59,11 +64,6 @@ has been suspended and resumed.  Non-@code{nil} means yes, @code{nil}
 means no.
 @end defvar
 
-  Processing user input takes absolute priority over redisplay.  If you
-call these functions when input is available, they do nothing
-immediately, but a full redisplay does happen eventually---after all the
-input has been processed.
-
 @node Screen Size
 @section Screen Size
 @cindex size of screen
@@ -154,10 +154,10 @@ then truncation is always used for side-by-side windows (within one
 frame) regardless of the value of @code{truncate-lines}.
 @end defopt
 
-@defvar default-truncate-lines
+@defopt default-truncate-lines
 This variable is the default value for @code{truncate-lines}, for
 buffers that do not have local values for it.
-@end defvar
+@end defopt
 
 @defopt truncate-partial-width-windows
 This variable controls display of lines that extend beyond the right
@@ -171,15 +171,17 @@ with the display table; see @ref{Display Tables}.
 
   If your buffer contains @strong{very} long lines, and you use
 continuation to display them, just thinking about them can make Emacs
-redisplay slow.
+redisplay slow.  The column computation and indentation functions also
+become slow.  Then you might find it advisable to set
+@code{cache-long-line-scans} to @code{t}.
 
 @defvar cache-long-line-scans
 If this variable is non-@code{nil}, various indentation and motion
-functions, and Emacs redisplay, cache the results of their scans for
-newlines, and consult the cache to avoid rescanning regions of the
-buffer unless they are modified.
+functions, and Emacs redisplay, cache the results of scanning the
+buffer, and consult the cache to avoid rescanning regions of the buffer
+unless they are modified.
 
-Turning on the newline cache slows down processing of short lines.
+Turning on the cache slows down processing of short lines somewhat.
 
 This variable is automatically local in every buffer.
 @end defvar
@@ -248,6 +250,17 @@ how to display a message and prevent it from being logged:
 @end example
 @end defopt
 
+@defvar echo-keystrokes
+This variable determines how much time should elapse before command
+characters echo.  Its value must be an integer, which specifies the
+number of seconds to wait before echoing.  If the user types a prefix
+key (such as @kbd{C-x}) and then delays this many seconds before
+continuing, the prefix key is echoed in the echo area.  Any subsequent
+characters in the same command will be echoed as well.
+
+If the value is zero, then command input is not echoed.
+@end defvar
+
 @defvar cursor-in-echo-area
 This variable controls where the cursor appears when a message is
 displayed in the echo area.  If it is non-@code{nil}, then the cursor
@@ -284,7 +297,7 @@ especially useful in a program to display the list of entries in a data
 base.  It permits the implementation of convenient filtering commands to
 view just a part of the entries in the data base.  Setting this variable
 is very fast, much faster than scanning all the text in the buffer
-looking for things to change.
+looking for properties to change.
 
 @defvar buffer-invisibility-spec
 This variable specifies which kinds of @code{invisible} properties
@@ -314,13 +327,19 @@ by a visible newline, it displays an ellipsis.
 @end table
 @end defvar
 
+@vindex line-move-ignore-invisible
+  Ordinarily, commands that operate on text or move point do not care
+whether the text is invisible.  The user-level line motion commands
+explicitly ignore invisible newlines if
+@code{line-move-ignore-invisible} is non-@code{nil}, but only because
+they are explicitly programmed to do so.
+
 @node Selective Display
 @section Selective Display
 @cindex selective display
 
-  @dfn{Selective display} is a class of minor modes in which specially
-marked lines do not appear on the screen, or in which highly indented
-lines do not appear.
+  @dfn{Selective display} is a pair of features that hide certain
+lines on the screen.
 
   The first variant, explicit selective display, is designed for use in
 a Lisp program.  The program controls which lines are hidden by altering
@@ -329,7 +348,7 @@ been partially replaced by the invisible text feature (@pxref{Invisible
 Text}); there is a new version of Outline mode which uses that instead.
 
   In the second variant, the choice of lines to hide is made
-automatically based on indentation.  This variant is designed as a
+automatically based on indentation.  This variant is designed to be a
 user-level feature.
 
   The way you control explicit selective display is by replacing a
@@ -469,9 +488,7 @@ given time.
 
   Temporary displays are used by commands to put output into a buffer
 and then present it to the user for perusal rather than for editing.
-Many of the help commands use this feature.  Nowadays you can do the
-same job by creating an overlay with a @code{before-string} property.
-@xref{Overlay Properties}.
+Many of the help commands use this feature.
 
 @defspec with-output-to-temp-buffer buffer-name forms@dots{}
 This function executes @var{forms} while arranging to insert any
@@ -539,6 +556,10 @@ the display and later (presumably) move point forward.  The argument
 
 The return value of @code{momentary-string-display} is not meaningful.
 
+If the string @var{string} does not contain control characters, you can
+do the same job in a more general way by creating an overlay with a
+@code{before-string} property.  @xref{Overlay Properties}.
+
 If @var{message} is non-@code{nil}, it is displayed in the echo area
 while @var{string} is displayed in the buffer.  If it is @code{nil}, a
 default message says to type @var{char} to continue.
@@ -580,10 +601,10 @@ Type RET when done reading
 @cindex overlays
 
 You can use @dfn{overlays} to alter the appearance of a buffer's text on
-the screen.  An overlay is an object that belongs to a particular
-buffer, and has a specified beginning and end.  It also has properties
-that you can examine and set; these affect the display of the text
-within the overlay.
+the screen, for the sake of presentation features.  An overlay is an
+object that belongs to a particular buffer, and has a specified
+beginning and end.  It also has properties that you can examine and set;
+these affect the display of the text within the overlay.
 
 @menu
 * Overlay Properties:: How to read and set properties.
@@ -626,7 +647,7 @@ applies only on that window.
 @item category
 @kindex category @r{(overlay property)}
 If an overlay has a @code{category} property, we call it the
-@dfn{category} of the character.  It should be a symbol.  The properties
+@dfn{category} of the overlay.  It should be a symbol.  The properties
 of the symbol serve as defaults for the properties of the overlay.
 
 @item face
@@ -662,7 +683,7 @@ overlay, @code{t}, the beginning and end of the text range just
 modified, and the length of the pre-change text replaced by that range.
 (For an insertion, the pre-change length is zero; for a deletion, that
 length is the number of characters deleted, and the post-change
-beginning and end are at the same place.)
+beginning and end are equal.)
 
 @item insert-in-front-hooks
 @kindex insert-in-front-hooks @r{(overlay property)}
@@ -682,10 +703,12 @@ The @code{invisible} property can make the text in the overlay
 invisible, which means that it does not appear on the screen.
 @xref{Invisible Text}, for details.
 
+@ignore  This isn't implemented yet
 @item intangible
 @kindex intangible @r{(overlay property)}
 The @code{intangible} property on an overlay works just like the
-@code{intangible} text propert.  @xref{Special Properties}, for details.
+@code{intangible} text property.  @xref{Special Properties}, for details.
+@end ignore
 
 @item before-string
 @kindex before-string @r{(overlay property)}
@@ -707,6 +730,13 @@ newlines, will give strange results.
 @kindex evaporate @r{(overlay property)}
 If this property is non-@code{nil}, the overlay is deleted automatically
 if it ever becomes empty (i.e., if it spans no characters).
+
+@item local-map
+@cindex keymap of character
+@kindex local-map @r{(text property)}
+If this property is non-@code{nil}, it specifies a keymap for a portion
+of the text.  The property's value replaces the buffer's local map, when
+the character after point is within the overlay.  @xref{Active Keymaps}.
 @end table
 
   These are the functions for reading and writing the properties of an
@@ -890,6 +920,10 @@ character.
 With overlays.  An overlay may have @code{face} and @code{mouse-face}
 properties too; they apply to all the text covered by the overlay.
 
+@item
+With a region that is active.  In Transient Mark mode, the region is
+highlighted with a particular face (see @code{region-face}, below).
+
 @item
 With special glyphs.  Each glyph can specify a particular face id
 number.  @xref{Glyphs}.
@@ -898,6 +932,7 @@ number.  @xref{Glyphs}.
   If these various sources together specify more than one face for a
 particular character, Emacs merges the attributes of the various faces
 specified.  The attributes of the faces of special glyphs come first;
+then comes the face for region highlighting, if appropriate;
 then come attributes of faces from overlays, followed by those from text
 properties, and last the default face.
 
@@ -951,6 +986,19 @@ new frames.
 These functions set the foreground (or background, respectively) color
 of face @var{face} to @var{color}.  The argument @var{color} should be a
 string, the name of a color.
+
+Certain shades of gray are implemented by stipple patterns on
+black-and-white screens.
+@end defun
+
+@defun set-face-stipple face pattern &optional frame
+This function sets the background stipple pattern of face @var{face} to
+@var{pattern}.  The argument @var{pattern} should be the name of a
+stipple pattern defined by the X server, or @code{nil} meaning don't use
+stipple.
+
+Normally there is no need to pay attention to stipple patterns, because
+they are used automatically to handle certain shades of gray.
 @end defun
 
 @defun set-face-font face font &optional frame
@@ -958,6 +1006,38 @@ This function sets the font of face @var{face}.  The argument @var{font}
 should be a string.
 @end defun
 
+@defun make-face-bold face &optional frame noerror
+Make face @var{face} bold, by setting its font to the bold variant of
+the font it is now using.  If @var{noerror} is non-@code{nil}, return
+@code{nil} on failure; otherwise, that signals an error.
+@end defun
+
+@defun make-face-italic face &optional frame noerror
+Make face @var{face} italic, by setting its font to the italic variant of
+the font it is now using.  If @var{noerror} is non-@code{nil}, return
+@code{nil} on failure; otherwise, that signals an error.
+@end defun
+
+@defun make-face-bold-italic face &optional frame noerror
+Make face @var{face} bold and italic, by setting its font to the bold
+italic variant of the font it is now using.  If @var{noerror} is
+non-@code{nil}, return @code{nil} on failure; otherwise, that signals an
+error.
+@end defun
+
+@defun make-face-unbold face &optional frame noerror
+Make face @var{face} not bold, by setting its font to the medium variant
+of the font it is now using.  If @var{noerror} is non-@code{nil}, return
+@code{nil} on failure; otherwise, that signals an error.
+@end defun
+
+@defun make-face-unitalic face &optional frame noerror
+Make face @var{face} italic, by setting its font to the non-slanted
+variant of the font it is now using.  If @var{noerror} is
+non-@code{nil}, return @code{nil} on failure; otherwise, that signals an
+error.
+@end defun
+
 @defun set-face-underline-p face underline-p &optional frame
 This function sets the underline attribute of face @var{face}.
 Non-@code{nil} means do underline; @code{nil} means don't.
@@ -979,6 +1059,11 @@ These functions return the foreground color (or background color,
 respectively) of face @var{face}, as a string.
 @end defun
 
+@defun face-stipple face &optional frame
+This function returns the name of the background stipple pattern of face
+@var{face}, or @code{nil} if it doesn't have one.
+@end defun
+
 @defun face-font face &optional frame
 This function returns the name of the font of face @var{face}.
 @end defun
@@ -987,7 +1072,7 @@ This function returns the name of the font of face @var{face}.
 This function returns the underline attribute of face @var{face}.
 @end defun
 
-@defun face-id-number face
+@defun face-id face
 This function returns the face id number of face @var{face}.
 @end defun
 
@@ -1048,6 +1133,12 @@ This variable specifies the maximum distance to scan for a matching
 parenthesis before giving up.
 @end defvar
 
+@defvar blink-matching-paren-delay
+This variable specifies the number of seconds for the cursor to remain
+at the matching parenthesis.  A fraction of a second often gives
+good results, but the default is 1, which works on all systems.
+@end defvar
+
 @defun blink-matching-open
 This function is the default value of @code{blink-paren-function}.  It
 assumes that point follows a character with close parenthesis syntax and
@@ -1089,10 +1180,13 @@ default is @code{nil}.
 
 @defopt mode-line-inverse-video
 This variable controls the use of inverse video for mode lines.  If it
-is non-@code{nil}, then mode lines are displayed in inverse video (under
-X, this uses the face named @code{modeline}, which you can set as you
-wish).  Otherwise, mode lines are displayed normally, just like text.
-The default is @code{t}.
+is non-@code{nil}, then mode lines are displayed in inverse video.
+Otherwise, mode lines are displayed normally, just like text.  The
+default is @code{t}.
+
+For X window frames, this displays mode lines using the face named
+@code{modeline}, which is normally the inverse of the default face
+unless you change it.
 @end defopt
 
 @node Usual Display
@@ -1132,7 +1226,7 @@ specify a glyph to use instead of @samp{\}.)
   The usual display conventions apply even when there is a display
 table, for any character whose entry in the active display table is
 @code{nil}.  Thus, when you set up a display table, you need only
-specify the the characters for which you want unusual behavior.
+specify the characters for which you want unusual behavior.
 
   These variables affect the way certain characters are displayed on the
 screen.  Since they change the number of columns the characters occupy,
@@ -1390,11 +1484,6 @@ running under X) or @code{nil} (if Emacs is running on an ordinary
 terminal).
 @end defvar
 
-@defvar window-system-version
-This variable distinguishes between different versions of the X Window
-System.  Its value is 10 or 11 when using X; @code{nil} otherwise.
-@end defvar
-
 @defvar window-setup-hook
 This variable is a normal hook which Emacs runs after loading your
 @file{.emacs} file and the default initialization file (if any), after