branch: externals/timeout
commit 04db653e1d6782263dc4b18b3d130306eb1db507
Author: Karthik Chikmagalur <karthikchikmaga...@gmail.com>
Commit: Karthik Chikmagalur <karthikchikmaga...@gmail.com>

    timeout: Change debounce timer logic
    
    timeout.el (timeout--debounce-advice): Instead of cancelling the
    timer when debouncing, update its remaining time in place with
    `timer-set-time'.  This tip was provided by Ihor Radchenko.
---
 timeout.el | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/timeout.el b/timeout.el
index 160b40bf2d..e940e2936e 100644
--- a/timeout.el
+++ b/timeout.el
@@ -67,18 +67,18 @@ This is intended for use as function advice."
         (delay (or delay 0.50)))
     (lambda (orig-fn &rest args)
       "Debounce calls to this function."
-      (when (timerp debounce-timer)
-        (cancel-timer debounce-timer))
-      (prog1 default
-        (setq debounce-timer
-              (run-with-idle-timer
-               delay nil
-               (lambda (buf)
-                 (cancel-timer debounce-timer)
-                 (setq debounce-timer nil)
-                 (with-current-buffer buf
-                   (setq result (apply orig-fn args))))
-               (current-buffer)))))))
+      (if (timerp debounce-timer)
+          (timer-set-idle-time debounce-timer delay)
+        (prog1 default
+          (setq debounce-timer
+                (run-with-idle-timer
+                 delay nil
+                 (lambda (buf)
+                   (cancel-timer debounce-timer)
+                   (setq debounce-timer nil)
+                   (with-current-buffer buf
+                     (setq result (apply orig-fn args))))
+                 (current-buffer))))))))
 
 ;;;###autoload
 (defun timeout-debounce! (func &optional delay default)

Reply via email to