summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-03-05 19:03:42 +0100
committerMaxime Coste <frrrwww@gmail.com>2013-03-05 19:03:42 +0100
commit09cf5acb23bb8f543fc4d81652bdfc4545978008 (patch)
tree7d30cedc2816cbf192a5a747078132696c832c72 /src
parentfac222a4274da423acadb98173dc2023050b648f (diff)
Add support for boolean options
Diffstat (limited to 'src')
-rw-r--r--src/input_handler.cc2
-rw-r--r--src/main.cc2
-rw-r--r--src/option_manager.cc19
3 files changed, 19 insertions, 4 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc
index 16454499..b4fe225b 100644
--- a/src/input_handler.cc
+++ b/src/input_handler.cc
@@ -377,7 +377,7 @@ public:
DisplayCoord menu_pos{ context().ui().dimensions().line, 0_char };
context().ui().menu_show(candidates, menu_pos, MenuStyle::Prompt);
- bool use_common_prefix = context().options()["complete_prefix"].get<int>();
+ bool use_common_prefix = context().options()["complete_prefix"].get<bool>();
String prefix = use_common_prefix ? common_prefix(candidates) : String();
if (m_completions.end - m_completions.start > prefix.length())
prefix = line.substr(m_completions.start,
diff --git a/src/main.cc b/src/main.cc
index 2e8692bd..3dff00f2 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -176,7 +176,7 @@ void do_search(Context& context)
RegisterManager::instance()['/'] = ex;
context.push_jump();
}
- else if (ex.empty() or not context.options()["incsearch"].get<int>())
+ else if (ex.empty() or not context.options()["incsearch"].get<bool>())
return;
context.editor().select(std::bind(select_next_match<forward>, _1, ex), mode);
diff --git a/src/option_manager.cc b/src/option_manager.cc
index f08a23e9..477deab6 100644
--- a/src/option_manager.cc
+++ b/src/option_manager.cc
@@ -54,6 +54,21 @@ template class TypedOption<int>;
template const int& Option::get<int>() const;
template void Option::set<int>(const int&);
+// TypedOption<bool> specializations;
+template<> String TypedOption<bool>::get_as_string() const { return m_value ? "true" : "false"; }
+template<> void TypedOption<bool>::set_from_string(const String& str)
+{
+ if (str == "true" or str == "yes")
+ m_value = true;
+ else if (str == "false" or str == "no")
+ m_value = false;
+ else
+ throw runtime_error("boolean values are either true, yes, false or no");
+}
+template class TypedOption<bool>;
+template const bool& Option::get<bool>() const;
+template void Option::set<bool>(const bool&);
+
OptionManager::OptionManager(OptionManager& parent)
: m_parent(&parent)
{
@@ -164,8 +179,8 @@ GlobalOptions::GlobalOptions()
declare_option<String>("eolformat", "lf");
declare_option<String>("BOM", "no");
declare_option<String>("shell", "sh");
- declare_option<int>("complete_prefix", 1);
- declare_option<int>("incsearch", 1);
+ declare_option<bool>("complete_prefix", true);
+ declare_option<bool>("incsearch", true);
declare_option<String>("ignored_files", R"(^(\..*|.*\.(o|so|a)))$)");
declare_option<String>("filetype", "");
}