2012-04-03 14:01:01 +02:00
|
|
|
#include "hook_manager.hh"
|
|
|
|
|
|
|
|
namespace Kakoune
|
|
|
|
{
|
|
|
|
|
2012-04-14 03:17:09 +02:00
|
|
|
void HookManager::add_hook(const String& hook_name, HookFunc hook)
|
2012-04-03 14:01:01 +02:00
|
|
|
{
|
|
|
|
m_hook[hook_name].push_back(hook);
|
|
|
|
}
|
|
|
|
|
2012-04-14 03:17:09 +02:00
|
|
|
void HookManager::run_hook(const String& hook_name,
|
|
|
|
const String& param,
|
2013-01-17 13:44:14 +01:00
|
|
|
Context& context) const
|
2012-04-03 14:01:01 +02:00
|
|
|
{
|
2012-06-07 15:29:44 +02:00
|
|
|
if (m_parent)
|
|
|
|
m_parent->run_hook(hook_name, param, context);
|
|
|
|
|
2012-04-03 14:01:01 +02:00
|
|
|
auto hook_list_it = m_hook.find(hook_name);
|
|
|
|
if (hook_list_it == m_hook.end())
|
|
|
|
return;
|
|
|
|
|
|
|
|
for (auto& hook : hook_list_it->second)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
hook(param, context);
|
|
|
|
}
|
|
|
|
catch (runtime_error&) {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|