[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/sweeprolog 83bbd58031 153/166: ADDED: new command sweeprol
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/sweeprolog 83bbd58031 153/166: ADDED: new command sweeprolog-restart for resetting sweep |
Date: |
Fri, 30 Sep 2022 04:59:35 -0400 (EDT) |
branch: elpa/sweeprolog
commit 83bbd580315573f54a90b2a13b8b35e6c630ea9a
Author: Eshel Yaron <me@eshelyaron.com>
Commit: Eshel Yaron <me@eshelyaron.com>
ADDED: new command sweeprolog-restart for resetting sweep
* (sweeprolog-init): new &rest args
* (sweeprolog-restart): new command
* sweeprolog-prefix-map: bind it
---
sweep.pl | 6 ------
sweeprolog.el | 50 ++++++++++++++++++++++++++++++++++++++++----------
2 files changed, 40 insertions(+), 16 deletions(-)
diff --git a/sweep.pl b/sweep.pl
index afaa97150e..c8a29f08ad 100644
--- a/sweep.pl
+++ b/sweep.pl
@@ -776,12 +776,6 @@ sweep_top_level_server_loop_(accept(Buffer), ServerSocket)
:-
set_stream(InStream, close_on_abort(false)),
set_stream(OutStream, close_on_abort(false)),
thread_create(sweep_top_level_client(InStream, OutStream, Peer), T,
[detached(true)]),
- at_halt(( is_thread(T),
- thread_property(T, status(running))
- -> thread_signal(T, thread_exit(0)),
- thread_join(T, _)
- ; true
- )),
thread_property(T, id(Id)),
asserta(sweep_top_level_thread_buffer(Id, Buffer)),
sweep_top_level_server_loop(ServerSocket).
diff --git a/sweeprolog.el b/sweeprolog.el
index 523e536b74..b02c32da6d 100644
--- a/sweeprolog.el
+++ b/sweeprolog.el
@@ -6,7 +6,7 @@
;; Maintainer: Eshel Yaron <me(at)eshelyaron(dot)com>
;; Keywords: prolog languages extensions
;; URL: https://git.sr.ht/~eshel/sweep
-;; Package-Version: 0.4.0
+;; Package-Version: 0.4.1
;; Package-Requires: ((emacs "28"))
;; This file is NOT part of GNU Emacs.
@@ -119,9 +119,9 @@ inserted to the input history in
`sweeprolog-top-level-mode' buffers."
:group 'sweeprolog)
(defcustom sweeprolog-init-args (list "-q"
- "--no-signals"
- "-g"
- "[library(sweep)]")
+ "--no-signals"
+ "-g"
+ "[library(sweep)]")
"List of strings used as initialization arguments for Prolog."
:package-version '((sweeprolog "0.3.1"))
:type '(repeat string)
@@ -285,13 +285,42 @@ FLAG and VALUE are specified as strings and read as
Prolog terms."
(when (sweeprolog-true-p sol)
(setq sweeprolog-prolog-server-port (cdr sol)))))
-(defun sweeprolog-init ()
+(defun sweeprolog-init (&rest args)
(apply #'sweeprolog-initialize
(cons (or sweeprolog-swipl-path (executable-find "swipl"))
- sweeprolog-init-args))
+ (append sweeprolog-init-args args)))
(sweeprolog-setup-message-hook)
(sweeprolog-start-prolog-server))
+(defun sweeprolog-restart (&rest args)
+ "Restart the embedded Prolog runtime.
+
+ARGS is a list of strings appended to the value of
+`sweeprolog-init-args' to produce the Prolog initialization
+arguments.
+
+Interactively, with a prefix arguments, prompt for ARGS.
+Otherwise set ARGS to nil."
+ (interactive
+ (and
+ current-prefix-arg
+ (split-string-shell-command (read-string "swipl arguments: "))))
+ (when-let ((top-levels (seq-filter (lambda (buffer)
+ (eq 'sweeprolog-top-level-mode
+ (buffer-local-value 'major-mode
+ buffer)))
+ (buffer-list))))
+ (if (y-or-n-p "Stop running sweep top-level processes?")
+ (dolist (buffer top-levels)
+ (let ((process (get-buffer-process buffer)))
+ (when (process-live-p process)
+ (delete-process process))))
+ (user-error "Cannot restart sweep with running top-level processes")))
+ (message "Stoping sweep.")
+ (sweeprolog-cleanup)
+ (message "Starting sweep.")
+ (apply #'sweeprolog-init args))
+
(defvar sweeprolog-predicate-completion-collection nil)
(defvar-local sweeprolog-buffer-module "user")
@@ -1342,13 +1371,14 @@ Interactively, a prefix arg means to prompt for BUFFER."
;;;###autoload
(defvar sweeprolog-prefix-map
(let ((map (make-sparse-keymap)))
+ (define-key map "F" #'sweeprolog-set-prolog-flag)
+ (define-key map "P" #'sweeprolog-pack-install)
+ (define-key map "R" #'sweeprolog-restart)
+ (define-key map "e" #'sweeprolog-view-messages)
+ (define-key map "l" #'sweeprolog-load-buffer)
(define-key map "m" #'sweeprolog-find-module)
(define-key map "p" #'sweeprolog-find-predicate)
(define-key map "t" #'sweeprolog-top-level)
- (define-key map "l" #'sweeprolog-load-buffer)
- (define-key map "P" #'sweeprolog-pack-install)
- (define-key map "F" #'sweeprolog-set-prolog-flag)
- (define-key map "e" #'sweeprolog-view-messages)
map)
"Keymap for `sweeprolog' global commands.")
- [nongnu] elpa/sweeprolog 1c6d2e96a8 078/166: ENHANCED: allow user to specify location of swipl binary, (continued)
- [nongnu] elpa/sweeprolog 1c6d2e96a8 078/166: ENHANCED: allow user to specify location of swipl binary, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog 5a8f70149f 099/166: FIXED: (sweep-load-buffer): error after prompting for a buffer, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog 7327016d15 095/166: FIXED: sweep_predicates_collection/2: include preds defined in user, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog a70a730f48 087/166: PORT: don't use the 2nd arg to looking-at, added only in Emacs 29, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog d1a2913f75 115/166: ENHANCED: Update semantic highlighting on idle timer in sweep-mode, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog b168465391 098/166: FIXED: sweep_load_buffer/3: load files in the context of "user", ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog db7ef44a61 083/166: DOC: add manual section about setting Prolog flags, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog 521a4bfde5 132/166: BUILD: replaced Makefile with CMakeLists.txt, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog ecf601dd54 133/166: FIXED: indentation error when typing at end of buffer, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog 7bca15bd1e 141/166: DOC: fix copy-paste error in README.org, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog 83bbd58031 153/166: ADDED: new command sweeprolog-restart for resetting sweep,
ELPA Syncer <=
- [nongnu] elpa/sweeprolog a369e46143 160/166: ENHANCED: underline occurrences of the variable at point, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog 8d13f21c0d 162/166: ADDED: new command sweeprolog-highlight-variable, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog 3d5d0deda5 161/166: ADDED: new user option sweeprolog-enable-cursor-sensor, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog 8f0e4a644d 164/166: FIXED: error on interactively removing variable highlighting, ELPA Syncer, 2022/09/30
- [nongnu] elpa/sweeprolog b43b6019ff 154/166: DOC: document the newly added sweeprolog-restart command, ELPA Syncer, 2022/09/30