diff options
author | Dan Davison <dandavison7@gmail.com> | 2020-07-29 23:00:49 -0400 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2020-08-01 11:38:19 -0400 |
commit | d9a07679dfaf2b9c9b84187f3691aa93d8beca31 (patch) | |
tree | 05370847279730c98a9b40961780433dd1104aa0 /src/features | |
parent | cd7953c176c2bc71b34cc2aaa1618f6ab208538f (diff) |
Emit raw lines instead of explicitly handling --color-moved
Diffstat (limited to 'src/features')
-rw-r--r-- | src/features/color_moved.rs | 24 | ||||
-rw-r--r-- | src/features/mod.rs | 5 | ||||
-rw-r--r-- | src/features/side_by_side.rs | 34 |
3 files changed, 23 insertions, 40 deletions
diff --git a/src/features/color_moved.rs b/src/features/color_moved.rs deleted file mode 100644 index 2879fb8d..00000000 --- a/src/features/color_moved.rs +++ /dev/null @@ -1,24 +0,0 @@ -use crate::features::OptionValueFunction; - -pub fn make_feature() -> Vec<(String, OptionValueFunction)> { - builtin_feature!([ - ( - "color-moved", - bool, - None, - _opt => true - ), - ( - "color-moved-minus-style", - bool, - Some("color.diff.oldMoved"), - _opt => "red black" - ), - ( - "color-moved-plus-style", - bool, - Some("color.diff.newMoved"), - _opt => "green black" - ) - ]) -} diff --git a/src/features/mod.rs b/src/features/mod.rs index 89081e4f..67dbd6ba 100644 --- a/src/features/mod.rs +++ b/src/features/mod.rs @@ -27,10 +27,6 @@ type OptionValueFunction = Box<dyn Fn(&cli::Opt, &Option<GitConfig>) -> Provenan pub fn make_builtin_features() -> HashMap<String, BuiltinFeature> { vec![ ( - "color-moved".to_string(), - color_moved::make_feature().into_iter().collect(), - ), - ( "color-only".to_string(), color_only::make_feature().into_iter().collect(), ), @@ -86,7 +82,6 @@ macro_rules! builtin_feature { } } -pub mod color_moved; pub mod color_only; pub mod diff_highlight; pub mod diff_so_fancy; diff --git a/src/features/side_by_side.rs b/src/features/side_by_side.rs index 3feb6e90..5226c97a 100644 --- a/src/features/side_by_side.rs +++ b/src/features/side_by_side.rs @@ -60,11 +60,13 @@ impl SideBySideData { } /// Emit a sequence of minus and plus lines in side-by-side mode. -pub fn paint_minus_and_plus_lines_side_by_side( +pub fn paint_minus_and_plus_lines_side_by_side<'a>( minus_syntax_style_sections: Vec<Vec<(SyntectStyle, &str)>>, minus_diff_style_sections: Vec<Vec<(Style, &str)>>, + minus_states: Vec<&'a State>, plus_syntax_style_sections: Vec<Vec<(SyntectStyle, &str)>>, plus_diff_style_sections: Vec<Vec<(Style, &str)>>, + plus_states: Vec<&'a State>, line_alignment: Vec<(Option<usize>, Option<usize>)>, output_buffer: &mut String, config: &Config, @@ -76,6 +78,10 @@ pub fn paint_minus_and_plus_lines_side_by_side( minus_line_index, &minus_syntax_style_sections, &minus_diff_style_sections, + match minus_line_index { + Some(i) => minus_states[i], + None => &State::HunkMinus(None), + }, line_numbers_data, if config.keep_plus_minus_markers { "-" @@ -89,6 +95,10 @@ pub fn paint_minus_and_plus_lines_side_by_side( plus_line_index, &plus_syntax_style_sections, &plus_diff_style_sections, + match plus_line_index { + Some(i) => plus_states[i], + None => &State::HunkPlus(None), + }, line_numbers_data, if config.keep_plus_minus_markers { "+" @@ -166,10 +176,11 @@ pub fn paint_zero_lines_side_by_side( } } -fn paint_left_panel_minus_line( +fn paint_left_panel_minus_line<'a>( line_index: Option<usize>, syntax_style_sections: &Vec<Vec<(SyntectStyle, &str)>>, diff_style_sections: &Vec<Vec<(Style, &str)>>, + state: &'a State, line_numbers_data: &mut Option<&mut line_numbers::LineNumbersData>, prefix: &str, background_color_extends_to_terminal_width: Option<bool>, @@ -179,7 +190,7 @@ fn paint_left_panel_minus_line( line_index, &syntax_style_sections, &diff_style_sections, - &State::HunkMinus(false), + state, line_numbers_data, PanelSide::Left, prefix, @@ -190,7 +201,7 @@ fn paint_left_panel_minus_line( panel_line_is_empty, line_index, diff_style_sections, - &State::HunkMinus(false), + state, background_color_extends_to_terminal_width, config, ); @@ -198,10 +209,11 @@ fn paint_left_panel_minus_line( panel_line } -fn paint_right_panel_plus_line( +fn paint_right_panel_plus_line<'a>( line_index: Option<usize>, syntax_style_sections: &Vec<Vec<(SyntectStyle, &str)>>, diff_style_sections: &Vec<Vec<(Style, &str)>>, + state: &'a State, line_numbers_data: &mut Option<&mut line_numbers::LineNumbersData>, prefix: &str, background_color_extends_to_terminal_width: Option<bool>, @@ -211,7 +223,7 @@ fn paint_right_panel_plus_line( line_index, &syntax_style_sections, &diff_style_sections, - &State::HunkPlus(false), + state, line_numbers_data, PanelSide::Right, prefix, @@ -222,7 +234,7 @@ fn paint_right_panel_plus_line( panel_line_is_empty, line_index, diff_style_sections, - &State::HunkPlus(false), + state, background_color_extends_to_terminal_width, config, ); @@ -278,7 +290,7 @@ fn get_right_fill_style_for_left_panel( // what this will do is set the line number pair in that function to `(Some(minus_number), None)`, // and then only emit the right field (which has a None number, i.e. blank). However, it will also // increment the minus line number, so we need to knock that back down. -fn paint_minus_or_plus_panel_line( +fn paint_minus_or_plus_panel_line<'a>( line_index: Option<usize>, syntax_style_sections: &Vec<Vec<(SyntectStyle, &str)>>, diff_style_sections: &Vec<Vec<(Style, &str)>>, @@ -298,9 +310,9 @@ fn paint_minus_or_plus_panel_line( state.clone(), ) } else { - let opposite_state = match *state { - State::HunkMinus(x) => State::HunkPlus(x), - State::HunkPlus(x) => State::HunkMinus(x), + let opposite_state = match state { + State::HunkMinus(x) => State::HunkPlus(x.clone()), + State::HunkPlus(x) => State::HunkMinus(x.clone()), _ => unreachable!(), }; ( |