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:
committed by
David Peter
parent
b22a9f8fe3
commit
154186a58d
@@ -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)
|
||||
|
Reference in New Issue
Block a user