mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-29 19:48:19 +00:00
Don't run timers in input-pending-p. Its new check-timers param
provides the prior behavior.. * src/keyboard.c (Finput_pending_p): Accept optional check-timers param. * lisp/subr.el (sit-for): Call (input-pending-p t) so as to behave as before. * test/automated/timer-tests.el: New file. Tests that (sit-for 0) allows another timer to run. Fixes: debbugs:15045
This commit is contained in:
parent
29df8a0b10
commit
ef56692035
3
etc/NEWS
3
etc/NEWS
@ -620,6 +620,9 @@ low-level libraries gfilenotify.c, inotify.c or w32notify.c.
|
||||
|
||||
* Incompatible Lisp Changes in Emacs 24.4
|
||||
|
||||
** `(input-pending-p)' no longer runs other timers which are ready to
|
||||
run. The new optional CHECK-TIMERS param allows for the prior behavior.
|
||||
|
||||
** `defvar' and `defcustom' in a let-binding affect the "external" default.
|
||||
|
||||
** The syntax of ?» and ?« is now punctuation instead of matched parens.
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-10-17 Barry O'Reilly <gundaetiapo@gmail.com>
|
||||
|
||||
* lisp/subr.el (sit-for): Call (input-pending-p t) so as to behave
|
||||
as before.
|
||||
|
||||
2013-10-18 Reuben Thomas <rrt@sc3d.org>
|
||||
|
||||
* textmodes/remember.el (remember): set buffer-offer-save in
|
||||
|
@ -2222,7 +2222,7 @@ floating point support."
|
||||
(noninteractive
|
||||
(sleep-for seconds)
|
||||
t)
|
||||
((input-pending-p)
|
||||
((input-pending-p t)
|
||||
nil)
|
||||
((<= seconds 0)
|
||||
(or nodisp (redisplay)))
|
||||
|
@ -1,3 +1,10 @@
|
||||
2013-10-17 Barry O'Reilly <gundaetiapo@gmail.com>
|
||||
|
||||
Don't run timers in input-pending-p. Its new check-timers param
|
||||
provides the prior behavior. (Bug#15045).
|
||||
* src/keyboard.c (Finput_pending_p): Accept optional check-timers
|
||||
param.
|
||||
|
||||
2013-10-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Make some functions static in non-Microsoft builds.
|
||||
|
@ -9950,12 +9950,13 @@ requeued_events_pending_p (void)
|
||||
return (!NILP (Vunread_command_events));
|
||||
}
|
||||
|
||||
|
||||
DEFUN ("input-pending-p", Finput_pending_p, Sinput_pending_p, 0, 0, 0,
|
||||
DEFUN ("input-pending-p", Finput_pending_p, Sinput_pending_p, 0, 1, 0,
|
||||
doc: /* Return t if command input is currently available with no wait.
|
||||
Actually, the value is nil only if we can be sure that no input is available;
|
||||
if there is a doubt, the value is t. */)
|
||||
(void)
|
||||
if there is a doubt, the value is t.
|
||||
|
||||
If CHECK-TIMERS is non-nil, timers that are ready to run will do so. */)
|
||||
(Lisp_Object check_timers)
|
||||
{
|
||||
if (!NILP (Vunread_command_events)
|
||||
|| !NILP (Vunread_post_input_method_events)
|
||||
@ -9965,7 +9966,8 @@ if there is a doubt, the value is t. */)
|
||||
/* Process non-user-visible events (Bug#10195). */
|
||||
process_special_events ();
|
||||
|
||||
return (get_input_pending (READABLE_EVENTS_DO_TIMERS_NOW
|
||||
return (get_input_pending ((NILP (check_timers)
|
||||
? 0 : READABLE_EVENTS_DO_TIMERS_NOW)
|
||||
| READABLE_EVENTS_FILTER_EVENTS)
|
||||
? Qt : Qnil);
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-10-17 Barry O'Reilly <gundaetiapo@gmail.com>
|
||||
|
||||
* test/automated/timer-tests.el: New file. Tests that (sit-for 0)
|
||||
allows another timer to run.
|
||||
|
||||
2013-10-14 Dmitry Gutov <dgutov@yandex.ru>
|
||||
|
||||
* indent/ruby.rb: More examples for bug#15594, both failing and
|
||||
|
38
test/automated/timer-tests.el
Normal file
38
test/automated/timer-tests.el
Normal file
@ -0,0 +1,38 @@
|
||||
;;; timer-tests.el --- tests for timers -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; This program is free software: you can redistribute it and/or
|
||||
;; modify it under the terms of the GNU General Public License as
|
||||
;; published by the Free Software Foundation, either version 3 of the
|
||||
;; License, or (at your option) any later version.
|
||||
;;
|
||||
;; This program is distributed in the hope that it will be useful, but
|
||||
;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
;; General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see `http://www.gnu.org/licenses/'.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(ert-deftest timer-tests-sit-for ()
|
||||
(let ((timer-ran nil)
|
||||
;; Want sit-for behavior when interactive
|
||||
(noninteractive nil))
|
||||
(run-at-time '(0 0 0 0)
|
||||
nil
|
||||
(lambda () (setq timer-ran t)))
|
||||
;; The test assumes run-at-time didn't take the liberty of firing
|
||||
;; the timer, so assert the test's assumption
|
||||
(should (not timer-ran))
|
||||
(sit-for 0 t)
|
||||
(should timer-ran)))
|
||||
|
||||
;;; timer-tests.el ends here
|
||||
|
Loading…
Reference in New Issue
Block a user