diff options
Diffstat (limited to 'mingling_core/tmpls/comps/zsh.zsh')
| -rw-r--r-- | mingling_core/tmpls/comps/zsh.zsh | 17 |
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 |
