diff options
Diffstat (limited to 'src/config/keymap/mod.rs')
| -rw-r--r-- | src/config/keymap/mod.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/config/keymap/mod.rs b/src/config/keymap/mod.rs new file mode 100644 index 0000000..e9995f2 --- /dev/null +++ b/src/config/keymap/mod.rs @@ -0,0 +1,41 @@ +use mlua::{Function, UserData}; +use ratatui::crossterm::event::KeyEvent; + +use self::{ + event_from_string::event_from_string, + keymap_store::{KeyMapStore, Runnable}, +}; + +use super::{GlobalConfig, DUMMY_CONFIG}; +use template::KeyMapSections; + +KeyMapSections!( + ViewKeyMap => view, + GlobalKeyMap => global, +); + +#[derive(Debug, Default, Clone)] +pub struct KeyMap { + pub view: ViewKeyMap, + pub global: GlobalKeyMap, +} + +pub mod event_from_string; +pub mod keymap_store; +pub mod template; + +impl KeyMap { + pub const fn new() -> Self { + Self { + view: ViewKeyMap::new(), + global: GlobalKeyMap::new(), + } + } +} + +impl UserData for KeyMap { + fn add_fields<'lua, F: mlua::prelude::LuaUserDataFields<'lua, Self>>(fields: &mut F) { + fields.add_field_function_get("view", |_, _| Ok(DUMMY_CONFIG.keymap.view.clone())); + fields.add_field_function_get("global", |_, _| Ok(DUMMY_CONFIG.keymap.global.clone())); + } +} |