emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/wfnames 056e032d18 60/98: Save all overwrites in an alist


From: ELPA Syncer
Subject: [nongnu] elpa/wfnames 056e032d18 60/98: Save all overwrites in an alist
Date: Tue, 8 Aug 2023 04:01:34 -0400 (EDT)

branch: elpa/wfnames
commit 056e032d18849fd9f616129448474a8c769fa908
Author: Thierry Volpiatto <thievol@posteo.net>
Commit: Thierry Volpiatto <thievol@posteo.net>

    Save all overwrites in an alist
    
    and don't modify it to always been able to get the association.
---
 wfnames.el | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/wfnames.el b/wfnames.el
index 3fa7c7e001..9873a50223 100644
--- a/wfnames.el
+++ b/wfnames.el
@@ -148,7 +148,7 @@ Special commands:
 
 (defun wfnames-commit-buffer ()
   (interactive)
-  (let ((renamed 0) (skipped 0) delayed)
+  (let ((renamed 0) (skipped 0) delayed overwrites)
     (cl-labels ((commit ()
                   (with-current-buffer wfnames-buffer
                     (goto-char (point-min))
@@ -169,11 +169,12 @@ Special commands:
                                       ;; new is one of the old
                                       ;; files about to be modified.
                                       (member new wfnames--modified)
-                                      (not (assoc new delayed)))
+                                      (not (member new delayed)))
                                  ;; Maybe ask.
                                  (if (wfnames-ask-for-overwrite new)
                                      (let ((tmpfile (make-temp-name new)))
-                                       (push (cons new tmpfile) delayed)
+                                       (push (cons new tmpfile) overwrites)
+                                       (push new delayed)
                                        (rename-file new tmpfile))
                                    ;; Answer is no, skip.
                                    (add-text-properties
@@ -182,27 +183,25 @@ Special commands:
                                 ;; Now really rename files.
                                 (t
                                  (when (and (file-exists-p new)
-                                            (not (assoc new delayed)))
+                                            (not (member new delayed)))
                                    (setq ow t))
                                  (when wfnames-create-parent-directories
                                    ;; Check if base directory of new exists.
                                    (let ((basedir (file-name-directory
-                                                   (directory-file-name  
new))))
+                                                   (directory-file-name new))))
                                      (unless (file-directory-p basedir)
                                        (mkdir basedir 'parents))))
                                  (if (and ow (wfnames-ask-for-overwrite new))
-                                     (rename-file
-                                      ;; Use old temp file if it
-                                      ;; exists [1].
-                                      (or (assoc-default old delayed) old)
-                                      new ow)
+                                     (rename-file old new 'overwrite)
                                    ;; 'No' answered.
                                    (and ow (cl-incf skipped))
                                    ;; Not an overwrite, do normal renaming.
-                                   (and (null ow) (rename-file old new)))
+                                   (and (null ow)
+                                        (rename-file
+                                         (or (assoc-default old overwrites) 
old)
+                                         new)))
                                  (add-text-properties beg end `(old-name ,new))
-                                 (setq delayed
-                                       (delete (assoc new delayed) delayed))
+                                 (setq delayed (delete new delayed))
                                  (cl-incf renamed))))
                         (forward-line 1)))
                     (when delayed (commit)))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]