When comparing some C or Bash sources with diff -u, diff assume some lines in the middle of the hunk as common.
For example qqqq www eeee -text1 +text3 common1 -text4 +text5 aaa bbb cccc I'm talking about line "common1". One frequent situation is that diff assume lines "fi", "}", "{", "else" as common lines. In the middle of the patch it's not always good for reading result. In all those cases, it is appropriate to remove this line (mark with "-" ) in old place and than add it ( mark with "+" ) in new place. In other words, i want new option: -O regex. Lines in the middle of the hunk, matched this regex will be considered different if it really equal. Diff should not think, that "fi", "}", "{", "else" is good context in resulting patches. Other option, that will solve my problem too -- "do not allow less than n lines of context". Correct patch after specifying such options should be: qqqq www eeee -text1 -common1 -text4 +text3 +common1 +text5 aaa bbb cccc The most frequent situation when part of one function moved to another function placed near old. -- Segmentation fault