aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/tmpls/comps/zsh.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_core/tmpls/comps/zsh.zsh')
-rw-r--r--mingling_core/tmpls/comps/zsh.zsh17
1 files changed, 10 insertions, 7 deletions
diff --git a/mingling_core/tmpls/comps/zsh.zsh b/mingling_core/tmpls/comps/zsh.zsh
index c1c18bb..7cf5f7b 100644
--- a/mingling_core/tmpls/comps/zsh.zsh
+++ b/mingling_core/tmpls/comps/zsh.zsh
@@ -38,9 +38,9 @@ _<<<bin_name>>>_completion() {
local -a parsed_completions
for item in "${completions[@]}"; do
if [[ "$item" =~ '^([^$]+)\$\((.+)\)$' ]]; then
- parsed_completions+=("${match[1]}:${match[2]}")
+ parsed_completions+=("${match[1]//:/\\:}:${match[2]}")
else
- parsed_completions+=("$item")
+ parsed_completions+=("${item//:/\\:}")
fi
done
@@ -48,8 +48,8 @@ _<<<bin_name>>>_completion() {
_describe '<<<bin_name>>> commands' parsed_completions
else
local -a simple_completions
- for item in "${parsed_completions[@]}"; do
- if [[ "$item" =~ '^([^:]+):(.+)$' ]]; then
+ for item in "${completions[@]}"; do
+ if [[ "$item" =~ '^([^$]+)\$\((.+)\)$' ]]; then
simple_completions+=("${match[1]}")
else
simple_completions+=("$item")
@@ -61,8 +61,11 @@ _<<<bin_name>>>_completion() {
fi
}
-compdef _<<<bin_name>>>_completion <<<bin_name>>>
-
-if [[ $? -ne 0 ]]; then
+if (( $+functions[compdef] )); then
+ compdef _<<<bin_name>>>_completion <<<bin_name>>>
+ if [[ $? -ne 0 ]]; then
+ compctl -K _<<<bin_name>>>_completion <<<bin_name>>>
+ fi
+else
compctl -K _<<<bin_name>>>_completion <<<bin_name>>>
fi