mirror of
https://github.com/sharkdp/bat.git
synced 2025-09-08 22:32:26 +01:00
Support relative negative line ranges
This commit is contained in:
@@ -28,7 +28,7 @@ use crate::decorations::{Decoration, GridBorderDecoration, LineNumberDecoration}
|
||||
use crate::diff::LineChanges;
|
||||
use crate::error::*;
|
||||
use crate::input::OpenedInput;
|
||||
use crate::line_range::RangeCheckResult;
|
||||
use crate::line_range::{MaxBufferedLineNumber, RangeCheckResult};
|
||||
use crate::preprocessor::{expand_tabs, replace_nonprintable};
|
||||
use crate::style::StyleComponent;
|
||||
use crate::terminal::{as_terminal_escaped, to_ansi_color};
|
||||
@@ -96,6 +96,7 @@ pub(crate) trait Printer {
|
||||
handle: &mut OutputHandle,
|
||||
line_number: usize,
|
||||
line_buffer: &[u8],
|
||||
max_buffered_line_number: MaxBufferedLineNumber,
|
||||
) -> Result<()>;
|
||||
}
|
||||
|
||||
@@ -137,6 +138,7 @@ impl<'a> Printer for SimplePrinter<'a> {
|
||||
handle: &mut OutputHandle,
|
||||
_line_number: usize,
|
||||
line_buffer: &[u8],
|
||||
_max_buffered_line_number: MaxBufferedLineNumber,
|
||||
) -> Result<()> {
|
||||
// Skip squeezed lines.
|
||||
if let Some(squeeze_limit) = self.config.squeeze_lines {
|
||||
@@ -564,6 +566,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
|
||||
handle: &mut OutputHandle,
|
||||
line_number: usize,
|
||||
line_buffer: &[u8],
|
||||
max_buffered_line_number: MaxBufferedLineNumber,
|
||||
) -> Result<()> {
|
||||
let line = if self.config.show_nonprintable {
|
||||
replace_nonprintable(
|
||||
@@ -616,8 +619,12 @@ impl<'a> Printer for InteractivePrinter<'a> {
|
||||
let mut panel_wrap: Option<String> = None;
|
||||
|
||||
// Line highlighting
|
||||
let highlight_this_line =
|
||||
self.config.highlighted_lines.0.check(line_number) == RangeCheckResult::InRange;
|
||||
let highlight_this_line = self
|
||||
.config
|
||||
.highlighted_lines
|
||||
.0
|
||||
.check(line_number, max_buffered_line_number)
|
||||
== RangeCheckResult::InRange;
|
||||
|
||||
if highlight_this_line && self.config.theme == "ansi" {
|
||||
self.ansi_style.update(ANSI_UNDERLINE_ENABLE);
|
||||
|
Reference in New Issue
Block a user