This series is getting bigger and bigger, unfortunately, just what I tried to avoid. But at least I am pretty comfortable with the readability of the result, and it adds tests -- finally. Changes relative to the last round: color_fwrite_lines() had problems with empty lines, and find_word_boundary() was replaced by find_word_boundaries(), which finds not only the end of the next word, but the start, too. The only "funny" thing I realized is that the lines which are output by emit_line() add a RESET at the end of the line, and I do not do that in color_fwrite_lines(). Can anybody think of undesired behavior as a consequence? Johannes Schindelin (4): Add color_fwrite_lines(), a function coloring each line individually color-words: refactor word splitting and use ALLOC_GROW() color-words: change algorithm to allow for 0-character word boundaries color-words: take an optional regular expression describing words Documentation/diff-options.txt | 6 +- color.c | 28 ++++++ color.h | 1 + diff.c | 203 ++++++++++++++++++++++++++-------------- diff.h | 1 + t/t4034-diff-words.sh | 86 +++++++++++++++++ 6 files changed, 253 insertions(+), 72 deletions(-) create mode 100755 t/t4034-diff-words.sh -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html