From 1e58824f29f1cbd4b4dd938412d19d1faa5651c1 Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Wed, 9 Feb 2022 20:41:50 +0100 Subject: Ensure that future is cancelled properly (Fix #25) --- cape.el | 13 +++++++------ 1 file 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))) -- cgit v1.0