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

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

[nongnu] elpa/git-commit 7d15b1a041 11/18: magit-diff--region-range: New


From: ELPA Syncer
Subject: [nongnu] elpa/git-commit 7d15b1a041 11/18: magit-diff--region-range: New function
Date: Fri, 25 Mar 2022 13:58:20 -0400 (EDT)

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

    magit-diff--region-range: New function
---
 lisp/magit-diff.el | 57 +++++++++++++++++++++++++++++-------------------------
 1 file changed, 31 insertions(+), 26 deletions(-)

diff --git a/lisp/magit-diff.el b/lisp/magit-diff.el
index 7c78424bff..d3d1593ac7 100644
--- a/lisp/magit-diff.el
+++ b/lisp/magit-diff.el
@@ -1117,37 +1117,42 @@ If no DWIM context is found, nil is returned."
         ((string-match "\\.\\."    range) (replace-match "..." nil nil range))
         (t range)))
 
+(defun magit-diff--region-range (&optional interactive mbase)
+  (when-let ((commits (magit-region-values '(commit branch) t)))
+    (let ((revA (car (last commits)))
+          (revB (car commits)))
+      (when interactive
+        (deactivate-mark))
+      (if mbase
+          (let ((base (magit-git-string "merge-base" revA revB)))
+            (cond
+             ((string= (magit-rev-parse revA) base)
+              (format "%s..%s" revA revB))
+             ((string= (magit-rev-parse revB) base)
+              (format "%s..%s" revB revA))
+             (interactive
+              (let ((main (magit-completing-read "View changes along"
+                                                 (list revA revB)
+                                                 nil t nil nil revB)))
+                (format "%s...%s"
+                        (if (string= main revB) revA revB) main)))
+             (t "%s...%s" revA revB)))
+        (format "%s..%s" revA revB)))))
+
 (defun magit-diff-read-range-or-commit (prompt &optional secondary-default 
mbase)
   "Read range or revision with special diff range treatment.
 If MBASE is non-nil, prompt for which rev to place at the end of
 a \"revA...revB\" range.  Otherwise, always construct
 \"revA..revB\" range."
-  (--if-let (magit-region-values '(commit branch) t)
-      (let ((revA (car (last it)))
-            (revB (car it)))
-        (deactivate-mark)
-        (if mbase
-            (let ((base (magit-git-string "merge-base" revA revB)))
-              (cond
-               ((string= (magit-rev-parse revA) base)
-                (format "%s..%s" revA revB))
-               ((string= (magit-rev-parse revB) base)
-                (format "%s..%s" revB revA))
-               (t
-                (let ((main (magit-completing-read "View changes along"
-                                                   (list revA revB)
-                                                   nil t nil nil revB)))
-                  (format "%s...%s"
-                          (if (string= main revB) revA revB) main)))))
-          (format "%s..%s" revA revB)))
-    (magit-read-range prompt
-                      (or (pcase (magit-diff--dwim)
-                            (`(commit . ,value)
-                             (format "%s^..%s" value value))
-                            ((and range (pred stringp))
-                             range))
-                          secondary-default
-                          (magit-get-current-branch)))))
+  (or (magit-diff--region-range t mbase)
+      (magit-read-range prompt
+                        (or (pcase (magit-diff--dwim)
+                              (`(commit . ,value)
+                               (format "%s^..%s" value value))
+                              ((and range (pred stringp))
+                               range))
+                            secondary-default
+                            (magit-get-current-branch)))))
 
 ;;;###autoload
 (defun magit-diff-range (rev-or-range &optional args files)



reply via email to

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