Subject: bug#44500: 26.3; `prefix-command-echo-keystrokes-functions' causes regression

From: Stefan Kangas <[email-masked]>
Date: Mon, 11 Oct 2021 05:35:19 -0700

tags 44500 + moreinfo
thanks

Drew Adams <[email-masked]> writes:

> This variable was introduced in Emacs 25, apparently.
>
> I'm not happy that it's used/implemented the way it is, by default.  I
> have a function that calls `read-char' in a loop, and it took me a while
> to figure out why this code broke starting with Emacs 25.  That function
> is called by a command bound to `P B', where `P' is a prefix key.
>
> I'm not sure why, based on the doc of the variable etc., but even though
> `P B' is not itself a prefix key, the default value of the variable
> interfered with the normal behavior in the echo area.  After finding out
> the cause, I now bind the var to nil in that part of my code.  But this
> variable shouldn't have the effect it has, IMO.
>
> Here's the function I use:
>
> (defun bmkp-bmenu-read-filter-input ()
[...]
>
> This code worked fine prior to Emacs 25.  Starting with that release I
> had to bind `prefix-command-echo-keystrokes-functions' to nil.  I
> shouldn't have had to do that.

Could you provide a minimal example to reproduce the issue?

> If I don't add that binding, then:
>
> You don't always even see the prompt "Pattern: <etc.>".  Dunno why.
>
> Instead, you see `P-', then `P B-', as if `P B' were a prefix key (only
> `P' is a prefix key), and each char you type is also echoed as if it
> were part of a prefix key, i.e., it's followed by a hyphen.
>
> So if you type "red" after the (invisible) prompt, you see `P B r-',
> then `P B r e-', then `P B r e d-'.  You should instead see `Pattern: r',
> then `Pattern: re', then `Pattern: red'.
>
> Binding the variable to nil fixes the problem.  But this behavior is a
> bug, IMO, and the introduction of the variable shouldn't have changed
> the default echo-area behavior of Emacs.
>
> Hope the problem description is clear enough.
>
> In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)
>  of 2019-08-29
> Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
> Windowing system distributor `Microsoft Corp.', version 10.0.18362
> Configured using:
>  `configure --without-dbus --host=x86_64-w64-mingw32
>  --without-compress-install 'CFLAGS=-O2 -static -g3''