From 766f8691e60c9e1f0b4a24b0a639ccbe0489ec47 Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Mon, 13 Mar 2000 01:49:35 +0000 Subject: zsh-workers/10087 --- Completion/User/_perl | 65 +++++++++++++++++++++++++++++++++++++++++++ Completion/User/_perl_modules | 22 +++++++++------ 2 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 Completion/User/_perl (limited to 'Completion/User') diff --git a/Completion/User/_perl b/Completion/User/_perl new file mode 100644 index 000000000..848118431 --- /dev/null +++ b/Completion/User/_perl @@ -0,0 +1,65 @@ +#compdef perl +# +# zsh completion code for the Perl interpreter +# Adam Spiers +# + +_perl () { + _arguments -s \ + '-0-:input record separator in octal (\0, if no argument): ' \ + '-a[autosplit mode with -n or -p (splits $_ into @F)]' \ + "-c[check syntax only (runs BEGIN and END blocks)]" \ + '-d[run scripts under debugger]' \ + '-d\:-[run under control of a debugging/tracing module]:debugging/tracing module:_perl_modules' \ + '-D-:set debugging flags (argument is a bit mask or flags): ' \ + "-e+:one line of script. Several -e's allowed. Omit [programfile]." \ + "-F-:split() pattern for autosplit (-a). The //'s are optional.: " \ + '-h[list help summary]' \ + '-i-[edit <> files in place (make backup if extension supplied)]:backup file extension: ' \ + '-I-[specify @INC/#include directory (may be used more than once)]:include path:_files -/' \ + '-l-[enable line ending processing, specifies line terminator]:output record separator in octal: ' \ + {-m,-M}"-[module.. executes \`use/no module...' before executing your script.]:module:_perl_m_opt" \ + "-n[assume 'while (<>) { ... }' loop around your script]" \ + "-p[assume loop like -n but print line also like sed]" \ + "-P[run script through C preprocessor before compilation]" \ + "-s[enable some switch parsing for switches after script name]" \ + "-S[look for the script using PATH environment variable]" \ + "-T[turn on tainting checks]" \ + "-u[dump core after parsing script]" \ + "-U[allow unsafe operations]" \ + "-v[print version number, patchlevel plus VERY IMPORTANT perl info]" \ + "-V-[print perl configuration information]:configuration keys:_perl_config_vars" \ + '-w[TURN WARNINGS ON FOR COMPILATION OF YOUR SCRIPT. Recommended.]' \ + '-x-[strip off text before #!perl line and perhaps cd to directory]:directory to cd to:_files -/' \ + ':Perl script:_files -g \*.pl' +} + +_perl_m_opt () { + compset -P '-' + + if compset -P '*='; then + _message 'module arguments, comma separated' + else + _perl_modules -S= -q + fi +} + +_perl_config_vars () { + if (( ! $+_perl_config_vars )); then + # perl | perl ... nasty, but is there another way? + _perl_config_vars=( $(perl -V | + perl -ne 'push @m, (/(\w+)(?==)/g);' \ + -e 'END {print join "\n", @m}' ) ) + fi + + local add_colon='-P:' + compset -P '*:' && add_colon='' + + local delimiter='\ ' + (( compstate[quoting] )) && delimiter=' ' + + compset -P '* ' && compset -q + compadd "$expl[@]" $add_colon -S$delimiter -q - $_perl_config_vars +} + +_perl "$@" diff --git a/Completion/User/_perl_modules b/Completion/User/_perl_modules index 272ebb5e4..8f6a5b882 100644 --- a/Completion/User/_perl_modules +++ b/Completion/User/_perl_modules @@ -7,16 +7,22 @@ # Calculate all installed Perl modules. The result is cached # for future use. # +# Available styles: +# +# * try-to-use-pminst +# +# Set this if you have pminst and want to use it. The zsh code +# actually produces better results because pminst misses modules of +# the form Foo/bar/Baz.pm through its clumsy -d && /^[A-Z]/ && prune +# algorithm (the zsh code does almost the same, but only misses +# modules which don't begin with an uppercase letter). -# Change this if you have pminst and want to use it. The zsh code -# actually produces better results because pminst misses modules of -# the form Foo/bar/Baz.pm through its clumsy -d && /^[A-Z]/ && prune -# algorithm (the zsh code does almost the same, but only misses modules -# which don't begin with an uppercase letter). -local try_to_use_pminst=0 +local opts +zparseopts -D -a opts S: q if [[ ${+_perl_modules} -eq 0 ]]; then - if [[ $try_to_use_pminst -ne 0 ]] && which pminst >/dev/null; then + if zstyle -t ":completion:${curcontext}:modules" try-to-use-pminst \ + && which pminst >/dev/null; then _perl_modules=( $(pminst) ) else local inc libdir new_pms @@ -43,4 +49,4 @@ fi local expl -_wanted modules expl 'Perl modules' && compadd "$expl[@]" - $_perl_modules +_wanted modules expl 'Perl modules' && compadd "$expl[@]" "$opts[@]" - $_perl_modules -- cgit 1.4.1