about summary refs log tree commit diff
path: root/Completion/Base/_brace_parameter
blob: 4a91dde7312926b15ec87c573a54c1cac810178a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#compdef -brace-parameter-

setopt localoptions extendedglob

local lp ls n q

if [[ "$SUFFIX" = *\}* ]]; then
  ISUFFIX="${SUFFIX#*\}}$ISUFFIX"
  SUFFIX="${SUFFIX%%\}*}"
  suf=()
elif [[ "$LBUFFER" = *\$\{[^}]#\$\{[^}]#$PREFIX ||
        "$compstate[insert]" = *menu* ]]; then
  suf=(-b '')
else
  suf=(-b ' ')
fi

lp="$LBUFFER[1,-${#PREFIX}-1]"
ls="$RBUFFER[${#SUFFIX}+1,-1]"
n=${(M)#ls##\"#}
q=${(M)lp%%\"#}

[[ n -gt 0 ]] && suf=''

_parameters "$suf[@]" -Qs "${q[1,-n-1]}" -r '-:?#%+=[/}'