Emoji.el not working with transient

What happened?

When running M-x emoji-insert I get transient--parse-suffix: Need command, argument, ‘:info’ or ‘:info*’; got #[0 \301\203a\0\301 \210\302\300!\210\300c\207 [😀 nil emoji--add-recent] 2 nil [nil (not-a-mode)]] in the minibuffer.

I think this is due to a different version of transient that doom (or one of it’s packages) uses and the built in version which emoji.el expects.

I deleted ./.local/straight/build-29.4/transient/transient-autoloads.el ./.local/straight/build-29.4/transient/transient.el ./.local/straight/build-29.4/transient/transient.elc and M-x emoji-insert worked fine until I did a doom sync -b again.

I know there is emojify in doom modules, but the transient of emoji.el is nicer than the list from emojify.

What did you expect to happen?

The transient with the emoji opens.

Steps to reproduce

  1. start emacs 29.1
  2. go to a editable buffer
  3. run M-x emoji-insert

System information


Loading data dump...

I found this: (add-to-list 'package--builtin-versions '(transient 0 4 3)) from here which does the trick for now.

However, straight does not seem to care that much about package--builtin-versions as with a doom sync -b transient 0.7.5 is installed and built and emoji-insert is not working again. I guess with the move to elpaca this will rectify by itself.

Setting

(package! transient
  :pin "8cf1238181d57504e68f42fa0d4ef66784b197a9"
  :recipe (:host github :repo "magit/transient"))

in packages.el does the trick for straight. Idk what else brakes because of this or is downgraded to earlier versions though.

Turns out this isn’t really an issue regarding doom but rather the combination of how emacs handles built in vs. external packages and straight.

Anyway, I think this thread is still useful for anyone who stumbles upon this.

Using the commit from transient version 0.4.7 makes the emacs daemon halt at startup with evil-collection error: (error Eager macro-expansion failure: (error "Need command or ‘:info’, got ‘:info*’")) Or it still starts but a connected emacs client is acting weird. I can not open find-file for example. The normal (non daemon/client) emacs works fine though.

Both daemon and emoji-insert works with transient 0.7.5, so I use this now:

(package! transient
 :pin "3430943eaa3222cd2a487d4c102ec51e10e7e3c9"
 :recipe (:host github :repo "magit/transient"))