]> Kevux Git Server - rit/commitdiff
diff --color-words -U0: fix the location of hunk headers
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Thu, 29 Oct 2009 10:45:03 +0000 (11:45 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 30 Oct 2009 16:42:56 +0000 (09:42 -0700)
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>
diff.c
t/t4034-diff-words.sh

diff --git a/diff.c b/diff.c
index e1be189..b7ecfe3 100644 (file)
--- a/diff.c
+++ b/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,
index 82240cf..21db6e9 100755 (executable)
@@ -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