Subject: Re: bug#58875: 29.0.50; emoji-insert triggers a Lisp error

From: Jonas Bernoulli <[email-masked]>
Date: Wed, 02 Nov 2022 23:39:04 +0100

Kévin Le Gouguec <[email-masked]> writes:

> Kévin Le Gouguec <[email-masked]> writes:
>
>> If I revert 2022-10-28 "* lisp/transient.el: Update to package version
>> v0.3.7-173-g81b29ca" (de5a3fa1e5), then I no longer get an error.
>>
>> Haven't dug deeper yet.  FWIW it's not clear to me if the fault lies on
>> the side of transient.el or emoji.el: Magit and rg.el's transients work
>> fine AFAICT.
>
> Bisecting the transient repo with…
>
> ~/src/emacs/master/src/emacs -Q --batch \
>     -L ~/.emacs.d/elpa/compat-28.1.2.2  \
>     -L ~/src/emacs/transient/lisp       \
>     -eval '(emoji-insert)'              || false
>
> … points to:
>
>   ea851f3bde0b769b04ad03ab1a1341c013d0ddc6 is the first bad commit
>   commit ea851f3bde0b769b04ad03ab1a1341c013d0ddc6
>   Author: Jonas Bernoulli <[email-masked]>
>   Date:   Thu Oct 20 12:19:22 2022 +0200
>
>       Turn suffix specifications into code instead of data
>
>       The macro `transient-define-prefix' manipulates its GROUP arguments,
>       but until now it expanded to new vectors using vector syntax, i.e.,
>       data.  An effort was made to evaluate lambda expressions, but that did
>       not really work.
>
>       Now the GROUP arguments are expanded into code, which evaluates to new
>       vectors.  This way lambda expressions are automatically evaluated and
>       byte-compiled, but we now have to take care to quote certain lists and
>       symbols.
>
>       Functions such as `transient-insert-suffix' take group and suffix
>       specs of the same form as `transient-define-prefix' but because there
>       is no macro expansion step, they have to `eval' the result of parsing
>       these specifications.
>
>       Add a new macro `transient-define-groups', which can be used to define
>       suffix groups that are shared between multiple prefix commands, but
>       don't use it for `transient-common-commands' to avoid having to make
>       a bunch of functions available at compile time.
>
> Still haven't actually looked at what the fuss is about.  Based solely
> on emoji.el's use of internal transient-- functions, I'd be tempted to
> conclude that emoji--define-transient needs to be updated 🤔

Fixed with da89281837ae85b7656070b7afbd3e6d94293b88.  Thanks for the
report.

     Cheers,
     Jonas