[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))))))