Subject: bug#15045: Point jumps inappropriately around time of Semantic lexing

From: Barry OReilly <[email-masked]>
Date: Tue, 15 Oct 2013 13:08:58 -0400

I'm thinking I should augment the patch so as the observable behavior
of (sit-for 0) doesn't change. It would no longer run timers if only
input-pending-p changes as described. Currently:

  (defun sit-for (seconds &optional nodisp obsolete)
    [...]
    (cond
     [...]
     ((input-pending-p)
      nil)
     ((<= seconds 0)
      (or nodisp (redisplay)))
     [...]

I considered whether (<= seconds 0) could fall through to the t case
instead. The read_char function has a complex implementation, so it's
not clear doing so wouldn't change behavior.

Is there another Lisp function that does timer_check and little else,
which the (<= seconds 0) case could call? Should I write a new subr
for it?

Looking ahead to the concurrency branch, should (sit-for 0 t) and
(thread-yield) have different behaviors? Or perhaps the former calls
the latter? I don't see thread-yield checking for timers to run,
should it? (And it didn't look like timers were split out into their
own threads on the concurrency branch.)