;;; Code:
+(require 'poe)
+
(defvar default-load-path load-path
"*Base of `load-path'.
It is used as default value of target path to search file or
(while rest
(setq p (expand-file-name path (car rest)))
(if (file-directory-p p)
- (throw 'tag p)
- )
- (setq rest (cdr rest))
- ))
- (not (member p load-path))
- )
+ (throw 'tag p))
+ (setq rest (cdr rest))))
+ (not (or (member p load-path)
+ (if (string-match "/$" p)
+ (member (substring p 0 (1- (length p))) load-path)
+ (member (file-name-as-directory p) load-path)))))
(setq load-path
(if (memq 'append options)
(append load-path (list p))
- (cons p load-path)
- ))
- )))
+ (cons p load-path))))))
;;;###autoload
(defun add-latest-path (pattern &optional all-paths)
(or suffixes
(setq suffixes exec-suffix-list)
)
- (catch 'tag
- (while paths
- (let ((stem (expand-file-name file (car paths)))
- (sufs suffixes)
+ (let (files)
+ (catch 'tag
+ (while suffixes
+ (let ((suf (car suffixes)))
+ (if (and (not (string= suf ""))
+ (string-match (concat (regexp-quote suf) "$") file))
+ (progn
+ (setq files (list file))
+ (throw 'tag nil)
+ )
+ (setq files (cons (concat file suf) files))
)
- (while sufs
- (let ((file (concat stem (car sufs))))
- (if (file-exists-p file)
+ (setq suffixes (cdr suffixes))
+ )))
+ (setq files (nreverse files))
+ (catch 'tag
+ (while paths
+ (let ((path (car paths))
+ (files files)
+ )
+ (while files
+ (setq file (expand-file-name (car files) path))
+ (if (file-executable-p file)
(throw 'tag file)
- ))
- (setq sufs (cdr sufs))
- ))
- (setq paths (cdr paths))
- )))
+ )
+ (setq files (cdr files))
+ )
+ (setq paths (cdr paths))
+ )))))
;;;###autoload
(defun module-installed-p (module &optional paths)
"Return t if module is provided or exists in PATHS.
If PATHS is omitted, `load-path' is used."
(or (featurep module)
- (exec-installed-p (symbol-name module) load-path '(".elc" ".el"))
- ))
+ (let ((file (symbol-name module)))
+ (or paths
+ (setq paths load-path)
+ )
+ (catch 'tag
+ (while paths
+ (let ((stem (expand-file-name file (car paths)))
+ (sufs '(".elc" ".el"))
+ )
+ (while sufs
+ (let ((file (concat stem (car sufs))))
+ (if (file-exists-p file)
+ (throw 'tag file)
+ ))
+ (setq sufs (cdr sufs))
+ ))
+ (setq paths (cdr paths))
+ )))))
;;; @ end
;;;
-(provide 'path-util)
+(require 'product)
+(product-provide (provide 'path-util) (require 'apel-ver))
;;; path-util.el ends here