Warn against recursive invocations of 'buffer-list-update-hook' (Bug#34765)

* src/buffer.c (Vbuffer_list_update_hook):
* doc/lispref/buffers.texi (Buffer List): Warn against
recursive invocations of 'buffer-list-update-hook' (Bug#34765).
This commit is contained in:
Martin Rudalics 2019-03-08 19:10:27 +01:00
parent 60b5c1090d
commit 464ee80eac
2 changed files with 9 additions and 3 deletions

View file

@ -940,6 +940,10 @@ This is a normal hook run whenever the buffer list changes. Functions
(@pxref{Creating Buffers}), @code{rename-buffer} (@pxref{Buffer Names}), (@pxref{Creating Buffers}), @code{rename-buffer} (@pxref{Buffer Names}),
@code{kill-buffer} (@pxref{Killing Buffers}), @code{bury-buffer} (see @code{kill-buffer} (@pxref{Killing Buffers}), @code{bury-buffer} (see
above) and @code{select-window} (@pxref{Selecting Windows}). above) and @code{select-window} (@pxref{Selecting Windows}).
Functions run by this hook should avoid calling @code{select-window}
with a nil @var{norecord} argument or @code{with-temp-buffer} since
either may lead to infinite recursion.
@end defvar @end defvar
@node Creating Buffers @node Creating Buffers

View file

@ -6236,9 +6236,11 @@ The function `kill-all-local-variables' runs this before doing anything else. *
DEFVAR_LISP ("buffer-list-update-hook", Vbuffer_list_update_hook, DEFVAR_LISP ("buffer-list-update-hook", Vbuffer_list_update_hook,
doc: /* Hook run when the buffer list changes. doc: /* Hook run when the buffer list changes.
Functions running this hook are, `get-buffer-create', Functions (implicitly) running this hook are `get-buffer-create',
`make-indirect-buffer', `rename-buffer', `kill-buffer', `make-indirect-buffer', `rename-buffer', `kill-buffer', `bury-buffer'
`bury-buffer-internal' and `select-window'. */); and `select-window'. Functions run by this hook should avoid calling
`select-window' with a nil NORECORD argument or `with-temp-buffer'
since either may lead to infinite recursion. */);
Vbuffer_list_update_hook = Qnil; Vbuffer_list_update_hook = Qnil;
DEFSYM (Qbuffer_list_update_hook, "buffer-list-update-hook"); DEFSYM (Qbuffer_list_update_hook, "buffer-list-update-hook");