1
0
mirror of https://github.com/sharkdp/bat.git synced 2025-09-22 13:12:29 +01:00

Only leave space for git diff markers if any line is modified (#3406)

Previously, setting `--style=changes` would always print a 2-space
indent, even if the file was unmodified. This changes the style to only
print an indent if there is at least one +/- git marker in the sidebar.
This commit is contained in:
jyn
2025-09-21 22:42:56 -07:00
committed by GitHub
parent 9d003dd1b9
commit c8b8132228
3 changed files with 35 additions and 17 deletions

View File

@@ -20,6 +20,7 @@
- Send all bat errors to stderr by default, see #3336 (@JerryImMouse) - Send all bat errors to stderr by default, see #3336 (@JerryImMouse)
- Make --map-syntax target case insensitive to match --language, see #3206 (@keith-hall) - Make --map-syntax target case insensitive to match --language, see #3206 (@keith-hall)
- Correctly determine the end of the line in UTF16LE/BE input #3369 (@keith-hall) - Correctly determine the end of the line in UTF16LE/BE input #3369 (@keith-hall)
- `--style=changes` no longer prints a two-space indent when the file is unmodified, see issue #2710 and PR #3406 (@jyn514)
## Other ## Other

View File

@@ -227,7 +227,9 @@ impl<'a> InteractivePrinter<'a> {
#[cfg(feature = "git")] #[cfg(feature = "git")]
{ {
if config.style_components.changes() { if config.style_components.changes()
&& line_changes.as_ref().is_some_and(|c| !c.is_empty())
{
decorations.push(Box::new(LineChangesDecoration::new(&colors))); decorations.push(Box::new(LineChangesDecoration::new(&colors)));
} }
} }

View File

@@ -1854,11 +1854,11 @@ fn header_default() {
.success() .success()
.stdout( .stdout(
"\ "\
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
│ File: single-line.txt │ File: single-line.txt
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
1 │ Single Line 1 │ Single Line
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
", ",
) )
.stderr(""); .stderr("");
@@ -1878,16 +1878,31 @@ fn header_default_is_default() {
.success() .success()
.stdout( .stdout(
"\ "\
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
│ File: single-line.txt │ File: single-line.txt
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
1 │ Single Line 1 │ Single Line
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
", ",
) )
.stderr(""); .stderr("");
} }
#[test]
#[cfg(feature = "git")] // Expected output assumes git is enabled
// Make sure indent isn't printed if there's no changes
fn header_and_changes_only() {
bat()
.arg("--style=header-filename,changes")
.arg("--decorations=always")
.arg("--color=never")
.arg("single-line.txt")
.assert()
.success()
.stdout("File: single-line.txt\nSingle Line\n")
.stderr("");
}
#[test] #[test]
fn filename_stdin() { fn filename_stdin() {
bat() bat()
@@ -2282,12 +2297,12 @@ fn grid_for_file_without_newline() {
.success() .success()
.stdout( .stdout(
"\ "\
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
│ File: single-line.txt │ File: single-line.txt
│ Size: 11 B │ Size: 11 B
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
1 │ Single Line 1 │ Single Line
─────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────
", ",
) )
.stderr(""); .stderr("");