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)))