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

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

[nongnu] elpa/sweeprolog 5e6f85a094 2/6: Add sweeprolog-analyze-some-ter


From: ELPA Syncer
Subject: [nongnu] elpa/sweeprolog 5e6f85a094 2/6: Add sweeprolog-analyze-some-terms to after-change-functions
Date: Wed, 16 Nov 2022 02:59:39 -0500 (EST)

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

    Add sweeprolog-analyze-some-terms to after-change-functions
---
 sweep.pl      |  5 ++++-
 sweeprolog.el | 57 +++++++++++++++++++++++++++++++++++++--------------------
 2 files changed, 41 insertions(+), 21 deletions(-)

diff --git a/sweep.pl b/sweep.pl
index 13933d8900..233c7efaf3 100644
--- a/sweep.pl
+++ b/sweep.pl
@@ -463,7 +463,10 @@ sweep_color_normalized_(_, Goal0, [Kind0,Head|_], 
[Goal,Kind,F,N]) :-
     !,
     atom_string(Goal0, Goal),
     term_string(Kind0, Kind),
-    (   var(Head)
+    (   (   var(Head)
+        ->  true
+        ;   Head == []
+        )
     ->  F = Head, N = 0
     ;   pi_head(F0/N, Head),
         atom_string(F0, F)
diff --git a/sweeprolog.el b/sweeprolog.el
index 519f18ebb7..bc4a46f69e 100644
--- a/sweeprolog.el
+++ b/sweeprolog.el
@@ -1783,9 +1783,22 @@ resulting list even when found in the current clause."
     ("type_error"
      (list (list beg end (sweeprolog-type-error-face))))
     (`("syntax_error" ,_ ,eb ,ee)
-     (list (list eb ee nil)
-           (list eb ee (sweeprolog-around-syntax-error-face))
-           (list beg end (sweeprolog-syntax-error-face))))
+     (save-excursion
+       (goto-char (min ee (point-max)))
+       (let ((ws nil)
+             (cur (point)))
+         (while (and (forward-comment 1)
+                     (forward-comment -1))
+           (push (list cur (point) nil) ws)
+           (forward-comment 1)
+           (setq cur (point)))
+         (skip-chars-forward " \t\n")
+         (push (list cur (point) nil) ws)
+         (cons (list beg (point) nil)
+               (append (list (list eb ee nil)
+                             (list eb ee (sweeprolog-around-syntax-error-face))
+                             (list beg end (sweeprolog-syntax-error-face)))
+                       ws)))))
     ("unused_import"
      (list (list beg end (sweeprolog-unused-import-face))))
     ("undefined_import"
@@ -1840,7 +1853,7 @@ resulting list even when found in the current clause."
          (push (list cur (point) nil) ws)
          (cons (list beg (point) nil)
                (cons (list beg end (sweeprolog-fullstop-face))
-                      ws)))))
+                     ws)))))
     ("functor"
      (list (list beg end (sweeprolog-functor-face))))
     ("arity"
@@ -2073,24 +2086,26 @@ modified."
         (sweeprolog-analyze-region start (point) "true")))))
 
 (defun sweeprolog-analyze-some-terms (beg end &optional _verbose)
-  (save-mark-and-excursion
-    (goto-char beg)
-    (sweeprolog-beginning-of-top-term)
-    (unless (bobp)
-      (forward-char -1)
+  (save-match-data
+    (save-mark-and-excursion
+      (goto-char beg)
       (sweeprolog-beginning-of-top-term)
-      (unless (bobp) (forward-char -1)))
-    (let ((start (point))
-          (cur (point)))
-      (while (and (not (eobp))
-                  (< (point) end))
+      (unless (bobp)
+        (forward-char -1)
+        (sweeprolog-beginning-of-top-term)
+        (unless (bobp) (forward-char -1)))
+      (let ((start (point))
+            (cur (point)))
+        (while (and (not (eobp))
+                    (< (point) end))
+          (setq cur (point))
+          (sweeprolog-end-of-top-term)
+          (sweeprolog-analyze-term cur (point)))
         (setq cur (point))
         (sweeprolog-end-of-top-term)
-        (sweeprolog-analyze-term cur (point)))
-      (setq cur (point))
-      (sweeprolog-end-of-top-term)
-      (sweeprolog-analyze-term cur (point))
-      `(jit-lock-bounds ,start . ,(point)))))
+        (skip-chars-forward " \t\n")
+        (sweeprolog-analyze-term cur (point))
+        `(jit-lock-bounds ,start . ,(point))))))
 
 (defun sweeprolog-syntax-propertize (start end)
   (goto-char start)
@@ -3192,7 +3207,9 @@ certain contexts to maintain conventional Prolog layout."
                 nil
                 (font-lock-fontify-region-function . 
sweeprolog-analyze-some-terms)))
   (add-hook 'after-change-functions
-            #'sweeprolog--update-buffer-last-modified-time)
+            #'sweeprolog--update-buffer-last-modified-time nil t)
+  (add-hook 'after-change-functions
+            #'sweeprolog-analyze-some-terms nil t)
   (when sweeprolog-enable-eldoc
     (when (fboundp 'eldoc-documentation-default)
       (setq-local eldoc-documentation-strategy #'eldoc-documentation-default))



reply via email to

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