Subject: Re: bug#64927: 30.0.50; kill-ring with no X

From: Eli Zaretskii <[email-masked]>
Date: Thu, 03 Aug 2023 12:51:23 +0300

> From: Colin Baxter <[email-masked]>
> Date: Sat, 29 Jul 2023 12:25:16 +0100
> 
> >>>>> Colin Baxter <[email-masked]> writes:
> 
>     > 1. Emacs-30.0.50 compiled --with-x-toolkit=no
>     > 2. emacs -Q <RET>
>     > 3. C-x C-f test.txt <RET>
>     > 4. Enter some text, e.g. "This is a test."
>     > 5. Enter some more text, e.g. "This is another test."
>     > 6. Place the cursor somewhere and press <F10>
>     > 7. Select Edit --> Paste from kill menu --> This is test.
>     > 8. popup-menu: Invalid
>     > `key-parse' syntax: %S: ["This is a test"]
> 
> Forget to mention that the text 4, 5 has of course to be copied to the
> kill-ring using C-<space> M-w. Sorry about that!

I can reproduce the same problem on a TTY frame by activating the menu
with F10, but not if the menu is activated with a mouse (on a
text-mode terminal that has a mouse).  Do you see the same problem in
the non-toolkit build if you use the mouse instead of the keyboard?

This also affects Emacs 29, and is a regression from Emacs 28, which
is related to the use of the new key-* functions.  Specifically, the
error is signaled by the call to key-valid-p issued by
possibly_translate_key_sequence, which is a subroutine of lookup-key.
The argument KEY of possibly_translate_key_sequence in this case is a
vector whose only element is a string with text properties:

  [#("create a file" 0 13 (face font-lock-comment-face fontified t))]

key-valid-p doesn't support such strings, it expects strings that
describe key sequences.

Significantly, possibly_translate_key_sequence calls key-parse after
it calls key-valid-p, and key-parse copes with this string quite well.
So I'm thinking of removing the key-valid-p call from
possibly_translate_key_sequence, since I believe key-parse can detect
any problems by itself?  Stefan, WDYT?

Colin, can you try such a change and see if it produces any
regressions?