]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix unwanted revert file prompt after repeated vc-ediff (bug#11605)
authorSean Whitton <spwhitton@spwhitton.name>
Tue, 4 Mar 2025 03:58:15 +0000 (11:58 +0800)
committerEshel Yaron <me@eshelyaron.com>
Tue, 4 Mar 2025 21:05:28 +0000 (22:05 +0100)
* lisp/vc/ediff-vers.el (vc-find-revision-no-save): Declare.
(ediff-vc-internal, ediff-vc-merge-internal): Bind
vc-find-revision-no-save instead of calling
ediff-delete-version-file (bug#11605).
(ediff-delete-version-file): Delete.

(cherry picked from commit a38ed1618d7c6293e38ffdc76fb2c16f8ef33874)

lisp/vc/ediff-vers.el

index c90fcf8afdb84d42ce2a85ecc3571f55e4d96a8a..60ea5ae1cd8e8da718a9f0eda5e04e13f421dcf1 100644 (file)
@@ -58,29 +58,26 @@ comparison or merge operations are being performed."
     ))
 
 
+(defvar vc-find-revision-no-save)
+
 (defun ediff-vc-internal (rev1 rev2 &optional startup-hooks)
   ;; Run Ediff on versions of the current buffer.
   ;; If REV1 is "", use the latest version of the current buffer's file.
   ;; If REV2 is "" then compare current buffer with REV1.
   ;; If the current buffer is named `F', the version is named `F.~REV~'.
   ;; If `F.~REV~' already exists, it is used instead of being re-created.
-  (let (file1 file2 rev1buf rev2buf)
+  (let ((vc-find-revision-no-save (not ediff-keep-tmp-versions))
+        rev1buf rev2buf)
     (if (string= rev1 "")
        (setq rev1 (ediff-vc-latest-version (buffer-file-name))))
     (save-window-excursion
       (save-excursion
        (vc-revision-other-window rev1)
-       (setq rev1buf (current-buffer)
-             file1 (buffer-file-name)))
+       (setq rev1buf (current-buffer)))
       (save-excursion
        (or (string= rev2 "")           ; use current buffer
            (vc-revision-other-window rev2))
-       (setq rev2buf (current-buffer)
-             file2 (buffer-file-name)))
-      (push (lambda ()
-             (ediff-delete-version-file file1)
-             (or (string= rev2 "") (ediff-delete-version-file file2)))
-           startup-hooks))
+       (setq rev2buf (current-buffer))))
     (ediff-buffers
      rev1buf rev2buf
      startup-hooks
@@ -143,7 +140,8 @@ With prefix argument, prompts for a revision name."
 (defun ediff-vc-merge-internal (rev1 rev2 ancestor-rev
                                     &optional startup-hooks merge-buffer-file)
 ;; If ANCESTOR-REV non-nil, merge with ancestor
-  (let (buf1 buf2 ancestor-buf)
+  (let ((vc-find-revision-no-save t)
+        buf1 buf2 ancestor-buf)
     (save-window-excursion
       (save-excursion
        (vc-revision-other-window rev1)
@@ -158,17 +156,7 @@ With prefix argument, prompts for a revision name."
                (setq ancestor-rev (vc-working-revision
                                     buffer-file-name)))
            (vc-revision-other-window ancestor-rev)
-           (setq ancestor-buf (current-buffer))))
-      (push (let ((f1 (buffer-file-name buf1))
-                  (f2 (unless (string= rev2 "") (buffer-file-name buf2)))
-                  (fa (unless (or (string= ancestor-rev "")
-                                 (not ancestor-rev))
-                       (buffer-file-name ancestor-buf))))
-              (lambda ()
-               (ediff-delete-version-file f1)
-               (if f2 (ediff-delete-version-file f2))
-               (if fa (ediff-delete-version-file fa))))
-           startup-hooks))
+           (setq ancestor-buf (current-buffer)))))
     (if ancestor-rev
        (ediff-merge-buffers-with-ancestor
         buf1 buf2 ancestor-buf
@@ -201,10 +189,5 @@ With prefix argument, prompts for a revision name."
        buf1 buf2 startup-hooks 'ediff-merge-revisions merge-buffer-file))))
 
 
-;; delete version file on exit unless ediff-keep-tmp-versions is true
-(defun ediff-delete-version-file (file)
-  (or ediff-keep-tmp-versions (delete-file file)))
-
-
 (provide 'ediff-vers)
 ;;; ediff-vers.el ends here