# HG changeset patch # User Richard M. Stallman # Date 1102966002 0 # Node ID ee02b41be7da12cb94b69c3df49a230e976b0222 # Parent dae0885d0340fd1dd34d26f20e24292aa6dd27f4 (while-no-input): New macro. diff -r dae0885d0340 -r ee02b41be7da lisp/subr.el --- a/lisp/subr.el Mon Dec 13 19:05:42 2004 +0000 +++ b/lisp/subr.el Mon Dec 13 19:26:42 2004 +0000 @@ -1862,6 +1862,19 @@ ,@body) (quit (setq quit-flag t) nil))) +(defmacro while-no-input (&rest body) + "Execute BODY only as long as there's no pending input. +If input arrives, that ends the execution of BODY, +and `while-no-input' returns nil. If BODY finishes, +`while-no-input' returns whatever value BODY produced." + (declare (debug t) (indent 0)) + (let ((catch-sym (make-symbol "input"))) + `(with-local-quit + (catch ',catch-sym + (let ((throw-on-input ',catch-sym)) + (when (sit-for 0 0 t) + ,@body)))))) + (defmacro combine-after-change-calls (&rest body) "Execute BODY, but don't call the after-change functions till the end. If BODY makes changes in the buffer, they are recorded