Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Completion for cd



Thank you for your help, Bart. I tried your suggestion, but I'm afraid I'm a little overwhelmed by the amount of debug info.

Here is the complete ~/.zshrc that I use to test this:

# =========================================

autoload -U compinit

cdpath=(. /tmp/opt)

compinit

zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' '+l:|=*'
zstyle ':completion::*:::' completer _expand _complete _prefix _approximate _ignored

zstyle ':completion:*:*:cd:*:*' completer _expand _complete _complete:withpath _prefix _approximate _ignored
zstyle ':completion:*:complete:cd:*:*' tag-order local-directories -
zstyle ':completion:*:withpath:cd:*:*' tag-order path-directories

zstyle ':completion:*:*:cd:*:*' ignore-parents parent pwd

mkdir -p /tmp/{zaa,zbb,zcc,stats,opt}
mkdir -p /tmp/stats/{stats-lib,stats-web}
mkdir -p /tmp/opt/webcert

# =========================================

I then go to '/tmp/zaa' and write 'cd ../z<tab>'. The result is that 'zaa', 'zbb' and 'zcc' are all offered as alternatives, although I want 'zaa' to be filtered out.

If I remove the trailing hyphen on this line: 'zstyle ':completion:*:complete:cd:*:*' tag-order local-directories -', the ignore-parents style works: only 'zbb' and 'zcc' are offered when doing 'cd ../z<tab>' from '/tmp/zaa'. But without the hyphen, the problem that I was originally trying to solve is still there. I.e. if I go to '/tmp/stats' and type 'cd web<tab>', I am offered 'webcert', although I want to be offered 'stats-web'.

I attach the debug logs from the two different versions, 'file-1.txt' is the run _without_ hyphen, where 'zaa' is not offered. 'file-2.txt' is the run _with_ hyphen, where 'zaa' is offered despite the ignore-parents style.

+_complete_debug:20> : zsh 5.3.1
+_complete_debug:21> _main_complete
+_main_complete:11> local IFS=$' \t\n\C-@'
+_main_complete:25> eval $'local -A _comp_caller_options;\n             _comp_caller_options=(${(kv)options[@]});\n             setopt localoptions localtraps localpatterns ${_comp_options[@]};\n             local IFS=$\' \t\r\n\0\';\n             builtin enable -p \| \~ \( \? \* \[ \< \^ \# 2>/dev/null;\n             exec </dev/null;\n             trap - ZERR;\n             local -a reply;\n             local REPLY'
 +(eval):1> local -A _comp_caller_options
 +(eval):2> _comp_caller_options=( posixargzero off autolist on printexitvalue off kshzerosubscript off histreduceblanks off chaselinks off extendedglob on localloops off histnostore off automenu on globcomplete off unset on listpacked off promptsubst off shwordsplit off pathdirs off kshtypeset off listtypes on warncreateglobal off promptbang off dotglob off braceexpand on listbeep on correctall off privileged off numericglobsort off histverify off trackall on histsubstpattern off globstarshort off cbases off rcquotes off posixaliases off histfindnodups off bashautolist off sharehistory off overstrike off kshautoload off incappendhistory off appendcreate off promptcr on mailwarn off pushdignoredups off interactive on ignoreeof off globsubst off rematchpcre off monitor on histsavebycopy on histbeep on debugbeforecmd on magicequalsubst off rmstarsilent off posixjobs off hashcmds on posixtraps off extendedhistory off notify on kshoptionprint off histexpiredupsfirst off glob on posixcd off braceccl off badpattern on longlistjobs off banghist on dvorak off alwaystoend off hashall on globalexport on ksharrays off correct off autonamedirs off histexpand on typesetsilent off rmstarwait off histnofunctions off autoparamslash on trapsasync off sunkeyboardhack off promptsp on histsavenodups off autocd off allexport off posixidentifiers off cshjunkiehistory off autopushd off completeinword off completealiases off aliases off autocontinue off appendhistory on singlelinezle off hashlistall on ignoreclosebraces off recexact off localoptions on interactivecomments off errexit off cshjunkiequotes off markdirs off hashdirs on cdablevars off rcexpandparam on vi off printeightbit off multifuncdef on xtrace on login on cshjunkieloops off histappend on histignorespace off evallineno on shfileexpansion off rcs on functionargzero on errreturn off combiningchars off histignoredups off histfcntllock off beep on autoremoveslash on hup on globdots off autoparamkeys on shnullcmd off multibyte on zle on promptpercent on flowcontrol on continueonerror off incappendhistorytime off autoresume off globassign off caseglob on shortloops on bsdecho off cprecedences off log on transientrprompt off verbose off localpatterns on ignorebraces off pipefail off equals on menucomplete off cshnullglob off casematch on promptvars off histallowclobber off bareglobqual on shinstdin on restricted off pushdminus off nullglob on chasedots off mailwarning off listambiguous on cshnullcmd off bashrematch off octalzeroes off forcefloat off exec on multios on emacs off nomatch on pathscript off localtraps on stdin on onecmd off kshglob off clobber on posixbuiltins off alwayslastprompt on pushdtohome off histignorealldups off hashexecutablesonly off pushdsilent off shoptionletters off physical off sourcetrace off histlexwords off bgnice on globalrcs on posixstrings off checkjobs on shglob off singlecommand off listrowsfirst off ) 
 +(eval):3> setopt localoptions localtraps localpatterns bareglobqual extendedglob glob multibyte multifuncdef nullglob rcexpandparam unset NO_allexport NO_aliases NO_cshnullglob NO_cshjunkiequotes NO_errexit NO_globassign NO_globsubst NO_histsubstpattern NO_ignorebraces NO_ignoreclosebraces NO_kshglob NO_ksharrays NO_kshtypeset NO_markdirs NO_octalzeroes NO_posixbuiltins NO_shwordsplit NO_shglob NO_warncreateglobal
 +(eval):4> local IFS=$' \t\C-M\n\C-@'
 +(eval):5> enable -p '|' '~' '(' '?' '*' '[' '<' '^' '#'
 +(eval):7> trap - ZERR
 +(eval):8> local -a reply
 +(eval):9> local REPLY
+_main_complete:27> local func funcs ret=1 tmp _compskip format nm call match min max i num _completers _completer _completer_num curtag _comp_force_list _matchers _matcher _c_matcher _matcher_num _comp_tags _comp_mesg mesg str context state state_descr line opt_args val_args curcontext='' _last_nmatches=-1 _last_menu_style _def_menu_style _menu_style sel _tags_level=0 _saved_exact='' _saved_lastprompt=yes _saved_list=ambiguous _saved_insert=automenu-unambiguous _saved_colors='' _saved_colors_set=0 _ambiguous_color=''
+_main_complete:42> local _comp_priv_prefix
+_main_complete:43> unset _comp_priv_prefix
+_main_complete:46> local -a precommands
+_main_complete:48> typeset -U _lastdescr _comp_ignore _comp_colors
+_main_complete:52> [[ -z '' ]]
+_main_complete:52> curcontext=::: 
+_main_complete:54> zstyle -s :completion::::: insert-tab tmp
+_main_complete:54> tmp=yes 
+_main_complete:56> [[ yes = *pending(|[[:blank:]]*) || yes = *pending=(#b)([0-9]##)(|[[:blank:]]*) ]]
+_main_complete:64> [[ automenu-unambiguous = tab* ]]
+_main_complete:77> [[ '' = \* ]]
+_main_complete:87> [[ -z '' ]]
+_main_complete:88> [[ -o equals ]]
+_main_complete:88> compset -P 1 '='
+_main_complete:90> [[ ../z != */* ]]
+_main_complete:98> _setup default
 +_setup:3> local val nm=0
 +_setup:5> [[ 1 -eq 1 ]]
 +_setup:5> 2=default 
 +_setup:7> zstyle -a :completion:::::default list-colors val
 +_setup:21> [[ default = default ]]
 +_setup:22> unset ZLS_COLORS ZLS_COLOURS
 +_setup:27> zstyle -s :completion:::::default show-ambiguity val
 +_setup:32> zstyle -t :completion:::::default list-packed
 +_setup:34> [[ 2 -eq 1 ]]
 +_setup:37> compstate[list]=ambiguous 
 +_setup:40> zstyle -t :completion:::::default list-rows-first
 +_setup:42> [[ 2 -eq 1 ]]
 +_setup:45> compstate[list]=ambiguous 
 +_setup:48> zstyle -t :completion:::::default last-prompt
 +_setup:50> [[ 2 -eq 1 ]]
 +_setup:53> compstate[last_prompt]=yes 
 +_setup:56> zstyle -t :completion:::::default accept-exact
 +_setup:58> [[ 2 -eq 1 ]]
 +_setup:61> compstate[exact]='' 
 +_setup:64> [[ _last_nmatches -ge 0 ]]
 +_setup:67> zstyle -a :completion:::::default menu val
 +_setup:71> _last_nmatches=-1 
 +_setup:74> [[ '' != always ]]
 +_setup:75> zstyle -s :completion:::::default force-list val
+_main_complete:99> _def_menu_style=( '' ) 
+_main_complete:108> _last_menu_style=( ) 
+_main_complete:110> zstyle -s :completion:::::default list-prompt tmp
+_main_complete:114> zstyle -s :completion:::::default select-prompt tmp
+_main_complete:118> zstyle -s :completion:::::default select-scroll tmp
+_main_complete:125> ((  0  ))
+_main_complete:137> zstyle -a :completion::::: completer _completers
+_main_complete:143> _completer_num=1 
+_main_complete:146> integer SECONDS=0
+_main_complete:160> funcs=( ) 
+_main_complete:161> compprefuncs=( ) 
+_main_complete:166> tmp=_expand
+_main_complete:168> [[ -n '' ]]
+_main_complete:170> [[ _expand = *:-* ]]
+_main_complete:173> [[ _expand = *:* ]]
+_main_complete:177> _completer=expand 
+_main_complete:180> curcontext=:expand:: 
+_main_complete:181> zstyle -t :completion::expand::: show-completer
+_main_complete:184> zstyle -a :completion::expand::: matcher-list _matchers
+_main_complete:187> _matcher_num=1 
+_main_complete:188> _matcher='' 
+_main_complete:189> _c_matcher=m:{[:lower:]}={[:upper:]}
+_main_complete:190> [[ 'm:{[:lower:]}={[:upper:]}' == +* ]]
+_main_complete:193> _matcher='m:{[:lower:]}={[:upper:]}' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _expand
 +_expand:10> setopt localoptions nonomatch
 +_expand:12> [[ _matcher_num -gt 1 ]]
 +_expand:14> local exp word sort expr expl subd suf=' ' force opt asp tmp opre pre epre
 +_expand:15> local continue=0
 +_expand:17> ((  0  ))
 +_expand:22> [[ _main_complete = _prefix ]]
 +_expand:25> word=../z 
 +_expand:28> [[ ../z = *\$(|{[^}]#) || ../z = *\$[a-zA-Z0-9_]## ]]
 +_expand:36> zstyle -T :completion::expand::: suffix
 +_expand:37> [[ ../z = (\~*/*|*\$(|[=~#^+])[a-zA-Z0-9_\[\]]##[^a-zA-Z0-9_\[\]]|*\${*}?) ]]
 +_expand:41> zstyle -s :completion::expand::: accept-exact tmp
 +_expand:42> [[ ! -o recexact ]]
 +_expand:44> [[ '' != (yes|true|on|1) ]]
 +_expand:45> [[ ../z = \~(|[-+]) || ../z = \~[-+][1-9]## ]]
 +_expand:47> [[ ../z = \~* || ../z = *\$[a-zA-Z0-9_]## ]]
 +_expand:50> [[ continue -eq 1 ]]
 +_expand:55> exp=( ../z ) 
 +_expand:61> [[ '' = *s* ]]
 +_expand:62> zstyle -T :completion::expand::: substitute
 +_expand:73> [[ ! off == on && 0 = 0 ]]
 +_expand:74> local otmp
 +_expand:76> tmp=../z 
 +_expand:77> [[ 4 != 0 ]]
 +_expand:78> otmp=../z 
 +_expand:79> tmp=../z 
 +_expand:77> [[ 4 != 4 ]]
 +_expand:81> eval 'exp=(' ../z ')'
  +(eval):1> exp=( ../z ) 
 +_expand:88> setopt aliases
 +_expand:89> eval $'exp=( ${${(e)exp//\\[ \t\n]/ }//(#b)([ \t\n])/\\$match[1]} )'
  +(eval):1> exp=( ../z ) 
 +_expand:92> setopt NO_aliases
 +_expand:99> [[ -z ../z ]]
 +_expand:101> subd=( ../z ) 
 +_expand:105> [[ '' = *g* ]]
 +_expand:105> zstyle -T :completion::expand::: glob
 +_expand:106> eval $'exp=( ${~exp//(#b)\\([ \t\"\\'\n])/$match[1]} ); exp=( ${(q)exp} )'
  +(eval):1> exp=( ../z ) 
  +(eval):2> exp=( ../z ) 
 +_expand:115> ((  1  ))
 +_expand:117> [[ 1 -eq 1 && ../z = ../z(|\(N\)) ]]
 +_expand:117> return 1
+_main_complete:206> ((  _matcher_num++  ))
+_main_complete:189> _c_matcher=+l:|=*
+_main_complete:190> [[ '+l:|=*' == +* ]]
+_main_complete:191> _matcher='m:{[:lower:]}={[:upper:]} l:|=*' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _expand
 +_expand:10> setopt localoptions nonomatch
 +_expand:12> [[ _matcher_num -gt 1 ]]
 +_expand:12> return 1
+_main_complete:206> ((  _matcher_num++  ))
+_main_complete:208> [[ -n '' ]]
+_main_complete:210> ((  _completer_num++  ))
+_main_complete:166> tmp=_complete
+_main_complete:168> [[ -n '' ]]
+_main_complete:170> [[ _complete = *:-* ]]
+_main_complete:173> [[ _complete = *:* ]]
+_main_complete:177> _completer=complete 
+_main_complete:180> curcontext=:complete:: 
+_main_complete:181> zstyle -t :completion::complete::: show-completer
+_main_complete:184> zstyle -a :completion::complete::: matcher-list _matchers
+_main_complete:187> _matcher_num=1 
+_main_complete:188> _matcher='' 
+_main_complete:189> _c_matcher=m:{[:lower:]}={[:upper:]}
+_main_complete:190> [[ 'm:{[:lower:]}={[:upper:]}' == +* ]]
+_main_complete:193> _matcher='m:{[:lower:]}={[:upper:]}' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _complete
 +_complete:7> local comp name oldcontext ret=1 service
 +_complete:8> typeset -T curcontext=:complete:: ccarray
 +_complete:10> oldcontext=:complete:: 
 +_complete:14> [[ -n '' ]]
 +_complete:96> comp=_first 
 +_complete:97> [[ -n _first ]]
 +_complete:98> service=-first- 
 +_complete:99> ccarray[3]=-first- 
 +_complete:100> eval _first
  +(eval):1> _first
 +_complete:100> ret=0 
 +_complete:101> [[ '' = all ]]
 +_complete:110> [[ -n '' ]]
 +_complete:114> ret=1 
 +_complete:115> [[ command = command ]]
 +_complete:116> curcontext=:complete:: 
 +_complete:117> _normal -s
  +_normal:3> local _comp_command1 _comp_command2 _comp_command skip
  +_normal:5> [[ -s = -s ]]
  +_normal:6> skip=( -s ) 
  +_normal:16> [[ -o BANG_HIST && ../z = !*: || ../z = "!*: ]]
  +_normal:29> [[ CURRENT -eq 1 ]]
  +_normal:38> _set_command
   +_set_command:6> local command
   +_set_command:8> command=cd 
   +_set_command:10> [[ -z cd ]]
   +_set_command:12> ((  1 + 0  ))
   +_set_command:13> _comp_command1=cd 
   +_set_command:14> _comp_command=cd 
  +_normal:40> _dispatch -s cd cd '' -default-
   +_dispatch:3> local comp pat val name i ret=1 _compskip=''
   +_dispatch:4> local curcontext=:complete:: service str noskip
   +_dispatch:5> local -a match mbegin mend
   +_dispatch:9> [[ -s = -s ]]
   +_dispatch:10> noskip=yes 
   +_dispatch:11> shift
   +_dispatch:14> [[ -z yes ]]
   +_dispatch:16> curcontext=:complete:cd: 
   +_dispatch:18> shift
   +_dispatch:22> [[ '' != (all|*patterns*) ]]
   +_dispatch:24> str=cd
   +_dispatch:25> [[ -n cd ]]
   +_dispatch:26> service=cd 
   +_dispatch:24> str=
   +_dispatch:25> [[ -n '' ]]
   +_dispatch:25> continue
   +_dispatch:24> str=-default-
   +_dispatch:25> [[ -n -default- ]]
   +_dispatch:26> service=-default- 
   +_dispatch:45> ret=1 
   +_dispatch:46> str=cd
   +_dispatch:47> [[ -n cd ]]
   +_dispatch:51> str=cd 
   +_dispatch:52> name=cd 
   +_dispatch:53> comp=_cd 
   +_dispatch:54> service=cd 
   +_dispatch:56> [[ -z _cd ]]
   +_dispatch:56> break
   +_dispatch:61> [[ -n _cd && cd != -default- ]]
   +_dispatch:62> _compskip=patterns 
   +_dispatch:63> eval _cd
    +(eval):1> _cd
     +_cd:22> setopt localoptions nonomatch
     +_cd:24> local expl ret=1 curarg
     +_cd:25> integer argstart=2 noopts
     +_cd:27> ((  CURRENT > 1  ))
     +_cd:30> [[ ../z = -* ]]
     +_cd:38> [[ CURRENT -eq 3 ]]
     +_cd:49> [[ ../z == (#b)(\~|)[^/]# ]]
     +_cd:54> local -a tmpWpath
     +_cd:55> [[ ../z = (|*/)../* ]]
     +_cd:56> local tmpprefix
     +_cd:58> tmpprefix=     +_cd:58> cd ..
     +_cd:58> print /tmp
     +_cd:58> tmpprefix=/tmp 
     +_cd:59> [[ -n /tmp ]]
     +_cd:60> tmpWpath=( -W /tmp ) 
     +_cd:61> IPREFIX=../ 
     +_cd:62> PREFIX=z 
     +_cd:66> [[ z != (\~|/|./|../)* && ../ != ../* ]]
     +_cd:114> [[ CURRENT -ne 1 ]]
     +_cd:114> _wanted directories expl directory _path_files -W /tmp -/
      +_wanted:3> local -a __targs __gopt
      +_wanted:5> zparseopts -D -a __gopt 1 2 V J x 'C:=__targs'
      +_wanted:7> _tags directories
       +_tags:3> local prev
       +_tags:10> [[ directories = -- ]]
       +_tags:15> ((  1  ))
       +_tags:19> local curcontext=:complete:cd: order tag nodef tmp
       +_tags:21> [[ directories = -C?* ]]
       +_tags:24> [[ directories = -C ]]
       +_tags:29> [[ directories = -(|-) ]]
       +_tags:31> zstyle -a :completion::complete:cd:: group-order order
       +_tags:36> comptags -i :complete:cd: directories
       +_tags:40> [[ -n '' ]]
       +_tags:43> zstyle -a :completion::complete:cd:: tag-order order
       +_tags:47> tag=local-directories
       +_tags:48> case local-directories (-)
       +_tags:48> case local-directories (!*)
       +_tags:48> case local-directories (?*)
       +_tags:51> comptry -m local-directories
       +_tags:55> [[ -z '' ]]
       +_tags:55> comptry directories
       +_tags:60> comptags -T
       +_tags:62> return
      +_wanted:9> _tags
       +_tags:3> local prev
       +_tags:10> [[ '' = -- ]]
       +_tags:15> ((  0  ))
       +_tags:67> comptags -N
      +_wanted:10> _all_labels directories expl directory _path_files -W /tmp -/
       +_all_labels:3> local __gopt __len __tmp __pre __suf __ret=1 __descr __spec __prev
       +_all_labels:5> [[ directories = - ]]
       +_all_labels:10> __gopt=( ) 
       +_all_labels:11> zparseopts -D -a __gopt 1 2 V J x
       +_all_labels:13> __tmp=8 
       +_all_labels:14> __len=7 
       +_all_labels:15> [[ __tmp -lt __len ]]
       +_all_labels:18> [[ __tmp -eq 7 ]]
       +_all_labels:22> __pre=4 
       +_all_labels:23> __suf=5 
       +_all_labels:26> comptags -A directories curtag __spec
       +_all_labels:27> ((  9 > _tags_level  ))
       +_all_labels:27> _comp_tags='' 
       +_all_labels:28> _tags_level=9 
       +_all_labels:29> _comp_tags=' directories ' 
       +_all_labels:30> [[ directories = *[^\\]:* ]]
       +_all_labels:37> _description directories expl directory
        +_description:3> local name gropt nopt xopt format gname hidden hide match opts tag sort
        +_description:5> opts=( ) 
        +_description:7> gropt=( -J ) 
        +_description:8> xopt=( -X ) 
        +_description:9> nopt=( ) 
        +_description:10> zparseopts -K -D -a nopt 1 2 'V=gropt' 'J=gropt' 'x=xopt'
        +_description:12> 3=directory 
        +_description:13> [[ -n directory ]]
        +_description:13> _lastdescr=( '' directory ) 
        +_description:15> zstyle -s :completion::complete:cd::directories group-name gname
        +_description:18> _setup directories -default-
         +_setup:3> local val nm=0
         +_setup:5> [[ 2 -eq 1 ]]
         +_setup:7> zstyle -a :completion::complete:cd::directories list-colors val
         +_setup:21> [[ directories = default ]]
         +_setup:27> zstyle -s :completion::complete:cd::directories show-ambiguity val
         +_setup:32> zstyle -t :completion::complete:cd::directories list-packed
         +_setup:34> [[ 2 -eq 1 ]]
         +_setup:37> compstate[list]=ambiguous 
         +_setup:40> zstyle -t :completion::complete:cd::directories list-rows-first
         +_setup:42> [[ 2 -eq 1 ]]
         +_setup:45> compstate[list]=ambiguous 
         +_setup:48> zstyle -t :completion::complete:cd::directories last-prompt
         +_setup:50> [[ 2 -eq 1 ]]
         +_setup:53> compstate[last_prompt]=yes 
         +_setup:56> zstyle -t :completion::complete:cd::directories accept-exact
         +_setup:58> [[ 2 -eq 1 ]]
         +_setup:61> compstate[exact]='' 
         +_setup:64> [[ _last_nmatches -ge 0 ]]
         +_setup:67> zstyle -a :completion::complete:cd::directories menu val
         +_setup:71> _last_nmatches=-1 
         +_setup:74> [[ '' != always ]]
         +_setup:75> zstyle -s :completion::complete:cd::directories force-list val
        +_description:20> name=expl 
        +_description:22> zstyle -s :completion::complete:cd::directories format format
        +_description:23> zstyle -s :completion::complete:cd::descriptions format format
        +_description:25> zstyle -s :completion::complete:cd::directories hidden hidden
        +_description:30> zstyle -s :completion::complete:cd::directories matcher match
        +_description:32> [[ -n 'm:{[:lower:]}={[:upper:]}' ]]
        +_description:32> opts=( -M 'm:{[:lower:]}={[:upper:]}' ) 
        +_description:36> zstyle -s :completion::complete:cd::directories sort sort
        +_description:37> zstyle -s :completion::complete:cd:: sort sort
        +_description:46> [[ -z '' ]]
        +_description:47> zstyle -a :completion::complete:cd::directories ignored-patterns _comp_ignore
        +_description:48> _comp_ignore=( ) 
        +_description:50> zstyle -s :completion::complete:cd::directories ignore-line hidden
        +_description:66> ((  0  ))
        +_description:71> tag=directories 
        +_description:73> shift 2
        +_description:74> [[ -z directory ]]
        +_description:76> [[ -n '' ]]
        +_description:80> [[ -n '' ]]
        +_description:87> [[ -n '' ]]
        +_description:90> set -A expl -M 'm:{[:lower:]}={[:upper:]}' -J -default-
        +_description:94> ((  0  ))
        +_description:95> local fakestyle descr
        +_description:96> fakestyle=fake
        +_description:97> zstyle -a :completion::complete:cd::directories fake match
        +_description:98> continue
        +_description:96> fakestyle=fake-always
        +_description:97> zstyle -a :completion::complete:cd::directories fake-always match
        +_description:98> continue
        +_description:111> return 0
       +_all_labels:39> _path_files -M 'm:{[:lower:]}={[:upper:]}' -J -default- -W /tmp -/
        +_path_files:3> local -a match mbegin mend
        +_path_files:17> _have_glob_qual z
         +_have_glob_qual:14> local complete
         +_have_glob_qual:16> [[ '' = complete ]]
         +_have_glob_qual:18> [[ -z '' && on == on && z = (#b)(((*[^\\\$]|)(\\\\)#)\()([^\)\|\~]#) || on == on && z = (#b)(((*[^\\\$]|)(\\\\)#)\(\#q)([^\)]#) ]]
        +_path_files:39> local linepath realpath donepath prepath testpath exppath skips skipped
        +_path_files:40> local tmp1 tmp2 tmp3 tmp4 i orig eorig pre suf tpre tsuf opre osuf cpre
        +_path_files:41> local pats haspats ignore pfx pfxsfx sopt gopt opt sdirs ignpar cfopt listsfx
        +_path_files:42> local nm=0 menu matcher mopts sort mid accex fake
        +_path_files:43> local listfiles listopts tmpdisp origtmp1 Uopt
        +_path_files:44> local accept_exact_dirs path_completion
        +_path_files:45> integer npathcheck
        +_path_files:46> local -a Mopts
        +_path_files:48> typeset -U prepaths exppaths
        +_path_files:50> exppaths=( ) 
        +_path_files:54> zparseopts -a mopts 'P:=pfx' 'S:=pfxsfx' 'q=pfxsfx' 'r:=pfxsfx' 'R:=pfxsfx' 'W:=prepaths' 'F:=ignore' 'M+:=matcher' J+: V+: X+: 1 2 n 'f=tmp1' '/=tmp1' 'g+:-=tmp1'
        +_path_files:59> sopt=-/ 
        +_path_files:60> ((  1  ))
        +_path_files:60> haspats=yes 
        +_path_files:61> ((  0  ))
        +_path_files:62> ((  1  ))
        +_path_files:63> pats='' 
        +_path_files:64> pats=( '*(-/)' ) 
        +_path_files:69> pats=( '*(-/)' ) 
        +_path_files:71> ((  0  ))
        +_path_files:75> ((  2  ))
        +_path_files:76> tmp1=/tmp 
        +_path_files:77> [[ / = \( ]]
        +_path_files:79> [[ / = / ]]
        +_path_files:80> prepaths=( /tmp/ ) 
        +_path_files:85> ((  ! 1  ))
        +_path_files:90> ((  0  ))
        +_path_files:101> [[ -/ = -(f|) ]]
        +_path_files:110> ((  ! 1  ))
        +_path_files:131> [[ -z '' && 0 -eq 0 && -z '' && -n '' ]]
        +_path_files:135> ((  0  ))
        +_path_files:140> [[ 2 -eq 0 ]]
        +_path_files:146> ((  2  ))
        +_path_files:148> mopts=( -J -default- -M 'm:{[:lower:]}={[:upper:]}' ) 
        +_path_files:151> zstyle -s :completion::complete:cd:: file-sort tmp1
        +_path_files:186> zstyle -t :completion::complete:cd::paths squeeze-slashes
        +_path_files:189> skips='((.|..)/)##' 
        +_path_files:192> zstyle -s :completion::complete:cd::paths special-dirs sdirs
        +_path_files:193> zstyle -t :completion::complete:cd::paths list-suffixes
        +_path_files:196> [[ '*(-/)' = ((|*[[:blank:]])\*(|[[:blank:]]*|\([^[:blank:]]##\))|*\([^[:blank:]]#/[^[:blank:]]#\)*) ]]
        +_path_files:197> sopt=-// 
        +_path_files:199> zstyle -a :completion::complete:cd::paths accept-exact accex
        +_path_files:200> zstyle -a :completion::complete:cd:: fake-files fake
        +_path_files:202> zstyle -s :completion::complete:cd:: ignore-parents ignpar
        +_path_files:204> zstyle -t :completion::complete:cd::paths accept-exact-dirs
        +_path_files:206> zstyle -T :completion::complete:cd::paths path-completion
        +_path_files:207> path_completion=1 
        +_path_files:209> [[ -n '' ]]
        +_path_files:237> pre=z 
        +_path_files:238> suf='' 
        +_path_files:239> opre=z 
        +_path_files:240> osuf='' 
        +_path_files:241> orig=z 
        +_path_files:242> eorig=z 
        +_path_files:244> [[ automenu-unambiguous = (*menu|[0-9]*) || -n '' || -n '' ]]
        +_path_files:247> [[ -n '' ]]
        +_path_files:251> Mopts=( -M 'r:|/=* r:|=*' ) 
        +_path_files:256> [[ z = [^][*?#^\|\<\>\\]#(`[^`]#`|\$)*/* ]]
        +_path_files:277> [[ z = \~ ]]
        +_path_files:327> linepath='' 
        +_path_files:328> realpath='' 
        +_path_files:330> zstyle -s :completion::complete:cd:: preserve-prefix tmp1
        +_path_files:338> [[ z = / ]]
        +_path_files:351> [[ z = (.|..)/* ]]
        +_path_files:352> donepath='' 
        +_path_files:359> prepath=/tmp/
        +_path_files:365> skipped='' 
        +_path_files:366> cpre='' 
        +_path_files:368> [[ -n '' || -z 1 ]]
        +_path_files:407> tpre=z 
        +_path_files:408> tsuf='' 
        +_path_files:416> testpath='' 
        +_path_files:418> tmp2='' 
        +_path_files:419> tpre=z 
        +_path_files:421> tmp1=( /tmp/ ) 
        +_path_files:424> ((  npathcheck = 0  ))
        +_path_files:425> true
        +_path_files:427> origtmp1=( /tmp/ ) 
        +_path_files:430> [[ z = */* ]]
        +_path_files:434> PREFIX=z 
        +_path_files:435> SUFFIX='' 
        +_path_files:447> tmp2=( /tmp/ ) 
        +_path_files:449> [[ z = (#b)*/(*) ]]
        +_path_files:462> [[ -// = *[/f]* ]]
        +_path_files:463> compfiles -p tmp1 accex '' 'm:{[:lower:]}={[:upper:]} m:{[:lower:]}={[:upper:]}' '' fake '*(-/)'
        +_path_files:467> tmp1=( /tmp/com.apple.launchd.O1QCaefF6l /tmp/com.apple.launchd.Ya84Wdpn4w /tmp/com.apple.launchd.wWcKhD0JAo /tmp/cvcd /tmp/devio_semaphore_devio_0xb013 /tmp/opt /tmp/stats /tmp/zaa /tmp/zbb /tmp/zcc ) 
        +_path_files:469> [[ -n z ]]
        +_path_files:482> ((  ! 10 && npathcheck == 0  ))
        +_path_files:499> ((  ! 10  ))
        +_path_files:501> [[ /tmp/com.apple.launchd.O1QCaefF6l = */* ]]
        +_path_files:502> [[ -n '' ]]
        +_path_files:511> tmp2=( /tmp/com.apple.launchd.O1QCaefF6l /tmp/com.apple.launchd.Ya84Wdpn4w /tmp/com.apple.launchd.wWcKhD0JAo /tmp/cvcd /tmp/devio_semaphore_devio_0xb013 /tmp/opt /tmp/stats /tmp/zaa /tmp/zbb /tmp/zcc ) 
        +_path_files:512> compadd -D tmp1 -M 'm:{[:lower:]}={[:upper:]}' - com.apple.launchd.O1QCaefF6l com.apple.launchd.Ya84Wdpn4w com.apple.launchd.wWcKhD0JAo cvcd devio_semaphore_devio_0xb013 opt stats zaa zbb zcc
        +_path_files:522> ((  ! 3  ))
        +_path_files:570> [[ -n 'parent pwd' && -z '' && z != */* && 3 -ne 0 && 'parent pwd' != *dir* && 'parent pwd' != *..* ]]
        +_path_files:575> compfiles -i tmp1 ignore 'parent pwd' /tmp/
        +_path_files:576> _comp_ignore+=( zaa ) 
        +_path_files:578> ((  1 && ! 0  ))
        +_path_files:579> mopts=( -J -default- -M 'm:{[:lower:]}={[:upper:]}' -F _comp_ignore ) 
        +_path_files:584> [[ z = */* ]]
        +_path_files:586> [[ '' = */* ]]
        +_path_files:590> break
        +_path_files:609> tmp3=z 
        +_path_files:610> tpre=z 
        +_path_files:611> tsuf='' 
        +_path_files:612> [[ -n /tmp/ ]]
        +_path_files:614> [[ -o nocaseglob ]]
        +_path_files:618> tmp1=( zaa zbb zcc ) 
        +_path_files:622> true
        +_path_files:629> compfiles -r tmp1 z
        +_path_files:630> tmp4=1 
        +_path_files:632> [[ z = */* ]]
        +_path_files:637> tmp2=z 
        +_path_files:638> PREFIX=z 
        +_path_files:639> SUFFIX='' 
        +_path_files:646> ((  tmp4  ))
        +_path_files:655> tmp2='' 
        +_path_files:656> [[ -n '' ]]
        +_path_files:658> [[ -n '' ]]
        +_path_files:662> compquote tmp1 tmp2
        +_path_files:665> [[ -z '' && '' = \* ]]
        +_path_files:675> [[ -z automenu-unambiguous ]]
        +_path_files:676> zstyle -t :completion::complete:cd::paths expand suffix
        +_path_files:677> [[ -z '' && -n '' || -z '' ]]
        +_path_files:683> ((  tmp4  ))
        +_path_files:683> zstyle -t :completion::complete:cd::paths ambiguous
        +_path_files:685> [[ z = */* ]]
        +_path_files:711> _list_files tmp1 /tmp/
         +_list_files:11> local stat f elt what dir
         +_list_files:12> local -a stylevals
         +_list_files:13> integer ok
         +_list_files:15> listfiles=( ) 
         +_list_files:16> listopts=( ) 
         +_list_files:18> zstyle -a :completion::complete:cd:: file-list stylevals
         +_list_files:18> return 1
        +_path_files:712> compadd -Qf -J -default- -M 'm:{[:lower:]}={[:upper:]}' -F _comp_ignore -p '' -s '' -W /tmp/ -M 'r:|/=* r:|=*' -a tmp1
        +_path_files:749> tmp4=- 
        +_path_files:751> break
        +_path_files:795> [[ -z - ]]
        +_path_files:881> [[ _matcher_num -eq 2 ]]
        +_path_files:890> [[ nm -ne 'compstate[nmatches]' ]]
       +_all_labels:39> __ret=0 
       +_all_labels:26> comptags -A directories curtag __spec
       +_all_labels:43> return __ret
      +_wanted:10> return 0
     +_cd:115> ret=0 
     +_cd:117> return ret
   +_dispatch:63> ret=0 
   +_dispatch:64> [[ patterns = (all|*patterns*) ]]
   +_dispatch:64> return ret
 +_complete:117> ret=0 
 +_complete:142> _compskip='' 
 +_complete:144> return ret
+_main_complete:203> ret=0 
+_main_complete:204> break 2
+_main_complete:213> curcontext=::: 
+_main_complete:214> [[ '' = keep ]]
+_main_complete:220> nm=2 
+_main_complete:223> [[ '' = keep || nm -gt 1 ]]
+_main_complete:224> [[ _last_nmatches -ge 0 ]]
+_main_complete:227> tmp=3 
+_main_complete:229> _menu_style=( '' '' ) 
+_main_complete:231> [[ ambiguous = *list ]]
+_main_complete:235> [[ automenu-unambiguous = automenu-unambiguous ]]
+_main_complete:236> [[ -n automenu-unambiguous && -n '' ]]
+_main_complete:240> sel=( ) 
+_main_complete:242> ((  0  ))
+_main_complete:258> sel=( ) 
+_main_complete:260> ((  0  ))
+_main_complete:276> [[ -n '' || -n '' ]]
+_main_complete:280> [[ -n '' ]]
+_main_complete:282> [[ -n '' ]]
+_main_complete:289> [[ automenu-unambiguous = *menu* ]]
+_main_complete:290> [[ '' = 00 ]]
+_main_complete:291> [[ -n '' ]]
+_main_complete:293> [[ -n '' ]]
+_main_complete:299> [[ '' != 00 ]]
+_main_complete:300> sel=( ) 
+_main_complete:302> ((  0  ))
+_main_complete:321> unset MENUSELECT
+_main_complete:324> [[ -n '' ]]
+_main_complete:361> [[ -n '' ]]
+_main_complete:368> [[ '' = always || '' = ?* ]]
+_main_complete:374> [[ '' = keep ]]
+_main_complete:380> ((  0  ))
+_main_complete:383> unset ZLS_COLORS
+_main_complete:389> funcs=( ) 
+_main_complete:390> comppostfuncs=( ) 
+_main_complete:395> _lastcomp=( list_lines 1 all_quotes '\' nmatches 2 restore auto context command vared '' unambiguous ../z list_max 100 unambiguous_cursor 5 list ambiguous insert_positions 7 unambiguous_positions 4 exact '' to_end match last_prompt yes pattern_insert menu ignored 1 insert automenu-unambiguous ) 
+_main_complete:396> _lastcomp[nmatches]=2 
+_main_complete:397> _lastcomp[completer]=complete 
+_main_complete:398> _lastcomp[prefix]=../z 
+_main_complete:399> _lastcomp[suffix]='' 
+_main_complete:400> _lastcomp[iprefix]='' 
+_main_complete:401> _lastcomp[isuffix]='' 
+_main_complete:402> _lastcomp[qiprefix]='' 
+_main_complete:403> _lastcomp[qisuffix]='' 
+_main_complete:404> _lastcomp[tags]=' directories ' 
+_main_complete:406> return ret
+_complete_debug:22> integer ret=0
+_complete_debug:23> unsetopt xtrace
+_complete_debug:20> : zsh 5.3.1
+_complete_debug:21> _main_complete
+_main_complete:11> local IFS=$' \t\n\C-@'
+_main_complete:25> eval $'local -A _comp_caller_options;\n             _comp_caller_options=(${(kv)options[@]});\n             setopt localoptions localtraps localpatterns ${_comp_options[@]};\n             local IFS=$\' \t\r\n\0\';\n             builtin enable -p \| \~ \( \? \* \[ \< \^ \# 2>/dev/null;\n             exec </dev/null;\n             trap - ZERR;\n             local -a reply;\n             local REPLY'
 +(eval):1> local -A _comp_caller_options
 +(eval):2> _comp_caller_options=( posixargzero off autolist on printexitvalue off kshzerosubscript off histreduceblanks off chaselinks off extendedglob on localloops off histnostore off automenu on globcomplete off unset on listpacked off promptsubst off shwordsplit off pathdirs off kshtypeset off listtypes on warncreateglobal off promptbang off dotglob off braceexpand on listbeep on correctall off privileged off numericglobsort off histverify off trackall on histsubstpattern off globstarshort off cbases off rcquotes off posixaliases off histfindnodups off bashautolist off sharehistory off overstrike off kshautoload off incappendhistory off appendcreate off promptcr on mailwarn off pushdignoredups off interactive on ignoreeof off globsubst off rematchpcre off monitor on histsavebycopy on histbeep on debugbeforecmd on magicequalsubst off rmstarsilent off posixjobs off hashcmds on posixtraps off extendedhistory off notify on kshoptionprint off histexpiredupsfirst off glob on posixcd off braceccl off badpattern on longlistjobs off banghist on dvorak off alwaystoend off hashall on globalexport on ksharrays off correct off autonamedirs off histexpand on typesetsilent off rmstarwait off histnofunctions off autoparamslash on trapsasync off sunkeyboardhack off promptsp on histsavenodups off autocd off allexport off posixidentifiers off cshjunkiehistory off autopushd off completeinword off completealiases off aliases off autocontinue off appendhistory on singlelinezle off hashlistall on ignoreclosebraces off recexact off localoptions on interactivecomments off errexit off cshjunkiequotes off markdirs off hashdirs on cdablevars off rcexpandparam on vi off printeightbit off multifuncdef on xtrace on login on cshjunkieloops off histappend on histignorespace off evallineno on shfileexpansion off rcs on functionargzero on errreturn off combiningchars off histignoredups off histfcntllock off beep on autoremoveslash on hup on globdots off autoparamkeys on shnullcmd off multibyte on zle on promptpercent on flowcontrol on continueonerror off incappendhistorytime off autoresume off globassign off caseglob on shortloops on bsdecho off cprecedences off log on transientrprompt off verbose off localpatterns on ignorebraces off pipefail off equals on menucomplete off cshnullglob off casematch on promptvars off histallowclobber off bareglobqual on shinstdin on restricted off pushdminus off nullglob on chasedots off mailwarning off listambiguous on cshnullcmd off bashrematch off octalzeroes off forcefloat off exec on multios on emacs off nomatch on pathscript off localtraps on stdin on onecmd off kshglob off clobber on posixbuiltins off alwayslastprompt on pushdtohome off histignorealldups off hashexecutablesonly off pushdsilent off shoptionletters off physical off sourcetrace off histlexwords off bgnice on globalrcs on posixstrings off checkjobs on shglob off singlecommand off listrowsfirst off ) 
 +(eval):3> setopt localoptions localtraps localpatterns bareglobqual extendedglob glob multibyte multifuncdef nullglob rcexpandparam unset NO_allexport NO_aliases NO_cshnullglob NO_cshjunkiequotes NO_errexit NO_globassign NO_globsubst NO_histsubstpattern NO_ignorebraces NO_ignoreclosebraces NO_kshglob NO_ksharrays NO_kshtypeset NO_markdirs NO_octalzeroes NO_posixbuiltins NO_shwordsplit NO_shglob NO_warncreateglobal
 +(eval):4> local IFS=$' \t\C-M\n\C-@'
 +(eval):5> enable -p '|' '~' '(' '?' '*' '[' '<' '^' '#'
 +(eval):7> trap - ZERR
 +(eval):8> local -a reply
 +(eval):9> local REPLY
+_main_complete:27> local func funcs ret=1 tmp _compskip format nm call match min max i num _completers _completer _completer_num curtag _comp_force_list _matchers _matcher _c_matcher _matcher_num _comp_tags _comp_mesg mesg str context state state_descr line opt_args val_args curcontext='' _last_nmatches=-1 _last_menu_style _def_menu_style _menu_style sel _tags_level=0 _saved_exact='' _saved_lastprompt=yes _saved_list=ambiguous _saved_insert=automenu-unambiguous _saved_colors='' _saved_colors_set=0 _ambiguous_color=''
+_main_complete:42> local _comp_priv_prefix
+_main_complete:43> unset _comp_priv_prefix
+_main_complete:46> local -a precommands
+_main_complete:48> typeset -U _lastdescr _comp_ignore _comp_colors
+_main_complete:52> [[ -z '' ]]
+_main_complete:52> curcontext=::: 
+_main_complete:54> zstyle -s :completion::::: insert-tab tmp
+_main_complete:54> tmp=yes 
+_main_complete:56> [[ yes = *pending(|[[:blank:]]*) || yes = *pending=(#b)([0-9]##)(|[[:blank:]]*) ]]
+_main_complete:64> [[ automenu-unambiguous = tab* ]]
+_main_complete:77> [[ '' = \* ]]
+_main_complete:87> [[ -z '' ]]
+_main_complete:88> [[ -o equals ]]
+_main_complete:88> compset -P 1 '='
+_main_complete:90> [[ ../z != */* ]]
+_main_complete:98> _setup default
 +_setup:3> local val nm=0
 +_setup:5> [[ 1 -eq 1 ]]
 +_setup:5> 2=default 
 +_setup:7> zstyle -a :completion:::::default list-colors val
 +_setup:21> [[ default = default ]]
 +_setup:22> unset ZLS_COLORS ZLS_COLOURS
 +_setup:27> zstyle -s :completion:::::default show-ambiguity val
 +_setup:32> zstyle -t :completion:::::default list-packed
 +_setup:34> [[ 2 -eq 1 ]]
 +_setup:37> compstate[list]=ambiguous 
 +_setup:40> zstyle -t :completion:::::default list-rows-first
 +_setup:42> [[ 2 -eq 1 ]]
 +_setup:45> compstate[list]=ambiguous 
 +_setup:48> zstyle -t :completion:::::default last-prompt
 +_setup:50> [[ 2 -eq 1 ]]
 +_setup:53> compstate[last_prompt]=yes 
 +_setup:56> zstyle -t :completion:::::default accept-exact
 +_setup:58> [[ 2 -eq 1 ]]
 +_setup:61> compstate[exact]='' 
 +_setup:64> [[ _last_nmatches -ge 0 ]]
 +_setup:67> zstyle -a :completion:::::default menu val
 +_setup:71> _last_nmatches=-1 
 +_setup:74> [[ '' != always ]]
 +_setup:75> zstyle -s :completion:::::default force-list val
+_main_complete:99> _def_menu_style=( '' ) 
+_main_complete:108> _last_menu_style=( ) 
+_main_complete:110> zstyle -s :completion:::::default list-prompt tmp
+_main_complete:114> zstyle -s :completion:::::default select-prompt tmp
+_main_complete:118> zstyle -s :completion:::::default select-scroll tmp
+_main_complete:125> ((  0  ))
+_main_complete:137> zstyle -a :completion::::: completer _completers
+_main_complete:143> _completer_num=1 
+_main_complete:146> integer SECONDS=0
+_main_complete:160> funcs=( ) 
+_main_complete:161> compprefuncs=( ) 
+_main_complete:166> tmp=_expand
+_main_complete:168> [[ -n '' ]]
+_main_complete:170> [[ _expand = *:-* ]]
+_main_complete:173> [[ _expand = *:* ]]
+_main_complete:177> _completer=expand 
+_main_complete:180> curcontext=:expand:: 
+_main_complete:181> zstyle -t :completion::expand::: show-completer
+_main_complete:184> zstyle -a :completion::expand::: matcher-list _matchers
+_main_complete:187> _matcher_num=1 
+_main_complete:188> _matcher='' 
+_main_complete:189> _c_matcher=m:{[:lower:]}={[:upper:]}
+_main_complete:190> [[ 'm:{[:lower:]}={[:upper:]}' == +* ]]
+_main_complete:193> _matcher='m:{[:lower:]}={[:upper:]}' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _expand
 +_expand:10> setopt localoptions nonomatch
 +_expand:12> [[ _matcher_num -gt 1 ]]
 +_expand:14> local exp word sort expr expl subd suf=' ' force opt asp tmp opre pre epre
 +_expand:15> local continue=0
 +_expand:17> ((  0  ))
 +_expand:22> [[ _main_complete = _prefix ]]
 +_expand:25> word=../z 
 +_expand:28> [[ ../z = *\$(|{[^}]#) || ../z = *\$[a-zA-Z0-9_]## ]]
 +_expand:36> zstyle -T :completion::expand::: suffix
 +_expand:37> [[ ../z = (\~*/*|*\$(|[=~#^+])[a-zA-Z0-9_\[\]]##[^a-zA-Z0-9_\[\]]|*\${*}?) ]]
 +_expand:41> zstyle -s :completion::expand::: accept-exact tmp
 +_expand:42> [[ ! -o recexact ]]
 +_expand:44> [[ '' != (yes|true|on|1) ]]
 +_expand:45> [[ ../z = \~(|[-+]) || ../z = \~[-+][1-9]## ]]
 +_expand:47> [[ ../z = \~* || ../z = *\$[a-zA-Z0-9_]## ]]
 +_expand:50> [[ continue -eq 1 ]]
 +_expand:55> exp=( ../z ) 
 +_expand:61> [[ '' = *s* ]]
 +_expand:62> zstyle -T :completion::expand::: substitute
 +_expand:73> [[ ! off == on && 0 = 0 ]]
 +_expand:74> local otmp
 +_expand:76> tmp=../z 
 +_expand:77> [[ 4 != 0 ]]
 +_expand:78> otmp=../z 
 +_expand:79> tmp=../z 
 +_expand:77> [[ 4 != 4 ]]
 +_expand:81> eval 'exp=(' ../z ')'
  +(eval):1> exp=( ../z ) 
 +_expand:88> setopt aliases
 +_expand:89> eval $'exp=( ${${(e)exp//\\[ \t\n]/ }//(#b)([ \t\n])/\\$match[1]} )'
  +(eval):1> exp=( ../z ) 
 +_expand:92> setopt NO_aliases
 +_expand:99> [[ -z ../z ]]
 +_expand:101> subd=( ../z ) 
 +_expand:105> [[ '' = *g* ]]
 +_expand:105> zstyle -T :completion::expand::: glob
 +_expand:106> eval $'exp=( ${~exp//(#b)\\([ \t\"\\'\n])/$match[1]} ); exp=( ${(q)exp} )'
  +(eval):1> exp=( ../z ) 
  +(eval):2> exp=( ../z ) 
 +_expand:115> ((  1  ))
 +_expand:117> [[ 1 -eq 1 && ../z = ../z(|\(N\)) ]]
 +_expand:117> return 1
+_main_complete:206> ((  _matcher_num++  ))
+_main_complete:189> _c_matcher=+l:|=*
+_main_complete:190> [[ '+l:|=*' == +* ]]
+_main_complete:191> _matcher='m:{[:lower:]}={[:upper:]} l:|=*' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _expand
 +_expand:10> setopt localoptions nonomatch
 +_expand:12> [[ _matcher_num -gt 1 ]]
 +_expand:12> return 1
+_main_complete:206> ((  _matcher_num++  ))
+_main_complete:208> [[ -n '' ]]
+_main_complete:210> ((  _completer_num++  ))
+_main_complete:166> tmp=_complete
+_main_complete:168> [[ -n '' ]]
+_main_complete:170> [[ _complete = *:-* ]]
+_main_complete:173> [[ _complete = *:* ]]
+_main_complete:177> _completer=complete 
+_main_complete:180> curcontext=:complete:: 
+_main_complete:181> zstyle -t :completion::complete::: show-completer
+_main_complete:184> zstyle -a :completion::complete::: matcher-list _matchers
+_main_complete:187> _matcher_num=1 
+_main_complete:188> _matcher='' 
+_main_complete:189> _c_matcher=m:{[:lower:]}={[:upper:]}
+_main_complete:190> [[ 'm:{[:lower:]}={[:upper:]}' == +* ]]
+_main_complete:193> _matcher='m:{[:lower:]}={[:upper:]}' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _complete
 +_complete:7> local comp name oldcontext ret=1 service
 +_complete:8> typeset -T curcontext=:complete:: ccarray
 +_complete:10> oldcontext=:complete:: 
 +_complete:14> [[ -n '' ]]
 +_complete:96> comp=_first 
 +_complete:97> [[ -n _first ]]
 +_complete:98> service=-first- 
 +_complete:99> ccarray[3]=-first- 
 +_complete:100> eval _first
  +(eval):1> _first
 +_complete:100> ret=0 
 +_complete:101> [[ '' = all ]]
 +_complete:110> [[ -n '' ]]
 +_complete:114> ret=1 
 +_complete:115> [[ command = command ]]
 +_complete:116> curcontext=:complete:: 
 +_complete:117> _normal -s
  +_normal:3> local _comp_command1 _comp_command2 _comp_command skip
  +_normal:5> [[ -s = -s ]]
  +_normal:6> skip=( -s ) 
  +_normal:16> [[ -o BANG_HIST && ../z = !*: || ../z = "!*: ]]
  +_normal:29> [[ CURRENT -eq 1 ]]
  +_normal:38> _set_command
   +_set_command:6> local command
   +_set_command:8> command=cd 
   +_set_command:10> [[ -z cd ]]
   +_set_command:12> ((  1 + 0  ))
   +_set_command:13> _comp_command1=cd 
   +_set_command:14> _comp_command=cd 
  +_normal:40> _dispatch -s cd cd '' -default-
   +_dispatch:3> local comp pat val name i ret=1 _compskip=''
   +_dispatch:4> local curcontext=:complete:: service str noskip
   +_dispatch:5> local -a match mbegin mend
   +_dispatch:9> [[ -s = -s ]]
   +_dispatch:10> noskip=yes 
   +_dispatch:11> shift
   +_dispatch:14> [[ -z yes ]]
   +_dispatch:16> curcontext=:complete:cd: 
   +_dispatch:18> shift
   +_dispatch:22> [[ '' != (all|*patterns*) ]]
   +_dispatch:24> str=cd
   +_dispatch:25> [[ -n cd ]]
   +_dispatch:26> service=cd 
   +_dispatch:24> str=
   +_dispatch:25> [[ -n '' ]]
   +_dispatch:25> continue
   +_dispatch:24> str=-default-
   +_dispatch:25> [[ -n -default- ]]
   +_dispatch:26> service=-default- 
   +_dispatch:45> ret=1 
   +_dispatch:46> str=cd
   +_dispatch:47> [[ -n cd ]]
   +_dispatch:51> str=cd 
   +_dispatch:52> name=cd 
   +_dispatch:53> comp=_cd 
   +_dispatch:54> service=cd 
   +_dispatch:56> [[ -z _cd ]]
   +_dispatch:56> break
   +_dispatch:61> [[ -n _cd && cd != -default- ]]
   +_dispatch:62> _compskip=patterns 
   +_dispatch:63> eval _cd
    +(eval):1> _cd
     +_cd:22> setopt localoptions nonomatch
     +_cd:24> local expl ret=1 curarg
     +_cd:25> integer argstart=2 noopts
     +_cd:27> ((  CURRENT > 1  ))
     +_cd:30> [[ ../z = -* ]]
     +_cd:38> [[ CURRENT -eq 3 ]]
     +_cd:49> [[ ../z == (#b)(\~|)[^/]# ]]
     +_cd:54> local -a tmpWpath
     +_cd:55> [[ ../z = (|*/)../* ]]
     +_cd:56> local tmpprefix
     +_cd:58> tmpprefix=     +_cd:58> cd ..
     +_cd:58> print /tmp
     +_cd:58> tmpprefix=/tmp 
     +_cd:59> [[ -n /tmp ]]
     +_cd:60> tmpWpath=( -W /tmp ) 
     +_cd:61> IPREFIX=../ 
     +_cd:62> PREFIX=z 
     +_cd:66> [[ z != (\~|/|./|../)* && ../ != ../* ]]
     +_cd:114> [[ CURRENT -ne 1 ]]
     +_cd:114> _wanted directories expl directory _path_files -W /tmp -/
      +_wanted:3> local -a __targs __gopt
      +_wanted:5> zparseopts -D -a __gopt 1 2 V J x 'C:=__targs'
      +_wanted:7> _tags directories
       +_tags:3> local prev
       +_tags:10> [[ directories = -- ]]
       +_tags:15> ((  1  ))
       +_tags:19> local curcontext=:complete:cd: order tag nodef tmp
       +_tags:21> [[ directories = -C?* ]]
       +_tags:24> [[ directories = -C ]]
       +_tags:29> [[ directories = -(|-) ]]
       +_tags:31> zstyle -a :completion::complete:cd:: group-order order
       +_tags:36> comptags -i :complete:cd: directories
       +_tags:40> [[ -n '' ]]
       +_tags:43> zstyle -a :completion::complete:cd:: tag-order order
       +_tags:47> tag=local-directories
       +_tags:48> case local-directories (-)
       +_tags:48> case local-directories (!*)
       +_tags:48> case local-directories (?*)
       +_tags:51> comptry -m local-directories
       +_tags:47> tag=-
       +_tags:48> case - (-)
       +_tags:49> nodef=yes 
       +_tags:55> [[ -z yes ]]
       +_tags:60> comptags -T
       +_tags:62> return
      +_wanted:9> _tags
       +_tags:3> local prev
       +_tags:10> [[ '' = -- ]]
       +_tags:15> ((  0  ))
       +_tags:67> comptags -N
      +_wanted:13> return 1
     +_cd:117> return ret
   +_dispatch:64> [[ patterns = (all|*patterns*) ]]
   +_dispatch:64> return ret
 +_complete:142> _compskip='' 
 +_complete:144> return ret
+_main_complete:206> ((  _matcher_num++  ))
+_main_complete:189> _c_matcher=+l:|=*
+_main_complete:190> [[ '+l:|=*' == +* ]]
+_main_complete:191> _matcher='m:{[:lower:]}={[:upper:]} l:|=*' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _complete
 +_complete:7> local comp name oldcontext ret=1 service
 +_complete:8> typeset -T curcontext=:complete:: ccarray
 +_complete:10> oldcontext=:complete:: 
 +_complete:14> [[ -n '' ]]
 +_complete:96> comp=_first 
 +_complete:97> [[ -n _first ]]
 +_complete:98> service=-first- 
 +_complete:99> ccarray[3]=-first- 
 +_complete:100> eval _first
  +(eval):1> _first
 +_complete:100> ret=0 
 +_complete:101> [[ '' = all ]]
 +_complete:110> [[ -n '' ]]
 +_complete:114> ret=1 
 +_complete:115> [[ command = command ]]
 +_complete:116> curcontext=:complete:: 
 +_complete:117> _normal -s
  +_normal:3> local _comp_command1 _comp_command2 _comp_command skip
  +_normal:5> [[ -s = -s ]]
  +_normal:6> skip=( -s ) 
  +_normal:16> [[ -o BANG_HIST && ../z = !*: || ../z = "!*: ]]
  +_normal:29> [[ CURRENT -eq 1 ]]
  +_normal:38> _set_command
   +_set_command:6> local command
   +_set_command:8> command=cd 
   +_set_command:10> [[ -z cd ]]
   +_set_command:12> ((  1 + 0  ))
   +_set_command:13> _comp_command1=cd 
   +_set_command:14> _comp_command=cd 
  +_normal:40> _dispatch -s cd cd '' -default-
   +_dispatch:3> local comp pat val name i ret=1 _compskip=''
   +_dispatch:4> local curcontext=:complete:: service str noskip
   +_dispatch:5> local -a match mbegin mend
   +_dispatch:9> [[ -s = -s ]]
   +_dispatch:10> noskip=yes 
   +_dispatch:11> shift
   +_dispatch:14> [[ -z yes ]]
   +_dispatch:16> curcontext=:complete:cd: 
   +_dispatch:18> shift
   +_dispatch:22> [[ '' != (all|*patterns*) ]]
   +_dispatch:24> str=cd
   +_dispatch:25> [[ -n cd ]]
   +_dispatch:26> service=cd 
   +_dispatch:24> str=
   +_dispatch:25> [[ -n '' ]]
   +_dispatch:25> continue
   +_dispatch:24> str=-default-
   +_dispatch:25> [[ -n -default- ]]
   +_dispatch:26> service=-default- 
   +_dispatch:45> ret=1 
   +_dispatch:46> str=cd
   +_dispatch:47> [[ -n cd ]]
   +_dispatch:51> str=cd 
   +_dispatch:52> name=cd 
   +_dispatch:53> comp=_cd 
   +_dispatch:54> service=cd 
   +_dispatch:56> [[ -z _cd ]]
   +_dispatch:56> break
   +_dispatch:61> [[ -n _cd && cd != -default- ]]
   +_dispatch:62> _compskip=patterns 
   +_dispatch:63> eval _cd
    +(eval):1> _cd
     +_cd:22> setopt localoptions nonomatch
     +_cd:24> local expl ret=1 curarg
     +_cd:25> integer argstart=2 noopts
     +_cd:27> ((  CURRENT > 1  ))
     +_cd:30> [[ ../z = -* ]]
     +_cd:38> [[ CURRENT -eq 3 ]]
     +_cd:49> [[ ../z == (#b)(\~|)[^/]# ]]
     +_cd:54> local -a tmpWpath
     +_cd:55> [[ ../z = (|*/)../* ]]
     +_cd:56> local tmpprefix
     +_cd:58> tmpprefix=     +_cd:58> cd ..
     +_cd:58> print /tmp
     +_cd:58> tmpprefix=/tmp 
     +_cd:59> [[ -n /tmp ]]
     +_cd:60> tmpWpath=( -W /tmp ) 
     +_cd:61> IPREFIX=../ 
     +_cd:62> PREFIX=z 
     +_cd:66> [[ z != (\~|/|./|../)* && ../ != ../* ]]
     +_cd:114> [[ CURRENT -ne 1 ]]
     +_cd:114> _wanted directories expl directory _path_files -W /tmp -/
      +_wanted:3> local -a __targs __gopt
      +_wanted:5> zparseopts -D -a __gopt 1 2 V J x 'C:=__targs'
      +_wanted:7> _tags directories
       +_tags:3> local prev
       +_tags:10> [[ directories = -- ]]
       +_tags:15> ((  1  ))
       +_tags:19> local curcontext=:complete:cd: order tag nodef tmp
       +_tags:21> [[ directories = -C?* ]]
       +_tags:24> [[ directories = -C ]]
       +_tags:29> [[ directories = -(|-) ]]
       +_tags:31> zstyle -a :completion::complete:cd:: group-order order
       +_tags:36> comptags -i :complete:cd: directories
       +_tags:40> [[ -n '' ]]
       +_tags:43> zstyle -a :completion::complete:cd:: tag-order order
       +_tags:47> tag=local-directories
       +_tags:48> case local-directories (-)
       +_tags:48> case local-directories (!*)
       +_tags:48> case local-directories (?*)
       +_tags:51> comptry -m local-directories
       +_tags:47> tag=-
       +_tags:48> case - (-)
       +_tags:49> nodef=yes 
       +_tags:55> [[ -z yes ]]
       +_tags:60> comptags -T
       +_tags:62> return
      +_wanted:9> _tags
       +_tags:3> local prev
       +_tags:10> [[ '' = -- ]]
       +_tags:15> ((  0  ))
       +_tags:67> comptags -N
      +_wanted:13> return 1
     +_cd:117> return ret
   +_dispatch:64> [[ patterns = (all|*patterns*) ]]
   +_dispatch:64> return ret
 +_complete:142> _compskip='' 
 +_complete:144> return ret
+_main_complete:206> ((  _matcher_num++  ))
+_main_complete:208> [[ -n '' ]]
+_main_complete:210> ((  _completer_num++  ))
+_main_complete:166> tmp=_prefix
+_main_complete:168> [[ -n '' ]]
+_main_complete:170> [[ _prefix = *:-* ]]
+_main_complete:173> [[ _prefix = *:* ]]
+_main_complete:177> _completer=prefix 
+_main_complete:180> curcontext=:prefix:: 
+_main_complete:181> zstyle -t :completion::prefix::: show-completer
+_main_complete:184> zstyle -a :completion::prefix::: matcher-list _matchers
+_main_complete:187> _matcher_num=1 
+_main_complete:188> _matcher='' 
+_main_complete:189> _c_matcher=m:{[:lower:]}={[:upper:]}
+_main_complete:190> [[ 'm:{[:lower:]}={[:upper:]}' == +* ]]
+_main_complete:193> _matcher='m:{[:lower:]}={[:upper:]}' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _prefix
 +_prefix:5> [[ _matcher_num -gt 1 || -z '' ]]
 +_prefix:5> return 1
+_main_complete:206> ((  _matcher_num++  ))
+_main_complete:189> _c_matcher=+l:|=*
+_main_complete:190> [[ '+l:|=*' == +* ]]
+_main_complete:191> _matcher='m:{[:lower:]}={[:upper:]} l:|=*' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _prefix
 +_prefix:5> [[ _matcher_num -gt 1 ]]
 +_prefix:5> return 1
+_main_complete:206> ((  _matcher_num++  ))
+_main_complete:208> [[ -n '' ]]
+_main_complete:210> ((  _completer_num++  ))
+_main_complete:166> tmp=_approximate
+_main_complete:168> [[ -n '' ]]
+_main_complete:170> [[ _approximate = *:-* ]]
+_main_complete:173> [[ _approximate = *:* ]]
+_main_complete:177> _completer=approximate 
+_main_complete:180> curcontext=:approximate:: 
+_main_complete:181> zstyle -t :completion::approximate::: show-completer
+_main_complete:184> zstyle -a :completion::approximate::: matcher-list _matchers
+_main_complete:187> _matcher_num=1 
+_main_complete:188> _matcher='' 
+_main_complete:189> _c_matcher=m:{[:lower:]}={[:upper:]}
+_main_complete:190> [[ 'm:{[:lower:]}={[:upper:]}' == +* ]]
+_main_complete:193> _matcher='m:{[:lower:]}={[:upper:]}' 
+_main_complete:196> _comp_mesg='' 
+_main_complete:197> [[ -n '' ]]
+_main_complete:202> _approximate
 +_approximate:11> [[ _matcher_num -gt 1 || 4 -le 1 ]]
 +_approximate:13> local _comp_correct _correct_expl _correct_group comax cfgacc match
 +_approximate:14> local oldcontext=:approximate:: opm=''
 +_approximate:15> local dounfunction
 +_approximate:16> integer ret=1
 +_approximate:18> [[ '' = -a* ]]
 +_approximate:20> [[ '' = -a ]]
 +_approximate:23> zstyle -s :completion::approximate::: max-errors cfgacc
 +_approximate:24> cfgacc='2 numeric' 
 +_approximate:29> [[ '2 numeric' = *numeric* && 1 -ne 1 ]]
 +_approximate:38> comax=2 
 +_approximate:43> [[ 2 -lt 1 ]]
 +_approximate:45> _tags corrections original
  +_tags:3> local prev
  +_tags:10> [[ corrections = -- ]]
  +_tags:15> ((  2  ))
  +_tags:19> local curcontext=:approximate:: order tag nodef tmp
  +_tags:21> [[ corrections = -C?* ]]
  +_tags:24> [[ corrections = -C ]]
  +_tags:29> [[ corrections = -(|-) ]]
  +_tags:31> zstyle -a :completion::approximate::: group-order order
  +_tags:36> comptags -i :approximate:: corrections original
  +_tags:40> [[ -n '' ]]
  +_tags:43> zstyle -a :completion::approximate::: tag-order order
  +_tags:44> ((  ! 0  ))
  +_tags:55> [[ -z '' ]]
  +_tags:55> comptry corrections original
  +_tags:60> comptags -T
  +_tags:62> return
 +_approximate:55> ((  ! 0  ))
 +_approximate:56> dounfunction=1 
 +_approximate:76> _comp_correct=1 
 +_approximate:78> [[ -z '' ]]
 +_approximate:78> compstate[pattern_match]='*' 
 +_approximate:80> [[ _comp_correct -le comax ]]
 +_approximate:81> curcontext=:approximate-1:: 
 +_approximate:83> _description corrections _correct_expl corrections e:1 o:../z
  +_description:3> local name gropt nopt xopt format gname hidden hide match opts tag sort
  +_description:5> opts=( ) 
  +_description:7> gropt=( -J ) 
  +_description:8> xopt=( -X ) 
  +_description:9> nopt=( ) 
  +_description:10> zparseopts -K -D -a nopt 1 2 'V=gropt' 'J=gropt' 'x=xopt'
  +_description:12> 3=corrections 
  +_description:13> [[ -n corrections ]]
  +_description:13> _lastdescr=( '' corrections ) 
  +_description:15> zstyle -s :completion::approximate-1:::corrections group-name gname
  +_description:18> _setup corrections -default-
   +_setup:3> local val nm=0
   +_setup:5> [[ 2 -eq 1 ]]
   +_setup:7> zstyle -a :completion::approximate-1:::corrections list-colors val
   +_setup:21> [[ corrections = default ]]
   +_setup:27> zstyle -s :completion::approximate-1:::corrections show-ambiguity val
   +_setup:32> zstyle -t :completion::approximate-1:::corrections list-packed
   +_setup:34> [[ 2 -eq 1 ]]
   +_setup:37> compstate[list]=ambiguous 
   +_setup:40> zstyle -t :completion::approximate-1:::corrections list-rows-first
   +_setup:42> [[ 2 -eq 1 ]]
   +_setup:45> compstate[list]=ambiguous 
   +_setup:48> zstyle -t :completion::approximate-1:::corrections last-prompt
   +_setup:50> [[ 2 -eq 1 ]]
   +_setup:53> compstate[last_prompt]=yes 
   +_setup:56> zstyle -t :completion::approximate-1:::corrections accept-exact
   +_setup:58> [[ 2 -eq 1 ]]
   +_setup:61> compstate[exact]='' 
   +_setup:64> [[ _last_nmatches -ge 0 ]]
   +_setup:67> zstyle -a :completion::approximate-1:::corrections menu val
   +_setup:71> _last_nmatches=-1 
   +_setup:74> [[ '' != always ]]
   +_setup:75> zstyle -s :completion::approximate-1:::corrections force-list val
  +_description:20> name=_correct_expl 
  +_description:22> zstyle -s :completion::approximate-1:::corrections format format
  +_description:23> zstyle -s :completion::approximate-1:::descriptions format format
  +_description:25> zstyle -s :completion::approximate-1:::corrections hidden hidden
  +_description:30> zstyle -s :completion::approximate-1:::corrections matcher match
  +_description:32> [[ -n 'm:{[:lower:]}={[:upper:]}' ]]
  +_description:32> opts=( -M 'm:{[:lower:]}={[:upper:]}' ) 
  +_description:36> zstyle -s :completion::approximate-1:::corrections sort sort
  +_description:37> zstyle -s :completion::approximate-1::: sort sort
  +_description:46> [[ -z '' ]]
  +_description:47> zstyle -a :completion::approximate-1:::corrections ignored-patterns _comp_ignore
  +_description:48> _comp_ignore=( ) 
  +_description:50> zstyle -s :completion::approximate-1:::corrections ignore-line hidden
  +_description:66> ((  0  ))
  +_description:71> tag=corrections 
  +_description:73> shift 2
  +_description:74> [[ -z corrections ]]
  +_description:76> [[ -n '' ]]
  +_description:80> [[ -n '' ]]
  +_description:87> [[ -n '' ]]
  +_description:90> set -A _correct_expl -M 'm:{[:lower:]}={[:upper:]}' -J -default-
  +_description:94> ((  0  ))
  +_description:95> local fakestyle descr
  +_description:96> fakestyle=fake
  +_description:97> zstyle -a :completion::approximate-1:::corrections fake match
  +_description:98> continue
  +_description:96> fakestyle=fake-always
  +_description:97> zstyle -a :completion::approximate-1:::corrections fake-always match
  +_description:98> continue
  +_description:111> return 0
 +_approximate:86> _correct_group=3 
 +_approximate:88> _complete
  +_complete:7> local comp name oldcontext ret=1 service
  +_complete:8> typeset -T curcontext=:approximate-1:: ccarray
  +_complete:10> oldcontext=:approximate-1:: 
  +_complete:14> [[ -n '' ]]
  +_complete:96> comp=_first 
  +_complete:97> [[ -n _first ]]
  +_complete:98> service=-first- 
  +_complete:99> ccarray[3]=-first- 
  +_complete:100> eval _first
   +(eval):1> _first
  +_complete:100> ret=0 
  +_complete:101> [[ '' = all ]]
  +_complete:110> [[ -n '' ]]
  +_complete:114> ret=1 
  +_complete:115> [[ command = command ]]
  +_complete:116> curcontext=:approximate-1:: 
  +_complete:117> _normal -s
   +_normal:3> local _comp_command1 _comp_command2 _comp_command skip
   +_normal:5> [[ -s = -s ]]
   +_normal:6> skip=( -s ) 
   +_normal:16> [[ -o BANG_HIST && ../z = !*: || ../z = "!*: ]]
   +_normal:29> [[ CURRENT -eq 1 ]]
   +_normal:38> _set_command
    +_set_command:6> local command
    +_set_command:8> command=cd 
    +_set_command:10> [[ -z cd ]]
    +_set_command:12> ((  1 + 0  ))
    +_set_command:13> _comp_command1=cd 
    +_set_command:14> _comp_command=cd 
   +_normal:40> _dispatch -s cd cd '' -default-
    +_dispatch:3> local comp pat val name i ret=1 _compskip=''
    +_dispatch:4> local curcontext=:approximate-1:: service str noskip
    +_dispatch:5> local -a match mbegin mend
    +_dispatch:9> [[ -s = -s ]]
    +_dispatch:10> noskip=yes 
    +_dispatch:11> shift
    +_dispatch:14> [[ -z yes ]]
    +_dispatch:16> curcontext=:approximate-1:cd: 
    +_dispatch:18> shift
    +_dispatch:22> [[ '' != (all|*patterns*) ]]
    +_dispatch:24> str=cd
    +_dispatch:25> [[ -n cd ]]
    +_dispatch:26> service=cd 
    +_dispatch:24> str=
    +_dispatch:25> [[ -n '' ]]
    +_dispatch:25> continue
    +_dispatch:24> str=-default-
    +_dispatch:25> [[ -n -default- ]]
    +_dispatch:26> service=-default- 
    +_dispatch:45> ret=1 
    +_dispatch:46> str=cd
    +_dispatch:47> [[ -n cd ]]
    +_dispatch:51> str=cd 
    +_dispatch:52> name=cd 
    +_dispatch:53> comp=_cd 
    +_dispatch:54> service=cd 
    +_dispatch:56> [[ -z _cd ]]
    +_dispatch:56> break
    +_dispatch:61> [[ -n _cd && cd != -default- ]]
    +_dispatch:62> _compskip=patterns 
    +_dispatch:63> eval _cd
     +(eval):1> _cd
      +_cd:22> setopt localoptions nonomatch
      +_cd:24> local expl ret=1 curarg
      +_cd:25> integer argstart=2 noopts
      +_cd:27> ((  CURRENT > 1  ))
      +_cd:30> [[ ../z = -* ]]
      +_cd:38> [[ CURRENT -eq 3 ]]
      +_cd:49> [[ ../z == (#b)(\~|)[^/]# ]]
      +_cd:54> local -a tmpWpath
      +_cd:55> [[ ../z = (|*/)../* ]]
      +_cd:56> local tmpprefix
      +_cd:58> tmpprefix=      +_cd:58> cd ..
      +_cd:58> print /tmp
      +_cd:58> tmpprefix=/tmp 
      +_cd:59> [[ -n /tmp ]]
      +_cd:60> tmpWpath=( -W /tmp ) 
      +_cd:61> IPREFIX=../ 
      +_cd:62> PREFIX=z 
      +_cd:66> [[ z != (\~|/|./|../)* && ../ != ../* ]]
      +_cd:114> [[ CURRENT -ne 1 ]]
      +_cd:114> _wanted directories expl directory _path_files -W /tmp -/
       +_wanted:3> local -a __targs __gopt
       +_wanted:5> zparseopts -D -a __gopt 1 2 V J x 'C:=__targs'
       +_wanted:7> _tags directories
        +_tags:3> local prev
        +_tags:10> [[ directories = -- ]]
        +_tags:15> ((  1  ))
        +_tags:19> local curcontext=:approximate-1:cd: order tag nodef tmp
        +_tags:21> [[ directories = -C?* ]]
        +_tags:24> [[ directories = -C ]]
        +_tags:29> [[ directories = -(|-) ]]
        +_tags:31> zstyle -a :completion::approximate-1:cd:: group-order order
        +_tags:36> comptags -i :approximate-1:cd: directories
        +_tags:40> [[ -n '' ]]
        +_tags:43> zstyle -a :completion::approximate-1:cd:: tag-order order
        +_tags:44> ((  ! 0  ))
        +_tags:55> [[ -z '' ]]
        +_tags:55> comptry directories
        +_tags:60> comptags -T
        +_tags:62> return
       +_wanted:9> _tags
        +_tags:3> local prev
        +_tags:10> [[ '' = -- ]]
        +_tags:15> ((  0  ))
        +_tags:67> comptags -N
       +_wanted:10> _all_labels directories expl directory _path_files -W /tmp -/
        +_all_labels:3> local __gopt __len __tmp __pre __suf __ret=1 __descr __spec __prev
        +_all_labels:5> [[ directories = - ]]
        +_all_labels:10> __gopt=( ) 
        +_all_labels:11> zparseopts -D -a __gopt 1 2 V J x
        +_all_labels:13> __tmp=8 
        +_all_labels:14> __len=7 
        +_all_labels:15> [[ __tmp -lt __len ]]
        +_all_labels:18> [[ __tmp -eq 7 ]]
        +_all_labels:22> __pre=4 
        +_all_labels:23> __suf=5 
        +_all_labels:26> comptags -A directories curtag __spec
        +_all_labels:27> ((  10 > _tags_level  ))
        +_all_labels:27> _comp_tags='' 
        +_all_labels:28> _tags_level=10 
        +_all_labels:29> _comp_tags=' directories ' 
        +_all_labels:30> [[ directories = *[^\\]:* ]]
        +_all_labels:37> _description directories expl directory
         +_description:3> local name gropt nopt xopt format gname hidden hide match opts tag sort
         +_description:5> opts=( ) 
         +_description:7> gropt=( -J ) 
         +_description:8> xopt=( -X ) 
         +_description:9> nopt=( ) 
         +_description:10> zparseopts -K -D -a nopt 1 2 'V=gropt' 'J=gropt' 'x=xopt'
         +_description:12> 3=directory 
         +_description:13> [[ -n directory ]]
         +_description:13> _lastdescr=( '' corrections directory ) 
         +_description:15> zstyle -s :completion::approximate-1:cd::directories group-name gname
         +_description:18> _setup directories -default-
          +_setup:3> local val nm=0
          +_setup:5> [[ 2 -eq 1 ]]
          +_setup:7> zstyle -a :completion::approximate-1:cd::directories list-colors val
          +_setup:21> [[ directories = default ]]
          +_setup:27> zstyle -s :completion::approximate-1:cd::directories show-ambiguity val
          +_setup:32> zstyle -t :completion::approximate-1:cd::directories list-packed
          +_setup:34> [[ 2 -eq 1 ]]
          +_setup:37> compstate[list]=ambiguous 
          +_setup:40> zstyle -t :completion::approximate-1:cd::directories list-rows-first
          +_setup:42> [[ 2 -eq 1 ]]
          +_setup:45> compstate[list]=ambiguous 
          +_setup:48> zstyle -t :completion::approximate-1:cd::directories last-prompt
          +_setup:50> [[ 2 -eq 1 ]]
          +_setup:53> compstate[last_prompt]=yes 
          +_setup:56> zstyle -t :completion::approximate-1:cd::directories accept-exact
          +_setup:58> [[ 2 -eq 1 ]]
          +_setup:61> compstate[exact]='' 
          +_setup:64> [[ _last_nmatches -ge 0 ]]
          +_setup:67> zstyle -a :completion::approximate-1:cd::directories menu val
          +_setup:71> _last_nmatches=-1 
          +_setup:74> [[ '' != always ]]
          +_setup:75> zstyle -s :completion::approximate-1:cd::directories force-list val
         +_description:20> name=expl 
         +_description:22> zstyle -s :completion::approximate-1:cd::directories format format
         +_description:23> zstyle -s :completion::approximate-1:cd::descriptions format format
         +_description:25> zstyle -s :completion::approximate-1:cd::directories hidden hidden
         +_description:30> zstyle -s :completion::approximate-1:cd::directories matcher match
         +_description:32> [[ -n 'm:{[:lower:]}={[:upper:]}' ]]
         +_description:32> opts=( -M 'm:{[:lower:]}={[:upper:]}' ) 
         +_description:36> zstyle -s :completion::approximate-1:cd::directories sort sort
         +_description:37> zstyle -s :completion::approximate-1:cd:: sort sort
         +_description:46> [[ -z '' ]]
         +_description:47> zstyle -a :completion::approximate-1:cd::directories ignored-patterns _comp_ignore
         +_description:48> _comp_ignore=( ) 
         +_description:50> zstyle -s :completion::approximate-1:cd::directories ignore-line hidden
         +_description:66> ((  0  ))
         +_description:71> tag=directories 
         +_description:73> shift 2
         +_description:74> [[ -z directory ]]
         +_description:76> [[ -n '' ]]
         +_description:80> [[ -n '' ]]
         +_description:87> [[ -n '' ]]
         +_description:90> set -A expl -M 'm:{[:lower:]}={[:upper:]}' -J -default-
         +_description:94> ((  0  ))
         +_description:95> local fakestyle descr
         +_description:96> fakestyle=fake
         +_description:97> zstyle -a :completion::approximate-1:cd::directories fake match
         +_description:98> continue
         +_description:96> fakestyle=fake-always
         +_description:97> zstyle -a :completion::approximate-1:cd::directories fake-always match
         +_description:98> continue
         +_description:111> return 0
        +_all_labels:39> _path_files -M 'm:{[:lower:]}={[:upper:]}' -J -default- -W /tmp -/
         +_path_files:3> local -a match mbegin mend
         +_path_files:17> _have_glob_qual z
          +_have_glob_qual:14> local complete
          +_have_glob_qual:16> [[ '' = complete ]]
          +_have_glob_qual:18> [[ -z '' && on == on && z = (#b)(((*[^\\\$]|)(\\\\)#)\()([^\)\|\~]#) || on == on && z = (#b)(((*[^\\\$]|)(\\\\)#)\(\#q)([^\)]#) ]]
         +_path_files:39> local linepath realpath donepath prepath testpath exppath skips skipped
         +_path_files:40> local tmp1 tmp2 tmp3 tmp4 i orig eorig pre suf tpre tsuf opre osuf cpre
         +_path_files:41> local pats haspats ignore pfx pfxsfx sopt gopt opt sdirs ignpar cfopt listsfx
         +_path_files:42> local nm=0 menu matcher mopts sort mid accex fake
         +_path_files:43> local listfiles listopts tmpdisp origtmp1 Uopt
         +_path_files:44> local accept_exact_dirs path_completion
         +_path_files:45> integer npathcheck
         +_path_files:46> local -a Mopts
         +_path_files:48> typeset -U prepaths exppaths
         +_path_files:50> exppaths=( ) 
         +_path_files:54> zparseopts -a mopts 'P:=pfx' 'S:=pfxsfx' 'q=pfxsfx' 'r:=pfxsfx' 'R:=pfxsfx' 'W:=prepaths' 'F:=ignore' 'M+:=matcher' J+: V+: X+: 1 2 n 'f=tmp1' '/=tmp1' 'g+:-=tmp1'
         +_path_files:59> sopt=-/ 
         +_path_files:60> ((  1  ))
         +_path_files:60> haspats=yes 
         +_path_files:61> ((  0  ))
         +_path_files:62> ((  1  ))
         +_path_files:63> pats='' 
         +_path_files:64> pats=( '*(-/)' ) 
         +_path_files:69> pats=( '*(-/)' ) 
         +_path_files:71> ((  0  ))
         +_path_files:75> ((  2  ))
         +_path_files:76> tmp1=/tmp 
         +_path_files:77> [[ / = \( ]]
         +_path_files:79> [[ / = / ]]
         +_path_files:80> prepaths=( /tmp/ ) 
         +_path_files:85> ((  ! 1  ))
         +_path_files:90> ((  0  ))
         +_path_files:101> [[ -/ = -(f|) ]]
         +_path_files:110> ((  ! 1  ))
         +_path_files:131> [[ -z '' && 0 -eq 0 && -z '' && -n '' ]]
         +_path_files:135> ((  0  ))
         +_path_files:140> [[ 2 -eq 0 ]]
         +_path_files:146> ((  2  ))
         +_path_files:148> mopts=( -J -default- -M 'm:{[:lower:]}={[:upper:]}' ) 
         +_path_files:151> zstyle -s :completion::approximate-1:cd:: file-sort tmp1
         +_path_files:186> zstyle -t :completion::approximate-1:cd::paths squeeze-slashes
         +_path_files:189> skips='((.|..)/)##' 
         +_path_files:192> zstyle -s :completion::approximate-1:cd::paths special-dirs sdirs
         +_path_files:193> zstyle -t :completion::approximate-1:cd::paths list-suffixes
         +_path_files:196> [[ '*(-/)' = ((|*[[:blank:]])\*(|[[:blank:]]*|\([^[:blank:]]##\))|*\([^[:blank:]]#/[^[:blank:]]#\)*) ]]
         +_path_files:197> sopt=-// 
         +_path_files:199> zstyle -a :completion::approximate-1:cd::paths accept-exact accex
         +_path_files:200> zstyle -a :completion::approximate-1:cd:: fake-files fake
         +_path_files:202> zstyle -s :completion::approximate-1:cd:: ignore-parents ignpar
         +_path_files:204> zstyle -t :completion::approximate-1:cd::paths accept-exact-dirs
         +_path_files:206> zstyle -T :completion::approximate-1:cd::paths path-completion
         +_path_files:207> path_completion=1 
         +_path_files:209> [[ -n '*' ]]
         +_path_files:210> [[ -z '' ]]
         +_path_files:210> _have_glob_qual z complete
          +_have_glob_qual:14> local complete
          +_have_glob_qual:16> [[ complete = complete ]]
          +_have_glob_qual:16> complete=')' 
          +_have_glob_qual:18> [[ -z '' && on == on && z = (#b)(((*[^\\\$]|)(\\\\)#)\()([^\)\|\~]#)\) || on == on && z = (#b)(((*[^\\\$]|)(\\\\)#)\(\#q)([^\)]#)\) ]]
         +_path_files:211> _have_glob_qual '' complete
          +_have_glob_qual:14> local complete
          +_have_glob_qual:16> [[ complete = complete ]]
          +_have_glob_qual:16> complete=')' 
          +_have_glob_qual:18> [[ -z '' && on == on && '' = (#b)(((*[^\\\$]|)(\\\\)#)\()([^\)\|\~]#)\) || on == on && '' = (#b)(((*[^\\\$]|)(\\\\)#)\(\#q)([^\)]#)\) ]]
         +_path_files:237> pre=z 
         +_path_files:238> suf='' 
         +_path_files:239> opre=z 
         +_path_files:240> osuf='' 
         +_path_files:241> orig=z 
         +_path_files:242> eorig=z 
         +_path_files:244> [[ automenu-unambiguous = (*menu|[0-9]*) || -n 1 ]]
         +_path_files:246> menu=yes 
         +_path_files:247> [[ -n 1 ]]
         +_path_files:248> cfopt=- 
         +_path_files:249> Uopt=-U 
         +_path_files:256> [[ z = [^][*?#^\|\<\>\\]#(`[^`]#`|\$)*/* ]]
         +_path_files:277> [[ z = \~ ]]
         +_path_files:327> linepath='' 
         +_path_files:328> realpath='' 
         +_path_files:330> zstyle -s :completion::approximate-1:cd:: preserve-prefix tmp1
         +_path_files:338> [[ z = / ]]
         +_path_files:351> [[ z = (.|..)/* ]]
         +_path_files:352> donepath='' 
         +_path_files:359> prepath=/tmp/
         +_path_files:365> skipped='' 
         +_path_files:366> cpre='' 
         +_path_files:368> [[ -n '' || -z 1 ]]
         +_path_files:407> tpre=z 
         +_path_files:408> tsuf='' 
         +_path_files:416> testpath='' 
         +_path_files:418> tmp2='' 
         +_path_files:419> tpre=z 
         +_path_files:421> tmp1=( /tmp/ ) 
         +_path_files:424> ((  npathcheck = 0  ))
         +_path_files:425> true
         +_path_files:427> origtmp1=( /tmp/ ) 
         +_path_files:430> [[ z = */* ]]
         +_path_files:434> PREFIX=z 
         +_path_files:435> SUFFIX='' 
         +_path_files:447> tmp2=( /tmp/ ) 
         +_path_files:449> [[ z = (#b)*/(*) ]]
         +_path_files:462> [[ -// = *[/f]* ]]
         +_path_files:463> compfiles -p- tmp1 accex '' 'm:{[:lower:]}={[:upper:]} m:{[:lower:]}={[:upper:]}' '' fake '*(-/)'
         +_path_files:467> tmp1=( /tmp/com.apple.launchd.O1QCaefF6l /tmp/com.apple.launchd.Ya84Wdpn4w /tmp/com.apple.launchd.wWcKhD0JAo /tmp/cvcd /tmp/devio_semaphore_devio_0xb013 /tmp/opt /tmp/stats /tmp/zaa /tmp/zbb /tmp/zcc ) 
         +_path_files:469> [[ -n z ]]
         +_path_files:482> ((  ! 10 && npathcheck == 0  ))
         +_path_files:499> ((  ! 10  ))
         +_path_files:501> [[ /tmp/com.apple.launchd.O1QCaefF6l = */* ]]
         +_path_files:502> [[ -n 1 ]]
         +_path_files:503> tmp2=( /tmp/com.apple.launchd.O1QCaefF6l /tmp/com.apple.launchd.Ya84Wdpn4w /tmp/com.apple.launchd.wWcKhD0JAo /tmp/cvcd /tmp/devio_semaphore_devio_0xb013 /tmp/opt /tmp/stats /tmp/zaa /tmp/zbb /tmp/zcc ) 
         +_path_files:504> compadd -D tmp1 -M 'm:{[:lower:]}={[:upper:]}' - com.apple.launchd.O1QCaefF6l com.apple.launchd.Ya84Wdpn4w com.apple.launchd.wWcKhD0JAo cvcd devio_semaphore_devio_0xb013 opt stats zaa zbb zcc
         +_path_files:506> [[ 3 -eq 0 ]]
         +_path_files:522> ((  ! 3  ))
         +_path_files:570> [[ -n 'parent pwd' && -z '' && z != */* && 3 -ne 0 && 'parent pwd' != *dir* && 'parent pwd' != *..* ]]
         +_path_files:575> compfiles -i tmp1 ignore 'parent pwd' /tmp/
         +_path_files:576> _comp_ignore+=( zaa ) 
         +_path_files:578> ((  1 && ! 0  ))
         +_path_files:579> mopts=( -J -default- -M 'm:{[:lower:]}={[:upper:]}' -F _comp_ignore ) 
         +_path_files:584> [[ z = */* ]]
         +_path_files:586> [[ '' = */* ]]
         +_path_files:590> break
         +_path_files:609> tmp3=z 
         +_path_files:610> tpre=z 
         +_path_files:611> tsuf='' 
         +_path_files:612> [[ -n /tmp/ ]]
         +_path_files:614> [[ -o nocaseglob ]]
         +_path_files:618> tmp1=( zaa zbb zcc ) 
         +_path_files:622> true
         +_path_files:629> compfiles -r tmp1 z
         +_path_files:630> tmp4=1 
         +_path_files:632> [[ z = */* ]]
         +_path_files:637> tmp2=z 
         +_path_files:638> PREFIX=z 
         +_path_files:639> SUFFIX='' 
         +_path_files:646> ((  tmp4  ))
         +_path_files:655> tmp2='' 
         +_path_files:656> [[ -n '' ]]
         +_path_files:658> [[ -n '' ]]
         +_path_files:662> compquote tmp1 tmp2
         +_path_files:665> [[ -z 1 ]]
         +_path_files:675> [[ -z automenu-unambiguous ]]
         +_path_files:676> zstyle -t :completion::approximate-1:cd::paths expand suffix
         +_path_files:677> [[ -z '' && -n 1 ]]
         +_path_files:683> ((  tmp4  ))
         +_path_files:683> zstyle -t :completion::approximate-1:cd::paths ambiguous
         +_path_files:685> [[ z = */* ]]
         +_path_files:711> _list_files tmp1 /tmp/
          +_list_files:11> local stat f elt what dir
          +_list_files:12> local -a stylevals
          +_list_files:13> integer ok
          +_list_files:15> listfiles=( ) 
          +_list_files:16> listopts=( ) 
          +_list_files:18> zstyle -a :completion::approximate-1:cd:: file-list stylevals
          +_list_files:18> return 1
         +_path_files:712> compadd -U -Qf -J -default- -M 'm:{[:lower:]}={[:upper:]}' -F _comp_ignore -p ../ -s '' -W /tmp/ -a tmp1
          +compadd:1> local ppre=9
          +compadd:3> [[ 1 -eq 0 ]]
          +compadd:6> [[ z = \~* ]]
          +compadd:9> PREFIX='(#a1)z' 
          +compadd:12> ((  3 && 8  ))
          +compadd:13> _correct_expl[_correct_group]=-J 
          +compadd:15> compadd -M 'm:{[:lower:]}={[:upper:]}' -J -default- -U -Qf -J -default- -M 'm:{[:lower:]}={[:upper:]}' -F _comp_ignore -p ../ -s '' -W /tmp/ -a tmp1
         +_path_files:749> tmp4=- 
         +_path_files:751> break
         +_path_files:795> [[ -z - ]]
         +_path_files:881> [[ _matcher_num -eq 2 ]]
         +_path_files:890> [[ nm -ne 'compstate[nmatches]' ]]
        +_all_labels:39> __ret=0 
        +_all_labels:26> comptags -A directories curtag __spec
        +_all_labels:43> return __ret
       +_wanted:10> return 0
      +_cd:115> ret=0 
      +_cd:117> return ret
    +_dispatch:63> ret=0 
    +_dispatch:64> [[ patterns = (all|*patterns*) ]]
    +_dispatch:64> return ret
  +_complete:117> ret=0 
  +_complete:142> _compskip='' 
  +_complete:144> return ret
 +_approximate:89> zstyle -t :completion::approximate-1::: insert-unambiguous
 +_approximate:92> _requested original
  +_requested:3> local __gopt
  +_requested:5> __gopt=( ) 
  +_requested:6> zparseopts -D -a __gopt 1 2 V J x
  +_requested:8> comptags -R original
  +_requested:9> [[ 1 -gt 3 ]]
  +_requested:11> [[ 1 -gt 1 ]]
  +_requested:14> return 0
 +_approximate:93> [[ 'compstate[nmatches]' -gt 1 ]]
 +_approximate:95> local expl
 +_approximate:97> _description -V original expl original
  +_description:3> local name gropt nopt xopt format gname hidden hide match opts tag sort
  +_description:5> opts=( ) 
  +_description:7> gropt=( -J ) 
  +_description:8> xopt=( -X ) 
  +_description:9> nopt=( ) 
  +_description:10> zparseopts -K -D -a nopt 1 2 'V=gropt' 'J=gropt' 'x=xopt'
  +_description:12> 3=original 
  +_description:13> [[ -n original ]]
  +_description:13> _lastdescr=( '' corrections directory original ) 
  +_description:15> zstyle -s :completion::approximate-1:::original group-name gname
  +_description:18> _setup original -default-
   +_setup:3> local val nm=3
   +_setup:5> [[ 2 -eq 1 ]]
   +_setup:7> zstyle -a :completion::approximate-1:::original list-colors val
   +_setup:21> [[ original = default ]]
   +_setup:27> zstyle -s :completion::approximate-1:::original show-ambiguity val
   +_setup:32> zstyle -t :completion::approximate-1:::original list-packed
   +_setup:34> [[ 2 -eq 1 ]]
   +_setup:37> compstate[list]=ambiguous 
   +_setup:40> zstyle -t :completion::approximate-1:::original list-rows-first
   +_setup:42> [[ 2 -eq 1 ]]
   +_setup:45> compstate[list]=ambiguous 
   +_setup:48> zstyle -t :completion::approximate-1:::original last-prompt
   +_setup:50> [[ 2 -eq 1 ]]
   +_setup:53> compstate[last_prompt]=yes 
   +_setup:56> zstyle -t :completion::approximate-1:::original accept-exact
   +_setup:58> [[ 2 -eq 1 ]]
   +_setup:61> compstate[exact]='' 
   +_setup:64> [[ _last_nmatches -ge 0 ]]
   +_setup:67> zstyle -a :completion::approximate-1:::original menu val
   +_setup:71> _last_nmatches=-1 
   +_setup:74> [[ '' != always ]]
   +_setup:75> zstyle -s :completion::approximate-1:::original force-list val
  +_description:20> name=expl 
  +_description:22> zstyle -s :completion::approximate-1:::original format format
  +_description:23> zstyle -s :completion::approximate-1:::descriptions format format
  +_description:25> zstyle -s :completion::approximate-1:::original hidden hidden
  +_description:30> zstyle -s :completion::approximate-1:::original matcher match
  +_description:32> [[ -n 'm:{[:lower:]}={[:upper:]}' ]]
  +_description:32> opts=( -M 'm:{[:lower:]}={[:upper:]}' ) 
  +_description:36> zstyle -s :completion::approximate-1:::original sort sort
  +_description:37> zstyle -s :completion::approximate-1::: sort sort
  +_description:46> [[ -z '' ]]
  +_description:47> zstyle -a :completion::approximate-1:::original ignored-patterns _comp_ignore
  +_description:48> _comp_ignore=( ) 
  +_description:50> zstyle -s :completion::approximate-1:::original ignore-line hidden
  +_description:66> ((  0  ))
  +_description:71> tag=original 
  +_description:73> shift 2
  +_description:74> [[ -z original ]]
  +_description:76> [[ -n '' ]]
  +_description:80> [[ -n '' ]]
  +_description:87> [[ -n '' ]]
  +_description:90> set -A expl -M 'm:{[:lower:]}={[:upper:]}' -V -default-
  +_description:94> ((  0  ))
  +_description:95> local fakestyle descr
  +_description:96> fakestyle=fake
  +_description:97> zstyle -a :completion::approximate-1:::original fake match
  +_description:98> continue
  +_description:96> fakestyle=fake-always
  +_description:97> zstyle -a :completion::approximate-1:::original fake-always match
  +_description:98> continue
  +_description:111> return 0
 +_approximate:99> compadd -M 'm:{[:lower:]}={[:upper:]}' -V -default- -U -Q - ../z
 +_approximate:104> [[ ambiguous != list* ]]
 +_approximate:105> compstate[list]='ambiguous force' 
 +_approximate:107> compstate[pattern_match]='' 
 +_approximate:109> ret=0 
 +_approximate:110> break
 +_approximate:118> [[ -n 1 ]]
 +_approximate:118> ((  1  ))
 +_approximate:118> unfunction compadd
 +_approximate:121> ((  ret == 0  ))
 +_approximate:121> return 0
+_main_complete:203> ret=0 
+_main_complete:204> break 2
+_main_complete:213> curcontext=::: 
+_main_complete:214> [[ '' = keep ]]
+_main_complete:220> nm=4 
+_main_complete:223> [[ '' = keep || nm -gt 1 ]]
+_main_complete:224> [[ _last_nmatches -ge 0 ]]
+_main_complete:227> tmp=4 
+_main_complete:229> _menu_style=( '' '' ) 
+_main_complete:231> [[ 'ambiguous force' = *list ]]
+_main_complete:235> [[ automenu-unambiguous = automenu-unambiguous ]]
+_main_complete:236> [[ -n automenu-unambiguous && -n '' ]]
+_main_complete:240> sel=( ) 
+_main_complete:242> ((  0  ))
+_main_complete:258> sel=( ) 
+_main_complete:260> ((  0  ))
+_main_complete:276> [[ -n '' || -n '' ]]
+_main_complete:280> [[ -n '' ]]
+_main_complete:282> [[ -n '' ]]
+_main_complete:289> [[ automenu-unambiguous = *menu* ]]
+_main_complete:290> [[ '' = 00 ]]
+_main_complete:291> [[ -n '' ]]
+_main_complete:293> [[ -n '' ]]
+_main_complete:299> [[ '' != 00 ]]
+_main_complete:300> sel=( ) 
+_main_complete:302> ((  0  ))
+_main_complete:321> unset MENUSELECT
+_main_complete:324> [[ -n '' ]]
+_main_complete:361> [[ -n '' ]]
+_main_complete:368> [[ '' = always || '' = ?* ]]
+_main_complete:374> [[ '' = keep ]]
+_main_complete:380> ((  0  ))
+_main_complete:383> unset ZLS_COLORS
+_main_complete:389> funcs=( ) 
+_main_complete:390> comppostfuncs=( ) 
+_main_complete:395> _lastcomp=( list_lines 2 all_quotes '\' nmatches 4 pattern_match '' restore auto context command vared '' unambiguous ../z list_max 100 unambiguous_cursor 5 list 'ambiguous force' insert_positions 7 unambiguous_positions 4 exact '' to_end match last_prompt yes pattern_insert menu ignored 0 insert automenu-unambiguous ) 
+_main_complete:396> _lastcomp[nmatches]=4 
+_main_complete:397> _lastcomp[completer]=approximate 
+_main_complete:398> _lastcomp[prefix]=../z 
+_main_complete:399> _lastcomp[suffix]='' 
+_main_complete:400> _lastcomp[iprefix]='' 
+_main_complete:401> _lastcomp[isuffix]='' 
+_main_complete:402> _lastcomp[qiprefix]='' 
+_main_complete:403> _lastcomp[qisuffix]='' 
+_main_complete:404> _lastcomp[tags]=' directories ' 
+_main_complete:406> return ret
+_complete_debug:22> integer ret=0
+_complete_debug:23> unsetopt xtrace


Messages sorted by: Reverse Date, Date, Thread, Author