mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 00:31:14 +00:00
LibCore: Set the correct invariant length for consecutive short options
When completing `ls -l` to add another short option, the invariant length should be zero as we are not replacing anything with our suggestion. Also skip the initial dash if there already is one. Fixes #13301.
This commit is contained in:
parent
d665492e35
commit
bcbe258619
Notes:
sideshowbarker
2024-07-17 16:37:15 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/bcbe258619 Pull-request: https://github.com/SerenityOS/serenity/pull/13316 Issue: https://github.com/SerenityOS/serenity/issues/13301
|
@ -753,11 +753,11 @@ 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& option, auto... args) {
|
auto write_completion = [&](auto format, auto& option, auto has_invariant, 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", has_invariant ? option_to_complete.length() : 0u);
|
||||||
object.set("display_trivia", option.help_string);
|
object.set("display_trivia", option.help_string);
|
||||||
object.set("trailing_trivia", option.requires_argument ? " " : "");
|
object.set("trailing_trivia", option.requires_argument ? " " : "");
|
||||||
outln(file, "{}", object.to_string());
|
outln(file, "{}", object.to_string());
|
||||||
|
@ -771,7 +771,7 @@ void ArgsParser::autocomplete(FILE* file, StringView program_name, Span<char con
|
||||||
continue;
|
continue;
|
||||||
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, option_string);
|
write_completion("--{}", option, true, option_string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -782,7 +782,8 @@ 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, option.short_name);
|
auto has_invariant = option_to_complete == "-";
|
||||||
|
write_completion("{}{}", option, has_invariant, has_invariant ? "-" : "", option.short_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue