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)
|
const char *reset, const char *ws)
|
||||||
{
|
{
|
||||||
unsigned result = 0;
|
unsigned result = 0;
|
||||||
int leading_space = -1;
|
int written = 0;
|
||||||
int trailing_whitespace = -1;
|
int trailing_whitespace = -1;
|
||||||
int trailing_newline = 0;
|
int trailing_newline = 0;
|
||||||
int i;
|
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. */
|
/* Check for space before tab in initial indent. */
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
if (line[i] == ' ') {
|
if (line[i] == ' ') {
|
||||||
leading_space = i;
|
written = i + 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (line[i] != '\t')
|
if (line[i] != '\t')
|
||||||
break;
|
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;
|
result |= WS_SPACE_BEFORE_TAB;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for indent using non-tab. */
|
/* 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;
|
result |= WS_INDENT_WITH_NON_TAB;
|
||||||
|
|
||||||
if (stream) {
|
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) ||
|
if ((result & WS_SPACE_BEFORE_TAB) ||
|
||||||
(result & WS_INDENT_WITH_NON_TAB)) {
|
(result & WS_INDENT_WITH_NON_TAB)) {
|
||||||
fputs(ws, stream);
|
fputs(ws, stream);
|
||||||
fwrite(line, leading_space + 1, 1, stream);
|
fwrite(line, written, 1, stream);
|
||||||
fputs(reset, 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. */
|
* The non-highlighted part ends at trailing_whitespace. */
|
||||||
if (trailing_whitespace == -1)
|
if (trailing_whitespace == -1)
|
||||||
trailing_whitespace = len;
|
trailing_whitespace = len;
|
||||||
|
|
||||||
/* Emit non-highlighted (middle) segment. */
|
/* Emit non-highlighted (middle) segment. */
|
||||||
if (trailing_whitespace - leading_space > 0) {
|
if (trailing_whitespace - written > 0) {
|
||||||
fputs(set, stream);
|
fputs(set, stream);
|
||||||
fwrite(line + leading_space,
|
fwrite(line + written,
|
||||||
trailing_whitespace - leading_space, 1, stream);
|
trailing_whitespace - written, 1, stream);
|
||||||
fputs(reset, stream);
|
fputs(reset, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user