diff options
author | Thierry Volpiatto <thievol@posteo.net> | 2022-08-23 12:03:22 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2022-08-23 12:03:22 +0200 |
commit | 66040fbeed284ade8577b8da1e5bf7fde3a958cc (patch) | |
tree | bfef3c49b84815926c6446c6be1485e73c65cd67 /lisp/wdired.el | |
parent | e2c766a20d9eb57db0371515773ca68b2de0e128 (diff) | |
download | emacs-66040fbeed284ade8577b8da1e5bf7fde3a958cc.tar.gz emacs-66040fbeed284ade8577b8da1e5bf7fde3a958cc.tar.bz2 emacs-66040fbeed284ade8577b8da1e5bf7fde3a958cc.zip |
Fix wdired with (dired '(dir f1 f2 ...))
* lisp/wdired.el (wdired-finish-edit): Fix wdired with (dired
'(dir f1 f2 ...)) (bug#57334).
Diffstat (limited to 'lisp/wdired.el')
-rw-r--r-- | lisp/wdired.el | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/lisp/wdired.el b/lisp/wdired.el index 106d57174d5..09f5b069f4b 100644 --- a/lisp/wdired.el +++ b/lisp/wdired.el @@ -537,15 +537,28 @@ non-nil means return old filename." (wdired-change-to-dired-mode) (if changes (progn - ;; If we are displaying a single file (rather than the - ;; contents of a directory), change dired-directory if that - ;; file was renamed. (This ought to be generalized to - ;; handle the multiple files case, but that's less trivial). - (when (and (stringp dired-directory) - (not (file-directory-p dired-directory)) - (null some-file-names-unchanged) - (= (length files-renamed) 1)) - (setq dired-directory (cdr (car files-renamed)))) + (cond + ((and (stringp dired-directory) + (not (file-directory-p dired-directory)) + (null some-file-names-unchanged) + (= (length files-renamed) 1)) + ;; If we are displaying a single file (rather than the + ;; contents of a directory), change dired-directory if that + ;; file was renamed. + (setq dired-directory (cdr (car files-renamed)))) + ((and (consp dired-directory) + (cdr dired-directory) + files-renamed) + ;; Fix dired buffers created with + ;; (dired '(foo f1 f2 f3)). + (setq dired-directory + (cons (car dired-directory) + ;; Replace in `dired-directory' files that have + ;; been modified with their new name keeping + ;; the ones that are unmodified at the same place. + (cl-loop for f in (cdr dired-directory) + collect (or (assoc-default f files-renamed) + f)))))) ;; Re-sort the buffer. (revert-buffer) (let ((inhibit-read-only t)) |