Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Weird bash error in fzf-preview: "/bin/bash: line 2: zmodload: command not found" #410

Closed
5 tasks done
ian-howell opened this issue Feb 3, 2024 · 2 comments · Fixed by #412
Closed
5 tasks done
Labels
bug Something isn't working

Comments

@ian-howell
Copy link

Describe the bug

I'm seeing bash-related errors when beginning fzf via tab. See the screenshot.

I was able to extract the text:

/bin/bash: line 2: zmodload: command not found
/bin/bash: line 3: ${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/compcap.32850]}: bad substitution
/bin/bash: line 4: ${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/groups.32850]}: bad substitution
/bin/bash: line 5: local: can only be used in a function
/bin/bash: line 7: desc=${${"$(</tmp/fzf-preview-589930543)"%''*}#*''}: bad substitution
/bin/bash: line 9: ${(@0)${_ftb_compcap[(r)${(b)desc}$bs*]#*$bs}}: bad substitution
/bin/bash: line 11: (: $+ctxt[group] : syntax error: operand expected (error token is "$+ctxt[group] ")
/bin/bash: line 15: word=${(Q)ctxt[word]}: bad substitution
/bin/bash: line 17: (: $+ctxt[realdir] : syntax error: operand expected (error token is "$+ctxt[realdir] ")

This may not be a bug in fzf-tab, but I'm slightly too zsh-illiterate to debug much further.

I can make sure:

  • I am using the latest version of fzf-tab
  • this is the minimal zshrc which can reproduce this bug
  • fzf-tab is loaded after compinit
  • fzf-tab is loaded after plugins which will wrap Tab, like junegunn/fzf/completion.zsh
  • fzf-tab is loaded before zsh-autosuggestions, zsh-syntax-highlighting and fast-syntax-highlighting.

Screenshots

image

Environment:

  • OS: Ubuntu 22.04
  • zsh version: 5.8.1

Minimal zshrc

#!/usr/bin/zsh
# Turn on completion
autoload -U compinit
compinit

# Use fzf for tab completion
# NOTE: This MUST be sourced before autosuggestions (which is near the bottom of this file at time of writing)
if [[ -s "$HOME/.dotfiles/links/zsh/fzf/fzf-tab.plugin.zsh" ]]; then
    source "$HOME/.dotfiles/links/zsh/fzf/fzf-tab.plugin.zsh"

    zstyle ':fzf-tab:*' fzf-command ftb-tmux-popup

    # preview directory's content with ls when completing cd
    zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -1 --color=always ${(Q)realpath}'
fi

Log

+fzf-tab-debug:9> : zsh 5.8.1
+fzf-tab-debug:10> zle .fzf-tab-orig-expand-or-complete
+_main_complete:0> -ftb-complete
 +-ftb-complete:1> local -a _ftb_compcap
 +-ftb-complete:2> local -Ua _ftb_groups
 +-ftb-complete:3> local choice choices _ftb_curcontext continuous_trigger print_query accept_line bs=$'\C-B' nul=$'\C-@'
 +-ftb-complete:4> local ret=0
 +-ftb-complete:7> ((  0  ))
 +-ftb-complete:8> COLUMNS=500  +-ftb-complete:8> _ftb__main_complete
  +_ftb__main_complete:1> local IFS=$' \t\n\C-@'
  +_ftb__main_complete:2> 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>&-;\n             exec </dev/null;\n             trap - ZERR;\n             local -a reply;\n             local REPLY;\n             local REPORTTIME;\n             unset REPORTTIME'
   +(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 off 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 warnnestedvar off globalexport on ksharrays off correct off cdsilent 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 on autocontinue off appendhistory on aliasfuncdef off singlelinezle off hashlistall on ignoreclosebraces off recexact off localoptions off interactivecomments off errexit off cshjunkiequotes off markdirs off hashdirs on cdablevars off rcexpandparam off vi off printeightbit off multifuncdef on xtrace on login off 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 checkrunningjobs on 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 off 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 off 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 off 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 off 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_errreturn NO_globassign NO_globsubst NO_histsubstpattern NO_ignorebraces NO_ignoreclosebraces NO_kshglob NO_ksharrays NO_kshtypeset NO_markdirs NO_octalzeroes NO_posixbuiltins NO_posixidentifiers NO_shwordsplit NO_shglob NO_warnnestedvar 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
   +(eval):10> local REPORTTIME
   +(eval):11> unset REPORTTIME
  +_ftb__main_complete:3> 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=''
  +_ftb__main_complete:4> local _comp_priv_prefix
  +_ftb__main_complete:5> unset _comp_priv_prefix
  +_ftb__main_complete:6> local -a precommands
  +_ftb__main_complete:7> local -ar builtin_precommands=( - builtin eval exec nocorrect noglob time )
  +_ftb__main_complete:8> typeset -U _lastdescr _comp_ignore _comp_colors
  +_ftb__main_complete:10> [[ -z '' ]]
  +_ftb__main_complete:10> curcontext=:::
  +_ftb__main_complete:11> zstyle -s :completion::::: insert-tab tmp
  +_ftb__main_complete:11> tmp=yes
  +_ftb__main_complete:12> [[ yes = *pending(|[[:blank:]]*) || yes = *pending=(#b)([0-9]##)(|[[:blank:]]*) ]]
  +_ftb__main_complete:17> [[ automenu-unambiguous = tab* ]]
  +_ftb__main_complete:28> [[ '' = \* ]]
  +_ftb__main_complete:34> [[ -z '' ]]
  +_ftb__main_complete:36> [[ -o equals ]]
  +_ftb__main_complete:36> compset -P 1 '='
  +_ftb__main_complete:39> [[ '' != */* && '' = \~ ]]
  +_ftb__main_complete:45> _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
  +_ftb__main_complete:46> _def_menu_style=( '' )
  +_ftb__main_complete:47> _last_menu_style=( )
  +_ftb__main_complete:48> zstyle -s :completion:::::default list-prompt tmp
  +_ftb__main_complete:53> zstyle -s :completion:::::default select-prompt tmp
  +_ftb__main_complete:58> zstyle -s :completion:::::default select-scroll tmp
  +_ftb__main_complete:63> ((  0  ))
  +_ftb__main_complete:78> zstyle -a :completion::::: completer _completers
  +_ftb__main_complete:78> _completers=( _complete _ignored )
  +_ftb__main_complete:80> _completer_num=1
  +_ftb__main_complete:81> integer SECONDS=0
  +_ftb__main_complete:92> funcs=( )
  +_ftb__main_complete:93> compprefuncs=( )
  +_ftb__main_complete:98> tmp=_complete
  +_ftb__main_complete:100> [[ -n '' ]]
  +_ftb__main_complete:103> [[ _complete = *:-* ]]
  +_ftb__main_complete:107> [[ _complete = *:* ]]
  +_ftb__main_complete:112> _completer=complete
  +_ftb__main_complete:114> curcontext=:complete::
  +_ftb__main_complete:115> zstyle -t :completion::complete::: show-completer
  +_ftb__main_complete:116> zstyle -a :completion::complete::: matcher-list _matchers
  +_ftb__main_complete:116> _matchers=( '' )
  +_ftb__main_complete:117> _matcher_num=1
  +_ftb__main_complete:118> _matcher=''
  +_ftb__main_complete:119> _c_matcher=
  +_ftb__main_complete:121> [[ '' == +* ]]
  +_ftb__main_complete:125> _matcher=''
  +_ftb__main_complete:127> _comp_mesg=''
  +_ftb__main_complete:128> [[ -n '' ]]
  +_ftb__main_complete:135> _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 precommand
    +_normal:4> local -A opts
    +_normal:6> zparseopts -A opts -D - P 'p+:-=precommand' s
    +_normal:7> ((  1  ))
    +_normal:8> ((  0  ))
    +_normal:9> ((  0  ))
    +_normal:15> [[ -o BANG_HIST && '' = !*: || '' = "!*: ]]
    +_normal:28> [[ CURRENT -eq 1 ]]
    +_normal:37> _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:39> _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 match mbegin mend
       +_cd:27> ((  CURRENT > 1  ))
       +_cd:30> [[ '' = -* ]]
       +_cd:38> [[ CURRENT -eq 3 ]]
       +_cd:49> [[ '' == (#b)(\~|)[^/]# && -n '' || CURRENT -gt 1 && ! -o cdablevars ]]
       +_cd:51> _directory_stack
        +_directory_stack:8> setopt localoptions nonomatch
        +_directory_stack:10> local expl list lines revlines disp sep
        +_directory_stack:15> [[ '' = [-+]* ]]
        +_directory_stack:15> return 1
       +_cd:54> local -a tmpWpath
       +_cd:55> [[ '' = (|*/)../* ]]
       +_cd:66> [[ '' != (\~|/|./|../)* && '' != ../* ]]
       +_cd:67> local tmpcdpath alt
       +_cd:69> alt=( )
       +_cd:71> tmpcdpath=( )
       +_cd:73> ((  0  ))
       +_cd:77> [[ -o cdablevars ]]
       +_cd:102> [[ CURRENT -ne 1 ]]
       +_cd:103> alt=( 'local-directories:local directory:_path_files  -/' )
       +_cd:105> [[ CURRENT -eq argstart && noopts -eq 0 && '' = -* ]]
       +_cd:110> _alternative 'local-directories:local directory:_path_files  -/'
        +_alternative:3> local tags def expl descr action mesgs nm=0 subopts
        +_alternative:4> local opt ws curcontext=:complete:cd:
        +_alternative:6> subopts=( )
        +_alternative:7> getopts O:C: opt
        +_alternative:14> shift OPTIND-1
        +_alternative:16> [[ 'local-directories:local directory:_path_files  -/' = -(|-) ]]
        +_alternative:18> mesgs=( )
        +_alternative:20> _tags local-directories
         +_tags:3> local prev
         +_tags:10> [[ local-directories = -- ]]
         +_tags:15> ((  1  ))
         +_tags:19> local curcontext=:complete:cd: order tag nodef tmp
         +_tags:21> [[ local-directories = -C?* ]]
         +_tags:24> [[ local-directories = -C ]]
         +_tags:29> [[ local-directories = -(|-) ]]
         +_tags:31> zstyle -a :completion::complete:cd:: group-order order
         +_tags:36> comptags -i :complete:cd: local-directories
         +_tags:40> [[ -n '' ]]
         +_tags:43> zstyle -a :completion::complete:cd:: tag-order order
         +_tags:44> ((  ! 0  ))
         +_tags:55> [[ -z '' ]]
         +_tags:55> comptry local-directories
         +_tags:60> comptags -T
         +_tags:62> return
        +_alternative:22> _tags
         +_tags:3> local prev
         +_tags:10> [[ '' = -- ]]
         +_tags:15> ((  0  ))
         +_tags:67> comptags -N
        +_alternative:23> def=local-directories:local directory:_path_files  -/
        +_alternative:24> _requested local-directories
         +_requested:3> local __gopt
         +_requested:5> __gopt=( )
         +_requested:6> zparseopts -D -a __gopt 1 2 V J x
         +_requested:8> comptags -R local-directories
         +_requested:9> [[ 1 -gt 3 ]]
         +_requested:11> [[ 1 -gt 1 ]]
         +_requested:14> return 0
        +_alternative:25> descr='local directory'
        +_alternative:26> action='_path_files  -/'
        +_alternative:28> _description local-directories expl 'local directory'
         +_description:3> local name nopt xopt format gname hidden hide match opts tag
         +_description:4> local -a ign gropt sort
         +_description:6> opts=( )
         +_description:8> xopt=( -X )
         +_description:9> nopt=( )
         +_description:10> zparseopts -K -D -a nopt 1 2 'V=gropt' 'J=ign' 'x=xopt'
         +_description:12> 3='local directory'
         +_description:13> [[ -n 'local directory' ]]
         +_description:13> _lastdescr=( '' 'local directory' )
         +_description:15> zstyle -s :completion::complete:cd::local-directories group-name gname
         +_description:18> _setup local-directories -default-
          +_setup:3> local val nm=0
          +_setup:5> [[ 2 -eq 1 ]]
          +_setup:7> zstyle -a :completion::complete:cd::local-directories list-colors val
          +_setup:21> [[ local-directories = default ]]
          +_setup:27> zstyle -s :completion::complete:cd::local-directories show-ambiguity val
          +_setup:32> zstyle -t :completion::complete:cd::local-directories list-packed
          +_setup:34> [[ 2 -eq 1 ]]
          +_setup:37> compstate[list]=ambiguous
          +_setup:40> zstyle -t :completion::complete:cd::local-directories list-rows-first
          +_setup:42> [[ 2 -eq 1 ]]
          +_setup:45> compstate[list]=ambiguous
          +_setup:48> zstyle -t :completion::complete:cd::local-directories last-prompt
          +_setup:50> [[ 2 -eq 1 ]]
          +_setup:53> compstate[last_prompt]=yes
          +_setup:56> zstyle -t :completion::complete:cd::local-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::local-directories menu val
          +_setup:71> _last_nmatches=-1
          +_setup:74> [[ '' != always ]]
          +_setup:75> zstyle -s :completion::complete:cd::local-directories force-list val
         +_description:20> name=expl
         +_description:22> zstyle -s :completion::complete:cd::local-directories format format
         +_description:23> zstyle -s :completion::complete:cd::descriptions format format
         +_description:25> zstyle -s :completion::complete:cd::local-directories hidden hidden
         +_description:30> zstyle -s :completion::complete:cd::local-directories matcher match
         +_description:32> [[ -n '' ]]
         +_description:36> [[ -z '' ]]
         +_description:37> zstyle -a :completion::complete:cd::local-directories sort sort
         +_description:38> zstyle -a :completion::complete:cd:: sort sort
         +_description:50> [[ -z '' ]]
         +_description:51> zstyle -a :completion::complete:cd::local-directories ignored-patterns _comp_ignore
         +_description:52> _comp_ignore=( )
         +_description:54> zstyle -s :completion::complete:cd::local-directories ignore-line hidden
         +_description:70> ((  0  ))
         +_description:75> tag=local-directories
         +_description:77> shift 2
         +_description:78> [[ -z 'local directory' ]]
         +_description:80> [[ -n '' ]]
         +_description:84> [[ -n '' ]]
         +_description:91> [[ -n '' ]]
         +_description:94> set -A expl -J -default-
         +_description:98> ((  0  ))
         +_description:99> local fakestyle descr
         +_description:100> fakestyle=fake
         +_description:101> zstyle -a :completion::complete:cd::local-directories fake match
         +_description:102> continue
         +_description:100> fakestyle=fake-always
         +_description:101> zstyle -a :completion::complete:cd::local-directories fake-always match
         +_description:102> continue
         +_description:115> return 0
        +_alternative:30> [[ '_path_files  -/' = \ # ]]
        +_alternative:35> [[ '_path_files  -/' = \(\(*\)\) ]]
        +_alternative:42> [[ '_path_files  -/' = \(*\) ]]
        +_alternative:50> [[ '_path_files  -/' = {*} ]]
        +_alternative:57> [[ '_path_files  -/' = \ * ]]
        +_alternative:69> eval 'action=( _path_files  -/ )'
         +(eval):1> action=( _path_files -/ )
        +_alternative:70> _next_label local-directories expl 'local directory'
         +_next_label:3> local __gopt __descr __spec
         +_next_label:5> __gopt=( )
         +_next_label:6> zparseopts -D -a __gopt 1 2 V J x
         +_next_label:8> comptags -A local-directories curtag __spec
         +_next_label:9> ((  11 > _tags_level  ))
         +_next_label:9> _comp_tags=''
         +_next_label:10> _tags_level=11
         +_next_label:11> _comp_tags=' local-directories '
         +_next_label:12> [[ local-directories = *[^\\]:* ]]
         +_next_label:18> _description local-directories expl 'local directory'
          +_description:3> local name nopt xopt format gname hidden hide match opts tag
          +_description:4> local -a ign gropt sort
          +_description:6> opts=( )
          +_description:8> xopt=( -X )
          +_description:9> nopt=( )
          +_description:10> zparseopts -K -D -a nopt 1 2 'V=gropt' 'J=ign' 'x=xopt'
          +_description:12> 3='local directory'
          +_description:13> [[ -n 'local directory' ]]
          +_description:13> _lastdescr=( '' 'local directory' 'local directory' )
          +_description:15> zstyle -s :completion::complete:cd::local-directories group-name gname
          +_description:18> _setup local-directories -default-
           +_setup:3> local val nm=0
           +_setup:5> [[ 2 -eq 1 ]]
           +_setup:7> zstyle -a :completion::complete:cd::local-directories list-colors val
           +_setup:21> [[ local-directories = default ]]
           +_setup:27> zstyle -s :completion::complete:cd::local-directories show-ambiguity val
           +_setup:32> zstyle -t :completion::complete:cd::local-directories list-packed
           +_setup:34> [[ 2 -eq 1 ]]
           +_setup:37> compstate[list]=ambiguous
           +_setup:40> zstyle -t :completion::complete:cd::local-directories list-rows-first
           +_setup:42> [[ 2 -eq 1 ]]
           +_setup:45> compstate[list]=ambiguous
           +_setup:48> zstyle -t :completion::complete:cd::local-directories last-prompt
           +_setup:50> [[ 2 -eq 1 ]]
           +_setup:53> compstate[last_prompt]=yes
           +_setup:56> zstyle -t :completion::complete:cd::local-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::local-directories menu val
           +_setup:71> _last_nmatches=-1
           +_setup:74> [[ '' != always ]]
           +_setup:75> zstyle -s :completion::complete:cd::local-directories force-list val
          +_description:20> name=expl
          +_description:22> zstyle -s :completion::complete:cd::local-directories format format
          +_description:23> zstyle -s :completion::complete:cd::descriptions format format
          +_description:25> zstyle -s :completion::complete:cd::local-directories hidden hidden
          +_description:30> zstyle -s :completion::complete:cd::local-directories matcher match
          +_description:32> [[ -n '' ]]
          +_description:36> [[ -z '' ]]
          +_description:37> zstyle -a :completion::complete:cd::local-directories sort sort
          +_description:38> zstyle -a :completion::complete:cd:: sort sort
          +_description:50> [[ -z '' ]]
          +_description:51> zstyle -a :completion::complete:cd::local-directories ignored-patterns _comp_ignore
          +_description:52> _comp_ignore=( )
          +_description:54> zstyle -s :completion::complete:cd::local-directories ignore-line hidden
          +_description:70> ((  0  ))
          +_description:75> tag=local-directories
          +_description:77> shift 2
          +_description:78> [[ -z 'local directory' ]]
          +_description:80> [[ -n '' ]]
          +_description:84> [[ -n '' ]]
          +_description:91> [[ -n '' ]]
          +_description:94> set -A expl -J -default-
          +_description:98> ((  0  ))
          +_description:99> local fakestyle descr
          +_description:100> fakestyle=fake
          +_description:101> zstyle -a :completion::complete:cd::local-directories fake match
          +_description:102> continue
          +_description:100> fakestyle=fake-always
          +_description:101> zstyle -a :completion::complete:cd::local-directories fake-always match
          +_description:102> continue
          +_description:115> return 0
         +_next_label:19> set -A expl -J -default-
         +_next_label:22> return 0
        +_alternative:71> _path_files -J -default- -/
         +_path_files:3> local -a match mbegin mend
         +_path_files:5> local splitchars
         +_path_files:6> zstyle -s :completion::complete:cd:: file-split-chars splitchars
         +_path_files:22> _have_glob_qual
          +_have_glob_qual:14> local complete
          +_have_glob_qual:16> [[ '' = complete ]]
          +_have_glob_qual:18> [[ -z '' && on == on && '' = (#b)(((*[^\\\$]|)(\\\\)#)\()([^\)\|\~]#) || off == on ]]
         +_path_files:44> local linepath realpath donepath prepath testpath exppath skips skipped
         +_path_files:45> local tmp1 tmp2 tmp3 tmp4 i orig eorig pre suf tpre tsuf opre osuf cpre
         +_path_files:46> local pats haspats ignore pfx pfxsfx sopt gopt opt sdirs ignpar cfopt listsfx
         +_path_files:47> local nm=0 menu matcher mopts sort mid accex fake
         +_path_files:48> local listfiles listopts tmpdisp origtmp1 Uopt
         +_path_files:49> local accept_exact_dirs path_completion
         +_path_files:50> integer npathcheck
         +_path_files:51> local -a Mopts
         +_path_files:53> typeset -U prepaths exppaths
         +_path_files:55> exppaths=( )
         +_path_files:59> zparseopts -a mopts 'P:=pfx' 'S:=pfxsfx' 'q=pfxsfx' 'r:=pfxsfx' 'R:=pfxsfx' 'W:=prepaths' 'F:=ignore' 'M+:=matcher' J+: V+: x+: X+: 1 2 o+: n 'f=tmp1' '/=tmp1' 'g+:-=tmp1'
         +_path_files:64> sopt=-/
         +_path_files:65> ((  1  ))
         +_path_files:65> haspats=yes
         +_path_files:66> ((  0  ))
         +_path_files:67> ((  1  ))
         +_path_files:68> pats=''
         +_path_files:69> pats=( '*(-/)' )
         +_path_files:74> pats=( '*(-/)' )
         +_path_files:76> ((  0  ))
         +_path_files:80> ((  0  ))
         +_path_files:92> prepaths=( '' )
         +_path_files:95> ((  0  ))
         +_path_files:106> [[ -/ = -(f|) ]]
         +_path_files:115> ((  ! 1  ))
         +_path_files:136> [[ -z '' && 0 -eq 0 && -z '' && -n '' ]]
         +_path_files:140> ((  0  ))
         +_path_files:145> [[ 0 -eq 0 && -o nocaseglob ]]
         +_path_files:151> ((  0  ))
         +_path_files:156> zstyle -s :completion::complete:cd:: file-sort tmp1
         +_path_files:191> zstyle -t :completion::complete:cd::paths squeeze-slashes
         +_path_files:194> skips='((.|..)/)##'
         +_path_files:197> zstyle -s :completion::complete:cd::paths special-dirs sdirs
         +_path_files:198> zstyle -t :completion::complete:cd::paths list-suffixes
         +_path_files:201> [[ '*(-/)' = ((|*[[:blank:]])\*(|[[:blank:]]*|\([^[:blank:]]##\))|*\([^[:blank:]]#/[^[:blank:]]#\)*) ]]
         +_path_files:202> sopt=-//
         +_path_files:204> zstyle -a :completion::complete:cd::paths accept-exact accex
         +_path_files:205> zstyle -a :completion::complete:cd:: fake-files fake
         +_path_files:207> zstyle -s :completion::complete:cd:: ignore-parents ignpar
         +_path_files:209> zstyle -t :completion::complete:cd::paths accept-exact-dirs
         +_path_files:211> zstyle -T :completion::complete:cd::paths path-completion
         +_path_files:212> path_completion=1
         +_path_files:214> [[ -n '' ]]
         +_path_files:242> pre=''
         +_path_files:243> suf=''
         +_path_files:244> opre=''
         +_path_files:245> osuf=''
         +_path_files:246> orig=''
         +_path_files:247> eorig=''
         +_path_files:249> [[ automenu-unambiguous = (*menu|[0-9]*) || -n '' || -n '' ]]
         +_path_files:252> [[ -n '' ]]
         +_path_files:256> Mopts=( -M 'r:|/=* r:|=*' )
         +_path_files:261> [[ '' = [^][*?#^\|\<\>\\]#(`[^`]#`|\$)*/* ]]
         +_path_files:282> [[ '' = \~ ]]
         +_path_files:332> linepath=''
         +_path_files:333> realpath=''
         +_path_files:335> zstyle -s :completion::complete:cd:: preserve-prefix tmp1
         +_path_files:343> [[ '' = / ]]
         +_path_files:356> [[ '' = (.|..)/* ]]
         +_path_files:357> donepath=''
         +_path_files:364> prepath=
         +_path_files:370> skipped=''
         +_path_files:371> cpre=''
         +_path_files:373> [[ -n '' || -z 1 ]]
         +_path_files:412> tpre=''
         +_path_files:413> tsuf=''
         +_path_files:421> testpath=''
         +_path_files:423> tmp2=''
         +_path_files:424> tpre=''
         +_path_files:426> tmp1=( '' )
         +_path_files:429> ((  npathcheck = 0  ))
         +_path_files:430> true
         +_path_files:432> origtmp1=( '' )
         +_path_files:435> [[ '' = */* ]]
         +_path_files:439> PREFIX=''
         +_path_files:440> SUFFIX=''
         +_path_files:452> tmp2=( '' )
         +_path_files:454> [[ '' = (#b)*/(*) ]]
         +_path_files:467> [[ -// = *[/f]* ]]
         +_path_files:468> compfiles -p tmp1 accex '' ' ' '' fake '*(-/)'
         +_path_files:472> tmp1=( ignore links makefiles notes src )
         +_path_files:474> [[ -n '' ]]
         +_path_files:546> ((  ! 5  ))
         +_path_files:575> [[ -n '' ]]
         +_path_files:589> [[ '' = */* ]]
         +_path_files:591> [[ '' = */* ]]
         +_path_files:595> break
         +_path_files:614> tmp3=''
         +_path_files:615> tpre=''
         +_path_files:616> tsuf=''
         +_path_files:617> [[ -n '' ]]
         +_path_files:627> true
         +_path_files:634> compfiles -r tmp1 ''
         +_path_files:635> tmp4=1
         +_path_files:637> [[ '' = */* ]]
         +_path_files:642> tmp2=''
         +_path_files:643> PREFIX=''
         +_path_files:644> SUFFIX=''
         +_path_files:651> ((  tmp4  ))
         +_path_files:660> tmp2=''
         +_path_files:661> [[ -n '' ]]
         +_path_files:663> [[ -n '' ]]
         +_path_files:667> compquote tmp1 tmp2
         +_path_files:670> [[ -z '' && '' = \* ]]
         +_path_files:680> [[ -z automenu-unambiguous ]]
         +_path_files:681> zstyle -t :completion::complete:cd::paths expand suffix
         +_path_files:682> [[ -z '' && -n '' || -z '' ]]
         +_path_files:688> ((  tmp4  ))
         +_path_files:688> zstyle -t :completion::complete:cd::paths ambiguous
         +_path_files:690> [[ '' = */* ]]
         +_path_files:716> _list_files tmp1 ''
          +_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:717> compadd -Qf -J -default- -p '' -s '' -W '' -M 'r:|/=* r:|=*' -a tmp1
          +compadd:1> local -A apre hpre dscrs _oad _mesg
          +compadd:2> local -a isfile _opts __ expl
          +compadd:3> zparseopts -E -a _opts 'P:=apre' 'p:=hpre' 'd:=dscrs' 'X+:=expl' 'O:=_oad' 'A:=_oad' 'D:=_oad' 'f=isfile' i: S: s: I: 'x:=_mesg' r: R: W: F: M+: E: q e Q n U C 'J:=__' 'V:=__' 'a=__' 'l=__' 'k=__' 'o=__' '1=__' '2=__'
          +compadd:4> _ftb_curcontext=complete:cd:
          +compadd:5> ((  0 != 0 || ! IN_FZF_TAB  ))
          +compadd:6> -ftb-zstyle -m disabled-on any
           +-ftb-zstyle:1> zstyle -m :fzf-tab:complete:cd: disabled-on any
          +compadd:9> -ftb-zstyle -m disabled-on files
           +-ftb-zstyle:1> zstyle -m :fzf-tab:complete:cd: disabled-on files
          +compadd:16> local -a __hits __dscr
          +compadd:17> ((  0 == 1  ))
          +compadd:21> compadd -A __hits -D __dscr -Qf -J -default- -p '' -s '' -W '' -M 'r:|/=* r:|=*' -a tmp1
          +compadd:22> local ret=1
          +compadd:23> ((  5 == 0  ))
          +compadd:31> expl=''
          +compadd:32> [[ -n '' ]]
          +compadd:33> local -a keys=( apre hpre PREFIX SUFFIX IPREFIX ISUFFIX )
          +compadd:34> local key expanded __tmp_value=$'<\C-@>'
          +compadd:35> key=apre
          +compadd:37> expanded=''
          +compadd:38> [[ -n '' ]]
          +compadd:35> key=hpre
          +compadd:37> expanded=''
          +compadd:38> [[ -n '' ]]
          +compadd:35> key=PREFIX
          +compadd:37> expanded=''
          +compadd:38> [[ -n '' ]]
          +compadd:35> key=SUFFIX
          +compadd:37> expanded=''
          +compadd:38> [[ -n '' ]]
          +compadd:35> key=IPREFIX
          +compadd:37> expanded=''
          +compadd:38> [[ -n '' ]]
          +compadd:35> key=ISUFFIX
          +compadd:37> expanded=''
          +compadd:38> [[ -n '' ]]
          +compadd:43> [[ -n '' ]]
          +compadd:47> [[ -n -f ]]
          +compadd:49> __tmp_value+=$'\C-@realdir\C-@'
          +compadd:51> _opts+=( -p '' -f )
          +compadd:52> __tmp_value+=$'\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f'
          +compadd:53> ((  0  ))
          +compadd:57> local dscr word i
          +compadd:58> i=1
          +compadd:60> word=ignore dscr=''
          +compadd:61> [[ -n '' ]]
          +compadd:64> [[ -n ignore ]]
          +compadd:66> dscr=ignore
          +compadd:68> _ftb_compcap+=$'ignore\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@ignore'
          +compadd:58> i=2
          +compadd:60> word=links dscr=''
          +compadd:61> [[ -n '' ]]
          +compadd:64> [[ -n links ]]
          +compadd:66> dscr=links
          +compadd:68> _ftb_compcap+=$'links\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@links'
          +compadd:58> i=3
          +compadd:60> word=makefiles dscr=''
          +compadd:61> [[ -n '' ]]
          +compadd:64> [[ -n makefiles ]]
          +compadd:66> dscr=makefiles
          +compadd:68> _ftb_compcap+=$'makefiles\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@makefiles'
          +compadd:58> i=4
          +compadd:60> word=notes dscr=''
          +compadd:61> [[ -n '' ]]
          +compadd:64> [[ -n notes ]]
          +compadd:66> dscr=notes
          +compadd:68> _ftb_compcap+=$'notes\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@notes'
          +compadd:58> i=5
          +compadd:60> word=src dscr=''
          +compadd:61> [[ -n '' ]]
          +compadd:64> [[ -n src ]]
          +compadd:66> dscr=src
          +compadd:68> _ftb_compcap+=$'src\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@src'
          +compadd:71> compadd -U -qS '' -R -ftb-remove-space ''
         +_path_files:754> tmp4=-
         +_path_files:756> break
         +_path_files:800> [[ -z - ]]
         +_path_files:886> [[ _matcher_num -eq 1 ]]
         +_path_files:887> zstyle -t :completion::complete:cd::paths expand prefix
         +_path_files:895> [[ nm -ne 'compstate[nmatches]' ]]
        +_alternative:70> _next_label local-directories expl 'local directory'
         +_next_label:3> local __gopt __descr __spec
         +_next_label:5> __gopt=( )
         +_next_label:6> zparseopts -D -a __gopt 1 2 V J x
         +_next_label:8> comptags -A local-directories curtag __spec
         +_next_label:25> return 1
        +_alternative:76> [[ nm -ne 'compstate[nmatches]' ]]
        +_alternative:76> return 0
       +_cd:110> ret=0
       +_cd:112> 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
  +_ftb__main_complete:137> ret=0
  +_ftb__main_complete:138> break 2
  +_ftb__main_complete:145> curcontext=:::
  +_ftb__main_complete:146> [[ '' = keep ]]
  +_ftb__main_complete:150> nm=1
  +_ftb__main_complete:152> [[ '' = keep || nm -gt 1 ]]
  +_ftb__main_complete:277> [[ nm -lt 1 ]]
  +_ftb__main_complete:281> [[ nm -eq 0 ]]
  +_ftb__main_complete:295> [[ -n '' ]]
  +_ftb__main_complete:301> [[ '' = always || '' = ?* ]]
  +_ftb__main_complete:303> [[ '' = keep ]]
  +_ftb__main_complete:311> ((  0  ))
  +_ftb__main_complete:315> unset ZLS_COLORS
  +_ftb__main_complete:318> funcs=( )
  +_ftb__main_complete:319> comppostfuncs=( )
  +_ftb__main_complete:324> _lastcomp=( list_lines 1 all_quotes '\' nmatches 1 restore auto context command vared '' unambiguous '' list_max 100 unambiguous_cursor 1 list ambiguous insert_positions 3 unambiguous_positions 0 exact '' to_end match last_prompt yes pattern_insert menu ignored 0 insert automenu-unambiguous )
  +_ftb__main_complete:325> _lastcomp[nmatches]=1
  +_ftb__main_complete:326> _lastcomp[completer]=complete
  +_ftb__main_complete:327> _lastcomp[prefix]=''
  +_ftb__main_complete:328> _lastcomp[suffix]=''
  +_ftb__main_complete:329> _lastcomp[iprefix]=''
  +_ftb__main_complete:330> _lastcomp[isuffix]=''
  +_ftb__main_complete:331> _lastcomp[qiprefix]=''
  +_ftb__main_complete:332> _lastcomp[qisuffix]=''
  +_ftb__main_complete:333> _lastcomp[tags]=' local-directories '
  +_ftb__main_complete:334> return ret
 +-ftb-complete:9> ((  0  ))
 +-ftb-complete:11> emulate -L zsh -o extended_glob
 +-ftb-complete:13> local _ftb_query _ftb_complist=( ) _ftb_headers=( ) command opts
 +-ftb-complete:14> -ftb-generate-complist
  +-ftb-generate-complist:3> local dsuf dpre k _v filepath first_word show_group default_color prefix bs=$'\C-H'
  +-ftb-generate-complist:4> local -a list_colors group_colors tcandidates reply match mbegin mend
  +-ftb-generate-complist:5> local -i same_word=1 colorful=0
  +-ftb-generate-complist:6> local -Ua duplicate_groups=( )
  +-ftb-generate-complist:7> local -A word_map=( )
  +-ftb-generate-complist:9> ((  5 == 0  ))
  +-ftb-generate-complist:11> -ftb-zstyle -s show-group show_group
   +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: show-group show_group
  +-ftb-generate-complist:11> show_group=full
  +-ftb-generate-complist:12> -ftb-zstyle -s default-color default_color
   +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: default-color default_color
  +-ftb-generate-complist:12> default_color=$'\C-[[37m'
  +-ftb-generate-complist:13> -ftb-zstyle -s prefix prefix
   +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: prefix prefix
  +-ftb-generate-complist:14> zstyle -m ':completion:*:descriptions' format '*'
  +-ftb-generate-complist:16> -ftb-zstyle -a group-colors group_colors
   +-ftb-zstyle:1> zstyle -a :fzf-tab:complete:cd: group-colors group_colors
  +-ftb-generate-complist:16> group_colors=( $'\C-[[94m' $'\C-[[32m' $'\C-[[33m' $'\C-[[35m' $'\C-[[31m' $'\C-[[38;5;27m' $'\C-[[36m' $'\C-[[38;5;100m' $'\C-[[38;5;98m' $'\C-[[91m' $'\C-[[38;5;80m' $'\C-[[92m' $'\C-[[38;5;214m' $'\C-[[38;5;165m' $'\C-[[38;5;124m' $'\C-[[38;5;120m' )
  +-ftb-generate-complist:17> zstyle -a :completion:complete:cd: list-colors list_colors
  +-ftb-generate-complist:20> ((  0  ))
  +-ftb-generate-complist:23> local -A namecolors=( )
  +-ftb-generate-complist:24> local -A modecolors=( )
  +-ftb-generate-complist:25> ((  0 == 0 && 0 == 0  ))
  +-ftb-generate-complist:25> list_colors=( )
  +-ftb-generate-complist:28> ((  0 == 1  ))
  +-ftb-generate-complist:33> ((  0  ))
  +-ftb-generate-complist:36> k=ignore
  +-ftb-generate-complist:36> _v=< > realdir  args -Q-s-W-Mr:|/=* r:|=*-p-f word ignore
  +-ftb-generate-complist:37> local -A v=( '<' '>' realdir '' args $'-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f' word ignore )
  +-ftb-generate-complist:38> [[ ignore == ignore ]]
  +-ftb-generate-complist:41> dsuf='' dpre=''
  +-ftb-generate-complist:42> ((  1  ))
  +-ftb-generate-complist:43> filepath=ignore
  +-ftb-generate-complist:44> [[ -d ignore ]]
  +-ftb-generate-complist:45> dsuf=/
  +-ftb-generate-complist:49> ((  0  ))
  +-ftb-generate-complist:52> [[ -L ignore ]]
  +-ftb-generate-complist:55> [[ on == off ]]
  +-ftb-generate-complist:61> ((  0  ))
  +-ftb-generate-complist:67> tcandidates+=$'\C-[[37m\C-@ignore\C-@/'
  +-ftb-generate-complist:71> [[ full == brief ]]
  +-ftb-generate-complist:36> k=links
  +-ftb-generate-complist:36> _v=< > realdir  args -Q-s-W-Mr:|/=* r:|=*-p-f word links
  +-ftb-generate-complist:37> local -A v=( '<' '>' realdir '' args $'-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f' word links )
  +-ftb-generate-complist:38> [[ links == ignore ]]
  +-ftb-generate-complist:38> same_word=0
  +-ftb-generate-complist:41> dsuf='' dpre=''
  +-ftb-generate-complist:42> ((  1  ))
  +-ftb-generate-complist:43> filepath=links
  +-ftb-generate-complist:44> [[ -d links ]]
  +-ftb-generate-complist:45> dsuf=/
  +-ftb-generate-complist:49> ((  0  ))
  +-ftb-generate-complist:52> [[ -L links ]]
  +-ftb-generate-complist:55> [[ on == off ]]
  +-ftb-generate-complist:61> ((  0  ))
  +-ftb-generate-complist:67> tcandidates+=$'\C-[[37m\C-@links\C-@/'
  +-ftb-generate-complist:71> [[ full == brief ]]
  +-ftb-generate-complist:36> k=makefiles
  +-ftb-generate-complist:36> _v=< > realdir  args -Q-s-W-Mr:|/=* r:|=*-p-f word makefiles
  +-ftb-generate-complist:37> local -A v=( '<' '>' realdir '' args $'-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f' word makefiles )
  +-ftb-generate-complist:38> [[ makefiles == ignore ]]
  +-ftb-generate-complist:38> same_word=0
  +-ftb-generate-complist:41> dsuf='' dpre=''
  +-ftb-generate-complist:42> ((  1  ))
  +-ftb-generate-complist:43> filepath=makefiles
  +-ftb-generate-complist:44> [[ -d makefiles ]]
  +-ftb-generate-complist:45> dsuf=/
  +-ftb-generate-complist:49> ((  0  ))
  +-ftb-generate-complist:52> [[ -L makefiles ]]
  +-ftb-generate-complist:55> [[ on == off ]]
  +-ftb-generate-complist:61> ((  0  ))
  +-ftb-generate-complist:67> tcandidates+=$'\C-[[37m\C-@makefiles\C-@/'
  +-ftb-generate-complist:71> [[ full == brief ]]
  +-ftb-generate-complist:36> k=notes
  +-ftb-generate-complist:36> _v=< > realdir  args -Q-s-W-Mr:|/=* r:|=*-p-f word notes
  +-ftb-generate-complist:37> local -A v=( '<' '>' realdir '' args $'-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f' word notes )
  +-ftb-generate-complist:38> [[ notes == ignore ]]
  +-ftb-generate-complist:38> same_word=0
  +-ftb-generate-complist:41> dsuf='' dpre=''
  +-ftb-generate-complist:42> ((  1  ))
  +-ftb-generate-complist:43> filepath=notes
  +-ftb-generate-complist:44> [[ -d notes ]]
  +-ftb-generate-complist:45> dsuf=/
  +-ftb-generate-complist:49> ((  0  ))
  +-ftb-generate-complist:52> [[ -L notes ]]
  +-ftb-generate-complist:55> [[ on == off ]]
  +-ftb-generate-complist:61> ((  0  ))
  +-ftb-generate-complist:67> tcandidates+=$'\C-[[37m\C-@notes\C-@/'
  +-ftb-generate-complist:71> [[ full == brief ]]
  +-ftb-generate-complist:36> k=src
  +-ftb-generate-complist:36> _v=< > realdir  args -Q-s-W-Mr:|/=* r:|=*-p-f word src
  +-ftb-generate-complist:37> local -A v=( '<' '>' realdir '' args $'-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f' word src )
  +-ftb-generate-complist:38> [[ src == ignore ]]
  +-ftb-generate-complist:38> same_word=0
  +-ftb-generate-complist:41> dsuf='' dpre=''
  +-ftb-generate-complist:42> ((  1  ))
  +-ftb-generate-complist:43> filepath=src
  +-ftb-generate-complist:44> [[ -d src ]]
  +-ftb-generate-complist:45> dsuf=/
  +-ftb-generate-complist:49> ((  0  ))
  +-ftb-generate-complist:52> [[ -L src ]]
  +-ftb-generate-complist:55> [[ on == off ]]
  +-ftb-generate-complist:61> ((  0  ))
  +-ftb-generate-complist:67> tcandidates+=$'\C-[[37m\C-@src\C-@/'
  +-ftb-generate-complist:71> [[ full == brief ]]
  +-ftb-generate-complist:81> ((  same_word  ))
  +-ftb-generate-complist:84> zstyle -T :completion:complete:cd: sort
  +-ftb-generate-complist:85> ((  0 != 1  ))
  +-ftb-generate-complist:86> ((  colorful  ))
  +-ftb-generate-complist:97> tcandidates=( $'\C-[[37m\C-@ignore\C-@/' $'\C-[[37m\C-@links\C-@/' $'\C-[[37m\C-@makefiles\C-@/' $'\C-[[37m\C-@notes\C-@/' $'\C-[[37m\C-@src\C-@/' )
  +-ftb-generate-complist:100> typeset -gUa _ftb_complist=( $'\C-[[37m\C-@ignore\C-@/' $'\C-[[37m\C-@links\C-@/' $'\C-[[37m\C-@makefiles\C-@/' $'\C-[[37m\C-@notes\C-@/' $'\C-[[37m\C-@src\C-@/' )
  +-ftb-generate-complist:103> ((  0  ))
 +-ftb-complete:16> -ftb-zstyle -s continuous-trigger continuous_trigger
  +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: continuous-trigger continuous_trigger
 +-ftb-complete:17> [[ linux-gnu == msys ]]
 +-ftb-complete:17> continuous_trigger=/
 +-ftb-complete:20> case 5 (0)
 +-ftb-complete:20> case 5 (1)
 +-ftb-complete:20> case 5 (*)
 +-ftb-complete:29> -ftb-generate-query
  +-ftb-generate-query:3> zmodload -s zsh/pcre
  +-ftb-generate-query:4> setopt localoptions rematch_pcre
  +-ftb-generate-query:7> local key qtype tmp query_string
  +-ftb-generate-query:8> typeset -g _ftb_query=''
  +-ftb-generate-query:9> -ftb-zstyle -a query-string query_string
   +-ftb-zstyle:1> zstyle -a :fzf-tab:complete:cd: query-string query_string
  +-ftb-generate-query:9> query_string=( prefix input first )
  +-ftb-generate-query:10> qtype=prefix
  +-ftb-generate-query:11> [[ prefix == prefix ]]
  +-ftb-generate-query:13> local -a keys=( ignore links makefiles notes src )
  +-ftb-generate-query:14> tmp=ignore
  +-ftb-generate-query:15> local MATCH match mbegin mend prefix=( i g n o r e )
  +-ftb-generate-query:16> key=links
  +-ftb-generate-query:17> ((  6  ))
  +-ftb-generate-query:18> [[ links == ignore* ]]
  +-ftb-generate-query:21> [[ ${(j::)${${(s::)key[1,$#tmp]}:^prefix}} -pcre-match '^(((.)\3)*)' ]]
  +-ftb-generate-query:23> tmp[$#MATCH/2+1,-1]=''
  +-ftb-generate-query:24> prefix[$#MATCH/2+1,-1]=( )
  +-ftb-generate-query:16> key=makefiles
  +-ftb-generate-query:17> ((  0  ))
  +-ftb-generate-query:17> break
  +-ftb-generate-query:35> ((  0  ))
  +-ftb-generate-query:37> [[ -n '' ]]
  +-ftb-generate-query:10> qtype=input
  +-ftb-generate-query:11> [[ input == prefix ]]
  +-ftb-generate-query:26> [[ input == input ]]
  +-ftb-generate-query:27> local fv=$'<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@ignore'
  +-ftb-generate-query:28> local -A v=( '<' '>' realdir '' args $'-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f' word ignore )
  +-ftb-generate-query:29> tmp=''
  +-ftb-generate-query:30> ((  0 != 1  ))
  +-ftb-generate-query:31> tmp=''
  +-ftb-generate-query:33> tmp=''
  +-ftb-generate-query:35> ((  0  ))
  +-ftb-generate-query:37> [[ -n '' ]]
  +-ftb-generate-query:10> qtype=first
  +-ftb-generate-query:11> [[ first == prefix ]]
  +-ftb-generate-query:26> [[ first == input ]]
  +-ftb-generate-query:35> ((  0  ))
  +-ftb-generate-query:37> [[ -n '' ]]
 +-ftb-complete:30> -ftb-generate-header
  +-ftb-generate-header:3> typeset -ga _ftb_headers=( )
  +-ftb-generate-header:4> local i tmp group_colors
  +-ftb-generate-header:5> local -i mlen=0 len=0
  +-ftb-generate-header:7> ((  0 == 1  ))
  +-ftb-generate-header:15> mlen+=1
  +-ftb-generate-header:17> -ftb-zstyle -a group-colors group_colors
   +-ftb-zstyle:1> zstyle -a :fzf-tab:complete:cd: group-colors group_colors
  +-ftb-generate-header:17> group_colors=( $'\C-[[94m' $'\C-[[32m' $'\C-[[33m' $'\C-[[35m' $'\C-[[31m' $'\C-[[38;5;27m' $'\C-[[36m' $'\C-[[38;5;100m' $'\C-[[38;5;98m' $'\C-[[91m' $'\C-[[38;5;80m' $'\C-[[92m' $'\C-[[38;5;214m' $'\C-[[38;5;165m' $'\C-[[38;5;124m' $'\C-[[38;5;120m' )
  +-ftb-generate-header:19> i=1
  +-ftb-generate-header:19> i<=0
  +-ftb-generate-header:35> ((  0  ))
 +-ftb-complete:31> -ftb-zstyle -s print-query print_query
  +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: print-query print_query
 +-ftb-complete:31> print_query=alt-enter
 +-ftb-complete:32> -ftb-zstyle -s accept-line accept_line
  +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: accept-line accept_line
 +-ftb-complete:34> choices= +-ftb-complete:34> choices= +-ftb-complete:34> -ftb-fzf
 +-ftb-complete:34> print -rl -- $'\C-[[37m\C-@ignore\C-@/' $'\C-[[37m\C-@links\C-@/' $'\C-[[37m\C-@makefiles\C-@/' $'\C-[[37m\C-@notes\C-@/' $'\C-[[37m\C-@src\C-@/'
  +-ftb-fzf:4> autoload -Uz zmathfunc
  +-ftb-fzf:5> zmathfunc
   +zmathfunc:12> functions -M min 1 -1 zsh_math_func_min
   +zmathfunc:23> functions -M max 1 -1 zsh_math_func_max
   +zmathfunc:33> functions -M sum 0 -1 zsh_math_func_sum
  +-ftb-fzf:7> local tmp_dir=/tmp/zsh-fzf-tab-azureuser
  +-ftb-fzf:8> [[ -d /tmp/zsh-fzf-tab-azureuser ]]
  +-ftb-fzf:10> typeset -p words
  +-ftb-fzf:10> local ftb_preview_init=$'\nzmodload zsh/mapfile\nlocal -a _ftb_compcap=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/compcap.47580]}")\nlocal -a _ftb_groups=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/groups.47580]}")\nlocal bs=$\'\\2\'\n# get description\nexport desc=${${"$(<{f})"%$\'\\0\'*}#*$\'\\0\'}\n# get ctxt for current completion\nlocal -A ctxt=("${(@0)${_ftb_compcap[(r)${(b)desc}$bs*]#*$bs}}")\n# get group\nif (( $+ctxt[group] )); then\n  export group=$_ftb_groups[$ctxt[group]]\nfi\n# get original word\nexport word=${(Q)ctxt[word]}\n# get real path if it is file\nif (( $+ctxt[realdir] )); then\n  export realpath=${ctxt[realdir]}$word\nfi\ntypeset -g -a words=( cd \'\' )\n'
  +-ftb-fzf:31> local binds=tab:down,btab:up,change:top,ctrl-space:toggle,bspace:backward-delete-char/eof,ctrl-h:backward-delete-char/eof
  +-ftb-fzf:32> local fzf_command fzf_flags fzf_preview debug_command tmp switch_group fzf_pad fzf_min_height
  +-ftb-fzf:33> local ret=0
  +-ftb-fzf:35> -ftb-zstyle -s fzf-command fzf_command
   +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: fzf-command fzf_command
  +-ftb-fzf:36> -ftb-zstyle -a fzf-bindings tmp
   +-ftb-zstyle:1> zstyle -a :fzf-tab:complete:cd: fzf-bindings tmp
  +-ftb-fzf:37> -ftb-zstyle -a fzf-flags fzf_flags
   +-ftb-zstyle:1> zstyle -a :fzf-tab:complete:cd: fzf-flags fzf_flags
  +-ftb-fzf:38> -ftb-zstyle -s fzf-preview fzf_preview
   +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: fzf-preview fzf_preview
  +-ftb-fzf:39> -ftb-zstyle -a switch-group switch_group
   +-ftb-zstyle:1> zstyle -a :fzf-tab:complete:cd: switch-group switch_group
  +-ftb-fzf:39> switch_group=( F1 F2 )
  +-ftb-fzf:40> -ftb-zstyle -s fzf-pad fzf_pad
   +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: fzf-pad fzf_pad
  +-ftb-fzf:40> fzf_pad=2
  +-ftb-fzf:41> -ftb-zstyle -s fzf-min-height fzf_min_height
   +-ftb-zstyle:1> zstyle -s :fzf-tab:complete:cd: fzf-min-height fzf_min_height
  +-ftb-fzf:41> fzf_min_height=0
  +-ftb-fzf:43> -ftb-zstyle -a debug-command debug_command
   +-ftb-zstyle:1> zstyle -a :fzf-tab:complete:cd: debug-command debug_command
  +-ftb-fzf:48> print -rl -- $'ignore\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@ignore' $'links\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@links' $'makefiles\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@makefiles' $'notes\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@notes' $'src\C-B<\C-@>\C-@realdir\C-@\C-@args\C-@-Q\C-A-s\C-A\C-A-W\C-A\C-A-M\C-Ar:|/=* r:|=*\C-A-p\C-A\C-A-f\C-@word\C-@src'
  +-ftb-fzf:49> print -rl --
  +-ftb-fzf:50> print -r -- $'\nzmodload zsh/mapfile\nlocal -a _ftb_compcap=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/compcap.47580]}")\nlocal -a _ftb_groups=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/groups.47580]}")\nlocal bs=$\'\\2\'\n# get description\nexport desc=${${"$(<$1)"%$\'\\0\'*}#*$\'\\0\'}\n# get ctxt for current completion\nlocal -A ctxt=("${(@0)${_ftb_compcap[(r)${(b)desc}$bs*]#*$bs}}")\n# get group\nif (( $+ctxt[group] )); then\n  export group=$_ftb_groups[$ctxt[group]]\nfi\n# get original word\nexport word=${(Q)ctxt[word]}\n# get real path if it is file\nif (( $+ctxt[realdir] )); then\n  export realpath=${ctxt[realdir]}$word\nfi\ntypeset -g -a words=( cd \'\' )\n'
  +-ftb-fzf:52> binds=tab:down,btab:up,change:top,ctrl-space:toggle,bspace:backward-delete-char/eof,ctrl-h:backward-delete-char/eof
  +-ftb-fzf:54> local -i header_lines=0
  +-ftb-fzf:55> local -i lines=7
  +-ftb-fzf:56> local reload_command='/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser'
  +-ftb-fzf:59> local use_tmux_popup=0
  +-ftb-fzf:60> [[ ftb-tmux-popup == ftb-tmux-popup ]]
  +-ftb-fzf:61> use_tmux_popup=1
  +-ftb-fzf:64> ((  ! use_tmux_popup  ))
  +-ftb-fzf:71> cat
  +-ftb-fzf:73> local dd=gdd
  +-ftb-fzf:74> ((  0 == 0  ))
  +-ftb-fzf:75> dd=dd
  +-ftb-fzf:77> ((  1 == 0  ))
  +-ftb-fzf:81> _ftb_query=  +-ftb-fzf:81> dd 'bs=1G' 'count=1' 'status=none' 'iflag=nonblock'
  +-ftb-fzf:81> _ftb_query=''
  +-ftb-fzf:81> true
   +zsh_math_func_max:1> local result=7
   +zsh_math_func_max:2> shift
   +zsh_math_func_max:3> local arg
   +zsh_math_func_max:4> arg=0
   +zsh_math_func_max:5> ((  0 > result  ))
   +zsh_math_func_max:7> ((  result  ))
   +zsh_math_func_min:1> local result=7
   +zsh_math_func_min:2> shift
   +zsh_math_func_min:3> local arg
   +zsh_math_func_min:4> arg=50
   +zsh_math_func_min:5> ((  50 < result  ))
   +zsh_math_func_min:7> ((  result  ))
  +-ftb-fzf:83> SHELL=zsh   +-ftb-fzf:83> ftb-tmux-popup --ansi '--bind=tab:down,btab:up,change:top,ctrl-space:toggle,bspace:backward-delete-char/eof,ctrl-h:backward-delete-char/eof' '--bind=F1:reload(/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser -1),F2:reload(/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser 1)' '--color=hl:188' --cycle '--delimiter=\x00' '--expect=/,alt-enter,' '--header-lines=0' '--height=7' '--layout=reverse' --multi '--nth=2,3' --print-query '--query=' '--tiebreak=begin' $'--preview=\nzmodload zsh/mapfile\nlocal -a _ftb_compcap=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/compcap.47580]}")\nlocal -a _ftb_groups=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/groups.47580]}")\nlocal bs=$\'\\2\'\n# get description\nexport desc=${${"$(<{f})"%$\'\\0\'*}#*$\'\\0\'}\n# get ctxt for current completion\nlocal -A ctxt=("${(@0)${_ftb_compcap[(r)${(b)desc}$bs*]#*$bs}}")\n# get group\nif (( $+ctxt[group] )); then\n  export group=$_ftb_groups[$ctxt[group]]\nfi\n# get original word\nexport word=${(Q)ctxt[word]}\n# get real path if it is file\nif (( $+ctxt[realdir] )); then\n  export realpath=${ctxt[realdir]}$word\nfi\ntypeset -g -a words=( cd \'\' )\nls -1 --color=always ${(Q)realpath}'
   +ftb-tmux-popup:8> emulate -L zsh -o extended_glob
   +ftb-tmux-popup:11> ((  ! 1  ))
   +ftb-tmux-popup:16> : /tmp/zsh-fzf-tab-azureuser
   +ftb-tmux-popup:19> ((  ! 1  ))
   +ftb-tmux-popup:24> local ret=0
   +ftb-tmux-popup:26> local -a fzf_opts=( --ansi '--bind=tab:down,btab:up,change:top,ctrl-space:toggle,bspace:backward-delete-char/eof,ctrl-h:backward-delete-char/eof' '--bind=F1:reload(/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser -1),F2:reload(/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser 1)' '--color=hl:188' --cycle '--delimiter=\x00' '--expect=/,alt-enter,' '--header-lines=0' '--height=7' '--layout=reverse' --multi '--nth=2,3' --print-query '--query=' '--tiebreak=begin' $'--preview=\nzmodload zsh/mapfile\nlocal -a _ftb_compcap=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/compcap.47580]}")\nlocal -a _ftb_groups=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/groups.47580]}")\nlocal bs=$\'\\2\'\n# get description\nexport desc=${${"$(<{f})"%$\'\\0\'*}#*$\'\\0\'}\n# get ctxt for current completion\nlocal -A ctxt=("${(@0)${_ftb_compcap[(r)${(b)desc}$bs*]#*$bs}}")\n# get group\nif (( $+ctxt[group] )); then\n  export group=$_ftb_groups[$ctxt[group]]\nfi\n# get original word\nexport word=${(Q)ctxt[word]}\n# get real path if it is file\nif (( $+ctxt[realdir] )); then\n  export realpath=${ctxt[realdir]}$word\nfi\ntypeset -g -a words=( cd \'\' )\nls -1 --color=always ${(Q)realpath}' )
   +ftb-tmux-popup:27> fzf_opts=( --ansi '--bind=tab:down,btab:up,change:top,ctrl-space:toggle,bspace:backward-delete-char/eof,ctrl-h:backward-delete-char/eof' '--bind=F1:reload(/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser -1),F2:reload(/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser 1)' '--color=hl:188' --cycle '--delimiter=\x00' '--expect=/,alt-enter,' '--header-lines=0' --multi '--nth=2,3' --print-query '--query=' '--tiebreak=begin' $'--preview=\nzmodload zsh/mapfile\nlocal -a _ftb_compcap=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/compcap.47580]}")\nlocal -a _ftb_groups=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/groups.47580]}")\nlocal bs=$\'\\2\'\n# get description\nexport desc=${${"$(<{f})"%$\'\\0\'*}#*$\'\\0\'}\n# get ctxt for current completion\nlocal -A ctxt=("${(@0)${_ftb_compcap[(r)${(b)desc}$bs*]#*$bs}}")\n# get group\nif (( $+ctxt[group] )); then\n  export group=$_ftb_groups[$ctxt[group]]\nfi\n# get original word\nexport word=${(Q)ctxt[word]}\n# get real path if it is file\nif (( $+ctxt[realdir] )); then\n  export realpath=${ctxt[realdir]}$word\nfi\ntypeset -g -a words=( cd \'\' )\nls -1 --color=always ${(Q)realpath}' )
   +ftb-tmux-popup:30> tmux display-message -p '#{pane_top} #{cursor_y} #{pane_left} #{cursor_x} #{window_height} #{window_width} #{status} #{status-position}'
   +ftb-tmux-popup:30> local -a tmp=( 0 19 159 24 76 316 on bottom )
   +ftb-tmux-popup:31> local cursor_y=19 cursor_x=183 window_height=76 window_width=316 window_top=0
   +ftb-tmux-popup:33> [[ bottom == top ]]
   +ftb-tmux-popup:39> ((  ! 1  ))
   +ftb-tmux-popup:44> local text REPLY comp_lines comp_length length popup_pad popup_min_size
   +ftb-tmux-popup:46> zstyle -a :fzf-tab:complete:cd: popup-pad popup_pad
   +ftb-tmux-popup:46> popup_pad=( 0 0 )
   +ftb-tmux-popup:47> zstyle -a :fzf-tab:complete:cd: popup-min-size popup_min_size
   +ftb-tmux-popup:47> popup_min_size=( 0 0 )
   +ftb-tmux-popup:50> comp_lines=5
   +ftb-tmux-popup:51> ((  comp_lines <= 500  ))
   +ftb-tmux-popup:52> comp_length=0
   +ftb-tmux-popup:53> line= ignore /
   +ftb-tmux-popup:54> length=9
   +ftb-tmux-popup:55> ((  length >= comp_length  ))
   +ftb-tmux-popup:55> comp_length=9
   +ftb-tmux-popup:53> line= links /
   +ftb-tmux-popup:54> length=8
   +ftb-tmux-popup:55> ((  length >= comp_length  ))
   +ftb-tmux-popup:53> line= makefiles /
   +ftb-tmux-popup:54> length=12
   +ftb-tmux-popup:55> ((  length >= comp_length  ))
   +ftb-tmux-popup:55> comp_length=12
   +ftb-tmux-popup:53> line= notes /
   +ftb-tmux-popup:54> length=8
   +ftb-tmux-popup:55> ((  length >= comp_length  ))
   +ftb-tmux-popup:53> line= src /
   +ftb-tmux-popup:54> length=6
   +ftb-tmux-popup:55> ((  length >= comp_length  ))
   +ftb-tmux-popup:61> comp_length=12
   +ftb-tmux-popup:63> local popup_height popup_y popup_width popup_x adjust_height
   +ftb-tmux-popup:66> ((  0 > 0  ))
   +ftb-tmux-popup:71> ((  cursor_y * 2 > window_height  ))
   +ftb-tmux-popup:80> popup_height=    +zsh_math_func_max:1> local result=9
    +zsh_math_func_max:2> shift
    +zsh_math_func_max:3> local arg
    +zsh_math_func_max:4> arg=0
    +zsh_math_func_max:5> ((  0 > result  ))
    +zsh_math_func_max:7> ((  result  ))
    +zsh_math_func_min:1> local result=9
    +zsh_math_func_min:2> shift
    +zsh_math_func_min:3> local arg
    +zsh_math_func_min:4> arg=56
    +zsh_math_func_min:5> ((  56 < result  ))
    +zsh_math_func_min:7> ((  result  ))
9
   +ftb-tmux-popup:81> popup_y=29
   +ftb-tmux-popup:82> fzf_opts+=( '--layout=reverse' )
   +ftb-tmux-popup:86> popup_width=    +zsh_math_func_max:1> local result=17
    +zsh_math_func_max:2> shift
    +zsh_math_func_max:3> local arg
    +zsh_math_func_max:4> arg=0
    +zsh_math_func_max:5> ((  0 > result  ))
    +zsh_math_func_max:7> ((  result  ))
    +zsh_math_func_min:1> local result=17
    +zsh_math_func_min:2> shift
    +zsh_math_func_min:3> local arg
    +zsh_math_func_min:4> arg=316
    +zsh_math_func_min:5> ((  316 < result  ))
    +zsh_math_func_min:7> ((  result  ))
17
   +ftb-tmux-popup:87> popup_x=183
   +ftb-tmux-popup:89> echo -E '/home/azureuser/.fzf/bin/fzf '\''--ansi'\' \''--bind=tab:down,btab:up,change:top,ctrl-space:toggle,bspace:backward-delete-char/eof,ctrl-h:backward-delete-char/eof'\' \''--bind=F1:reload(/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser -1),F2:reload(/bin/zsh -f /home/azureuser/.dotfiles/links/zsh/fzf/lib/ftb-switch-group 47580 0 /tmp/zsh-fzf-tab-azureuser 1)'\' \''--color=hl:188'\' \''--cycle'\' \''--delimiter=\x00'\' \''--expect=/,alt-enter,'\' \''--header-lines=0'\' \''--multi'\' \''--nth=2,3'\' \''--print-query'\' \''--query='\' \''--tiebreak=begin'\' $'\'--preview=\nzmodload zsh/mapfile\nlocal -a _ftb_compcap=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/compcap.47580]}")\nlocal -a _ftb_groups=("${(@f)mapfile[/tmp/zsh-fzf-tab-azureuser/groups.47580]}")\nlocal bs=$\'\\\'\'\\2\'\\\'\'\n# get description\nexport desc=${${"$(<{f})"%$\'\\\'\'\\0\'\\\'\'*}#*$\'\\\'\'\\0\'\\\'\'}\n# get ctxt for current completion\nlocal -A ctxt=("${(@0)${_ftb_compcap[(r)${(b)desc}$bs*]#*$bs}}")\n# get group\nif (( $+ctxt[group] )); then\n  export group=$_ftb_groups[$ctxt[group]]\nfi\n# get original word\nexport word=${(Q)ctxt[word]}\n# get real path if it is file\nif (( $+ctxt[realdir] )); then\n  export realpath=${ctxt[realdir]}$word\nfi\ntypeset -g -a words=( cd \'\\\'\'\'\\\'\' )\nls -1 --color=always ${(Q)realpath}\'' \''--layout=reverse'\'' < /tmp/zsh-fzf-tab-azureuser/completions.47580 > /tmp/zsh-fzf-tab-azureuser/result-47580'
   +ftb-tmux-popup:91> tmux popup -x 183 -y 29 -w 17 -h 9 -d /home/azureuser/.dotfiles -E '. /tmp/zsh-fzf-tab-azureuser/fzf-47580'
   +ftb-tmux-popup:93> ret=130
   +ftb-tmux-popup:94> echo -E ''
   +ftb-tmux-popup:96> rm /tmp/zsh-fzf-tab-azureuser/fzf-47580 /tmp/zsh-fzf-tab-azureuser/result-47580
   +ftb-tmux-popup:97> ((  1  ))
   +ftb-tmux-popup:99> return 130
  +-ftb-fzf:100> ret=130
  +-ftb-fzf:102> ((  ! use_tmux_popup  ))
  +-ftb-fzf:107> rm /tmp/zsh-fzf-tab-azureuser/compcap.47580 /tmp/zsh-fzf-tab-azureuser/completions.47580 /tmp/zsh-fzf-tab-azureuser/ftb_preview_init.47580 /tmp/zsh-fzf-tab-azureuser/groups.47580
  +-ftb-fzf:108> return 130
 +-ftb-complete:34> choices=( '' )
 +-ftb-complete:35> ret=130
 +-ftb-complete:39> [[ '' == alt-enter ]]
 +-ftb-complete:39> [[ -n '' ]]
 +-ftb-complete:55> choices[1]=( )
 +-ftb-complete:57> choices=( )
 +-ftb-complete:59> unset CTXT
 +-ftb-complete:63> [[ -n '' ]]
 +-ftb-complete:68> [[ -n '' ]]
 +-ftb-complete:71> choices[1]=( )
 +-ftb-complete:81> compstate[list]=''
 +-ftb-complete:82> compstate[insert]=''
 +-ftb-complete:83> ((  0 == 1  ))
 +-ftb-complete:86> ((  0 > 1  ))
 +-ftb-complete:89> return 130
+fzf-tab-debug:11> unsetopt xtrace
@ian-howell ian-howell added the bug Something isn't working label Feb 3, 2024
ian-howell added a commit to ian-howell/.dotfiles that referenced this issue Feb 3, 2024
Revisit this when Aloxaf/fzf-tab#410 is
addressed
Aloxaf added a commit that referenced this issue Feb 21, 2024
@Aloxaf
Copy link
Owner

Aloxaf commented Feb 21, 2024

please try #412

Aloxaf added a commit that referenced this issue Feb 21, 2024
* fix(ftb-tmux-popup): default shell

close #410

* fix: invoke fzf with env command
@ian-howell
Copy link
Author

#412 fixed it! Thanks @Aloxaf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants