emacs-diffs
[Top][All Lists]
Advanced

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

master 794fbd1c07: Make 't' in Buffer-menu be more defensive


From: Eli Zaretskii
Subject: master 794fbd1c07: Make 't' in Buffer-menu be more defensive
Date: Thu, 24 Feb 2022 14:59:20 -0500 (EST)

branch: master
commit 794fbd1c07696a87352ddd9703bb2f8f6a7945ff
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Make 't' in Buffer-menu be more defensive
    
    * 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 | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 50c2c155ca..179cc5484c 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -527,13 +527,18 @@ If UNMARK is non-nil, unmark them."
   (multi-occur (Buffer-menu-marked-buffers) regexp nlines))
 
 
+(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."



reply via email to

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