]> git.eshelyaron.com Git - emacs.git/commitdiff
; Improve documentation of 'buffer-match-p'
authorEli Zaretskii <eliz@gnu.org>
Sat, 6 Jan 2024 09:15:31 +0000 (11:15 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sat, 6 Jan 2024 16:17:22 +0000 (17:17 +0100)
* doc/lispref/buffers.texi (Buffer List):
* doc/lispref/windows.texi (Choosing Window): Add caveats for
calling 'buffer-match-p' too early, when CONDITION is
'derived-mode' or 'major-mode'.  (Bug#68081)

(cherry picked from commit 2a861124e89d7a29b19bb9a6f22e962c37444212)

doc/lispref/buffers.texi
doc/lispref/windows.texi

index 6a5367c17ba87895dd95fbdd66e23d24a2fd7583..4994d8c2252506ff08493e4827a454db507e7340 100644 (file)
@@ -959,8 +959,8 @@ infinite recursion.
 
 @defun buffer-match-p condition buffer-or-name &rest args
 This function checks if a buffer designated by @code{buffer-or-name}
-satisfies the specified @code{condition}.  Optional arguments
-@var{args} are passed to the predicate function in @var{condition}.  A
+satisfies the specified @var{condition}.  Optional third argument
+@var{arg} is passed to the predicate function in @var{condition}.  A
 valid @var{condition} can be one of the following:
 @itemize @bullet{}
 @item
@@ -985,10 +985,15 @@ Satisfied if @emph{any} condition in @var{conds} satisfies
 Satisfied if @emph{all} the conditions in @var{conds} satisfy
 @code{buffer-match-p}, with the same buffer and @code{args}.
 @item derived-mode
-Satisfied if the buffer's major mode derives from @var{expr}.
+Satisfied if the buffer's major mode derives from @var{expr}.  Note
+that this condition might fail to report a match if
+@code{buffer-match-p} is invoked before the major mode of the buffer
+has been established.
 @item major-mode
 Satisfied if the buffer's major mode is equal to @var{expr}.  Prefer
-using @code{derived-mode} instead, when both can work.
+using @code{derived-mode} instead, when both can work.  Note that this
+condition might fail to report a match if @code{buffer-match-p} is
+invoked before the major mode of the buffer has been established.
 @end table
 @item t
 Satisfied by any buffer.  A convenient alternative to @code{""} (empty
@@ -998,7 +1003,7 @@ string) or @code{(and)} (empty conjunction).
 
 @defun match-buffers condition &optional buffer-list &rest args
 This function returns a list of all buffers that satisfy the
-@code{condition}.  If no buffers match, the function returns
+@var{condition}.  If no buffers match, the function returns
 @code{nil}.  The argument @var{condition} is as defined in
 @code{buffer-match-p} above.  By default, all the buffers are
 considered, but this can be restricted via the optional argument
index 1e2fbc5f0526cc174cb9368b254853ca07aa8e08..93b25cbe67fbd807f1026dee86e6adef8881d650 100644 (file)
@@ -2629,11 +2629,15 @@ default value is an empty display action, i.e., @w{@code{(nil . nil)}}.
 
 @defopt display-buffer-alist
 The value of this option is an alist mapping conditions to display
-actions.  Each condition is passed to @code{buffer-match-p}, along
-with the buffer name and the @var{action} argument passed to
-@code{display-buffer}.  If it returns a non-@code{nil} value, then
-@code{display-buffer} uses the corresponding display action to display
-the buffer.
+actions.  Each condition is passed to @code{buffer-match-p}
+(@pxref{Buffer List}), along with the buffer name and the @var{action}
+argument passed to @code{display-buffer}.  If it returns a
+non-@code{nil} value, then @code{display-buffer} uses the
+corresponding display action to display the buffer.  Caveat: if you
+use @code{derived-mode} or @code{major-mode} as condition,
+@code{buffer-match-p} could fail to report a match if
+@code{display-buffer} is called before the major mode of the buffer is
+set.
 @end defopt
 
 @defopt display-buffer-base-action