GNU bug report logs -
#78737
sit-for behavior changes when byte-compiled
Previous Next
Full log
View this message in rfc822 format
On June 13, 2025 2:25:13 PM EDT, Pip Cet <pipcet <at> protonmail.com> wrote:
>"Stefan Monnier" <monnier <at> iro.umontreal.ca> writes:
>
>>> What is a "normal quit"?
>>
>> A single C-g.
>>
>>> What is "emergency quit"?
>>
>> Something like `C-g C-g C-g`, tho we don't have that implemented,
>> currently, AFAIK.
>
>It's implemented. See handle_interrupt in keyboard.c:
>
> /* Request quit when it's safe. */
> int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1;
> force_quit_count = count;
> if (count == 3)
> Vinhibit_quit = Qnil;
> Vquit_flag = Qt;
>
>The "emergency" part is clearing the inhibit-quit flag when
>force_quit_count reaches 3. The bug is that it should be >= 3, and the
>questionable design feature is that we should reset the counter if
>Vquit_flag and Vinhibit_quit are both nil, not just based on Vquit_flag.
>
>However, there's also the rest of handle_interrupt, which applies to
>terminal sessions and takes them through an interactive text adventure
>which never clears Vinhibit_quit.
Yes. We need something like the force quit code you posted in spirit, but I don't think that's the right implementation because it's too easy to prematurely clear the quit flag.
This bug report was last modified 57 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.