Merge pull request #1440 from Enselic/fix-1438-newline-can-be-added-even-if-style-plain

Don't add artificial newline to last line if --style=plain
This commit is contained in:
David Peter 2020-12-21 09:24:26 +01:00 committed by GitHub
commit cc7b89faf8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 31 additions and 19 deletions

View File

@ -5,7 +5,8 @@
## Bugfixes
- only print themes hint in interactive mode (`bat --list-themes`), see #1439 (@rsteube)
- If the last line doesn't end with a newline character, don't add it if `--style=plain`, see #1438 (@Enselic)
- Only print themes hint in interactive mode (`bat --list-themes`), see #1439 (@rsteube)
- Make ./tests/syntax-tests/regression_test.sh work on recent versions of macOS, see #1443 (@Enselic)
## Other

View File

@ -72,7 +72,7 @@ pub fn replace_nonprintable(input: &[u8], tab_width: usize) -> String {
}
}
// line feed
'\x0A' => output.push('␊'),
'\x0A' => output.push_str("\x0A"),
// carriage return
'\x0D' => output.push('␍'),
// null

View File

@ -91,9 +91,6 @@ impl<'a> Printer for SimplePrinter<'a> {
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)?
};
@ -463,7 +460,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
}
}
if line.bytes().next_back() != Some(b'\n') {
if !self.config.style_components.plain() && line.bytes().next_back() != Some(b'\n') {
writeln!(handle)?;
}
} else {

View File

@ -813,3 +813,17 @@ fn show_all_mode() {
.stdout("hello·world␊\n├──┤␍␀␇␈␛")
.stderr("");
}
#[test]
fn plain_mode_does_not_add_nonexisting_newline() {
bat()
.arg("--paging=never")
.arg("--color=never")
.arg("--decorations=always")
.arg("--style=plain")
.arg("single-line.txt")
.assert()
.success()
.stdout("Single Line");
}

View File

@ -175,4 +175,4 @@
\u{ad}␊
\u{ae}␊
␊
Here's·a·line·with·multiple·characters.
Here's·a·line·with·multiple·characters.␊