Cleanup __fish_complete_subcommand

The external-commands-only completion was briefly added in 3.1.0 and removed
in 3.1.1 (see #6798), which means we can remove some dead code.

Maybe we should just remove __fish_complete_external_command - it could break
users, but then again, we don't really have a way to stop people from starting
to use this deprecated function. The underscores ought to communicate that
this is function is private to fish but that is not enforced.
This commit is contained in:
Johannes Altmanninger 2020-08-06 20:37:44 +02:00
parent b947e360db
commit d7ccc475cf
8 changed files with 8 additions and 17 deletions

View file

@ -1,3 +1,2 @@
complete -c and -s h -l help -d 'Display help and exit' complete -c and -s h -l help -d 'Display help and exit'
complete -c and -xa '(__fish_complete_subcommand --allow-functions-and-builtins)' complete -c and -xa '(__fish_complete_subcommand)'

View file

@ -1,2 +1,2 @@
complete -c begin -s h -l help -d 'Display help and exit' complete -c begin -s h -l help -d 'Display help and exit'
complete -c begin -xa '(__fish_complete_subcommand --allow-functions-and-builtins)' complete -c begin -xa '(__fish_complete_subcommand)'

View file

@ -1,2 +1,2 @@
complete -c if -s h -l help -d 'Display help and exit' complete -c if -s h -l help -d 'Display help and exit'
complete -c if -xa '(__fish_complete_subcommand --allow-functions-and-builtins)' complete -c if -xa '(__fish_complete_subcommand)'

View file

@ -1,2 +1,2 @@
complete -c not -s h -l help -d 'Display help and exit' complete -c not -s h -l help -d 'Display help and exit'
complete -c not -xa '(__fish_complete_subcommand --allow-functions-and-builtins)' complete -c not -xa '(__fish_complete_subcommand)'

View file

@ -1,3 +1,3 @@
complete -c or -s h -l help -d 'Display help and exit' complete -c or -s h -l help -d 'Display help and exit'
complete -c or -xa '(__fish_complete_subcommand --allow-functions-and-builtins)' complete -c or -xa '(__fish_complete_subcommand)'

View file

@ -1,2 +1,2 @@
complete -c while -s h -l help -d 'Display help and exit' complete -c while -s h -l help -d 'Display help and exit'
complete -c while -xa '(__fish_complete_subcommand --allow-functions-and-builtins)' complete -c while -xa '(__fish_complete_subcommand)'

View file

@ -1,3 +1,4 @@
# TODO: This function is deprecated, figure out a way to tell users.
function __fish_complete_external_command function __fish_complete_external_command
complete -C "$argv[1]" complete -C "$argv[1]"
end end

View file

@ -1,12 +1,10 @@
function __fish_complete_subcommand -d "Complete subcommand" --no-scope-shadowing function __fish_complete_subcommand -d "Complete subcommand" --no-scope-shadowing
# Pass --commandline to complete the remainder of the arguments instead of the commandline. # Pass --commandline to complete the remainder of the arguments instead of the commandline.
# Pass --allow-functions-and-builtins to enable the completion of the first token as function or builtin.
# Other args are considered flags to the supercommand that require an option. # Other args are considered flags to the supercommand that require an option.
# How many non-option tokens we skip in the input commandline before completing the subcommand # How many non-option tokens we skip in the input commandline before completing the subcommand
# Usually 1; for ssh 2. # Usually 1; for ssh 2.
set -l skip_next 1 set -l skip_next 1
set -l allow_functions_and_builtins false
set -l subcommand set -l subcommand
while string match -rq -- '^--[a-z]' $argv[1] while string match -rq -- '^--[a-z]' $argv[1]
set -l arg $argv[1] set -l arg $argv[1]
@ -14,8 +12,6 @@ function __fish_complete_subcommand -d "Complete subcommand" --no-scope-shadowin
switch $arg switch $arg
case '--fcs-skip=*' case '--fcs-skip=*'
set skip_next (string split = -- $arg)[2] set skip_next (string split = -- $arg)[2]
case --allow-functions-and-builtins
set allow_functions_and_builtins true
case --commandline case --commandline
set subcommand $argv set subcommand $argv
set -e argv set -e argv
@ -48,10 +44,5 @@ function __fish_complete_subcommand -d "Complete subcommand" --no-scope-shadowin
end end
end end
if test $allow_functions_and_builtins = false && test (count $subcommand) -eq 1 printf "%s\n" (complete -C "$subcommand")
__fish_complete_external_command "$subcommand"
else
printf "%s\n" (complete -C "$subcommand")
end
end end