Subject: Re: bug#78593: 31.0.50; describe-key broken on interactive lambdas

From: Eli Zaretskii <[email-masked]>
Date: Sun, 29 Jun 2025 07:55:27 +0300

> From: Stefan Monnier <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Sat, 28 Jun 2025 17:20:33 -0400
> 
> >> > Stefan, this is due to your change:
> >> >
> >> >   commit a4ec9ca12969018cdf15b8cc713b3ba054326f99
> >> >   Author:     Stefan Kangas <[email-masked]>
> >> >   AuthorDate: Tue Apr 1 21:25:33 2025 +0200
> >> >   Commit:     Stefan Kangas <[email-masked]>
> >> >   CommitDate: Tue Apr 1 21:25:33 2025 +0200
> >> >
> >> >       function-put: signal error with non-symbol
> >> >
> >> >       * lisp/subr.el (function-get): Signal an error if given a non-symbol
> >> >       for consistency with 'get'.
> >> >       * test/lisp/subr-tests.el (subr-butlast): Test for the above.
> >> >
> >> > Any reasons not to revert that?  function-get correctly returns nil if
> >> > its argument is not a symbol, so why should this signal an error?
> >> 
> >> IMO, `function-get/put` should accept *functions* as arguments, not
> >> just symbols.
> >
> > Not sure I understand: are you saying that it was wrong for me to
> > revert that commit?
> 
> No, but just pointing out that signaling errors for functions which are
> not symbols was the core of the problem.

I agree.

> It's probably OK to signal errors for values which are not functions
> at all.  Not sure if it's worth the trouble, OTOH.

Ah, so you are saying that symbolp should have been functionp?  But
does functionp indeed return non-nil for all the function types for
which we want function-get to do its job?  E.g., what about macros of
special forms?

Or do we have another predicate that would cover all the cases?