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

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

[nongnu] elpa/symbol-overlay f0418dea49 047/152: enable scope in the min


From: ELPA Syncer
Subject: [nongnu] elpa/symbol-overlay f0418dea49 047/152: enable scope in the minor-mode
Date: Thu, 7 Jul 2022 12:04:11 -0400 (EDT)

branch: elpa/symbol-overlay
commit f0418dea491fda9f7a8b84cb5309fc70a967b724
Author: wolray <290061869@qq.com>
Commit: wolray <290061869@qq.com>

    enable scope in the minor-mode
---
 symbol-overlay.el | 92 +++++++++++++++++++++++++++----------------------------
 1 file changed, 46 insertions(+), 46 deletions(-)

diff --git a/symbol-overlay.el b/symbol-overlay.el
index ad5fd09dba..7b0a29e29e 100644
--- a/symbol-overlay.el
+++ b/symbol-overlay.el
@@ -150,11 +150,19 @@ If NOERROR is non-nil, just return nil when no symbol is 
found."
   "Nil or a function that returns a cons of region beginning and end.")
 (make-variable-buffer-local 'symbol-overlay-narrow-function)
 
+(defvar symbol-overlay-temp-symbol nil
+  "Symbol for temporary highlighting.")
+(make-variable-buffer-local 'symbol-overlay-temp-symbol)
+
+(defvar symbol-overlay-temp-in-scope nil
+  "If non-nil, force to narrow to scope before temporary highlighting.")
+(make-variable-buffer-local 'symbol-overlay-temp-in-scope)
+
 (defun symbol-overlay-narrow (scope &optional window-only)
   "Narrow to a specific region when SCOPE is non-nil.
 It uses `narrow-to-defun' or `symbol-overlay-narrow-function' if specified.
-If WINDOW-ONLY is non-nil, narrow to current displayed window."
-  (if scope
+If SCOPE is nil and WINDOW-ONLY is non-nil, narrow to current displayed 
window."
+  (if (or scope (and symbol-overlay-temp-symbol symbol-overlay-temp-in-scope))
       (let ((f symbol-overlay-narrow-function)
            region)
        (if (not f) (narrow-to-defun)
@@ -168,31 +176,13 @@ If WINDOW-ONLY is non-nil, narrow to current displayed 
window."
        (setq beg (point))
        (goto-char pt)
        (forward-line lines)
-       (narrow-to-region beg (point))
-       (goto-char pt)))))
-
-(defvar symbol-overlay-temp-symbol nil
-  "Symbol for temporary highlighting.")
-(make-variable-buffer-local 'symbol-overlay-temp-symbol)
+       (narrow-to-region beg (point))))))
 
 (defvar symbol-overlay-temp-face
   '((:background "gray70")
     (:foreground "gray30"))
   "Face for temporary highlighting.")
 
-(defvar symbol-overlay-timer nil
-  "Timer for temporary highlighting.")
-
-(defvar symbol-overlay-idle-time 0.5
-  "Idle time after every command and before the temporary highlighting.")
-
-(defun symbol-overlay-update-timer (value)
-  "Update `symbol-overlay-timer' with new idle-time VALUE."
-  (and symbol-overlay-timer (cancel-timer symbol-overlay-timer))
-  (setq symbol-overlay-timer
-       (and value (> value 0)
-            (run-with-idle-timer value t 'symbol-overlay-put-temp-in-window))))
-
 (defun symbol-overlay-put-temp-one (symbol bounds)
   "Put overlay on one occurrence of SYMBOL with BOUNDS.
 It use `symbol-overlay-temp-face' as face and is only for temporary use."
@@ -200,40 +190,50 @@ It use `symbol-overlay-temp-face' as face and is only for 
temporary use."
     (overlay-put overlay 'face symbol-overlay-temp-face)
     (overlay-put overlay 'symbol "")))
 
+(defun symbol-overlay-remove-temp ()
+  "Delete all temporary overlays."
+  (mapc 'delete-overlay (symbol-overlay-get-list ""))
+  (setq symbol-overlay-temp-symbol nil))
+
 (defun symbol-overlay-put-temp-in-window ()
   "Highlight symbol at point when there are more than 2 occurrences.
 This only effects symbols in the current displayed window."
-  (unless (or (minibufferp) (not symbol-overlay-mode))
+  (when symbol-overlay-mode
     (let ((case-fold-search nil)
          (symbol (symbol-overlay-get-symbol nil t))
          bounds first p)
-      (and symbol-overlay-mode
-          symbol
-          (not (symbol-overlay-assoc symbol))
-          (save-excursion
-            (symbol-overlay-remove-temp)
-            (save-restriction
-              (symbol-overlay-narrow nil t)
-              (goto-char (point-min))
-              (while (re-search-forward symbol nil t)
-                (setq bounds (cons (match-beginning 0) (match-end 0)))
-                (if (not first) (setq first bounds)
-                  (symbol-overlay-put-temp-one symbol bounds)
-                  (or p (setq p t))))
-              (and p (symbol-overlay-put-temp-one symbol first))
-              (setq symbol-overlay-temp-symbol symbol)))))))
+      (when (and symbol (not (symbol-overlay-assoc symbol)))
+       (save-excursion
+         (symbol-overlay-remove-temp)
+         (save-restriction
+           (symbol-overlay-narrow symbol-overlay-temp-in-scope t)
+           (goto-char (point-min))
+           (while (re-search-forward symbol nil t)
+             (setq bounds (cons (match-beginning 0) (match-end 0)))
+             (if (not first) (setq first bounds)
+               (symbol-overlay-put-temp-one symbol bounds)
+               (or p (setq p t))))
+           (when p
+             (symbol-overlay-put-temp-one symbol first)
+             (setq symbol-overlay-temp-symbol symbol))))))))
 
-(defun symbol-overlay-remove-temp ()
-  "Delete all temporary overlays."
-  (mapc 'delete-overlay (symbol-overlay-get-list "")))
+(defvar symbol-overlay-timer nil
+  "Timer for temporary highlighting.")
+
+(defvar symbol-overlay-idle-time 0.5
+  "Idle time after every command and before the temporary highlighting.")
+
+(defun symbol-overlay-update-timer (value)
+  "Update `symbol-overlay-timer' with new idle-time VALUE."
+  (and symbol-overlay-timer (cancel-timer symbol-overlay-timer))
+  (setq symbol-overlay-timer
+       (and value (> value 0)
+            (run-with-idle-timer value t 'symbol-overlay-put-temp-in-window))))
 
 (defun symbol-overlay-post-command ()
   "Installed on `post-command-hook'."
-  (unless (or (minibufferp)
-             (string= (symbol-overlay-get-symbol nil t)
-                      symbol-overlay-temp-symbol))
-    (symbol-overlay-remove-temp)
-    (setq symbol-overlay-temp-symbol nil)))
+  (unless (string= (symbol-overlay-get-symbol nil t) 
symbol-overlay-temp-symbol)
+    (symbol-overlay-remove-temp)))
 
 (define-minor-mode symbol-overlay-mode
   "Minor mode for auto-highlighting symbol at point."
@@ -273,7 +273,7 @@ If KEYWORD is non-nil, use its color on new overlays."
       (setq color (symbol-overlay-remove
                   (car (last symbol-overlay-keywords-alist)))))
     (and symbol-overlay-mode
-        (string= symbol symbol-overlay-temp-symbol)
+        symbol-overlay-temp-symbol
         (symbol-overlay-remove-temp))
     (save-excursion
       (save-restriction



reply via email to

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