branch: elpa/with-simulated-input
commit e7e8829eee4f6848a385a46a4d9d91cbc0c5c4d9
Author: Ryan C. Thompson <[email protected]>
Commit: Ryan C. Thompson <[email protected]>

    Make SECS arg to wsi-simulated-idle-time optional
---
 with-simulated-input.el | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/with-simulated-input.el b/with-simulated-input.el
index 290d2f45ee..e4787cb936 100644
--- a/with-simulated-input.el
+++ b/with-simulated-input.el
@@ -221,7 +221,7 @@ simulated idle time to be returned instead of the real 
value."
               wsi-simulated-idle-time))
     ad-do-it))
 
-(cl-defun wsi-simulate-idle-time (secs &optional actually-wait)
+(cl-defun wsi-simulate-idle-time (&optional secs actually-wait)
   "Run all idle timers with delay less than SECS.
 
 This simulates resetting the idle time to zero and then being
@@ -229,10 +229,24 @@ idle for SECS seconds. If ACTUALLY-WAIT is non-nil, this 
function
 will also wait for the specified amount of time before running
 each timers.
 
+If SECS is nil, simulate enough idle time to run each timer in
+`timer-idle-list' at least once. (It's possible that some timers
+will be run more than once, since each timer could potentially
+add new timers to the list.)
+
 While each timer is running, `current-idle-time' will be
-overridden to return the current simulated idle time."
+overridden to return the current simulated idle time.
+
+This function does not run any timers in `timer-list', even
+though they would run during real idle time."
   (interactive
    "nSeconds of idle time: \nP")
+  ;; SECS defaults to the maximum idle time of any currently active
+  ;; timer.
+  (unless secs
+    (setq secs
+          (cl-loop for timer in timer-idle-list
+                   maximize (float-time (timer--time timer)))))
   (cl-loop
    with already-run-timers = nil
    with stop-time = (seconds-to-time secs)

Reply via email to