mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-17 10:20:55 +01:00
zsh-workers/10087
This commit is contained in:
parent
be0a1ed15d
commit
766f8691e6
2 changed files with 79 additions and 8 deletions
65
Completion/User/_perl
Normal file
65
Completion/User/_perl
Normal file
|
@ -0,0 +1,65 @@
|
|||
#compdef perl
|
||||
#
|
||||
# zsh completion code for the Perl interpreter
|
||||
# Adam Spiers <adam@spiers.net>
|
||||
#
|
||||
|
||||
_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 "$@"
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue