summaryrefslogtreecommitdiff
path: root/src/scope.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2024-04-11 11:37:18 +1000
committerMaxime Coste <mawww@kakoune.org>2024-04-12 15:28:40 +1000
commit3d7d0fecca885b00a7ae80180ea1841fab2c5993 (patch)
tree94218f4a6dab3f448ceaff034e51079a0ecc2e3c /src/scope.cc
parentb1c114bf6d950684df0524e450782a151e6a0323 (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/scope.cc')
-rw-r--r--src/scope.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/scope.cc b/src/scope.cc
index 64bcd445..fe33f6f5 100644
--- a/src/scope.cc
+++ b/src/scope.cc
@@ -4,6 +4,16 @@
namespace Kakoune
{
+void Scope::reparent(Scope& parent)
+{
+ m_options.reparent(parent.m_options);
+ m_hooks.reparent(parent.m_hooks);
+ m_keymaps.reparent(parent.m_keymaps);
+ m_aliases.reparent(parent.m_aliases);
+ m_faces.reparent(parent.m_faces);
+ m_highlighters.reparent(parent.m_highlighters);
+}
+
GlobalScope::GlobalScope()
: m_option_registry(m_options)
{