summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command/_perldoc
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_perldoc')
-rw-r--r--Completion/Unix/Command/_perldoc82
1 files changed, 59 insertions, 23 deletions
diff --git a/Completion/Unix/Command/_perldoc b/Completion/Unix/Command/_perldoc
index f0595fc9f..869dbae3a 100644
--- a/Completion/Unix/Command/_perldoc
+++ b/Completion/Unix/Command/_perldoc
@@ -1,23 +1,59 @@
-#compdef perldoc
-#
-# _perldoc - zsh completion function for perldoc
-#
-# Adam Spiers <adam@spiers.net>
-#
-
-_perldoc () {
- _arguments -s \
- '-h:help:' \
- '(-q)-f:Perl built-in function:_perl_builtin_funcs:*:' \
- '(-f)-q:Perl FAQ keyword:' \
- '*:Perl pod pages:_perl_pods'
-}
-
-_perl_pods () {
- _alternative \
- 'modules:: _perl_modules' \
- 'pods:: _perl_basepods' \
- 'files:Perl modules and .pods:_files -g "*.(pod|pm)(-.)"'
-}
-
-_perldoc "$@"
+#compdef perldoc -value-,PERLDOC,-default-
+
+local curcontext="$curcontext" state line expl args ret=1
+typeset -A opt_args
+
+args=( '*:Perl pod pages:->perl-pods' )
+
+if [[ $service = *PERLDOC* ]]; then
+ compset -q
+ words=( fake "$words[@]" )
+ (( CURRENT++ ))
+ args=()
+fi
+
+_arguments -C -s -S -A "-*" \
+ '(- *)-h[print help information]' \
+ '(- *)-V[display version information]' \
+ '-v[verbose output]' \
+ '-t[use plain text output instead of nroff]' \
+ '-u[show raw Pod source]' \
+ '*-m[display entire module]:module:_perl_modules' \
+ '-l[display only filename of the module found]' \
+ '-F[consider arguments as filenames]' \
+ '(-q)-f+[view documentation for Perl built-in function]:perl builtin function:->perl-builtin-funcs' \
+ '(-f)-q+[search question headings in Perl FAQ]:regular expression' \
+ '(-d)-T[send output direct to stdout and not via pager]' \
+ '(-T)-d+[specify output file]:output file:_files' \
+ '-o+[specify output format]:output format:(man nroff pod rtf text tk xml latex)' \
+ '-M[specifies module to use for formatting]:module:_perl_modules' \
+ '-w[specify option to formatter]:option' \
+ '-X[use an index if present]' \
+ '-n+[specify replacement for nroff]:nroff replacement:_command_names -e' \
+ '-r[recursive search]' \
+ '-i[ignore case]' \
+ "$args[@]" && ret=0
+
+case $state in
+ perl-builtin-funcs)
+ : ${(A)_perl_builtin_funcs:=${(u)${${(M)${(f)"$(_call_program functions \
+ perldoc -u perlfunc 2>/dev/null)"}:#\=item [a-z]*}#* }%%[^a-z]*}}
+
+ _wanted functions expl 'perl built-in function' compadd "$@" -a - \
+ _perl_builtin_funcs && ret=0
+ ;;
+
+ perl-pods)
+ if (( $+opt_args[-F] )); then
+ _wanted files expl 'Perl modules and .pods' \
+ _files -g "*.(pod|pm)(-.)" && ret=0
+ else
+ _alternative \
+ 'modules:: _perl_modules' \
+ 'pods:: _perl_basepods' \
+ 'files:Perl modules and .pods:_files -g "*.(pod|pm)(-.)"' && ret=0
+ fi
+ ;;
+esac
+
+return ret