]> git.eshelyaron.com Git - emacs.git/commitdiff
Warn against recursive invocations of 'buffer-list-update-hook' (Bug#34765)
authorMartin Rudalics <rudalics@gmx.at>
Fri, 8 Mar 2019 18:10:27 +0000 (19:10 +0100)
committerMartin Rudalics <rudalics@gmx.at>
Fri, 8 Mar 2019 18:10:27 +0000 (19:10 +0100)
* src/buffer.c (Vbuffer_list_update_hook):
* doc/lispref/buffers.texi (Buffer List): Warn against
recursive invocations of 'buffer-list-update-hook' (Bug#34765).

doc/lispref/buffers.texi
src/buffer.c

index d97a095f686cc8545d0c07672836d6c80d529cb9..6ad1fb1824a2be17c076736f411324ff675c690a 100644 (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}),
 @code{kill-buffer} (@pxref{Killing Buffers}), @code{bury-buffer} (see
 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
 
 @node Creating Buffers
index 4ab5d4efe30551d5b4cd35f80263ced4f67e4a9d..12620f0d4aa3fc686a6fad7ad96c28767f8e9062 100644 (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,
               doc: /* Hook run when the buffer list changes.
-Functions running this hook are, `get-buffer-create',
-`make-indirect-buffer', `rename-buffer', `kill-buffer',
-`bury-buffer-internal' and `select-window'.  */);
+Functions (implicitly) running this hook are `get-buffer-create',
+`make-indirect-buffer', `rename-buffer', `kill-buffer', `bury-buffer'
+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;
   DEFSYM (Qbuffer_list_update_hook, "buffer-list-update-hook");