Struct minus::Pager

source · []
pub struct Pager { /* private fields */ }
Expand description

A pager acts as a middleman for communication between the main application and the user with the core functions of minus

It consists of a crossbeam_channel::Sender and crossbeam_channel::Receiver pair. When a method like set_text or push_str is called, the function takes the input. wraps it in the appropriate event type and transmits it through the sender held inside the this.

The receiver part of the channel is continously polled by the pager for events. Depending on the type of event that occurs, the pager will either redraw the screen or update the PagerState

Implementations

Initialize a new pager

Example
let pager = minus::Pager::new();

Set the output text to this t

Note that unlike Pager::push_str, this replaces the original text. If you want to append text, use the Pager::push_str function or the write!/writeln! macros

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

Example
let pager = minus::Pager::new();
pager.set_text("This is a line").expect("Failed to send data to the pager");

Appends text to the pager output.

You can also use write!/writeln! macros to append data to the pager. The implementation basically calls this function internally.

One difference between using the macros and this function is that this does not require Pager to be declared mutable while in order to use the macros, you need to declare the Pager as mutable.

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

Example
use std::fmt::Write;

let mut pager = minus::Pager::new();
pager.push_str("This is some text").expect("Failed to send data to the pager");
// This is same as above
write!(pager, "This is some text").expect("Failed to send data to the pager");

Set line number configuration for the pager

See LineNumbers for available options

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

Example
use minus::{Pager, LineNumbers};

let pager = Pager::new();
pager.set_line_numbers(LineNumbers::Enabled).expect("Failed to send data to the pager");

Set the text displayed at the bottom prompt

Panics

This function panics if the given text contains newline characters. This is because, the pager reserves only one line for showing the prompt and a newline will cause it to span multiple lines, breaking the display

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

Example

use minus::Pager;

let pager = Pager::new();
pager.set_prompt("my prompt").expect("Failed to send data to the pager");

Display a temporary message at the prompt area

Panics

This function panics if the given text contains newline characters. This is because, the pager reserves only one line for showing the prompt and a newline will cause it to span multiple lines, breaking the display

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

Example
use minus::Pager;

let pager = Pager::new();
pager.send_message("An error occurred").expect("Failed to send data to the pager");

Set the default exit strategy.

This controls how the pager will behave when the user presses q or Ctrl+C. See ExitStrategy for available options

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

use minus::{Pager, ExitStrategy};

let pager = Pager::new();
pager.set_exit_strategy(ExitStrategy::ProcessQuit).expect("Failed to send data to the pager");

Set whether to display pager if there’s less data than available screen height

When this is set to false, the pager will simply print all the lines to the main screen and immediately quit if the number of lines to display is less than the available columns in the terminal. Setting this to true will cause a full pager to start and display the data even if there is less number of lines to display than available rows.

This is only available in static output mode as the size of the data is known beforehand. In async output the pager can receive more data anytime

By default this is set to false

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

use minus::Pager;

let pager = Pager::new();
pager.set_run_no_overflow(true).expect("Failed to send data to the pager");

Set a custom input classifer function.

When the pager encounters a user input, it calls the input classifer with the event and PagerState as parameters.

A input classifier is a type implementing the InputClassifier trait. It only has one required function, InputClassifier::classify_input which matches user input events and maps them to a InputEvents.

See the InputHandler trait for information about implementing it.

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

Adds a function that will be called when the user quits the pager

Multiple functions can be stored for calling when the user quits. These functions run sequentially in the order they were added

Errors

This function will return a Err(MinusError::Communication) if the data could not be sent to the receiver

Example
use minus::Pager;

fn hello() {
    println!("Hello");
}

let pager = Pager::new();
pager.add_exit_callback(Box::new(hello)).expect("Failed to send data to the pager");

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Returns the “default value” for a type. Read more

Writes a string slice into this writer, returning whether the write succeeded. Read more

Writes a char into this writer, returning whether the write succeeded. Read more

Glue for usage of the write! macro with implementors of this trait. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.