diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-01-14 23:29:31 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-01-14 23:29:31 (GMT) |
commit | 932b867be0cec606ec7355fc25de13ace42f4c71 (patch) | |
tree | c1731816dc6bc7dbfc747bc0a5dfd441f0563b57 /diff.c | |
parent | 20b3bc155864730380e8186f7d71ee2196a79603 (diff) | |
parent | d173e799ea8fae7d6e4649b763d32d5f0ba82011 (diff) | |
download | git-932b867be0cec606ec7355fc25de13ace42f4c71.zip git-932b867be0cec606ec7355fc25de13ace42f4c71.tar.gz git-932b867be0cec606ec7355fc25de13ace42f4c71.tar.bz2 |
Merge branch 'sb/diff-color-moved-config-option-fixup'
Minor inconsistency fix.
* sb/diff-color-moved-config-option-fixup:
diff: align move detection error handling with other options
Diffstat (limited to 'diff.c')
-rw-r--r-- | diff.c | 25 |
1 files changed, 16 insertions, 9 deletions
@@ -291,7 +291,7 @@ static int parse_color_moved(const char *arg) return error(_("color moved setting must be one of 'no', 'default', 'blocks', 'zebra', 'dimmed-zebra', 'plain'")); } -static int parse_color_moved_ws(const char *arg) +static unsigned parse_color_moved_ws(const char *arg) { int ret = 0; struct string_list l = STRING_LIST_INIT_DUP; @@ -312,15 +312,19 @@ static int parse_color_moved_ws(const char *arg) ret |= XDF_IGNORE_WHITESPACE; else if (!strcmp(sb.buf, "allow-indentation-change")) ret |= COLOR_MOVED_WS_ALLOW_INDENTATION_CHANGE; - else - error(_("ignoring unknown color-moved-ws mode '%s'"), sb.buf); + else { + ret |= COLOR_MOVED_WS_ERROR; + error(_("unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'"), sb.buf); + } strbuf_release(&sb); } if ((ret & COLOR_MOVED_WS_ALLOW_INDENTATION_CHANGE) && - (ret & XDF_WHITESPACE_FLAGS)) - die(_("color-moved-ws: allow-indentation-change cannot be combined with other white space modes")); + (ret & XDF_WHITESPACE_FLAGS)) { + error(_("color-moved-ws: allow-indentation-change cannot be combined with other white space modes")); + ret |= COLOR_MOVED_WS_ERROR; + } string_list_clear(&l, 0); @@ -341,8 +345,8 @@ int git_diff_ui_config(const char *var, const char *value, void *cb) return 0; } if (!strcmp(var, "diff.colormovedws")) { - int cm = parse_color_moved_ws(value); - if (cm < 0) + unsigned cm = parse_color_moved_ws(value); + if (cm & COLOR_MOVED_WS_ERROR) return -1; diff_color_moved_ws_default = cm; return 0; @@ -5034,10 +5038,13 @@ int diff_opt_parse(struct diff_options *options, else if (skip_prefix(arg, "--color-moved=", &arg)) { int cm = parse_color_moved(arg); if (cm < 0) - die("bad --color-moved argument: %s", arg); + return error("bad --color-moved argument: %s", arg); options->color_moved = cm; } else if (skip_prefix(arg, "--color-moved-ws=", &arg)) { - options->color_moved_ws_handling = parse_color_moved_ws(arg); + unsigned cm = parse_color_moved_ws(arg); + if (cm & COLOR_MOVED_WS_ERROR) + return -1; + options->color_moved_ws_handling = cm; } else if (skip_to_optional_arg_default(arg, "--color-words", &options->word_regex, NULL)) { options->use_color = 1; options->word_diff = DIFF_WORDS_COLOR; |