# HG changeset patch # User Kim F. Storm # Date 1158013315 0 # Node ID b705485068723e03f23f861186c0209a673fda57 # Parent 6399941618f67ad0f8bcf9d7f839b765dd7074c9 (sit-for): Rework to use input-pending-p and cond. Return nil input is pending on entry also for SECONDS <= 0. (while-no-input): Use input-pending-p instead of sit-for. diff -r 6399941618f6 -r b70548506872 lisp/subr.el --- a/lisp/subr.el Mon Sep 11 22:21:42 2006 +0000 +++ b/lisp/subr.el Mon Sep 11 22:21:55 2006 +0000 @@ -1737,20 +1737,23 @@ floating point support. \(fn SECONDS &optional NODISP)" - (unless (or unread-command-events - unread-post-input-method-events - unread-input-method-events - (>= unread-command-char 0)) - (when (or obsolete (numberp nodisp)) - (setq seconds (+ seconds (* 1e-3 nodisp))) - (setq nodisp obsolete)) - (if noninteractive - (progn (sleep-for seconds) t) - (unless nodisp (redisplay)) - (or (<= seconds 0) - (let ((read (read-event nil nil seconds))) - (or (null read) - (progn (push read unread-command-events) nil))))))) + (when (or obsolete (numberp nodisp)) + (setq seconds (+ seconds (* 1e-3 nodisp))) + (setq nodisp obsolete)) + (cond + (noninteractive + (sleep-for seconds) + t) + ((input-pending-p) + nil) + ((<= seconds 0) + (or nodisp (redisplay))) + (t + (or nodisp (redisplay)) + (let ((read (read-event nil nil seconds))) + (or (null read) + (progn (push read unread-command-events) + nil)))))) ;;; Atomic change groups. @@ -2398,8 +2401,8 @@ `(with-local-quit (catch ',catch-sym (let ((throw-on-input ',catch-sym)) - (or (not (sit-for 0 0 t)) - ,@body)))))) + (or (input-pending-p) + ,@body)))))) (defmacro combine-after-change-calls (&rest body) "Execute BODY, but don't call the after-change functions till the end.