aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Volpiatto2022-08-23 12:03:22 +0200
committerLars Ingebrigtsen2022-08-23 12:03:22 +0200
commit66040fbeed284ade8577b8da1e5bf7fde3a958cc (patch)
treebfef3c49b84815926c6446c6be1485e73c65cd67
parente2c766a20d9eb57db0371515773ca68b2de0e128 (diff)
downloademacs-66040fbeed284ade8577b8da1e5bf7fde3a958cc.tar.gz
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).
-rw-r--r--lisp/wdired.el31
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."
537 (wdired-change-to-dired-mode) 537 (wdired-change-to-dired-mode)
538 (if changes 538 (if changes
539 (progn 539 (progn
540 ;; If we are displaying a single file (rather than the 540 (cond
541 ;; contents of a directory), change dired-directory if that 541 ((and (stringp dired-directory)
542 ;; file was renamed. (This ought to be generalized to 542 (not (file-directory-p dired-directory))
543 ;; handle the multiple files case, but that's less trivial). 543 (null some-file-names-unchanged)
544 (when (and (stringp dired-directory) 544 (= (length files-renamed) 1))
545 (not (file-directory-p dired-directory)) 545 ;; If we are displaying a single file (rather than the
546 (null some-file-names-unchanged) 546 ;; contents of a directory), change dired-directory if that
547 (= (length files-renamed) 1)) 547 ;; file was renamed.
548 (setq dired-directory (cdr (car files-renamed)))) 548 (setq dired-directory (cdr (car files-renamed))))
549 ((and (consp dired-directory)
550 (cdr dired-directory)
551 files-renamed)
552 ;; Fix dired buffers created with
553 ;; (dired '(foo f1 f2 f3)).
554 (setq dired-directory
555 (cons (car dired-directory)
556 ;; Replace in `dired-directory' files that have
557 ;; been modified with their new name keeping
558 ;; the ones that are unmodified at the same place.
559 (cl-loop for f in (cdr dired-directory)
560 collect (or (assoc-default f files-renamed)
561 f))))))
549 ;; Re-sort the buffer. 562 ;; Re-sort the buffer.
550 (revert-buffer) 563 (revert-buffer)
551 (let ((inhibit-read-only t)) 564 (let ((inhibit-read-only t))