< prev index next >

webrev/src/main/java/org/openjdk/skara/webrev/HunkCoalescer.java

Print this page
@@ -146,12 +146,14 @@
          while (!hunks.isEmpty()) {
              var next = hunks.peekFirst();
              var last = hunksInRange.get(hunksInRange.size() - 1);
              var destEnd = last.target().range().end() + numContextLines;
              var sourceEnd = last.source().range().end() + numContextLines;
-             if (sourceEnd >= next.source().range().start() ||
-                   destEnd >= next.target().range().start()) {
+             var nextDestStart = next.target().range().start() - numContextLines;
+             var nextSourceStart = next.source().range().start() - numContextLines;
+             if (sourceEnd >= nextSourceStart ||
+                 destEnd >= nextDestStart) {
                  hunksInRange.add(hunks.removeFirst());
              } else {
                  break;
              }
          }

@@ -239,11 +241,13 @@
          var sourceAfterContextStart = hunk.source().range().end();
          var sourceAfterContextEnd = hunk.source().range().end() + numContextLines;
          sourceAfterContextEnd = Math.min(sourceAfterContextEnd, sourceContent.size() + 1);
          if (nextNonEmptySourceHunk != null) {
              var nextNonEmptySourceHunkStart = nextNonEmptySourceHunk.source().range().start();
-             sourceAfterContextEnd = Math.min(sourceAfterContextEnd, nextNonEmptySourceHunkStart);
+             sourceAfterContextEnd = sourceAfterContextEnd > nextNonEmptySourceHunkStart
+                     ? Math.min(sourceAfterContextEnd, nextNonEmptySourceHunkStart)
+                     : Math.max(sourceAfterContextEnd, nextNonEmptySourceHunkStart);
          }
          var sourceAfterContextCount = sourceAfterContextEnd - sourceAfterContextStart;
  
          var destAfterContextStart = hunk.target().range().end();
          var destAfterContextEnd = hunk.target().range().end() + numContextLines;

@@ -248,11 +252,13 @@
          var destAfterContextStart = hunk.target().range().end();
          var destAfterContextEnd = hunk.target().range().end() + numContextLines;
          destAfterContextEnd = Math.min(destAfterContextEnd, destContent.size() + 1);
          if (nextNonEmptyTargetHunk != null) {
              var nextNonEmptyTargetHunkStart = nextNonEmptyTargetHunk.target().range().start();
-             destAfterContextEnd = Math.min(destAfterContextEnd, nextNonEmptyTargetHunkStart);
+             destAfterContextEnd = destAfterContextEnd > nextNonEmptyTargetHunkStart
+                     ? Math.min(destAfterContextEnd, nextNonEmptyTargetHunkStart)
+                     : Math.max(destAfterContextEnd, nextNonEmptyTargetHunkStart);
          }
          var destAfterContextCount = destAfterContextEnd - destAfterContextStart;
  
          var afterContextCount = Math.min(sourceAfterContextCount, destAfterContextCount);
  
< prev index next >