summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2021-03-22 12:13:10 -0400
committerDan Davison <dandavison7@gmail.com>2021-03-22 12:13:10 -0400
commitb395df30aeaf9938894683e398ed0e5c11401a40 (patch)
treefa9abfb556d2871a66ff42fc86b7b1489554b051
parente7d3870529356a394d1d784f74050bf198433b1e (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.rs19
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