diff --git a/CHANGELOG.md b/CHANGELOG.md index 10cd25433..511629f04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ Fixed an issue where whole file additions/removals were printed twice. Fixed an issue where difftastic didn't show context on hunks where the unchanged content was on different lines. +Hunks are now merged if the lines are immediately adjacent +(e.g. hunk 1 ends on line 11, hunk 2 starts on line 12), not just if +they're overlapping. + ### Command Line Interface Difftastic will now use a text dif for large files that are too big to diff --git a/sample_files/compare.expected b/sample_files/compare.expected index f4b1019a6..db4806e96 100644 --- a/sample_files/compare.expected +++ b/sample_files/compare.expected @@ -40,7 +40,7 @@ sample_files/java_before.java sample_files/java_after.java 4b57e58be24d5ccbc2568810889ced8e - sample_files/javascript_before.js sample_files/javascript_after.js -5ac5d4bcb4750289f28409a7e0671174 - +81d8ae1fdb7847729b19fa615b871e04 - sample_files/javascript_simple_before.js sample_files/javascript_simple_after.js 58208dbd2347671a5eb068d775a5f4f9 - @@ -52,13 +52,13 @@ sample_files/jsx_before.jsx sample_files/jsx_after.jsx 3c21b73a5d784bca89e76342eb47a422 - sample_files/load_before.js sample_files/load_after.js -25a954ed7ead705b0326e51b6cf8ee4e - +8506aca66358fb17d06702b05bf0693d - sample_files/nest_before.rs sample_files/nest_after.rs 9e561ba227c1fee426820982ac4d10c6 - sample_files/ocaml_before.ml sample_files/ocaml_after.ml -5374cc9d21db1ec56ff87100766a882b - +9b6f28e64c94a7d615012d72b08265da - sample_files/ruby_before.rb sample_files/ruby_after.rb 4a9847a91e32ec6afdc2f0b01e28d2d6 - @@ -73,10 +73,10 @@ sample_files/simple_before.txt sample_files/simple_after.txt 4b653ebe89321835c35722dd065cf6a2 - sample_files/slider_before.rs sample_files/slider_after.rs -7bedc399bf8aa11ae19236a1ec854fab - +aa8764aeaa628231e9c16dd2476a17c8 - sample_files/slow_before.rs sample_files/slow_after.rs -1c7ebf9ad15ccd1614b559d03ab1f90b - +2f6efdf8c27f87d65a5fb226caf7215c - sample_files/small_before.js sample_files/small_after.js eb0d76aeb39e33b5ef539812d80c78d7 - @@ -88,5 +88,5 @@ sample_files/text_before.txt sample_files/text_after.txt f61b57cb275332d01b9539efa88aa2f6 - sample_files/typing_before.ml sample_files/typing_after.ml -93d598c35b7cf6e6599e9414b561f064 - +3941fd44b0bf744da834a0b3eda1ba76 - diff --git a/src/context.rs b/src/context.rs index 7e3dd6b2e..d245dc03f 100644 --- a/src/context.rs +++ b/src/context.rs @@ -214,7 +214,9 @@ fn pad_before(ln: LineNumber) -> Vec { let mut res = vec![]; let mut current = ln; - for _ in 0..MAX_PADDING { + // Use one more line than MAX_PADDING so we merge immediately + // adjacent hunks. + for _ in 0..MAX_PADDING + 1 { if current.0 == 0 { break; } @@ -231,7 +233,9 @@ fn pad_after(ln: LineNumber, max_line: LineNumber) -> Vec { let mut res = vec![]; let mut current = ln; - for _ in 0..MAX_PADDING { + // Use one more line than MAX_PADDING so we merge immediately + // adjacent hunks. + for _ in 0..MAX_PADDING + 1 { if current == max_line { break; }