1
0
Fork 0
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:
Ali Mohammad Pur 2022-03-23 17:57:54 +04:30 committed by Ali Mohammad Pur
parent d995be428a
commit ef5523231c
Notes: sideshowbarker 2024-07-17 16:44:01 +09:00
2 changed files with 10 additions and 4 deletions

View file

@ -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);
}
}
}

View file

@ -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));