[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/symbol-overlay 2138e296fd 088/152: Merge pull request #18
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/symbol-overlay 2138e296fd 088/152: Merge pull request #18 from wbolster/major-mode-ignore-callbacks |
Date: |
Thu, 7 Jul 2022 12:04:17 -0400 (EDT) |
branch: elpa/symbol-overlay
commit 2138e296fd8346b16b61a02c0d227cea832c84da
Merge: bb02b971b0 72c35dadcc
Author: wolray <290061869@qq.com>
Commit: GitHub <noreply@github.com>
Merge pull request #18 from wbolster/major-mode-ignore-callbacks
wip: add support for major-mode dependent ignored keywords
---
symbol-overlay.el | 60 +++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 43 insertions(+), 17 deletions(-)
diff --git a/symbol-overlay.el b/symbol-overlay.el
index f5b3af7009..3c82d25dd8 100644
--- a/symbol-overlay.el
+++ b/symbol-overlay.el
@@ -151,6 +151,17 @@ You can add more colors whatever you like."
:group 'symbol-overlay
:type 'float)
+(defcustom symbol-overlay-ignore-functions
+ '((python-mode . symbol-overlay--ignore-function-python))
+ "Functions to determine whether a symbol should be ignored.
+
+This is an association list that maps a MAJOR-MODE symbol to a
+function that determines whether a symbol should be ignored. For
+instance, such a function could use a major mode's font-lock
+definitions to prevent a language's keywords from getting highlighted."
+ :group 'symbol-overlay)
+;; todo: add :type
+
(defvar symbol-overlay-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "i") 'symbol-overlay-put)
@@ -250,6 +261,12 @@ depending on SCOPE and WINDOW."
(forward-line lines)
(narrow-to-region beg (point)))))))
+(defun symbol-overlay--ignored-p (symbol)
+ "Determine whether SYMBOL should be temporarily highlighted."
+ (let ((f (cdr (assoc major-mode symbol-overlay-ignore-functions))))
+ (when f
+ (funcall f symbol))))
+
(defun symbol-overlay-remove-temp ()
"Delete all temporary overlays."
(mapc 'delete-overlay (symbol-overlay-get-list ""))
@@ -259,23 +276,26 @@ depending on SCOPE and WINDOW."
"Highlight symbol at point when there are more than 2 occurrences.
This only effects symbols in the current displayed window."
(when symbol-overlay-mode
- (let ((case-fold-search nil)
- (symbol (symbol-overlay-get-symbol nil t))
- p)
- (when (and symbol (not (symbol-overlay-assoc symbol)))
- (symbol-overlay-remove-temp)
- (save-excursion
- (save-restriction
- (symbol-overlay-narrow symbol-overlay-scope t)
- (goto-char (point-min))
- (re-search-forward symbol nil t)
- (save-match-data
- (while (re-search-forward symbol nil t)
- (symbol-overlay-put-one symbol)
- (or p (setq p t))))
- (when p
- (symbol-overlay-put-one symbol)
- (setq symbol-overlay-temp-symbol symbol))))))))
+ (let* ((case-fold-search nil)
+ (symbol (symbol-overlay-get-symbol nil t))
+ (should-put-overlay (and symbol
+ (not (symbol-overlay-assoc symbol))
+ (not (symbol-overlay--ignored-p symbol))))
+ p)
+ (when should-put-overlay
+ (symbol-overlay-remove-temp)
+ (save-excursion
+ (save-restriction
+ (symbol-overlay-narrow symbol-overlay-scope t)
+ (goto-char (point-min))
+ (re-search-forward symbol nil t)
+ (save-match-data
+ (while (re-search-forward symbol nil t)
+ (symbol-overlay-put-one symbol)
+ (or p (setq p t))))
+ (when p
+ (symbol-overlay-put-one symbol)
+ (setq symbol-overlay-temp-symbol symbol))))))))
(defvar symbol-overlay-timer nil
"Timer for temporary highlighting.")
@@ -346,6 +366,12 @@ If SHOW-COLOR is non-nil, display the color used by
current overlay."
(+ count 1)
(+ count (length after))))))
+
+(defvar python-font-lock-keywords)
+(defun symbol-overlay--ignore-function-python (symbol)
+ "Determine whether SYMBOL should be ignored (Python)."
+ (string-match-p (car python-font-lock-keywords) symbol))
+
;;;###autoload
(defun symbol-overlay-put ()
"Toggle all overlays of symbol at point."
- [nongnu] elpa/symbol-overlay 8629a4ddbe 147/152: Merge pull request #76 from mattbeshara/cancel-timer-when-buffer-killed, (continued)
- [nongnu] elpa/symbol-overlay 8629a4ddbe 147/152: Merge pull request #76 from mattbeshara/cancel-timer-when-buffer-killed, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 4231a36e39 145/152: Merge pull request #73 from tarsiiformes/keyword, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay c439b73a5f 152/152: Merge pull request #78 from mattbeshara/single-active-timer, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 2ad907ae15 009/152: edit the descripition, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 50d645bc05 013/152: Merge branch 'syohex-fix-package', ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 6e1f23d6f2 023/152: fix an overlay error, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 81d069f2c4 020/152: (v2.3) add save-symbol, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay b00771b093 073/152: 170814, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 03da3c1d43 078/152: Merge pull request #11 from purcell/patch-2, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 33e5138fa9 083/152: add faces, replace color logic with face logic, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 2138e296fd 088/152: Merge pull request #18 from wbolster/major-mode-ignore-callbacks,
ELPA Syncer <=
- [nongnu] elpa/symbol-overlay dc3a9b4cd3 093/152: Merge pull request #23 from tarsiiformes/custom-type, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 8bcb681bcb 099/152: Merge pull request #27 from dakra/add-go-support, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 88c3ed02a0 115/152: bind kbd < > to jump-first/last, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 7fa58ecaa7 144/152: Avoid positional arguments to define-minor-mode, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay a37404a6a0 097/152: Merge pull request #26 from jguenther/patch-1, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 831506ee12 103/152: Merge pull request #29 from Wilfred/font-customize, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 18d2f4ea65 148/152: Enable lexical-binding use hashed symbols for better compiler warnings, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 5290fd464f 150/152: Only use one timer for all buffers, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay a71d6d1f31 018/152: add auto-refresh, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 5b00bb2952 032/152: (v2.6) new feature: scope, ELPA Syncer, 2022/07/07