[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/sweeprolog c1882b93d1 1/6: FIXED: simplify & make variable
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/sweeprolog c1882b93d1 1/6: FIXED: simplify & make variable highlighting more reliable |
Date: |
Wed, 9 Nov 2022 16:59:23 -0500 (EST) |
branch: elpa/sweeprolog
commit c1882b93d1cfe8def6f201740e71cb876070cf0e
Author: Eshel Yaron <me@eshelyaron.com>
Commit: Eshel Yaron <me@eshelyaron.com>
FIXED: simplify & make variable highlighting more reliable
---
sweeprolog.el | 56 ++++++++++++++++++++++----------------------------------
1 file changed, 22 insertions(+), 34 deletions(-)
diff --git a/sweeprolog.el b/sweeprolog.el
index a4dd6dd05d..8dbaf44a25 100644
--- a/sweeprolog.el
+++ b/sweeprolog.el
@@ -420,12 +420,6 @@ clause."
(defvar-local sweeprolog--module-term nil)
-(defvar-local sweeprolog--variable-at-point nil)
-
-(defvar-local sweeprolog--variable-at-point-point nil)
-
-(defvar-local sweeprolog--variable-at-point-occurrences nil)
-
(defvar-local sweeprolog--diagnostics nil)
(defvar-local sweeprolog--diagnostics-report-fn nil)
@@ -1876,29 +1870,13 @@ When non-nil, only predicates whose name contains
PREFIX are returned."
(setq sweeprolog--module-term (cons beg end)))))
(defun sweeprolog-analyze-fragment-variable (beg end arg)
- (cond
- ((member arg (list "var"
- (list "goal_term" "meta" 'variable 0)))
- (let ((var (buffer-substring-no-properties beg end)))
- (with-silent-modifications
- (put-text-property beg end 'cursor-sensor-functions
- (sweeprolog-cursor-sensor-functions var))
- (when (and sweeprolog--variable-at-point
- (string= sweeprolog--variable-at-point var))
- (push (cons beg end) sweeprolog--variable-at-point-occurrences)))))
- ((and (stringp arg)
- (string= arg "fullstop")
- sweeprolog--variable-at-point-point
- (< end sweeprolog--variable-at-point-point))
- (setq sweeprolog--variable-at-point-occurrences nil))))
-
-(defun sweeprolog-analyze-end-variable (&rest _)
- (dolist (occurence sweeprolog--variable-at-point-occurrences)
- (font-lock--add-text-property (car occurence)
- (cdr occurence)
- 'font-lock-face
- (sweeprolog-variable-at-point-face)
- (current-buffer) nil)))
+ (pcase arg
+ ((or "var"
+ `("goal_term" "meta" variable 0))
+ (let ((var (buffer-substring-no-properties beg end)))
+ (with-silent-modifications
+ (put-text-property beg end 'cursor-sensor-functions
+ (sweeprolog-cursor-sensor-functions var)))))))
(defvar sweeprolog-analyze-region-start-hook
'(sweeprolog-analyze-start-font-lock))
@@ -2028,9 +2006,21 @@ variable at point, if any."
(symbol-name v))))
(symbol-name v))))))
sweeprolog-mode sweeprolog-top-level-mode)
- (let ((sweeprolog--variable-at-point-point (point))
- (sweeprolog--variable-at-point var))
- (font-lock-fontify-region point point)))
+ (save-excursion
+ (goto-char point)
+ (sweeprolog-analyze-term-at-point
+ (lambda (beg end arg)
+ (pcase arg
+ ((or "var"
+ `("goal_term" "meta" variable 0))
+ (let ((cur (buffer-substring-no-properties beg end)))
+ (when (and var (string= cur var))
+ (with-silent-modifications
+ (font-lock--add-text-property beg
+ end
+ 'font-lock-face
+
(sweeprolog-variable-at-point-face)
+ (current-buffer) nil))))))))))
(defun sweeprolog-cursor-sensor-functions (var)
(list
@@ -3086,8 +3076,6 @@ if-then-else constructs in SWI-Prolog."
(when sweeprolog-enable-cursor-sensor
(add-hook 'sweeprolog-analyze-region-fragment-hook
#'sweeprolog-analyze-fragment-variable nil t)
- (add-hook 'sweeprolog-analyze-region-end-hook
- #'sweeprolog-analyze-end-variable nil t)
(cursor-sensor-mode 1)))
(add-to-list 'auto-insert-alist
- [nongnu] elpa/sweeprolog updated (e093da4af7 -> 62dc8088b7), ELPA Syncer, 2022/11/09
- [nongnu] elpa/sweeprolog 98d0584851 4/6: Recognize backslash as part of an operator in tokenization, ELPA Syncer, 2022/11/09
- [nongnu] elpa/sweeprolog 1efafd057b 3/6: FIXED: clear syntax error face after fix more aggressively, ELPA Syncer, 2022/11/09
- [nongnu] elpa/sweeprolog 62dc8088b7 6/6: Bump version to 0.8.4, ELPA Syncer, 2022/11/09
- [nongnu] elpa/sweeprolog c1882b93d1 1/6: FIXED: simplify & make variable highlighting more reliable,
ELPA Syncer <=
- [nongnu] elpa/sweeprolog c7b7300bda 2/6: FIXED: properly update query highlighting in the toplevel, ELPA Syncer, 2022/11/09
- [nongnu] elpa/sweeprolog 1a5f82f284 5/6: TEST: add test for updating syntax error faces, ELPA Syncer, 2022/11/09