Function: vhdl-resolve-paths
vhdl-resolve-paths is a byte-compiled function defined in
vhdl-mode.el.gz.
Signature
(vhdl-resolve-paths PATH-LIST)
Documentation
Resolve path wildcards in PATH-LIST.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/vhdl-mode.el.gz
(defun vhdl-resolve-paths (path-list)
"Resolve path wildcards in PATH-LIST."
(let (path-list-1 path-list-2 path-beg path-end dir)
;; eliminate non-existent directories
(while path-list
(setq dir (car path-list))
(string-match "\\(-r \\)?\\(\\([^?*]*[/\\]\\)*\\)" dir)
(if (file-directory-p (match-string 2 dir))
(push dir path-list-1)
(vhdl-warning-when-idle "No such directory: \"%s\"" (match-string 2 dir)))
(setq path-list (cdr path-list)))
;; resolve path wildcards
(while path-list-1
(setq dir (car path-list-1))
(if (string-match "\\(-r \\)?\\(\\([^?*]*[/\\]\\)*\\)\\([^/\\]*[?*][^/\\]*\\)\\([/\\].*\\)" dir)
(progn
(setq path-beg (match-string 1 dir)
path-end (match-string 5 dir))
(setq path-list-1
(append
(mapcar
(lambda (var) (concat path-beg var path-end))
(let ((all-list (vhdl-directory-files
(match-string 2 dir) t
(concat "\\<" (wildcard-to-regexp
(match-string 4 dir)))))
dir-list)
(while all-list
(when (file-directory-p (car all-list))
(push (car all-list) dir-list))
(setq all-list (cdr all-list)))
dir-list))
(cdr path-list-1))))
(string-match "\\(-r \\)?\\(.*\\)[/\\].*" dir)
(when (file-directory-p (match-string 2 dir))
(push dir path-list-2))
(setq path-list-1 (cdr path-list-1))))
(nreverse path-list-2)))