mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-11 02:13:56 +09:00
Shell+LibCore: Provide argument help strings as display trivia
This commit is contained in:
parent
d995be428a
commit
ef5523231c
Notes:
sideshowbarker
2024-07-17 16:44:01 +09:00
Author: https://github.com/alimpfard
Commit: ef5523231c
Pull-request: https://github.com/SerenityOS/serenity/pull/13212
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)
|
||||
return;
|
||||
|
||||
auto write_completion = [&](auto format, auto... args) {
|
||||
auto write_completion = [&](auto format, auto& option, auto... args) {
|
||||
JsonObject object;
|
||||
object.set("completion", String::formatted(format, args...));
|
||||
object.set("static_offset", 0);
|
||||
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());
|
||||
};
|
||||
|
||||
|
@ -730,7 +732,7 @@ void ArgsParser::autocomplete(FILE* file, StringView program_name, Span<char con
|
|||
for (auto& option : m_options) {
|
||||
StringView option_string = option.long_name;
|
||||
if (option_string.starts_with(option_pattern)) {
|
||||
write_completion("--{}", option_string);
|
||||
write_completion("--{}", option, option_string);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -739,7 +741,7 @@ void ArgsParser::autocomplete(FILE* file, StringView program_name, Span<char con
|
|||
if (option.short_name == 0)
|
||||
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();
|
||||
if (parsed.is_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.invariant_offset = object.get("invariant_offset").to_u64(0);
|
||||
suggestions.append(move(suggestion));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue