@@ -15,19 +15,21 @@ pub enum OutputType {
1515}
1616
1717impl OutputType {
18− pub fn from_mode(mode: PagingMode) -> Result<Self> {
18+ pub fn from_mode(mode: PagingMode, pager: Option<&str>) -> Result<Self> {
1919 use self::PagingMode::*;
2020 Ok(match mode {
21− Always => OutputType::try_pager(false)?,
22− QuitIfOneScreen => OutputType::try_pager(true)?,
21+ Always => OutputType::try_pager(false, pager)?,
22+ QuitIfOneScreen => OutputType::try_pager(true, pager)?,
2323 _ => OutputType::stdout(),
2424 })
2525 }
2626
2727 /// Try to launch the pager. Fall back to stdout in case of errors.
28− fn try_pager(quit_if_one_screen: bool) -> Result<Self> {
29− let pager = env::var("BAT_PAGER")
30− .or_else(|_| env::var("PAGER"))
28+ fn try_pager(quit_if_one_screen: bool, pager_from_config: Option<&str>) -> Result<Self> {
29+ let pager_from_env = env::var("BAT_PAGER")
30+ .or_else(|_| env::var("PAGER"));
31+ let pager = pager_from_config.map(|p| p.to_string())
32+ .or(pager_from_env.ok())
3133 .unwrap_or(String::from("less"));
3234
3335 let pagerflags = shell_words::split(&pager)