Subject: RE: bug#17397: 24.4.50; REGRESSION: `temp-buffer-show-hook' is no longer invoked for `describe-variable'

From: Drew Adams <[email-masked]>
Date: Tue, 13 May 2014 14:24:43 -0700 (PDT)

I would really like to get some help with this. So far, no
response at all.

Help functions using buffer *Help* previously used
`with-output-to-temp-buffer', which runs `temp-buffer-setup-hook'
and `temp-buffer-show-hook'.  And previously the setup hook
usually put the buffer in help mode.

Now, *Help* is set up by `with-help-window', and neither of those
hooks is run by it.  This is a regression, to me - any code or any
user who relies on those hooks being run for *Help* buffers is up
the creek without a paddle, AFAICS.

So be it.  But what is that code or that user supposed to do now?

`with-help-window' invokes `with-temp-buffer-window', which runs
`temp-buffer-window-setup-hook' and `temp-buffer-window-show-hook'.

To get *Help* to DTRT for the code or user that previously used
`temp-buffer-setup-hook' or `temp-buffer-show-hook, is it
appropriate to put the same things on `temp-buffer-window-setup-hook'
and `temp-buffer-window-show-hook' instead?  Or will that maybe
have unwanted effects because `with-temp-buffer-window' is perhaps
used for more than just *Help*?

Not clear to me.  And I find no help in the doc or NEWS - or in
this bug thread, so far.

Should I be adding `fit-frame-if-one-window' to `temp-buffer-window'
for Emacs 24.4, to get the effect it has in Emacs 24.3 (and prior)
by being on `temp-buffer-show-hook'?

If not, how to get the same effect?  If yes, how to deal with other
possible uses of `with-temp-buffer-window', which have nothing to do
with *Help*?  (In the case of `fit-frame-if-one-window', that would
probably not hurt anything, but the question is more general.)

--

The existing doc is anyway wrong in some cases, AFAICT: The doc
string of `with-temp-buffer-window' says:

  This construct is similar to `with-output-to-temp-buffer'
  but, neither runs `temp-buffer-setup-hook' which usually puts
  the buffer in Help mode, nor `temp-buffer-show-function' (the
  ACTION argument replaces this).

And the doc string of `temp-buffer-setup-hook', likewise, says:

  This hook is normally set up with a function to put the buffer
  in Help mode.

I don't get the impression that either of those statements is
true anymore.  It seems like there is *no relation* anymore
between such temp-buffer things and Help mode.  Furthermore,
grepping for `temp-buffer-setup-hook' in the Emacs sources
shows that it is not used for this at all anymore.

A little help, please.