mirror of
https://github.com/sharkdp/bat.git
synced 2025-02-22 04:48:48 +00:00
Always call the syntax highlighter
This commit is contained in:
parent
226d9a573a
commit
627181bcb6
@ -77,16 +77,18 @@ impl<'b> Controller<'b> {
|
|||||||
match line_ranges {
|
match line_ranges {
|
||||||
&Some(ref range) => {
|
&Some(ref range) => {
|
||||||
if line_number < range.lower {
|
if line_number < range.lower {
|
||||||
// skip line
|
// Call the printer in case we need to call the syntax highlighter
|
||||||
|
// for this line. However, set `out_of_range` to `true`.
|
||||||
|
printer.print_line(true, writer, line_number, &line_buffer)?;
|
||||||
} else if line_number > range.upper {
|
} else if line_number > range.upper {
|
||||||
// no more lines in range
|
// no more lines in range, exit early
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
printer.print_line(writer, line_number, &line_buffer)?;
|
printer.print_line(false, writer, line_number, &line_buffer)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&None => {
|
&None => {
|
||||||
printer.print_line(writer, line_number, &line_buffer)?;
|
printer.print_line(false, writer, line_number, &line_buffer)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ pub trait Printer {
|
|||||||
fn print_footer(&mut self, handle: &mut Write) -> Result<()>;
|
fn print_footer(&mut self, handle: &mut Write) -> Result<()>;
|
||||||
fn print_line(
|
fn print_line(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
out_of_range: bool,
|
||||||
handle: &mut Write,
|
handle: &mut Write,
|
||||||
line_number: usize,
|
line_number: usize,
|
||||||
line_buffer: &[u8],
|
line_buffer: &[u8],
|
||||||
@ -49,11 +50,14 @@ impl Printer for SimplePrinter {
|
|||||||
|
|
||||||
fn print_line(
|
fn print_line(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
out_of_range: bool,
|
||||||
handle: &mut Write,
|
handle: &mut Write,
|
||||||
_line_number: usize,
|
_line_number: usize,
|
||||||
line_buffer: &[u8],
|
line_buffer: &[u8],
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
handle.write(line_buffer)?;
|
if !out_of_range {
|
||||||
|
handle.write(line_buffer)?;
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -188,6 +192,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
|
|||||||
|
|
||||||
fn print_line(
|
fn print_line(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
out_of_range: bool,
|
||||||
handle: &mut Write,
|
handle: &mut Write,
|
||||||
line_number: usize,
|
line_number: usize,
|
||||||
line_buffer: &[u8],
|
line_buffer: &[u8],
|
||||||
@ -195,6 +200,10 @@ impl<'a> Printer for InteractivePrinter<'a> {
|
|||||||
let line = String::from_utf8_lossy(&line_buffer);
|
let line = String::from_utf8_lossy(&line_buffer);
|
||||||
let regions = self.highlighter.highlight(line.as_ref());
|
let regions = self.highlighter.highlight(line.as_ref());
|
||||||
|
|
||||||
|
if out_of_range {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
let mut cursor: usize = 0;
|
let mut cursor: usize = 0;
|
||||||
let mut cursor_max: usize = self.config.term_width;
|
let mut cursor_max: usize = self.config.term_width;
|
||||||
let mut panel_wrap: Option<String> = None;
|
let mut panel_wrap: Option<String> = None;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user