Subject: Re: bug#68200: 30.0.50; Emacs reloads init file when calling `documentation'

From: Alan Mackenzie <[email-masked]>
Date: Tue, 9 Jan 2024 11:26:52 +0000

Hello, Michael.

On Tue, Jan 09, 2024 at 00:09:29 +0100, Michael Heerdegen wrote:
> Alan Mackenzie <[email-masked]> writes:

> > And I'll have a look at why that variable no longer appears to be
> > working (though I have rather a lot on in the next few days).

> The let-binding of `byte-compile-output-docform' your commit adds in
> `byte-compile-output-docform' - you are aware that in my case this
> rebinds the buffer local variable before switching to a
> different buffer where this binding is not visible?

Ah.  I've always been a bit vague about mixing buffer local bindings
with let bindings.  Thanks for spotting the cause of the bug.

You've almost certainly written your own patch for it by now, but
nevertheless, could I ask you to try out this patch.  I don't have a
convenient test case here.

diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 2bc8d54ba77..ad8d53d01e9 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2605,9 +2605,10 @@ byte-compile-output-docform
 `defvaralias', `autoload' and `custom-declare-variable' need that."
   ;; We need to examine byte-compile-dynamic-docstrings
   ;; in the input buffer (now current), not in the output buffer.
-  (let ((byte-compile-dynamic-docstrings byte-compile-dynamic-docstrings))
+  (let ((dynamic-docstrings byte-compile-dynamic-docstrings))
     (with-current-buffer byte-compile--outbuffer
-      (let ((position (point))
+      (let ((byte-compile-dynamic-docstrings dynamic-docstrings)
+            (position (point))
             (print-continuous-numbering t)
             print-number-table
             ;; FIXME: The bindings below are only needed for when we're

Thanks!

> Michael.

-- 
Alan Mackenzie (Nuremberg, Germany).