diff options
| author | Thierry Volpiatto | 2022-08-23 12:03:22 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2022-08-23 12:03:22 +0200 |
| commit | 66040fbeed284ade8577b8da1e5bf7fde3a958cc (patch) | |
| tree | bfef3c49b84815926c6446c6be1485e73c65cd67 | |
| parent | e2c766a20d9eb57db0371515773ca68b2de0e128 (diff) | |
| download | emacs-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.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." | |||
| 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)) |