diff --git a/src/program-events.lisp b/src/program-events.lisp index a164f3d..ea77b52 100644 --- a/src/program-events.lisp +++ b/src/program-events.lisp @@ -258,7 +258,7 @@ (with-accessors ((lock lock) (condition-variable condition-variable)) object (setf (command-window:echo-character specials:*command-window*) - nil) + :completed) (with-lock (lock) (bt:condition-notify condition-variable)))) diff --git a/src/ui-goodies.lisp b/src/ui-goodies.lisp index fdc6322..7cfbba7 100644 --- a/src/ui-goodies.lisp +++ b/src/ui-goodies.lisp @@ -229,7 +229,12 @@ (condition-variable condition-variable)) event (push-event event) (with-lock (lock) - (bt:condition-wait condition-variable lock) + (loop + while (not (eq (command-window:echo-character *command-window*) + :completed)) + do + (bt:condition-wait condition-variable lock)) + (setf (command-window:echo-character *command-window*) nil) (funcall on-input-complete-fn (box:dunbox (payload event)))))))) (bt:make-thread #'thread-fn)))