[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
- [nongnu] elpa/symbol-overlay e31bbd140a 011/152: Fix some typos, (continued)
- [nongnu] elpa/symbol-overlay e31bbd140a 011/152: Fix some typos, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 8b4e26db1c 014/152: Fix the prefix errors, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 4cf1d3c0d2 024/152: better auto-refresh, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 4a297843fd 016/152: v2.1, add 3 commands for switching and renaming symbols, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 06c5a46ef7 017/152: fix some typos, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 3d1811ca31 021/152: (v2.4) a new auto-refresh, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay f68b908cbb 026/152: fix errors in symbol-replacing, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 2650738135 031/152: a new image, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 389cc1519a 040/152: fix missed minibufferp check, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay a5b5e62cad 045/152: change the temp-face, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay f0418dea49 047/152: enable scope in the minor-mode,
ELPA Syncer <=
- [nongnu] elpa/symbol-overlay 765e1d3b07 050/152: improvements on refresh, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay dbe35b271d 056/152: bind jump-and-switch keys to p/n, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay fcd6ffe97a 059/152: delete symbol-overlay-narrow-function, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay b6f4bc4aa6 060/152: v3.6: remove put-temp-one and mark, improve refresh for temp, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 02b6ea82ac 063/152: better logic, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 75e59b5d63 068/152: Give the minor-mode a keymap, so users can bind M-n/M-p there if they prefer, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay de2bf06202 066/152: Turn overlay colors list and idle time into custom vars, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 6076319f57 079/152: add default text when replacing, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 7f9de8e93f 081/152: Do not enable symbol-overlay-mode when keyword not found, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 1d610fa502 082/152: Merge pull request #14 from yulapshun/master, ELPA Syncer, 2022/07/07