about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2003-06-25 09:03:04 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2003-06-25 09:03:04 +0000
commita267832ddf4150652fde3936858841bb2edbd9ae (patch)
tree961f0cbcaf8dbdaf2ff2e1a5409d644158f592bf /Completion
parentdd54fb249881fa882319cd2642780dcebb8d9f7c (diff)
downloadzsh-a267832ddf4150652fde3936858841bb2edbd9ae.tar.gz
zsh-a267832ddf4150652fde3936858841bb2edbd9ae.tar.xz
zsh-a267832ddf4150652fde3936858841bb2edbd9ae.zip
18631: returning too early breaks prefix-needed style set to false
Diffstat (limited to 'Completion')
-rw-r--r--Completion/AIX/Command/_smit6
-rw-r--r--Completion/Linux/Command/_modutils10
-rw-r--r--Completion/Linux/Command/_uml4
-rw-r--r--Completion/Unix/Command/_ant10
-rw-r--r--Completion/Unix/Command/_arp2
-rw-r--r--Completion/Unix/Command/_bzip210
-rw-r--r--Completion/Unix/Command/_compress14
-rw-r--r--Completion/Unix/Command/_elinks4
-rw-r--r--Completion/Unix/Command/_finger10
-rw-r--r--Completion/Unix/Command/_gpg6
-rw-r--r--Completion/Unix/Command/_gzip14
-rw-r--r--Completion/Unix/Command/_java46
-rw-r--r--Completion/Unix/Command/_links8
-rw-r--r--Completion/Unix/Command/_look17
-rw-r--r--Completion/Unix/Command/_lynx10
-rw-r--r--Completion/Unix/Command/_lzop12
-rw-r--r--Completion/Unix/Command/_mt8
-rw-r--r--Completion/Unix/Command/_prcs8
-rw-r--r--Completion/Unix/Command/_sccs9
-rw-r--r--Completion/Unix/Command/_telnet12
-rw-r--r--Completion/Unix/Command/_w3m23
-rw-r--r--Completion/Unix/Command/_zip16
-rw-r--r--Completion/Zsh/Command/_compdef14
-rw-r--r--Completion/Zsh/Command/_hash14
-rw-r--r--Completion/Zsh/Command/_which14
25 files changed, 162 insertions, 139 deletions
diff --git a/Completion/AIX/Command/_smit b/Completion/AIX/Command/_smit
index 48397b5b0..f02229501 100644
--- a/Completion/AIX/Command/_smit
+++ b/Completion/AIX/Command/_smit
@@ -18,10 +18,8 @@ _arguments -C \
   '-v[verbose]' \
   '-x[do not run any execute commands]' \
   '-X[do not run any commands]' \
-  '1:fastpath:->fastpath' && return 0
+  '1:fast path:->fastpath'
 
-[[ "$state" = fastpath ]] &&
+[[ "$state" = fastpath ]] && (( $+commands[odmget] )) &&
   _wanted fastpaths expl 'fast path' compadd \
       $(odmget sm_cmd_hdr sm_name_hdr|sed -n 's/^	id = \"\(.*\)\"/\1/p')
-
-  
diff --git a/Completion/Linux/Command/_modutils b/Completion/Linux/Command/_modutils
index 95dab8130..e3f33f8b5 100644
--- a/Completion/Linux/Command/_modutils
+++ b/Completion/Linux/Command/_modutils
@@ -1,6 +1,6 @@
 #compdef lsmod modinfo modprobe rmmod
 
-local curcontext="$curcontext" expl state line modules ign args
+local curcontext="$curcontext" expl state line modules ign args ret=1
 
 args=(
   '(-)'{-V,--version}'[print version]'
@@ -18,7 +18,7 @@ case "$service" in
       '(-)'{-l,--license}"[display the module's license]" \
       '(-)'{-n,--filename}"[display the module's filename]" \
       '(-)'{-p,--parameters}'[display the typed parameters that a module may support]' \
-      '1:module file:->all_modules' && return
+      '1:module file:->all_modules' && ret=0
   ;;
 
   modprobe)
@@ -37,7 +37,7 @@ case "$service" in
       "(-r --remove -l --list -t --type -a --all $ign)"{-r,--remove}'[remove module (stacks)]' \
       "(* -l --list -r --remove $ign)"{-l,--list}'[list matching modules]' \
       "(-c $ign)1:modules:->all_modules" \
-      "(-c -l --list -t --type $ign)*:params:->params" && return
+      "(-c -l --list -t --type $ign)*:params:->params" && ret=0
       
       [[ -n $state ]] && (( $+opt_args[-r] )) && state=loaded_modules        
   ;;
@@ -49,7 +49,7 @@ case "$service" in
       '(-r --stacks)'{-r,--stacks}'[remove a module stack]' \
       '(-s --syslog)'{-s,--syslog}'[output to syslog]' \
       '(-v --verbose)'{-v,--verbose}'[be verbose]' \
-      '*:loaded module:->loaded_modules' && return
+      '*:loaded module:->loaded_modules' && ret=0
   ;;
 esac 
 
@@ -80,4 +80,4 @@ case "$state" in
   ;;
 esac
 
-return 1
+return ret
diff --git a/Completion/Linux/Command/_uml b/Completion/Linux/Command/_uml
index 0e078e0a3..5c62f6234 100644
--- a/Completion/Linux/Command/_uml
+++ b/Completion/Linux/Command/_uml
@@ -12,6 +12,7 @@ case $service in
     _arguments \
       '-unix[listen on specified pair of sockets]:control socket: :data socket' \
       '-hub[act like a hub]'
+    return
   ;;
   uml_mconsole)
     if (( CURRENT == 2 )); then
@@ -46,7 +47,7 @@ case $service in
       '(* -)--version[display kernel version number]' \
       '(* -)--help[print usage information]' \
       '(* -)--showconfig[show kernel configuration]' \
-      '(-)*:option:->option' && return
+      '(-)*:option:->option' && ret=0
   ;;
   tunctl)
     _arguments \
@@ -55,6 +56,7 @@ case $service in
       '(-d)-u[specify owner]:owner:_users' \
       '(-b -u -t)-d[specify devicename to delete]:device name:(tap{0..9})' \
       '(-d)-t[specify devicename]:device name:(tap{0..9})'
+    return
   ;;
 esac
 
diff --git a/Completion/Unix/Command/_ant b/Completion/Unix/Command/_ant
index ff973b37f..88c1f3ef4 100644
--- a/Completion/Unix/Command/_ant
+++ b/Completion/Unix/Command/_ant
@@ -1,7 +1,7 @@
 #compdef ant -value-,ANT_ARGS,-default-
 
 typeset -A opt_args
-local buildfile tmp state line curcontext="$curcontext"
+local buildfile tmp state line curcontext="$curcontext" ret=1
 local c target='*:target:->target'
 
 c=( $ANT_HOME/lib/*.jar )
@@ -30,7 +30,7 @@ _arguments -C \
   '-propertyfile[load properties from specified file]:property file:_files' \
   '-inputhandler[specify class which will handle input requests]:class:_java_class -cp ${(j.\:.)c}' \
   '(-f -file -buildfile)-find[search for build file towards the root of filesystem]:build file:(build.xml)' \
-  $target && return
+  $target && ret=0
 
 case $state in
   property)
@@ -78,7 +78,7 @@ case $state in
           esac
 	done
       )//$'\015'}"
-      _describe 'target' tmp
+      _describe 'target' tmp && ret=0
     else
       if [[ -n $opt_args[-find] ]]; then
 	buildfile=( (../)#${opt_args[-find]:-build.xml}(N[-1]) )
@@ -87,10 +87,12 @@ case $state in
       fi
       if [[ -f $buildfile ]]; then
 	targets=( $(sed -n 's/ *<target name="\([^"]*\)".*/\1/p' < $buildfile) )
-	_wanted targets expl target compadd -a targets
+	_wanted targets expl target compadd -a targets && ret=0
       else
 	_message -e targets target
       fi
     fi
   ;;
 esac
+
+return ret
diff --git a/Completion/Unix/Command/_arp b/Completion/Unix/Command/_arp
index 9de19f67a..72b60fd2f 100644
--- a/Completion/Unix/Command/_arp
+++ b/Completion/Unix/Command/_arp
@@ -7,7 +7,7 @@ _arguments -C \
  '(-a -s -f 1)-d[delete entry from table]:host:->hostintable' \
  '(-a -d -f 1)-s[create an arp entry]:host:_hosts:ethernet address::*:option:(temp trail pub)' \
  '(-a -d -s 1)-f[read multiple entries from file]:file:_files' \
- '(-a)1:host:->hostintable' && return 0
+ '(-a)1:host:->hostintable'
 
 [[ "$state" = hostintable ]] &&
   _wanted hosts expl 'host' compadd ${${${(f)"$(${words[1]} -a)"}##[ ?(]#}%%[ )]*}
diff --git a/Completion/Unix/Command/_bzip2 b/Completion/Unix/Command/_bzip2
index cbce91ad6..15a78e578 100644
--- a/Completion/Unix/Command/_bzip2
+++ b/Completion/Unix/Command/_bzip2
@@ -1,6 +1,6 @@
 #compdef bzip2 bunzip2 bzcat=bunzip2 bzip2recover -redirect-,<,bunzip2=bunzip2 -redirect-,>,bzip2=bunzip2 -redirect-,<,bzip2=bzip2
 
-local decompress expl state line curcontext="$curcontext"
+local decompress expl state line curcontext="$curcontext" ret=1
 typeset -A opt_args
 
 case "$service" in
@@ -39,7 +39,7 @@ case "$service" in
     '(-1 -2 -3 -4 -5 -6    -8 -9)-7' \
     '(-1 -2 -3 -4 -5 -6 -7    -9)-8' \
     '(-1 -2 -3 -4 -5 -6 -7 -8	)-9' \
-    '*:files:->files' && return 0
+    '*:files:->files' && ret=0
   ;;
 esac
 
@@ -49,11 +49,11 @@ if [[ "$state" = files ]]; then
       $+opt_args[--test] )) && unset decompress
   if [[ -z "$decompress" ]]; then
     _description files expl 'compressed file'
-    _files "$expl[@]" -g '*.(bz2|tbz|tbz2)' && return 0
+    _files "$expl[@]" -g '*.(bz2|tbz|tbz2)' && return
   else
     _description files expl 'file to compress'
-    _files "$expl[@]" -g '*~*.(bz2|tbz|tbz2)' && return 0
+    _files "$expl[@]" -g '*~*.(bz2|tbz|tbz2)' && return
   fi
 fi
 
-return 1
+return ret
diff --git a/Completion/Unix/Command/_compress b/Completion/Unix/Command/_compress
index a2e52704e..b8f691373 100644
--- a/Completion/Unix/Command/_compress
+++ b/Completion/Unix/Command/_compress
@@ -1,6 +1,6 @@
 #compdef compress uncompress -redirect-,<,uncompress=uncompress -redirect-,>,compress=uncompress -redirect-,<,compress=compress
 
-local expl state line bits common_args1 common_args2 decompress
+local expl state line bits common_args1 common_args2 decompress ret=1
 local curcontext="$curcontext"
 typeset -A opt_args
 bits=( {9..16} )
@@ -23,14 +23,14 @@ case "$service" in
       "-b[specify maximum number of bits used to replace common substring]:bits:(${bits[*]})" \
       '-C[produce output compatible with BSD 2.0]' \
       '(-b -C)-d[decompress]' \
-      "${common_args2[@]}" && return 0
+      "${common_args2[@]}" && ret=0
   ;;
   uncompress)
-    _arguments -C -s "${common_args2[@]}" && return 0
+    _arguments -C -s "${common_args2[@]}" && ret=0
     decompress=yes
   ;;
   zcat)
-    _arguments -C -s "${common_args1[@]}" && return 0
+    _arguments -C -s "${common_args1[@]}" && ret=0
     decompress=yes
   ;;
 esac
@@ -38,11 +38,11 @@ esac
 if [[ "$state" = files ]]; then
   if [[ -z "$decompress" ]] || (( $+opt_args[-d] )); then
     _description files expl 'file to compress'
-    _files "$expl[@]" -g '*~*.Z' && return 0
+    _files "$expl[@]" -g '*~*.Z' && return
   else
     _description files expl 'compressed file'
-    _files "$expl[@]" -g '*.Z' && return 0
+    _files "$expl[@]" -g '*.Z' && return
   fi
 fi
 
-return 1
+return ret
diff --git a/Completion/Unix/Command/_elinks b/Completion/Unix/Command/_elinks
index 584a3cfe0..6e2832daf 100644
--- a/Completion/Unix/Command/_elinks
+++ b/Completion/Unix/Command/_elinks
@@ -25,7 +25,7 @@ _arguments -C -A '-*' \
   '(1)*-stdin[read document from stdin]::boolean:(0 1)' \
   '*-touch-files[touch files in ~/.elinks when running with -no-connect/-session-ring]::boolean:(0 1)' \
   '(- 1)-version[print version information and exit]' \
-  '1:url:->url' && return
+  '1:url:->url' && ret=0
 
 if [[ "$state" = url ]]; then
   local elinks_bookmarks
@@ -40,4 +40,4 @@ if [[ "$state" = url ]]; then
     'urls:url:_urls' && return
 fi
 
-return 1
+return ret
diff --git a/Completion/Unix/Command/_finger b/Completion/Unix/Command/_finger
index 4dd45f3c2..1ffb52d14 100644
--- a/Completion/Unix/Command/_finger
+++ b/Completion/Unix/Command/_finger
@@ -1,10 +1,10 @@
 #compdef finger
 
-local curcontext="$curcontext" state line match
+local curcontext="$curcontext" state line match ret=1
 typeset -A opt_args
 
 if (( ! $+_finger_args )); then
-  local help="$(_call_program options finger -\? 2>&1)"
+  local help="$(_call_program options finger -\\\? 2>&1)"
   local -A optionmap
 
 ## `finger -\?':
@@ -69,10 +69,12 @@ if (( ! $+_finger_args )); then
   fi
 fi
 
-_arguments -C -s $_finger_args '*:finger targets:->finger-targets' && return 0
+_arguments -C -s $_finger_args '*:finger targets:->finger-targets' && ret=0
 
 case "$state" in
 finger-targets)
-  _user_at_host -t other-accounts "$@"
+  _user_at_host -t other-accounts "$@" && return
   ;;
 esac
+
+return ret
diff --git a/Completion/Unix/Command/_gpg b/Completion/Unix/Command/_gpg
index 76594d229..32a51cb08 100644
--- a/Completion/Unix/Command/_gpg
+++ b/Completion/Unix/Command/_gpg
@@ -1,6 +1,6 @@
 #compdef gpg gpgv
 
-local curcontext="$curcontext" state line expl
+local curcontext="$curcontext" state line expl ret=1
 typeset -A opt_args
 
 _arguments -C -s -S -A "-*" \
@@ -127,7 +127,7 @@ _arguments -C -s -S -A "-*" \
   --enable-special-filenames --no-expensive-trust-checks --group:name=value \
   --preserve-permissions --personal-{cipher,digest,compress}-preferences:string \
   --default-preference-list:string \
-  '*:args:->args' && return
+  '*:args:->args' && ret=0
 
 if [[ $state = args ]]; then
   if (( ${+opt_args[--export]} || ${+opt_args[--list-keys]} )); then
@@ -154,4 +154,4 @@ case "$state" in
   ;;
 esac
 
-return 1
+return ret
diff --git a/Completion/Unix/Command/_gzip b/Completion/Unix/Command/_gzip
index 8c3c8c8c3..3f5aeb1b7 100644
--- a/Completion/Unix/Command/_gzip
+++ b/Completion/Unix/Command/_gzip
@@ -1,6 +1,6 @@
 #compdef gzip gunzip gzcat=gunzip -redirect-,<,gunzip=gunzip -redirect-,>,gzip=gunzip -redirect-,<,gzip=gzip -value-,GZIP,-default-
 
-local decompress files expl curcontext="$curcontext" state line
+local decompress files expl curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
 files=( '*:files:->files' )
@@ -58,7 +58,7 @@ gzip)
     '(--fast -1 -2 -3 -4 -5 -6 -7    -9 --best)-8' \
     '(--fast -1 -2 -3 -4 -5 -6 -7 -8    --best)-9' \
     '(--fast -1 -2 -3 -4 -5 -6 -7 -8 -9       )--best' \
-    "$files[@]" && return 0
+    "$files[@]" && ret=0
   ;;
 esac
 
@@ -71,19 +71,21 @@ files)
   if (( $+opt_args[-r] || $+opt_args[--recursive] )); then
     if [[ -z "$decompress" ]]; then
       _description directories expl 'directory to compress'
-      _files "$expl[@]" -/
+      _files "$expl[@]" -/ && return
     else
       _description directories expl 'compressed directory'
-      _files "$expl[@]" -/
+      _files "$expl[@]" -/ && return
     fi
   else
     if [[ -z "$decompress" ]]; then
       _description files expl 'file to compress'
-      _files "$expl[@]" -g '*~*.(([tT]|)[gG]|)[zZ]'
+      _files "$expl[@]" -g '*~*.(([tT]|)[gG]|)[zZ]' && return
     else
       _description files expl 'compressed file'
-      _files "$expl[@]" -g '*.(([tT]|)[gG]|)[zZ]'
+      _files "$expl[@]" -g '*.(([tT]|)[gG]|)[zZ]' && return
     fi
   fi
   ;;
 esac
+
+return ret
diff --git a/Completion/Unix/Command/_java b/Completion/Unix/Command/_java
index 992960f59..a9e620ab4 100644
--- a/Completion/Unix/Command/_java
+++ b/Completion/Unix/Command/_java
@@ -1,6 +1,6 @@
 #compdef javac java javadoc appletviewer jar jdb javah javap extcheck rmic rmiregistry rmid serialvar native2ascii keytool jarsigner policytool
 
-local expl tmp jdb_args jar_cmd match basedir
+local expl tmp jdb_args jar_cmd match basedir ret=1
 local curcontext="$curcontext" state line jf
 typeset -A opt_args tmpassoc
 
@@ -89,7 +89,7 @@ javadoc)
     '-helpfile[specify alternative help link]:helpfile path/filename:' \
     '-stylesheet[specify alternative HTML style sheet]:stylesheet path/filename:' \
     '-docencoding[specify character encoding for output HTML files]:encoding:->encoding' \
-    '*:package name, source file or @list:->docsrc' && return 0
+    '*:package name, source file or @list:->docsrc' && ret=0
   ;;
 
 appletviewer)
@@ -112,7 +112,7 @@ jar)
       'v[verbose mode]' \
       'm[specify manifest file]' \
       '0[store only without using ZIP compression]' \
-      'M[do not create manifest file]'
+      'M[do not create manifest file]' && return
   else
     jar_cmd="${words[2]#-}"
     tmpassoc=(
@@ -186,7 +186,7 @@ rmic)
 
 rmiregistry)
   if (( CURRENT == 2 )); then
-    _wanted ports expl 'port to listen' _ports
+    _wanted ports expl 'port to listen' _ports && return
   else
     _message 'no more arguments'
   fi
@@ -359,11 +359,11 @@ case "$state" in
 debug)
   if [[ -prefix :*, ]]; then
     compset -P :
-    _values -s , "debug info" lines vars source
+    _values -s , "debug info" lines vars source && return
   else
     _description debuginfo expl "debug info"
-    compadd -P: "$expl[@]" none
-    compadd -P: -qS, "$expl[@]" lines vars source
+    compadd -P: "$expl[@]" none && ret=0
+    compadd -P: -qS, "$expl[@]" lines vars source && ret=0
   fi
   ;;
 
@@ -372,12 +372,12 @@ classpath|sourcepath|bootstrapclasspath|docletpath)
   compset -S ':*'
   _alternative \
     "classpath:$state:_path_files -qS: -g '*.(jar|zip)'" \
-    "classpath:$state:_path_files -r': ' -/"
+    "classpath:$state:_path_files -r': ' -/" && return
   ;;
 
 extdirs)
   compset -P '*:'
-  _path_files -/
+  _path_files -/ && return
   ;;
 
 encoding)
@@ -540,7 +540,7 @@ encoding)
 
 property)
   if compset -P '*='; then
-    _default
+    _default && return
   else
     _message -e property-names 'property name'
   fi
@@ -548,30 +548,30 @@ property)
 
 docsrc)
   if compset -P @; then
-    _wanted files expl 'package/source list file' _files
+    _wanted files expl 'package/source list file' _files && return
   else
-    _wanted files expl 'package or source' _files -g '*.java'
+    _wanted files expl 'package or source' _files -g '*.java' && return
   fi
   ;;
 
 jararg)
   if [[ -prefix - ]]; then
     tmp=('-C:chdir')
-    _describe -o 'option' tmp --
+    _describe -o 'option' tmp -- && return
   elif [[ "$words[CURRENT - 2]" == -C ]]; then
-    _wanted file expl 'input file' _files -W "($words[CURRENT - 1])"
+    _wanted file expl 'input file' _files -W "($words[CURRENT - 1])" && return
   elif [[ "$words[CURRENT - 1]" == -C ]]; then
-    _wanted directories expl 'chdir to' _files -/
+    _wanted directories expl 'chdir to' _files -/ && return
   elif [[ $words[2] = *x* ]]; then
-        jf="$words[3]"
-        if [[ $jf != $_jar_cache_name && -f $jf ]]; then
-            _jar_cache_list=("${(@f)$($words[1] tf $jf)}")
-            _jar_cache_name=$jf
-        fi
+    jf="$words[3]"
+    if [[ $jf != $_jar_cache_name && -f $jf ]]; then
+      _jar_cache_list=("${(@f)$($words[1] tf $jf)}")
+      _jar_cache_name=$jf
+    fi
 
-        _wanted files expl 'file from archive' _multi_parts / _jar_cache_list
+    _wanted files expl 'file from archive' _multi_parts / _jar_cache_list && return
   else
-    _wanted files expl 'input file' _files
+    _wanted files expl 'input file' _files && return
   fi
   ;;
 
@@ -579,3 +579,5 @@ jararg)
   _message "unknown state: $state"
   ;;
 esac
+
+return ret
diff --git a/Completion/Unix/Command/_links b/Completion/Unix/Command/_links
index adb0651f4..7d8a83a23 100644
--- a/Completion/Unix/Command/_links
+++ b/Completion/Unix/Command/_links
@@ -1,6 +1,6 @@
 #compdef links
 
-local curcontext="$curcontext" state line
+local curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
 _arguments -C \
@@ -25,8 +25,10 @@ _arguments -C \
   '(-help)-source[dump the source page]' \
   '(-help)-unrestartable-receive-timeout[timeout on non restartable connections]:secs:' \
   '(-help)-version[prints the links version number and exit]' \
-  ':url:->html' && return 0
+  ':url:->html' && ret=0
   
 if [[ "$state" = html ]]; then
-  _alternative 'files:file:_files -g "*.x#html"' 'urls:url:_urls'
+  _alternative 'files:file:_files -g "*.x#html"' 'urls:url:_urls' && ret=0
 fi
+
+return ret
diff --git a/Completion/Unix/Command/_look b/Completion/Unix/Command/_look
index b80a70824..825488c37 100644
--- a/Completion/Unix/Command/_look
+++ b/Completion/Unix/Command/_look
@@ -1,6 +1,6 @@
 #compdef look
 
-local curcontext="$curcontext" state line
+local curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
 _arguments -C -s \
@@ -8,14 +8,9 @@ _arguments -C -s \
   '-f[case insensitive]' \
   '-d[dictionary order]' \
   ':string:->string' \
-  ':dictionary file:_files' && return 0
+  ':dictionary file:_files' && ret=0
 
-case "$state" in
-string)
-  if [[ -n "$PREFIX" ]]; then
-    _wanted values expl 'word prefix' compadd - $(_call_program values $words[1] $PREFIX)
-  else
-    _message -e prefixes 'word prefix'
-  fi
-  ;;
-esac
+[[ -n "$state" && ! -prefix - ]] && _wanted values expl 'word prefix' \
+    compadd - $(_call_program words $words[1] '"$PREFIX"') && return
+
+return ret
diff --git a/Completion/Unix/Command/_lynx b/Completion/Unix/Command/_lynx
index 855213b7c..6bbe01449 100644
--- a/Completion/Unix/Command/_lynx
+++ b/Completion/Unix/Command/_lynx
@@ -1,6 +1,6 @@
 #compdef lynx
 
-local curcontext="$curcontext" state line
+local curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
 _arguments -C \
@@ -128,7 +128,7 @@ _arguments -C \
   '-vikeys' \
   '-width=:NUMBER:' \
   '-with_backspaces' \
-  ':url:->html' && return 0
+  ':url:->html' && ret=0
 
 case "$state" in
 restrictions)
@@ -137,9 +137,11 @@ restrictions)
     disk_save dotfiles download editor exec exec_frozen externals file_url \
     goto inside_ftp inside_news inside_rlogin inside_telnet jump mail \
     multibook news_post options_save outside_ftp outside_news outside_rlogin \
-    outside_telnet print shell suspend telnet_port useragent
+    outside_telnet print shell suspend telnet_port useragent && return
   ;;
 html)
-  _alternative 'files:file:_files -g "*.x#html"' 'urls:url:_urls'
+  _alternative 'files:file:_files -g "*.x#html"' 'urls:url:_urls' && return
   ;;
 esac
+
+return ret
diff --git a/Completion/Unix/Command/_lzop b/Completion/Unix/Command/_lzop
index bb918fd30..bad9c14d4 100644
--- a/Completion/Unix/Command/_lzop
+++ b/Completion/Unix/Command/_lzop
@@ -1,6 +1,6 @@
 #compdef lzop
 
-local expl state line decompress disp curcontext="$curcontext" sep
+local expl state line decompress disp curcontext="$curcontext" sep ret=1
 typeset -A opt_args
 
 _arguments -C -s \
@@ -74,7 +74,7 @@ _arguments -C -s \
   '--color[assume a color ANSI terminal]' \
   '--intro[display intro sequence]' \
   '--filter=[preprocess data with a special multimedia filter]:number' \
-  '*:files:->files' && return 0
+  '*:files:->files' && ret=0
 
 case "$state" in
   files)
@@ -83,10 +83,10 @@ case "$state" in
 	$+opt_args[--test] || $+opt_args[-t] || $+opt_args[--list] ||
 	$+opt_args[-l] || $+opt_args[--ls] || $+opt_args[--info] )); then
       _description files expl 'compressed file'
-      _files "$expl[@]" -g '*.[tl]zo'
+      _files "$expl[@]" -g '*.[tl]zo' && ret=0
     else
       _description files expl 'file to compress'
-      _files "$expl[@]" -g '*~*.[tl]zo'
+      _files "$expl[@]" -g '*~*.[tl]zo' && ret=0
 
     fi
   ;;
@@ -98,6 +98,8 @@ case "$state" in
       "Q $sep Enclose file names in double quotes" )
     disp=( ${disp[@]:#[Z$PREFIX]*} )
     compset -P '[FGQ]*'
-    compadd -d disp - ${disp[@]%% *}
+    compadd -d disp - ${disp[@]%% *} && ret=0
   ;;
 esac
+
+return ret
diff --git a/Completion/Unix/Command/_mt b/Completion/Unix/Command/_mt
index 8296d1c8d..738c63abf 100644
--- a/Completion/Unix/Command/_mt
+++ b/Completion/Unix/Command/_mt
@@ -1,7 +1,7 @@
 #compdef mt
 
 local -a args cmds
-local state line curcontext="$curcontext"
+local state line curcontext="$curcontext" ret=1
 
 args=( '(-)-f[specify raw tape device]:tape device:_files' )
 cmds=(
@@ -73,6 +73,8 @@ elif [[ $OSTYPE = solaris* ]]; then
 fi
 
 _arguments -C "$args[@]" '(--help --version -V)1:operation:->operation' \
-    '2:count:' && return
+    '2:count:' && ret=0
 
-[[ -n "$state" ]] && _describe -t operations 'operation' cmds
+[[ -n "$state" ]] && _describe -t operations 'operation' cmds && ret=0
+
+return ret
diff --git a/Completion/Unix/Command/_prcs b/Completion/Unix/Command/_prcs
index 29a1c8652..46e441c34 100644
--- a/Completion/Unix/Command/_prcs
+++ b/Completion/Unix/Command/_prcs
@@ -1,6 +1,6 @@
 #compdef prcs
 
-local curcontext="$curcontext" state line subcmds
+local curcontext="$curcontext" state line subcmds ret=1
 typeset -A opt_args
 
 # lookup project names in the repository
@@ -34,7 +34,7 @@ _prcs_arguments() {
 _arguments -C \
   '(* -)'{-h,-H,--help}'[print out help]' \
   '(* -)--version[display program version]' \
-  '*:: :->subcmd' && return 0
+  '*:: :->subcmd' && ret=0
 
 if (( CURRENT == 1 )); then
   subcmds=(
@@ -54,8 +54,8 @@ if (( CURRENT == 1 )); then
     'unpackage:unpackage project in packagefile'
   )
   
-  _describe -t commands 'prcs command' subcmds
-  return
+  _describe -t commands 'prcs command' subcmds && ret=0
+  return ret
 fi
 
 curcontext="${curcontext%:*}-$words[1]:"
diff --git a/Completion/Unix/Command/_sccs b/Completion/Unix/Command/_sccs
index b3b6f49e9..40463b2f1 100644
--- a/Completion/Unix/Command/_sccs
+++ b/Completion/Unix/Command/_sccs
@@ -15,7 +15,7 @@ _sccs_files() {
   return ret
 }
 
-local curcontext="$curcontext" state line
+local curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 local subcmds ropt copt sfiles finalpath
 
@@ -56,12 +56,13 @@ if [[ $service = sccs ]]; then
     '-r[run with real and not effective user ID]' \
     '-d+[specify root prefix]:root prefix:_directories' \
     '-p+[specify subdirectory of history file]:path to history file:_directories' \
-    '*::command:->subcmd' && return 0
+    '*::command:->subcmd' && ret=0
 
   if (( CURRENT == 1 )); then
-    _describe -t commands 'sccs command' subcmds
-    return
+    _describe -t commands 'sccs command' subcmds && ret=0
   fi
+  (( ret )) || return 0
+
   service="$words[1]"
   sfiles=':file:_sccs_files'
   curcontext="${curcontext%:*}-$service:"
diff --git a/Completion/Unix/Command/_telnet b/Completion/Unix/Command/_telnet
index 4ff6ed2a7..bab9c8d36 100644
--- a/Completion/Unix/Command/_telnet
+++ b/Completion/Unix/Command/_telnet
@@ -5,7 +5,7 @@
 #  telnet_hosts_ports_users
 #    The array that contains 3-tuples `host:port:user'.
 
-local curcontext="$curcontext" state line expl
+local curcontext="$curcontext" state line expl ret=1
 typeset -A opt_args
 
 if (( ! $+_telnet_args )); then
@@ -43,14 +43,14 @@ fi
 _arguments -C -s \
   "$_telnet_args[@]" \
   ':host:->hosts' \
-  ':port:->ports' && return 0
+  ':port:->ports' && ret=0
 
 case "$state" in
 hosts)
   _wanted hosts expl host \
       _combination -s '[@:]' '' users-hosts-ports \
           ${opt_args[-l]:+users=${opt_args[-l]:q}} \
-          hosts -
+          hosts - && ret=0
   ;;
 
 ports)
@@ -58,7 +58,7 @@ ports)
       _combination -s '[@:]' '' users-hosts-ports \
           ${opt_args[-l]:+users=${opt_args[-l]:q}} \
           hosts="${line[1]:q}" \
-          ports -
+          ports - && ret=0
   ;;
 
 users)
@@ -66,6 +66,8 @@ users)
       _combination -s '[@:]' '' users-hosts-ports \
       ${line[2]:+hosts="${line[2]:q}"} \
       ${line[3]:+ports="${line[3]:q}"} \
-      users -
+      users - && ret=0
   ;;
 esac
+
+return ret
diff --git a/Completion/Unix/Command/_w3m b/Completion/Unix/Command/_w3m
index 4ce8ad1e0..70ac75e4c 100644
--- a/Completion/Unix/Command/_w3m
+++ b/Completion/Unix/Command/_w3m
@@ -1,6 +1,6 @@
 #compdef w3m
 
-local curcontext="$curcontext" state line
+local curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
 _arguments -C \
@@ -31,18 +31,19 @@ _arguments -C \
   '-o[option]:option-value:' \
   '-config:config file:_files' \
   '-debug' \
-  ':url:->url' && return 0
+  ':url:->url' && ret=0
 
 case $state in
-	url)
-	local _w3mhistory
+  url)
+    local _w3mhistory
 
-	if [[ -s ~/.w3m/history ]]; then
-	   _w3mhistory=(${(f)"$(<$HOME/.w3m/history)"})
-	   compadd $_w3mhistory
-	fi
-
-	_urls -f
-	;;
+    if [[ -s ~/.w3m/history ]]; then
+      _w3mhistory=(${(f)"$(<$HOME/.w3m/history)"})
+      compadd $_w3mhistory && ret=0
+    fi
 
+    _urls -f && ret=0
+  ;;
 esac
+
+return ret
diff --git a/Completion/Unix/Command/_zip b/Completion/Unix/Command/_zip
index 29c4f85d4..479b05aba 100644
--- a/Completion/Unix/Command/_zip
+++ b/Completion/Unix/Command/_zip
@@ -1,7 +1,7 @@
 #compdef zip unzip zipinfo
 
 local suffixes suf zipfile uzi
-local expl curcontext="$curcontext" state line
+local expl curcontext="$curcontext" state line ret=1
 typeset -A opt_args
 
 case $service in
@@ -51,7 +51,7 @@ case $service in
       '-x[exclude the following names]' \
       '-i[include only the following names]' \
       "(-f -d -R -q -c -b -@ -F -FF -A -T -y -e -h -u -m -g -j -l -ll -L -v -z -t -tt -o -D -J -X -n -0 -1 -2 -3 -4 -5 -6 -7 -8 -9):zip file:_files -g '(#i)*.(zip|[ejw]ar)'" \
-      '*:file:->files' && return 0
+      '*:file:->files' && ret=0
   ;;
   unzip)
     _arguments -C -s \
@@ -76,7 +76,7 @@ case $service in
       '-x[exclude the following names]' \
       '-Z[zipinfo mode]:zipinfomode:->zipinfo' \
       "(-p -f -u -l -t -z -n -o -j -C -X -q -qq -a -aa -v -L -M)1:zip file:_files -g '(#i)*.(zip|[ejw]ar)'" \
-      '*:file:->files' && return 0
+      '*:file:->files' && ret=0
   ;;
 esac
 
@@ -99,7 +99,7 @@ if [[ $service == zipinfo ]] || [[ -n $uzi ]]; then
       '-M[page output]' \
       '-x[exclude the following names]' \
       "(-1 -2 -s -m -l -v -h -z -C -t -T -M)1:zip file:_files -g '(#i)*.(zip|[ejw]ar)'" \
-      '*:file:->files' && return 0
+      '*:file:->files' && ret=0
 fi
 
 case $state in
@@ -108,11 +108,11 @@ case $state in
     compset -S ':*' || suf=":."
     suffixes=( *.*(N:e) )
     _wanted suffixes expl suffixes \
-	compadd -S "$suf" -r ": \t" .$^suffixes && return 0
+	compadd -S "$suf" -r ": \t" .$^suffixes && return
   ;;
   files)
     if [[ $service = zip ]] && (( ! ${+opt_args[-d]} )); then
-      _files -g '^(#i)*.(zip|[ejw]ar)' && return 0
+      _wanted files expl zfile _files -g '^(#i)*.(zip|[ejw]ar)' && return
     else
       zipfile=( $~line[1](|.zip|.ZIP) )
       [[ -z $zipfile[1] ]] && return 1
@@ -121,7 +121,9 @@ case $state in
 	_zip_cache_list=( ${(f)"$(zipinfo -1 $_zip_cache_name)"} )
       fi
      _wanted files expl 'file from archive' \
-	 _multi_parts / _zip_cache_list && return 0
+	 _multi_parts / _zip_cache_list && return
     fi
   ;;
 esac
+
+return ret
diff --git a/Completion/Zsh/Command/_compdef b/Completion/Zsh/Command/_compdef
index aad1358b9..7a64da835 100644
--- a/Completion/Zsh/Command/_compdef
+++ b/Completion/Zsh/Command/_compdef
@@ -32,7 +32,7 @@ _arguments -C -s -S \
   '*-P[completion for command matching pattern]' \
   ':completion function:->cfun' \
   '*:commands:->com' \
-  "$args2[@]" && return 0
+  "$args2[@]" && ret=0
 
 if [[ $state = multi ]]; then
   case $(( CURRENT % 3 )) in
@@ -50,20 +50,20 @@ case $state in
     if (( pat && pat > normal )); then
       _message -e patterns 'pattern'
     else
-      _command_names
+      _command_names && ret=0
     fi
   ;;
   ccom)
-    _wanted commands expl 'completed command' compadd -k _comps
+    _wanted commands expl 'completed command' compadd -k _comps && ret=0
   ;;
   cfun)
     list=( ${^fpath:/.}/_(|*[^~])(:t) )
     if zstyle -T ":completion:${curcontext}:functions" prefix-hidden; then
       disp=( ${list[@]#_} )
       _wanted functions expl 'completion function' \
-          compadd -d disp -a list
+          compadd -d disp -a list && ret=0
     else
-      _wanted functions expl 'completion function' compadd -a list
+      _wanted functions expl 'completion function' compadd -a list && ret=0
     fi
   ;;
   style)
@@ -71,6 +71,8 @@ case $state in
         compadd -M 'r:|-=* r:|=*' \
             complete-word delete-char-or-list expand-or-complete \
             expand-or-complete-prefix list-choices menu-complete \
-            menu-expand-or-complete reverse-menu-complete
+            menu-expand-or-complete reverse-menu-complete && ret=0
   ;;
 esac
+
+return ret
diff --git a/Completion/Zsh/Command/_hash b/Completion/Zsh/Command/_hash
index a065615ef..80c136118 100644
--- a/Completion/Zsh/Command/_hash
+++ b/Completion/Zsh/Command/_hash
@@ -1,6 +1,6 @@
 #compdef hash rehash
 
-local state line expl common_args curcontext="$curcontext"
+local state line expl common_args curcontext="$curcontext" ret=1
 typeset -A opt_args
 
 common_args=( \
@@ -15,7 +15,7 @@ case ${service} in
       '(-f -r -m)-v[list entries as they are added]' \
       '(-f -r -v)-L[list in the form of calls to hash]' \
       "${common_args[@]}" \
-      '(-d -f -r -m -v -L)*:hash:->hashval' && return 0
+      '(-d -f -r -m -v -L)*:hash:->hashval' && ret=0
   ;;
   rehash)
     _arguments -C -s ${common_args[@]} && return 0
@@ -25,14 +25,16 @@ esac
 if [[ $state = hashval ]]; then
   if (( $+opt_args[-d] )); then
     if compset -P 1 '*='; then
-      _wanted -C value files expl directories _path_files -/
+      _wanted -C value files expl directories _path_files -/ && ret=0
     else
       _wanted -C name named-directories expl 'named directory' \
-          compadd -q -S '=' -k nameddirs
+          compadd -q -S '=' -k nameddirs && ret=0
     fi
   elif compset -P 1 '*='; then
-    _wanted -C value values expl 'executable file' _files -g '*(-*)'
+    _wanted -C value values expl 'executable file' _files -g '*(-*)' && ret=0
   else
-    _wanted -C name commands expl command compadd -q -S '=' -k commands
+    _wanted -C name commands expl command compadd -q -S '=' -k commands && ret=0
   fi
 fi
+
+return ret
diff --git a/Completion/Zsh/Command/_which b/Completion/Zsh/Command/_which
index 279475451..2b89112bc 100644
--- a/Completion/Zsh/Command/_which
+++ b/Completion/Zsh/Command/_which
@@ -1,6 +1,6 @@
 #compdef which whence where type
 
-local farg aarg cargs args state line curcontext="$curcontext"
+local farg aarg cargs args state line curcontext="$curcontext" ret=1
 
 cargs=( \
   '(-v -c)-w[print command type]' \
@@ -16,11 +16,11 @@ case ${service} in
     _arguments -C -s -A "-*" -S \
       '(-c -w)-v[verbose output]' \
       '(-v -w)-c[csh-like output]' \
-      "${cargs[@]}" "$farg" "$aarg" && return 0
+      "${cargs[@]}" "$farg" "$aarg" && ret=0
   ;;
-  where) _arguments -C -s -A "-*" -S "${cargs[@]}" && return 0;;
-  which) _arguments -C -s -A "-*" -S "${cargs[@]}" "$aarg" && return 0;;
-  type) _arguments -C -s -A "-*" -S "${cargs[@]}" "$aarg" "$farg" && return 0;;
+  where) _arguments -C -s -A "-*" -S "${cargs[@]}" && ret=0;;
+  which) _arguments -C -s -A "-*" -S "${cargs[@]}" "$aarg" && ret=0;;
+  type) _arguments -C -s -A "-*" -S "${cargs[@]}" "$aarg" "$farg" && ret=0;;
 esac
 
 if [[ "$state" = command ]]; then
@@ -32,6 +32,8 @@ if [[ "$state" = command ]]; then
     'builtins:builtin command:compadd -k builtins' \
     'functions:shell function:compadd -k functions' \
     'aliases:alias:compadd -k aliases' \
-    'reserved-words:reserved word:compadd -k reswords'
+    'reserved-words:reserved word:compadd -k reswords' && ret=0
 
 fi
+
+return ret