diff.c: offer config option to control ws handling in move detection

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Stefan Beller 2018-07-18 12:31:56 -07:00 committed by Junio C Hamano
parent ca1f4ae4df
commit 626c0b5d39
3 changed files with 19 additions and 2 deletions

View File

@ -1122,6 +1122,11 @@ diff.colorMoved::
true the default color mode will be used. When set to false, true the default color mode will be used. When set to false,
moved lines are not colored. 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>:: color.diff.<slot>::
Use customized color for diff colorization. `<slot>` specifies Use customized color for diff colorization. `<slot>` specifies
which part of the patch to use the specified color, and is one which part of the patch to use the specified color, and is one

View File

@ -294,8 +294,11 @@ dimmed_zebra::


--color-moved-ws=<modes>:: --color-moved-ws=<modes>::
This configures how white spaces are ignored when performing the This configures how white spaces are ignored when performing the
move detection for `--color-moved`. These modes can be given move detection for `--color-moved`.
as a comma separated list: 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:: ignore-space-at-eol::

9
diff.c
View File

@ -35,6 +35,7 @@ static int diff_rename_limit_default = 400;
static int diff_suppress_blank_empty; static int diff_suppress_blank_empty;
static int diff_use_color_default = -1; static int diff_use_color_default = -1;
static int diff_color_moved_default; static int diff_color_moved_default;
static int diff_color_moved_ws_default;
static int diff_context_default = 3; static int diff_context_default = 3;
static int diff_interhunk_context_default; static int diff_interhunk_context_default;
static const char *diff_word_regex_cfg; 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; diff_color_moved_default = cm;
return 0; 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")) { if (!strcmp(var, "diff.context")) {
diff_context_default = git_config_int(var, value); diff_context_default = git_config_int(var, value);
if (diff_context_default < 0) 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 = diff_color_moved_default;
options->color_moved_ws_handling = diff_color_moved_ws_default;
} }


void diff_setup_done(struct diff_options *options) void diff_setup_done(struct diff_options *options)