Browse Source

Merge branch 'js/maint-diff-color-words'

* js/maint-diff-color-words:
  diff --color-words: bit of clean-up
  diff --color-words -U0: fix the location of hunk headers
  t4034-diff-words: add a test for word diff without context

Conflicts:
	diff.c
maint
Junio C Hamano 15 years ago
parent
commit
002a9ec005
  1. 20
      diff.c
  2. 20
      t/t4034-diff-words.sh

20
diff.c

@ -686,14 +686,18 @@ static void diff_words_show(struct diff_words_data *diff_words) @@ -686,14 +686,18 @@ static void diff_words_show(struct diff_words_data *diff_words)
diff_words->minus.text.size = diff_words->plus.text.size = 0;
}

/* In "color-words" mode, show word-diff of words accumulated in the buffer */
static void diff_words_flush(struct emit_callback *ecbdata)
{
if (ecbdata->diff_words->minus.text.size ||
ecbdata->diff_words->plus.text.size)
diff_words_show(ecbdata->diff_words);
}

static void free_diff_words_data(struct emit_callback *ecbdata)
{
if (ecbdata->diff_words) {
/* flush buffers */
if (ecbdata->diff_words->minus.text.size ||
ecbdata->diff_words->plus.text.size)
diff_words_show(ecbdata->diff_words);

diff_words_flush(ecbdata);
free (ecbdata->diff_words->minus.text.ptr);
free (ecbdata->diff_words->minus.orig);
free (ecbdata->diff_words->plus.text.ptr);
@ -773,6 +777,8 @@ static void fn_out_consume(void *priv, char *line, unsigned long len) @@ -773,6 +777,8 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
}

if (line[0] == '@') {
if (ecbdata->diff_words)
diff_words_flush(ecbdata);
len = sane_truncate_line(ecbdata, line, len);
find_lno(line, ecbdata);
emit_line(ecbdata->file,
@ -798,9 +804,7 @@ static void fn_out_consume(void *priv, char *line, unsigned long len) @@ -798,9 +804,7 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
&ecbdata->diff_words->plus);
return;
}
if (ecbdata->diff_words->minus.text.size ||
ecbdata->diff_words->plus.text.size)
diff_words_show(ecbdata->diff_words);
diff_words_flush(ecbdata);
line++;
len--;
emit_line(ecbdata->file, plain, reset, line, len);

20
t/t4034-diff-words.sh

@ -63,6 +63,26 @@ test_expect_success 'word diff with runs of whitespace' ' @@ -63,6 +63,26 @@ test_expect_success 'word diff with runs of whitespace' '

'

cat > expect <<\EOF
<WHITE>diff --git a/pre b/post<RESET>
<WHITE>index 330b04f..5ed8eff 100644<RESET>
<WHITE>--- a/pre<RESET>
<WHITE>+++ b/post<RESET>
<BROWN>@@ -1 +1 @@<RESET>
<RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET>
<BROWN>@@ -3,0 +4,4 @@ a = b + c<RESET>

<GREEN>aa = a<RESET>

<GREEN>aeff = aeff * ( aaa )<RESET>
EOF

test_expect_success 'word diff without context' '

word_diff --color-words --unified=0

'

cat > expect <<\EOF
<WHITE>diff --git a/pre b/post<RESET>
<WHITE>index 330b04f..5ed8eff 100644<RESET>

Loading…
Cancel
Save