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

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

[elpa] scratch/ediprolog ebd79c0abd 26/31: enable faithful processing of


From: Stefan Monnier
Subject: [elpa] scratch/ediprolog ebd79c0abd 26/31: enable faithful processing of multiline queries for Scryer Prolog
Date: Sun, 2 Oct 2022 17:01:39 -0400 (EDT)

branch: scratch/ediprolog
commit ebd79c0abdc05a752c947e333551d808e3933046
Author: Markus Triska <triska@metalevel.at>
Commit: Markus Triska <triska@metalevel.at>

    enable faithful processing of multiline queries for Scryer Prolog
---
 ediprolog.el | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/ediprolog.el b/ediprolog.el
index fd91d4061e..c5213454d1 100644
--- a/ediprolog.el
+++ b/ediprolog.el
@@ -1,6 +1,6 @@
 ;;; ediprolog.el --- Emacs Does Interactive Prolog
 
-;; Copyright (C) 2006-2021  Markus Triska
+;; Copyright (C) 2006-2022  Markus Triska
 
 ;; Author: Markus Triska <triska@metalevel.at>
 ;; Keywords: languages, processes
@@ -52,11 +52,11 @@
 ;; Queries start with "?-" or ":-", possibly preceded by "%" and
 ;; whitespace. An example of a query is (without leading ";;"):
 ;;
-;;   %?- member(X, [a,b,c]).
+;;   %?- member(X, "abc").
 ;;
 ;; If you press F10 when point is on that query, you get:
 ;;
-;;   %?- member(X, [a,b,c]).
+;;   %?- member(X, "abc").
 ;;   %@    X = a
 ;;   %@ ;  X = b
 ;;   %@ ;  X = c
@@ -92,7 +92,7 @@
 
 ;;; Code:
 
-(defconst ediprolog-version "2.2-PRE2")
+(defconst ediprolog-version "2.2-PRE4")
 
 (defgroup ediprolog nil
   "Transparent interaction with Prolog."
@@ -369,9 +369,19 @@ arguments, equivalent to `ediprolog-remove-interactions'."
       (end-of-line)
       (insert "\n" ediprolog-indent-prefix ediprolog-prefix)
       (ediprolog-interact
-       (format "%s\n" (mapconcat #'identity
+       (format "%s\n"
+               (if (eq ediprolog-system 'scryer)
+                   ;; Scryer Prolog emits no additional indicators
+                   ;; when a query spans multiple lines, so we send
+                   ;; the query verbatim.
+                   query
+                 ;; For other Prolog systems, we merge the query into
+                 ;; a single line. The drawback of this approach is
+                 ;; that single-line comments at the end of a line are
+                 ;; not handled correctly.
+                 (mapconcat #'identity
                                  ;; `%' can precede each query line
-                                 (split-string query "\n[ \t%]*") " ")))
+                                 (split-string query "\n[ \t%]*") " "))))
       (when handle
         (undo-amalgamate-change-group (cdr handle))))
     t))



reply via email to

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