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