diff options
| author | Maxime Coste <mawww@kakoune.org> | 2023-02-14 21:31:29 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2023-02-14 21:31:29 +1100 |
| commit | 458e3ef20ac3f8b815f1087675b9bf820ea8c3f5 (patch) | |
| tree | 10e5fc855d426b4b841ed834f8a9ceeabb92ec09 /src/command_manager.cc | |
| parent | 85ceef29bdc3e9fe8cd42770f9191ad48726bda5 (diff) | |
Immediately execute ModuleLoaded hooks for already loaded modules
This is trickier than expected because ModuleLoaded hooks can (as
any other hooks) use arbitrary regular expressions for their filter.
Fixes #4841
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index ff7a143b..13d79b2d 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -90,6 +90,13 @@ void CommandManager::load_module(StringView module_name, Context& context) context.hooks().run_hook(Hook::ModuleLoaded, module_name, context); } +HashSet<String> CommandManager::loaded_modules() const +{ + return m_modules | filter([](auto&& elem) { return elem.value.state == Module::State::Loaded; }) + | transform([](auto&& elem) { return elem.key; }) + | gather<HashSet>(); +} + struct parse_error : runtime_error { parse_error(StringView error) |
