Mercurial > emacs
diff lisp/progmodes/etags.el @ 7284:87be9630459d
(tags-find-table-in-list): Only recurse if (tags-included-tables) returns
non-nil (avoid infinite recursion).
author | Roland McGrath <roland@gnu.org> |
---|---|
date | Mon, 02 May 1994 21:41:43 +0000 |
parents | b2485e94101a |
children | 0e89007c19c6 |
line wrap: on
line diff
--- a/lisp/progmodes/etags.el Mon May 02 21:24:16 1994 +0000 +++ b/lisp/progmodes/etags.el Mon May 02 21:41:43 1994 +0000 @@ -294,22 +294,24 @@ (let ((tags-file-name this-file) found) (visit-tags-table-buffer 'same) - (if (tags-find-table-in-list file recursing-move-to - (tags-included-tables)) - (progn - ;; We found FILE in the included table. - (if move-to - (progn - ;; The recursive call has already frobbed the list - ;; pointers. It set tags-table-parent-pointer-list - ;; to a list including RECURSING-MOVE-TO. Now we - ;; must mutate that cons so its list pointers show - ;; the position where we found this included table. - (setcar (cdr (car recursing-move-to)) list) - (setcar (cdr (cdr (car recursing-move-to))) list) - ;; Don't do further list frobnication below. - (setq move-to nil))) - (setq list t)))))) + (and (tags-included-tables) + ;; We have some included tables; check them. + (tags-find-table-in-list file recursing-move-to + tags-included-tables) + (progn + ;; We found FILE in the included table. + (if move-to + (progn + ;; The recursive call has already frobbed the list + ;; pointers. It set tags-table-parent-pointer-list + ;; to a list including RECURSING-MOVE-TO. Now we + ;; must mutate that cons so its list pointers show + ;; the position where we found this included table. + (setcar (cdr (car recursing-move-to)) list) + (setcar (cdr (cdr (car recursing-move-to))) list) + ;; Don't do further list frobnication below. + (setq move-to nil))) + (setq list t)))))) (if (consp list) (setq list (cdr list)))) (and list move-to