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

    magit-ediff-resolve-rest: Handle cleaning up buffers setup by Smerge
    
    Now this function handles cleaning up all buffers for all of
    Magit's Ediff commands.  `magit-ediff-resolve-rest' needs a special
    case because it uses `smerge-ediff', which of course does not use
    `magit-find-file-noselect' to create buffers, and these buffers have
    to be cleaned up differently.
---
 lisp/magit-ediff.el | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/lisp/magit-ediff.el b/lisp/magit-ediff.el
index 0ac2e745e7..755b60abe4 100644
--- a/lisp/magit-ediff.el
+++ b/lisp/magit-ediff.el
@@ -221,15 +221,7 @@ and alternative commands."
                           (insert-buffer-substring bufC)
                           (save-buffer)))))
                   t t)
-        (add-hook 'ediff-quit-hook
-                  (lambda ()
-                    (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)))
-                  t t)
-        (add-hook 'ediff-quit-hook #'magit-ediff--cleanup-buffers t t)
+        (add-hook 'ediff-quit-hook (##magit-ediff--cleanup-buffers t) t t)
         (add-hook 'ediff-quit-hook
                   (lambda ()
                     (let ((magit-ediff-previous-winconf winconf))
@@ -536,11 +528,18 @@ is done setting up buffers."
 
 ;;; Quit
 
-(defun magit-ediff--cleanup-buffers ()
-  (magit-ediff--bury-buffer ediff-buffer-A)
-  (magit-ediff--bury-buffer ediff-buffer-B)
-  (magit-ediff--bury-buffer ediff-buffer-C)
-  (magit-ediff--bury-buffer ediff-ancestor-buffer)
+(defun magit-ediff--cleanup-buffers (&optional smerge)
+  (cond (smerge
+         (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)))
+        (t
+         (magit-ediff--bury-buffer ediff-buffer-A)
+         (magit-ediff--bury-buffer ediff-buffer-B)
+         (magit-ediff--bury-buffer ediff-buffer-C)
+         (magit-ediff--bury-buffer ediff-ancestor-buffer)))
   (let* ((ctl-buf ediff-control-buffer)
          (ctl-win (ediff-get-visible-buffer-window ctl-buf))
          (ctl-frm ediff-control-frame)

Reply via email to