In XEmacs 21.5 (beta1) "anise" [Lucid] (i386-unknown-freebsd4.3) of Fri May 11
2001 on
horsey.gshapiro.net
configured using `configure --site-prefixes=/usr/local --with-database=berkdb
--with-pop'
After upgrading to 21.5.1 (from 21.5.0), find-tags stopped working. I
tracked it down to buffer-tag-table-list and change 1.12 to that file.
Specifically this:
@@ -185,10 +190,13 @@
;; Current directory
(when (file-readable-p (concat default-directory "TAGS"))
(push (concat default-directory "TAGS") result))
- ;; Parent directory
- (let ((parent-tag-file (expand-file-name "../TAGS" default-directory)))
- (when (file-readable-p parent-tag-file)
- (push parent-tag-file result)))
+ ;; Parent directories
+ (when tags-check-parent-directories-for-tag-files
+ (let ((cur default-directory))
+ (while (file-exists-p (setq cur (expand-file-name ".." cur)))
+ (let ((parent-tag-file (expand-file-name "TAGS" cur)))
+ (when (file-readable-p parent-tag-file)
+ (push parent-tag-file result))))))
;; tag-table-alist
(let* ((key (or buffer-file-name
(concat default-directory (buffer-name))))
This change has a bug in that it will never get out of the while loop.
Using the debugger, it would check each directory going up the tree but
wouldn't stop at the root. This led to:
/usr/local/src/../TAGS
/usr/local/../TAGS
/usr/../TAGS
/../TAGS
/../../TAGS
/../../../TAGS
...
There is always a ".." for the root directory and nothing in the code ever
breaks out of the while. That is probably why the old code checked for
"../TAGS" instead of setting directory to ".." and checking for the
TAGS
file.