When diff is invoked with --color-words (w/o =regex), use the regular expression the user has configured as diff.color-words. diff drivers configured via attributes take precedence over the diff.color-words setting. If the user wants to change them, they have their own configuration variables. Signed-off-by: Boyd Stephen Smith Jr <bss@xxxxxxxxxxxxxxxxx> --- On Monday 19 January 2009, "Boyd Stephen Smith Jr." <bss@xxxxxxxxxxxxxxxxx> wrote about '[PATCH] Add tests for diff.color-words configuration option.': >Yes, I also think I'll work on the actual implementation, but I'd be glad >to have someone beat me to it. I'm not sure why the diff is crazy long. Here's a patch that makes the added test case succeed, but I think it and the tests themselves should probably be reworked. Hopefully, this doesn't show up in quoted-printable format (damn you kmail). While it might be a corner-case, we probably need a test of some sort for when a user/system has a global diff.color-words configuration wants to have a single repository (or single run of 'git diff') use the default algorithm. I.e. run as if no regex had been set. diff.c | 5 +++++ t/t4034-diff-words.sh | 2 +- 2 files changed, 6 insertions(+), 1 deletions(-) diff --git a/diff.c b/diff.c index 9fcde96..c53e1d1 100644 --- a/diff.c +++ b/diff.c @@ -23,6 +23,7 @@ static int diff_detect_rename_default; static int diff_rename_limit_default = 200; static int diff_suppress_blank_empty; int diff_use_color_default = -1; +static const char *diff_color_words_cfg = NULL; static const char *external_diff_cmd_cfg; int diff_auto_refresh_index = 1; static int diff_mnemonic_prefix; @@ -92,6 +93,8 @@ int git_diff_ui_config(const char *var, const char *value, void *cb) } if (!strcmp(var, "diff.external")) return git_config_string(&external_diff_cmd_cfg, var, value); + if (!strcmp(var, "diff.color-words")) + return git_config_string(&diff_color_words_cfg, var, value); return git_diff_basic_config(var, value, cb); } @@ -1550,6 +1553,8 @@ static void builtin_diff(const char *name_a, o->word_regex = userdiff_word_regex(one); if (!o->word_regex) o->word_regex = userdiff_word_regex(two); + if (!o->word_regex) + o->word_regex = diff_color_words_cfg; if (o->word_regex) { ecbdata.diff_words->word_regex = (regex_t *) xmalloc(sizeof(regex_t)); diff --git a/t/t4034-diff-words.sh b/t/t4034-diff-words.sh index 6ebce9d..a207d9e 100755 --- a/t/t4034-diff-words.sh +++ b/t/t4034-diff-words.sh @@ -105,7 +105,7 @@ a = b + c<RESET> EOF cp expect.non-whitespace-is-word expect -test_expect_failure 'use default supplied by config' ' +test_expect_success 'use default supplied by config' ' word_diff --color-words -- 1.5.6.5 -- Boyd Stephen Smith Jr. ,= ,-_-. =. bss@xxxxxxxxxxxxxxxxx ((_/)o o(\_)) ICQ: 514984 YM/AIM: DaTwinkDaddy `-'(. .)`-' http://iguanasuicide.net/ \_/ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html