]> git.eshelyaron.com Git - emacs.git/commitdiff
(dired-create-directory): Allow creating
authorJuri Linkov <juri@jurta.org>
Sat, 17 Nov 2007 01:27:52 +0000 (01:27 +0000)
committerJuri Linkov <juri@jurta.org>
Sat, 17 Nov 2007 01:27:52 +0000 (01:27 +0000)
a directory of an arbitrary depth.  Add a loop to find the topmost
nonexistent parent dir `new', and call `dired-add-file' on it.
Set the `PARENTS' arg of `make-directory' to t.

lisp/ChangeLog
lisp/dired-aux.el

index 0cfe7fe704d2cde890f3c1a7e0bff42919e60c65..d0fb5ef28da64532ff2fdd79564b44cbece1fd42 100644 (file)
@@ -1,3 +1,10 @@
+2007-11-17  Juri Linkov  <juri@jurta.org>
+
+       * dired-aux.el (dired-create-directory): Allow creating
+       a directory of an arbitrary depth.  Add a loop to find the topmost
+       nonexistent parent dir `new', and call `dired-add-file' on it.
+       Set the `PARENTS' arg of `make-directory' to t.
+
 2007-11-16  Jay Belanger  <jay.p.belanger@gmail.com>
 
        * calc/calc-aent.el (calc-last-user-lang-parse-table): New variable.
index 321a7f679323ee15b554a14979697ce47e69d2be..1ac6208313a2a9213e2405fc9a457fb82202307e 100644 (file)
@@ -1578,10 +1578,16 @@ Optional arg HOW-TO is used to set the value of the into-dir variable
   "Create a directory called DIRECTORY."
   (interactive
    (list (read-file-name "Create directory: " (dired-current-directory))))
-  (let ((expanded (directory-file-name (expand-file-name directory))))
-    (make-directory expanded)
-    (dired-add-file expanded)
-    (dired-move-to-filename)))
+  (let* ((expanded (directory-file-name (expand-file-name directory)))
+        (try expanded) new)
+    ;; Find the topmost nonexistent parent dir (variable `new')
+    (while (and try (not (file-exists-p try)) (not (equal new try)))
+      (setq new try
+           try (directory-file-name (file-name-directory try))))
+    (make-directory expanded t)
+    (when new
+      (dired-add-file new)
+      (dired-move-to-filename))))
 
 (defun dired-into-dir-with-symlinks (target)
   (and (file-directory-p target)