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>
Johannes Schindelin committed
Oct 29, 2009 at 11:45 UTC
a4ca1465ec8afee798bf8f11d727179ca3da64a9
2 files changed
+7
-1
diff.c
+6
@@ -656,6 +656,12 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
656
for (i = 0; i < len && line[i] == '@'; i++)
657
;
658
if (2 <= i && i < len && line[i] == ' ') {
659
+ /* flush --color-words even for --unified=0 */
660
+ if (ecbdata->diff_words &&
661
+ (ecbdata->diff_words->minus.text.size ||
662
+ ecbdata->diff_words->plus.text.size))
663
+ diff_words_show(ecbdata->diff_words);
664
+
665
ecbdata->nparents = i - 1;
666
len = sane_truncate_line(ecbdata, line, len);
667
emit_line(ecbdata->file,
t/t4034-diff-words.sh
+1
-1
@@ -77,7 +77,7 @@ cat > expect <<\EOF
77
<GREEN>aeff = aeff * ( aaa )<RESET>
78
EOF
79
80
-test_expect_failure 'word diff without context' '
80
+test_expect_success 'word diff without context' '
81
82
word_diff --color-words --unified=0
83