diff.c: offer config option to control ws handling in move detection
authorStefan Beller <sbeller@google.com>
Wed, 18 Jul 2018 19:31:56 +0000 (12:31 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 19 Jul 2018 19:02:54 +0000 (12:02 -0700)
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
Documentation/diff-options.txt
diff.c
index 2659153cb377554bc5cf6fc4199233b2bab498a2..6ca7118b018646ace5c0a5fae5df79b4f3d2c279 100644 (file)
@@ -1122,6 +1122,11 @@ diff.colorMoved::
        true the default color mode will be used. When set to false,
        moved lines are not colored.
 
+diff.colorMovedWS::
+       When moved lines are colored using e.g. the `diff.colorMoved` setting,
+       this option controls the `<mode>` how spaces are treated
+       for details of valid modes see '--color-moved-ws' in linkgit:git-diff[1].
+
 color.diff.<slot>::
        Use customized color for diff colorization.  `<slot>` specifies
        which part of the patch to use the specified color, and is one
index 143acd9417ed60f377ed357cc6db9717628f941e..8da7fed4e222fcd5d50d789e770c3d9e02e93727 100644 (file)
@@ -294,8 +294,11 @@ dimmed_zebra::
 
 --color-moved-ws=<modes>::
        This configures how white spaces are ignored when performing the
-       move detection for `--color-moved`. These modes can be given
-       as a comma separated list:
+       move detection for `--color-moved`.
+ifdef::git-diff[]
+       It can be set by the `diff.colorMovedWS` configuration setting.
+endif::git-diff[]
+       These modes can be given as a comma separated list:
 +
 --
 ignore-space-at-eol::
diff --git a/diff.c b/diff.c
index 7810a4733f8f230af54d1d8b8d96484ebea3a2bc..5089c6eb3a4fa754f1e0678970228601cc9b3850 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -35,6 +35,7 @@ static int diff_rename_limit_default = 400;
 static int diff_suppress_blank_empty;
 static int diff_use_color_default = -1;
 static int diff_color_moved_default;
+static int diff_color_moved_ws_default;
 static int diff_context_default = 3;
 static int diff_interhunk_context_default;
 static const char *diff_word_regex_cfg;
@@ -332,6 +333,13 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)
                diff_color_moved_default = cm;
                return 0;
        }
+       if (!strcmp(var, "diff.colormovedws")) {
+               int cm = parse_color_moved_ws(value);
+               if (cm < 0)
+                       return -1;
+               diff_color_moved_ws_default = cm;
+               return 0;
+       }
        if (!strcmp(var, "diff.context")) {
                diff_context_default = git_config_int(var, value);
                if (diff_context_default < 0)
@@ -4327,6 +4335,7 @@ void diff_setup(struct diff_options *options)
        }
 
        options->color_moved = diff_color_moved_default;
+       options->color_moved_ws_handling = diff_color_moved_ws_default;
 }
 
 void diff_setup_done(struct diff_options *options)