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'
This commit is contained in:
parent
d5f270f296
commit
e00974a7d1
3 changed files with 27 additions and 0 deletions
|
@ -1294,6 +1294,10 @@ relative). To mark a file for deletion, delete the entire file name.
|
|||
To change the target of a symbolic link, edit the link target name
|
||||
which appears next to the link name.
|
||||
|
||||
If you edit the file names to create a new subdirectory, Wdired will
|
||||
automatically create these new directories. To inhibit this behavior,
|
||||
set @code{wdired-create-parent-directories} to @code{nil}.
|
||||
|
||||
The rest of the text in the buffer, such as the file sizes and
|
||||
modification dates, is marked read-only, so you can't edit it.
|
||||
However, if you set @code{wdired-allow-to-change-permissions} to
|
||||
|
|
6
etc/NEWS
6
etc/NEWS
|
@ -1425,6 +1425,12 @@ compress many marked files into a single named archive. The
|
|||
compression command is determined from the new
|
||||
`dired-compress-files-alist' variable.
|
||||
|
||||
+++
|
||||
*** In wdired, when editing files to contain slash characters,
|
||||
the resulting directories are automatically created. Whether
|
||||
to do this or not is controlled by the
|
||||
`wdired-create-parent-directories' variable.
|
||||
|
||||
+++
|
||||
*** `W' is now bound to `browse-url-of-dired-file', and is useful for
|
||||
viewing HTML files and the like.
|
||||
|
|
|
@ -152,6 +152,16 @@ renamed by `dired-do-rename' and `dired-do-rename-regexp'."
|
|||
:version "24.3"
|
||||
:group 'wdired)
|
||||
|
||||
(defcustom wdired-create-parent-directories t
|
||||
"If non-nil, create parent directories of destination files.
|
||||
If non-nil, when you rename a file to a destination path within a
|
||||
nonexistent directory, wdired will create any parent directories
|
||||
necessary. When nil, attempts to rename a file into a
|
||||
nonexistent directory will fail."
|
||||
:version "25.2"
|
||||
:type 'boolean
|
||||
:group 'wdired)
|
||||
|
||||
(defvar wdired-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map "\C-x\C-s" 'wdired-finish-edit)
|
||||
|
@ -490,6 +500,8 @@ non-nil means return old filename."
|
|||
(require 'dired-aux)
|
||||
(condition-case err
|
||||
(let ((dired-backup-overwrite nil))
|
||||
(and wdired-create-parent-directories
|
||||
(wdired-create-parentdirs file-new))
|
||||
(dired-rename-file file-ori file-new
|
||||
overwrite))
|
||||
(error
|
||||
|
@ -499,6 +511,11 @@ non-nil means return old filename."
|
|||
err)))))))))
|
||||
errors))
|
||||
|
||||
(defun wdired-create-parentdirs (file-new)
|
||||
"Create parent directories for FILE-NEW if they don't exist."
|
||||
(and (not (file-exists-p (file-name-directory file-new)))
|
||||
(message "Creating directory for file %s" file-new)
|
||||
(make-directory (file-name-directory file-new) t)))
|
||||
|
||||
(defun wdired-exit ()
|
||||
"Exit wdired and return to dired mode.
|
||||
|
|
Loading…
Add table
Reference in a new issue