mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
Reserve a few more bits in the diff flags word to be used for future whitespace rules. Add WS_INCOMPLETE_LINE without implementing the behaviour (yet). Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@@ -626,6 +626,8 @@ core.whitespace::
|
|||||||
part of the line terminator, i.e. with it, `trailing-space`
|
part of the line terminator, i.e. with it, `trailing-space`
|
||||||
does not trigger if the character before such a carriage-return
|
does not trigger if the character before such a carriage-return
|
||||||
is not a whitespace (not enabled by default).
|
is not a whitespace (not enabled by default).
|
||||||
|
* `incomplete-line` treats the last line of a file that is missing the
|
||||||
|
newline at the end as an error (not enabled by default).
|
||||||
* `tabwidth=<n>` tells how many character positions a tab occupies; this
|
* `tabwidth=<n>` tells how many character positions a tab occupies; this
|
||||||
is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
|
is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
|
||||||
errors. The default tab width is 8. Allowed values are 1 to 63.
|
errors. The default tab width is 8. Allowed values are 1 to 63.
|
||||||
|
|||||||
16
diff.c
16
diff.c
@@ -804,15 +804,15 @@ enum diff_symbol {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Flags for content lines:
|
* Flags for content lines:
|
||||||
* 0..11 are whitespace rules (see ws.h)
|
* 0..15 are whitespace rules (see ws.h)
|
||||||
* 12..14 are WSEH_NEW | WSEH_CONTEXT | WSEH_OLD
|
* 16..18 are WSEH_NEW | WSEH_CONTEXT | WSEH_OLD
|
||||||
* 16 is marking if the line is blank at EOF
|
* 19 is marking if the line is blank at EOF
|
||||||
* 17..19 are used for color-moved.
|
* 20..22 are used for color-moved.
|
||||||
*/
|
*/
|
||||||
#define DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF (1<<16)
|
#define DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF (1<<19)
|
||||||
#define DIFF_SYMBOL_MOVED_LINE (1<<17)
|
#define DIFF_SYMBOL_MOVED_LINE (1<<20)
|
||||||
#define DIFF_SYMBOL_MOVED_LINE_ALT (1<<18)
|
#define DIFF_SYMBOL_MOVED_LINE_ALT (1<<21)
|
||||||
#define DIFF_SYMBOL_MOVED_LINE_UNINTERESTING (1<<19)
|
#define DIFF_SYMBOL_MOVED_LINE_UNINTERESTING (1<<22)
|
||||||
|
|
||||||
#define DIFF_SYMBOL_CONTENT_WS_MASK (WSEH_NEW | WSEH_OLD | WSEH_CONTEXT | WS_RULE_MASK)
|
#define DIFF_SYMBOL_CONTENT_WS_MASK (WSEH_NEW | WSEH_OLD | WSEH_CONTEXT | WS_RULE_MASK)
|
||||||
|
|
||||||
|
|||||||
6
diff.h
6
diff.h
@@ -331,9 +331,9 @@ struct diff_options {
|
|||||||
|
|
||||||
int ita_invisible_in_index;
|
int ita_invisible_in_index;
|
||||||
/* white-space error highlighting */
|
/* white-space error highlighting */
|
||||||
#define WSEH_NEW (1<<12)
|
#define WSEH_NEW (1<<16)
|
||||||
#define WSEH_CONTEXT (1<<13)
|
#define WSEH_CONTEXT (1<<17)
|
||||||
#define WSEH_OLD (1<<14)
|
#define WSEH_OLD (1<<18)
|
||||||
unsigned ws_error_highlight;
|
unsigned ws_error_highlight;
|
||||||
const char *prefix;
|
const char *prefix;
|
||||||
int prefix_length;
|
int prefix_length;
|
||||||
|
|||||||
6
ws.c
6
ws.c
@@ -26,6 +26,7 @@ static struct whitespace_rule {
|
|||||||
{ "blank-at-eol", WS_BLANK_AT_EOL, 0 },
|
{ "blank-at-eol", WS_BLANK_AT_EOL, 0 },
|
||||||
{ "blank-at-eof", WS_BLANK_AT_EOF, 0 },
|
{ "blank-at-eof", WS_BLANK_AT_EOF, 0 },
|
||||||
{ "tab-in-indent", WS_TAB_IN_INDENT, 0, 1 },
|
{ "tab-in-indent", WS_TAB_IN_INDENT, 0, 1 },
|
||||||
|
{ "incomplete-line", WS_INCOMPLETE_LINE, 0, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned parse_whitespace_rule(const char *string)
|
unsigned parse_whitespace_rule(const char *string)
|
||||||
@@ -139,6 +140,11 @@ char *whitespace_error_string(unsigned ws)
|
|||||||
strbuf_addstr(&err, ", ");
|
strbuf_addstr(&err, ", ");
|
||||||
strbuf_addstr(&err, "tab in indent");
|
strbuf_addstr(&err, "tab in indent");
|
||||||
}
|
}
|
||||||
|
if (ws & WS_INCOMPLETE_LINE) {
|
||||||
|
if (err.len)
|
||||||
|
strbuf_addstr(&err, ", ");
|
||||||
|
strbuf_addstr(&err, "no newline at the end of file");
|
||||||
|
}
|
||||||
return strbuf_detach(&err, NULL);
|
return strbuf_detach(&err, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
3
ws.h
3
ws.h
@@ -15,13 +15,14 @@ struct strbuf;
|
|||||||
#define WS_CR_AT_EOL (1<<9)
|
#define WS_CR_AT_EOL (1<<9)
|
||||||
#define WS_BLANK_AT_EOF (1<<10)
|
#define WS_BLANK_AT_EOF (1<<10)
|
||||||
#define WS_TAB_IN_INDENT (1<<11)
|
#define WS_TAB_IN_INDENT (1<<11)
|
||||||
|
#define WS_INCOMPLETE_LINE (1<<12)
|
||||||
|
|
||||||
#define WS_TRAILING_SPACE (WS_BLANK_AT_EOL|WS_BLANK_AT_EOF)
|
#define WS_TRAILING_SPACE (WS_BLANK_AT_EOL|WS_BLANK_AT_EOF)
|
||||||
#define WS_DEFAULT_RULE (WS_TRAILING_SPACE|WS_SPACE_BEFORE_TAB|8)
|
#define WS_DEFAULT_RULE (WS_TRAILING_SPACE|WS_SPACE_BEFORE_TAB|8)
|
||||||
#define WS_TAB_WIDTH_MASK ((1<<6)-1)
|
#define WS_TAB_WIDTH_MASK ((1<<6)-1)
|
||||||
|
|
||||||
/* All WS_* -- when extended, adapt constants defined after diff.c:diff_symbol */
|
/* All WS_* -- when extended, adapt constants defined after diff.c:diff_symbol */
|
||||||
#define WS_RULE_MASK ((1<<12)-1)
|
#define WS_RULE_MASK ((1<<16)-1)
|
||||||
|
|
||||||
extern unsigned whitespace_rule_cfg;
|
extern unsigned whitespace_rule_cfg;
|
||||||
unsigned whitespace_rule(struct index_state *, const char *);
|
unsigned whitespace_rule(struct index_state *, const char *);
|
||||||
|
|||||||
Reference in New Issue
Block a user