diff options
| author | Maxime Coste <mawww@kakoune.org> | 2018-05-30 23:23:38 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2018-07-05 07:54:28 +1000 |
| commit | b548dd3a6f369e5a244fdcdca55061513026f82a (patch) | |
| tree | 1ca672c1d6f976a74f34d37f75fd68a83933fbe1 /src/option_manager.hh | |
| parent | 5eeec8bd4d24882ea443c4441f696257b8cb68c4 (diff) | |
Change option lists to be specified as separate arguments on commands line
Option lists and maps are specified using separate arguments, avoiding
the need for additional escaping of their separator and reusing the
existing command line spliting logic instead.
As discussed on #2087, this should make it much easier to work with
list options, and make the general option system feel cleaner.
Diffstat (limited to 'src/option_manager.hh')
| -rw-r--r-- | src/option_manager.hh | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/option_manager.hh b/src/option_manager.hh index b1ecf4ef..b7de0e7e 100644 --- a/src/option_manager.hh +++ b/src/option_manager.hh @@ -54,9 +54,10 @@ public: template<typename T> bool is_of_type() const; virtual String get_as_string() const = 0; - virtual void set_from_string(StringView str) = 0; - virtual void add_from_string(StringView str) = 0; - virtual void update(const Context& context) = 0; + virtual Vector<String> get_as_strings() const = 0; + virtual void set_from_strings(ConstArrayView<String> strs) = 0; + virtual void add_from_strings(ConstArrayView<String> strs) = 0; + virtual void update(const Context& context) = 0; virtual Option* clone(OptionManager& manager) const = 0; OptionManager& manager() const { return m_manager; } @@ -141,19 +142,27 @@ public: const T& get() const { return m_value; } T& get_mutable() { return m_value; } + Vector<String> get_as_strings() const override + { + return option_to_strings(m_value); + } + String get_as_string() const override { return option_to_string(m_value); } - void set_from_string(StringView str) override + + void set_from_strings(ConstArrayView<String> strs) override { - set(option_from_string(Meta::Type<T>{}, str)); + set(option_from_strings(Meta::Type<T>{}, strs)); } - void add_from_string(StringView str) override + + void add_from_strings(ConstArrayView<String> strs) override { - if (option_add(m_value, str)) + if (option_add_from_strings(m_value, strs)) m_manager.on_option_changed(*this); } + void update(const Context& context) override { option_update(m_value, context); |
