From 72f80ea51f25256d0c463c2f3dc3d8670cfc4634 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sat, 14 Mar 2026 22:12:30 +0800 Subject: Add shell completions for new jvn CLI --- scripts/deploy/completions/zsh.sh | 48 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 scripts/deploy/completions/zsh.sh (limited to 'scripts/deploy/completions/zsh.sh') diff --git a/scripts/deploy/completions/zsh.sh b/scripts/deploy/completions/zsh.sh new file mode 100644 index 0000000..2b2a96b --- /dev/null +++ b/scripts/deploy/completions/zsh.sh @@ -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