emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/consult eedcb0c48a 3/5: consult--async-throttle: Optimi


From: ELPA Syncer
Subject: [elpa] externals/consult eedcb0c48a 3/5: consult--async-throttle: Optimize timer usage
Date: Sun, 25 Feb 2024 12:57:38 -0500 (EST)

branch: externals/consult
commit eedcb0c48ad797df9ae83c72ef5f0934640aa3ad
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    consult--async-throttle: Optimize timer usage
---
 consult.el | 26 +++++++++++---------------
 1 file changed, 11 insertions(+), 15 deletions(-)

diff --git a/consult.el b/consult.el
index aace2a085c..cf0f69a3ca 100644
--- a/consult.el
+++ b/consult.el
@@ -2302,30 +2302,26 @@ The THROTTLE delay defaults to 
`consult-async-input-throttle'.
 The DEBOUNCE delay defaults to `consult-async-input-debounce'."
   (setq throttle (or throttle consult-async-input-throttle)
         debounce (or debounce consult-async-input-debounce))
-  (let ((input "") last timer)
+  (let* ((input "") (timer (timer-create)) last)
     (lambda (action)
       (pcase action
         ((pred stringp)
          (unless (equal action input)
-           (when timer
-             (cancel-timer timer)
-             (setq timer nil))
+           (cancel-timer timer)
            (funcall async "") ;; cancel running process
            (setq input action)
            (unless (equal action "")
-             (setq timer
-                   (run-at-time
-                    (+ debounce
-                       (if last
-                           (min (- (float-time) last) throttle)
-                         0))
-                    nil
-                    (lambda ()
-                      (setq last (float-time))
-                      (funcall async action))))))
+             (timer-set-function timer (lambda ()
+                                         (setq last (float-time))
+                                         (funcall async action)))
+             (timer-set-time
+              timer
+              (timer-relative-time
+               nil (+ debounce (if last (min (- (float-time) last) throttle) 
0))))
+             (timer-activate timer)))
          nil)
         ('destroy
-         (when timer (cancel-timer timer))
+         (cancel-timer timer)
          (funcall async 'destroy))
         (_ (funcall async action))))))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]