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

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

[nongnu] elpa/git-commit db2e9546f8 5/9: magit-ediff-buffers: Change arg


From: ELPA Syncer
Subject: [nongnu] elpa/git-commit db2e9546f8 5/9: magit-ediff-buffers: Change argument order
Date: Mon, 16 May 2022 16:58:17 -0400 (EDT)

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

    magit-ediff-buffers: Change argument order
---
 lisp/magit-ediff.el | 140 ++++++++++++++++++++++++++--------------------------
 1 file changed, 70 insertions(+), 70 deletions(-)

diff --git a/lisp/magit-ediff.el b/lisp/magit-ediff.el
index f5f045250d..8fb98c4082 100644
--- a/lisp/magit-ediff.el
+++ b/lisp/magit-ediff.el
@@ -123,47 +123,49 @@ recommend you do not further complicate that by enabling 
this.")
     ("r" "Show range"    magit-ediff-compare)
     ("z" "Show stash"    magit-ediff-show-stash)]])
 
-(defmacro magit-ediff-buffers (quit &rest spec)
-  (declare (indent 1))
-  (let ((fn (if (length= spec 3) 'ediff-buffers3 'ediff-buffers))
-        (char ?A)
-        get make kill)
-    (pcase-dolist (`(,g ,m) spec)
-      (let ((b (intern (format "buf%c" char))))
-        (push `(,b ,g) get)
-        ;; This is an unfortunate complication that I have added for
-        ;; the benefit of one user.  Pretend we used this instead:
-        ;; (push `(or ,b ,m) make)
-        (push `(if ,b
-                   (if magit-ediff-use-indirect-buffers
-                       (prog1
-                           (make-indirect-buffer
-                            ,b (generate-new-buffer-name (buffer-name ,b)) t)
-                         (setq ,b nil))
-                     ,b)
-                 ,m)
-              make)
-        (push `(unless ,b
-                 (ediff-kill-buffer-carefully
-                  ,(intern (format "ediff-buffer-%c" char))))
-              kill))
-      (cl-incf char))
+(defmacro magit-ediff-buffers (a b &optional c setup quit)
+  (let (get make kill (char ?A))
+    (dolist (spec (list a b c))
+      (if (not spec)
+          (push nil make)
+        (pcase-let ((`(,g ,m) spec))
+          (let ((b (intern (format "buf%c" char))))
+            (push `(,b ,g) get)
+            ;; This is an unfortunate complication that I have added for
+            ;; the benefit of one user.  Pretend we used this instead:
+            ;; (push `(or ,b ,m) make)
+            (push `(if ,b
+                       (if magit-ediff-use-indirect-buffers
+                           (prog1 (make-indirect-buffer
+                                   ,b
+                                   (generate-new-buffer-name (buffer-name ,b))
+                                   t)
+                             (setq ,b nil))
+                         ,b)
+                     ,m)
+                  make)
+            (push `(unless ,b
+                     (ediff-kill-buffer-carefully
+                      ,(intern (format "ediff-buffer-%c" char))))
+                  kill))
+          (cl-incf char))))
     (setq get  (nreverse get))
     (setq make (nreverse make))
     (setq kill (nreverse kill))
     `(magit-with-toplevel
        (let ((conf (current-window-configuration))
              ,@get)
-         (,fn
+         (ediff-buffers-internal
           ,@make
-          (list (lambda ()
+          (list ,@(and setup (list setup))
+                (lambda ()
                   (setq-local ediff-quit-hook
                               (list ,@(and quit (list quit))
                                     (lambda ()
                                       ,@kill
                                       (let ((magit-ediff-previous-winconf 
conf))
                                         (run-hooks 
'magit-ediff-quit-hook)))))))
-          ',fn)))))
+          ,(if c 'ediff-buffers3 'ediff-buffers))))))
 
 ;;;###autoload
 (defun magit-ediff-resolve-rest (file)
@@ -218,21 +220,22 @@ FILE has to be relative to the top directory of the 
repository."
            (bufB* (magit-find-file-index-noselect file t)))
       (setf (buffer-local-value 'buffer-read-only bufB*) nil)
       (magit-ediff-buffers
-          (lambda ()
-            (when (buffer-live-p ediff-buffer-B)
-              (when lockB
-                (setf (buffer-local-value 'buffer-read-only bufB) t))
-              (when (buffer-modified-p ediff-buffer-B)
-                (with-current-buffer ediff-buffer-B
-                  (magit-update-index))))
-            (when (and (buffer-live-p ediff-buffer-C)
-                       (buffer-modified-p ediff-buffer-C))
-              (with-current-buffer ediff-buffer-C
-                (when (y-or-n-p (format "Save file %s? " buffer-file-name))
-                  (save-buffer)))))
-        (bufA bufA*)
-        (bufB bufB*)
-        (bufC bufC*)))))
+       (bufA bufA*)
+       (bufB bufB*)
+       (bufC bufC*)
+       nil
+       (lambda ()
+         (when (buffer-live-p ediff-buffer-B)
+           (when lockB
+             (setf (buffer-local-value 'buffer-read-only bufB) t))
+           (when (buffer-modified-p ediff-buffer-B)
+             (with-current-buffer ediff-buffer-B
+               (magit-update-index))))
+         (when (and (buffer-live-p ediff-buffer-C)
+                    (buffer-modified-p ediff-buffer-C))
+           (with-current-buffer ediff-buffer-C
+             (when (y-or-n-p (format "Save file %s? " buffer-file-name))
+               (save-buffer)))))))))
 
 ;;;###autoload
 (defun magit-ediff-compare (revA revB fileA fileB)
@@ -252,11 +255,11 @@ range)."
                                 nil current-prefix-arg)))
      (nconc (list revA revB)
             (magit-ediff-read-files revA revB))))
-  (magit-ediff-buffers nil
-    ((if revA (magit-get-revision-buffer revA fileA) (get-file-buffer    
fileA))
-     (if revA (magit-find-file-noselect  revA fileA) (find-file-noselect 
fileA)))
-    ((if revB (magit-get-revision-buffer revB fileB) (get-file-buffer    
fileB))
-     (if revB (magit-find-file-noselect  revB fileB) (find-file-noselect 
fileB)))))
+  (magit-ediff-buffers
+   ((if revA (magit-get-revision-buffer revA fileA) (get-file-buffer    fileA))
+    (if revA (magit-find-file-noselect  revA fileA) (find-file-noselect 
fileA)))
+   ((if revB (magit-get-revision-buffer revB fileB) (get-file-buffer    fileB))
+    (if revB (magit-find-file-noselect  revB fileB) (find-file-noselect 
fileB)))))
 
 (defun magit-ediff-compare--read-revisions (&optional arg mbase)
   (let ((input (or arg (magit-diff-read-range-or-commit
@@ -381,11 +384,10 @@ FILE must be relative to the top directory of the 
repository."
    (list (magit-read-file-choice "Show staged changes for file"
                                  (magit-staged-files)
                                  "No staged files")))
-  (magit-ediff-buffers nil
-    ((magit-get-revision-buffer "HEAD" file)
-     (magit-find-file-noselect "HEAD" file))
-    ((get-buffer (concat file ".~{index}~"))
-     (magit-find-file-index-noselect file t))))
+  (magit-ediff-buffers ((magit-get-revision-buffer "HEAD" file)
+                        (magit-find-file-noselect "HEAD" file))
+                       ((get-buffer (concat file ".~{index}~"))
+                        (magit-find-file-index-noselect file t))))
 
 ;;;###autoload
 (defun magit-ediff-show-unstaged (file)
@@ -399,11 +401,10 @@ FILE must be relative to the top directory of the 
repository."
    (list (magit-read-file-choice "Show unstaged changes for file"
                                  (magit-unstaged-files)
                                  "No unstaged files")))
-  (magit-ediff-buffers nil
-    ((get-buffer (concat file ".~{index}~"))
-     (magit-find-file-index-noselect file t))
-    ((get-file-buffer file)
-     (find-file-noselect file))))
+  (magit-ediff-buffers ((get-buffer (concat file ".~{index}~"))
+                        (magit-find-file-index-noselect file t))
+                       ((get-file-buffer file)
+                        (find-file-noselect file))))
 
 ;;;###autoload
 (defun magit-ediff-show-working-tree (file)
@@ -413,11 +414,10 @@ FILE must be relative to the top directory of the 
repository."
    (list (magit-read-file-choice "Show changes in file"
                                  (magit-changed-files "HEAD")
                                  "No changed files")))
-  (magit-ediff-buffers nil
-    ((magit-get-revision-buffer "HEAD" file)
-     (magit-find-file-noselect  "HEAD" file))
-    ((get-file-buffer file)
-     (find-file-noselect file))))
+  (magit-ediff-buffers ((magit-get-revision-buffer "HEAD" file)
+                        (magit-find-file-noselect  "HEAD" file))
+                       ((get-file-buffer file)
+                        (find-file-noselect file))))
 
 ;;;###autoload
 (defun magit-ediff-show-commit (commit)
@@ -443,13 +443,13 @@ stash that were staged."
                (fileB fileC))
     (if (and magit-ediff-show-stash-with-index
              (member fileA (magit-changed-files revB revA)))
-        (magit-ediff-buffers nil
-          ((magit-get-revision-buffer revA fileA)
-           (magit-find-file-noselect  revA fileA))
-          ((magit-get-revision-buffer revB fileB)
-           (magit-find-file-noselect  revB fileB))
-          ((magit-get-revision-buffer revC fileC)
-           (magit-find-file-noselect  revC fileC)))
+        (magit-ediff-buffers
+         ((magit-get-revision-buffer revA fileA)
+          (magit-find-file-noselect  revA fileA))
+         ((magit-get-revision-buffer revB fileB)
+          (magit-find-file-noselect  revB fileB))
+         ((magit-get-revision-buffer revC fileC)
+          (magit-find-file-noselect  revC fileC)))
       (magit-ediff-compare revA revC fileA fileC))))
 
 (defun magit-ediff-cleanup-auxiliary-buffers ()



reply via email to

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