pub struct Reedline { /* private fields */ }
Expand description
Line editor engine
Example usage
use reedline::{Reedline, Signal, DefaultPrompt};
let mut line_editor = Reedline::create();
let prompt = DefaultPrompt::default();
let out = line_editor.read_line(&prompt).unwrap();
match out {
Signal::Success(content) => {
// process content
}
_ => {
eprintln!("Entry aborted!");
}
}
Implementations§
source§impl Reedline
impl Reedline
sourcepub fn create_history_session_id() -> Option<HistorySessionId>
pub fn create_history_session_id() -> Option<HistorySessionId>
Get a new history session id based on the current time and the first commit datetime of reedline
sourcepub fn enable_bracketed_paste(&mut self) -> Result<()>
pub fn enable_bracketed_paste(&mut self) -> Result<()>
Enable BracketedPaste feature.
sourcepub fn disable_bracketed_paste(&mut self) -> Result<()>
pub fn disable_bracketed_paste(&mut self) -> Result<()>
Disable BracketedPaste feature.
sourcepub fn get_history_session_id(&self) -> Option<HistorySessionId>
pub fn get_history_session_id(&self) -> Option<HistorySessionId>
Return the previously generated history session id
sourcepub fn set_history_session_id(
&mut self,
session: Option<HistorySessionId>
) -> Result<()>
pub fn set_history_session_id( &mut self, session: Option<HistorySessionId> ) -> Result<()>
Set a new history session id This should be used in situations where the user initially did not have a history_session_id and then later realized they want to have one without restarting the application.
sourcepub fn with_hinter(self, hinter: Box<dyn Hinter>) -> Self
pub fn with_hinter(self, hinter: Box<dyn Hinter>) -> Self
A builder to include a Hinter
in your instance of the Reedline engine
Example
//Cargo.toml
//[dependencies]
//nu-ansi-term = "*"
use {
nu_ansi_term::{Color, Style},
reedline::{DefaultHinter, Reedline},
};
let mut line_editor = Reedline::create().with_hinter(Box::new(
DefaultHinter::default()
.with_style(Style::new().italic().fg(Color::LightGray)),
));
sourcepub fn disable_hints(self) -> Self
pub fn disable_hints(self) -> Self
Remove current Hinter
sourcepub fn with_completer(self, completer: Box<dyn Completer>) -> Self
pub fn with_completer(self, completer: Box<dyn Completer>) -> Self
A builder to configure the tab completion
Example
// Create a reedline object with tab completions support
use reedline::{DefaultCompleter, Reedline};
let commands = vec![
"test".into(),
"hello world".into(),
"hello world reedline".into(),
"this is the reedline crate".into(),
];
let completer = Box::new(DefaultCompleter::new_with_wordlen(commands.clone(), 2));
let mut line_editor = Reedline::create().with_completer(completer);
sourcepub fn with_quick_completions(self, quick_completions: bool) -> Self
pub fn with_quick_completions(self, quick_completions: bool) -> Self
Turn on quick completions. These completions will auto-select if the completer ever narrows down to a single entry.
sourcepub fn with_partial_completions(self, partial_completions: bool) -> Self
pub fn with_partial_completions(self, partial_completions: bool) -> Self
Turn on partial completions. These completions will fill the buffer with the smallest common string from all the options
sourcepub fn with_ansi_colors(self, use_ansi_coloring: bool) -> Self
pub fn with_ansi_colors(self, use_ansi_coloring: bool) -> Self
A builder which enables or disables the use of ansi coloring in the prompt and in the command line syntax highlighting.
sourcepub fn with_highlighter(self, highlighter: Box<dyn Highlighter>) -> Self
pub fn with_highlighter(self, highlighter: Box<dyn Highlighter>) -> Self
A builder that configures the highlighter for your instance of the Reedline engine
Example
// Create a reedline object with highlighter support
use reedline::{ExampleHighlighter, Reedline};
let commands = vec![
"test".into(),
"hello world".into(),
"hello world reedline".into(),
"this is the reedline crate".into(),
];
let mut line_editor =
Reedline::create().with_highlighter(Box::new(ExampleHighlighter::new(commands)));
sourcepub fn with_history(self, history: Box<dyn History>) -> Self
pub fn with_history(self, history: Box<dyn History>) -> Self
A builder which configures the history for your instance of the Reedline engine
Example
// Create a reedline object with history support, including history size limits
use reedline::{FileBackedHistory, Reedline};
let history = Box::new(
FileBackedHistory::with_file(5, "history.txt".into())
.expect("Error configuring history with file"),
);
let mut line_editor = Reedline::create()
.with_history(history);
sourcepub fn with_history_exclusion_prefix(
self,
ignore_prefix: Option<String>
) -> Self
pub fn with_history_exclusion_prefix( self, ignore_prefix: Option<String> ) -> Self
A builder which configures history exclusion for your instance of the Reedline engine
Example
// Create a reedline instance with history that will *not* include commands starting with a space
use reedline::{FileBackedHistory, Reedline};
let history = Box::new(
FileBackedHistory::with_file(5, "history.txt".into())
.expect("Error configuring history with file"),
);
let mut line_editor = Reedline::create()
.with_history(history)
.with_history_exclusion_prefix(Some(" ".into()));
sourcepub fn with_validator(self, validator: Box<dyn Validator>) -> Self
pub fn with_validator(self, validator: Box<dyn Validator>) -> Self
A builder that configures the validator for your instance of the Reedline engine
Example
// Create a reedline object with validator support
use reedline::{DefaultValidator, Reedline};
let mut line_editor =
Reedline::create().with_validator(Box::new(DefaultValidator));
sourcepub fn with_buffer_editor(self, editor: String, extension: String) -> Self
pub fn with_buffer_editor(self, editor: String, extension: String) -> Self
A builder that configures the text editor used to edit the line buffer
Example
// Create a reedline object with vim as editor
use reedline::{DefaultValidator, Reedline};
let mut line_editor =
Reedline::create().with_buffer_editor("vim".into(), "nu".into());
sourcepub fn disable_validator(self) -> Self
pub fn disable_validator(self) -> Self
Remove the current Validator
sourcepub fn with_edit_mode(self, edit_mode: Box<dyn EditMode>) -> Self
pub fn with_edit_mode(self, edit_mode: Box<dyn EditMode>) -> Self
A builder which configures the edit mode for your instance of the Reedline engine
A builder that appends a menu to the engine
A builder that clears the list of menus added to the engine
sourcepub fn with_history_session_id(self, session: Option<HistorySessionId>) -> Self
pub fn with_history_session_id(self, session: Option<HistorySessionId>) -> Self
A builder that adds the history item id
sourcepub fn with_cursor_config(self, cursor_shapes: CursorConfig) -> Self
pub fn with_cursor_config(self, cursor_shapes: CursorConfig) -> Self
A builder that enables reedline changing the cursor shape based on the current edit mode. The current implementation sets the cursor shape when drawing the prompt. Do not use this if the cursor shape is set elsewhere, e.g. in the terminal settings or by ansi escape sequences.
sourcepub fn prompt_edit_mode(&self) -> PromptEditMode
pub fn prompt_edit_mode(&self) -> PromptEditMode
Returns the corresponding expected prompt style for the given edit mode
sourcepub fn print_history(&mut self) -> Result<()>
pub fn print_history(&mut self) -> Result<()>
Output the complete History
chronologically with numbering to the terminal
sourcepub fn print_history_session(&mut self) -> Result<()>
pub fn print_history_session(&mut self) -> Result<()>
Output the complete History
for this session, chronologically with numbering to the terminal
sourcepub fn print_history_session_id(&mut self) -> Result<()>
pub fn print_history_session_id(&mut self) -> Result<()>
Print the history session id
sourcepub fn toggle_history_session_matching(
&mut self,
session: Option<HistorySessionId>
) -> Result<()>
pub fn toggle_history_session_matching( &mut self, session: Option<HistorySessionId> ) -> Result<()>
Toggle between having a history that uses the history session id and one that does not
sourcepub fn history_mut(&mut self) -> &mut dyn History
pub fn history_mut(&mut self) -> &mut dyn History
Mutable view of the history
sourcepub fn sync_history(&mut self) -> Result<()>
pub fn sync_history(&mut self) -> Result<()>
Update the underlying History
to/from disk
sourcepub fn has_last_command_context(&self) -> bool
pub fn has_last_command_context(&self) -> bool
Check if any commands have been run.
When no commands have been run, calling Self::update_last_command_context
does not make sense and is guaranteed to fail with a “No command run” error.
sourcepub fn update_last_command_context(
&mut self,
f: &dyn Fn(HistoryItem) -> HistoryItem
) -> Result<(), ReedlineError>
pub fn update_last_command_context( &mut self, f: &dyn Fn(HistoryItem) -> HistoryItem ) -> Result<(), ReedlineError>
update the last history item with more information
sourcepub fn read_line(&mut self, prompt: &dyn Prompt) -> Result<Signal>
pub fn read_line(&mut self, prompt: &dyn Prompt) -> Result<Signal>
Wait for input and provide the user with a specified Prompt
.
Returns a crossterm::Result
in which the Err
type is crossterm::ErrorKind
to distinguish I/O errors and the Ok
variant wraps a Signal
which
handles user inputs.
sourcepub fn current_insertion_point(&self) -> usize
pub fn current_insertion_point(&self) -> usize
Returns the current insertion point of the input buffer.
sourcepub fn current_buffer_contents(&self) -> &str
pub fn current_buffer_contents(&self) -> &str
Returns the current contents of the input buffer.
sourcepub fn clear_screen(&mut self) -> Result<()>
pub fn clear_screen(&mut self) -> Result<()>
Clear the screen by printing enough whitespace to start the prompt or other output back at the first line of the terminal.
sourcepub fn clear_scrollback(&mut self) -> Result<()>
pub fn clear_scrollback(&mut self) -> Result<()>
Clear the screen and the scollback buffer of the terminal
sourcepub fn run_edit_commands(&mut self, commands: &[EditCommand])
pub fn run_edit_commands(&mut self, commands: &[EditCommand])
Executes EditCommand
actions by modifying the internal state appropriately. Does not output itself.