Add option to disable automatic paging
@@ -65,8 +65,8 @@ struct Options<'a> {
true_color: bool,
style: OptionsStyle,
language: Option<&'a str>,
- interactive_terminal: bool,
colored_output: bool,
+ paging: bool,
}
enum OutputType<'a> {
@@ -318,8 +318,8 @@ fn get_git_diff(filename: &str) -> Option<LineChanges> {
Some(line_changes)
}
-fn get_output_type(stdout: &Stdout, interactive_terminal: bool) -> OutputType {
- if interactive_terminal {
+fn get_output_type(stdout: &Stdout, paging: bool) -> OutputType {
+ if paging {
match OutputType::pager() {
Ok(pager) => pager,
Err(_) => OutputType::stdout(&stdout),
@@ -495,6 +495,14 @@ fn run() -> Result<()> {
.default_value("auto")
.help("When to use colors"),
)
+ .arg(
+ Arg::with_name("paging")
+ .long("paging")
+ .takes_value(true)
+ .possible_values(&["auto", "never", "always"])
+ .default_value("auto")
+ .help("When to use the pager")
+ )
.subcommand(
SubCommand::with_name("init-cache")
.about("Load syntax definitions and themes into cache"),
@@ -522,12 +530,16 @@ fn run() -> Result<()> {
},
},
language: app_matches.value_of("language"),
- interactive_terminal,
colored_output: match app_matches.value_of("color") {
Some("always") => true,
Some("never") => false,
_ => interactive_terminal,
},
+ paging: match app_matches.value_of("paging") {
+ Some("always") => true,
+ Some("never") => false,
+ Some("auto") | _ => interactive_terminal,
+ }
};
let assets =
@@ -542,7 +554,7 @@ fn run() -> Result<()> {
if let Some(files) = app_matches.values_of("FILE") {
let stdout = io::stdout();
- let mut output_type = get_output_type(&stdout, options.interactive_terminal);
+ let mut output_type = get_output_type(&stdout, options.paging);
let handle = output_type.handle()?;
for file in files {
let line_changes = get_git_diff(&file.to_string());
