summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarthik Chikmagalur <karthikchikmagalur@gmail.com>2023-08-19 19:10:31 -0700
committerKarthik Chikmagalur <karthikchikmagalur@gmail.com>2023-08-19 19:10:31 -0700
commit04db653e1d6782263dc4b18b3d130306eb1db507 (patch)
tree8665b1252b1a93715d8f8c53e1a39acc19e2a190
parent150f04105549a2d9732d240c88a7196afce6593f (diff)
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.
-rw-r--r--timeout.el24
1 files changed, 12 insertions, 12 deletions
diff --git a/timeout.el b/timeout.el
index 160b40b..e940e29 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)