branch: elpa/magit
commit 58cb6f40541add80526522a9382a553166ab6a6a
Author: Jonas Bernoulli <jo...@bernoul.li>
Commit: Jonas Bernoulli <jo...@bernoul.li>

    Define more diff arguments using transient-define-argument
---
 lisp/magit-diff.el | 49 ++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 38 insertions(+), 11 deletions(-)

diff --git a/lisp/magit-diff.el b/lisp/magit-diff.el
index 19ca8e192aa..22e52e60012 100644
--- a/lisp/magit-diff.el
+++ b/lisp/magit-diff.el
@@ -879,12 +879,12 @@ and `:slant'."
    (magit-diff:--diff-merges)
    (magit-diff:-M)
    (magit-diff:-C)
-   (5 "-R" "Reverse sides"                "-R")
+   (5 magit-diff:-R)
    (5 magit-diff:--color-moved)
    (5 magit-diff:--color-moved-ws)
-   ("-x" "Disallow external diff drivers" "--no-ext-diff")
-   ("-s" "Show stats"                     "--stat")
-   ("=g" "Show signature"                 "--show-signature")]
+   (magit-diff:--no-ext-diff)
+   (magit-diff:--stat)
+   (magit-diff:--show-signature)]
   ["Actions"
    [("d" "Dwim"          magit-diff-dwim)
     ("r" "Diff range"    magit-diff-range)
@@ -914,15 +914,12 @@ and `:slant'."
    (magit-diff:--diff-merges)
    (magit-diff:-M)
    (magit-diff:-C)
-   (5 "-R" "Reverse sides"                "-R"
-      :if-derived magit-diff-mode)
+   (5 magit-diff:-R)
    (5 magit-diff:--color-moved)
    (5 magit-diff:--color-moved-ws)
-   ("-x" "Disallow external diff drivers" "--no-ext-diff")
-   ("-s" "Show stats"                     "--stat"
-    :if-derived magit-diff-mode)
-   ("=g" "Show signature"                 "--show-signature"
-    :if-derived magit-diff-mode)]
+   (magit-diff:--no-ext-diff)
+   (magit-diff:--stat)
+   (magit-diff:--show-signature)]
   [["Refresh"
     ("g" "buffer"                   magit-diff-refresh)
     ("s" "buffer and set defaults"  transient-set-and-exit)
@@ -1060,6 +1057,36 @@ and `:slant'."
     (?a "[a]ll space"    "ignore-all-space")
     (?n "[n]o"           "no")))
 
+(transient-define-argument magit-diff:-R ()
+  :description "Reverse sides"
+  :class 'transient-switch
+  :argument "-R"
+  :if 'magit-diff-argument-predicate)
+
+(transient-define-argument magit-diff:--no-ext-diff ()
+  :description "Disallow external diff drivers"
+  :class 'transient-switch
+  :argument "--no-ext-diff"
+  :key "-x")
+
+(transient-define-argument magit-diff:--stat ()
+  :description "Show stats"
+  :class 'transient-switch
+  :argument "--stat"
+  :key "-s"
+  :if 'magit-diff-argument-predicate)
+
+(transient-define-argument magit-diff:--show-signature ()
+  :description "Show signature"
+  :class 'transient-switch
+  :argument "--show-signature"
+  :key "=g"
+  :if 'magit-diff-argument-predicate)
+
+(defun magit-diff-argument-predicate ()
+  (or (eq transient--prefix 'magit-diff)
+      (derived-mode-p 'magit-diff-mode)))
+
 ;;;; Setup Commands
 
 ;;;###autoload

Reply via email to