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 ## Bugfixes
- If the last line doesn't end with a newline character, don't add it if `--style=plain`, see #1438 (@Enselic)
## Other ## Other
## Syntaxes ## 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)?; writeln!(handle)?;
} }
} else { } else {

View File

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