On Sat, May 10, 2008 at 5:02 PM, Ping Yin <pkufranky@gmail.com> wrote:
With following patch, the diff output becomes (i don't know which one is better)
OpenOffice.org has {+a }user setting for defining the minimum length for
words to be hyphenated. By default the word length is counted from the
whole word - even for compound words. For example the {compound +}word
'elokuvalippu' is {+considered }12 characters long. The word will be
hyphenated like
'elo-ku-va-lip-pu' in all cases when the minimum word length is set to
12 or less. If the minimum length is set to 13 or more the word is not
hyphenated at all.
diff --git a/diff.c b/diff.c
index 51048c6..06fbace 100644
--- a/diff.c
+++ b/diff.c
@@ -446,6 +446,7 @@ struct diff_words_data {
struct xdiff_emit_state xm;
struct strbuf minus;
struct strbuf plus;
+ int suppressed_newline;
FILE *file;
};
@@ -480,12 +481,16 @@ static void fn_out_diff_words_aux(
/* A token */
line += 2;
len -= 3; /* drop the trailing LF */
+ emit_line(diff_words->file, set, reset, line, len);
} else {
/* A real LF */
- line++;
- len--;
+ if (diff_words->suppressed_newline || line[0] == ' ') {
+ diff_words->suppressed_newline = 0;
+ emit_line(diff_words->file, set, reset, "\n", 1);
+ }
+ else
+ diff_words->suppressed_newline = 1;
}
- emit_line(diff_words->file, set, reset, line, len);
}
/* this executes the word diff on the accumulated buffers */
@@ -510,8 +515,14 @@ static void diff_words_show(
ecb.outf = xdiff_outf;
ecb.priv = diff_words;
diff_words->xm.consume = fn_out_diff_words_aux;
+ diff_words->suppressed_newline = 0;
xdi_diff(&minus, &plus, &xpp, &xecfg, &ecb);
+ if (diff_words->suppressed_newline) {
+ putc('\n', diff_words->file);
+ diff_words->suppressed_newline = 0;
+ }
+
free(minus.ptr);
free(plus.ptr);
}
--
Ping Yin
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html