diff options
Diffstat (limited to 'Completion/Unix/Command/_pydoc')
-rw-r--r-- | Completion/Unix/Command/_pydoc | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/Completion/Unix/Command/_pydoc b/Completion/Unix/Command/_pydoc index 92a01a76f..677c96ad6 100644 --- a/Completion/Unix/Command/_pydoc +++ b/Completion/Unix/Command/_pydoc @@ -1,16 +1,34 @@ -#compdef pydoc +#compdef -P pydoc[0-9.]# -local context state line +local curcontext=$curcontext state state_descr line ret=1 typeset -A opt_args +local -a args -_arguments \ - '-k[keyword]:keyword:' \ - '-p[port]:port:_ports' \ - '-g[gui]' \ - '-w[write out HTML]:file or dir:_files' \ - ':keyword, topic, module, package, or dotted reference:->lookup' && return 0 +args=( + '(- *)-k[search keyword]:keyword' + '(-k -g -w *)-p[start web server on specified port]:port number' + '(-)-w[write out HTML in current directory]' + '(-)*: :->lookup' +) -_alternative \ - 'keywords:keyword:compadd ${=${${(f)"$(pydoc keywords)"}[2,-1]}}' \ - 'topics:topic:compadd ${=${${(f)"$(pydoc topics)"}[2,-1]}}' \ - 'modules:module:' +if _pick_variant pydoc3='pydoc3 -b' pydoc2 -h; then + args+=( '(-k -w *)-b[start server and open browser]' ) +else + args+=( '(- *)-g[start gui]' ) +fi + +_arguments -C : $args && return 0 + +case $state in +(lookup) + if [[ $words[CURRENT] = */* ]]; then + _files && ret=0 + else + _alternative \ + 'keywords:keyword:compadd ${=${${(f)"$(_call_program keywords $words[1] keywords)"}[2,-1]}}' \ + 'topics:topic:compadd ${=${${(f)"$(_call_program topics $words[1] topics)"}[2,-1]}}' \ + 'modules:module:_python_modules' && ret=0 + fi +esac + +return ret |