Subject: Re: [PATCH v2 4/5] Make boundary characters for --color-words configurable

From: Jakub Narebski <[email-masked]>
Date: Mon, 12 May 2008 21:57:55 +0200

Junio C Hamano wrote:
> Jakub Narebski <[email-masked]> writes:
>> "Ping Yin" <[email-masked]> writes:
>>>
>>> To achieve the best, we have to find the pairs of lines (one minus and
>>> one plus for each pair) which most match each other, and then do the
>>> word diff for each pair.
>>
>> Wouldn't be enough to treat run of plus/minus lines as a single block,
>> tokenize, do token-based (as opposed to line-based) diff, then show it
>> using linebreaks of the destination file (pluses line)?
> 
> I tried the "using linebreaks" but I discarded it because I did not think
> it would work.  If we rewrite the last three lines above with this single
> line:
> 
>> Wouldn't be enough to use magic?
> 
> and apply that algorithm between the two, then we would get a long single
> line that has words painted in red, two lines worth, followed by green "to
> use magic?"  and finally an end-of-line.

It looks then like inserting (retaining?) newlines in word/token based
--color-words output isn't simple.  It would have to produce readable
output both for the case you stated/mentioned, and for the opposite case
(replacing single line by multiple lines).  What's even more difficult,
it should produce clear output for a simple case of rewrapping output,
e.g. the following as replacement.

>> Wouldn't be enough to treat run of plus/minus lines as a single
>> block, tokenize, do token-based (as opposed to line-based) diff,
>> then show it using linebreaks of the destination file (pluses
>> line)? 

Gaahh... I don't think this (word diff/token diff) is something computer
science has worked on?
-- 
Jakub Narebski
Poland