|
|
|
@ -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()
|
|
|
|
|
)?;
|
|
|
|
|