summaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2020-07-29 23:00:49 -0400
committerDan Davison <dandavison7@gmail.com>2020-08-01 11:38:19 -0400
commitd9a07679dfaf2b9c9b84187f3691aa93d8beca31 (patch)
tree05370847279730c98a9b40961780433dd1104aa0 /src/features
parentcd7953c176c2bc71b34cc2aaa1618f6ab208538f (diff)
Emit raw lines instead of explicitly handling --color-moved
Diffstat (limited to 'src/features')
-rw-r--r--src/features/color_moved.rs24
-rw-r--r--src/features/mod.rs5
-rw-r--r--src/features/side_by_side.rs34
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!(),
};
(