From 458e3ef20ac3f8b815f1087675b9bf820ea8c3f5 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Tue, 14 Feb 2023 21:31:29 +1100 Subject: 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 --- src/command_manager.cc | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/command_manager.cc') 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 CommandManager::loaded_modules() const +{ + return m_modules | filter([](auto&& elem) { return elem.value.state == Module::State::Loaded; }) + | transform([](auto&& elem) { return elem.key; }) + | gather(); +} + struct parse_error : runtime_error { parse_error(StringView error) -- cgit v1.2.3