summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2022-02-09 20:41:50 +0100
committerDaniel Mendler <mail@daniel-mendler.de>2022-02-09 20:42:29 +0100
commit1e58824f29f1cbd4b4dd938412d19d1faa5651c1 (patch)
treed58b44b2d2da7e89b23780564ad59e7d3baf0e34
parentdde834126c2abcc0e518330ab15f17caffe6e824 (diff)
Ensure that future is cancelled properly (Fix #25)
-rw-r--r--cape.el13
1 files changed, 7 insertions, 6 deletions
diff --git a/cape.el b/cape.el
index 13c1e5d..ea8e323 100644
--- a/cape.el
+++ b/cape.el
@@ -882,13 +882,14 @@ If INTERACTIVE is nil the function acts like a capf."
(funcall fetch
(lambda (arg)
(when (eq res 'cape--waiting)
- (push 'cape--done unread-command-events))
- (setq res arg)))
- (let ((ev (let (input-method-function) (read-event nil t))))
- (when (eq res 'cape--waiting)
+ (push 'cape--done unread-command-events)
+ (setq res arg))))
+ (when (eq res 'cape--waiting)
+ (let ((ev (let (input-method-function) (read-event nil t))))
(unless (eq ev 'cape--done)
- (push (cons t ev) unread-command-events))
- (throw toi t))))
+ (push (cons t ev) unread-command-events)
+ (setq res 'cape--cancelled)
+ (throw toi t)))))
(setq unread-command-events
(delq 'cape--done unread-command-events)))
(funcall fetch (lambda (arg) (setq res arg)))