changeset 39847:2f5725430b4f

(locate-library): Use load-suffixes and abbrev filename.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 12 Oct 2001 20:57:56 +0000
parents 2e4007551cfd
children c5544bd5437d
files lisp/help-funs.el
diffstat 1 files changed, 14 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/help-funs.el	Fri Oct 12 20:39:54 2001 +0000
+++ b/lisp/help-funs.el	Fri Oct 12 20:57:56 2001 +0000
@@ -82,7 +82,7 @@
   "Show the precise file name of Emacs library LIBRARY.
 This command searches the directories in `load-path' like `M-x load-library'
 to find the file that `M-x load-library RET LIBRARY RET' would load.
-Optional second arg NOSUFFIX non-nil means don't add suffixes `.elc' or `.el'
+Optional second arg NOSUFFIX non-nil means don't add suffixes `load-suffixes'
 to the specified name LIBRARY.
 
 If the optional third arg PATH is specified, that list of directories
@@ -94,40 +94,19 @@
   (interactive (list (read-string "Locate library: ")
 		     nil nil
 		     t))
-  (let (result)
-    (catch 'answer
-      (mapc
-       (lambda (dir)
-	 (mapc
-	  (lambda (suf)
-	    (let ((try (expand-file-name (concat library suf) dir)))
-	      (and (file-readable-p try)
-		   (null (file-directory-p try))
-		   (progn
-		     (setq result try)
-		     (throw 'answer try)))))
-	  (if nosuffix
-	      '("")
-	    '(".elc" ".el" "")
-	    (let ((basic '(".elc" ".el" ""))
-		  (compressed '(".Z" ".gz" "")))
-	      ;; If autocompression mode is on,
-	      ;; consider all combinations of library suffixes
-	      ;; and compression suffixes.
-	      (if (rassq 'jka-compr-handler file-name-handler-alist)
-		  (apply 'nconc
-			 (mapcar (lambda (compelt)
-				   (mapcar (lambda (baselt)
-					     (concat baselt compelt))
-					   basic))
-				 compressed))
-		basic)))))
-       (or path load-path)))
-    (and interactive-call
-	 (if result
-	     (message "Library is file %s" result)
-	   (message "No library %s in search path" library)))
-    result))
+  (catch 'answer
+    (dolist (dir (or path load-path))
+      (dolist (suf (append (unless nosuffix load-suffixes) '("")))
+	(let ((try (expand-file-name (concat library suf) dir)))
+	  (and (file-readable-p try)
+	       (null (file-directory-p try))
+	       (progn
+		 (if interactive-call
+		     (message "Library is file %s" (abbreviate-file-name try)))
+		 (throw 'answer try))))))
+    (if interactive-call
+	(message "No library %s in search path" library))
+    nil))
 
 
 ;; Functions