Pass '--mouse' to less versions >= 551

When using `less` version 551 or newer, `bat` will now pass the `--mouse` argument, allowing
for (better) mouse scrolling support in some terminals.

closes #904
This commit is contained in:
sharkdp 2020-04-21 08:56:26 +02:00 committed by David Peter
parent 97ea3dd4dc
commit c386cb35fb
2 changed files with 15 additions and 1 deletions

View File

@ -6,6 +6,8 @@
in the header. This is useful when piping input into `bat`. See #654 and #892 (@neuronull). in the header. This is useful when piping input into `bat`. See #654 and #892 (@neuronull).
- Added a new `--generate-config-file` option to creat an initial configuration file - Added a new `--generate-config-file` option to creat an initial configuration file
at the right place. See #870 (@jmick414) at the right place. See #870 (@jmick414)
- When using `less` version 551 or newer, `bat` will now pass the `--mouse` argument, allowing
for (better) mouse scrolling support in some terminals, see #904
## Bugfixes ## Bugfixes

View File

@ -82,11 +82,13 @@ impl OutputType {
p.arg("--quit-if-one-screen"); p.arg("--quit-if-one-screen");
} }
let less_version = retrieve_less_version();
// Passing '--no-init' fixes a bug with '--quit-if-one-screen' in older // Passing '--no-init' fixes a bug with '--quit-if-one-screen' in older
// versions of 'less'. Unfortunately, it also breaks mouse-wheel support. // versions of 'less'. Unfortunately, it also breaks mouse-wheel support.
// //
// See: http://www.greenwoodsoftware.com/less/news.530.html // See: http://www.greenwoodsoftware.com/less/news.530.html
match retrieve_less_version() { match less_version {
None => { None => {
p.arg("--no-init"); p.arg("--no-init");
} }
@ -95,6 +97,16 @@ impl OutputType {
} }
_ => {} _ => {}
} }
// Passing '--mouse' allows mouse scrolling in terminals which do not
// support "fake scrolling", see https://github.com/sharkdp/bat/issues/904
// The '--mouse' argument is only supported in less 551 or higher.
match less_version {
Some(version) if version >= 551 => {
p.arg("--mouse");
}
_ => {}
}
} else { } else {
p.args(args); p.args(args);
} }