From b395df30aeaf9938894683e398ed0e5c11401a40 Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Mon, 22 Mar 2021 12:13:10 -0400 Subject: Silently change pager to less if $PAGER is delta Ref #531, #529, #378 --- src/bat_utils/output.rs | 19 +++++++------------ 1 file 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 -- cgit v1.2.3