summaryrefslogtreecommitdiff
path: root/src/config/keymap/template.rs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-08-03 12:51:23 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-08-03 12:51:23 +0200
commitf7c16781c0d68b8a20bc5d88d0040940459b903e (patch)
tree9608515db54b6aaaf23175d24ace523e0c0c0bb5 /src/config/keymap/template.rs
parent4d4d72587185fb485fd6826514241680fc2d02ba (diff)
add default return value to keymap
Diffstat (limited to 'src/config/keymap/template.rs')
-rw-r--r--src/config/keymap/template.rs26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/config/keymap/template.rs b/src/config/keymap/template.rs
index c5f21dc..5425eb8 100644
--- a/src/config/keymap/template.rs
+++ b/src/config/keymap/template.rs
@@ -4,26 +4,31 @@ macro_rules! KeyMapSections {
#[derive(Debug, Default, Clone)]
pub struct $name {
store: KeyMapStore,
+ default_return: bool,
}
impl $name {
pub const fn new() -> Self {
Self {
store: KeyMapStore::new(),
+ default_return: true,
}
}
- pub fn handle(event: KeyEvent) -> Option<bool> {
- let func = { GlobalConfig::instance_mut().keymap.$key.store.get(event) };
+ pub fn handle(event: KeyEvent) -> bool {
+ let (def, func) = {
+ let mut config = GlobalConfig::instance_mut();
+ (config.keymap.$key.default_return, config.keymap.$key.store.get(event))
+ };
if let Some(func) = func {
let func = func.lock().unwrap();
match func.run() {
- Ok(value) => Some(value),
- _ => None
+ Ok(value) => value,
+ _ => def
}
} else {
- None
+ def
}
}
@@ -37,6 +42,17 @@ macro_rules! KeyMapSections {
}
impl UserData for $name {
+ fn add_fields<'lua, M: mlua::prelude::LuaUserDataFields<'lua, Self>>(fields: &mut M) {
+ fields.add_field_function_get("default", |_, _| {
+ Ok(GlobalConfig::instance().keymap.$key.default_return)
+ });
+
+ fields.add_field_function_set("default", |_, _, def: bool| {
+ GlobalConfig::instance_mut().keymap.$key.default_return = def;
+ Ok(())
+ })
+ }
+
fn add_methods<'lua, M: mlua::prelude::LuaUserDataMethods<'lua, Self>>(
methods: &mut M,
) {