summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2020-12-05 17:23:31 +0000
committerDan Davison <dandavison7@gmail.com>2020-12-05 17:23:31 +0000
commitb85936d90aae8840bc0bc94d729e28effba25733 (patch)
tree52b28a6c3e77e8412272e1d3daf6f2953e73e8e5
parente455eb9d74fb8381f2dc64588fb63073044f1f05 (diff)
Pass pre-painted prefix as Option
-rw-r--r--src/delta.rs2
-rw-r--r--src/features/side_by_side.rs28
-rw-r--r--src/paint.rs48
-rw-r--r--src/tests/ansi_test_utils.rs2
4 files changed, 36 insertions, 44 deletions
diff --git a/src/delta.rs b/src/delta.rs
index ff1edef8..bbb7a9ce 100644
--- a/src/delta.rs
+++ b/src/delta.rs
@@ -456,7 +456,7 @@ fn handle_hunk_header_line(
&mut painter.output_buffer,
config,
&mut None,
- &config.null_style.paint(""),
+ None,
None,
Some(false),
);
diff --git a/src/features/side_by_side.rs b/src/features/side_by_side.rs
index ea8aabef..f4680898 100644
--- a/src/features/side_by_side.rs
+++ b/src/features/side_by_side.rs
@@ -83,11 +83,11 @@ pub fn paint_minus_and_plus_lines_side_by_side<'a>(
None => &State::HunkMinus(None),
},
line_numbers_data,
- &config.minus_style.paint(if config.keep_plus_minus_markers {
- "-"
+ if config.keep_plus_minus_markers {
+ Some(config.minus_style.paint("-"))
} else {
- ""
- }),
+ None
+ },
background_color_extends_to_terminal_width,
config,
));
@@ -100,11 +100,11 @@ pub fn paint_minus_and_plus_lines_side_by_side<'a>(
None => &State::HunkPlus(None),
},
line_numbers_data,
- &config.plus_style.paint(if config.keep_plus_minus_markers {
- "+"
+ if config.keep_plus_minus_markers {
+ Some(config.plus_style.paint("+"))
} else {
- ""
- }),
+ None
+ },
background_color_extends_to_terminal_width,
config,
));
@@ -120,7 +120,7 @@ pub fn paint_zero_lines_side_by_side(
output_buffer: &mut String,
config: &Config,
line_numbers_data: &mut Option<&mut line_numbers::LineNumbersData>,
- painted_prefix: &ansi_term::ANSIString,
+ painted_prefix: Option<ansi_term::ANSIString>,
background_color_extends_to_terminal_width: Option<bool>,
) {
for (line_index, (syntax_sections, diff_sections)) in syntax_style_sections
@@ -134,7 +134,7 @@ pub fn paint_zero_lines_side_by_side(
state,
line_numbers_data,
Some(PanelSide::Left),
- painted_prefix,
+ painted_prefix.clone(),
config,
);
// TODO: Avoid doing the superimpose_style_sections work twice.
@@ -160,7 +160,7 @@ pub fn paint_zero_lines_side_by_side(
state,
line_numbers_data,
Some(PanelSide::Right),
- painted_prefix,
+ painted_prefix.clone(),
config,
);
right_fill_right_panel_line(
@@ -184,7 +184,7 @@ fn paint_left_panel_minus_line<'a>(
diff_style_sections: &[Vec<(Style, &str)>],
state: &'a State,
line_numbers_data: &mut Option<&mut line_numbers::LineNumbersData>,
- painted_prefix: &ansi_term::ANSIString,
+ painted_prefix: Option<ansi_term::ANSIString>,
background_color_extends_to_terminal_width: Option<bool>,
config: &Config,
) -> String {
@@ -218,7 +218,7 @@ fn paint_right_panel_plus_line<'a>(
diff_style_sections: &[Vec<(Style, &str)>],
state: &'a State,
line_numbers_data: &mut Option<&mut line_numbers::LineNumbersData>,
- painted_prefix: &ansi_term::ANSIString,
+ painted_prefix: Option<ansi_term::ANSIString>,
background_color_extends_to_terminal_width: Option<bool>,
config: &Config,
) -> String {
@@ -301,7 +301,7 @@ fn paint_minus_or_plus_panel_line(
state: &State,
line_numbers_data: &mut Option<&mut line_numbers::LineNumbersData>,
panel_side: PanelSide,
- painted_prefix: &ansi_term::ANSIString,
+ painted_prefix: Option<ansi_term::ANSIString>,
config: &Config,
) -> (String, bool) {
let (empty_line_syntax_sections, empty_line_diff_sections) = (Vec::new(), Vec::new());
diff --git a/src/paint.rs b/src/paint.rs
index 438f671b..bbff5a8b 100644
--- a/src/paint.rs
+++ b/src/paint.rs
@@ -163,14 +163,11 @@ impl<'a> Painter<'a> {
&mut self.output_buffer,
self.config,
&mut Some(&mut self.line_numbers_data),
- &self
- .config
- .minus_style
- .paint(if self.config.keep_plus_minus_markers {
- "-"
- } else {
- ""
- }),
+ if self.config.keep_plus_minus_markers {
+ Some(self.config.minus_style.paint("-"))
+ } else {
+ None
+ },
Some(self.config.minus_empty_line_marker_style),
None,
);
@@ -183,14 +180,11 @@ impl<'a> Painter<'a> {
&mut self.output_buffer,
self.config,
&mut Some(&mut self.line_numbers_data),
- &self
- .config
- .plus_style
- .paint(if self.config.keep_plus_minus_markers {
- "+"
- } else {
- ""
- }),
+ if self.config.keep_plus_minus_markers {
+ Some(self.config.plus_style.paint("+"))
+ } else {
+ None
+ },
Some(self.config.plus_empty_line_marker_style),
None,
);
@@ -202,13 +196,11 @@ impl<'a> Painter<'a> {
pub fn paint_zero_line(&mut self, line: &str) {
let state = State::HunkZero;
- let painted_prefix = &self.config.zero_style.paint(
- if self.config.keep_plus_minus_markers && !line.is_empty() {
- &line[..1]
- } else {
- ""
- },
- );
+ let painted_prefix = if self.config.keep_plus_minus_markers && !line.is_empty() {
+ Some(self.config.zero_style.paint(&line[..1]))
+ } else {
+ None
+ };
let lines = vec![(self.prepare(line, true), state.clone())];
let syntax_style_sections = Painter::get_syntax_style_sections_for_lines(
&lines,
@@ -254,7 +246,7 @@ impl<'a> Painter<'a> {
output_buffer: &mut String,
config: &config::Config,
line_numbers_data: &mut Option<&mut line_numbers::LineNumbersData>,
- painted_prefix: &ansi_term::ANSIString,
+ painted_prefix: Option<ansi_term::ANSIString>,
empty_line_style: Option<Style>, // a style with background color to highlight an empty line
background_color_extends_to_terminal_width: Option<bool>,
) {
@@ -276,7 +268,7 @@ impl<'a> Painter<'a> {
state,
line_numbers_data,
None,
- painted_prefix,
+ painted_prefix.clone(),
config,
);
let (should_right_fill_background_color, fill_style) =
@@ -387,7 +379,7 @@ impl<'a> Painter<'a> {
state: &State,
line_numbers_data: &mut Option<&mut line_numbers::LineNumbersData>,
side_by_side_panel: Option<side_by_side::PanelSide>,
- painted_prefix: &ansi_term::ANSIString,
+ painted_prefix: Option<ansi_term::ANSIString>,
config: &config::Config,
) -> (String, bool) {
let output_line_numbers = config.line_numbers && line_numbers_data.is_some();
@@ -424,8 +416,8 @@ impl<'a> Painter<'a> {
config.null_syntect_style,
) {
if !handled_prefix {
- if &**painted_prefix != "" {
- ansi_strings.push(painted_prefix.clone());
+ if let Some(painted_prefix) = painted_prefix.clone() {
+ ansi_strings.push(painted_prefix);
}
if !text.is_empty() {
text.remove(0);
diff --git a/src/tests/ansi_test_utils.rs b/src/tests/ansi_test_utils.rs
index e7b25e47..d0456d92 100644
--- a/src/tests/ansi_test_utils.rs
+++ b/src/tests/ansi_test_utils.rs
@@ -145,7 +145,7 @@ pub mod ansi_test_utils {
&mut output_buffer,
config,
&mut None,
- &config.null_style.paint(prefix),
+ Some(config.null_style.paint(prefix)),
None,
None,
);