GNU bug report logs - #78737
sit-for behavior changes when byte-compiled

Previous Next

Package: emacs;

Reported by: Daniel Colascione <dancol <at> dancol.org>

Date: Mon, 9 Jun 2025 20:50:02 UTC

Severity: normal

Full log


Message #161 received at 78737 <at> debbugs.gnu.org (full text, mbox):

From: Daniel Colascione <dancol <at> dancol.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 78737 <at> debbugs.gnu.org, pipcet <at> protonmail.com, monnier <at> iro.umontreal.ca
Subject: Re: bug#78737: sit-for behavior changes when byte-compiled
Date: Fri, 13 Jun 2025 04:49:21 -0700

On June 13, 2025 4:36:42 AM PDT, Eli Zaretskii <eliz <at> gnu.org> wrote:
>> From: Daniel Colascione <dancol <at> dancol.org>
>> Cc: Pip Cet <pipcet <at> protonmail.com>,  monnier <at> iro.umontreal.ca,
>>   78737 <at> debbugs.gnu.org
>> Date: Fri, 13 Jun 2025 00:53:38 -0700
>> 
>> > If you are talking about a GUI session, then IME the 'emergency exit"
>> > procedure isn't reliably working in that case, and I'm not sure the
>> > implementation intends to support that.  I always knew that it's only
>> > reliably working on TTY frames.
>> >
>> > Or are you talking about the effect of the changes on the branch?
>> 
>> FWIW, the purpose of my N-times-in-T-milliseconds-within-one-command
>> formulation of emergency exit is to get the mechanism working reliably
>> in all cases.
>> 
>> I can definitely type 4-5 C-gs in a GUI Emacs (well, NS, but I recall
>> PGTK being similar?) and not have Emacs quit.  If I mash C-g, it
>> sometimes does, and sometimes doesn't.
>> 
>> Right now, the logic is this:
>> 
>>     {
>>       /* 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;
>>     }
>> 
>> IOW, the first quit after clearing Vquit_flag resets the count to one.
>> Maybe that's why it isn't working reliably right now.  If we reformulate
>> this mechanism not in terms of count == 3 (which is fiddly for all sorts
>> of reasons, since Vquit_flag can get reset) but in terms of the UX
>> directly --- N recent quits in T time in a single command --- we make
>> the whole thing more reliable.
>> 
>> If you set T=infinity and N=3, you get the current force quit UX (modulo
>> my upgrade-before-disabling-inhibit-quit thing), just more reliably, and
>> you can break out of arbitrary Lisp code.
>
>I suggest to leave the emergency exit feature alone for now, and focus
>on the interruptibility of Lisp programs.

That *is* the interruptabiltity of Lisp programs.l




This bug report was last modified 4 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.