diff options
author | J. Bruce Fields <bfields@citi.umich.edu> | 2007-12-16 11:31:40 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-12-16 13:07:49 -0800 |
commit | 9afa2d4aa9423ab594c7281cc2360df55498a407 (patch) | |
tree | 4ae56dfa0b7d028c7b795b23411e01619366b4ef /ws.c | |
parent | 954ecd435389916643efeb5b1ade82250170c071 (diff) | |
download | git-9afa2d4aa9423ab594c7281cc2360df55498a407.tar.gz |
whitespace: fix initial-indent checking
After this patch, "written" counts the number of bytes up to and
including the most recently seen tab. This allows us to detect (and
count) spaces by comparing to "i".
This allows catching initial indents like '\t ' (a tab followed
by 8 spaces), while previously indent-with-non-tab caught only indents
that consisted entirely of spaces.
This also allows fixing an indent-with-non-tab regression, so we can
again detect indents like '\t \t'.
Also update tests to catch these cases.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'ws.c')
-rw-r--r-- | ws.c | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -146,19 +146,17 @@ unsigned check_and_emit_line(const char *line, int len, unsigned ws_rule, /* Check for space before tab in initial indent. */ for (i = 0; i < len; i++) { - if (line[i] == ' ') { - written = i + 1; + if (line[i] == ' ') continue; - } if (line[i] != '\t') break; - if ((ws_rule & WS_SPACE_BEFORE_TAB) && (written != 0)) + if ((ws_rule & WS_SPACE_BEFORE_TAB) && written < i) result |= WS_SPACE_BEFORE_TAB; - break; + written = i + 1; } /* Check for indent using non-tab. */ - if ((ws_rule & WS_INDENT_WITH_NON_TAB) && written >= 8) + if ((ws_rule & WS_INDENT_WITH_NON_TAB) && i - written >= 8) result |= WS_INDENT_WITH_NON_TAB; if (stream) { |