mirror of
https://github.com/wez/wezterm.git
synced 2024-11-23 23:21:08 +03:00
lua: reduce a bit of boilerplate around registering wezterm.submodule
This commit is contained in:
parent
d130164fb9
commit
f7848cf96d
@ -48,6 +48,26 @@ pub fn get_or_create_module<'lua>(lua: &'lua Lua, name: &str) -> anyhow::Result<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_or_create_sub_module<'lua>(
|
||||||
|
lua: &'lua Lua,
|
||||||
|
name: &str,
|
||||||
|
) -> anyhow::Result<mlua::Table<'lua>> {
|
||||||
|
let wezterm_mod = get_or_create_module(lua, "wezterm")?;
|
||||||
|
let sub = wezterm_mod.get(name)?;
|
||||||
|
match sub {
|
||||||
|
Value::Nil => {
|
||||||
|
let sub = lua.create_table()?;
|
||||||
|
wezterm_mod.set(name, sub.clone())?;
|
||||||
|
Ok(sub)
|
||||||
|
}
|
||||||
|
Value::Table(sub) => Ok(sub),
|
||||||
|
wat => anyhow::bail!(
|
||||||
|
"cannot register module wezterm.{name} as it is already set to a value of type {}",
|
||||||
|
wat.type_name()
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Set up a lua context for executing some code.
|
/// Set up a lua context for executing some code.
|
||||||
/// The path to the directory containing the configuration is
|
/// The path to the directory containing the configuration is
|
||||||
/// passed in and is used to pre-set some global values in
|
/// passed in and is used to pre-set some global values in
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use config::keyassignment::SpawnTabDomain;
|
use config::keyassignment::SpawnTabDomain;
|
||||||
use config::lua::get_or_create_module;
|
use config::lua::get_or_create_sub_module;
|
||||||
use config::lua::mlua::{self, Lua, UserData, UserDataMethods, Value as LuaValue};
|
use config::lua::mlua::{self, Lua, UserData, UserDataMethods, Value as LuaValue};
|
||||||
use luahelper::impl_lua_conversion_dynamic;
|
use luahelper::impl_lua_conversion_dynamic;
|
||||||
use mux::domain::SplitSource;
|
use mux::domain::SplitSource;
|
||||||
@ -20,8 +20,7 @@ fn get_mux() -> mlua::Result<Rc<Mux>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn register(lua: &Lua) -> anyhow::Result<()> {
|
pub fn register(lua: &Lua) -> anyhow::Result<()> {
|
||||||
let wezterm_mod = get_or_create_module(lua, "wezterm")?;
|
let mux_mod = get_or_create_sub_module(lua, "mux")?;
|
||||||
let mux_mod = lua.create_table()?;
|
|
||||||
|
|
||||||
mux_mod.set(
|
mux_mod.set(
|
||||||
"get_active_workspace",
|
"get_active_workspace",
|
||||||
@ -102,7 +101,6 @@ pub fn register(lua: &Lua) -> anyhow::Result<()> {
|
|||||||
})?,
|
})?,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
wezterm_mod.set("mux", mux_mod)?;
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use config::lua::get_or_create_module;
|
use config::lua::get_or_create_sub_module;
|
||||||
use config::lua::mlua::{self, Lua};
|
use config::lua::mlua::{self, Lua};
|
||||||
use luahelper::impl_lua_conversion_dynamic;
|
use luahelper::impl_lua_conversion_dynamic;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
@ -69,8 +69,7 @@ impl From<window::screen::Screens> for Screens {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn register(lua: &Lua) -> anyhow::Result<()> {
|
pub fn register(lua: &Lua) -> anyhow::Result<()> {
|
||||||
let wezterm_mod = get_or_create_module(lua, "wezterm")?;
|
let window_mod = get_or_create_sub_module(lua, "gui")?;
|
||||||
let window_mod = lua.create_table()?;
|
|
||||||
|
|
||||||
window_mod.set(
|
window_mod.set(
|
||||||
"screens",
|
"screens",
|
||||||
@ -84,6 +83,5 @@ pub fn register(lua: &Lua) -> anyhow::Result<()> {
|
|||||||
})?,
|
})?,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
wezterm_mod.set("gui", window_mod)?;
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user