Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- This is the cherry on the cake named sb/diff-color-move-more. Documentation/config.txt | 5 +++++ Documentation/diff-options.txt | 7 +++++-- diff.c | 9 +++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index 2659153cb37..6ca7118b018 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -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 diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 143acd9417e..8da7fed4e22 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -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 f51f0ac32f4..9de917108d8 100644 --- 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) -- 2.18.0.233.g985f88cf7e-goog