diff options
| author | Maxime Coste <mawww@kakoune.org> | 2018-09-12 21:24:38 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2018-09-12 21:26:21 +1000 |
| commit | 0c3d9ccd20e9833abbec6f003f3fab27da27b869 (patch) | |
| tree | 07485285268f31a3771879ce95b12b6faa770a9d /src/hook_manager.cc | |
| parent | b8d312cfe039721cb996cf83100630e64cd15c43 (diff) | |
Change remove-hooks to take a regular expression
All hooks whose group match this regex will be removed.
Fixes #2380.
Diffstat (limited to 'src/hook_manager.cc')
| -rw-r--r-- | src/hook_manager.cc | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/hook_manager.cc b/src/hook_manager.cc index 46d38fb0..93a4fc1e 100644 --- a/src/hook_manager.cc +++ b/src/hook_manager.cc @@ -32,15 +32,13 @@ void HookManager::add_hook(StringView hook_name, String group, HookFlags flags, hooks.emplace_back(new Hook{std::move(group), flags, std::move(filter), std::move(commands)}); } -void HookManager::remove_hooks(StringView group) +void HookManager::remove_hooks(const Regex& regex) { - if (group.empty()) - throw runtime_error("invalid id"); for (auto& list : m_hooks) { auto it = std::remove_if(list.value.begin(), list.value.end(), [&](const std::unique_ptr<Hook>& h) - { return h->group == group; }); + { return regex_match(h->group.begin(), h->group.end(), regex); }); if (not m_running_hooks.empty()) // we are running some hooks, defer deletion m_hooks_trash.insert(m_hooks_trash.end(), std::make_move_iterator(it), std::make_move_iterator(list.value.end())); |
