JsonUI: add support for set_ui_options RPC call

As discussed on #2019
This commit is contained in:
Maxime Coste 2018-04-29 20:38:47 +10:00
parent 2fa553e728
commit 8e555cb992
2 changed files with 11 additions and 9 deletions

View File

@ -49,6 +49,8 @@ Here are the requests that can be written by the json ui on stdout:
mode can be:
- prompt: the coordinate line should be 0, and the cursor is in the prompt area
- buffer: the cursor is in the buffer display area
* set_ui_options(Map<String, String> options)
called when ui_options changed with a map of options name to option values
* refresh(bool force)
The requests that the json ui can interpret on stdin are:

View File

@ -20,19 +20,19 @@ namespace Kakoune
template<typename T>
String to_json(ArrayView<const T> array)
{
String res;
for (auto& elem : array)
{
if (not res.empty())
res += ", ";
res += to_json(elem);
}
return "[" + res + "]";
return "[" + join(array | transform([](auto&& elem) { return to_json(elem); }), ',', false) + "]";
}
template<typename T, MemoryDomain D>
String to_json(const Vector<T, D>& vec) { return to_json(ArrayView<const T>{vec}); }
template<typename K, typename V, MemoryDomain D>
String to_json(const HashMap<K, V, D>& map)
{
return "{" + join(map | transform([](auto&& i) { return format("{}: {}", to_json(i.key), to_json(i.value)); }),
',', false) + "}";
}
String to_json(int i) { return to_string(i); }
String to_json(bool b) { return b ? "true" : "false"; }
String to_json(StringView str)
@ -232,7 +232,7 @@ void JsonUI::refresh(bool force)
void JsonUI::set_ui_options(const Options& options)
{
// rpc_call("set_ui_options", options);
rpc_call("set_ui_options", options);
}
DisplayCoord JsonUI::dimensions()