Ease reading of command-line options

This change displays command-line options in grid format. Each
parameter is indented with two spaces and then padded to maintain
vertical alignment of each description.

I think the visual spacing makes the options much easier to
read. This is particularly important for people new to Kakoune who
use `-help` as a way to become familiar with the program.
This commit is contained in:
aver-d 2018-02-25 00:56:33 +00:00
parent 9bd9fecb53
commit f43635c4df

View File

@ -7,11 +7,26 @@ namespace Kakoune
String generate_switches_doc(const SwitchMap& switches) String generate_switches_doc(const SwitchMap& switches)
{ {
Vector<int> lengths(switches.size());
int i = 0;
for (auto& sw : switches) {
lengths[i++] = (int)sw.key.length() + (sw.value.takes_arg ? 5: 0);
}
int maxlen = *std::max_element(lengths.begin(), lengths.end());
String res; String res;
for (auto& sw : switches) i = 0;
res += format("-{} {}: {}\n", sw.key, for (auto& sw : switches) {
int len = lengths[i++];
String pad = " ";
while (len++ < maxlen)
pad += ' ';
res += format(" -{} {}{}{}\n",
sw.key,
sw.value.takes_arg ? "<arg>" : "", sw.value.takes_arg ? "<arg>" : "",
pad,
sw.value.description); sw.value.description);
}
return res; return res;
} }