diff options
| author | Karthik Chikmagalur <karthikchikmagalur@gmail.com> | 2023-08-19 19:10:31 -0700 |
|---|---|---|
| committer | Karthik Chikmagalur <karthikchikmagalur@gmail.com> | 2023-08-19 19:10:31 -0700 |
| commit | 04db653e1d6782263dc4b18b3d130306eb1db507 (patch) | |
| tree | 8665b1252b1a93715d8f8c53e1a39acc19e2a190 | |
| parent | 150f04105549a2d9732d240c88a7196afce6593f (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.el | 24 |
1 files changed, 12 insertions, 12 deletions
@@ -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) |
