changeset 76968:a188649f301c

(read-feature): Reimplement. New optional arg LOADED-P. (unload-feature): Update interactive spec accordingly.
author Kim F. Storm <storm@cua.dk>
date Fri, 06 Apr 2007 17:03:19 +0000
parents 0d13000e85a0
children 8237a66e9288
files lisp/loadhist.el
diffstat 1 files changed, 15 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/loadhist.el	Fri Apr 06 17:02:57 2007 +0000
+++ b/lisp/loadhist.el	Fri Apr 06 17:03:19 2007 +0000
@@ -111,17 +111,18 @@
 	  (setq dependents (cons (car x) dependents))))
     dependents))
 
-(defun read-feature (prompt)
-  "Read a feature name \(string\) from the minibuffer.
-Prompt with PROMPT and completing from `features', and
-return the feature \(symbol\)."
-  (intern (completing-read prompt
-			   (mapcar (lambda (feature)
-				     (list (symbol-name feature)))
-				   features)
-			   ;; Complete only features loaded from a file
-			   #'(lambda (f) (feature-file (intern (car f))))
-			   t)))
+(defun read-feature (prompt &optional loaded-p)
+  "Read feature name from the minibuffer, prompting with string PROMPT.
+If optional second arg LOADED-P is non-nil, the feature must be loaded
+from a file."
+  (intern
+   (completing-read prompt
+		    (cons nil features)
+		    (and loaded-p
+			 #'(lambda (f)
+			     (and f	; ignore nil
+				  (feature-file f))))
+		    loaded-p)))
 
 (defvaralias 'loadhist-hook-functions 'unload-feature-special-hooks)
 (defvar unload-feature-special-hooks
@@ -162,7 +163,9 @@
 variable `unload-hook-features-list' and could remove features from it
 in the event that the package has done something normally-ill-advised,
 such as redefining an Emacs function."
-  (interactive (list (read-feature "Feature: ") current-prefix-arg))
+  (interactive
+   (list
+    (read-feature "Unload feature: " t) current-prefix-arg))
   (unless (featurep feature)
     (error "%s is not a currently loaded feature" (symbol-name feature)))
   (unless force