diff --color-words -U0: fix the location of hunk headers
Colored word diff without context lines firstly printed all the hunk headers among each other and then printed the diff. This was due to the code relying on getting at least one context line at the end of each hunk, where the colored words would be flushed (it is done that way to be able to ignore rewrapped lines). Noticed by Markus Heidelberg. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
168eff3c80
commit
a4ca1465ec
6
diff.c
6
diff.c
@ -656,6 +656,12 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
|
||||
for (i = 0; i < len && line[i] == '@'; i++)
|
||||
;
|
||||
if (2 <= i && i < len && line[i] == ' ') {
|
||||
/* flush --color-words even for --unified=0 */
|
||||
if (ecbdata->diff_words &&
|
||||
(ecbdata->diff_words->minus.text.size ||
|
||||
ecbdata->diff_words->plus.text.size))
|
||||
diff_words_show(ecbdata->diff_words);
|
||||
|
||||
ecbdata->nparents = i - 1;
|
||||
len = sane_truncate_line(ecbdata, line, len);
|
||||
emit_line(ecbdata->file,
|
||||
|
@ -77,7 +77,7 @@ cat > expect <<\EOF
|
||||
<GREEN>aeff = aeff * ( aaa )<RESET>
|
||||
EOF
|
||||
|
||||
test_expect_failure 'word diff without context' '
|
||||
test_expect_success 'word diff without context' '
|
||||
|
||||
word_diff --color-words --unified=0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user