mirror of
https://github.com/sharkdp/bat.git
synced 2025-01-31 10:11:07 +00:00
Merge pull request #2309 from johnmatthiggins/master
Added -S flag for truncating long lines
This commit is contained in:
commit
3c9c960612
@ -1,6 +1,7 @@
|
|||||||
# unreleased
|
# unreleased
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
- Implemented `-S` and `--chop-long-lines` flags as aliases for `--wrap=never`. See #2309 (@johnmatthiggins)
|
||||||
|
|
||||||
## Bugfixes
|
## Bugfixes
|
||||||
|
|
||||||
|
@ -161,17 +161,21 @@ impl App {
|
|||||||
}),
|
}),
|
||||||
show_nonprintable: self.matches.get_flag("show-all"),
|
show_nonprintable: self.matches.get_flag("show-all"),
|
||||||
wrapping_mode: if self.interactive_output || maybe_term_width.is_some() {
|
wrapping_mode: if self.interactive_output || maybe_term_width.is_some() {
|
||||||
match self.matches.get_one::<String>("wrap").map(|s| s.as_str()) {
|
if !self.matches.contains_id("chop-long-lines") {
|
||||||
Some("character") => WrappingMode::Character,
|
match self.matches.get_one::<String>("wrap").map(|s| s.as_str()) {
|
||||||
Some("never") => WrappingMode::NoWrapping(true),
|
Some("character") => WrappingMode::Character,
|
||||||
Some("auto") | None => {
|
Some("never") => WrappingMode::NoWrapping(true),
|
||||||
if style_components.plain() {
|
Some("auto") | None => {
|
||||||
WrappingMode::NoWrapping(false)
|
if style_components.plain() {
|
||||||
} else {
|
WrappingMode::NoWrapping(false)
|
||||||
WrappingMode::Character
|
} else {
|
||||||
|
WrappingMode::Character
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
_ => unreachable!("other values for --wrap are not allowed"),
|
||||||
}
|
}
|
||||||
_ => unreachable!("other values for --wrap are not allowed"),
|
} else {
|
||||||
|
WrappingMode::NoWrapping(true)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// We don't have the tty width when piping to another program.
|
// We don't have the tty width when piping to another program.
|
||||||
|
@ -201,6 +201,13 @@ pub fn build_app(interactive_output: bool) -> Command<'static> {
|
|||||||
The '--terminal-width' option can be used in addition to \
|
The '--terminal-width' option can be used in addition to \
|
||||||
control the output width."),
|
control the output width."),
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::new("chop-long-lines")
|
||||||
|
.long("chop-long-lines")
|
||||||
|
.short('S')
|
||||||
|
.takes_value(false)
|
||||||
|
.help("Truncate all lines longer than screen width. Alias for '--wrap=never'."),
|
||||||
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::new("terminal-width")
|
Arg::new("terminal-width")
|
||||||
.long("terminal-width")
|
.long("terminal-width")
|
||||||
|
1
tests/examples/long-single-line.txt
vendored
Normal file
1
tests/examples/long-single-line.txt
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
abcdefghigklmnopqrstuvxyzabcdefghigklmnopqrstuvxyzabcdefghigklmnopqrstuvxyzabcdefghigklmnopqrstuvxyz
|
@ -1499,6 +1499,47 @@ fn ignored_suffix_arg() {
|
|||||||
.stderr("");
|
.stderr("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn wrapping_test(wrap_flag: &str, expect_wrap: bool) {
|
||||||
|
let expected = match expect_wrap {
|
||||||
|
true =>
|
||||||
|
"abcdefghigklmnopqrstuvxyzabcdefghigklmnopqrstuvxyzabcdefghigklmnopqrstuvxyzabcde\nfghigklmnopqrstuvxyz\n",
|
||||||
|
false =>
|
||||||
|
"abcdefghigklmnopqrstuvxyzabcdefghigklmnopqrstuvxyzabcdefghigklmnopqrstuvxyzabcdefghigklmnopqrstuvxyz\n",
|
||||||
|
};
|
||||||
|
|
||||||
|
bat()
|
||||||
|
.arg(wrap_flag)
|
||||||
|
.arg("--style=rule")
|
||||||
|
.arg("--color=never")
|
||||||
|
.arg("--decorations=always")
|
||||||
|
.arg("--terminal-width=80")
|
||||||
|
.arg("long-single-line.txt")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(expected.to_owned())
|
||||||
|
.stderr("");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn no_line_wrapping_when_set_to_never() {
|
||||||
|
wrapping_test("--wrap=never", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn line_wrapping_when_auto() {
|
||||||
|
wrapping_test("--wrap=auto", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn no_line_wrapping_with_s_flag() {
|
||||||
|
wrapping_test("-S", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn no_wrapping_with_chop_long_lines() {
|
||||||
|
wrapping_test("--chop-long-lines", false);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn highlighting_is_skipped_on_long_lines() {
|
fn highlighting_is_skipped_on_long_lines() {
|
||||||
let expected = "\u{1b}[38;5;231m{\u{1b}[0m\u{1b}[38;5;208m\"\u{1b}[0m\u{1b}[38;5;208mapi\u{1b}[0m\u{1b}[38;5;208m\"\u{1b}[0m\u{1b}[38;5;231m:\u{1b}[0m\n".to_owned() +
|
let expected = "\u{1b}[38;5;231m{\u{1b}[0m\u{1b}[38;5;208m\"\u{1b}[0m\u{1b}[38;5;208mapi\u{1b}[0m\u{1b}[38;5;208m\"\u{1b}[0m\u{1b}[38;5;231m:\u{1b}[0m\n".to_owned() +
|
||||||
|
Loading…
x
Reference in New Issue
Block a user