From 27af61fe6c2bb7e9e16ae864eb76dd3be2f6587e Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 2 Jan 2005 23:43:51 +0000 Subject: [PATCH] (file-loadhist-lookup): New function. (file-provides, file-requires): Use it. --- lisp/loadhist.el | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/lisp/loadhist.el b/lisp/loadhist.el index 8cbe1d80cd3..76ef87ee845 100644 --- a/lisp/loadhist.el +++ b/lisp/loadhist.el @@ -51,9 +51,26 @@ a buffer with no associated file, or an `eval-region', return nil." (error "%S is not a currently loaded feature" feature) (car (feature-symbols feature)))) +(defun file-loadhist-lookup (file) + "Return the `load-history' element for FILE." + ;; First look for FILE as given. + (let ((symbols (assoc file load-history))) + ;; Try converting a library name to an absolute file name. + (and (null symbols) + (let ((absname (find-library-name file))) + (if (not (equal absname file)) + (setq symbols (cdr (assoc absname load-history)))))) + ;; Try converting an absolute file name to a library name. + (and (null symbols) (string-match "[.]el\\'" file) + (let ((libname (file-name-nondirectory file))) + (string-match "[.]el\\'" libname) + (setq libname (substring libname 0 (match-beginning 0))) + (setq symbols (cdr (assoc libname load-history))))) + symbols)) + (defun file-provides (file) "Return the list of features provided by FILE." - (let ((symbols (cdr (assoc file load-history))) + (let ((symbols (file-loadhist-lookup file)) provides) (mapc (lambda (x) (if (and (consp x) (eq (car x) 'provide)) @@ -63,7 +80,7 @@ a buffer with no associated file, or an `eval-region', return nil." (defun file-requires (file) "Return the list of features required by FILE." - (let ((symbols (cdr (assoc file load-history))) + (let ((symbols (file-loadhist-lookup file)) requires) (mapc (lambda (x) (if (and (consp x) (eq (car x) 'require)) -- 2.39.5