Mercurial > emacs
changeset 1979:0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
INFOPATH, not INFODIR.
(Info-find-node): Don't try to set the info buffer's directory
according to Info-directory; that variable doesn't exist any more.
Instead, let Info-insert-dir set the current directory.
(Info-insert-dir): Properly check for upper- and lower-case forms
of "dir", with and without ".info" extension. Set the buffer's
default-directory to the directory containing the first dir file
we find, and cache it in Info-dir-contents-directory.
(Info-dir-contents-directory): New variable, to cache the
directory we decided to use as the merged directory's
default-directory.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 02 Mar 1993 07:27:17 +0000 |
parents | d7fd2aa5185a |
children | 263033210413 |
files | lisp/info.el |
diffstat | 1 files changed, 48 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/info.el Tue Mar 02 07:26:43 1993 +0000 +++ b/lisp/info.el Tue Mar 02 07:27:17 1993 +0000 @@ -50,8 +50,8 @@ (defvar Info-directory-list nil "List of directories to search for Info documentation files. nil means not yet initialized. In this case, Info uses the environment -variable INFODIR to initialize it, or `Info-default-directory-list' -if there is no INFODIR variable in the environment.") +variable INFOPATH to initialize it, or `Info-default-directory-list' +if there is no INFOPATH variable in the environment.") (defvar Info-current-file nil "Info file that Info is now looking at, or nil.") @@ -153,7 +153,6 @@ Info-current-subfile nil buffer-file-name nil) (erase-buffer) - (setq default-directory Info-directory) (if (eq filename t) (Info-insert-dir) (insert-file-contents filename t) @@ -232,35 +231,63 @@ (goto-char (nth 2 hist))))) (goto-char (point-min))) -;; Record the contents of the (virtual) dir file, -;; once we have merged it for the first time, -;; so we can save time subsequently. +;; Cache the contents of the (virtual) dir file, once we have merged +;; it for the first time, so we can save time subsequently. (defvar Info-dir-contents nil) +;; Cache for the directory we decided to use for the default-directory +;; of the merged dir text. +(defvar Info-dir-contents-directory nil) + ;; Construct the Info directory node by merging the files named `dir' -;; from various directories. +;; from various directories. Set the *info* buffer's +;; default-directory to the first directory we actually get any text +;; from. (defun Info-insert-dir () (if Info-dir-contents (insert Info-dir-contents) (let ((dirs Info-directory-list) buffers buffer others nodes) - ;; Search the directory list for file FILENAME. + + ;; Search the directory list for the directory file. (while dirs - (setq temp (expand-file-name "dir" (car dirs))) ;; Try several variants of specified name. - ;; Try downcasing, appending `.info', or both. - (cond ((file-exists-p temp) - (setq buffers (cons (find-file-noselect temp) buffers))) - ((file-exists-p (concat temp ".info")) - (setq buffers (cons (find-file-noselect (concat temp ".info")) - buffers)))) - (setq dirs (cdr dirs))) - ;; Distinguish the dir file that comes with Emacs - ;; from all the others. + ;; 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)))) + + ;; 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.] (setq buffer (car buffers) others (cdr buffers)) - ;; Insert the entire original dir file as a start. + + ;; Insert the entire original dir file as a start; use its + ;; default directory as the default directory for the whole + ;; concatenation. (insert-buffer buffer) + (setq Info-dir-contents-directory (save-excursion + (set-buffer buffer) + default-directory)) + ;; Look at each of the other buffers one by one. (while others (let ((other (car others))) @@ -322,7 +349,8 @@ (while buffers (kill-buffer (car buffers)) (setq buffers (cdr buffers)))) - (setq Info-dir-contents (buffer-string)))) + (setq Info-dir-contents (buffer-string))) + (setq default-directory Info-dir-contents-directory)) (defun Info-read-subfile (nodepos) (set-buffer (marker-buffer Info-tag-table-marker))