diff options
| author | Maxime Coste <mawww@kakoune.org> | 2024-04-11 11:37:18 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2024-04-12 15:28:40 +1000 |
| commit | 3d7d0fecca885b00a7ae80180ea1841fab2c5993 (patch) | |
| tree | 94218f4a6dab3f448ceaff034e51079a0ecc2e3c /src/option_manager.cc | |
| parent | b1c114bf6d950684df0524e450782a151e6a0323 (diff) | |
Introduce "local" scope in evaluate-commands
When using `eval` a new scope named 'local' gets pushed for the
whole evaluation, this makes it possible to temporarily set
an option/hook/alias...
Local scopes nest so nested evals do work as expected.
Remove the now trivial with-option command
Diffstat (limited to 'src/option_manager.cc')
| -rw-r--r-- | src/option_manager.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/option_manager.cc b/src/option_manager.cc index 5dd3d612..0a77548f 100644 --- a/src/option_manager.cc +++ b/src/option_manager.cc @@ -28,6 +28,15 @@ OptionManager::~OptionManager() kak_assert(m_watchers.empty()); } +void OptionManager::reparent(OptionManager& parent) +{ + if (m_parent) + m_parent->unregister_watcher(*this); + + m_parent = &parent; + parent.register_watcher(*this); +} + void OptionManager::register_watcher(OptionManagerWatcher& watcher) const { kak_assert(not contains(m_watchers, &watcher)); |
