diff options
author | Dan Davison <dandavison7@gmail.com> | 2021-11-29 10:37:35 -0500 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2021-12-05 11:25:05 -0500 |
commit | 422954164f68b95fe9578ab1e0e1d1c80ca9345e (patch) | |
tree | 2b766093a5d57d683192da7e0cb4125375beae37 /src/features | |
parent | f73f0a8cbd8f66340817ab8b143f5a4459380647 (diff) |
Handle combined diff format
With this commit combined diff
format (https://git-scm.com/docs/git-diff#_combined_diff_format) is
handled appropriately. However, there is no special handling of merge
conflict markers.
Fixes #189, #736
Diffstat (limited to 'src/features')
-rw-r--r-- | src/features/line_numbers.rs | 6 | ||||
-rw-r--r-- | src/features/side_by_side.rs | 16 |
2 files changed, 11 insertions, 11 deletions
diff --git a/src/features/line_numbers.rs b/src/features/line_numbers.rs index 0d366f8a..59218f75 100644 --- a/src/features/line_numbers.rs +++ b/src/features/line_numbers.rs @@ -76,18 +76,18 @@ pub fn linenumbers_and_styles<'a>( config.line_numbers_style_minusplus[Plus], ); let ((minus_number, plus_number), (minus_style, plus_style)) = match state { - State::HunkMinus(_) => { + State::HunkMinus(_, _) => { line_numbers_data.line_number[Left] += increment as usize; ((Some(nr_left), None), (minus_style, plus_style)) } State::HunkMinusWrapped => ((None, None), (minus_style, plus_style)), - State::HunkZero => { + State::HunkZero(_) => { line_numbers_data.line_number[Left] += increment as usize; line_numbers_data.line_number[Right] += increment as usize; ((Some(nr_left), Some(nr_right)), (zero_style, zero_style)) } State::HunkZeroWrapped => ((None, None), (zero_style, zero_style)), - State::HunkPlus(_) => { + State::HunkPlus(_, _) => { line_numbers_data.line_number[Right] += increment as usize; ((None, Some(nr_right)), (minus_style, plus_style)) } diff --git a/src/features/side_by_side.rs b/src/features/side_by_side.rs index f4960d76..85b066cb 100644 --- a/src/features/side_by_side.rs +++ b/src/features/side_by_side.rs @@ -180,7 +180,7 @@ pub fn paint_minus_and_plus_lines_side_by_side( &lines_have_homolog[Left], match minus_line_index { Some(i) => &line_states[Left][i], - None => &State::HunkMinus(None), + None => &State::HunkMinus(None, None), }, &mut Some(line_numbers_data), bg_should_fill[Left], @@ -201,7 +201,7 @@ pub fn paint_minus_and_plus_lines_side_by_side( &lines_have_homolog[Right], match plus_line_index { Some(i) => &line_states[Right][i], - None => &State::HunkPlus(None), + None => &State::HunkPlus(None, None), }, &mut Some(line_numbers_data), bg_should_fill[Right], @@ -222,7 +222,7 @@ pub fn paint_zero_lines_side_by_side<'a>( painted_prefix: Option<ansi_term::ANSIString>, background_color_extends_to_terminal_width: BgShouldFill, ) { - let states = vec![State::HunkZero]; + let states = vec![State::HunkZero(None)]; let (states, syntax_style_sections, diff_style_sections) = wrap_zero_block( config, @@ -418,8 +418,8 @@ fn paint_minus_or_plus_panel_line<'a>( ) } else { let opposite_state = match state { - State::HunkMinus(x) => State::HunkPlus(x.clone()), - State::HunkPlus(x) => State::HunkMinus(x.clone()), + State::HunkMinus(_, s) => State::HunkPlus(None, s.clone()), + State::HunkPlus(_, s) => State::HunkMinus(None, s.clone()), _ => unreachable!(), }; ( @@ -470,17 +470,17 @@ fn pad_panel_line_to_width<'a>( // to form the other half of the line, then don't emit the empty line marker. if panel_line_is_empty && line_index.is_some() { match state { - State::HunkMinus(_) => Painter::mark_empty_line( + State::HunkMinus(_, _) => Painter::mark_empty_line( &config.minus_empty_line_marker_style, panel_line, Some(" "), ), - State::HunkPlus(_) => Painter::mark_empty_line( + State::HunkPlus(_, _) => Painter::mark_empty_line( &config.plus_empty_line_marker_style, panel_line, Some(" "), ), - State::HunkZero => {} + State::HunkZero(_) => {} _ => unreachable!(), }; }; |