use std::fmt;
use tui_textarea::Input;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum VimMode {
Normal,
Insert,
Visual,
}
impl fmt::Display for VimMode {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
match self {
Self::Normal => write!(f, "NORMAL"),
Self::Insert => write!(f, "INSERT"),
Self::Visual => write!(f, "VISUAL"),
}
}
}
#[derive(Clone)]
pub struct VimState {
mode: VimMode,
pending: Input, }
impl Default for VimState {
fn default() -> Self {
Self {
mode: VimMode::Normal,
pending: Input::default() }
}
}
impl VimState {
pub fn get_mode(&self) -> VimMode {
self.mode
}
pub fn get_pending_input(&self) -> Input {
self.pending.clone()
}
pub fn set_mode(&mut self, mode: VimMode) {
self.mode = mode;
}
}