[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/symbol-overlay 72c35dadcc 087/152: wip: add support for ma
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/symbol-overlay 72c35dadcc 087/152: wip: add support for major-mode dependent ignored keywords |
Date: |
Thu, 7 Jul 2022 12:04:17 -0400 (EDT) |
branch: elpa/symbol-overlay
commit 72c35dadccd8806afa88b416aabfde261d0a339c
Author: wouter bolsterlee <wouter@bolsterl.ee>
Commit: wouter bolsterlee <wouter@bolsterl.ee>
wip: add support for major-mode dependent ignored keywords
see #17.
---
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 f21c2447b7 046/152: better code, (continued)
- [nongnu] elpa/symbol-overlay f21c2447b7 046/152: better code, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay b4659bf6b1 052/152: toggle minor-mode when jumping without highlight, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 334eed7052 049/152: fix a jump error, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay fb9c1a5cb1 058/152: delete symbol-overlay-narrow-function, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay c7918e18bb 061/152: Make symbol-overlay-mode autoloadable, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 7b638c8418 064/152: Properly define symbol-overlay-temp-face, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 6971ab0c16 067/152: Declare minor mode earlier to avoid byte compilation warnings, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay bce9d9d3c9 069/152: Merge pull request #8 from purcell/master, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 824cefc469 076/152: Use recommended syntax for setting overlay face property, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 6a3c16e506 077/152: Merge pull request #12 from purcell/patch-3, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 72c35dadcc 087/152: wip: add support for major-mode dependent ignored keywords,
ELPA Syncer <=
- [nongnu] elpa/symbol-overlay bb02b971b0 086/152: magit test, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 920bf50678 092/152: Remove now-unused symbol-overlay-colors variable, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay f4737b401a 095/152: Merge pull request #22 from LeandroCardoso/master, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 4885b028ee 098/152: Add support to ignore keywords in go-mode, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay a88b79fa6a 100/152: Reduce duplication in "ignore" functions, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 103e099e19 102/152: Improve support for fonts in Customize, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 819a62f919 106/152: Use a dedicated unnamed section for the provide form, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay fb00db9e8c 108/152: Move definition of symbol-overlay-refresh, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 63323516b4 117/152: Replaced lisp implementation of window start and end with c primitive, ELPA Syncer, 2022/07/07
- [nongnu] elpa/symbol-overlay 213629dc13 120/152: Add a "hook" which is called when overlays are created, ELPA Syncer, 2022/07/07