aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-03-13 01:49:36 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-03-13 01:49:36 +0000
commitb676382e11a8315ca47af6b08423e298cd29de9e (patch)
treeea41d17942b370a77fed04bf06be3d892727511e
parent6f06acc5cb4c1c7f01b97498cf0638bfff24c601 (diff)
downloadzsh-b676382e11a8315ca47af6b08423e298cd29de9e.tar.gz
zsh-b676382e11a8315ca47af6b08423e298cd29de9e.tar.xz
zsh-b676382e11a8315ca47af6b08423e298cd29de9e.zip
Initial revision
-rw-r--r--Completion/User/_perl65
1 files changed, 65 insertions, 0 deletions
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 <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 "$@"