Introduce a new mode COLOR_MOVED_DEFAULT, which is the same as
COLOR_MOVED_ZEBRA. But having two different symbols allows us to
differentiate them in the code.

Signed-off-by: Stefan Beller <[email protected]>
---
 Documentation/diff-options.txt |  3 +++
 diff.c                         | 13 ++++++++++++-
 diff.h                         |  1 +
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 058c8014ed..d2c6a60af2 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -243,6 +243,9 @@ endif::git-diff[]
 --
 no::
        Moved lines are not highlighted.
+default::
+       Is a synonym for `zebra`. This may change to more sensible modes
+       in the future.
 plain::
        Any line that is added in one location and was removed
        in another location will be colored with 'color.diff.newMoved'.
diff --git a/diff.c b/diff.c
index 5311dcf133..31cdec05ac 100644
--- a/diff.c
+++ b/diff.c
@@ -256,12 +256,23 @@ int git_diff_heuristic_config(const char *var, const char 
*value, void *cb)
 
 static int parse_color_moved(const char *arg)
 {
+       int v = git_parse_maybe_bool(arg);
+
+       if (v != -1) {
+               if (v == 0)
+                       return COLOR_MOVED_NO;
+               else if (v == 1)
+                       return COLOR_MOVED_DEFAULT;
+       }
+
        if (!strcmp(arg, "no"))
                return COLOR_MOVED_NO;
        else if (!strcmp(arg, "plain"))
                return COLOR_MOVED_PLAIN;
        else if (!strcmp(arg, "zebra"))
                return COLOR_MOVED_ZEBRA;
+       else if (!strcmp(arg, "default"))
+               return COLOR_MOVED_DEFAULT;
        else if (!strcmp(arg, "dimmed_zebra"))
                return COLOR_MOVED_ZEBRA_DIM;
        else
@@ -4654,7 +4665,7 @@ int diff_opt_parse(struct diff_options *options,
                if (diff_color_moved_default)
                        options->color_moved = diff_color_moved_default;
                if (options->color_moved == COLOR_MOVED_NO)
-                       options->color_moved = COLOR_MOVED_ZEBRA_DIM;
+                       options->color_moved = COLOR_MOVED_DEFAULT;
        } else if (!strcmp(arg, "--no-color-moved"))
                options->color_moved = COLOR_MOVED_NO;
        else if (skip_prefix(arg, "--color-moved=", &arg)) {
diff --git a/diff.h b/diff.h
index 98abd75521..9298d211d7 100644
--- a/diff.h
+++ b/diff.h
@@ -192,6 +192,7 @@ struct diff_options {
                COLOR_MOVED_NO = 0,
                COLOR_MOVED_PLAIN = 1,
                COLOR_MOVED_ZEBRA = 2,
+               COLOR_MOVED_DEFAULT = 2,
                COLOR_MOVED_ZEBRA_DIM = 3,
        } color_moved;
 };
-- 
2.13.0.31.g9b732c453e

Reply via email to