summaryrefslogtreecommitdiff
path: root/src/option_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2015-08-10 13:54:52 +0100
committerMaxime Coste <frrrwww@gmail.com>2015-08-10 13:54:52 +0100
commit94ec1cdde7a40d431788398f3f72aa9d1f952932 (patch)
treead52d9bc2de6993b388c4129631938ce7f570706 /src/option_manager.cc
parent10d8cf64cf80826dd27f8b8f2f7b74edc6b35ecb (diff)
Add an unset command to remove an option value (falling back to parent)
unset is not applicable to global scope.
Diffstat (limited to 'src/option_manager.cc')
-rw-r--r--src/option_manager.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/option_manager.cc b/src/option_manager.cc
index 8427f6e0..04fb3e84 100644
--- a/src/option_manager.cc
+++ b/src/option_manager.cc
@@ -76,6 +76,17 @@ const Option& OptionManager::operator[](StringView name) const
return const_cast<OptionManager&>(*this)[name];
}
+void OptionManager::unset_option(StringView name)
+{
+ kak_assert(m_parent); // cannot unset option on global manager
+ auto it = find_option(m_options, name);
+ if (it != m_options.end())
+ {
+ m_options.erase(it);
+ on_option_changed((*m_parent)[name]);
+ }
+}
+
OptionManager::OptionList OptionManager::flatten_options() const
{
OptionList res = m_parent ? m_parent->flatten_options() : OptionList{};