Fully automatic diff algoritms often fail in complicated cases. For example, they may be fooled by a repeating word: word at one side matches the same word in other position at other side, which leads to drastically big chunks of non-matching text. Other example happens with a big paragraph, surrounded by paragraphs that are almost identical to their counterparts: instead of matching these paragraphs and marking the middle paragraph as an inclusion, diff algorithms may try to match some parts of surrounding paragraphs with it, up to single letters.
So, I'm looking for an interactive iterative tool that allows manually setting match links between two sides. On each iteration, it should take new links into account and make more wise decisions. Also, manual links should make diff calculation faster, as they slice files into smaller parts.
GNU/Linux support would be a plus.