Subject: bug#17007: closed (Re: bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 19 Mar 2014 10:51:03 +0000

Your bug report

#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
17007: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17007
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer
From: Juanma Barranquero <[email-masked]>
To: João Távora <[email-masked]>
Cc: martin rudalics <[email-masked]>, [email-masked], Nicolas Richard <[email-masked]>
Date: Wed, 19 Mar 2014 11:50:08 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Closing, presumably fixed in

2014-03-16  Martin Rudalics  <[email-masked]>

        Fix behavior of with-temp-buffer-window (Bug#16816, Bug#17007).

Subject: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer
From: [email-masked] (João Távora)
To: [email-masked]
Date: Thu, 13 Mar 2014 11:22:32 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi

So yasnippet has this bit of code (simplified for this report)

    (put 'yas-expand  'function-documentation
         '(yas--expand-from-trigger-key-doc t))
    (defun yas--expand-from-trigger-key-doc (context)
      "A doc synthesizer for `yas-expand'."
      (concat "Expand a snippet before point. If no snippet
    expansion is possible, "
              (let* ((fallback (yas--keybinding-beyond-yasnippet)))
                (or (and fallback
                         (format "call command `%s'"
                                 (pp-to-string fallback)))
                    "do nothing (`yas-expand' doesn't shadow\nanything)."))))

This used to work fine and output something like

    <tab> runs the command yas-expand, which is an alias for
    `yas-expand-from-trigger-key' in `yasnippet.el'.
     
    (yas-expand &optional FIELD)
     
    Expand a snippet before point. If no snippet
    expansion is possible, call command `indent-for-tab-command'

This has stopped working in 24.3.5 since `with-help-window' started
replaced `with-output-to-temp-buffer' with
`with-temp-buffer-window'. The former just binds `standard-output' while
the latter also sets the current buffer to the *Help* buffer.

The result is that the fallback keybinding reported is always
"forward-button", which is almost always wrong.

One could either

1. revert that change (was it just a cleanup?)
2. fix/parametrize that particular behaviour of
`with-temp-buffer-window'
3. pass an extra original-buffer arg to `describe-function-1'
4. dynamically bind some new `help-original-buffer' var.

Even though a better mechanism for "fallback keybindings" is being
discussed (and by then yasnippet can get rid of its own technique, which
is half-baked but working since emacs 22), it'd be nice if the current
function-documentation trick is kept working for upcoming emacs 24.4.

This originated in https://github.com/capitaomorte/yasnippet/issues/468

http://github.com/capitaomorte/autopair does something similar and is
probably also affected, but I plan to deprecate autopair in favor of
24.4's electric-pair-mode anyway.

Thanks,
João

In GNU Emacs 24.3.50.1 (i686-pc-mingw32)
 of 2014-01-04 on LEG570