summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 9afa2d4)
raw | patch | inline | side by side (parent: 9afa2d4)
author | J. Bruce Fields <bfields@citi.umich.edu> | |
Sun, 16 Dec 2007 16:31:41 +0000 (11:31 -0500) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Sun, 16 Dec 2007 21:07:58 +0000 (13:07 -0800) |
Instead of highlighting the entire initial indent, highlight only the
problematic spaces.
In the case of an indent like ' \t \t' there may be multiple problematic
ranges, so it's easiest to emit the highlighting as we go instead of
trying rember disjoint ranges and do it all at the end.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
problematic spaces.
In the case of an indent like ' \t \t' there may be multiple problematic
ranges, so it's easiest to emit the highlighting as we go instead of
trying rember disjoint ranges and do it all at the end.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
ws.c | patch | blob | history |
index aabd50902b70a19c459fad9c8c22954e0685227c..d09b9df89a7e19367640d4c6ad64ff828d01d26f 100644 (file)
--- a/ws.c
+++ b/ws.c
continue;
if (line[i] != '\t')
break;
- if ((ws_rule & WS_SPACE_BEFORE_TAB) && written < i)
+ if ((ws_rule & WS_SPACE_BEFORE_TAB) && written < i) {
result |= WS_SPACE_BEFORE_TAB;
+ if (stream) {
+ fputs(ws, stream);
+ fwrite(line + written, i - written, 1, stream);
+ fputs(reset, stream);
+ }
+ } else if (stream)
+ fwrite(line + written, i - written, 1, stream);
+ if (stream)
+ fwrite(line + i, 1, 1, stream);
written = i + 1;
}
/* Check for indent using non-tab. */
- if ((ws_rule & WS_INDENT_WITH_NON_TAB) && i - written >= 8)
+ if ((ws_rule & WS_INDENT_WITH_NON_TAB) && i - written >= 8) {
result |= WS_INDENT_WITH_NON_TAB;
-
- if (stream) {
- /* Highlight errors in leading whitespace. */
- if ((result & WS_SPACE_BEFORE_TAB) ||
- (result & WS_INDENT_WITH_NON_TAB)) {
+ if (stream) {
fputs(ws, stream);
- fwrite(line, written, 1, stream);
+ fwrite(line + written, i - written, 1, stream);
fputs(reset, stream);
}
+ written = i;
+ }
+ if (stream) {
/* Now the rest of the line starts at written.
* The non-highlighted part ends at trailing_whitespace. */
if (trailing_whitespace == -1)