@matheusbsbs / matheus-bagliano / commits / a4ca1465ec
Fork 0

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