From fece037f453006c83c45825e3649495180eb30c9 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Wed, 25 Mar 2026 13:22:16 +0800 Subject: Split Unix completion script entry into separate bash/zsh/fish versions --- scripts/deploy/completions/zsh.zsh | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 scripts/deploy/completions/zsh.zsh (limited to 'scripts/deploy/completions/zsh.zsh') diff --git a/scripts/deploy/completions/zsh.zsh b/scripts/deploy/completions/zsh.zsh new file mode 100644 index 0000000..dd1ff38 --- /dev/null +++ b/scripts/deploy/completions/zsh.zsh @@ -0,0 +1,48 @@ +#!/usr/bin/env zsh +_jvn_completion() { + local -a args + local suggestions + + local buffer="$BUFFER" + local cursor="$CURSOR" + local current_word="${words[$CURRENT]}" + local previous_word="" + local command_name="${words[1]}" + local word_index="$CURRENT" + + if [[ $CURRENT -gt 1 ]]; then + previous_word="${words[$((CURRENT-1))]}" + fi + + args=( + -f "${buffer//-/^}" + -C "$cursor" + -w "${current_word//-/^}" + -p "${previous_word//-/^}" + -c "$command_name" + -i "$word_index" + -a "${(@)words//-/^}" + ) + + suggestions=$(jvn_comp "${args[@]}" 2>/dev/null) + + if [[ $? -eq 0 ]] && [[ -n "$suggestions" ]]; then + local -a completions + completions=(${(f)suggestions}) + + if [[ "${completions[1]}" == "_file_" ]]; then + shift completions + _files + elif (( $+functions[_describe] )); then + _describe 'jvn commands' completions + else + compadd -a completions + fi + fi +} + +compdef _jvn_completion jvn + +if [[ $? -ne 0 ]]; then + compctl -K _jvn_completion jvn +fi -- cgit