diff --git a/sample_files/compare.expected b/sample_files/compare.expected index 8d6b43947..569a1599c 100644 --- a/sample_files/compare.expected +++ b/sample_files/compare.expected @@ -59,7 +59,7 @@ sample_files/devicetree_1.dts sample_files/devicetree_2.dts f7c4e7b4444b02d87b2eec1485d86211 - sample_files/elisp_1.el sample_files/elisp_2.el -c47ace7b6cfecb9d6195ad323eb38407 - +d7bdaf5f87e1c44475774c6e7ba70822 - sample_files/elisp_contiguous_1.el sample_files/elisp_contiguous_2.el 4a5a33873a4f84ee055d95e1448fba35 - @@ -152,7 +152,7 @@ sample_files/many_newlines_1.txt sample_files/many_newlines_2.txt 52ca05855e520876479e6f608c5e7831 - sample_files/metadata_1.clj sample_files/metadata_2.clj -25326c138b8e05d250ba7de40655fb0e - +fd0fee4a660e938c44182e6f77746d0e - sample_files/modules_1.ml sample_files/modules_2.ml 8584f755c99a93dd744a6722596a4418 - @@ -242,7 +242,7 @@ sample_files/simple_1.txt sample_files/simple_2.txt 7df04bd5dbc68a2392b2f0b375c4413e - sample_files/slider_1.rs sample_files/slider_2.rs -9182f0f53b7588d7cb6e93ab8ff5ce57 - +346155adadb1340c026bbfa5cfd5669d - sample_files/slider_at_end_1.json sample_files/slider_at_end_2.json cb370f1c0ccc5e155743330629f899f0 - diff --git a/src/display/side_by_side.rs b/src/display/side_by_side.rs index 91207f7c4..caf1bb053 100644 --- a/src/display/side_by_side.rs +++ b/src/display/side_by_side.rs @@ -174,12 +174,6 @@ struct SourceDimensions { /// The number of characters required to display line numbers on /// the RHS. rhs_line_nums_width: usize, - /// The highest line number in the LHS source that we will - /// display. - lhs_max_line_visible: LineNumber, - /// The highest line number in the RHS source that we will - /// display. - rhs_max_line_visible: LineNumber, lhs_max_line_in_file: LineNumber, rhs_max_line_in_file: LineNumber, } @@ -247,8 +241,6 @@ impl SourceDimensions { content_display_width: content_width, lhs_line_nums_width, rhs_line_nums_width, - lhs_max_line_visible, - rhs_max_line_visible, lhs_max_line_in_file, rhs_max_line_in_file, } @@ -555,16 +547,25 @@ pub(crate) fn print( let mut lhs_max_visible_line = 1.into(); let mut rhs_max_visible_line = 1.into(); - for (lhs_line_num, rhs_line_num) in matched_lines_to_print.iter().rev() { - if let Some(lhs_line_num) = *lhs_line_num { - lhs_max_visible_line = max(lhs_max_visible_line, lhs_line_num); - } - if let Some(rhs_line_num) = *rhs_line_num { - rhs_max_visible_line = max(rhs_max_visible_line, rhs_line_num); - } + if let Some(hunk) = hunks.last() { + let (start_i, end_i) = matched_lines_indexes_for_hunk( + matched_lines_to_print, + hunk, + display_options.num_context_lines as usize, + ); + let aligned_lines = &matched_lines_to_print[start_i..end_i]; + + for (lhs_line_num, rhs_line_num) in aligned_lines.iter().rev() { + if let Some(lhs_line_num) = *lhs_line_num { + lhs_max_visible_line = max(lhs_max_visible_line, lhs_line_num); + } + if let Some(rhs_line_num) = *rhs_line_num { + rhs_max_visible_line = max(rhs_max_visible_line, rhs_line_num); + } - if lhs_max_visible_line > 1.into() && rhs_max_visible_line > 1.into() { - break; + if lhs_max_visible_line > 1.into() && rhs_max_visible_line > 1.into() { + break; + } } }