-\[file-detect.el]"
- (let ((rest (if (memq 'all-paths options)
- load-path
- default-load-path))
- p)
- (if (and (catch 'tag
- (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))
- )
- (setq load-path
- (if (memq 'append options)
- (append load-path (list p))
- (cons p load-path)
- ))
- )))
-
-(defun get-latest-path (pat &optional all-paths)
- "Return latest directory in default-load-path
-which is matched to regexp PAT.
-If optional argument ALL-PATHS is specified,
-it is searched from all of load-path instead of default-load-path.
-\[file-detect.el]"
- (catch 'tag
- (let ((paths (if all-paths
- load-path
- default-load-path))
- dir)
- (while (setq dir (car paths))
- (let ((files (sort (directory-files dir t pat t)
- (function file-newer-than-file-p)))
- file)
- (while (setq file (car files))
- (if (file-directory-p file)
- (throw 'tag file)
- )
- (setq files (cdr files))
- ))
- (setq paths (cdr paths))
- ))))
-
-(defun file-installed-p (file &optional paths)
- "Return t if FILE exists in PATHS.
-If PATHS is omitted, `load-path' is used. [file-detect.el]"
- (if (null paths)
- (setq paths load-path)
- )
- (catch 'tag
- (let (path)
- (while paths
- (setq path (expand-file-name file (car paths)))
- (if (file-exists-p path)
- (throw 'tag path)
- )
- (setq paths (cdr paths))
- ))))
-
-(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. [file-detect.el]"
- (or (featurep module)
- (let ((name (symbol-name module)))
- (if (null paths)
- (setq paths load-path)
- )
- (catch 'tag
- (while paths
- (let ((file (expand-file-name name (car paths))))
- (let ((elc-file (concat file ".elc")))
- (if (file-exists-p elc-file)
- (throw 'tag elc-file)
- ))
- (let ((el-file (concat file ".el")))
- (if (file-exists-p el-file)
- (throw 'tag el-file)
- ))
- (if (file-exists-p file)
- (throw 'tag file)
- )
- )
- (setq paths (cdr paths))
- )))))