diff --git a/share/functions/__fish_complete_suffix.fish b/share/functions/__fish_complete_suffix.fish index b3003553f..035911a76 100644 --- a/share/functions/__fish_complete_suffix.fish +++ b/share/functions/__fish_complete_suffix.fish @@ -1,13 +1,39 @@ # # Find files that complete $argv[1], has the suffix $argv[2], and -# output them as completions with description $argv[3] +# output them as completions with the description $argv[3] Both +# $argv[1] and $argv[3] are optional, if only one is specified, it is +# assumed to be the argument to complete. # function __fish_complete_suffix -d "Complete using files" - set comp $argv[1] - set suff $argv[2] - set desc $argv[3] + # Variable declarations + + set -l comp + set -l suff + set -l desc + set -l files + + switch (count $argv) + + case 1 + set comp (commandline -ct) + set suff $argv + set desc (mimedb -d $suff) + + case 2 + set comp $argv[1] + set suff $argv[2] + set desc (mimedb -d $suff) + + case 2 + set comp $argv[1] + set suff $argv[2] + set desc $argv[2] + + end + + # Perform the completion set base (echo $comp |sed -e 's/\.[a-zA-Z0-9]*$//') eval "set files $base*$suff"