diff --git a/completions/perl b/completions/perl index a67c7699..8b296377 100644 --- a/completions/perl +++ b/completions/perl @@ -99,16 +99,22 @@ _perldoc() local perl="${1%doc}" [[ $perl == $1 ]] || ! type $perl &>/dev/null && perl= - # complete builtin perl functions case $prev in + -h|-V|-n|-o|-M|-w|-L) + return 0 + ;; + -d) + _filedir + return 0 + ;; -f) _perlfunctions $perl - return 0 + return 0 ;; esac if [[ "$cur" == -* ]]; then - COMPREPLY=( $( compgen -W '-h -v -t -u -m -l -F -X -f -q' -- "$cur" )) + COMPREPLY=( $( compgen -W '$( _parse_help "$1" -h )' -- "$cur" ) ) else # return available modules (unless it is clearly a file) if [[ "$cur" != @(*/|[.~])* ]]; then diff --git a/test/lib/completions/perldoc.exp b/test/lib/completions/perldoc.exp index 9a9d9fbf..a745b55d 100644 --- a/test/lib/completions/perldoc.exp +++ b/test/lib/completions/perldoc.exp @@ -24,17 +24,10 @@ expect { -re /@ { unresolved "$test" } default { unresolved "$test" } } - - sync_after_int -set test "- should complete options" -set options { - -h -v -t -u -m -l -F -X -f -q -} -assert_complete $options "perldoc -" $test - +assert_complete_any "perldoc -" sync_after_int