mirror of
https://github.com/wez/wezterm.git
synced 2024-11-23 23:21:08 +03:00
lua: we now watch require'd files in addition to the main config file
Finally got around to https://github.com/wez/wezterm/discussions/914#discussioncomment-960983
This commit is contained in:
parent
d23414105e
commit
ad42f1d7c4
@ -111,6 +111,28 @@ pub fn make_lua_context(config_file: &Path) -> anyhow::Result<Lua> {
|
|||||||
.to_str()
|
.to_str()
|
||||||
.ok_or_else(|| anyhow!("config file path is not UTF-8"))?;
|
.ok_or_else(|| anyhow!("config file path is not UTF-8"))?;
|
||||||
|
|
||||||
|
// Hook into loader and arrange to watch all require'd files.
|
||||||
|
// <https://www.lua.org/manual/5.3/manual.html#pdf-package.searchers>
|
||||||
|
// says that the second searcher function is the one that is responsible
|
||||||
|
// for loading lua files, so we shim around that and speculatively
|
||||||
|
// add the name of the file that it would find (as returned from
|
||||||
|
// package.searchpath) to the watch list, then we just call the
|
||||||
|
// original implementation.
|
||||||
|
lua.load(
|
||||||
|
r#"
|
||||||
|
local orig = package.searchers[2]
|
||||||
|
package.searchers[2] = function(module)
|
||||||
|
local name, err = package.searchpath(module, package.path)
|
||||||
|
if name then
|
||||||
|
package.loaded.wezterm.add_to_config_reload_watch_list(name)
|
||||||
|
end
|
||||||
|
return orig(module)
|
||||||
|
end
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.set_name("=searcher")?
|
||||||
|
.eval()?;
|
||||||
|
|
||||||
wezterm_mod.set("config_file", config_file_str)?;
|
wezterm_mod.set("config_file", config_file_str)?;
|
||||||
wezterm_mod.set(
|
wezterm_mod.set(
|
||||||
"config_dir",
|
"config_dir",
|
||||||
|
@ -18,6 +18,7 @@ As features stabilize some brief notes about them will accumulate here.
|
|||||||
* `colors.indexed` would error out with `Cannot convert String to u8`. [#2197](https://github.com/wez/wezterm/issues/2197)
|
* `colors.indexed` would error out with `Cannot convert String to u8`. [#2197](https://github.com/wez/wezterm/issues/2197)
|
||||||
* X11: closing a window when multiple were open could result in an X protocol error that closed all windows [#2198](https://github.com/wez/wezterm/issues/2198)
|
* X11: closing a window when multiple were open could result in an X protocol error that closed all windows [#2198](https://github.com/wez/wezterm/issues/2198)
|
||||||
* Config will now automatically reload after error. Previously, you would need to manually reload the config using [ReloadConfiguration](config/lua/keyassignment/ReloadConfiguration.md). [#1174](https://github.com/wez/wezterm/issues/1174)
|
* Config will now automatically reload after error. Previously, you would need to manually reload the config using [ReloadConfiguration](config/lua/keyassignment/ReloadConfiguration.md). [#1174](https://github.com/wez/wezterm/issues/1174)
|
||||||
|
* Config will now automatically reload for changes made to 'require'd lua files. Previously, only the main config file and any files that you explicitly passed to [add_to_config_reload_watch_list](config/lua/wezterm/add_to_config_reload_watch_list.md) would trigger a reload.
|
||||||
|
|
||||||
### 20220624-141144-bd1b7c5d
|
### 20220624-141144-bd1b7c5d
|
||||||
|
|
||||||
|
@ -7,5 +7,6 @@ If [automatically_reload_config](../config/automatically_reload_config.md)
|
|||||||
is enabled, then the config will be reloaded when any of the files
|
is enabled, then the config will be reloaded when any of the files
|
||||||
that have been added to the watch list have changed.
|
that have been added to the watch list have changed.
|
||||||
|
|
||||||
The intent of for this to be used together with a custom lua loader
|
*Since: nightly builds only*
|
||||||
in a future iteration of wezterm.
|
|
||||||
|
This function is now called implicitly when you `require` a lua file.
|
||||||
|
Loading…
Reference in New Issue
Block a user