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

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

[nongnu] elpa/symbol-overlay ccf791377a 109/152: Preserve highlighting a


From: ELPA Syncer
Subject: [nongnu] elpa/symbol-overlay ccf791377a 109/152: Preserve highlighting after buffer was reverted
Date: Thu, 7 Jul 2022 12:04:19 -0400 (EDT)

branch: elpa/symbol-overlay
commit ccf791377adc5d9158ffac626db2f639197a0584
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>

    Preserve highlighting after buffer was reverted
    
    Continue to remove the overlays using `before-revert-hook' to prevent
    misplaced overlays, but no longer reset `symbol-overlay-keywords-alist'
    while doing so.  Use `after-revert-hook' to put the highlighting back
    into effect using new overlays.
---
 symbol-overlay.el | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/symbol-overlay.el b/symbol-overlay.el
index 54c12bd922..6c97b104d6 100644
--- a/symbol-overlay.el
+++ b/symbol-overlay.el
@@ -185,6 +185,7 @@ definitions to prevent a language's keywords from getting 
highlighted."
 You can re-bind the commands to any keys you prefer.")
 
 (defvar-local symbol-overlay-keywords-alist nil)
+(put 'symbol-overlay-keywords-alist 'permanent-local t)
 
 (defun symbol-overlay-map-help ()
   "Display the bindings in `symbol-overlay-map'."
@@ -416,6 +417,14 @@ BEG, END and LEN are the beginning, end and length of 
changed text."
 
 (add-hook 'after-change-functions 'symbol-overlay-refresh)
 
+(defun symbol-overlay-after-revert ()
+  "Restore overlays after the buffer was reverted."
+  (save-restriction
+    (widen)
+    (symbol-overlay-refresh (point-min) (point-max) nil)))
+
+(add-hook 'after-revert-hook 'symbol-overlay-after-revert)
+
 ;;; Language-Specific Ignore
 
 (defvar c-font-lock-extra-types)
@@ -502,11 +511,14 @@ BEG, END and LEN are the beginning, end and length of 
changed text."
 
 ;;;###autoload
 (defun symbol-overlay-remove-all ()
-  "Remove all highlighted symbols in the buffer."
+  "Remove all highlighted symbols in the buffer.
+When called interactively, then also reset
+`symbol-overlay-keywords-alist'."
   (interactive)
   (unless (minibufferp)
     (mapc 'delete-overlay (symbol-overlay-get-list))
-    (setq symbol-overlay-keywords-alist nil)))
+    (when (called-interactively-p 'any)
+      (setq symbol-overlay-keywords-alist nil))))
 
 (add-hook 'before-revert-hook 'symbol-overlay-remove-all)
 



reply via email to

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