]> code.delx.au - gnu-emacs/blobdiff - lispref/display.texi
(Translating Input): Fix typo.
[gnu-emacs] / lispref / display.texi
index 890c636b2f5e58a3fafcda96fb6e1e08a7af55a9..75d20f7e51caa4e765c4b356e608a201f886a7d4 100644 (file)
@@ -14,9 +14,8 @@ that Emacs presents to the user.
 * Refresh Screen::      Clearing the screen and redrawing everything on it.
 * Forcing Redisplay::   Forcing redisplay.
 * Truncation::          Folding or wrapping long text lines.
 * Refresh Screen::      Clearing the screen and redrawing everything on it.
 * Forcing Redisplay::   Forcing redisplay.
 * Truncation::          Folding or wrapping long text lines.
-* The Echo Area::       Where messages are displayed.
+* The Echo Area::       Displaying messages at the bottom of the screen.
 * Warnings::            Displaying warning messages for the user.
 * Warnings::            Displaying warning messages for the user.
-* Progress::            Informing user about progress of a long operation.
 * Invisible Text::      Hiding part of the buffer text.
 * Selective Display::   Hiding part of the buffer text (the old way).
 * Temporary Displays::  Displays that go away automatically.
 * Invisible Text::      Hiding part of the buffer text.
 * Selective Display::   Hiding part of the buffer text (the old way).
 * Temporary Displays::  Displays that go away automatically.
@@ -184,7 +183,7 @@ This variable is automatically buffer-local in every buffer.
 @cindex error display
 @cindex echo area
 
 @cindex error display
 @cindex echo area
 
-The @dfn{echo area} is used for displaying error messages
+  The @dfn{echo area} is used for displaying error messages
 (@pxref{Errors}), for messages made with the @code{message} primitive,
 and for echoing keystrokes.  It is not the same as the minibuffer,
 despite the fact that the minibuffer appears (when active) in the same
 (@pxref{Errors}), for messages made with the @code{message} primitive,
 and for echoing keystrokes.  It is not the same as the minibuffer,
 despite the fact that the minibuffer appears (when active) in the same
@@ -193,9 +192,22 @@ specifies the rules for resolving conflicts between the echo area and
 the minibuffer for use of that screen space (@pxref{Minibuffer,, The
 Minibuffer, emacs, The GNU Emacs Manual}).
 
 the minibuffer for use of that screen space (@pxref{Minibuffer,, The
 Minibuffer, emacs, The GNU Emacs Manual}).
 
-You can write output in the echo area by using the Lisp printing
-functions with @code{t} as the stream (@pxref{Output Functions}), or as
-follows:
+  You can write output in the echo area by using the Lisp printing
+functions with @code{t} as the stream (@pxref{Output Functions}), or
+explicitly.
+
+@menu
+* Displaying Messages:: Explicitly displaying text in the echo area.
+* Progress::            Informing user about progress of a long operation.
+* Logging Messages::    Echo area messages are logged for the user.
+* Echo Area Customization:: Controlling the echo area.
+@end menu
+
+@node Displaying Messages
+@subsection Displaying Messages in the Echo Area
+
+  This section describes the functions for explicitly producing echo
+area messages.  Many other Emacs features display messages there, too.
 
 @defun message string &rest arguments
 This function displays a message in the echo area.  The
 
 @defun message string &rest arguments
 This function displays a message in the echo area.  The
@@ -216,12 +228,6 @@ the echo area has been expanded automatically, this brings it back to
 its normal size.  If the minibuffer is active, this brings the
 minibuffer contents back onto the screen immediately.
 
 its normal size.  If the minibuffer is active, this brings the
 minibuffer contents back onto the screen immediately.
 
-@vindex message-truncate-lines
-Normally, displaying a long message resizes the echo area to display
-the entire message.  But if the variable @code{message-truncate-lines}
-is non-@code{nil}, the echo area does not resize, and the message is
-truncated to fit it, as in Emacs 20 and before.
-
 @example
 @group
 (message "Minibuffer depth is %d."
 @example
 @group
 (message "Minibuffer depth is %d."
@@ -241,12 +247,6 @@ To automatically display a message in the echo area or in a pop-buffer,
 depending on its size, use @code{display-message-or-buffer} (see below).
 @end defun
 
 depending on its size, use @code{display-message-or-buffer} (see below).
 @end defun
 
-@defopt max-mini-window-height
-This variable specifies the maximum height for resizing minibuffer
-windows.  If a float, it specifies a fraction of the height of the
-frame.  If an integer, it specifies a number of lines.
-@end defopt
-
 @tindex with-temp-message
 @defmac with-temp-message message &rest body
 This construct displays a message in the echo area temporarily, during
 @tindex with-temp-message
 @defmac with-temp-message message &rest body
 This construct displays a message in the echo area temporarily, during
@@ -303,23 +303,130 @@ This function returns the message currently being displayed in the
 echo area, or @code{nil} if there is none.
 @end defun
 
 echo area, or @code{nil} if there is none.
 @end defun
 
-@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
-appears at the end of the message.  Otherwise, the cursor appears at
-point---not in the echo area at all.
+@node Progress
+@subsection Reporting Operation Progress
+@cindex progress reporting
 
 
-The value is normally @code{nil}; Lisp programs bind it to @code{t}
-for brief periods of time.
-@end defvar
+  When an operation can take a while to finish, you should inform the
+user about the progress it makes.  This way the user can estimate
+remaining time and clearly see that Emacs is busy working, not hung.
 
 
-@defvar echo-area-clear-hook
-This normal hook is run whenever the echo area is cleared---either by
-@code{(message nil)} or for any other reason.
-@end defvar
+  Functions listed in this section provide simple and efficient way of
+reporting operation progress.  Here is a working example that does
+nothing useful:
+
+@smallexample
+(let ((progress-reporter
+       (make-progress-reporter "Collecting mana for Emacs..."
+                               0  500)))
+  (dotimes (k 500)
+    (sit-for 0.01)
+    (progress-reporter-update progress-reporter k))
+  (progress-reporter-done progress-reporter))
+@end smallexample
+
+@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
+This function creates and returns a @dfn{progress reporter}---an
+object you will use as an argument for all other functions listed
+here.  The idea is to precompute as much data as possible to make
+progress reporting very fast.
+
+When this progress reporter is subsequently used, it will display
+@var{message} in the echo area, followed by progress percentage.
+@var{message} is treated as a simple string.  If you need it to depend
+on a filename, for instance, use @code{format} before calling this
+function.
+
+@var{min-value} and @var{max-value} arguments stand for starting and
+final states of your operation.  For instance, if you scan a buffer,
+they should be the results of @code{point-min} and @code{point-max}
+correspondingly.  It is required that @var{max-value} is greater than
+@var{min-value}.  If you create progress reporter when some part of
+the operation has already been completed, then specify
+@var{current-value} argument.  But normally you should omit it or set
+it to @code{nil}---it will default to @var{min-value} then.
 
 
-Almost all the messages displayed in the echo area are also recorded
-in the @samp{*Messages*} buffer.
+Remaining arguments control the rate of echo area updates.  Progress
+reporter will wait for at least @var{min-change} more percents of the
+operation to be completed before printing next message.
+@var{min-time} specifies the minimum time in seconds to pass between
+successive prints.  It can be fractional.  Depending on Emacs and
+system capabilities, progress reporter may or may not respect this
+last argument or do it with varying precision.  Default value for
+@var{min-change} is 1 (one percent), for @var{min-time}---0.2
+(seconds.)
+
+This function calls @code{progress-reporter-update}, so the first
+message is printed immediately.
+@end defun
+
+@defun progress-reporter-update reporter value
+This function does the main work of reporting progress of your
+operation.  It displays the message of @var{reporter}, followed by
+progress percentage determined by @var{value}.  If percentage is zero,
+or close enough according to the @var{min-change} and @var{min-time}
+arguments, then it is omitted from the output.
+
+@var{reporter} must be the result of a call to
+@code{make-progress-reporter}.  @var{value} specifies the current
+state of your operation and must be between @var{min-value} and
+@var{max-value} (inclusive) as passed to
+@code{make-progress-reporter}.  For instance, if you scan a buffer,
+then @var{value} should be the result of a call to @code{point}.
+
+This function respects @var{min-change} and @var{min-time} as passed
+to @code{make-progress-reporter} and so does not output new messages
+on every invocation.  It is thus very fast and normally you should not
+try to reduce the number of calls to it: resulting overhead will most
+likely negate your effort.
+@end defun
+
+@defun progress-reporter-force-update reporter value &optional new-message
+This function is similar to @code{progress-reporter-update} except
+that it prints a message in the echo area unconditionally.
+
+The first two arguments have the same meaning as for
+@code{progress-reporter-update}.  Optional @var{new-message} allows
+you to change the message of the @var{reporter}.  Since this functions
+always updates the echo area, such a change will be immediately
+presented to the user.
+@end defun
+
+@defun progress-reporter-done reporter
+This function should be called when the operation is finished.  It
+prints the message of @var{reporter} followed by word ``done'' in the
+echo area.
+
+You should always call this function and not hope for
+@code{progress-reporter-update} to print ``100%.''  Firstly, it may
+never print it, there are many good reasons for this not to happen.
+Secondly, ``done'' is more explicit.
+@end defun
+
+@defmac dotimes-with-progress-reporter (var count [result]) message body...
+This is a convenience macro that works the same way as @code{dotimes}
+does, but also reports loop progress using the functions described
+above.  It allows you to save some typing.
+
+You can rewrite the example in the beginning of this node using
+this macro this way:
+
+@example
+(dotimes-with-progress-reporter
+    (k 500)
+    "Collecting some mana for Emacs..."
+  (sit-for 0.01))
+@end example
+@end defmac
+
+@node Logging Messages
+@subsection Logging Messages in @samp{*Messages*}
+@cindex logging echo-area messages
+
+  Almost all the messages displayed in the echo area are also recorded
+in the @samp{*Messages*} buffer so that the user can refer back to
+them.  This includes all the messages that are output with
+@code{message}.
 
 @defopt message-log-max
 This variable specifies how many lines to keep in the @samp{*Messages*}
 
 @defopt message-log-max
 This variable specifies how many lines to keep in the @samp{*Messages*}
@@ -333,6 +440,48 @@ how to display a message and prevent it from being logged:
 @end example
 @end defopt
 
 @end example
 @end defopt
 
+  To make @samp{*Messages*} more convenient for the user, the logging
+facility combines successive identical messages.  It also combines
+successive related messages for the sake of two cases: question
+followed by answer, and a series of progress messages.
+
+  A ``question followed by an answer'' means two messages like the
+ones produced by @code{y-or-n-p}: the first is @samp{@var{question}},
+and the second is @samp{@var{question}...@var{answer}}.  The first
+message conveys no additional information beyond what's in the second,
+so logging the second message discards the first from the log.
+
+  A ``series of progress messages'' means successive messages like
+those produced by @code{make-progress-reporter}.  They have the form
+@samp{@var{base}...@var{how-far}}, where @var{base} is the same each
+time, while @var{how-far} varies.  Logging each message in the series
+discards the previous one, provided they are consecutive.
+
+  The functions @code{make-progress-reporter} and @code{y-or-n-p}
+don't have to do anything special to activate the message log
+combination feature.  It operates whenever two consecutive messages
+are logged that share a common prefix ending in @samp{...}.
+
+@node Echo Area Customization
+@subsection Echo Area Customization
+
+  These variables control details of how the echo area works.
+
+@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
+appears at the end of the message.  Otherwise, the cursor appears at
+point---not in the echo area at all.
+
+The value is normally @code{nil}; Lisp programs bind it to @code{t}
+for brief periods of time.
+@end defvar
+
+@defvar echo-area-clear-hook
+This normal hook is run whenever the echo area is cleared---either by
+@code{(message nil)} or for any other reason.
+@end defvar
+
 @defvar echo-keystrokes
 This variable determines how much time should elapse before command
 characters echo.  Its value must be an integer or floating point number,
 @defvar echo-keystrokes
 This variable determines how much time should elapse before command
 characters echo.  Its value must be an integer or floating point number,
@@ -346,6 +495,19 @@ sequence are echoed immediately.)
 If the value is zero, then command input is not echoed.
 @end defvar
 
 If the value is zero, then command input is not echoed.
 @end defvar
 
+@defopt max-mini-window-height
+This variable specifies the maximum height for resizing minibuffer
+windows.  If a float, it specifies a fraction of the height of the
+frame.  If an integer, it specifies a number of lines.
+@end defopt
+
+@defvar message-truncate-lines
+Normally, displaying a long message resizes the echo area to display
+the entire message.  But if the variable @code{message-truncate-lines}
+is non-@code{nil}, the echo area does not resize, and the message is
+truncated to fit it, as in Emacs 20 and before.
+@end defvar
+
 @node Warnings
 @section Reporting Warnings
 @cindex warnings
 @node Warnings
 @section Reporting Warnings
 @cindex warnings
@@ -535,122 +697,6 @@ symbols.  If it matches the first few elements in a warning type, then
 that warning is not logged.
 @end defopt
 
 that warning is not logged.
 @end defopt
 
-@node Progress
-@section Reporting Operation Progress
-@cindex progress reporting
-
-  When an operation can take a while to finish, you should inform the
-user about the progress it makes.  This way the user can estimate
-remaining time and clearly see that Emacs is busy working, not hung.
-
-  Functions listed in this section provide simple and efficient way of
-reporting operation progress.  Here is a working example that does
-nothing useful:
-
-@example
-(let ((progress-reporter
-       (make-progress-reporter "Collecting some mana for Emacs..."
-                               0  500)))
-  (dotimes (k 500)
-    (sit-for 0.01)
-    (progress-reporter-update progress-reporter k))
-  (progress-reporter-done progress-reporter))
-@end example
-
-@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
-This function creates and returns a @dfn{progress reporter}---an
-object you will use as an argument for all other functions listed
-here.  The idea is to precompute as much data as possible to make
-progress reporting very fast.
-
-When this progress reporter is subsequently used, it will display
-@var{message} in the echo area, followed by progress percentage.
-@var{message} is treated as a simple string.  If you need it to depend
-on a filename, for instance, use @code{format} before calling this
-function.
-
-@var{min-value} and @var{max-value} arguments stand for starting and
-final states of your operation.  For instance, if you scan a buffer,
-they should be the results of @code{point-min} and @code{point-max}
-correspondingly.  It is required that @var{max-value} is greater than
-@var{min-value}.  If you create progress reporter when some part of
-the operation has already been completed, then specify
-@var{current-value} argument.  But normally you should omit it or set
-it to @code{nil}---it will default to @var{min-value} then.
-
-Remaining arguments control the rate of echo area updates.  Progress
-reporter will wait for at least @var{min-change} more percents of the
-operation to be completed before printing next message.
-@var{min-time} specifies the minimum time in seconds to pass between
-successive prints.  It can be fractional.  Depending on Emacs and
-system capabilities, progress reporter may or may not respect this
-last argument or do it with varying precision.  Default value for
-@var{min-change} is 1 (one percent), for @var{min-time}---0.2
-(seconds.)
-
-This function calls @code{progress-reporter-update}, so the first
-message is printed immediately.
-@end defun
-
-@defun progress-reporter-update reporter value
-This function does the main work of reporting progress of your
-operation.  It displays the message of @var{reporter}, followed by
-progress percentage determined by @var{value}.  If percentage is zero,
-or close enough according to the @var{min-change} and @var{min-time}
-arguments, then it is omitted from the output.
-
-@var{reporter} must be the result of a call to
-@code{make-progress-reporter}.  @var{value} specifies the current
-state of your operation and must be between @var{min-value} and
-@var{max-value} (inclusive) as passed to
-@code{make-progress-reporter}.  For instance, if you scan a buffer,
-then @var{value} should be the result of a call to @code{point}.
-
-This function respects @var{min-change} and @var{min-time} as passed
-to @code{make-progress-reporter} and so does not output new messages
-on every invocation.  It is thus very fast and normally you should not
-try to reduce the number of calls to it: resulting overhead will most
-likely negate your effort.
-@end defun
-
-@defun progress-reporter-force-update reporter value &optional new-message
-This function is similar to @code{progress-reporter-update} except
-that it prints a message in the echo area unconditionally.
-
-The first two arguments have the same meaning as for
-@code{progress-reporter-update}.  Optional @var{new-message} allows
-you to change the message of the @var{reporter}.  Since this functions
-always updates the echo area, such a change will be immediately
-presented to the user.
-@end defun
-
-@defun progress-reporter-done reporter
-This function should be called when the operation is finished.  It
-prints the message of @var{reporter} followed by word ``done'' in the
-echo area.
-
-You should always call this function and not hope for
-@code{progress-reporter-update} to print ``100%.''  Firstly, it may
-never print it, there are many good reasons for this not to happen.
-Secondly, ``done'' is more explicit.
-@end defun
-
-@defmac dotimes-with-progress-reporter (var count [result]) message body...
-This is a convenience macro that works the same way as @code{dotimes}
-does, but also reports loop progress using the functions described
-above.  It allows you to save some typing.
-
-You can rewrite the example in the beginning of this node using
-this macro this way:
-
-@example
-(dotimes-with-progress-reporter
-    (k 500)
-    "Collecting some mana for Emacs..."
-  (sit-for 0.01))
-@end example
-@end defmac
-
 @node Invisible Text
 @section Invisible Text
 
 @node Invisible Text
 @section Invisible Text
 
@@ -1296,8 +1342,8 @@ A cons cell of the form @code{(foreground-color . @var{color-name})} or
 @code{(background-color . @var{color-name})}.  These elements specify
 just the foreground color or just the background color.
 
 @code{(background-color . @var{color-name})}.  These elements specify
 just the foreground color or just the background color.
 
-@code{(foreground-color . @var{color-name})} is equivalent to
-@code{(:foreground @var{color-name})}, and likewise for the background.
+@code{(foreground-color . @var{color-name})} has the same effect as
+@code{(:foreground @var{color-name})}; likewise for the background.
 @end itemize
 
 @item mouse-face
 @end itemize
 
 @item mouse-face
@@ -1341,6 +1387,10 @@ modified, and the length of the pre-change text replaced by that range.
 length is the number of characters deleted, and the post-change
 beginning and end are equal.)
 
 length is the number of characters deleted, and the post-change
 beginning and end are equal.)
 
+If these functions modify the buffer, they should bind
+@code{inhibit-modification-hooks} to @code{t} around doing so, to
+avoid confusing the internal mechanism that calls these hooks.
+
 @item insert-in-front-hooks
 @kindex insert-in-front-hooks @r{(overlay property)}
 This property's value is a list of functions to be called before and
 @item insert-in-front-hooks
 @kindex insert-in-front-hooks @r{(overlay property)}
 This property's value is a list of functions to be called before and
@@ -1628,12 +1678,12 @@ particular parts of the text or the frame.
 @cindex face id
 Each face has its own @dfn{face number}, which distinguishes faces at
 low levels within Emacs.  However, for most purposes, you refer to
 @cindex face id
 Each face has its own @dfn{face number}, which distinguishes faces at
 low levels within Emacs.  However, for most purposes, you refer to
-faces in Lisp programs by their names.
+faces in Lisp programs by the symbols that name them.
 
 @defun facep object
 
 @defun facep object
-This function returns @code{t} if @var{object} is a face name symbol (or
-if it is a vector of the kind used internally to record face data).  It
-returns @code{nil} otherwise.
+This function returns @code{t} if @var{object} is a face name string
+or symbol (or if it is a vector of the kind used internally to record
+face data).  It returns @code{nil} otherwise.
 @end defun
 
 Each face name is meaningful for all frames, and by default it has the
 @end defun
 
 Each face name is meaningful for all frames, and by default it has the
@@ -1670,8 +1720,7 @@ This face is used for ordinary text.
 @item mode-line
 @kindex mode-line @r{(face name)}
 This face is used for the mode line of the selected window, and for
 @item mode-line
 @kindex mode-line @r{(face name)}
 This face is used for the mode line of the selected window, and for
-menu bars when toolkit menus are not used---but only if
-@code{mode-line-inverse-video} is non-@code{nil}.
+menu bars when toolkit menus are not used.
 
 @item modeline
 @kindex modeline @r{(face name)}
 
 @item modeline
 @kindex modeline @r{(face name)}
@@ -1798,11 +1847,12 @@ customize using the Customization buffer (@pxref{Easy Customization,,,
 emacs, The GNU Emacs Manual}).
 
 @defmac defface face spec doc [keyword value]...
 emacs, The GNU Emacs Manual}).
 
 @defmac defface face spec doc [keyword value]...
-This declares @var{face} as a customizable face that defaults according
-to @var{spec}.  You should not quote the symbol @var{face}.  The
+This declares @var{face} as a customizable face that defaults
+according to @var{spec}.  You should not quote the symbol @var{face},
+and it should not end in @samp{-face} (that would be redundant).  The
 argument @var{doc} specifies the face documentation.  The keywords you
 argument @var{doc} specifies the face documentation.  The keywords you
-can use in @code{defface} are the same ones that are meaningful in both
-@code{defgroup} and @code{defcustom} (@pxref{Common Keywords}).
+can use in @code{defface} are the same as in @code{defgroup} and
+@code{defcustom} (@pxref{Common Keywords}).
 
 When @code{defface} executes, it defines the face according to
 @var{spec}, then uses any customizations that were read from the
 
 When @code{defface} executes, it defines the face according to
 @var{spec}, then uses any customizations that were read from the
@@ -1906,8 +1956,9 @@ frame must match one of the @var{value}s specified for it in
   Internally, @code{defface} uses the symbol property
 @code{face-defface-spec} to record the face attributes specified in
 @code{defface}, @code{saved-face} for the attributes saved by the user
   Internally, @code{defface} uses the symbol property
 @code{face-defface-spec} to record the face attributes specified in
 @code{defface}, @code{saved-face} for the attributes saved by the user
-with the customization buffer, and @code{face-documentation} for the
-documentation string.
+with the customization buffer, @code{customized-face} for the
+attributes customized by the user for the current session, but not
+saved, and @code{face-documentation} for the documentation string.
 
 @defopt frame-background-mode
 This option, if non-@code{nil}, specifies the background type to use for
 
 @defopt frame-background-mode
 This option, if non-@code{nil}, specifies the background type to use for
@@ -2521,6 +2572,17 @@ This returns non-@code{nil} if the face @var{face} displays
 differently from the default face.
 @end defun
 
 differently from the default face.
 @end defun
 
+@cindex face alias
+A @dfn{face alias} provides an equivalent name for a face.  You can
+define a face alias by giving the alias symbol the @code{face-alias}
+property, with a value of the target face name.  The following example
+makes @code{modeline} an alias for the @code{mode-line} face.
+
+@example
+(put 'modeline 'face-alias 'mode-line)
+@end example
+
+
 @node Auto Faces
 @subsection Automatic Face Assignment
 @cindex automatic face assignment
 @node Auto Faces
 @subsection Automatic Face Assignment
 @cindex automatic face assignment
@@ -2756,10 +2818,9 @@ For instance, this changes the default fontset to use a font of which
 registry name is @samp{JISX0208.1983} for all characters belonging to
 the charset @code{japanese-jisx0208}.
 
 registry name is @samp{JISX0208.1983} for all characters belonging to
 the charset @code{japanese-jisx0208}.
 
-@example
+@smallexample
 (set-fontset-font nil 'japanese-jisx0208 '(nil . "JISX0208.1983"))
 (set-fontset-font nil 'japanese-jisx0208 '(nil . "JISX0208.1983"))
-@end example
-
+@end smallexample
 @end defun
 
 @defun char-displayable-p char
 @end defun
 
 @defun char-displayable-p char
@@ -2861,9 +2922,9 @@ default @code{fringe} face.  @var{face} is automatically merged with
 the @code{fringe} face, so normally @var{face} need only specify the
 foreground color for the bitmap.
 
 the @code{fringe} face, so normally @var{face} need only specify the
 foreground color for the bitmap.
 
-  These are the symbols identify the standard fringe bitmaps.
-Evaluate @code{(require 'fringe)} to define them.  Fringe bitmap
-symbols have their own name space.
+  These symbols identify the standard fringe bitmaps.  Evaluate
+@code{(require 'fringe)} to define them.  Fringe bitmap symbols have
+their own name space.
 
 @table @asis
 @item Truncation and continuation line bitmaps:
 
 @table @asis
 @item Truncation and continuation line bitmaps:
@@ -3136,7 +3197,7 @@ single unit.  By contrast, characters that have similar but distinct
 Lisp objects as their @code{display} properties are handled
 separately.  Here's a function that illustrates this point:
 
 Lisp objects as their @code{display} properties are handled
 separately.  Here's a function that illustrates this point:
 
-@example
+@smallexample
 (defun foo ()
   (goto-char (point-min))
   (dotimes (i 5)
 (defun foo ()
   (goto-char (point-min))
   (dotimes (i 5)
@@ -3145,7 +3206,7 @@ separately.  Here's a function that illustrates this point:
       (forward-char 1)
       (put-text-property (point) (1+ (point)) 'display string)
       (forward-char 1))))
       (forward-char 1)
       (put-text-property (point) (1+ (point)) 'display string)
       (forward-char 1))))
-@end example
+@end smallexample
 
 @noindent
 It gives each of the first ten characters in the buffer string
 
 @noindent
 It gives each of the first ten characters in the buffer string
@@ -3157,7 +3218,7 @@ Likewise for each following pair of characters.  Thus, the ten
 characters appear as five A's.  This function would have the same
 results:
 
 characters appear as five A's.  This function would have the same
 results:
 
-@example
+@smallexample
 (defun foo ()
   (goto-char (point-min))
   (dotimes (i 5)
 (defun foo ()
   (goto-char (point-min))
   (dotimes (i 5)
@@ -3165,7 +3226,7 @@ results:
       (put-text-property (point) (2+ (point)) 'display string)
       (put-text-property (point) (1+ (point)) 'display string)
       (forward-char 2))))
       (put-text-property (point) (2+ (point)) 'display string)
       (put-text-property (point) (1+ (point)) 'display string)
       (forward-char 2))))
-@end example
+@end smallexample
 
 @noindent
 This illustrates that what matters is the property value for
 
 @noindent
 This illustrates that what matters is the property value for
@@ -3261,18 +3322,20 @@ as an absolute number of pixels.
 
   The following expressions are supported:
 
 
   The following expressions are supported:
 
-@example
+@smallexample
 @group
   @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{form}
   @var{num}  ::= @var{integer} | @var{float} | @var{symbol}
   @var{unit} ::= in | mm | cm | width | height
 @group
   @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{form}
   @var{num}  ::= @var{integer} | @var{float} | @var{symbol}
   @var{unit} ::= in | mm | cm | width | height
+@end group
+@group
   @var{elem} ::= left-fringe | right-fringe | left-margin | right-margin
         |  scroll-bar | text
   @var{pos}  ::= left | center | right
   @var{form} ::= (@var{num} . @var{expr}) | (@var{op} @var{expr} ...)
   @var{op}   ::= + | -
 @end group
   @var{elem} ::= left-fringe | right-fringe | left-margin | right-margin
         |  scroll-bar | text
   @var{pos}  ::= left | center | right
   @var{form} ::= (@var{num} . @var{expr}) | (@var{op} @var{expr} ...)
   @var{op}   ::= + | -
 @end group
-@end example
+@end smallexample
 
   The form @var{num} specifies a fraction of the default frame font
 height or width.  The form @code{(@var{num})} specifies an absolute
 
   The form @var{num} specifies a fraction of the default frame font
 height or width.  The form @code{(@var{num})} specifies an absolute
@@ -3330,7 +3393,7 @@ in the @code{display} text property.
 Display @var{string} instead of the text that has this property.
 
 @item (image . @var{image-props})
 Display @var{string} instead of the text that has this property.
 
 @item (image . @var{image-props})
-This display specification is an image descriptor (@pxref{Images}).
+This kind of display specification is an image descriptor (@pxref{Images}).
 When used as a display specification, it means to display the image
 instead of the text that has the display specification.
 
 When used as a display specification, it means to display the image
 instead of the text that has the display specification.
 
@@ -4538,13 +4601,6 @@ on the screen.  Non-@code{nil} means yes, @code{nil} means no.  The
 default is @code{nil}.
 @end defopt
 
 default is @code{nil}.
 @end defopt
 
-@defopt mode-line-inverse-video
-This variable controls the use of inverse video for mode lines and
-menu bars.  If it is non-@code{nil}, then these lines are displayed in
-the face @code{mode-line}.  Otherwise, these lines are displayed
-normally, just like other text.  The default is @code{t}.
-@end defopt
-
 @node Usual Display
 @section Usual Display Conventions
 
 @node Usual Display
 @section Usual Display Conventions