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

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

[nongnu] elpa/git-commit a4a78d341a: magit-ediff-buffers: Fix hygiene re


From: ELPA Syncer
Subject: [nongnu] elpa/git-commit a4a78d341a: magit-ediff-buffers: Fix hygiene regression
Date: Sun, 22 May 2022 13:58:10 -0400 (EDT)

branch: elpa/git-commit
commit a4a78d341a7006ccdec708b424048ba3b22ee801
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>

    magit-ediff-buffers: Fix hygiene regression
    
    Closes #4694.
---
 lisp/magit-ediff.el | 53 ++++++++++++++++++++++++++++-------------------------
 1 file changed, 28 insertions(+), 25 deletions(-)

diff --git a/lisp/magit-ediff.el b/lisp/magit-ediff.el
index ae2f053123..7b6dd0cec1 100644
--- a/lisp/magit-ediff.el
+++ b/lisp/magit-ediff.el
@@ -181,31 +181,34 @@ is put in FILE."
     (setq get  (nreverse get))
     (setq make (nreverse make))
     (setq kill (nreverse kill))
-    `(magit-with-toplevel
-       (let ((conf (current-window-configuration))
-             (file ,file)
-             ,@get)
-         (ediff-buffers-internal
-          ,@make
-          (list ,@(and setup (list setup))
-                (lambda ()
-                  ;; We do not want to kill buffers that existed before
-                  ;; Ediff was invoked, so we cannot use Ediff's default
-                  ;; quit functions.  Ediff splits quitting across two
-                  ;; hooks for merge jobs but we only ever use one.
-                  (setq-local ediff-quit-merge-hook nil)
-                  (setq-local ediff-quit-hook
-                              (list ,@(and quit (list quit))
-                                    (lambda ()
-                                      ,@kill
-                                      (let ((magit-ediff-previous-winconf 
conf))
-                                        (run-hooks 
'magit-ediff-quit-hook)))))))
-          (pcase (list ,(and c t) (and file t))
-            ('(nil nil) 'ediff-buffers)
-            ('(nil t)   'ediff-merge-buffers)
-            ('(t   nil) 'ediff-buffers3)
-            ('(t   t)   'ediff-merge-buffers-with-ancestor))
-          file)))))
+    (let ((mconf (cl-gensym "conf"))
+          (mfile (cl-gensym "file")))
+      `(magit-with-toplevel
+         (let ((,mconf (current-window-configuration))
+               (,mfile ,file)
+               ,@get)
+           (ediff-buffers-internal
+            ,@make
+            (list ,@(and setup (list setup))
+                  (lambda ()
+                    ;; We do not want to kill buffers that existed before
+                    ;; Ediff was invoked, so we cannot use Ediff's default
+                    ;; quit functions.  Ediff splits quitting across two
+                    ;; hooks for merge jobs but we only ever use one.
+                    (setq-local ediff-quit-merge-hook nil)
+                    (setq-local ediff-quit-hook
+                                (list
+                                 ,@(and quit (list quit))
+                                 (lambda ()
+                                   ,@kill
+                                   (let ((magit-ediff-previous-winconf ,mconf))
+                                     (run-hooks 'magit-ediff-quit-hook)))))))
+            (pcase (list ,(and c t) (and ,mfile t))
+              ('(nil nil) 'ediff-buffers)
+              ('(nil t)   'ediff-merge-buffers)
+              ('(t   nil) 'ediff-buffers3)
+              ('(t   t)   'ediff-merge-buffers-with-ancestor))
+            ,mfile))))))
 
 ;;;###autoload
 (defun magit-ediff-resolve-all (file)



reply via email to

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