From 292335770554abdab626694693e7528a88159651 Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Fri, 15 Sep 2023 10:08:04 +0200 Subject: [PATCH] Check that top-level thread is alive when signaling it * sweeprolog.el (sweeprolog-top-level-signal-current): Delete stale pty "process" when trying to signal a top-level thread that has already exited. --- sweeprolog.el | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/sweeprolog.el b/sweeprolog.el index ada99c5..b2fbcd5 100644 --- a/sweeprolog.el +++ b/sweeprolog.el @@ -3262,7 +3262,21 @@ GOAL. Otherwise, GOAL is set to a default value specified by sweeprolog-top-level-signal-default-goal))) (unless sweeprolog-top-level-thread-id (sweeprolog-top-level--populate-thread-id)) - (sweeprolog-signal-thread sweeprolog-top-level-thread-id goal)) + (when (and (or (not sweeprolog-top-level-thread-id) + (eq (condition-case error + (sweeprolog-signal-thread sweeprolog-top-level-thread-id goal) + (prolog-exception + (pcase error + (`(prolog-exception + compound "error" + (compound "existence_error" (atom . "thread") ,_) + . + ,_) + 'no-thread)))) + 'no-thread)) + sweeprolog-top-level-use-pty) + (delete-process (get-buffer-process + (current-buffer))))) ;;;###autoload (define-derived-mode sweeprolog-top-level-mode comint-mode "Sweep Top-level" -- 2.39.2