mdiff: fix diff -b/B/w on mixed whitespace hunks (issue127)
Previous code was computing hunks then checking if these hunks could be ignored
when taking whitespace/blank-lines options in accounts. This approach is simple
but fails with hunks containing both whitespace and non-whitespace changes, the
whole hunk is emitted while it can be mostly made of whitespace. The new
version normalize the whitespaces before hunk generation, and test for
blank-lines afterwards.
% init
% commit
adding base
% qnew mqbase
% qrefresh
% qdiff
diff -r 67e992f2c4f3 base
--- a/base
+++ b/base
@@ -1,1 +1,1 @@
-base
+patched
% qdiff dirname
diff -r 67e992f2c4f3 base
--- a/base
+++ b/base
@@ -1,1 +1,1 @@
-base
+patched
% qdiff filename
diff -r 67e992f2c4f3 base
--- a/base
+++ b/base
@@ -1,1 +1,1 @@
-base
+patched
% revert
% qpop
popping mqbase
patch queue now empty
% qdelete mqbase
% commit 2
adding lines
% qnew 2
% qdiff -U 1
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -1,1 +1,3 @@
+
+
1
@@ -4,4 +6,4 @@
4
-hello world
-goodbye world
+hello world
+ goodbye world
7
% qdiff -b
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -1,9 +1,11 @@
+
+
1
2
3
4
hello world
-goodbye world
+ goodbye world
7
8
9
% qdiff -U 1 -B
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -4,4 +6,4 @@
4
-hello world
-goodbye world
+hello world
+ goodbye world
7
% qdiff -w
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -1,3 +1,5 @@
+
+
1
2
3
% qdiff --inverse
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -1,11 +1,9 @@
-
-
1
2
3
4
-hello world
- goodbye world
+hello world
+goodbye world
7
8
9