mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:17:44 +00:00
Shell+LibCore: Provide argument help strings as display trivia
This commit is contained in:
parent
d995be428a
commit
ef5523231c
2 changed files with 10 additions and 4 deletions
|
@ -716,11 +716,13 @@ void ArgsParser::autocomplete(FILE* file, StringView program_name, Span<char con
|
||||||
if (!completing_option)
|
if (!completing_option)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto write_completion = [&](auto format, auto... args) {
|
auto write_completion = [&](auto format, auto& option, auto... args) {
|
||||||
JsonObject object;
|
JsonObject object;
|
||||||
object.set("completion", String::formatted(format, args...));
|
object.set("completion", String::formatted(format, args...));
|
||||||
object.set("static_offset", 0);
|
object.set("static_offset", 0);
|
||||||
object.set("invariant_offset", option_to_complete.length());
|
object.set("invariant_offset", option_to_complete.length());
|
||||||
|
object.set("display_trivia", option.help_string);
|
||||||
|
object.set("trailing_trivia", option.requires_argument ? " " : "");
|
||||||
outln(file, "{}", object.to_string());
|
outln(file, "{}", object.to_string());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -730,7 +732,7 @@ void ArgsParser::autocomplete(FILE* file, StringView program_name, Span<char con
|
||||||
for (auto& option : m_options) {
|
for (auto& option : m_options) {
|
||||||
StringView option_string = option.long_name;
|
StringView option_string = option.long_name;
|
||||||
if (option_string.starts_with(option_pattern)) {
|
if (option_string.starts_with(option_pattern)) {
|
||||||
write_completion("--{}", option_string);
|
write_completion("--{}", option, option_string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -739,7 +741,7 @@ void ArgsParser::autocomplete(FILE* file, StringView program_name, Span<char con
|
||||||
if (option.short_name == 0)
|
if (option.short_name == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
write_completion("-{}", option.short_name);
|
write_completion("-{}", option, option.short_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1842,7 +1842,11 @@ ErrorOr<Vector<Line::CompletionSuggestion>> Shell::complete_via_program_itself(s
|
||||||
auto parsed = parsed_result.release_value();
|
auto parsed = parsed_result.release_value();
|
||||||
if (parsed.is_object()) {
|
if (parsed.is_object()) {
|
||||||
auto& object = parsed.as_object();
|
auto& object = parsed.as_object();
|
||||||
Line::CompletionSuggestion suggestion { object.get("completion").to_string() };
|
Line::CompletionSuggestion suggestion {
|
||||||
|
object.get("completion").as_string_or(""),
|
||||||
|
object.get("trailing_trivia").as_string_or(""),
|
||||||
|
object.get("display_trivia").as_string_or(""),
|
||||||
|
};
|
||||||
suggestion.static_offset = object.get("static_offset").to_u64(0);
|
suggestion.static_offset = object.get("static_offset").to_u64(0);
|
||||||
suggestion.invariant_offset = object.get("invariant_offset").to_u64(0);
|
suggestion.invariant_offset = object.get("invariant_offset").to_u64(0);
|
||||||
suggestions.append(move(suggestion));
|
suggestions.append(move(suggestion));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue