26763: fix problem on failed cd -s to relative path
[zsh.git] / Completion / Base / Core / _all_labels
blobe607d639d18f823b8c1f8544cabfc06133432cbf
1 #autoload
3 local __gopt __len __tmp __pre __suf __ret=1 __descr __spec __prev
5 if [[ "$1" = - ]]; then
6   __prev=-
7   shift
8 fi
10 __gopt=()
11 zparseopts -D -a __gopt 1 2 V J x
13 __tmp=${argv[(ib:4:)-]}
14 __len=$#
15 if [[ __tmp -lt __len ]]; then
16   __pre=$(( __tmp-1 ))
17   __suf=$__tmp
18 elif [[ __tmp -eq $# ]]; then
19   __pre=-2
20   __suf=$(( __len+1 ))
21 else
22   __pre=4
23   __suf=5
26 while comptags "-A$__prev" "$1" curtag __spec; do
27   (( $#funcstack > _tags_level )) && _comp_tags="${_comp_tags% * }"
28   _tags_level=$#funcstack
29   _comp_tags="$_comp_tags $__spec "
30   if [[ "$curtag" = *[^\\]:* ]]; then
31     zformat -f __descr "${curtag#*:}" "d:$3"
32     _description "$__gopt[@]" "${curtag%:*}" "$2" "$__descr"
33     curtag="${curtag%:*}"
35     "$4" "${(P@)2}" "${(@)argv[5,-1]}" && __ret=0
36   else
37     _description "$__gopt[@]" "$curtag" "$2" "$3"
39     "${(@)argv[4,__pre]}" "${(P@)2}" "${(@)argv[__suf,-1]}" && __ret=0
40   fi
41 done
43 return __ret