mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-14 14:03:58 +00:00
complete: Make -c
optional
Currently, completions have to be specified like ```fish complete -c foo -l opt ``` while ```fish complete foo -l opt ``` just complains about there being too many arguments. That's kinda useless, so we just assume if there is one left-over argument that it's meant to be the command. Theoretically we could also use *all* the arguments as commands to complete, but that seems unlikely to be what the user wants. (I don't think multi-command completions really happen)
This commit is contained in:
parent
a8e237f0f9
commit
903b7888d3
3 changed files with 20 additions and 1 deletions
|
@ -8,7 +8,7 @@ Synopsis
|
|||
|
||||
::
|
||||
|
||||
complete ( -c | --command | -p | --path ) COMMAND
|
||||
complete [( -c | --command | -p | --path )] COMMAND
|
||||
[( -c | --command | -p | --path ) COMMAND]...
|
||||
[( -e | --erase )]
|
||||
[( -s | --short-option ) SHORT_OPTION]...
|
||||
|
|
|
@ -299,6 +299,9 @@ maybe_t<int> builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t *
|
|||
if (do_complete && !have_do_complete_param && argc == w.woptind + 1) {
|
||||
do_complete_param = argv[argc - 1];
|
||||
have_do_complete_param = true;
|
||||
} else if (!do_complete && cmd_to_complete.empty() && argc == w.woptind + 1) {
|
||||
// Or use one left-over arg as the command to complete
|
||||
cmd_to_complete.push_back(argv[argc - 1]);
|
||||
} else {
|
||||
streams.err.append_format(BUILTIN_ERR_TOO_MANY_ARGUMENTS, cmd);
|
||||
builtin_print_error_trailer(parser, streams.err, cmd);
|
||||
|
|
|
@ -358,3 +358,19 @@ end
|
|||
complete -c banana -a '1 2 3'
|
||||
complete -c banana
|
||||
#CHECK: complete -c banana -a '1 2 3'
|
||||
|
||||
# "-c" is optional
|
||||
complete banana -a bar
|
||||
complete banana
|
||||
#CHECK: complete -c banana -a bar
|
||||
#CHECK: complete -c banana -a '1 2 3'
|
||||
|
||||
# "-a" ain't
|
||||
complete banana bar
|
||||
#CHECKERR: complete: Too many arguments
|
||||
#CHECKERR:
|
||||
#CHECKERR: {{.*}}checks/complete.fish (line {{\d+}}):
|
||||
#CHECKERR: complete banana bar
|
||||
#CHECKERR: ^
|
||||
#CHECKERR:
|
||||
#CHECKERR: (Type 'help complete' for related documentation)
|
||||
|
|
Loading…
Reference in a new issue