Function: Info--default-directory-list
Info--default-directory-list is a byte-compiled function defined in
info.el.gz.
Signature
(Info--default-directory-list)
Documentation
Compute a directory list suitable for Info.
Source Code
;; Defined in /usr/src/emacs/lisp/info.el.gz
(defun Info--default-directory-list ()
"Compute a directory list suitable for Info."
(let* ((config-dir
(file-name-as-directory
;; Self-contained NS build with info/ in the app-bundle.
(or (and (featurep 'ns)
(let ((dir (expand-file-name "../info" data-directory)))
(if (file-directory-p dir) dir)))
configure-info-directory)))
(prefixes
;; Directory trees in which to look for info subdirectories
(prune-directory-list '("/usr/local/" "/usr/" "/opt/")))
(suffixes
;; Subdirectories in each directory tree that may contain info
;; directories.
'("share/" ""))
(standard-info-dirs
(apply #'nconc
(mapcar (lambda (pfx)
(let ((dirs
(mapcar (lambda (sfx)
(concat pfx sfx "info/"))
suffixes)))
(prune-directory-list dirs)))
prefixes)))
;; If $(prefix)/share/info is not one of the standard info
;; directories, they are probably installing an experimental
;; version of Emacs, so make sure that experimental version's Info
;; files override the ones in standard directories.
(dirs
(if (member config-dir standard-info-dirs)
;; FIXME? What is the point of adding it again at the end
;; when it is already present earlier in the list?
(nconc standard-info-dirs (list config-dir))
(cons config-dir standard-info-dirs))))
(if (not (eq system-type 'windows-nt))
dirs
;; Include the info directory near where Emacs executable was installed.
(let* ((instdir (file-name-directory invocation-directory))
(dir1 (expand-file-name "../info/" instdir))
(dir2 (expand-file-name "../../../info/" instdir)))
(cond ((file-exists-p dir1) (append dirs (list dir1)))
((file-exists-p dir2) (append dirs (list dir2)))
(t dirs))))))