branch: elpa/magit
commit 7caa310a4e6c7fabc503e3246bc003df3b994836
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>

    magit-ediff-resolve-rest: Do not try to use smerge-ediff-windows
    
    It is only set buffer-locally, and by the time we use it we are no
    longer in the appropriate buffer, which doesn't even exist anymore.
    Use a lexical-variable instead.  We loose nothing and its cleaner.
---
 lisp/magit-ediff.el | 42 ++++++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 20 deletions(-)

diff --git a/lisp/magit-ediff.el b/lisp/magit-ediff.el
index 613b2ae25b..239219159c 100644
--- a/lisp/magit-ediff.el
+++ b/lisp/magit-ediff.el
@@ -205,26 +205,28 @@ and alternative commands."
   :inapt-if-not #'magit-anything-unmerged-p
   (interactive (list (magit-read-unmerged-file)))
   (magit-with-toplevel
-    (with-current-buffer (find-file-noselect file)
-      (smerge-ediff)
-      (setq-local
-       ediff-quit-hook
-       (lambda ()
-         (let ((bufC ediff-buffer-C)
-               (bufS smerge-ediff-buf))
-           (with-current-buffer bufS
-             (when (yes-or-no-p (format "Conflict resolution finished; save 
%s? "
-                                        buffer-file-name))
-               (erase-buffer)
-               (insert-buffer-substring bufC)
-               (save-buffer))))
-         (when (buffer-live-p ediff-buffer-A) (kill-buffer ediff-buffer-A))
-         (when (buffer-live-p ediff-buffer-B) (kill-buffer ediff-buffer-B))
-         (when (buffer-live-p ediff-buffer-C) (kill-buffer ediff-buffer-C))
-         (when (buffer-live-p ediff-ancestor-buffer)
-           (kill-buffer ediff-ancestor-buffer))
-         (let ((magit-ediff-previous-winconf smerge-ediff-windows))
-           (run-hooks 'magit-ediff-quit-hook)))))))
+    (let ((winconf (current-window-configuration)))
+      (with-current-buffer (find-file-noselect file)
+        (smerge-ediff)
+        (setq-local
+         ediff-quit-hook
+         (lambda ()
+           (let ((bufC ediff-buffer-C)
+                 (bufS smerge-ediff-buf))
+             (with-current-buffer bufS
+               (when (yes-or-no-p
+                      (format "Conflict resolution finished; save %s? "
+                              buffer-file-name))
+                 (erase-buffer)
+                 (insert-buffer-substring bufC)
+                 (save-buffer))))
+           (when (buffer-live-p ediff-buffer-A) (kill-buffer ediff-buffer-A))
+           (when (buffer-live-p ediff-buffer-B) (kill-buffer ediff-buffer-B))
+           (when (buffer-live-p ediff-buffer-C) (kill-buffer ediff-buffer-C))
+           (when (buffer-live-p ediff-ancestor-buffer)
+             (kill-buffer ediff-ancestor-buffer))
+           (let ((magit-ediff-previous-winconf winconf))
+             (run-hooks 'magit-ediff-quit-hook))))))))
 
 ;;;###autoload(autoload 'magit-ediff-stage "magit-ediff" nil t)
 (transient-define-suffix magit-ediff-stage (file)

Reply via email to