Function: with-local-quit
with-local-quit is a macro defined in subr.el.gz.
Signature
(with-local-quit &rest BODY)
Documentation
Execute BODY, allowing quits to terminate BODY but not escape further.
When a quit terminates BODY, with-local-quit returns nil but
requests another quit. That quit will be processed as soon as quitting
is allowed once again. (Immediately, if inhibit-quit is nil.)
Probably introduced at or before Emacs version 22.1.
Source Code
;; Defined in /usr/src/emacs/lisp/subr.el.gz
(defmacro with-local-quit (&rest body)
"Execute BODY, allowing quits to terminate BODY but not escape further.
When a quit terminates BODY, `with-local-quit' returns nil but
requests another quit. That quit will be processed as soon as quitting
is allowed once again. (Immediately, if `inhibit-quit' is nil.)"
(declare (debug t) (indent 0))
`(condition-case nil
(let ((inhibit-quit nil))
,@body)
(quit (setq quit-flag t)
;; This call is to give a chance to handle quit-flag
;; in case inhibit-quit is nil.
;; Without this, it will not be handled until the next function
;; call, and that might allow it to exit thru a condition-case
;; that intends to handle the quit signal next time.
(eval '(ignore nil) t))))