pub mod autocomplete;
pub mod history;
pub mod stdin;
use crate::{
errors::LisaError,
input::{autocomplete::AutocompleteProvider, history::HistoryProvider},
};
pub trait InputProvider: Send + Sync {
#[must_use]
fn is_stdin(&self) -> bool;
#[must_use]
fn is_active(&self) -> bool;
fn set_active(&mut self, active: bool) -> Result<(), LisaError>;
#[must_use]
fn input_in_progress(&self) -> bool;
#[must_use]
fn current_input(&self) -> String;
#[must_use]
fn poll_for_input(&mut self, ansi_supported: bool) -> Vec<TerminalInputEvent>;
fn set_autocomplete_provider(&mut self, autocomplete: Box<dyn AutocompleteProvider>);
#[must_use]
fn current_autocomplete_suggestion(&self) -> Option<String>;
#[must_use]
fn autocomplete_suggestion_pending(&self) -> bool;
fn set_history_provider(&mut self, history: Box<dyn HistoryProvider>);
#[must_use]
fn current_history_search_value(&self) -> Option<String>;
#[must_use]
fn is_doing_history_search(&self) -> bool;
#[must_use]
fn inputs(&mut self) -> Vec<String>;
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum TerminalInputEvent {
ClearScreen,
InputCancelled,
InputAppend(char),
InputMassAppend(String),
InputChanged(usize),
InputFinished,
InputStarted,
CursorMoveLeft(usize),
CursorMoveRight(usize),
ToggleOutputPause,
}