Subject: bug#33164: 26.1; Compiled function information in *Help*

From: Noam Postavsky <[email-masked]>
Date: Sun, 28 Oct 2018 09:27:45 -0400

retitle 33164 Compiled function value information in *Help*
quit

Drew Adams <[email-masked]> writes:

> C-h v region-extract-function tells me:
>
> region-extract-function is a variable defined in 'simple.el'.
> Its value is #f(compiled-function (method) #<bytecode 0x1001ae2e9>)
> ...
>
> There is a link to `simple.el'.  And the #<bytecode...> is also a link,
> to the disassembled byte-code.

> But it is less helpful than what we had back in Emacs 23, which printed
> the name or the lambda expression of the function that is the value of
> the variable.  Examples:
>
>  comment-line-break-function is a variable defined in `simple.el'.
>  Its value is comment-indent-new-line

This one is still the same in newer Emacs versions.

> But just showing the byte code, even disassembled, is not so helpful.
> What if a user wants to go to the function definition, to use it as a
> model for defining a new value for the variable or just to study it?

Similarly, C-h v float-pi tells me

    float-pi is a variable defined in ‘float-sup.el’.
    Its value is 3.141592653589793

It doesn't show me (* 4 (atan 1)) for study.

> But maybe I'm missing something?  Is there currently some way to get to
> the source code defining the function that is the variable value?

In this case, the link to `simple.el' takes you there because it's the
default value.  But in general, no, that information is not saved
anywhere.

The easiest fix is to say we should never assign anonymous functions to
variables (there have already been a couple of cases where some
anonymous function values were given names), so then they would all show
a symbol like comment-line-break-function.