changeset 34190:e624fa36b252

(tag-partial-file-name-match-p): New function. (etags-recognize-tags-table, find-tag-in-order): New functionality: interpret file names as tags.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 04 Dec 2000 21:20:57 +0000
parents 772e00ca5861
children 106595ce3db9
files lisp/progmodes/etags.el
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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)