use rustyline::config::EditMode;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum InputMode {
Emacs,
Vi,
}
impl InputMode {
pub fn from_str(s: &str) -> Self {
match s.to_lowercase().as_str() {
"vi" | "vim" => Self::Vi,
_ => Self::Emacs,
}
}
pub fn to_edit_mode(self) -> EditMode {
match self {
Self::Emacs => EditMode::Emacs,
Self::Vi => EditMode::Vi,
}
}
}
impl Default for InputMode {
fn default() -> Self {
if let Ok(editor) = std::env::var("EDITOR")
&& editor.contains("vi")
{
return Self::Vi;
}
Self::Emacs
}
}