GNU bug report logs -
#78737
sit-for behavior changes when byte-compiled
Previous Next
Full log
View this message in rfc822 format
> 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. They are not independent,
but the emergency exit is a separate feature, so mixing these two
discussions makes the argument less effective. We can return to the
emergency exit later.
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.