From ... From: Erik Naggum Subject: Re: newbie: non local exits in CL Date: 1997/07/13 Message-ID: <3077774362659109@naggum.no>#1/1 X-Deja-AN: 256584145 References: <5ptmur$ne@news.u-bordeaux.fr> <5ptscu$am0@tools.bbnplanet.com> <3077688988077169@naggum.no> <5q7sgh$53l@pasilla.bbnplanet.com> mail-copies-to: never Organization: Naggum Software; +47 8800 8879; http://www.naggum.no Newsgroups: comp.lang.lisp * Hrvoje Niksic | Emacs SHOULD have means of handling this situation without further | corruption. the situation I mention comes from Emacs, where user interrupts are very easy, but the posed problem was intended to be more general. Kent Pitman writes that interrupts may occur at any random point in the execution of code, and suggests ways to ensure that the cleanup-forms are properly executed, but there is no similar guarantee that they will be executed at all, since there migt be another interrupt just before they are executed. (I'm using "evaluate" to refer to Lisp forms, and "execute" to refer to compiled machine code which _might_ be the interpreter, if any. I just invented this distinction, so if it's useless, let me know.) | Of course, one can wrap a `(let ((inhibit-quit t)) ...' around it, but it | doesn't strike me as a good general solution. in Emacs, this is possible, and it is indeed what I do when I really need those cleanup forms, but there is still the window where establishing the dynamic binding is susceptible to interrupts. however, I'm asking for a Common Lisp solution to the same problem. Unix has an answer (signal masks), but that's not at the right level, unless, of course, the Lisp implementation uses maskable software signals to do the job of exceptions and such, but it could become very messy, and very much dependent on the implementation. ... which is precisely why I'm looking for a clean interface to a complex solution. #\Erik -- if DUI is "Driving Under the Influence" then GUI must be "Graphics Under the Influence"