about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-12-10 14:47:55 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-12-10 14:47:55 +0000
commit188e6569dbb250b25bf3fe74b9d13007d5207b51 (patch)
treebbc3c0b5f636f5887aa5cf52c8b0a75b4cccf353 /Completion
parentd5d015115cda8eed53b668ee325f12b2dd863383 (diff)
downloadzsh-188e6569dbb250b25bf3fe74b9d13007d5207b51.tar.gz
zsh-188e6569dbb250b25bf3fe74b9d13007d5207b51.tar.xz
zsh-188e6569dbb250b25bf3fe74b9d13007d5207b51.zip
manual/8992
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Base/_arguments4
-rw-r--r--Completion/Base/_combination2
-rw-r--r--Completion/Base/_describe5
-rw-r--r--Completion/Base/_first2
-rw-r--r--Completion/Base/_jobs9
-rw-r--r--Completion/Base/_regex_arguments2
-rw-r--r--Completion/Base/_subscript4
-rw-r--r--Completion/Base/_tilde4
-rw-r--r--Completion/Builtins/_pids6
-rw-r--r--Completion/Builtins/_popd5
-rw-r--r--Completion/Builtins/_sched2
-rw-r--r--Completion/Builtins/_signals5
-rw-r--r--Completion/Builtins/_stat3
-rw-r--r--Completion/Commands/_history_complete_word12
-rw-r--r--Completion/Core/_approximate7
-rw-r--r--Completion/Core/_description10
-rw-r--r--Completion/Core/_expand11
-rw-r--r--Completion/Core/_list4
-rw-r--r--Completion/Core/_main_complete9
-rw-r--r--Completion/Core/_match4
-rw-r--r--Completion/Core/_message5
-rw-r--r--Completion/Core/_oldlist5
-rw-r--r--Completion/Core/_path_files10
-rw-r--r--Completion/Core/_requested2
-rw-r--r--Completion/Core/_setup12
-rw-r--r--Completion/Core/_tags10
-rw-r--r--Completion/Core/compinit32
-rw-r--r--Completion/Debian/_apt2
-rw-r--r--Completion/User/_cvs3
-rw-r--r--Completion/User/_groups2
-rw-r--r--Completion/User/_hosts2
-rw-r--r--Completion/User/_ports2
-rw-r--r--Completion/User/_socket3
-rw-r--r--Completion/User/_urls5
-rw-r--r--Completion/User/_users2
-rw-r--r--Completion/X/_x_color2
36 files changed, 108 insertions, 101 deletions
diff --git a/Completion/Base/_arguments b/Completion/Base/_arguments
index 591cb6ac7..16293a098 100644
--- a/Completion/Base/_arguments
+++ b/Completion/Base/_arguments
@@ -162,7 +162,7 @@ while [[ "$1" = -(O*|C) ]]; do
   esac
 done
 
-_style -s options auto-description autod
+zstyle -s ":completion${curcontext}:options" auto-description autod
 
 if (( $# )) && comparguments -i "$autod" "$@"; then
   local nm="$compstate[nmatches]" action noargs aret expl local
@@ -258,7 +258,7 @@ if (( $# )) && comparguments -i "$autod" "$@"; then
       fi
 
       if [[ -z "$matched" ]] && _requested options &&
-          { ! _style options prefix-needed ||
+          { ! zstyle -t ":completion${curcontext}:options" prefix-needed ||
             [[ "$origpre" = [-+]* ]] } ; then
 	local prevpre="$PREFIX" previpre="$IPREFIX"
 
diff --git a/Completion/Base/_combination b/Completion/Base/_combination
index 97da22a5f..ffda5cae9 100644
--- a/Completion/Base/_combination
+++ b/Completion/Base/_combination
@@ -78,7 +78,7 @@ key="${1%:*}"
 num="${${1##*:}:-1}"
 shift
 
-if _style -a "$tag" "$style" tmp; then
+if zstyle -a ":completion${curcontext}:$tag" "$style" tmp; then
   eval "tmp=( \"\${(@M)tmp:#\${(j($sep))~pats}}\" )"
   if (( keys[(in:num:)$key] != 1 )); then
     eval "tmp=( \${tmp#\${(j(${sep}))~\${(@)\${(@)keys[2,(rn:num:)\$key]}/*/*}}$sep} )"
diff --git a/Completion/Base/_describe b/Completion/Base/_describe
index 7be7ea29f..1db7e6fb6 100644
--- a/Completion/Base/_describe
+++ b/Completion/Base/_describe
@@ -16,7 +16,7 @@ fi
 
 _tags "$_type" || return 1
 
-_style "$_type" verbose && _showd=yes
+zstyle -t ":completion${curcontext}:$_type" verbose && _showd=yes
 
 _description "$_type" _expl "$1"
 shift
@@ -27,7 +27,8 @@ else
   compdescribe -i "$@"
 fi
 
-[[ "$_type" = options ]] && _style options prefix-hidden && _hide=yes
+[[ "$_type" = options ]] &&
+    zstyle -t ":completion${curcontext}:options" prefix-hidden && _hide=yes
 
 while compdescribe -g _args _tmpd _tmpmd _tmps _tmpms; do
 
diff --git a/Completion/Base/_first b/Completion/Base/_first
index 6740c00c5..f81ab465e 100644
--- a/Completion/Base/_first
+++ b/Completion/Base/_first
@@ -50,7 +50,7 @@
 #       # We first search in the last ten words, then in the last
 #       # twenty words, and so on...
 #       while [[ i -le max ]]; do
-#         if _style history-words sort; then
+#         if zstyle -t ":completion${curcontext}:history-words" sort; then
 #           _description history-words expl "history ($n)"
 #         else
 #           _description -V history-words expl "history ($n)"
diff --git a/Completion/Base/_jobs b/Completion/Base/_jobs
index addc88607..ff9fa5a62 100644
--- a/Completion/Base/_jobs
+++ b/Completion/Base/_jobs
@@ -4,9 +4,10 @@ local expl disp jobs job jids pfx='%' desc
 
 _tags jobs || return 1
 
-_style jobs prefix-needed && [[ "$PREFIX" != %* ]] && return 1
-_style jobs prefix-hidden && pfx=''
-_style jobs verbose       && desc=yes
+zstyle -t ":completion${curcontext}:jobs" prefix-needed &&
+    [[ "$PREFIX" != %* ]] && return 1
+zstyle -t ":completion${curcontext}:jobs" prefix-hidden && pfx=''
+zstyle -t ":completion${curcontext}:jobs" verbose       && desc=yes
 
 if [[ "$1" = -r ]]; then
   jids=( "${(@k)jobstates[(R)running*]}" )
@@ -30,7 +31,7 @@ if [[ -n "$desc" ]]; then
   done
 fi
 
-if _style jobs strings; then
+if zstyle -t ":completion${curcontext}:jobs" strings; then
   local texts i text str tmp
 
   # Find shortest unambiguous strings.
diff --git a/Completion/Base/_regex_arguments b/Completion/Base/_regex_arguments
index 918eafc5c..653aeedbe 100644
--- a/Completion/Base/_regex_arguments
+++ b/Completion/Base/_regex_arguments
@@ -330,7 +330,7 @@ _regex_arguments () {
   local i state next
 
   local cache_dir
-  _style -s regex cache-path cache_dir
+  zstyle -s ":completion${curcontext}:regex" cache-path cache_dir
   [[ -z "$cache_dir" ]] && cache_dir="$HOME/.zsh/regex_arguments"
   local cache_file="$cache_dir/$1"
   local cache_test
diff --git a/Completion/Base/_subscript b/Completion/Base/_subscript
index 21e62e8aa..fdda19301 100644
--- a/Completion/Base/_subscript
+++ b/Completion/Base/_subscript
@@ -21,14 +21,14 @@ elif [[ ${(Pt)${compstate[parameter]}} = array* ]]; then
   while _tags; do
     if _requested -V indexes expl 'array index'; then
       ind=( {1..${#${(P)${compstate[parameter]}}}} )
-      if _style indexes verbose; then
+      if zstyle -t ":completion${curcontext}:indexes" verbose; then
         list=()
         for i in "$ind[@]"; do
           [[ "$i" = ${PREFIX}*${SUFFIX} ]] &&
               list=( "$list[@]" 
 	             "${i}:$(print -D ${(P)${compstate[parameter]}[$i]})" )
         done
-        compdisplay list ' -- ' "$list[@]"
+        zformat -a list ' -- ' "$list[@]"
 	disp=( -d list)
       else
         disp=()
diff --git a/Completion/Base/_tilde b/Completion/Base/_tilde
index 4aceca6ce..bba928f50 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' &&
-     { ! _style directory-stack prefix-needed ||
+     { ! zstyle -t ":completion${curcontext}:directory-stack" prefix-needed ||
        [[ "$PREFIX" = [-+]* ]] }; then
-    if _style 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 d383d6b99..af88a5920 100644
--- a/Completion/Builtins/_pids
+++ b/Completion/Builtins/_pids
@@ -12,11 +12,11 @@ if [[ "$1" = -m ]]; then
   shift 2
 fi
 
-_style -a ps list-arguments listargs
-_style -a ps arguments args
+zstyle -a ":completion${curcontext}:ps" list-arguments listargs
+zstyle -a ":completion${curcontext}:ps" arguments args
 (( $#listargs )) || listargs=( "$args[@]" )
 
-if _style processes verbose; then
+if zstyle -t ":completion${curcontext}:processes" verbose; then
   list=("${(@Mr:COLUMNS-1:)${(f@)$(command ps $listargs 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*${~match}}")
   desc=(-ld list)
 else
diff --git a/Completion/Builtins/_popd b/Completion/Builtins/_popd
index 604bcecd5..9c5981d17 100644
--- a/Completion/Builtins/_popd
+++ b/Completion/Builtins/_popd
@@ -11,9 +11,10 @@ local expl list lines revlines disp
 
 _wanted -V directory-stack expl 'directory stack' || return 1
 
-! _style directory-stack prefix-needed || [[ $PREFIX = [-+]* ]] || return 1
+! zstyle -t ":completion${curcontext}:directory-stack" prefix-needed ||
+    [[ $PREFIX = [-+]* ]] || return 1
 
-if _style 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=("${PWD}" "${dirstack[@]}")
diff --git a/Completion/Builtins/_sched b/Completion/Builtins/_sched
index 5e1086518..ea11eeb65 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 _style 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 c79350044..545d83924 100644
--- a/Completion/Builtins/_signals
+++ b/Completion/Builtins/_signals
@@ -21,11 +21,12 @@ done
 [[ "$1" = -(|-) ]] && shift
 
 if _wanted signals expl signal &&
-       { [[ -z "$minus" ]] || ! _style signals prefix-needed ||
+       { [[ -z "$minus" ]] ||
+         ! zstyle -t ":completion${curcontext}:signals" prefix-needed ||
          [[ "$PREFIX" = -* ]] } ; then
   local disp tmp
 
-  if _style signals prefix-hidden; then
+  if zstyle -t ":completion${curcontext}:signals" prefix-hidden; then
     tmp=( "${(@)signals[1,last]}" )
     disp=(-d tmp)
   else
diff --git a/Completion/Builtins/_stat b/Completion/Builtins/_stat
index d0ec85550..232cf672b 100644
--- a/Completion/Builtins/_stat
+++ b/Completion/Builtins/_stat
@@ -9,7 +9,8 @@ else
 
   while _tags; do
     _requested options expl 'inode element' &&
-        { ! _style options prefix-needed || [[ "$PREFIX[1]" = + ]] } &&
+        { ! zstyle -t ":completion${curcontext}:options" prefix-needed ||
+          [[ "$PREFIX[1]" = + ]] } &&
         compadd "$expl[@]" - +device +inode +mode +nlink +uid +gid +rdev \
                              +size +atime +mtime +ctime +blksize +block +link
     fi
diff --git a/Completion/Commands/_history_complete_word b/Completion/Commands/_history_complete_word
index 08fc1ea79..7867189e8 100644
--- a/Completion/Commands/_history_complete_word
+++ b/Completion/Commands/_history_complete_word
@@ -25,9 +25,9 @@ _history_complete_word () {
     direction=older
   fi
 
-  _style -s history-words stop stop
+  zstyle -s ":completion${curcontext}:history-words" stop stop
 
-  _style history-words list || compstate[list]=''
+  zstyle -t ":completion${curcontext}:history-words" list || compstate[list]=''
 
   if [[ -n "$compstate[old_list]" &&
         ( -n "$stop" || "$compstate[insert]" = menu ) ]] ; then
@@ -67,14 +67,14 @@ _history_complete_word () {
 }
 
 _history_complete_word_gen_matches () {
-  if _style history-words list; then
-    if _style history-words sort; then
+  if zstyle -t ":completion${curcontext}:history-words" list; then
+    if zstyle -t ":completion${curcontext}:history-words" sort; then
       _description history-words expl 'history word'
     else
       _description -V history-words expl 'history word'
     fi
   else
-    if _style history-words sort; then
+    if zstyle -t ":completion${curcontext}:history-words" sort; then
       expl=()
     else
       expl=('-V' '')
@@ -84,7 +84,7 @@ _history_complete_word_gen_matches () {
   [[ -n "$_hist_stop" ]] && PREFIX="$_hist_old_prefix"
 
   local rem_dups
-  if _style history-words remove-all-dups; then
+  if zstyle -t ":completion${curcontext}:history-words" remove-all-dups; then
     rem_dups=''
   else
     rem_dups='-1'
diff --git a/Completion/Core/_approximate b/Completion/Core/_approximate
index fc2d6afa0..bb1faa7b3 100644
--- a/Completion/Core/_approximate
+++ b/Completion/Core/_approximate
@@ -20,7 +20,7 @@ local curcontext="${curcontext}" oldcontext
 
 oldcontext="$curcontext"
 
-_style -s '' max-errors cfgacc
+zstyle -s ":completion${curcontext}:" max-errors cfgacc
 
 # Get the number of errors to accept.
 
@@ -79,11 +79,12 @@ while [[ _comp_correct -le comax ]]; do
                "e:$_comp_correct" "o:$PREFIX$SUFFIX"
 
   if _complete; then
-    if _style '' insert-unambiguous &&
+    if zstyle -t ":completion${curcontext}:" insert-unambiguous &&
        [[ "${#compstate[unambiguous]}" -ge "${#:-$PREFIX$SUFFIX}" ]]; then
       compstate[pattern_insert]=unambiguous
     elif _requested original &&
-         ( [[ compstate[nmatches] -gt 1 ]] || _style '' original ); then
+         ( [[ compstate[nmatches] -gt 1 ]] ||
+           zstyle -t ":completion${curcontext}:" original ); then
       local expl
 
       _description -V original expl original
diff --git a/Completion/Core/_description b/Completion/Core/_description
index 3bf15d320..89a0733a8 100644
--- a/Completion/Core/_description
+++ b/Completion/Core/_description
@@ -16,17 +16,19 @@ _setup "$1"
 
 name="$2"
 
-_style -s "$1" format format || _style -s descriptions format format
+zstyle -s ":completion${curcontext}:$1" format format ||
+    zstyle -s ":completion${curcontext}:descriptions" format format
 
-_style -s "$1" hidden hidden
+zstyle -s ":completion${curcontext}:$1" hidden hidden
 if [[ "$hidden" = (all|yes|true|1|on) ]]; then
   [[ "$hidden" = all ]] && format=''
   hide=(-n)
 fi
-_style -s "$1" group-name gname && [[ -z "$gname" ]] && gname="$1"
+zstyle -s ":completion${curcontext}:$1" group-name gname &&
+    [[ -z "$gname" ]] && gname="$1"
 
 shift 2
-[[ -n "$format" ]] && compfmt format "$format" "d:$1" "${(@)argv[2,-1]}"
+[[ -n "$format" ]] && zformat -f format "$format" "d:$1" "${(@)argv[2,-1]}"
 
 if [[ -n "$gname" ]]; then
   if [[ -n "$format" ]]; then
diff --git a/Completion/Core/_expand b/Completion/Core/_expand
index bde5ee2f8..cdfc2a8d1 100644
--- a/Completion/Core/_expand
+++ b/Completion/Core/_expand
@@ -13,7 +13,8 @@ local exp word="$PREFIX$SUFFIX" sort expr expl curcontext="${curcontext}"
 
 # First, see if we should insert all *completions*.
 
-if _style -s '' completions expr && [[ "${(e):-\$[$expr]}" -eq 1 ]]; then
+if zstyle -s ":completion${curcontext}:" completions expr &&
+   [[ "${(e):-\$[$expr]}" -eq 1 ]]; then
   compstate[insert]=all
   return 1
 fi
@@ -29,7 +30,8 @@ exp=("$word")
 # First try substitution. That weird thing spanning multiple lines
 # changes quoted spaces, tabs, and newlines into spaces.
 
-_style -s '' substitute expr && [[ "${(e):-\$[$expr]}" -eq 1 ]] &&
+zstyle -s ":completion${curcontext}:" substitute expr &&
+    [[ "${(e):-\$[$expr]}" -eq 1 ]] &&
     exp=( "${(e)exp//\\[ 	
 ]/ }" )
 
@@ -39,7 +41,8 @@ _style -s '' substitute expr && [[ "${(e):-\$[$expr]}" -eq 1 ]] &&
 
 # Now try globbing.
 
-_style -s '' glob expr && [[ "${(e):-\$[$expr]}" -eq 1 ]] &&
+zstyle -s ":completion${curcontext}:" glob expr &&
+    [[ "${(e):-\$[$expr]}" -eq 1 ]] &&
     exp=( ${~exp}(N) )
 
 # If we don't have any expansions or only one and that is the same
@@ -50,7 +53,7 @@ _style -s '' glob expr && [[ "${(e):-\$[$expr]}" -eq 1 ]] &&
 
 # Now add as matches whatever the user requested.
 
-_style -s '' sort sort
+zstyle -s ":completion${curcontext}:" sort sort
 
 [[ "$sort" = (yes|true|1|on) ]] && exp=( "${(@o)exp}" )
 
diff --git a/Completion/Core/_list b/Completion/Core/_list
index 6c72bc9e9..294467eca 100644
--- a/Completion/Core/_list
+++ b/Completion/Core/_list
@@ -8,7 +8,7 @@ local pre suf curcontext="${curcontext}:list" expr
 
 # Get the strings to compare.
 
-if _style '' word; then
+if zstyle -t ":completion${curcontext}:" word; then
   pre="$HISTNO$LBUFFER"
   suf="$RBUFFER"
 else
@@ -18,7 +18,7 @@ fi
 
 # Should we only show a list now?
 
-_style -s '' condition expr
+zstyle -s ":completion${curcontext}:" condition expr
 if [[ ( -z "$expr" || "${(e):-\$[$expr]}" -eq 1 ) &&
       ( "$pre" != "$_list_prefix" || "$suf" != "$_list_suffix" ) ]]; then
 
diff --git a/Completion/Core/_main_complete b/Completion/Core/_main_complete
index 2bacad88b..285413726 100644
--- a/Completion/Core/_main_complete
+++ b/Completion/Core/_main_complete
@@ -17,7 +17,7 @@
 # state than the global one for which you are completing.
 
 
-local comp post ret=1 _compskip _prio_num=1 _cur_context format \
+local comp post ret=1 _compskip _prio_num=1 format \
       context state line opt_args val_args curcontext="$curcontext" \
       _last_nmatches=-1 _last_menu_style _def_menu_style _menu_style sel \
       _saved_exact="$compstate[exact]" \
@@ -56,7 +56,7 @@ _last_menu_style=()
 if (( ! $# )); then
   local tmp
 
-  _style -a '' completer tmp
+  zstyle -a ":completion${curcontext}:" completer tmp
   set -- "$tmp[@]"
 fi
 
@@ -139,7 +139,7 @@ fi
 if [[ compstate[nmatches] -eq 0 &&
       compstate[matcher] -eq compstate[total_matchers] &&
       $#_lastdescr -ne 0 ]] &&
-   _style -s warnings format format; then
+   zstyle -s ":completion${curcontext}:warnings" format format; then
   local str
 
   compstate[list]='list force'
@@ -151,7 +151,8 @@ if [[ compstate[nmatches] -eq 0 &&
   *) str="${(j:, :)_lastdescr[1,-2]}, or $_lastdescr[-1]";;
   esac
 
-  compadd -UX "${format//\\%d/$str}" -n ''
+  zformat -f format "$format" "d:$str"
+  compadd -UX "$format" -n ''
 fi
 
 _lastcomp=( "${(@kv)compstate}" )
diff --git a/Completion/Core/_match b/Completion/Core/_match
index d5556dfcd..0a9d755c4 100644
--- a/Completion/Core/_match
+++ b/Completion/Core/_match
@@ -19,8 +19,8 @@ tmp="${${:-$PREFIX$SUFFIX}#[~=]}"
 [[ "$tmp:q" = "$tmp" ||
    compstate[matcher] -ne compstate[total_matchers] ]] && return 1
 
-_style -s '' original orig
-_style -b '' insert-unambiguous ins
+zstyle -s ":completion${curcontext}:" original orig
+zstyle -b ":completion${curcontext}:" insert-unambiguous ins
 
 # Try completion without inserting a `*'?
 
diff --git a/Completion/Core/_message b/Completion/Core/_message
index 6b2666253..8ae93f973 100644
--- a/Completion/Core/_message
+++ b/Completion/Core/_message
@@ -4,10 +4,11 @@ local format
 
 _tags messages || return 1
 
-_style -s messages format format || _style -s descriptions format format
+zstyle -s ":completion${curcontext}:messages" format format ||
+    zstyle -s ":completion${curcontext}:descriptions" format format
 
 if [[ -n "$format" ]]; then
-  compfmt format "$format" "d:$1" "${(@)argv[2,-1]}"
+  zformat -f format "$format" "d:$1" "${(@)argv[2,-1]}"
   if [[ $compstate[nmatches] -eq 0 ]]; then
     compstate[list]='list force'
     compstate[insert]=''
diff --git a/Completion/Core/_oldlist b/Completion/Core/_oldlist
index ba57ed6b4..b0092d586 100644
--- a/Completion/Core/_oldlist
+++ b/Completion/Core/_oldlist
@@ -2,7 +2,7 @@
 
 local curcontext="${curcontext}:oldlist" list
 
-_style -s '' list list
+zstyle -s ":completion${curcontext}:" list list
 
 # If this is a listing widget and there is already an old list,
 # and either the style :oldlist:list is `always', or it is not `never'
@@ -33,7 +33,8 @@ fi
 
 if [[ -z $compstate[old_insert] && -n $compstate[old_list] ]]; then
   compstate[old_list]=keep
-elif [[ $WIDGET = *complete(|-prefix|-word) ]] && _style '' menu; then
+elif [[ $WIDGET = *complete(|-prefix|-word) ]] &&
+     zstyle -t ":completion${curcontext}:" menu; then
   if [[ -n $compstate[old_insert] ]]; then
     compstate[old_list]=keep
     if [[ $WIDGET = *reverse* ]]; then
diff --git a/Completion/Core/_path_files b/Completion/Core/_path_files
index e5135a422..2dcfa625c 100644
--- a/Completion/Core/_path_files
+++ b/Completion/Core/_path_files
@@ -116,7 +116,7 @@ orig="${PREFIX}${SUFFIX}"
 # If given no `-F' option, we want to use the `ignored-suffixes'-style.
 
 if (( ! $#ignore )); then
-  if _style -a files ignored-suffixes ignore; then
+  if zstyle -a ":completion${curcontext}:files" ignored-suffixes ignore; then
     ignore=(-F "( $ignore )")
   else
 
@@ -347,8 +347,10 @@ for prepath in "$prepaths[@]"; do
       tmp4="$testpath"
       compquote tmp1 tmp4
 
-      if [[ -n $menu ]] || ! _style paths expand '*suffix*'; then
-        _style paths cursor && compstate[to_end]=''
+      if [[ -n $menu ]] ||
+         ! zstyle -t ":completion${curcontext}:paths" expand suffix; then
+        zstyle -t ":completion${curcontext}:paths" cursor &&
+            compstate[to_end]=''
         if [[ "$tmp3" = */* ]]; then
 	  compadd -Qf "$mopts[@]" -p "$linepath$tmp4" -s "/${tmp3#*/}" \
 	          -W "$prepath$realpath$testpath" "$ignore[@]" \
@@ -436,7 +438,7 @@ done
 
 exppaths=( "${(@)exppaths:#$orig}" )
 
-if _style paths expand '*prefix*' &&
+if zstyle -t ":completion${curcontext}:paths" expand prefix &&
    [[ $#exppaths -gt 0 && nm -eq compstate[nmatches] ]]; then
   PREFIX="${opre}"
   SUFFIX="${osuf}"
diff --git a/Completion/Core/_requested b/Completion/Core/_requested
index 3bc6f3b40..a582adfb9 100644
--- a/Completion/Core/_requested
+++ b/Completion/Core/_requested
@@ -8,8 +8,6 @@ else
   tag="$1"
 fi
 
-comptags -C _cur_context
-
 comptags -R "$tag" &&
     if [[ $# -gt 1 ]]; then
       _description "$@"
diff --git a/Completion/Core/_setup b/Completion/Core/_setup
index bdef1bf8e..fa1495ced 100644
--- a/Completion/Core/_setup
+++ b/Completion/Core/_setup
@@ -2,7 +2,7 @@
 
 local val nm="$compstate[nmatches]"
 
-if _style -a "$1" list-colors val; then
+if zstyle -a ":completion${curcontext}:$1" list-colors val; then
   if [[ "$1" = default ]]; then
     ZLS_COLORS="${(j.:.)${(@)val:gs/:/\\\:}}"
   else
@@ -10,7 +10,7 @@ if _style -a "$1" list-colors val; then
   fi
 fi
 
-if _style -s "$1" list-packed val; then
+if zstyle -s ":completion${curcontext}:$1" list-packed val; then
   if [[ "$val" = (yes|true|1|on) ]]; then
     compstate[list]="${compstate[list]} packed"
   else
@@ -20,7 +20,7 @@ else
   compstate[list]="$_saved_list"
 fi
 
-if _style -s "$1" list-rows-first val; then
+if zstyle -s ":completion${curcontext}:$1" list-rows-first val; then
   if [[ "$val" = (yes|true|1|on) ]]; then
     compstate[list]="${compstate[list]} rows"
   else
@@ -30,7 +30,7 @@ else
   compstate[list]="$_saved_list"
 fi
 
-if _style -s "$1" last-prompt val; then
+if zstyle -s ":completion${curcontext}:$1" last-prompt val; then
   if [[ "$val" = (yes|true|1|on) ]]; then
     compstate[last_prompt]=yes
   else
@@ -40,7 +40,7 @@ else
   compstate[last_prompt]="$_saved_lastprompt"
 fi
 
-if _style -s "$1" accept-exact val; then
+if zstyle -s ":completion${curcontext}:$1" accept-exact val; then
   if [[ "$val" = (yes|true|1|on) ]]; then
     compstate[exact]=accept
   else
@@ -53,7 +53,7 @@ fi
 [[ _last_nmatches -ge 0 && _last_nmatches -ne nm ]] &&
     _menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" )
 
-if _style -a "$1" menu val; then
+if zstyle -a ":completion${curcontext}:$1" menu val; then
   _last_nmatches="$nm"
   _last_menu_style=( "$val[@]" )
 else
diff --git a/Completion/Core/_tags b/Completion/Core/_tags
index b39c0fff5..fcef91061 100644
--- a/Completion/Core/_tags
+++ b/Completion/Core/_tags
@@ -18,7 +18,7 @@ if (( $# )); then
 
   [[ "$1" = -(|-) ]] && shift
 
-  if _style -a '' group-order order; then
+  if zstyle -a ":completion${curcontext}" group-order order; then
     local name
 
     for name in "$order[@]"; do
@@ -42,10 +42,6 @@ if (( $# )); then
 
   "${_sort_tags:-_sort_tags}" "$@"
 
-  # Also store the context (used below and in _requested).
-
-  _cur_context="$curcontext"
-
   # Return non-zero if at least one set of tags should be used.
 
   comptags -T
@@ -57,10 +53,6 @@ fi
 
 local tags
 
-# Reset the current context.
-
-comptags -C _cur_context
-
 _failed_tags=( "$_failed_tags[@]" "$_last_tags[@]" )
 
 # Return failure if no sets remaining.
diff --git a/Completion/Core/compinit b/Completion/Core/compinit
index 06586cdc4..0d99aadd5 100644
--- a/Completion/Core/compinit
+++ b/Completion/Core/compinit
@@ -440,19 +440,19 @@ compstyle() {
   if (( ! $# )); then
     local pats styles vals pat style pre eq
 
-    compstyles -G pats
+    zstyle -g pats
 
-    for pat in "$pats[@]"; do
+    for pat in "${(@M)pats:#:completion*}"; do
       if [[ -n "$long" ]]; then
-        pre="compstyle ${(qq)pat} "
+        pre="compstyle ${(qq)pat#:completion} "
       else
-        print "$pat"
+        print "${pat#:completion}"
 	pre='    '
 	eq=' ='
       fi
-      compstyles -G styles "$pat"
+      zstyle -g styles "$pat"
       for style in "$styles[@]"; do
-        compstyles -G vals "$pat" "$style"
+        zstyle -g vals "$pat" "$style"
         print "${pre}${style}${eq}" "${(@qq)vals}"
       done
     done
@@ -461,26 +461,24 @@ compstyle() {
   fi
 
   if [[ "$1" = -d ]]; then
-    case "$#" in
-    1) compstyles -d ;;
-    2) compstyles -d "$2" ;;
-    *) 
-      local pat="$2" style
+    if [[ $# -gt 1 ]]; then
+      zstyle -d ":completion$2" "${(@)argv[3,-1]}"
+    else
+      local pats
 
-      shift
+      zstyle -g pats
 
-      for style; do
-        compstyles -d "$pat" "$style"
+      for pat in "${(@M)pats:#:completion}"; do
+        zstyle -d "$pat"
       done
-      ;;
-    esac
+    fi
 
     return 0
   fi
 
   [[ "$1" = -(|-) ]] && shift
 
-  compstyles -a "$@"
+  zstyle - ":completion$1" "${(@)argv[2,-1]}"
 
   return 0
 }
diff --git a/Completion/Debian/_apt b/Completion/Debian/_apt
index 80f9d8ab6..9d51533ab 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='{ ! _style 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/_cvs b/Completion/User/_cvs
index 484d5c88c..fc0ab3116 100644
--- a/Completion/User/_cvs
+++ b/Completion/User/_cvs
@@ -488,7 +488,8 @@ _cvs_extract_file_entries () {
 
 (( $+functions[_cvs_extract_modifiedfile_entries] )) ||
 _cvs_extract_modifiedfile_entries () {
-  if _style cvs disable-stat || ! { zmodload -e stat || zmodload stat }; then
+  if zstyle -t ":completion${curcontext}:cvs" disable-stat ||
+     ! { zmodload -e stat || zmodload stat }; then
     _cvs_extract_file_entries
     return
   fi
diff --git a/Completion/User/_groups b/Completion/User/_groups
index 0007c1791..fbd884688 100644
--- a/Completion/User/_groups
+++ b/Completion/User/_groups
@@ -4,7 +4,7 @@ local expl groups
 
 _wanted groups expl group || return 1
 
-if ! _style -a groups groups groups; then
+if ! zstyle -a ":completion${curcontext}:groups" groups groups; then
   (( $+_cache_groups )) ||
       if (( ${+commands[ypcat]} )); then
         : ${(A)_cache_groups:=${${(s: :)$(ypcat group.byname)}%%:*}} # If you use YP
diff --git a/Completion/User/_hosts b/Completion/User/_hosts
index 196f40c83..9de9b2d96 100644
--- a/Completion/User/_hosts
+++ b/Completion/User/_hosts
@@ -2,7 +2,7 @@
 
 local expl hosts
 
-if ! _style -a hosts hosts hosts; then
+if ! zstyle -a ":completion${curcontext}:hosts" hosts hosts; then
   (( $+_cache_hosts )) ||
       : ${(A)_cache_hosts:=${(s: :)${(ps:\t:)${${(f)"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}}
 
diff --git a/Completion/User/_ports b/Completion/User/_ports
index db4ea03c8..07428fe75 100644
--- a/Completion/User/_ports
+++ b/Completion/User/_ports
@@ -2,7 +2,7 @@
 
 local expl ports
 
-if ! _style -a ports ports ports; then
+if ! zstyle -a ":completion${curcontext}:ports" ports ports; then
   (( $+_cache_ports )) ||
       : ${(A)_cache_ports:=${${(M)${${(f)"$(</etc/services)"}:#\#*}#*/tcp}%%[ 	]*}}
 
diff --git a/Completion/User/_socket b/Completion/User/_socket
index 7a7c7dccc..d6a8b7af7 100644
--- a/Completion/User/_socket
+++ b/Completion/User/_socket
@@ -9,7 +9,8 @@ local curcontext="$curcontext" state line expl
 typeset -A opt_args
 
 [[ $CURRENT -eq 2 ]] && _wanted options expl option &&
-    { ! _style options prefix-needed || [[ "$PREFIX" = -* ]] } &&
+    { ! zstyle -t ":completion${curcontext}:options" prefix-needed ||
+      [[ "$PREFIX" = -* ]] } &&
     compadd -M 'r:|[_-]=* r:|=*' "$expl[@]" - -version
 
 _arguments -C -s \
diff --git a/Completion/User/_urls b/Completion/User/_urls
index 265fadae8..84244cce0 100644
--- a/Completion/User/_urls
+++ b/Completion/User/_urls
@@ -40,8 +40,9 @@
 
 local ipre scheme host user uhosts ret=1 expl
 local urls_path localhttp
-_style -s urls path urls_path || urls_path="${ZDOTDIR:-$HOME}/.zsh/urls"
-_style -a urls local localhttp
+zstyle -s ":completion${curcontext}:urls" path urls_path ||
+    urls_path="${ZDOTDIR:-$HOME}/.zsh/urls"
+zstyle -a ":completion${curcontext}:urls" local localhttp
 local localhttp_servername="$localhttp[1]"
 local localhttp_documentroot="$localhttp[2]"
 local localhttp_userdir="$localhttp[3]"
diff --git a/Completion/User/_users b/Completion/User/_users
index 8ddfd8cd7..45ed0f89d 100644
--- a/Completion/User/_users
+++ b/Completion/User/_users
@@ -7,7 +7,7 @@ local expl users
 
 _wanted users expl user || return 1
 
-_style -a users users users &&
+zstyle -a ":completion${curcontext}:users" users users &&
     compadd "$expl[@]" "$@" - "$users[@]" && return 0
 
 compadd "$@" "$expl[@]" - "${(@k)userdirs}"
diff --git a/Completion/X/_x_color b/Completion/X/_x_color
index 2daeb51d6..592667c40 100644
--- a/Completion/X/_x_color
+++ b/Completion/X/_x_color
@@ -15,7 +15,7 @@ if (( ! $+_color_cache )); then
 
   # Cache of color names doesn't exist yet, create it.
 
-  _style -s colors path file
+  zstyle -s ":completion${curcontext}:colors" path file
   if [[ -n "$file" ]]; then
     _color_cache=( "${(@)${(@f)$(< $file)}[2,-1]##*		}" )
   else