[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 7daa552c68: Fix wdired marking of unsuccessfully renamed files
From: |
Lars Ingebrigtsen |
Subject: |
master 7daa552c68: Fix wdired marking of unsuccessfully renamed files |
Date: |
Fri, 17 Jun 2022 08:48:37 -0400 (EDT) |
branch: master
commit 7daa552c681bb14fa97428e5888cfb545108ce1d
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Fix wdired marking of unsuccessfully renamed files
* lisp/wdired.el (wdired-finish-edit): Don't mark non-renamed
files as renamed (bug#46438).
---
lisp/wdired.el | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/lisp/wdired.el b/lisp/wdired.el
index d2a6bad0f2..a5858ed190 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -521,7 +521,15 @@ non-nil means return old filename."
files-renamed))))
(forward-line -1)))
(when files-renamed
- (setq errors (+ errors (wdired-do-renames files-renamed))))
+ (pcase-let ((`(,errs . ,successful-renames)
+ (wdired-do-renames files-renamed)))
+ (cl-incf errors errs)
+ ;; Some of the renames may fail -- in that case, don't mark an
+ ;; already-existing file with the same name as renamed.
+ (pcase-dolist (`(,file . _) wdired--old-marks)
+ (unless (member file successful-renames)
+ (setq wdired--old-marks
+ (assoc-delete-all file wdired--old-marks #'equal))))))
;; We have to be in wdired-mode when wdired-do-renames is executed
;; so that wdired--restore-properties runs, but we have to change
;; back to dired-mode before reverting the buffer to avoid using
@@ -566,7 +574,8 @@ non-nil means return old filename."
(errors 0)
(total (1- (length renames)))
(prep (make-progress-reporter "Renaming" 0 total))
- (overwrite (or (not wdired-confirm-overwrite) 1)))
+ (overwrite (or (not wdired-confirm-overwrite) 1))
+ (successful-renames nil))
(while (or renames
;; We've done one round through the renames, we have found
;; some residue, but we also made some progress, so maybe
@@ -617,13 +626,15 @@ non-nil means return old filename."
(wdired-create-parentdirs file-new))
(dired-rename-file file-ori file-new
overwrite))
+ (:success
+ (push file-new successful-renames))
(error
(setq errors (1+ errors))
(dired-log "Rename `%s' to `%s' failed:\n%s\n"
file-ori file-new
err)))))))))
(progress-reporter-done prep)
- errors))
+ (cons errors successful-renames)))
(defun wdired-create-parentdirs (file-new)
"Create parent directories for FILE-NEW if they don't exist."
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 7daa552c68: Fix wdired marking of unsuccessfully renamed files,
Lars Ingebrigtsen <=