changeset 112057:60e7c5827df3

Fallout from fixing bug #7587. doc/lispref/modes.texi (Emulating Mode Line): Update documentation of format-mode-line according to changes that fixed bug #7587. etc/NEWS: Mention the incompatible change in format-mode-line wrt its FACE argument.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 18 Dec 2010 10:53:28 +0200
parents 7e12126392f2
children 053702b1e98a
files doc/lispref/ChangeLog doc/lispref/modes.texi etc/NEWS
diffstat 3 files changed, 37 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/doc/lispref/ChangeLog	Fri Dec 17 17:38:37 2010 +0200
+++ b/doc/lispref/ChangeLog	Sat Dec 18 10:53:28 2010 +0200
@@ -1,3 +1,8 @@
+2010-12-18  Eli Zaretskii  <eliz@gnu.org>
+
+	* modes.texi (Emulating Mode Line): Update documentation of
+	format-mode-line according to changes that fixed bug #7587.
+
 2010-12-11  Eli Zaretskii  <eliz@gnu.org>
 
 	* processes.texi (Shell Arguments):
--- a/doc/lispref/modes.texi	Fri Dec 17 17:38:37 2010 +0200
+++ b/doc/lispref/modes.texi	Sat Dec 18 10:53:28 2010 +0200
@@ -2111,29 +2111,43 @@
 based on a certain mode-line specification.
 
 @defun format-mode-line format &optional face window buffer
-This function formats a line of text according to @var{format} as if
-it were generating the mode line for @var{window}, but instead of
-displaying the text in the mode line or the header line, it returns
-the text as a string.  The argument @var{window} defaults to the
-selected window.  If @var{buffer} is non-@code{nil}, all the
-information used is taken from @var{buffer}; by default, it comes from
-@var{window}'s buffer.
+This function formats a line of text according to @var{format} as if it
+were generating the mode line for @var{window}, but it also returns the
+text as a string.  The argument @var{window} defaults to the selected
+window.  If @var{buffer} is non-@code{nil}, all the information used is
+taken from @var{buffer}; by default, it comes from @var{window}'s
+buffer.
 
 The value string normally has text properties that correspond to the
 faces, keymaps, etc., that the mode line would have.  And any character
-for which no @code{face} property is specified gets a default
-value which is usually @var{face}.  (If @var{face} is @code{t},
-that stands for either @code{mode-line} if @var{window} is selected,
-otherwise @code{mode-line-inactive}.  If @var{face} is @code{nil} or
-omitted, that stands for no face property.)
+for which no @code{face} property is specified gets a default value
+determined by @var{face}.  If @var{face} is @code{t}, that stands for
+either @code{mode-line} if @var{window} is selected, otherwise
+@code{mode-line-inactive}.  If @var{face} is @code{nil} or omitted, that
+stands for no face property.
 
 However, if @var{face} is an integer, the value has no text properties.
 
+You can also specify other valid faces as the value of @var{face}.
+If the value is a @dfn{basic face}, one of @code{default}, @code{mode-line},
+@code{mode-line-inactive}, @code{header-line}, or @code{tool-bar}, that
+face provides the @code{face} property for characters whose face is not
+specified by @var{format}.  Any other face is treated as @code{default},
+but you can remap one of the basic faces (@pxref{Face Remapping}) to get
+the same effect as with non-basic faces.
+
+Note that using @code{mode-line}, @code{mode-line-inactive}, or
+@code{header-line} as @var{face} will actually redisplay the mode line
+or the header line, respectively, using the current definitions of the
+corresponding face, in addition to returning the formatted string.
+(Other faces do not cause redisplay.)
+
 For example, @code{(format-mode-line header-line-format)} returns the
 text that would appear in the selected window's header line (@code{""}
 if it has no header line).  @code{(format-mode-line header-line-format
 'header-line)} returns the same text, with each character
-carrying the face that it will have in the header line itself.
+carrying the face that it will have in the header line itself, and also
+redraws the header line.
 @end defun
 
 @node Imenu
--- a/etc/NEWS	Fri Dec 17 17:38:37 2010 +0200
+++ b/etc/NEWS	Sat Dec 18 10:53:28 2010 +0200
@@ -1845,6 +1845,11 @@
 ** `mode-name' is no longer guaranteed to be a string.
 Use `(format-mode-line mode-name)' to ensure a string value.
 
+** `format-mode-line' now supports only a few basic faces as its FACE argument.
+The FACE argument to `format-mode-line' should be one of `default',
+`mode-line', `mode-line-inactive', `header-line', or `tool-bar'.  Any
+other face is treated as `default'.
+
 ** The function x-font-family-list has been removed.
 Use the new function font-family-list (see Lisp Changes, below).