about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDoug Kearns <dkearns@users.sourceforge.net>2005-06-18 10:47:36 +0000
committerDoug Kearns <dkearns@users.sourceforge.net>2005-06-18 10:47:36 +0000
commite9171ff4d817ec08278c11a3b3164d0b5f9d61fc (patch)
tree0e34487f2e37de2d93dfc848c9f75b9bb9dfb812
parent35cd8ba30fa68db704511b046088391f06256312 (diff)
downloadzsh-e9171ff4d817ec08278c11a3b3164d0b5f9d61fc.tar.gz
zsh-e9171ff4d817ec08278c11a3b3164d0b5f9d61fc.tar.xz
zsh-e9171ff4d817ec08278c11a3b3164d0b5f9d61fc.zip
21343: update php completion for version 5.0
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Command/_php78
2 files changed, 59 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index d6721fd63..ce13fe353 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-06-18  Doug Kearns  <djkea2@gus.gscit.monash.edu.au>
+
+	* 21343: Completion/Unix/Command/_php: update php completion for
+	version 5.0; continue supporting version 4.x via _pick_variant
+
 2005-06-17  Doug Kearns  <djkea2@gus.gscit.monash.edu.au>
 
 	* unposted: Completion/Unix/Command/_darcs: tidy up command
diff --git a/Completion/Unix/Command/_php b/Completion/Unix/Command/_php
index e2fa5d174..bd210dccd 100644
--- a/Completion/Unix/Command/_php
+++ b/Completion/Unix/Command/_php
@@ -1,37 +1,67 @@
 #compdef php
 
-# PHP 4.3.6RC2 (cli) (built: Apr  9 2004 00:14:04)
+# PHP 5.0.4  (cli)
+# PHP 4.3.11 (cli)
 
-local curcontext="$curcontext" line state
+local curcontext="$curcontext" line state expl
 typeset -A opt_args
 
-_arguments -S \
-  {-a,--interactive}'[run interactively]' \
-  {-c,--php-ini}'[look for php.ini file in the specified directory]:directory:_files -/' \
-  {-n,--no-php-ini}'[no php.ini file will be used]' \
-  {-d,--define}"[define INI entry]:configuration directive:->ini" \
-  {-e,--profile-info}'[generate extended information for debugger/profiler]' \
-  '(- *)'{-h,--help}'[display help information]' \
-  '(- *)'{-i,--info}'[PHP information]' \
-  '(-)'{-l,--syntax-check}'[syntax check only (lint)]' \
-  '(- *)'{-m,--modules}'[show compiled in modules]' \
-  '(1 -l --syntax-check -s --syntax-highlight -w --strip)'{-r,--run}'[run the specified PHP code without using script tags <?..?>]:PHP code:'\
-  '(-)'{-s,--syntax-highlight}'[display colour syntax highlighted source]' \
-  '(- *)'{-v,--version}'[display version information]' \
-  '(-)'{-w,--strip}'[display source with stripped comments and whitespace]' \
-  {-z,--zend-extension}'[load specified Zend extension]:extension file:_files' \
-  '(-)1:PHP file:_files -g "*.php(-.)"' \
-  '*:script argument:_files' && return
+local -a args
+local exclusions php_files=':PHP file:_files -g "*.php(-.)"'
+
+if _pick_variant php5=PHP\ 5 php4 --version; then
+  exclusions="-B --process-begin -R --process-code -F --process-file -E --process-end"
+  args=(
+    '(-B --process-begin -f --file -r --run 1)'{-B,--process-begin}'[run specified PHP code before processing input lines]:PHP code:'
+    '(-R --process-code -F --process-file -f --file -r --run 1)'{-R,--process-code}'[run specified PHP code for every input line]:PHP code:'
+    '(-F --process-file -R --process-code -f --file -r --run 1)'{-F,--process-file}'[parse and execute specified file for every input line]'$php_files
+    '(-E --process-end -f --file -r --run 1)'{-E,--process-end}'[run specified PHP code after processing all input lines]:PHP code:'
+    '(-H --hide-args)'{-H,--hide-args}'[hide any passed arguments from external tools]'
+  )
+fi
+
+args+=(
+  '(-a --interactive)'{-a,--interactive}'[run interactively]'
+  '(-c --php-ini -n --no-php-ini)'{-c,--php-ini}'[look for php.ini file in the specified directory]:INI file or directory:_files -g "*.ini(-.)"'
+  '(-c --php-ini -n --no-php-ini)'{-n,--no-php-ini}'[no php.ini file will be used]'
+  '(-d --define)'{-d,--define}'[define INI entry]:configuration directive:->directive'
+  '(-e --profile-info)'{-e,--profile-info}'[generate extended information for debugger/profiler]'
+  "(-f --file -r --run $exclusions 1)"{-f,--file}'[parse specified file]'$php_files
+  '(- 1 *)'{-h,--help}'[display help information]'
+  '(- 1 *)'{-i,--info}'[PHP information]'
+  '(-   *)'{-l,--syntax-check}'[syntax check only (lint)]'
+  '(- 1 *)'{-m,--modules}'[show compiled in modules]'
+  "(-r --run -f --file $exclusions -l --syntax-check -s --syntax-highlight -w --strip 1)"{-r,--run}'[run the specified PHP code without using script tags <?..?>]:PHP code:'\
+  '(- 1 *)'{-s,--syntax-highlight}'[display colour syntax highlighted source]'
+  '(- 1 *)'{-v,--version}'[display version information]'
+  '(-   *)'{-w,--strip}'[display source with stripped comments and whitespace]'
+  '(-z --zend-extension)'{-z,--zend-extension}'[load specified Zend extension]:extension file:->extension'
+  '(-)1'$php_files
+  '(-)*::script argument: _normal'
+)
+
+_arguments -C -s -S -A "-*" "$args[@]" && return 0
 
 case $state in
-  ini)
+  directive)
+    local -a directives
+    local code='foreach (ini_get_all() as $k => $v) { echo "$k\n"; }'
+    directives=( $(_call_program directives $words[1] -r ${(q)code} 2>/dev/null) )
     if compset -P '*='; then
-      _default
+      _default && return 0
     else
-      _message -e configuration-directives 'configuration directive'
+      _wanted directives expl 'configuration directive' compadd -qS= -a directives && return 0
     fi
-    ;;
+  ;;
+  extension)
+    local -a paths
+    if [[ -r /etc/ld.so.conf ]]; then
+      paths=( ${(f)"$(</etc/ld.so.conf)"} )
+    else
+      paths=(.)
+    fi
+    _wanted extensions expl 'zend extension' _files -W paths -g "*.so(|.*)(-.)" && return 0
+  ;;
 esac
 
 return 1
-