1
0
mirror of https://github.com/sharkdp/bat.git synced 2025-09-17 02:32:26 +01:00

Add --pager option

This commit is contained in:
Park Juhyung
2018-10-21 19:52:29 +09:00
committed by David Peter
parent b22a9f8fe3
commit 154186a58d
4 changed files with 29 additions and 10 deletions

View File

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