summaryrefslogtreecommitdiff
path: root/scripts/deploy/completions/zsh.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/deploy/completions/zsh.zsh')
-rw-r--r--scripts/deploy/completions/zsh.zsh25
1 files changed, 22 insertions, 3 deletions
diff --git a/scripts/deploy/completions/zsh.zsh b/scripts/deploy/completions/zsh.zsh
index 2b9e7f9..99ecd09 100644
--- a/scripts/deploy/completions/zsh.zsh
+++ b/scripts/deploy/completions/zsh.zsh
@@ -34,10 +34,29 @@ _jvn_completion() {
if [[ "${completions[1]}" == "_file_" ]]; then
shift completions
_files
- elif (( $+functions[_describe] )); then
- _describe 'jvn commands' completions
else
- compadd -a completions
+ local -a parsed_completions
+ for item in "${completions[@]}"; do
+ if [[ "$item" =~ '^([^$]+)\$\((.+)\)$' ]]; then
+ parsed_completions+=("${match[1]}:${match[2]}")
+ else
+ parsed_completions+=("$item")
+ fi
+ done
+
+ if (( $+functions[_describe] )); then
+ _describe 'jvn commands' parsed_completions
+ else
+ local -a simple_completions
+ for item in "${parsed_completions[@]}"; do
+ if [[ "$item" =~ '^([^:]+):(.+)$' ]]; then
+ simple_completions+=("${match[1]}")
+ else
+ simple_completions+=("$item")
+ fi
+ done
+ compadd -a simple_completions
+ fi
fi
fi
}