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

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

[elpa] externals/beardbolt 1c0e96060b 229/323: Don't set global kill-buf


From: ELPA Syncer
Subject: [elpa] externals/beardbolt 1c0e96060b 229/323: Don't set global kill-buffer-hook
Date: Thu, 9 Mar 2023 10:58:33 -0500 (EST)

branch: externals/beardbolt
commit 1c0e96060b5203414524eecbdf2c4465155bc728
Author: Erik Arvstedt <erik.arvstedt@gmail.com>
Commit: Erik Arvstedt <erik.arvstedt@gmail.com>

    Don't set global kill-buffer-hook
    
    Instead, set the hook locally.
    Also don't remove overlays when a src buffer is killed that is no
    longer current.
---
 rmsbolt.el | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/rmsbolt.el b/rmsbolt.el
index 3136b69de1..abc0dd05fd 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -1713,10 +1713,11 @@ Are you running two compilations at the same time?"))
   (mapc #'delete-overlay rmsbolt-overlays)
   (setq rmsbolt-overlays nil))
 
-(defun rmsbolt--kill-buffer-cleanup ()
-  "A simple hook to listen for the output buffer close so we can clean up 
overlays."
-  (when (eq (current-buffer) (get-buffer rmsbolt-output-buffer))
-    (rmsbolt--remove-overlays)))
+(defun rmsbolt--on-kill-buffer ()
+  (let ((output-buffer (get-buffer rmsbolt-output-buffer)))
+    (when (or (eq (current-buffer) output-buffer)
+              (eq (current-buffer) (buffer-local-value 'rmsbolt-src-buffer 
output-buffer)))
+      (rmsbolt--remove-overlays))))
 
 (defun rmsbolt-hot-recompile ()
   "Recompile source buffer if we need to."
@@ -1759,13 +1760,13 @@ This mode is enabled in both src and assembly output 
buffers."
   ;; Init
   (cond
    (rmsbolt-mode
+    (add-hook 'kill-buffer-hook #'rmsbolt--on-kill-buffer nil t)
     ;; This idle timer always runs, even when we aren't in rmsbolt-mode
     ;; It won't do anything unless we are in rmsbolt-mode
     (unless rmsbolt--idle-timer
       (setq rmsbolt--idle-timer (run-with-idle-timer
                                  rmsbolt-overlay-delay t
-                                 #'rmsbolt-update-overlays))
-      (add-hook 'kill-buffer-hook #'rmsbolt--kill-buffer-cleanup))
+                                 #'rmsbolt-update-overlays)))
     (unless (or rmsbolt--compile-idle-timer
                 (not rmsbolt-automatic-recompile))
       (setq rmsbolt--compile-idle-timer (run-with-idle-timer
@@ -1773,7 +1774,8 @@ This mode is enabled in both src and assembly output 
buffers."
                                          #'rmsbolt-hot-recompile)))
     (rmsbolt--gen-temp))
    (t ;; Cleanup
-    (rmsbolt--remove-overlays))))
+    (rmsbolt--remove-overlays)
+    (remove-hook 'kill-buffer-hook #'rmsbolt--on-kill-buffer t))))
 
 ;;;###autoload
 (defun rmsbolt ()



reply via email to

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