From 8f0e4a644df61aa0d3154775e3f82a048f772d8b Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Thu, 29 Sep 2022 23:12:02 +0300 Subject: [PATCH] FIXED: error on interactively removing variable highlighting --- sweeprolog.el | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/sweeprolog.el b/sweeprolog.el index 6782626..77dffd9 100644 --- a/sweeprolog.el +++ b/sweeprolog.el @@ -2143,18 +2143,20 @@ 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. +(defun sweeprolog-highlight-variable (point &optional var) + "Highlight occurences of the variable VAR in the clause at POINT. 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: " +Interactively, operate on the clause at point. 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 (list (point) + (unless current-prefix-arg + (let ((v (symbol-at-point))) + (read-string "Highlight variable: " nil nil (and v (save-match-data @@ -2165,14 +2167,14 @@ defaulting to the variable at point, if any." (symbol-name v)))))) sweeprolog-mode sweeprolog-top-level-mode) (let ((sweeprolog--variable-at-point var)) - (font-lock-fontify-region (point) (point)))) + (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))))) + (sweeprolog-highlight-variable (point) var) + (sweeprolog-highlight-variable old))))) (defvar-local sweeprolog--timer nil) (defvar-local sweeprolog--colourise-buffer-duration 0.2) -- 2.39.2