Hi, I use Emacs source tree as example. Here is the way I create TAGS file. $ etags src/*.[hc] And then run M-x list-tags RET src/buffer.c RET to show buffer *Tags List*. The first tag in it is current_buffer. But when I press RET on it, an error message shows up. It's like etags-goto-tag-location: Rerun etags: `^current_buffer' not found in /home/liang/src/emacs/trunk/src/buffer.c That's because etags-goto-tag-location wants implicit tag which starts from the beginning of the line, but current_buffer is an explicit tag. To fix it, implicit tag must be used as link, but we can choose either explicit tag or implicit tag to show in *Tags List* buffer. The following patch shows implicit tag. OK for trunk? Thanks, Liang. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a8be1ba..032dbfd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2011-09-28 Liang Wang + + * progmodes/etags.el (etags-list-tags): Always use explicit tags. + 2011-09-21 Michael Albinus * net/tramp.el (tramp-handle-shell-command): Set process sentinel diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index d321e9c..f38af05 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -1409,7 +1409,7 @@ hits the start of file." tag tag-info pt) (forward-line 1) (while (not (or (eobp) (looking-at "\f"))) - (setq tag-info (save-excursion (funcall snarf-tag-function t)) + (setq tag-info (save-excursion (funcall snarf-tag-function nil)) tag (car tag-info) pt (with-current-buffer standard-output (point))) (princ tag)