]> git.eshelyaron.com Git - emacs.git/commitdiff
etags-regen-mode: Handle TAGS buffer being killed
authorDmitry Gutov <dmitry@gutov.dev>
Thu, 11 Jul 2024 00:49:06 +0000 (03:49 +0300)
committerEshel Yaron <me@eshelyaron.com>
Thu, 11 Jul 2024 14:39:18 +0000 (16:39 +0200)
* lisp/progmodes/etags-regen.el (etags-regen--visit-table):
Use kill-buffer-hook to ensure a refresh if the TAGS buffer is
killed manually (bug#71727).
(etags-regen--tags-cleanup):
Bind the hook var to nil to avoid an infloop.

(cherry picked from commit 9331ab056a426b334d46c38659c9de2053eb45f3)

lisp/progmodes/etags-regen.el

index dc778b14061da6ecbe1c35278608d99bd8d28d86..21ea9bfb8b337ad07669f459493de4ba52ee6f1c 100644 (file)
@@ -294,7 +294,9 @@ File extensions to generate the tags for."
   (add-hook 'before-save-hook #'etags-regen--mark-as-new)
   (setq etags-regen--tags-file tags-file
         etags-regen--tags-root root)
-  (visit-tags-table etags-regen--tags-file))
+  (visit-tags-table etags-regen--tags-file)
+  (with-current-buffer (get-file-buffer tags-file)
+    (add-hook 'kill-buffer-hook #'etags-regen--tags-cleanup nil t)))
 
 (defun etags-regen--ctags-p ()
   (string-search "Ctags"
@@ -390,7 +392,8 @@ File extensions to generate the tags for."
 
 (defun etags-regen--tags-cleanup ()
   (when etags-regen--tags-file
-    (let ((buffer (get-file-buffer etags-regen--tags-file)))
+    (let ((buffer (get-file-buffer etags-regen--tags-file))
+          kill-buffer-hook)
       (and buffer
            (kill-buffer buffer)))
     (tags-reset-tags-tables)