use crate::{
Ed,
Result,
};
mod lock;
pub use lock::UILock;
mod scripted_ui;
pub use scripted_ui::ScriptedUI;
pub mod mock_ui;
pub mod dummy_ui;
pub trait UI {
fn print_message(&mut self,
data: &str,
) -> Result<()>;
fn print_commands(&mut self) -> Result<()> {
self.print_message(crate::messages::COMMAND_LIST)
}
fn print_command_documentation(&mut self) -> Result<()>;
fn get_command(&mut self,
ed: &Ed,
prefix: Option<char>,
) -> Result<String>;
fn get_input(&mut self,
ed: &Ed,
terminator: char,
#[cfg(feature = "initial_input_data")]
initial_buffer: Option<Vec<String>>,
) -> Result<Vec<String>>;
fn print_selection(&mut self,
ed: &Ed,
selection: (usize, usize),
numbered: bool,
literal: bool,
) -> Result<()>;
fn lock_ui(&mut self) -> UILock<'_>;
fn unlock_ui(&mut self);
}