Subject: Re: bug#52053: 29.0.50; Nonsensical button "C-x C-f" in scratch buffer

From: Stefan Kangas <[email-masked]>
Date: Mon, 29 Nov 2021 09:59:57 -0800

[[Sorry for the late comments here.]]

Gregory Heytings <[email-masked]> writes:

> Attached.

The basic idea sounds good to me, but I have some minor questions:

> diff --git a/lisp/apropos.el b/lisp/apropos.el
[snip]
> +  (let ((help-buffer-under-preparation t))
> +    (help-setup-xref (list 'apropos-describe-plist symbol)
> +		     (called-interactively-p 'interactive))
> +    (with-help-window (help-buffer)
> +      (set-buffer standard-output)
> +      (princ "Symbol ")
> +      (prin1 symbol)
> +      (princ (substitute-command-keys "'s plist is\n ("))
> +      (put-text-property (+ (point-min) 7) (- (point) 14)
> +		         'face 'apropos-symbol)
> +      (insert (apropos-format-plist symbol "\n  "))
> +      (princ ")"))))

I'm fine with this but I ask myself if binding this variable should be
done in a macro (perhaps `with-help-window'?).  I'm too under the
weather to look at or think about this properly, so I'll just leave you
with the question.

> +(defvar help-buffer-under-preparation nil
> +  "Whether a *Help* buffer is being prepared.
> +This variable is bound to t during the preparation of a *Help*
> +buffer.")

Should we document what the practical effect of this is, instead of when
it is t?  Perhaps related, is this the best name for this variable?

Finally, does this call for updating the docstring of
`help-link-key-to-documentation'?