Function: reftex-access-search-path
reftex-access-search-path is a byte-compiled function defined in
reftex.el.gz.
Signature
(reftex-access-search-path TYPE &optional RECURSE MASTER-DIR FILE)
Documentation
Access path from environment variables. TYPE is either "tex" or "bib".
When RECURSE is t, expand path elements ending in // recursively.
Relative path elements are left as they are. However, relative recursive
elements are expanded with MASTER-DIR as default directory.
The expanded path is cached for the next search.
FILE is just for the progress message.
Returns the derived path.
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/reftex.el.gz
(defun reftex-access-search-path (type &optional recurse master-dir file)
"Access path from environment variables. TYPE is either \"tex\" or \"bib\".
When RECURSE is t, expand path elements ending in `//' recursively.
Relative path elements are left as they are. However, relative recursive
elements are expanded with MASTER-DIR as default directory.
The expanded path is cached for the next search.
FILE is just for the progress message.
Returns the derived path."
(let* ((pathvar (intern (concat "reftex-" type "-path"))))
(when (null (get pathvar 'status))
;; Get basic path
(set pathvar
(reftex-uniquify
(reftex-parse-colon-path
(mapconcat
(lambda(x)
(if (string-match "^!" x)
(apply #'reftex-process-string
(split-string (substring x 1)))
(or (getenv x) x)))
;; For consistency, the next line should look like this:
;; (cdr (assoc type reftex-path-environment))
;; However, historically we have separate options for the
;; environment variables, so we have to do this:
(symbol-value (intern (concat "reftex-" type
"path-environment-variables")))
path-separator))))
(put pathvar 'status 'split)
;; Check if we have recursive elements
(let ((path (symbol-value pathvar)) dir rec)
(while (setq dir (pop path))
(when (string= (substring dir -2) "//")
(if (file-name-absolute-p dir)
(setq rec (or rec 'absolute))
(setq rec 'relative))))
(put pathvar 'rec-type rec)))
(if recurse
;; Return the recursive expansion of the path
(cond
((not (get pathvar 'rec-type))
;; Path does not contain recursive elements - use simple path
(symbol-value pathvar))
((or (not (get pathvar 'recursive-path))
(and (eq (get pathvar 'rec-type) 'relative)
(not (equal master-dir (get pathvar 'master-dir)))))
;; Either: We don't have a recursive expansion yet.
;; or: Relative recursive path elements need to be expanded
;; relative to new default directory
(message "Expanding search path to find %s file: %s ..." type file)
(put pathvar 'recursive-path
(reftex-expand-path (symbol-value pathvar) master-dir))
(put pathvar 'master-dir master-dir)
(get pathvar 'recursive-path))
(t
;; Recursive path computed earlier is still OK.
(get pathvar 'recursive-path)))
;; The simple path was requested
(symbol-value pathvar))))