]> git.eshelyaron.com Git - emacs.git/commitdiff
Make 't' in Buffer-menu be more defensive
authorEli Zaretskii <eliz@gnu.org>
Thu, 24 Feb 2022 19:57:34 +0000 (21:57 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 24 Feb 2022 19:57:34 +0000 (21:57 +0200)
* lisp/buff-menu.el (Buffer-menu-visit-tags-table): Verify that
the buffer holds a tags-table file before using it as such.
(Bug#54133)

lisp/buff-menu.el

index 50c2c155caf2106f3651b89cdba372e78dfa767e..179cc5484cdb739e7cf92228e20e1daa0caf2eee 100644 (file)
@@ -527,13 +527,18 @@ If UNMARK is non-nil, unmark them."
   (multi-occur (Buffer-menu-marked-buffers) regexp nlines))
 
 \f
+(autoload 'etags-verify-tags-table "etags")
 (defun Buffer-menu-visit-tags-table ()
   "Visit the tags table in the buffer on this line.  See `visit-tags-table'."
   (interactive nil Buffer-menu-mode)
-  (let ((file (buffer-file-name (Buffer-menu-buffer t))))
-    (if file
-       (visit-tags-table file)
-      (error "Specified buffer has no file"))))
+  (let* ((buf (Buffer-menu-buffer t))
+         (file (buffer-file-name buf)))
+    (cond
+     ((not file) (error "Specified buffer has no file"))
+     ((and buf (with-current-buffer buf
+                 (etags-verify-tags-table)))
+      (visit-tags-table file))
+     (t (error "Specified buffer is not a tags-table")))))
 
 (defun Buffer-menu-1-window ()
   "Select this line's buffer, alone, in full frame."