reovim_module_vim/
providers.rs1use std::sync::Arc;
7
8use {
9 reovim_driver_input::{DefaultModeProvider, ProviderPriority},
10 reovim_kernel::api::v1::{ModeId, ModuleId},
11};
12
13pub struct VimDefaultModeProvider {
18 _marker: (),
20}
21
22impl VimDefaultModeProvider {
23 #[must_use]
25 pub const fn new() -> Self {
26 Self { _marker: () }
27 }
28}
29
30impl Default for VimDefaultModeProvider {
31 fn default() -> Self {
32 Self::new()
33 }
34}
35
36impl DefaultModeProvider for VimDefaultModeProvider {
37 fn provider_id(&self) -> &ModuleId {
38 static ID: ModuleId = ModuleId::new("vim");
40 &ID
41 }
42
43 fn priority(&self) -> ProviderPriority {
44 ProviderPriority::Default
45 }
46
47 fn entry_mode(&self) -> &ModeId {
48 static MODE: ModeId = ModeId::with_discriminant(ModuleId::new("vim"), "normal", 0);
50 &MODE
51 }
52}
53
54pub struct VimModuleProviderExt;
58
59impl VimModuleProviderExt {
60 #[must_use]
62 pub fn default_mode_provider() -> Option<Arc<dyn DefaultModeProvider>> {
63 Some(Arc::new(VimDefaultModeProvider::new()))
64 }
65}