Subject: bug#17210: 24.3.50; help mode [back] link to a C-h b keybind listing fails with message "Current buffer is not in Help mode"

From: Eli Zaretskii <[email-masked]>
Date: Mon, 07 Apr 2014 18:54:39 +0300

> Date: Mon, 07 Apr 2014 09:48:43 +0200
> From: martin rudalics <[email-masked]>
> 
>  > Debugger entered--Lisp error: (error "Current buffer is not in Help mode")
>  >    signal(error ("Current buffer is not in Help mode"))
>  >    error("Current buffer is not in Help mode")
>  >    help-buffer()
>  >    describe-bindings-internal(nil nil)
>  >    describe-bindings(nil #<buffer *scratch*>)
>  >    apply(describe-bindings (nil #<buffer *scratch*>))
>  >    help-xref-go-back(#<buffer *Help*>)
>  >    apply(help-xref-go-back #<buffer *Help*>)
>  >    help-do-xref(63 help-xref-go-back (#<buffer *Help*>))
>  >    help-button-action(#<marker (moves after insertion) at 66 in *Help*>)
>  >    button-activate(#<marker (moves after insertion) at 66 in *Help*> nil)
>  >    push-button(66)
>  >    push-button((mouse-2 (#<window 6 on *Help*> 66 (34 . 106) 107906261 nil 66 (3 .
>  > 5) nil (7 . 11) (9 . 19))))
>  >    call-interactively(push-button nil nil)
>  >    command-execute(push-button)
> 
> Confirmed.  Thanks for caring to provide a simple scenario.
> 
> I could fix this by restoring the code of `describe-bindings-internal'
> from Emacs 24.3.  But the behavior of `help-xref-go-back' here is
> erratic per se: It does not restore the earlier contents of the bindings
> from the *scratch* buffer but IIUC those of the *Help* buffer and I'm
> not sure whether that's what we want (I think we don't).

Can you tell why you replaced a literal "*Help*" with a call to
help-buffer?  That change was part of your pixel-resizing changes, but
it doesn't sound related to me, and the ChangeLog entry doesn't
provide any explanations to convince me otherwise.

Also, describe-bindings-internal is only called from this single
place, so I see no reason to support some other help buffers.  Do you?