mirror of
https://github.com/sharkdp/bat.git
synced 2024-11-28 18:53:34 +01:00
Enable non-printable chars for redirected output (#1061)
This commit is contained in:
parent
62b4452057
commit
3c5ce9f86c
@ -5,6 +5,9 @@
|
|||||||
- Added support for the `NO_COLOR` environment variable, see #1021 and #1031 (@eth-p)
|
- Added support for the `NO_COLOR` environment variable, see #1021 and #1031 (@eth-p)
|
||||||
|
|
||||||
## Bugfixes
|
## Bugfixes
|
||||||
|
|
||||||
|
- Fixed non-printable characters display for redirected output, see #1061 (@gsomix)
|
||||||
|
|
||||||
## Other
|
## Other
|
||||||
## Syntaxes
|
## Syntaxes
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ impl<'b> Controller<'b> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let mut printer: Box<dyn Printer> = if self.config.loop_through {
|
let mut printer: Box<dyn Printer> = if self.config.loop_through {
|
||||||
Box::new(SimplePrinter::new())
|
Box::new(SimplePrinter::new(&self.config))
|
||||||
} else {
|
} else {
|
||||||
Box::new(InteractivePrinter::new(
|
Box::new(InteractivePrinter::new(
|
||||||
&self.config,
|
&self.config,
|
||||||
|
@ -52,15 +52,17 @@ pub(crate) trait Printer {
|
|||||||
) -> Result<()>;
|
) -> Result<()>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct SimplePrinter;
|
pub struct SimplePrinter<'a> {
|
||||||
|
config: &'a Config<'a>
|
||||||
|
}
|
||||||
|
|
||||||
impl SimplePrinter {
|
impl<'a> SimplePrinter<'a> {
|
||||||
pub fn new() -> Self {
|
pub fn new(config: &'a Config) -> Self {
|
||||||
SimplePrinter {}
|
SimplePrinter { config }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Printer for SimplePrinter {
|
impl<'a> Printer for SimplePrinter<'a> {
|
||||||
fn print_header(
|
fn print_header(
|
||||||
&mut self,
|
&mut self,
|
||||||
_handle: &mut dyn Write,
|
_handle: &mut dyn Write,
|
||||||
@ -86,7 +88,15 @@ impl Printer for SimplePrinter {
|
|||||||
line_buffer: &[u8],
|
line_buffer: &[u8],
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
if !out_of_range {
|
if !out_of_range {
|
||||||
handle.write_all(line_buffer)?;
|
if self.config.show_nonprintable {
|
||||||
|
let line = replace_nonprintable(line_buffer, self.config.tab_width);
|
||||||
|
write!(handle, "{}", line)?;
|
||||||
|
if line_buffer.last() == Some(&b'\n') {
|
||||||
|
writeln!(handle)?;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
handle.write_all(line_buffer)?
|
||||||
|
};
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
BIN
tests/examples/nonprintable.txt
vendored
Normal file
BIN
tests/examples/nonprintable.txt
vendored
Normal file
Binary file not shown.
@ -716,3 +716,13 @@ fn do_not_detect_different_syntax_for_stdin_and_files() {
|
|||||||
from_utf8(&cmd_for_stdin.get_output().stdout).expect("output is valid utf-8")
|
from_utf8(&cmd_for_stdin.get_output().stdout).expect("output is valid utf-8")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn show_all_mode() {
|
||||||
|
bat()
|
||||||
|
.arg("--show-all")
|
||||||
|
.arg("nonprintable.txt")
|
||||||
|
.assert()
|
||||||
|
.stdout("hello•world␊\n├──┤␍␀␇␈␛")
|
||||||
|
.stderr("");
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user