# HG changeset patch # User Mads Kiilerich # Date 1287453306 -7200 # Node ID 8eb758ea738c428c15a41e18422bf4ede262ed19 # Parent 05bd2658bbb3cbb5f2008e96a049fe0dfa45ff5e mdiff: carriage return (\r) is also ignorable whitespace diff -r 05bd2658bbb3 -r 8eb758ea738c mercurial/mdiff.py --- a/mercurial/mdiff.py Fri Oct 15 23:00:45 2010 -0500 +++ b/mercurial/mdiff.py Tue Oct 19 03:55:06 2010 +0200 @@ -67,10 +67,10 @@ def wsclean(opts, text, blank=True): if opts.ignorews: - text = re.sub('[ \t]+', '', text) + text = re.sub('[ \t\r]+', '', text) elif opts.ignorewsamount: - text = re.sub('[ \t]+', ' ', text) - text = re.sub('[ \t]+\n', '\n', text) + text = re.sub('[ \t\r]+', ' ', text) + text = text.replace(' \n', '\n') if blank and opts.ignoreblanklines: text = re.sub('\n+', '', text) return text diff -r 05bd2658bbb3 -r 8eb758ea738c tests/test-diff-ignore-whitespace.t --- a/tests/test-diff-ignore-whitespace.t Fri Oct 15 23:00:45 2010 -0500 +++ b/tests/test-diff-ignore-whitespace.t Tue Oct 19 03:55:06 2010 +0200 @@ -390,3 +390,57 @@ $ hg ndiff -wB + +Test \r (carriage return) as used in "DOS" line endings: + + $ printf 'hello world\r\n\r\ngoodbye\rworld\n' >foo + + $ hg ndiff + diff -r 540c40a65b78 foo + --- a/foo + +++ b/foo + @@ -1,2 +1,3 @@ + -hello world + -goodbye world + +hello world + + + +goodbye world +world + +No completely blank lines to ignore: + + $ hg ndiff --ignore-blank-lines + diff -r 540c40a65b78 foo + --- a/foo + +++ b/foo + @@ -1,2 +1,3 @@ + -hello world + -goodbye world + +hello world + + + +goodbye world +world + +Only new line noticed: + + $ hg ndiff --ignore-space-change + diff -r 540c40a65b78 foo + --- a/foo + +++ b/foo + @@ -1,2 +1,3 @@ + hello world + + + goodbye world + + $ hg ndiff --ignore-all-space + diff -r 540c40a65b78 foo + --- a/foo + +++ b/foo + @@ -1,2 +1,3 @@ + hello world + + + goodbye world + +New line not noticed when space change ignored: + + $ hg ndiff --ignore-blank-lines --ignore-all-space