diff lisp/subr.el @ 66508:ecdadc99bf8c

* subr.el (locate-library): Move from help-fns.el. * help-fns.el (locate-library): Move to subr.el.
author Romain Francoise <romain@orebokech.com>
date Fri, 28 Oct 2005 16:55:48 +0000
parents 167ad3f64775
children 6b634736fd83 693e794b57bf
line wrap: on
line diff
--- a/lisp/subr.el	Fri Oct 28 16:44:46 2005 +0000
+++ b/lisp/subr.el	Fri Oct 28 16:55:48 2005 +0000
@@ -1309,6 +1309,34 @@
 	(setq files (cdr files)))
       file)))
 
+;;;###autoload
+(defun locate-library (library &optional nosuffix path interactive-call)
+  "Show the precise file name of Emacs library LIBRARY.
+This command searches the directories in `load-path' like `\\[load-library]'
+to find the file that `\\[load-library] RET LIBRARY RET' would load.
+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
+is used instead of `load-path'.
+
+When called from a program, the file name is normaly returned as a
+string.  When run interactively, the argument INTERACTIVE-CALL is t,
+and the file name is displayed in the echo area."
+  (interactive (list (completing-read "Locate library: "
+				      'locate-file-completion
+				      (cons load-path load-suffixes))
+		     nil nil
+		     t))
+  (let ((file (locate-file library
+			   (or path load-path)
+			   (append (unless nosuffix load-suffixes) '("")))))
+    (if interactive-call
+	(if file
+	    (message "Library is file %s" (abbreviate-file-name file))
+	  (message "No library %s in search path" library)))
+    file))
+
 
 ;;;; Specifying things to do later.