# HG changeset patch # User Richard M. Stallman # Date 738614123 0 # Node ID cd8f8468a190b7310949c013f5d8441236940758 # Parent 4a1a003ded62734bf2dc597cdd5913240e9d2b21 (Info-insert-dir): Ignore duplicate directories. diff -r 4a1a003ded62 -r cd8f8468a190 lisp/info.el --- a/lisp/info.el Fri May 28 17:23:47 1993 +0000 +++ b/lisp/info.el Fri May 28 18:35:23 1993 +0000 @@ -287,36 +287,39 @@ (if Info-dir-contents (insert Info-dir-contents) (let ((dirs Info-directory-list) - buffers buffer others nodes) + buffers buffer others nodes dirs-done) ;; Search the directory list for the directory file. (while dirs - ;; Try several variants of specified name. - ;; Try upcasing, appending `.info', or both. - (let* (temp - (buffer - (cond - ((progn (setq temp (expand-file-name "DIR" (car dirs))) - (file-exists-p temp)) - (find-file-noselect temp)) - ((progn (setq temp (expand-file-name "dir" (car dirs))) - (file-exists-p temp)) - (find-file-noselect temp)) - ((progn (setq temp (expand-file-name "DIR.INFO" (car dirs))) - (file-exists-p temp)) - (find-file-noselect temp)) - ((progn (setq temp (expand-file-name "dir.info" (car dirs))) - (file-exists-p temp)) - (find-file-noselect temp))))) - (if buffer (setq buffers (cons buffer buffers))) - (setq dirs (cdr dirs)))) + (or (member (file-truename (expand-file-name (car dirs))) dirs-done) + (member (directory-file-name (file-truename (expand-file-name (car dirs)))) + dirs-done) + ;; Try several variants of specified name. + ;; Try upcasing, appending `.info', or both. + (let* (temp + (buffer + (cond + ((progn (setq temp (expand-file-name "DIR" (car dirs))) + (file-exists-p temp)) + (find-file-noselect temp)) + ((progn (setq temp (expand-file-name "dir" (car dirs))) + (file-exists-p temp)) + (find-file-noselect temp)) + ((progn (setq temp (expand-file-name "DIR.INFO" (car dirs))) + (file-exists-p temp)) + (find-file-noselect temp)) + ((progn (setq temp (expand-file-name "dir.info" (car dirs))) + (file-exists-p temp)) + (find-file-noselect temp))))) + (setq dirs-done + (cons (file-truename (expand-file-name (car dirs))) + dirs-done)) + (if buffer (setq buffers (cons buffer buffers))))) + (setq dirs (cdr dirs))) ;; Distinguish the dir file that comes with Emacs from all the - ;; others. [This sounds like baloney - who knows what order - ;; Info-directory-list is in, especially after checking the - ;; INFOPATH variable, and why should Emacs's dir be special? If - ;; you understand what this comment should have said, please - ;; change it.] + ;; others. Yes, that is really what this is supposed to do. + ;; If it doesn't work, fix it. (setq buffer (car buffers) others (cdr buffers))