diff options
author | Eli Zaretskii <eliz@gnu.org> | 2022-02-24 21:57:34 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2022-02-24 21:57:34 +0200 |
commit | 794fbd1c07696a87352ddd9703bb2f8f6a7945ff (patch) | |
tree | 5a51ea7e597ed3bd70a9048bb3d9142a0e56a178 /lisp/buff-menu.el | |
parent | bd17fa2c7565f180cedbfa396c0b159e144178cb (diff) | |
download | emacs-794fbd1c07696a87352ddd9703bb2f8f6a7945ff.tar.gz emacs-794fbd1c07696a87352ddd9703bb2f8f6a7945ff.tar.bz2 emacs-794fbd1c07696a87352ddd9703bb2f8f6a7945ff.zip |
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)
Diffstat (limited to 'lisp/buff-menu.el')
-rw-r--r-- | lisp/buff-menu.el | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el index 50c2c155caf..179cc5484cd 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." |