Subject: Re: bug#68671: 30.0.50; C-x 8 e s RET persistently breaks C-x 8 e r
From: Eli Zaretskii <[email-masked]>
To: Eshel Yaron <[email-masked]>
Cc: [email-masked]
Date: Sat, 27 Jan 2024 15:53:57 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Eshel Yaron <[email-masked]>
> Cc: [email-masked]
> Date: Sat, 27 Jan 2024 14:10:15 +0100
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> Date: Tue, 23 Jan 2024 11:59:41 +0100
> >> From:  Eshel Yaron via "Bug reports for GNU Emacs,
> >>  the Swiss army knife of text editors" <[email-masked]>
> >>
> >>
> >> 1. emacs -Q
> >> 2. C-x 8 e s RET
> >>    [ i.e. invoke `emoji-search` and exit with an empty minibuffer ]
> >> 3. Observe error "Wrong type argument: char-or-string-p, nil".  This
> >>    error message could be more friendly, but that's not the issue here.
> >> 4. C-x 8 e r
> >> 5. Observe error "Wrong type argument: stringp, nil".  That's the issue.
> >>
> >> What happens is that C-x 8 e s RET adds `nil` to the value of
> >> `emoji--recent`, which breaks subsequent C-x 8 e r (`emoji-recent`).
> >> This is extra troublesome because `emoji--recent` is used as a
> >> multisession variable, so simply restarting Emacs doesn't help.
> >>
> >> I see this also with Emacs 29.2, FWIW.
> >
> > Thanks.  Patches for fixing this will be most welcome.
> 
> I'm attaching such a patch below.  This provides better feedback when
> you exit the `C-x 8 e s` minibuffer with an empty input, and avoids
> adding `nil` to `emoji--recent` by bailing beforehand.

Thanks, installed on both emacs-29 and master branches, and closing
the bug.