whitespace: minor cleanup
The variable leading_space is initially used to represent the index of the last space seen before a non-space. Then later it represents the index of the first non-indent character. It will prove simpler to replace it by a variable representing a number of bytes. Eventually it will represent the number of bytes written so far (in the stream != NULL case). Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
1020999a98
commit
954ecd4353
21
ws.c
21
ws.c
@ -121,7 +121,7 @@ unsigned check_and_emit_line(const char *line, int len, unsigned ws_rule,
|
||||
const char *reset, const char *ws)
|
||||
{
|
||||
unsigned result = 0;
|
||||
int leading_space = -1;
|
||||
int written = 0;
|
||||
int trailing_whitespace = -1;
|
||||
int trailing_newline = 0;
|
||||
int i;
|
||||
@ -147,18 +147,18 @@ 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] == ' ') {
|
||||
leading_space = i;
|
||||
written = i + 1;
|
||||
continue;
|
||||
}
|
||||
if (line[i] != '\t')
|
||||
break;
|
||||
if ((ws_rule & WS_SPACE_BEFORE_TAB) && (leading_space != -1))
|
||||
if ((ws_rule & WS_SPACE_BEFORE_TAB) && (written != 0))
|
||||
result |= WS_SPACE_BEFORE_TAB;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check for indent using non-tab. */
|
||||
if ((ws_rule & WS_INDENT_WITH_NON_TAB) && leading_space >= 7)
|
||||
if ((ws_rule & WS_INDENT_WITH_NON_TAB) && written >= 8)
|
||||
result |= WS_INDENT_WITH_NON_TAB;
|
||||
|
||||
if (stream) {
|
||||
@ -166,23 +166,20 @@ unsigned check_and_emit_line(const char *line, int len, unsigned ws_rule,
|
||||
if ((result & WS_SPACE_BEFORE_TAB) ||
|
||||
(result & WS_INDENT_WITH_NON_TAB)) {
|
||||
fputs(ws, stream);
|
||||
fwrite(line, leading_space + 1, 1, stream);
|
||||
fwrite(line, written, 1, stream);
|
||||
fputs(reset, stream);
|
||||
leading_space++;
|
||||
}
|
||||
else
|
||||
leading_space = 0;
|
||||
|
||||
/* Now the rest of the line starts at leading_space.
|
||||
/* Now the rest of the line starts at written.
|
||||
* The non-highlighted part ends at trailing_whitespace. */
|
||||
if (trailing_whitespace == -1)
|
||||
trailing_whitespace = len;
|
||||
|
||||
/* Emit non-highlighted (middle) segment. */
|
||||
if (trailing_whitespace - leading_space > 0) {
|
||||
if (trailing_whitespace - written > 0) {
|
||||
fputs(set, stream);
|
||||
fwrite(line + leading_space,
|
||||
trailing_whitespace - leading_space, 1, stream);
|
||||
fwrite(line + written,
|
||||
trailing_whitespace - written, 1, stream);
|
||||
fputs(reset, stream);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user