Skip to content

Commit e1fb909

Browse files
committed
Update ZSH script in tests
1 parent 2b520ce commit e1fb909

File tree

1 file changed

+23
-42
lines changed

1 file changed

+23
-42
lines changed

example/cmd/_test/zsh.sh

Lines changed: 23 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
function _example_completion {
33
local words=${words[@]:0:$CURRENT}
44
local IFS=$'\n'
5-
5+
66
# shellcheck disable=SC2086,SC2154,SC2155
77
local completion_input
88
if echo ${words}"''" | xargs echo 2>/dev/null > /dev/null; then
@@ -12,60 +12,41 @@ function _example_completion {
1212
else
1313
completion_input="${words[1,-2]} ${words[-1]}\\"
1414
fi
15-
15+
1616
local lines
1717
lines="$(echo "${completion_input}" | CARAPACE_COMPLINE="${words}" CARAPACE_ZSH_HASH_DIRS="$(hash -d)" xargs example _carapace zsh)"
18-
18+
1919
local zstyle message data
2020
IFS=$'\001' read -r -d '' zstyle message data <<<"${lines}"
2121
# shellcheck disable=SC2154
2222
zstyle ":completion:${curcontext}:*" list-colors "${zstyle}"
2323
zstyle ":completion:${curcontext}:*" group-name ''
2424
[ -z "$message" ] || _message -r "${message}"
2525

26-
local block tag displays values suffixes
26+
local block tag suffix displays values
27+
local -A tags
2728
while IFS=$'\002' read -r -d $'\002' block; do
28-
IFS=$'\003' read -r -d '' tag displays values suffixes <<<"${block}"
29-
29+
IFS=$'\003' read -r -d '' tag suffix displays values <<<"${block}"
30+
3031
local -a displaysArr=("${(f@)displays}")
3132
local -a valuesArr=("${(f@)values}")
32-
local -a suffixesArr=("${(f@)suffixes}")
33-
34-
typeset -A grouped_values=()
35-
typeset -A grouped_displays=()
36-
37-
for i in {1..${#valuesArr[@]}}; do
38-
local suffix_key="${suffixesArr[$i]:-__NOSUFFIX__}"
39-
grouped_values[$suffix_key]+="${valuesArr[$i]}"$'\n'
40-
grouped_displays[$suffix_key]+="${displaysArr[$i]}"$'\n'
41-
done
42-
43-
local first_call=1
44-
for suffix_key in "${(@k)grouped_values}"; do
45-
local -a s_values=("${(f@)${grouped_values[$suffix_key]%$'\n'}}")
46-
local -a s_displays=("${(f@)${grouped_displays[$suffix_key]%$'\n'}}")
47-
48-
if [[ ${#s_values[@]} -eq 0 ]]; then
49-
continue
50-
fi
51-
52-
local -a describe_args
53-
if (( first_call )); then
54-
describe_args=(-t "${tag}" "${tag}")
55-
first_call=0
56-
else
57-
describe_args=(-t "${tag}" "")
58-
fi
5933

60-
local separators=" /,.':@"
61-
if [[ "$suffix_key" == "__NOSUFFIX__" ]]; then
62-
_describe "${describe_args[@]}" s_displays s_values -Q
63-
elif [[ "$separators" == *"$suffix_key"* ]]; then
64-
_describe "${describe_args[@]}" s_displays s_values -Q -S "$suffix_key" -r ' '
65-
else
66-
_describe "${describe_args[@]}" s_displays s_values -Q -S "$suffix_key" -r "0-9a-zA-Z"
67-
fi
68-
done
34+
local -a describe_args
35+
if [[ -z ${tags[$tag]} ]]; then
36+
describe_args=(-t "${tag}" "${tag}")
37+
tags[$tag]=1
38+
else
39+
describe_args=(-t "${tag}" "")
40+
fi
41+
42+
local separators=" /,.':@="
43+
if [[ "$suffix" == "" ]]; then
44+
_describe "${describe_args[@]}" displaysArr valuesArr -Q -S ' ' -r "${separators}0-9a-zA-Z"
45+
elif [[ "$separators" == *"$suffix"* ]]; then
46+
_describe "${describe_args[@]}" displaysArr valuesArr -Q -S "$suffix" -r ' '
47+
else
48+
_describe "${describe_args[@]}" displaysArr valuesArr -Q -S "$suffix" -r "0-9a-zA-Z"
49+
fi
6950
done <<<"${data}"
7051
}
7152
compquote '' 2>/dev/null && _example_completion

0 commit comments

Comments
 (0)