[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#17007: 24.3.50; describe-key/function evaluates documentation functi
From: |
martin rudalics |
Subject: |
bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer |
Date: |
Fri, 14 Mar 2014 15:34:37 +0100 |
> It's simpler if I give you an emacs -Q recipe, right? In your *scratch*
> buffer:
>
> (defun foo ())
> (defun foo-doc ()
> (format "Foo does nothing, and by the way your tab does `%s'"
> (key-binding "\t")))
> (put 'foo 'function-documentation '(foo-doc))
> (describe-function 'foo)
>
> This fails on the latest Emacs, i.e. the last line returned by the last
> form is
>
> "Foo does nothing, and by the way your tab does `forward-button'"
>
> Whereas it should report, as in Emacs 24.3
>
> "Foo does nothing, and by the way your tab does `indent-for-tab-command'"
Confirmed.
> The trace of functions is the following:
>
> 1 -> (describe-function foo)
> | 2 -> (describe-function-1 foo)
> | | 3 -> (documentation foo t)
> | | 3 <- documentation: "Foo does nothing, and by the way your tab does
`forward-button'"
> | 2 <- describe-function-1: nil
> 1 <- describe-function: "foo is a Lisp function.
>
> But that doesn't show how the macro `with-temp-buffer-window', expanded
> from `with-help-window', eventually wraps the latter's BODY in a
> `with-current-buffer' call, making its forms be evaluated in the newly
> created *Help* buffer, instead of *scratch*.
Indeed.
> One of those forms is the
> call to `describe-function-1', which eventually calls `foo-doc'.
>
> As I explained in my last email (which got sent from the wrong address
> but is here
> http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-03/msg00411.html)
> it was the reversion of two lines in `with-temp-buffer-window' that
> broke it.
Not really. The current version of `with-temp-buffer-window' and that
released with Emacs 24.3 are the same. It changed only intermittently
and that's what you noticed. Or can you spot a difference now?
> But maybe it was fixing something else that I don't understand. Can
> you help me understand what you were achieving with the original fix
> and the reversion?
I first reacted to a bug report by Nicolas Richard
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16816
and tried to make it behave as in the doc-string. Unfortunately, this
broke things as subsequently remarked by Juanma in the same thread and
also broke code Thierry wrote as reported in
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16882
so I decided to restore the 24.3 behavior. I'm still not fine with that
but it's now some time since 24.3 is out and I'm a bit reluctant to
change it back again, mostly so because I don't know how many bugs such
a change might produce and how soon they'd get detected.
And I'm still too silly to understand how this (apparently?) worked with
24.3 and why it's broken now. Any ideas?
martin
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, João Távora, 2014/03/13
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, Glenn Morris, 2014/03/13
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, martin rudalics, 2014/03/14
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, João Távora, 2014/03/14
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer,
martin rudalics <=
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, Nicolas Richard, 2014/03/14
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, martin rudalics, 2014/03/14
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, martin rudalics, 2014/03/16
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, Nicolas Richard, 2014/03/16
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, João Távora, 2014/03/16
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, Juanma Barranquero, 2014/03/19
- bug#17007: 24.3.50; describe-key/function evaluates documentation function in the wrong buffer, martin rudalics, 2014/03/16