bug-gnu-emacs
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]