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

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

[nongnu] elpa/sweeprolog 8d13f21c0d 162/166: ADDED: new command sweeprol


From: ELPA Syncer
Subject: [nongnu] elpa/sweeprolog 8d13f21c0d 162/166: ADDED: new command sweeprolog-highlight-variable
Date: Fri, 30 Sep 2022 04:59:35 -0400 (EDT)

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

    ADDED: new command sweeprolog-highlight-variable
    
    * (sweeprolog-highlight-variable): New command
    * (sweeprolog-cursor-sensor-functions): use it
---
 sweeprolog.el | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/sweeprolog.el b/sweeprolog.el
index 794e0aa7b1..a824d5ffae 100644
--- a/sweeprolog.el
+++ b/sweeprolog.el
@@ -2143,6 +2143,37 @@ Interactively, POINT is set to the current point."
                    (cons car (line-beginning-position))))
                (cdr sol)))))
 
+(defun sweeprolog-highlight-variable (var)
+  "Highlight occurences of the variable VAR in the current clause.
+
+If VAR is nil, clear variable highlighting in the current clause
+instead.
+
+Interactively, if a prefix argument is specificed, clear variable
+highlighting in the current clause.  Otherwise prompt for VAR,
+defaulting to the variable at point, if any."
+  (interactive (unless current-prefix-arg
+                 (let ((v (symbol-at-point)))
+                   (list (read-string "Highlight variable: "
+                                      nil nil
+                                      (and v
+                                           (save-match-data
+                                             (let ((case-fold-search nil))
+                                               (string-match
+                                                (rx bos upper)
+                                                (symbol-name v))))
+                                           (symbol-name v))))))
+               sweeprolog-mode sweeprolog-top-level-mode)
+  (let ((sweeprolog--variable-at-point var))
+    (font-lock-fontify-region (point) (point))))
+
+(defun sweeprolog-cursor-sensor-functions (var)
+  (list
+   (lambda (_win old dir)
+     (if (eq dir 'entered)
+         (sweeprolog-highlight-variable var)
+       (sweeprolog-highlight-variable nil)))))
+
 (defvar-local sweeprolog--timer nil)
 (defvar-local sweeprolog--colourise-buffer-duration 0.2)
 



reply via email to

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