diff options
author | Dan Davison <dandavison7@gmail.com> | 2021-03-22 12:13:10 -0400 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2021-03-22 12:13:10 -0400 |
commit | b395df30aeaf9938894683e398ed0e5c11401a40 (patch) | |
tree | fa9abfb556d2871a66ff42fc86b7b1489554b051 | |
parent | e7d3870529356a394d1d784f74050bf198433b1e (diff) |
Silently change pager to less if $PAGER is delta529-use-less-if-pager-is-delta
Ref #531, #529, #378
-rw-r--r-- | src/bat_utils/output.rs | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/bat_utils/output.rs b/src/bat_utils/output.rs index 26cd4e21..717ffba4 100644 --- a/src/bat_utils/output.rs +++ b/src/bat_utils/output.rs @@ -80,8 +80,13 @@ impl OutputType { shell_words::split(&pager).chain_err(|| "Could not parse pager command.")?; match pagerflags.split_first() { - Some((pager_name, args)) => { - let pager_path = PathBuf::from(pager_name); + Some((pager_name, mut args)) => { + let mut pager_path = PathBuf::from(pager_name); + if pager_path.file_stem() == Some(&OsString::from("delta")) { + // This would be a non-terminating recursion. + pager_path = PathBuf::from("less"); + args = &[]; + } let is_less = pager_path.file_stem() == Some(&OsString::from("less")); @@ -118,16 +123,6 @@ impl OutputType { p.env("LESSCHARSET", "UTF-8"); p } else { - if pager_path.file_stem() == Some(&OsString::from("delta")) { - eprintln!( - "\ -It looks like you have set delta as the value of $PAGER. \ -This would result in a non-terminating recursion. \ -delta is not an appropriate value for $PAGER \ -(but it is an appropriate value for $GIT_PAGER)." - ); - std::process::exit(1); - } let mut p = Command::new(&pager_path); p.args(args); p |