mirror of
https://github.com/sharkdp/bat.git
synced 2025-02-21 12:28:30 +00:00
Add a --style=default option (#2119)
* Add a --style=default option * Added --style=default test and CHANGELOG entry * Format CHANGELOG.md options with quotes Co-authored-by: Martin Nordholts <enselic@gmail.com> * Update help text for '--style' * Make --style=default the default option * Update style descriptions: "basic" -> "recommended" * Add integration test for --style=default as default * Update clap long help for --style
This commit is contained in:
parent
a6bd28a78b
commit
adea895026
@ -3,6 +3,7 @@
|
|||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Correctly render tab stops in --show-all, see #2038 (@Synthetica9)
|
- Correctly render tab stops in --show-all, see #2038 (@Synthetica9)
|
||||||
|
- Add a `--style=default` option, less verbose than `full`, see #2061 (@IsaacHorvath)
|
||||||
- Enable BusyBox less as pager, see #2162 (@nfisher1226)
|
- Enable BusyBox less as pager, see #2162 (@nfisher1226)
|
||||||
|
|
||||||
## Bugfixes
|
## Bugfixes
|
||||||
|
2
assets/completions/_bat.ps1.in
vendored
2
assets/completions/_bat.ps1.in
vendored
@ -37,7 +37,7 @@ Register-ArgumentCompleter -Native -CommandName '{{PROJECT_EXECUTABLE}}' -Script
|
|||||||
[CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
|
[CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
|
||||||
[CompletionResult]::new('--map-syntax', 'map-syntax', [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
|
[CompletionResult]::new('--map-syntax', 'map-syntax', [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
|
||||||
[CompletionResult]::new('--theme', 'theme', [CompletionResultType]::ParameterName, 'Set the color theme for syntax highlighting.')
|
[CompletionResult]::new('--theme', 'theme', [CompletionResultType]::ParameterName, 'Set the color theme for syntax highlighting.')
|
||||||
[CompletionResult]::new('--style', 'style', [CompletionResultType]::ParameterName, 'Comma-separated list of style elements to display (*auto*, full, plain, changes, header, header-filename, header-filesize, grid, rule, numbers, snip).')
|
[CompletionResult]::new('--style', 'style', [CompletionResultType]::ParameterName, 'Comma-separated list of style elements to display (*default*, auto, full, plain, changes, header, header-filename, header-filesize, grid, rule, numbers, snip).')
|
||||||
[CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
|
[CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
|
||||||
[CompletionResult]::new('--line-range', 'line-range', [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
|
[CompletionResult]::new('--line-range', 'line-range', [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
|
||||||
[CompletionResult]::new('-A', 'A', [CompletionResultType]::ParameterName, 'Show non-printable characters (space, tab, newline, ..).')
|
[CompletionResult]::new('-A', 'A', [CompletionResultType]::ParameterName, 'Show non-printable characters (space, tab, newline, ..).')
|
||||||
|
2
assets/completions/bat.fish.in
vendored
2
assets/completions/bat.fish.in
vendored
@ -56,7 +56,7 @@ complete -c {{PROJECT_EXECUTABLE}} -s P -d "Disable paging. Alias for '--paging=
|
|||||||
|
|
||||||
complete -c {{PROJECT_EXECUTABLE}} -s A -l show-all -d "Show non-printable characters like space/tab/newline" -n "not __fish_seen_subcommand_from cache"
|
complete -c {{PROJECT_EXECUTABLE}} -s A -l show-all -d "Show non-printable characters like space/tab/newline" -n "not __fish_seen_subcommand_from cache"
|
||||||
|
|
||||||
complete -c {{PROJECT_EXECUTABLE}} -l style -xka "auto full plain changes header header-filename header-filesize grid rule numbers snip" -d "Comma-separated list of style elements or presets to display with file contents" -n "not __fish_seen_subcommand_from cache"
|
complete -c {{PROJECT_EXECUTABLE}} -l style -xka "default auto full plain changes header header-filename header-filesize grid rule numbers snip" -d "Comma-separated list of style elements or presets to display with file contents" -n "not __fish_seen_subcommand_from cache"
|
||||||
|
|
||||||
complete -c {{PROJECT_EXECUTABLE}} -l tabs -x -d "<T> Set the tab width to T spaces (width of 0 passes tabs through directly)" -n "not __fish_seen_subcommand_from cache"
|
complete -c {{PROJECT_EXECUTABLE}} -l tabs -x -d "<T> Set the tab width to T spaces (width of 0 passes tabs through directly)" -n "not __fish_seen_subcommand_from cache"
|
||||||
|
|
||||||
|
2
assets/completions/bat.zsh.in
vendored
2
assets/completions/bat.zsh.in
vendored
@ -75,7 +75,7 @@ _{{PROJECT_EXECUTABLE}}_main() {
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
style)
|
style)
|
||||||
_values -s , 'style' auto full plain changes header header-filename header-filesize grid rule numbers snip
|
_values -s , 'style' default auto full plain changes header header-filename header-filesize grid rule numbers snip
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
2
assets/manual/bat.1.in
vendored
2
assets/manual/bat.1.in
vendored
@ -146,7 +146,7 @@ Configure which elements (line numbers, file headers, grid borders, Git modifica
|
|||||||
of components to display (e.g. 'numbers,changes,grid') or a pre\-defined style ('full').
|
of components to display (e.g. 'numbers,changes,grid') or a pre\-defined style ('full').
|
||||||
To set a default style, add the '\-\-style=".."' option to the configuration file or
|
To set a default style, add the '\-\-style=".."' option to the configuration file or
|
||||||
export the BAT_STYLE environment variable (e.g.: export BAT_STYLE=".."). Possible
|
export the BAT_STYLE environment variable (e.g.: export BAT_STYLE=".."). Possible
|
||||||
values: *full*, auto, plain, changes, header, header-filename, header-filesize, grid,
|
values: *default*, full, auto, plain, changes, header, header-filename, header-filesize, grid,
|
||||||
rule, numbers, snip.
|
rule, numbers, snip.
|
||||||
.HP
|
.HP
|
||||||
\fB\-r\fR, \fB\-\-line\-range\fR <N:M>...
|
\fB\-r\fR, \fB\-\-line\-range\fR <N:M>...
|
||||||
|
@ -322,7 +322,7 @@ impl App {
|
|||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
})
|
})
|
||||||
.or(env_style_components)
|
.or(env_style_components)
|
||||||
.unwrap_or_else(|| vec![StyleComponent::Full])
|
.unwrap_or_else(|| vec![StyleComponent::Default])
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|style| style.components(self.interactive_output))
|
.map(|style| style.components(self.interactive_output))
|
||||||
.fold(HashSet::new(), |mut acc, components| {
|
.fold(HashSet::new(), |mut acc, components| {
|
||||||
|
@ -398,6 +398,7 @@ pub fn build_app(interactive_output: bool) -> ClapApp<'static, 'static> {
|
|||||||
!&[
|
!&[
|
||||||
"auto",
|
"auto",
|
||||||
"full",
|
"full",
|
||||||
|
"default",
|
||||||
"plain",
|
"plain",
|
||||||
"header",
|
"header",
|
||||||
"header-filename",
|
"header-filename",
|
||||||
@ -419,7 +420,7 @@ pub fn build_app(interactive_output: bool) -> ClapApp<'static, 'static> {
|
|||||||
})
|
})
|
||||||
.help(
|
.help(
|
||||||
"Comma-separated list of style elements to display \
|
"Comma-separated list of style elements to display \
|
||||||
(*auto*, full, plain, changes, header, grid, rule, numbers, snip).",
|
(*default*, auto, full, plain, changes, header, header-filename, header-filesize, grid, rule, numbers, snip).",
|
||||||
)
|
)
|
||||||
.long_help(
|
.long_help(
|
||||||
"Configure which elements (line numbers, file headers, grid \
|
"Configure which elements (line numbers, file headers, grid \
|
||||||
@ -430,8 +431,9 @@ pub fn build_app(interactive_output: bool) -> ClapApp<'static, 'static> {
|
|||||||
'--style=\"..\"' option to the configuration file or export the \
|
'--style=\"..\"' option to the configuration file or export the \
|
||||||
BAT_STYLE environment variable (e.g.: export BAT_STYLE=\"..\").\n\n\
|
BAT_STYLE environment variable (e.g.: export BAT_STYLE=\"..\").\n\n\
|
||||||
Possible values:\n\n \
|
Possible values:\n\n \
|
||||||
* full: enables all available components (default).\n \
|
* default: enables recommended style components (default).\n \
|
||||||
* auto: same as 'full', unless the output is piped.\n \
|
* full: enables all available components.\n \
|
||||||
|
* auto: same as 'default', unless the output is piped.\n \
|
||||||
* plain: disables all available components.\n \
|
* plain: disables all available components.\n \
|
||||||
* changes: show Git modification markers.\n \
|
* changes: show Git modification markers.\n \
|
||||||
* header: alias for 'header-filename'.\n \
|
* header: alias for 'header-filename'.\n \
|
||||||
|
12
src/style.rs
12
src/style.rs
@ -17,6 +17,7 @@ pub enum StyleComponent {
|
|||||||
LineNumbers,
|
LineNumbers,
|
||||||
Snip,
|
Snip,
|
||||||
Full,
|
Full,
|
||||||
|
Default,
|
||||||
Plain,
|
Plain,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ impl StyleComponent {
|
|||||||
match self {
|
match self {
|
||||||
StyleComponent::Auto => {
|
StyleComponent::Auto => {
|
||||||
if interactive_terminal {
|
if interactive_terminal {
|
||||||
StyleComponent::Full.components(interactive_terminal)
|
StyleComponent::Default.components(interactive_terminal)
|
||||||
} else {
|
} else {
|
||||||
StyleComponent::Plain.components(interactive_terminal)
|
StyleComponent::Plain.components(interactive_terminal)
|
||||||
}
|
}
|
||||||
@ -48,6 +49,14 @@ impl StyleComponent {
|
|||||||
StyleComponent::LineNumbers,
|
StyleComponent::LineNumbers,
|
||||||
StyleComponent::Snip,
|
StyleComponent::Snip,
|
||||||
],
|
],
|
||||||
|
StyleComponent::Default => &[
|
||||||
|
#[cfg(feature = "git")]
|
||||||
|
StyleComponent::Changes,
|
||||||
|
StyleComponent::Grid,
|
||||||
|
StyleComponent::HeaderFilename,
|
||||||
|
StyleComponent::LineNumbers,
|
||||||
|
StyleComponent::Snip,
|
||||||
|
],
|
||||||
StyleComponent::Plain => &[],
|
StyleComponent::Plain => &[],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,6 +78,7 @@ impl FromStr for StyleComponent {
|
|||||||
"numbers" => Ok(StyleComponent::LineNumbers),
|
"numbers" => Ok(StyleComponent::LineNumbers),
|
||||||
"snip" => Ok(StyleComponent::Snip),
|
"snip" => Ok(StyleComponent::Snip),
|
||||||
"full" => Ok(StyleComponent::Full),
|
"full" => Ok(StyleComponent::Full),
|
||||||
|
"default" => Ok(StyleComponent::Default),
|
||||||
"plain" => Ok(StyleComponent::Plain),
|
"plain" => Ok(StyleComponent::Plain),
|
||||||
_ => Err(format!("Unknown style '{}'", s).into()),
|
_ => Err(format!("Unknown style '{}'", s).into()),
|
||||||
}
|
}
|
||||||
|
@ -974,6 +974,53 @@ fn header_full_binary() {
|
|||||||
.stderr("");
|
.stderr("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn header_default() {
|
||||||
|
bat()
|
||||||
|
.arg("--paging=never")
|
||||||
|
.arg("--color=never")
|
||||||
|
.arg("--terminal-width=80")
|
||||||
|
.arg("--wrap=never")
|
||||||
|
.arg("--decorations=always")
|
||||||
|
.arg("--style=default")
|
||||||
|
.arg("single-line.txt")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(
|
||||||
|
"\
|
||||||
|
───────┬────────────────────────────────────────────────────────────────────────
|
||||||
|
│ File: single-line.txt
|
||||||
|
───────┼────────────────────────────────────────────────────────────────────────
|
||||||
|
1 │ Single Line
|
||||||
|
───────┴────────────────────────────────────────────────────────────────────────
|
||||||
|
",
|
||||||
|
)
|
||||||
|
.stderr("");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn header_default_is_default() {
|
||||||
|
bat()
|
||||||
|
.arg("--paging=never")
|
||||||
|
.arg("--color=never")
|
||||||
|
.arg("--terminal-width=80")
|
||||||
|
.arg("--wrap=never")
|
||||||
|
.arg("--decorations=always")
|
||||||
|
.arg("single-line.txt")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(
|
||||||
|
"\
|
||||||
|
───────┬────────────────────────────────────────────────────────────────────────
|
||||||
|
│ File: single-line.txt
|
||||||
|
───────┼────────────────────────────────────────────────────────────────────────
|
||||||
|
1 │ Single Line
|
||||||
|
───────┴────────────────────────────────────────────────────────────────────────
|
||||||
|
",
|
||||||
|
)
|
||||||
|
.stderr("");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn filename_stdin() {
|
fn filename_stdin() {
|
||||||
bat()
|
bat()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user