;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Code:
-(eval-when-compile (require 'static))
-
-(static-condition-case nil
- (directory-files "." nil nil t)
- (file-error nil);; unreadable directory.
- (wrong-number-of-arguments
- (or (fboundp 'si:directory-files)
- (fset 'si:directory-files (symbol-function 'directory-files)))
- ;; This function is also defined in poe-18, but it is needed here
- ;; for compiling other packages under old Emacsen.
- (defun directory-files (directory &optional full match nosort)
- "Return a list of names of files in DIRECTORY.
-There are three optional arguments:
-If FULL is non-nil, return absolute file names. Otherwise return names
- that are relative to the specified directory.
-If MATCH is non-nil, mention only file names that match the regexp MATCH.
-If NOSORT is dummy for compatibility.
-\[poe-18.el; EMACS 19 emulating function]"
- (si:directory-files directory full match))
- ))
+(require 'poe)
(defvar default-load-path load-path
"*Base of `load-path'.
You can use following PATH styles:
load-path relative: \"PATH/\"
- (it is searched from `defaul-load-path')
+ (it is searched from `default-load-path')
home directory relative: \"~/PATH/\" \"~USER/PATH/\"
absolute path: \"/HOO/BAR/BAZ/\"
(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