]> git.eshelyaron.com Git - sweep.git/commitdiff
Use term_string/2 to parse M:F/N terms encoded in strings V8.5.20-sweep-0.8.1
authorEshel Yaron <me@eshelyaron.com>
Tue, 25 Oct 2022 14:38:47 +0000 (17:38 +0300)
committerEshel Yaron <me@eshelyaron.com>
Tue, 25 Oct 2022 16:44:45 +0000 (19:44 +0300)
sweeprolog.el

index 1b64376dbb870eae3fda7ec16b9d44d56148a4d7..389cef1b3c3ad69b52a13b46f19c0523e0203a87 100644 (file)
@@ -6,7 +6,7 @@
 ;; Maintainer: Eshel Yaron <~eshel/dev@lists.sr.ht>
 ;; Keywords: prolog languages extensions
 ;; URL: https://git.sr.ht/~eshel/sweep
-;; Package-Version: 0.8.0
+;; Package-Version: 0.8.1
 ;; Package-Requires: ((emacs "28.1"))
 
 ;; This file is NOT part of GNU Emacs.
@@ -696,9 +696,21 @@ FLAG and VALUE are specified as strings and read as Prolog terms."
       (cdr sol))))
 
 (defun sweeprolog--mfn-to-functor-arity (mfn)
-  (let ((functor-arity (split-string (car (reverse (split-string mfn ":"))) "/")))
-    (cons (car functor-arity)
-          (string-to-number (cadr functor-arity)))))
+  (sweeprolog--open-query "user" "system" "term_string" mfn t)
+  (let ((sol (sweeprolog-next-solution)))
+    (sweeprolog-close-query)
+    (when (sweeprolog-true-p sol)
+      (pcase (cdr sol)
+        (`(compound ":"
+                    (atom . ,_)
+                    (compound "/"
+                              (atom . ,functor)
+                              ,arity))
+         (cons functor arity))
+        (`(compound "/"
+                    (atom . ,functor)
+                    ,arity)
+         (cons functor arity))))))
 
 (defun sweeprolog--swipl-source-directory ()
   (when sweeprolog-swipl-sources