changeset 45552:0c2a22313f16

(read-directory-name): New function. (cd): Use it instead of read-file-name.
author Kim F. Storm <storm@cua.dk>
date Tue, 28 May 2002 09:08:42 +0000
parents 811d06e337cb
children fca54e194e42
files lisp/files.el
diffstat 1 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Tue May 28 09:03:22 2002 +0000
+++ b/lisp/files.el	Tue May 28 09:08:42 2002 +0000
@@ -469,6 +469,25 @@
 that really does change some file names to canonicalize certain
 patterns and to guarantee valid names."
   filename)
+
+(defun read-directory-name (prompt &optional dir default-dirname mustmatch initial)
+  "Read directory name, prompting with PROMPT and completing in directory DIR.
+Value is not expanded---you must call `expand-file-name' yourself.
+Default name to DEFAULT-DIRNAME if user enters a null string.
+ (If DEFAULT-DIRNAME is omitted, the current buffer's directory is used,
+  except that if INITIAL is specified, that combined with DIR is used.)
+Fourth arg MUSTMATCH non-nil means require existing directory's name.
+ Non-nil and non-t means also require confirmation after completion.
+Fifth arg INITIAL specifies text to start with.
+DIR defaults to current buffer's directory default."
+  (unless dir
+    (setq dir default-directory))
+  (unless default-dirname
+    (setq default-dirname 
+	  (if initial (concat dir initial) default-directory)))
+  (read-file-name prompt dir default-dirname mustmatch initial
+		  'file-directory-p))
+
 
 (defun pwd ()
   "Show the current default directory."
@@ -517,7 +536,7 @@
 If your environment includes a `CDPATH' variable, try each one of that
 colon-separated list of directories when resolving a relative directory name."
   (interactive
-   (list (read-file-name "Change default directory: "
+   (list (read-directory-name "Change default directory: "
 			 default-directory default-directory
 			 (and (member cd-path '(nil ("./")))
 			      (null (getenv "CDPATH"))))))