Don't add artificial newline to last line if --style=plain

This fixes #1438.

Note however, that using a pager such as less will add a newline itself.
So to actually not print a newline for such files, you need to either
disable paging:

  bat --style=plain --paging=never no-newline-at-end-of-file.txt

or use a "pager" that does not add a newline:

  bat --style=plain --pager=cat no-newline-at-end-of-file.txt

Note that we also update syntax tests file since a bunch of them had
missing newlines on the last lines.
This commit is contained in:
Martin Nordholts 2020-12-16 19:22:31 +01:00
parent c3fc1b88fe
commit 68d525cd8b
17 changed files with 16 additions and 14 deletions

View File

@ -5,6 +5,8 @@
## Bugfixes
- If the last line doesn't end with a newline character, don't add it if `--style=plain`, see #1438 (@Enselic)
## Other
## Syntaxes

View File

@ -460,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

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