Re: [PATCH 5/5] diff: simplify parsing of diff.colormovedws
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jul 31, 2025, 19:45 UTC
- Message-ID
- <CAPig+cSed8ZOfLxDGYVeWhA_46FQ8LZ4E0+1KQu=V7NQZmLZxw@mail.gmail.com>
- In-Reply-To
- <20250731063949.1601669-6-gitster@pobox.com>
On Thu, Jul 31, 2025 at 2:40 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 5 quoted lines
> The code to parse this configuration variable, whose value is a > comma separated known tokens like "ignore-space-change" and > "ignore-all-space", uses string_list_split() to split the value int > pieces, and then places each piece of string in a strbuf to trim, > before comparing the result with the list of known tokens.
s/int/into/
Show 39 quoted lines
> Thanks to the previous steps, now string_list_split() knows to trim
> the resulting pieces in the string list. Use it to simplify the
> code.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> diff --git a/diff.c b/diff.c
> @@ -327,29 +327,23 @@ static unsigned parse_color_moved_ws(const char *arg)
> - string_list_split(&l, arg, ",", -1);
> + string_list_split_f(&l, arg, ",", -1, STRING_LIST_SPLIT_TRIM);
>
> for_each_string_list_item(i, &l) {
> - struct strbuf sb = STRBUF_INIT;
> - strbuf_addstr(&sb, i->string);
> - strbuf_trim(&sb);
> -
> - if (!strcmp(sb.buf, "no"))
> + if (!strcmp(i->string, "no"))
> ret = 0;
> - else if (!strcmp(sb.buf, "ignore-space-change"))
> + else if (!strcmp(i->string, "ignore-space-change"))
> ret |= XDF_IGNORE_WHITESPACE_CHANGE;
> - else if (!strcmp(sb.buf, "ignore-space-at-eol"))
> + else if (!strcmp(i->string, "ignore-space-at-eol"))
> ret |= XDF_IGNORE_WHITESPACE_AT_EOL;
> - else if (!strcmp(sb.buf, "ignore-all-space"))
> + else if (!strcmp(i->string, "ignore-all-space"))
> ret |= XDF_IGNORE_WHITESPACE;
> - else if (!strcmp(sb.buf, "allow-indentation-change"))
> + else if (!strcmp(i->string, "allow-indentation-change"))
> ret |= COLOR_MOVED_WS_ALLOW_INDENTATION_CHANGE;
> 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);
> + error(_("unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'"), i->string);
> }
> -
> - strbuf_release(&sb);
> }An unfortunately noisy diff, but it can't be helped. The end result is a pleasant improvement.