diff: add interhunk context config option
The --inter-hunk-context= option was added in commit 6d0e674a57
("diff: add option to show context between close hunks"). This patch
allows configuring a default for this option.
Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d7dffce1ce
commit
c488867793
@ -60,6 +60,12 @@ diff.context::
|
|||||||
Generate diffs with <n> lines of context instead of the default
|
Generate diffs with <n> lines of context instead of the default
|
||||||
of 3. This value is overridden by the -U option.
|
of 3. This value is overridden by the -U option.
|
||||||
|
|
||||||
|
diff.interHunkContext::
|
||||||
|
Show the context between diff hunks, up to the specified number
|
||||||
|
of lines, thereby fusing the hunks that are close to each other.
|
||||||
|
This value serves as the default for the `--inter-hunk-context`
|
||||||
|
command line option.
|
||||||
|
|
||||||
diff.external::
|
diff.external::
|
||||||
If this config variable is set, diff generation is not
|
If this config variable is set, diff generation is not
|
||||||
performed using the internal diff machinery, but using the
|
performed using the internal diff machinery, but using the
|
||||||
|
@ -511,6 +511,8 @@ endif::git-format-patch[]
|
|||||||
--inter-hunk-context=<lines>::
|
--inter-hunk-context=<lines>::
|
||||||
Show the context between diff hunks, up to the specified number
|
Show the context between diff hunks, up to the specified number
|
||||||
of lines, thereby fusing hunks that are close to each other.
|
of lines, thereby fusing hunks that are close to each other.
|
||||||
|
Defaults to `diff.interHunkContext` or 0 if the config option
|
||||||
|
is unset.
|
||||||
|
|
||||||
-W::
|
-W::
|
||||||
--function-context::
|
--function-context::
|
||||||
|
8
diff.c
8
diff.c
@ -32,6 +32,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_context_default = 3;
|
static int diff_context_default = 3;
|
||||||
|
static int diff_interhunk_context_default;
|
||||||
static const char *diff_word_regex_cfg;
|
static const char *diff_word_regex_cfg;
|
||||||
static const char *external_diff_cmd_cfg;
|
static const char *external_diff_cmd_cfg;
|
||||||
static const char *diff_order_file_cfg;
|
static const char *diff_order_file_cfg;
|
||||||
@ -239,6 +240,12 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)
|
|||||||
return -1;
|
return -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(var, "diff.interhunkcontext")) {
|
||||||
|
diff_interhunk_context_default = git_config_int(var, value);
|
||||||
|
if (diff_interhunk_context_default < 0)
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (!strcmp(var, "diff.renames")) {
|
if (!strcmp(var, "diff.renames")) {
|
||||||
diff_detect_rename_default = git_config_rename(var, value);
|
diff_detect_rename_default = git_config_rename(var, value);
|
||||||
return 0;
|
return 0;
|
||||||
@ -3362,6 +3369,7 @@ void diff_setup(struct diff_options *options)
|
|||||||
options->rename_limit = -1;
|
options->rename_limit = -1;
|
||||||
options->dirstat_permille = diff_dirstat_permille_default;
|
options->dirstat_permille = diff_dirstat_permille_default;
|
||||||
options->context = diff_context_default;
|
options->context = diff_context_default;
|
||||||
|
options->interhunkcontext = diff_interhunk_context_default;
|
||||||
options->ws_error_highlight = ws_error_highlight_default;
|
options->ws_error_highlight = ws_error_highlight_default;
|
||||||
DIFF_OPT_SET(options, RENAME_EMPTY);
|
DIFF_OPT_SET(options, RENAME_EMPTY);
|
||||||
|
|
||||||
|
@ -16,11 +16,15 @@ f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
t() {
|
t() {
|
||||||
|
use_config=
|
||||||
|
git config --unset diff.interHunkContext
|
||||||
|
|
||||||
case $# in
|
case $# in
|
||||||
4) hunks=$4; cmd="diff -U$3";;
|
4) hunks=$4; cmd="diff -U$3";;
|
||||||
5) hunks=$5; cmd="diff -U$3 --inter-hunk-context=$4";;
|
5) hunks=$5; cmd="diff -U$3 --inter-hunk-context=$4";;
|
||||||
|
6) hunks=$5; cmd="diff -U$3"; git config diff.interHunkContext $4; use_config="(diff.interHunkContext=$4) ";;
|
||||||
esac
|
esac
|
||||||
label="$cmd, $1 common $2"
|
label="$use_config$cmd, $1 common $2"
|
||||||
file=f$1
|
file=f$1
|
||||||
expected=expected.$file.$3.$hunks
|
expected=expected.$file.$3.$hunks
|
||||||
|
|
||||||
@ -89,4 +93,25 @@ t 9 lines 3 2
|
|||||||
t 9 lines 3 2 2
|
t 9 lines 3 2 2
|
||||||
t 9 lines 3 3 1
|
t 9 lines 3 3 1
|
||||||
|
|
||||||
|
# use diff.interHunkContext?
|
||||||
|
t 1 line 0 0 2 config
|
||||||
|
t 1 line 0 1 1 config
|
||||||
|
t 1 line 0 2 1 config
|
||||||
|
t 9 lines 3 3 1 config
|
||||||
|
t 2 lines 0 0 2 config
|
||||||
|
t 2 lines 0 1 2 config
|
||||||
|
t 2 lines 0 2 1 config
|
||||||
|
t 3 lines 1 0 2 config
|
||||||
|
t 3 lines 1 1 1 config
|
||||||
|
t 3 lines 1 2 1 config
|
||||||
|
t 9 lines 3 2 2 config
|
||||||
|
t 9 lines 3 3 1 config
|
||||||
|
|
||||||
|
test_expect_success 'diff.interHunkContext invalid' '
|
||||||
|
git config diff.interHunkContext asdf &&
|
||||||
|
test_must_fail git diff &&
|
||||||
|
git config diff.interHunkContext -1 &&
|
||||||
|
test_must_fail git diff
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user