summaryrefslogtreecommitdiffstats
path: root/src/delta.rs
diff options
context:
space:
mode:
authorCatherine Noll <noll.catherine@gmail.com>2020-06-07 14:54:22 -0400
committerCatherine Noll <noll.catherine@gmail.com>2020-06-08 22:43:24 -0400
commitd5ca6d944dbf62e71fe2b75242e342f8b0b953b3 (patch)
treef90852ace8e9aea953588b632b8b7ca0754b4b02 /src/delta.rs
parentbb82773f61f207537d25d4f5d73be458e3e379cf (diff)
Add --number option for showing line numbers. Also adds related options:
- format string for specifying minus number line - format string for specifying plus number line - minus number style - plus number style - minus format string style - plus format string style
Diffstat (limited to 'src/delta.rs')
-rw-r--r--src/delta.rs23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/delta.rs b/src/delta.rs
index bab26679..b498bd0a 100644
--- a/src/delta.rs
+++ b/src/delta.rs
@@ -369,7 +369,9 @@ fn handle_hunk_header_line(
draw::write_no_decoration
}
};
- let (raw_code_fragment, line_number) = parse::parse_hunk_metadata(&line);
+ let (raw_code_fragment, line_numbers) = parse::parse_hunk_metadata(&line);
+ painter.minus_line_number = line_numbers[0];
+ painter.plus_line_number = line_numbers[line_numbers.len() - 1];
if config.hunk_header_style.is_raw {
writeln!(painter.writer)?;
draw_fn(
@@ -397,6 +399,7 @@ fn handle_hunk_header_line(
Painter::paint_lines(
syntax_style_sections,
vec![vec![(config.hunk_header_style, &lines[0])]],
+ vec![None],
&mut painter.output_buffer,
config,
"",
@@ -418,10 +421,14 @@ fn handle_hunk_header_line(
};
}
};
- match config.hunk_header_style.decoration_ansi_term_style() {
- Some(style) => writeln!(painter.writer, "{}", style.paint(line_number))?,
- None => writeln!(painter.writer, "{}", line_number)?,
- };
+
+ if !config.show_line_numbers {
+ let line_number = &format!("{}", painter.plus_line_number);
+ match config.hunk_header_style.decoration_ansi_term_style() {
+ Some(style) => writeln!(painter.writer, "{}", style.paint(line_number))?,
+ None => writeln!(painter.writer, "{}", line_number)?,
+ }
+ }
Ok(())
}
@@ -474,6 +481,10 @@ fn handle_hunk_line(
Painter::paint_lines(
syntax_style_sections,
vec![diff_style_sections],
+ vec![Some((
+ Some(painter.minus_line_number),
+ Some(painter.plus_line_number),
+ ))],
&mut painter.output_buffer,
config,
prefix,
@@ -481,6 +492,8 @@ fn handle_hunk_line(
config.zero_style,
None,
);
+ painter.minus_line_number += 1;
+ painter.plus_line_number += 1;
state
}
_ => {