1
0
mirror of https://github.com/sharkdp/bat.git synced 2025-09-12 08:12:27 +01:00

add line highlight

This commit is contained in:
Taylor
2018-10-09 22:25:33 -06:00
parent 5842d58c01
commit 1a6709c2cb
4 changed files with 38 additions and 2 deletions

View File

@@ -7,6 +7,7 @@ use ansi_term::Style;
use console::AnsiCodeIterator;
use syntect::easy::HighlightLines;
use syntect::highlighting::Color;
use syntect::highlighting::Theme;
use syntect::parsing::SyntaxSet;
@@ -79,6 +80,7 @@ pub struct InteractivePrinter<'a> {
pub line_changes: Option<LineChanges>,
highlighter: Option<HighlightLines<'a>>,
syntax_set: &'a SyntaxSet,
background_highlight: Option<Color>,
}
impl<'a> InteractivePrinter<'a> {
@@ -90,6 +92,8 @@ impl<'a> InteractivePrinter<'a> {
) -> Self {
let theme = assets.get_theme(&config.theme);
let background_highlight = theme.settings.line_highlight;
let colors = if config.colored_output {
Colors::colored(theme, config.true_color)
} else {
@@ -156,6 +160,7 @@ impl<'a> InteractivePrinter<'a> {
line_changes,
highlighter,
syntax_set: &assets.syntax_set,
background_highlight,
}
}
@@ -296,6 +301,18 @@ impl<'a> Printer for InteractivePrinter<'a> {
}
}
// Line highlighting
let background = match self.config.highlight_line {
Some(line) => {
if line_number == line {
self.background_highlight
} else {
None
}
}
_ => None
};
// Line contents.
if self.config.output_wrap == OutputWrap::None {
let true_color = self.config.true_color;
@@ -306,7 +323,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
write!(
handle,
"{}",
as_terminal_escaped(style, &*text, true_color, colored_output,)
as_terminal_escaped(style, &*text, true_color, colored_output, background)
)?;
}
@@ -362,6 +379,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
),
self.config.true_color,
self.config.colored_output,
background
)
)?;
break;
@@ -401,6 +419,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
),
self.config.true_color,
self.config.colored_output,
background
),
panel_wrap.clone().unwrap()
)?;