# HG changeset patch # User Juri Linkov # Date 1195262850 0 # Node ID 117000c04a00a6ef794ed54a19ca1dcf4e0e4402 # Parent e40850c139755e1ecf59058deab0a5decb6fb604 (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. diff -r e40850c13975 -r 117000c04a00 lisp/dired-aux.el --- a/lisp/dired-aux.el Fri Nov 16 23:48:26 2007 +0000 +++ b/lisp/dired-aux.el Sat Nov 17 01:27:30 2007 +0000 @@ -1578,10 +1578,16 @@ "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)