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:
Johannes Schindelin 2009-10-29 11:45:03 +01:00 committed by Junio C Hamano
parent 168eff3c80
commit a4ca1465ec
2 changed files with 7 additions and 1 deletions

6
diff.c
View file

@ -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,

View 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