use std::sync::Arc;
use {
reovim_driver_input::{DefaultModeProvider, ProviderPriority},
reovim_kernel::api::v1::{ModeId, ModuleId},
};
pub struct VimDefaultModeProvider {
_marker: (),
}
impl VimDefaultModeProvider {
#[must_use]
pub const fn new() -> Self {
Self { _marker: () }
}
}
impl Default for VimDefaultModeProvider {
fn default() -> Self {
Self::new()
}
}
impl DefaultModeProvider for VimDefaultModeProvider {
fn provider_id(&self) -> &ModuleId {
static ID: ModuleId = ModuleId::new("vim");
&ID
}
fn priority(&self) -> ProviderPriority {
ProviderPriority::Default
}
fn entry_mode(&self) -> &ModeId {
static MODE: ModeId = ModeId::with_discriminant(ModuleId::new("vim"), "normal", 0);
&MODE
}
}
pub struct VimModuleProviderExt;
impl VimModuleProviderExt {
#[must_use]
pub fn default_mode_provider() -> Option<Arc<dyn DefaultModeProvider>> {
Some(Arc::new(VimDefaultModeProvider::new()))
}
}