Subject: bug#78737: sit-for behavior changes when byte-compiled

From: Eli Zaretskii <[email-masked]>
Date: Wed, 11 Jun 2025 16:23:40 +0300

> From: Stefan Monnier <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  [email-masked],
>   [email-masked]
> Date: Tue, 10 Jun 2025 13:23:29 -0400
> 
> > BTW: the problem isn't just with transient. It also manifests with
> > read-extended-command! It's a nasty race that, AFAICT, has been with us
> > since the 90s. I think defining read_char to translate quits to quit_char
> > solves the problem.
> 
> I like your way of thinking.  I'm not completely sure it will solve
> world hunger, and it may come with regressions, but it's worth a try.
> Given the pervasive impact, it might be best to have a global config var
> to enable/disable it (with some scary internal name) until we're
> confident that it's an improvement.

This code is used everywhere, and we have no one on board who knows it
(and its many quirks and platform-dependent subtleties) well enough.
It isn't an accident that we prefer not to make changes in it: each
time we made even small changes in this code we ended up with
regressions.  We don't have any decent test suite for the this part of
Emacs.  We don't even have an exhaustive list of
features/commands/operations to test in order to make sure some change
doesn't break them.  Notable corners that get frequently broken by
changes in this area: keyboard macros, Leim input methods, and
non-keyboard input events.

So yes, we definitely need such a knob, if we are seriously
considering to merge these changes.  Daniel, would you please add such
a knob?