about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-02-15 09:07:09 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-02-15 09:07:09 +0000
commite6cc1ece7fed93fd31ca4e7f7726de034ede887c (patch)
tree93087d3edf5eb27836ba9bbdfb687b416fb7c629
parentbf990125d18effbf111fd6a30ff5bf90c4c263ae (diff)
downloadzsh-e6cc1ece7fed93fd31ca4e7f7726de034ede887c.tar.gz
zsh-e6cc1ece7fed93fd31ca4e7f7726de034ede887c.tar.xz
zsh-e6cc1ece7fed93fd31ca4e7f7726de034ede887c.zip
zsh-workers/9731
-rw-r--r--Completion/Base/_arguments7
-rw-r--r--Completion/Base/_describe2
-rw-r--r--Completion/Base/_jobs4
-rw-r--r--Completion/Base/_subscript2
-rw-r--r--Completion/Base/_tilde4
-rw-r--r--Completion/Builtins/_pids2
-rw-r--r--Completion/Builtins/_popd4
-rw-r--r--Completion/Builtins/_sched2
-rw-r--r--Completion/Builtins/_signals2
-rw-r--r--Completion/Builtins/_stat2
-rw-r--r--Completion/Core/_approximate2
-rw-r--r--Completion/Core/_files13
-rw-r--r--Completion/Core/_main_complete32
-rw-r--r--Completion/Core/_normal13
-rw-r--r--Completion/Core/_path_files12
-rw-r--r--Completion/Core/_setup5
-rw-r--r--Completion/Core/_tags30
-rw-r--r--Completion/Core/compinit13
-rw-r--r--Completion/Debian/_apt2
-rw-r--r--Completion/User/_lp8
-rw-r--r--Completion/User/_socket2
-rw-r--r--Doc/Zsh/compsys.yo21
-rw-r--r--Doc/Zsh/mod_zutil.yo6
-rw-r--r--Src/Modules/zutil.c4
24 files changed, 82 insertions, 112 deletions
diff --git a/Completion/Base/_arguments b/Completion/Base/_arguments
index ddd9d4c06..50c368b11 100644
--- a/Completion/Base/_arguments
+++ b/Completion/Base/_arguments
@@ -17,9 +17,8 @@ if (( long )); then
   fi
 
   name=${~words[1]}
-  if [[ "$name" != /* ]]; then
-    tmp="$PWD/$name"
-  fi
+  [[ "$name" != /* ]] && tmp="$PWD/$name"
+
   name="_args_cache_${name}"
   name="${name//[^a-zA-Z0-9_]/_}"
 
@@ -255,7 +254,7 @@ if (( $# )) && comparguments -i "$autod" "$@"; then
       fi
 
       if [[ -z "$matched" ]] && _requested options &&
-          { ! zstyle -t ":completion:${curcontext}:options" prefix-needed ||
+          { ! zstyle -T ":completion:${curcontext}:options" prefix-needed ||
           [[ "$origpre" = [-+]* ||
              ( -z "$aret$mesg" && nm -eq compstate[nmatches] ) ]] } ; then
 	local prevpre="$PREFIX" previpre="$IPREFIX"
diff --git a/Completion/Base/_describe b/Completion/Base/_describe
index 684385d13..986d27c4e 100644
--- a/Completion/Base/_describe
+++ b/Completion/Base/_describe
@@ -16,7 +16,7 @@ fi
 
 _tags "$_type" || return 1
 
-zstyle -t ":completion:${curcontext}:$_type" verbose && _showd=yes
+zstyle -T ":completion:${curcontext}:$_type" verbose && _showd=yes
 
 _description "$_type" _expl "$1"
 shift
diff --git a/Completion/Base/_jobs b/Completion/Base/_jobs
index fc2f3d87f..6c4154d6f 100644
--- a/Completion/Base/_jobs
+++ b/Completion/Base/_jobs
@@ -5,12 +5,12 @@ local expl disp jobs job jids pfx='%' desc how
 _tags jobs || return 1
 
 if [[ "$1" = -t ]]; then
-  zstyle -t ":completion:${curcontext}:jobs" prefix-needed &&
+  zstyle -T ":completion:${curcontext}:jobs" prefix-needed &&
       [[ "$PREFIX" != %* && compstate[nmatches] -ne 0 ]] && return 1
   shift
 fi
 zstyle -t ":completion:${curcontext}:jobs" prefix-hidden && pfx=''
-zstyle -t ":completion:${curcontext}:jobs" verbose       && desc=yes
+zstyle -T ":completion:${curcontext}:jobs" verbose       && desc=yes
 
 if [[ "$1" = -r ]]; then
   jids=( "${(@k)jobstates[(R)running*]}" )
diff --git a/Completion/Base/_subscript b/Completion/Base/_subscript
index b74fe795d..5917c8234 100644
--- a/Completion/Base/_subscript
+++ b/Completion/Base/_subscript
@@ -21,7 +21,7 @@ elif [[ ${(Pt)${compstate[parameter]}} = array* ]]; then
   while _tags; do
     if _requested -V indexes expl 'array index'; then
       ind=( {1..${#${(P)${compstate[parameter]}}}} )
-      if zstyle -t ":completion:${curcontext}:indexes" verbose; then
+      if zstyle -T ":completion:${curcontext}:indexes" verbose; then
         list=()
         for i in "$ind[@]"; do
           [[ "$i" = ${PREFIX}*${SUFFIX} ]] &&
diff --git a/Completion/Base/_tilde b/Completion/Base/_tilde
index 35621d9d3..98e9d2c00 100644
--- a/Completion/Base/_tilde
+++ b/Completion/Base/_tilde
@@ -22,9 +22,9 @@ while _tags; do
       compadd "$suf[@]" "$expl[@]" "$@" - "${(@k)nameddirs}"
 
   if _requested -V directory-stack expl 'directory stack' &&
-     { ! zstyle -t ":completion:${curcontext}:directory-stack" prefix-needed ||
+     { ! zstyle -T ":completion:${curcontext}:directory-stack" prefix-needed ||
        [[ "$PREFIX" = [-+]* || nm -eq compstate[nmatches] ]] }; then
-    if zstyle -t ":completion:${curcontext}:directory-stack" verbose; then
+    if zstyle -T ":completion:${curcontext}:directory-stack" verbose; then
       integer i
 
       lines=("${PWD}" "${dirstack[@]}")
diff --git a/Completion/Builtins/_pids b/Completion/Builtins/_pids
index b00e811bb..d74cd9a56 100644
--- a/Completion/Builtins/_pids
+++ b/Completion/Builtins/_pids
@@ -16,7 +16,7 @@ zstyle -a ":completion:${curcontext}:ps" arguments args
 
 out="$(command ps $args 2>/dev/null)"
 
-if zstyle -t ":completion:${curcontext}:processes" verbose; then
+if zstyle -T ":completion:${curcontext}:processes" verbose; then
   zstyle -a ":completion:${curcontext}:ps" list-arguments listargs
   (( $#listargs )) || listargs=( "$args[@]" )
   if [[ "$listargs" = "$args" ]]; then
diff --git a/Completion/Builtins/_popd b/Completion/Builtins/_popd
index 586018952..6f0908ede 100644
--- a/Completion/Builtins/_popd
+++ b/Completion/Builtins/_popd
@@ -11,10 +11,10 @@ local expl list lines revlines disp
 
 _wanted -V directory-stack expl 'directory stack' || return 1
 
-! zstyle -t ":completion:${curcontext}:directory-stack" prefix-needed ||
+! zstyle -T ":completion:${curcontext}:directory-stack" prefix-needed ||
     [[ $PREFIX = [-+]* ]] || return 1
 
-if zstyle -t ":completion:${curcontext}:directory-stack" verbose; then
+if zstyle -T ":completion:${curcontext}:directory-stack" verbose; then
   # get the list of directories with their canonical number
   # and turn the lines into an array, removing the current directory
   lines=("${dirstack[@]}")
diff --git a/Completion/Builtins/_sched b/Completion/Builtins/_sched
index 851659033..783113c45 100644
--- a/Completion/Builtins/_sched
+++ b/Completion/Builtins/_sched
@@ -7,7 +7,7 @@ if [[ CURRENT -eq 2 ]]; then
     _wanted -C - jobs expl 'scheduled jobs' || return 1
 
     lines=(${(f)"$(sched)"})
-    if zstyle -t ":completion:${curcontext}:jobs" verbose; then
+    if zstyle -T ":completion:${curcontext}:jobs" verbose; then
       disp=( -ld lines )
     else
       disp=()
diff --git a/Completion/Builtins/_signals b/Completion/Builtins/_signals
index ad1f0131b..910502165 100644
--- a/Completion/Builtins/_signals
+++ b/Completion/Builtins/_signals
@@ -22,7 +22,7 @@ done
 
 if _wanted signals expl signal &&
        { [[ -z "$minus" ]] ||
-         ! zstyle -t ":completion:${curcontext}:signals" prefix-needed ||
+         ! zstyle -T ":completion:${curcontext}:signals" prefix-needed ||
          [[ "$PREFIX" = -* ]] } ; then
   local disp tmp
 
diff --git a/Completion/Builtins/_stat b/Completion/Builtins/_stat
index ae884066f..c03b1590c 100644
--- a/Completion/Builtins/_stat
+++ b/Completion/Builtins/_stat
@@ -10,7 +10,7 @@ else
   while _tags; do
     _requested files && _files && ret=0
     _requested options expl 'inode element' &&
-        { ! zstyle -t ":completion:${curcontext}:options" prefix-needed ||
+        { ! zstyle -T ":completion:${curcontext}:options" prefix-needed ||
           [[ "$PREFIX[1]" = + || ret -eq 1 ]] } &&
         compadd "$expl[@]" - +device +inode +mode +nlink +uid +gid +rdev \
                              +size +atime +mtime +ctime +blksize +block +link
diff --git a/Completion/Core/_approximate b/Completion/Core/_approximate
index 989eeba11..ac2b69aad 100644
--- a/Completion/Core/_approximate
+++ b/Completion/Core/_approximate
@@ -17,7 +17,7 @@ local curcontext="${curcontext}" oldcontext opm="$compstate[pattern_match]"
 
 oldcontext="$curcontext"
 
-zstyle -s ":completion:${curcontext}:" max-errors cfgacc
+zstyle -s ":completion:${curcontext}:" max-errors cfgacc || cfgacc='2 numeric'
 
 # Get the number of errors to accept.
 
diff --git a/Completion/Core/_files b/Completion/Core/_files
index 821d324d8..1e139bc6b 100644
--- a/Completion/Core/_files
+++ b/Completion/Core/_files
@@ -16,17 +16,14 @@ else
 fi
 (( $opts[(I)-F] )) && hasign=yes
 
-if [[ "$group[2]" = files ]]; then
-  opts=("$opts[@]" "$group[@]")
-  group=()
-fi
+[[ "$group[2]" = files ]] && opts=("$opts[@]" "$group[@]") group=()
 
 ign=()
 
-if zstyle -s ":completion:${curcontext}:all-files" file-patterns tmp &&
-   [[ -n "$tmp" ]]; then
-  aopts=(-g "$tmp")
-fi
+zstyle -s ":completion:${curcontext}:all-files" file-patterns tmp &&
+    [[ -n "$tmp" ]] &&
+        aopts=(-g "$tmp")
+
 if zstyle -s ":completion:${curcontext}:directories" file-patterns tmp &&
    [[ -n "$tmp" ]]; then
   dopts=(-g "$tmp")
diff --git a/Completion/Core/_main_complete b/Completion/Core/_main_complete
index 2381ae76d..62ba446b0 100644
--- a/Completion/Core/_main_complete
+++ b/Completion/Core/_main_complete
@@ -19,7 +19,7 @@
 setopt localoptions nullglob rcexpandparam extendedglob
 unsetopt markdirs globsubst shwordsplit nounset ksharrays
 
-local comp post ret=1 _compskip _prio_num=1 format _comp_ignore \
+local comp post ret=1 _compskip format _comp_ignore \
       _completers _completers_left _comp_matcher \
       context state line opt_args val_args curcontext="$curcontext" \
       _last_nmatches=-1 _last_menu_style _def_menu_style _menu_style sel \
@@ -28,12 +28,6 @@ local comp post ret=1 _compskip _prio_num=1 format _comp_ignore \
       _saved_list="${compstate[list]}" \
       _saved_insert="${compstate[insert]}"
 
-typeset -U _offered_tags _tried_tags _failed_tags _used_tags _unused_tags
-
-_offered_tags=()
-_tried_tags=()
-_failed_tags=()
-
 typeset -U _lastdescr
 
 [[ -z "$curcontext" ]] && curcontext=:::
@@ -50,17 +44,13 @@ fi
 # Initial setup.
 
 _setup default
-_def_menu_style=( "$_last_menu_style[@]" )
+_def_menu_style=( "$_last_menu_style[@]"
+                  ${SELECTMIN+select${SELECTMIN:+\=$SELECTMIN}} )
 _last_menu_style=()
 
 # Get the names of the completers to use in the positional parameters.
 
-if (( ! $# )); then
-  local tmp
-
-  zstyle -a ":completion:${curcontext}:" completer tmp
-  set -- "$tmp[@]"
-fi
+(( $# )) || zstyle -a ":completion:${curcontext}:" completer argv || set _complete
 
 # And now just call the completer functions defined.
 
@@ -75,7 +65,7 @@ for comp; do
   shift 1 _completers_left
 done
 
-if (( $compstate[nmatches] )); then
+if [[ $compstate[nmatches] -gt 1 ]]; then
   [[ _last_nmatches -ge 0 && _last_nmatches -ne compstate[nmatches] ]] &&
       _menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" )
 
@@ -128,7 +118,7 @@ if (( $compstate[nmatches] )); then
       fi
     fi
   fi
-elif [[ $#_lastdescr -ne 0 ]] &&
+elif [[ $compstate[nmatches] -eq 0 && $#_lastdescr -ne 0 ]] &&
      zstyle -s ":completion:${curcontext}:warnings" format format; then
   local str
 
@@ -147,11 +137,6 @@ elif [[ $#_lastdescr -ne 0 ]] &&
   compadd -UX "$format" -n ''
 fi
 
-# See which tags were or were not used.
-
-_used_tags=( "${(@)_tried_tags:#${(j:|:)~${(@)_failed_tags//\[/\\[}//\]/\\]}}" )
-_unused_tags=( "${(@)_offered_tags:#${(j:|:)~${(@)_used_tags//\[/\\[}//\]/\\]}}" )
-
 # Now call the post-functions.
 
 for post in "$comppostfuncs[@]"; do
@@ -167,10 +152,5 @@ _lastcomp[iprefix]="$IPREFIX"
 _lastcomp[isuffix]="$ISUFFIX"
 _lastcomp[qiprefix]="$QIPREFIX"
 _lastcomp[qisuffix]="$QISUFFIX"
-_lastcomp[offered_tags]="${(j.:.)_offered_tags}"
-_lastcomp[tried_tags]="${(j.:.)_tried_tags}"
-_lastcomp[failed_tags]="${(j.:.)_failed_tags}"
-_lastcomp[unused_tags]="${(j.:.)_unused_tags}"
-_lastcomp[used_tags]="${(j.:.)_used_tags}"
 
 return ret
diff --git a/Completion/Core/_normal b/Completion/Core/_normal
index c3315610f..1791d2471 100644
--- a/Completion/Core/_normal
+++ b/Completion/Core/_normal
@@ -66,10 +66,7 @@ fi
 name="$cmd1"
 comp="$_comps[$cmd1]"
 
-if [[ -z "$comp" ]]; then
-  name="$cmd2"
-  comp="$_comps[$cmd2]"
-fi
+[[ -z "$comp" ]] && name="$cmd2" comp="$_comps[$cmd2]"
 
 # And generate the matches, probably using default completion.
 
@@ -77,11 +74,9 @@ if [[ -n "$comp" ]]; then
   _compskip=patterns
   "$comp" && ret=0
   [[ "$_compskip" = (all|*patterns*) ]] && return ret
-else
-  if [[ "$_compskip" != *default* ]]; then
-    name=-default-
-    comp="$_comps[-default-]"
-  fi
+elif [[ "$_compskip" != *default* ]]; then
+  name=-default-
+  comp="$_comps[-default-]"
 fi
 
 if [[ "$_compskip" != (all|*patterns*) ]]; then
diff --git a/Completion/Core/_path_files b/Completion/Core/_path_files
index 07e75052f..62c52e3c4 100644
--- a/Completion/Core/_path_files
+++ b/Completion/Core/_path_files
@@ -290,7 +290,7 @@ for prepath in "$prepaths[@]"; do
         tmp2=( "$tmp1[@]" )
         builtin compadd -D tmp1 -F _comp_ignore "$matcher[@]" - "${(@)tmp1:t}"
 
-        if [[ $#tmp1 -eq 0 && -n "$_comp_correct" ]]; then
+        if [[ $#tmp1 -eq 0 ]]; then
           tmp1=( "$tmp2[@]" )
 	  compadd -D tmp1 -F _comp_ignore "$matcher[@]" - "${(@)tmp2:t}"
         fi
@@ -334,7 +334,7 @@ for prepath in "$prepaths[@]"; do
 
       if [[ -z "$tpre$tsuf" && -n "$pre$suf" ]]; then
 	pfxsfx=(-S '' "$pfxsfx[@]")
-	break;
+	break
       elif [[ "$haspats" = no && -z "$tpre$tsuf" &&
 	"$pre" = */ && -z "$suf" ]]; then
 	PREFIX="${opre}"
@@ -352,8 +352,8 @@ for prepath in "$prepaths[@]"; do
       if [[ "$rem" = *parent* ]]; then
 	for i in ${(M)^tmp1:#*/*}(-/); do
 	  remt="${${i#$prepath$realpath$donepath}%/*}"
-	  while [[ "$remt" = */* ]]; do
-	    [[ "$prepath$realpath$donepath$remt" -ef "$i" ]] && break
+	  while [[ "$remt" = */* &&
+	           ! "$prepath$realpath$donepath$remt" -ef "$i" ]]; do
 	    remt="${remt%/*}"
 	  done
 	  [[ "$remt" = */* || "$remt" -ef "$i" ]] &&
@@ -406,9 +406,7 @@ for prepath in "$prepaths[@]"; do
 
     if [[ "$tmp3" = */* ]]; then
       tmp4=( "${(@M)tmp1:#${tmp3%%/*}/*}" )
-      if (( $#tmp4 )); then
-        tmp1=( "$tmp4[@]" )
-      fi
+      (( $#tmp4 )) && tmp1=( "$tmp4[@]" )
     fi
 
     # Next we see if this component is ambiguous.
diff --git a/Completion/Core/_setup b/Completion/Core/_setup
index b3b2bdb33..4c45cc271 100644
--- a/Completion/Core/_setup
+++ b/Completion/Core/_setup
@@ -3,12 +3,15 @@
 local val nm="$compstate[nmatches]"
 
 if zstyle -a ":completion:${curcontext}:$1" list-colors val; then
-  zmodload -e zsh/complist || zmodload -i zsh/complist
+  zmodload -i zsh/complist
   if [[ "$1" = default ]]; then
     ZLS_COLORS="${(j.:.)${(@)val:gs/:/\\\:}}"
   else
     eval "ZLS_COLORS=\"(${1})\${(j.:(${1}).)\${(@)val:gs/:/\\\:}}:\${ZLS_COLORS}\""
   fi
+elif [[ "$1" = default && -n "$ZLS_COLORS$ZLS_COLOURS" ]]; then
+  zmodload -i zsh/complist
+  ZLS_COLORS="$ZLS_COLORS$ZLS_COLOURS"
 fi
 
 if zstyle -s ":completion:${curcontext}:$1" list-packed val; then
diff --git a/Completion/Core/_tags b/Completion/Core/_tags
index d2d5555fa..1884717e2 100644
--- a/Completion/Core/_tags
+++ b/Completion/Core/_tags
@@ -35,9 +35,6 @@ if (( $# )); then
 
   comptags -i "$curcontext" "$@"
 
-  _offered_tags=( "$_offered_tags[@]" "$@" )
-  _last_tags=()
-
   # Sort the tags.
 
   if [[ -n "$_sort_tags" ]]; then
@@ -55,6 +52,15 @@ if (( $# )); then
 
     [[ -z "$nodef" ]] && comptry "$@"
   else
+
+    # The first ones give the default behaviour.
+
+    comptry arguments values
+    comptry options
+    comptry globbed-files
+    comptry directories
+    comptry all-files
+
     comptry "$@"
   fi
 
@@ -67,20 +73,4 @@ fi
 
 # The other mode: switch to the next set of tags.
 
-local tags
-
-_failed_tags=( "$_failed_tags[@]" "$_last_tags[@]" )
-
-# Return failure if no sets remaining.
-
-comptags -N || return 1
-
-# Otherwise get the next tags.
-
-comptags -S _last_tags
-
-_tried_tags=( "$_tried_tags[@]" "$_last_tags[@]" )
-
-shift 1 "$prios"
-
-return 0
+comptags -N
diff --git a/Completion/Core/compinit b/Completion/Core/compinit
index cd9ec7c2f..1555a9b2f 100644
--- a/Completion/Core/compinit
+++ b/Completion/Core/compinit
@@ -470,19 +470,6 @@ compstyle() {
   return 0
 }
 
-# Default styles. This should be executed conditionally somehow.
-
-zstyle ':completion:*'                      verbose       'yes'
-zstyle ':completion:*'                      prefix-needed 'yes'
-zstyle ':completion:*'                      prefix-hidden 'no'
-zstyle ':completion:*:(correct|approximate):*' max-errors    '2' numeric
-zstyle ':completion:*:correct:*'               prompt        'correct to:'
-zstyle ':completion:*::::'                      completer     '_complete'
-zstyle ':completion:*::::default'               list-colors   "${(s.:.)ZLS_COLORS:-${ZLS_COLOURS:-no=0:fi=0:di=0:ln=0:pi=0:so=0:bd=0:cd=0:ex=0}}"
-(( $+SELECTMIN )) && zstyle ':completion:*::::default' menu "select=$SELECTMIN"
-zstyle ':completion:*' tag-order 'arguments values' options \
-                                 globbed-files directories all-files
-
 # Now we automatically make the definition files autoloaded.
 
 typeset -U _i_files
diff --git a/Completion/Debian/_apt b/Completion/Debian/_apt
index 60b8d51d6..be7973c34 100644
--- a/Completion/Debian/_apt
+++ b/Completion/Debian/_apt
@@ -106,7 +106,7 @@ tmp2=("$tmp2[@]" $_ra_left${(M)^short_bool:#$~tmp1} $_ra_left${(M)^short_intleve
 tmp3=("$tmp3[@]" $_ra_left${(M)^short_hasarg:#$~tmp1} $_ra_left${(M)^short_configfile:#$~tmp1} $_ra_left${(M)^short_arbitem:#$~tmp1})
 _describe -o option tmp2 -- tmp3 -S='
 
-  comp_opt='{ ! zstyle -t ":completion:${curcontext}:options" prefix-needed || [[ "$PREFIX" = -* ]] }'" && { $comp_short; $comp_long }"
+  comp_opt='{ ! zstyle -T ":completion:${curcontext}:options" prefix-needed || [[ "$PREFIX" = -* ]] }'" && { $comp_short; $comp_long }"
 
   regex_short=()
   regex_long=()
diff --git a/Completion/User/_lp b/Completion/User/_lp
index 7cd770f63..d1c110b1c 100644
--- a/Completion/User/_lp
+++ b/Completion/User/_lp
@@ -37,7 +37,7 @@ fi
 
 if compset -P -P || [[ "$words[CURRENT-1]" = -P ]]; then
   if _wanted printers expl printer; then
-    if zstyle -t ":completion:${curcontext}:printers" verbose; then
+    if zstyle -T ":completion:${curcontext}:printers" verbose; then
       zformat -a list ' -- ' "$_lp_cache[@]"
       disp=(-ld list)
     else
@@ -47,7 +47,7 @@ if compset -P -P || [[ "$words[CURRENT-1]" = -P ]]; then
 
     (( $+_lp_alias_cache )) || return 1
 
-    if zstyle -t ":completion:${curcontext}:printers" verbose; then
+    if zstyle -T ":completion:${curcontext}:printers" verbose; then
       zformat -a list ' -- ' "$_lp_alias_cache[@]"
       disp=(-ld list)
     else
@@ -73,7 +73,7 @@ else
         if _requested users expl user; then
           strs=( "${(@)${(@)list##[^ 	]##[ 	]##[^ 	]##[ 	]##}%%[ 	]*}" )
           if [[ -z "$shown" ]] &&
-             zstyle -t ":completion:${curcontext}:users" verbose; then
+             zstyle -T ":completion:${curcontext}:users" verbose; then
             disp=(-ld list)
   	  shown=yes
           else
@@ -84,7 +84,7 @@ else
         if _requested jobs expl job; then
           strs=( "${(@)${(@)list##[^ 	]##[ 	]##[^ 	]##[ 	]##[^ 	]##[ 	]##}%%[ 	]*}" )
           if [[ -z "$shown" ]] &&
-             zstyle -t ":completion:${curcontext}:jobs" verbose; then
+             zstyle -T ":completion:${curcontext}:jobs" verbose; then
             disp=(-ld list)
   	  shown=yes
           else
diff --git a/Completion/User/_socket b/Completion/User/_socket
index bb9ee2a67..dfe8f4844 100644
--- a/Completion/User/_socket
+++ b/Completion/User/_socket
@@ -9,7 +9,7 @@ local curcontext="$curcontext" state line expl
 typeset -A opt_args
 
 [[ $CURRENT -eq 2 ]] && _wanted options expl option &&
-    { ! zstyle -t ":completion:${curcontext}:options" prefix-needed ||
+    { ! zstyle -T ":completion:${curcontext}:options" prefix-needed ||
       [[ "$PREFIX" = -* ]] } &&
     compadd -M 'r:|[_-]=* r:|=*' "$expl[@]" - -version
 
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index e54e5825b..f7b7f41d0 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -713,6 +713,9 @@ only completion for prediction one could use:
 example(zstyle ':completion:::::' completer _complete _correct _approximate
 zstyle ':completion:incremental::::' completer _complete _correct
 zstyle ':completion:predict::::' completer _complete)
+
+The default value for this style is tt(_complete), i.e. normally only
+completion will be done.
 )
 item(tt(completions))(
 This style is used by the tt(_expand) completer function.
@@ -1115,7 +1118,10 @@ will em(not) try to generate corrected
 completions when given a numeric argument, so in this case the number given
 should be greater than zero.  For example, `tt(2 not-numeric)' specifies that
 correcting completion with two errors will usually be performed, but if a
-numeric argument is given, correcting completion will not be performed.
+numeric argument is given, correcting completion will not be
+performed.
+
+The default value for this style contains tt(2) and tt(numeric).
 )
 item(tt(menu))(
 This style is tested for the tt(default) tag and the tags used when
@@ -1219,6 +1225,8 @@ item(tt(prefix-hidden))(
 This is used when matches with a common prefix are added (e.g. option
 names). If it is `true', this prefix will not be shown in the list of
 matches.
+
+The default value for this style is `false'.
 )
 item(tt(prefix-needed))(
 This, too, is used for matches with a common prefix. If it is set to
@@ -1226,6 +1234,8 @@ This, too, is used for matches with a common prefix. If it is set to
 matches. E.g. for options this means that the `tt(-)', `tt(+)', or
 `tt(-)tt(-)' has to be on the line to make option names be completed at
 all.
+
+The default style for this style is `true'.
 )
 item(tt(prompt))(
 The tt(incremental-complete-word) widget shows the value of this
@@ -1344,7 +1354,10 @@ in which order tags are to be used based on additional context
 information. See the tt(_sort_tags) function below for a description
 of how such functions can be implemented.
 
-If no style has been defined for a context, all tags will be used.
+If no style has been defined for a context, the strings tt(arguments
+values), tt(options), tt(globbed-files), tt(directories) and
+tt(all-files) plus all tags offered by the completion function will be 
+used.
 )
 item(tt(users))(
 This may be set to a list of names that should be completed whenever 
@@ -1369,7 +1382,9 @@ the tt(accounts) tag.
 item(tt(verbose))(
 This is used in several contexts to decide if only a simple or a
 verbose list of matches should be generated. For example some commands 
-show descriptions for option names if this style is true.
+show descriptions for option names if this style is `true'.
+
+The default value for this style is `true'.
 )
 item(tt(word))(
 To find out if listing should be performed on its own, the tt(_list)
diff --git a/Doc/Zsh/mod_zutil.yo b/Doc/Zsh/mod_zutil.yo
index e72a2b712..565dafed9 100644
--- a/Doc/Zsh/mod_zutil.yo
+++ b/Doc/Zsh/mod_zutil.yo
@@ -15,6 +15,7 @@ xitem(tt(zstyle -b) var(context) var(style) var(name))
 xitem(tt(zstyle -a) var(context) var(style) var(name))
 xitem(tt(zstyle -h) var(context) var(style) var(name))
 xitem(tt(zstyle -t) var(context) var(style) [ var(strings) ...])
+xitem(tt(zstyle -T) var(context) var(style) [ var(strings) ...])
 item(tt(zstyle -m) var(context) var(style) var(pattern))(
 This builtin command is used to define and lookup styles. Styles are
 pairs of names and values, where the values consist of any number of
@@ -63,7 +64,7 @@ makes it be returned as an associative array (with the first, third,
 etc. string being used as the keys and the other strings being used as 
 the values).
 
-The tt(-t) option can be used to test the value of a style, i.e. it
+The tt(-t) options can be used to test the value of a style, i.e. it
 only sets the return value. Without any var(strings) arguments it is
 zero if the style is defined for at least one matching pattern, has
 only one string in its value and that is equal to one of tt(true),
@@ -71,6 +72,9 @@ tt(yes), tt(on) or tt(1). If any var(strings) are given the return
 zero if and only if at least one of the var(strings) is equal to at
 least one of the strings in the value.
 
+The tt(-T) option is like tt(-t) but returns zero if the style is not
+set for any matching pattern.
+
 The tt(-m) option can be used to match a value. It returns zero if the 
 var(pattern) matches at least one of the strings in the value.
 )
diff --git a/Src/Modules/zutil.c b/Src/Modules/zutil.c
index d40b0ae4c..8c552433f 100644
--- a/Src/Modules/zutil.c
+++ b/Src/Modules/zutil.c
@@ -285,6 +285,7 @@ bin_zstyle(char *nam, char **args, char *ops, int func)
     case 'a': min = 3; max =  3; break;
     case 'h': min = 3; max =  3; break;
     case 't': min = 2; max = -1; break;
+    case 'T': min = 2; max = -1; break;
     case 'm': min = 3; max =  3; break;
     case 'g': min = 1; max =  3; break;
     default:
@@ -417,6 +418,7 @@ bin_zstyle(char *nam, char **args, char *ops, int func)
 	}
 	break;
     case 't':
+    case 'T':
 	{
 	    Stypat s;
 
@@ -438,7 +440,7 @@ bin_zstyle(char *nam, char **args, char *ops, int func)
 			     !strcmp(s->vals[0], "on") ||
 			     !strcmp(s->vals[0], "1"));
 	    }
-	    return 1;
+	    return (args[0][1] == 't');
 	}
 	break;
     case 'm':