# HG changeset patch # User Gerd Moellmann # Date 975964857 0 # Node ID e624fa36b2527690b8b295b53a743319406625f2 # Parent 772e00ca5861e547383ec01f24e556ce6fa5389f (tag-partial-file-name-match-p): New function. (etags-recognize-tags-table, find-tag-in-order): New functionality: interpret file names as tags. diff -r 772e00ca5861 -r e624fa36b252 lisp/progmodes/etags.el --- a/lisp/progmodes/etags.el Mon Dec 04 20:43:27 2000 +0000 +++ b/lisp/progmodes/etags.el Mon Dec 04 21:20:57 2000 +0000 @@ -1098,7 +1098,14 @@ (setq tag-lines-already-matched (cons match-marker tag-lines-already-matched)) ;; Expand the filename, using the tags table buffer's default-directory. - (setq file (expand-file-name (file-of-tag)) + ;; We should be able to search for file-name backwards in file-of-tag: + ;; the beginning-of-line is ok except when positionned on a "file-name" tag. + (setq file (expand-file-name + (if (or (eq (car order) 'tag-exact-file-name-match-p) + (eq (car order) 'tag-partial-file-name-match-p)) + (save-excursion (next-line 1) + (file-of-tag)) + (file-of-tag))) tag-info (funcall snarf-tag-function)) ;; Get the local value in the tags table buffer before switching buffers. @@ -1136,6 +1143,7 @@ tag-exact-match-p tag-symbol-match-p tag-word-match-p + tag-partial-file-name-match-p tag-any-match-p)) (find-tag-next-line-after-failure-p . nil) (list-tags-function . etags-list-tags) @@ -1442,8 +1450,13 @@ (defun tag-exact-file-name-match-p (tag) (and (looking-at ",") - (save-excursion (backward-char (length tag)) + (save-excursion (backward-char (+ 2 (length tag))) (looking-at "\f\n")))) +(defun tag-partial-file-name-match-p (tag) + (and (looking-at ".*,") + (save-excursion (beginning-of-line) + (backward-char 2) + (looking-at "\f\n")))) ;; t if point is in a tag line with a tag containing TAG as a substring. (defun tag-any-match-p (tag)