aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorPhil Sung2016-02-28 15:07:02 +1030
committerLars Ingebrigtsen2016-02-28 15:07:02 +1030
commite00974a7d1981d716d38ecf45b689dd30a381c65 (patch)
tree635c1677b80ec6db07e52e8c1c45bf7c4348ef0e /lisp
parentd5f270f2965f3c52963e2bf0057756e350d771d1 (diff)
downloademacs-e00974a7d1981d716d38ecf45b689dd30a381c65.tar.gz
emacs-e00974a7d1981d716d38ecf45b689dd30a381c65.zip
Create subdirectories automatically in wdired
* lisp/wdired.el (wdired-create-parent-directories): New variable (bug#6817). (wdired-create-parentdirs): New function. (wdired-do-renames): Use it. * doc/emacs/dired.texi (Wdired): Mention `wdired-create-parent-directories'
Diffstat (limited to 'lisp')
-rw-r--r--lisp/wdired.el17
1 files changed, 17 insertions, 0 deletions
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 9f258794f96..d943dada030 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -152,6 +152,16 @@ renamed by `dired-do-rename' and `dired-do-rename-regexp'."
152 :version "24.3" 152 :version "24.3"
153 :group 'wdired) 153 :group 'wdired)
154 154
155(defcustom wdired-create-parent-directories t
156 "If non-nil, create parent directories of destination files.
157If non-nil, when you rename a file to a destination path within a
158nonexistent directory, wdired will create any parent directories
159necessary. When nil, attempts to rename a file into a
160nonexistent directory will fail."
161 :version "25.2"
162 :type 'boolean
163 :group 'wdired)
164
155(defvar wdired-mode-map 165(defvar wdired-mode-map
156 (let ((map (make-sparse-keymap))) 166 (let ((map (make-sparse-keymap)))
157 (define-key map "\C-x\C-s" 'wdired-finish-edit) 167 (define-key map "\C-x\C-s" 'wdired-finish-edit)
@@ -490,6 +500,8 @@ non-nil means return old filename."
490 (require 'dired-aux) 500 (require 'dired-aux)
491 (condition-case err 501 (condition-case err
492 (let ((dired-backup-overwrite nil)) 502 (let ((dired-backup-overwrite nil))
503 (and wdired-create-parent-directories
504 (wdired-create-parentdirs file-new))
493 (dired-rename-file file-ori file-new 505 (dired-rename-file file-ori file-new
494 overwrite)) 506 overwrite))
495 (error 507 (error
@@ -499,6 +511,11 @@ non-nil means return old filename."
499 err))))))))) 511 err)))))))))
500 errors)) 512 errors))
501 513
514(defun wdired-create-parentdirs (file-new)
515 "Create parent directories for FILE-NEW if they don't exist."
516 (and (not (file-exists-p (file-name-directory file-new)))
517 (message "Creating directory for file %s" file-new)
518 (make-directory (file-name-directory file-new) t)))
502 519
503(defun wdired-exit () 520(defun wdired-exit ()
504 "Exit wdired and return to dired mode. 521 "Exit wdired and return to dired mode.