Infer short completion descriptions for commandline flags
Descriptions for commandline flags may not include newlines and should be rather short for display in a shell. Truncate the description string of a flag on '\n' or '.' to and add an ellipsis if needed.
This commit is contained in:
parent
e4a2a5c074
commit
a537095e1f
|
@ -29,7 +29,16 @@ void Args::removeFlag(const std::string & longName)
|
|||
|
||||
void Completions::add(std::string completion, std::string description)
|
||||
{
|
||||
assert(description.find('\n') == std::string::npos);
|
||||
// strip whitespace/empty lines from the front of the description
|
||||
description.erase(0, description.find_first_not_of(" \t\n"));
|
||||
// ellipsize overflowing content on the back of the description
|
||||
auto end_index = description.find_first_of(".\n");
|
||||
if (end_index != std::string::npos) {
|
||||
auto needs_ellipsis = end_index != description.size() - 1;
|
||||
description.resize(end_index);
|
||||
if (needs_ellipsis)
|
||||
description.append(" [...]");
|
||||
}
|
||||
insert(Completion {
|
||||
.completion = completion,
|
||||
.description = description
|
||||
|
|
Loading…
Reference in a new issue