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)