emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/sweeprolog c0d8189056 06/12: FIXED: top-level buffer to th


From: ELPA Syncer
Subject: [nongnu] elpa/sweeprolog c0d8189056 06/12: FIXED: top-level buffer to thread synchronization
Date: Thu, 6 Oct 2022 02:59:33 -0400 (EDT)

branch: elpa/sweeprolog
commit c0d818905667f7f66922f41322f61cdf572a59bd
Author: Eshel Yaron <me@eshelyaron.com>
Commit: Eshel Yaron <me@eshelyaron.com>

    FIXED: top-level buffer to thread synchronization
---
 sweep.pl      |  8 ++++----
 sweeprolog.el | 15 +++++++++------
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/sweep.pl b/sweep.pl
index 4a1d376101..fd2dc0200a 100644
--- a/sweep.pl
+++ b/sweep.pl
@@ -829,12 +829,12 @@ sweep_top_level_client(InStream, OutStream, 
ip(127,0,0,1)) :-
     set_stream(user_input, newline(detect)),
     set_stream(user_output, newline(dos)),
     set_stream(user_error, newline(dos)),
+    thread_self(Self),
+    thread_property(Self, id(Id)),
+    thread_at_exit(retractall(sweep_top_level_thread_buffer(Id, _))),
     call_cleanup(prolog,
                  ( close(InStream, [force(true)]),
-                   close(OutStream, [force(true)]),
-                   thread_self(Self),
-                   thread_property(Self, id(Id)),
-                   retractall(sweep_top_level_thread_buffer(Id, _))
+                   close(OutStream, [force(true)])
                  )).
 sweep_top_level_client(InStream, OutStream, _) :-
     close(InStream),
diff --git a/sweeprolog.el b/sweeprolog.el
index bd9a9b78fc..51e7522100 100644
--- a/sweeprolog.el
+++ b/sweeprolog.el
@@ -1521,10 +1521,14 @@ Interactively, a prefix arg means to prompt for BUFFER."
       (sweeprolog-close-query)
       (unless (sweeprolog-true-p sol)
         (error "Failed to create new top-level!")))
-    (make-comint-in-buffer "sweeprolog-top-level"
-                           buf
-                           (cons "localhost"
-                                 sweeprolog-prolog-server-port))
+    (with-current-buffer buf
+      (make-comint-in-buffer "sweeprolog-top-level"
+                             buf
+                             (cons "localhost"
+                                   sweeprolog-prolog-server-port))
+      (unless comint-last-prompt
+        (accept-process-output (get-buffer-process (current-buffer)) 1))
+      (sweeprolog-top-level--populate-thread-id))
     (pop-to-buffer buf sweeprolog-top-level-display-action)))
 
 (defun sweeprolog-top-level--post-self-insert-function ()
@@ -1578,7 +1582,7 @@ Interactively, a prefix arg means to prompt for BUFFER."
                             (buffer-local-value 'major-mode b))))
          (read-string "Signal goal: ?- ")))
   (sweeprolog-signal-thread (buffer-local-value 'sweeprolog-top-level-thread-id
-                                                buffer)
+                                                (get-buffer buffer))
                             goal))
 
 ;;;###autoload
@@ -1593,7 +1597,6 @@ Interactively, a prefix arg means to prompt for BUFFER."
                                                   (length s)))
               comint-delimiter-argument-list '(?,)
               comment-start "%")
-  (add-hook 'comint-exec-hook #'sweeprolog-top-level--populate-thread-id nil t)
   (add-hook 'post-self-insert-hook 
#'sweeprolog-top-level--post-self-insert-function nil t)
   (setq sweeprolog-buffer-module "user")
   (add-hook 'completion-at-point-functions 
#'sweeprolog-completion-at-point-function nil t)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]