mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-01 11:14:55 +00:00
(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.
This commit is contained in:
parent
73313accc4
commit
790e0ef78e
35
lisp/subr.el
35
lisp/subr.el
@ -1737,20 +1737,23 @@ in milliseconds; this was useful when Emacs was built without
|
||||
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 @@ If BODY finishes, `while-no-input' returns whatever value BODY produced."
|
||||
`(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.
|
||||
|
Loading…
Reference in New Issue
Block a user