package argvpb import "fmt" // makes the autocomplete files for 'zsh' func MakeZshCompleteFiles(argname string) { fmt.Println("todo: zsh") } /* This script will be placed in a directory in your $fpath (e.g., ~/.zsh/completions/_my-app). #compdef my-app # This function will be called by Zsh to get the completions. _my_app_completions() { local -a suggestions # Here is the key part: # We execute our Go program with the hidden flag and capture its output. 9 # The `(f)` flag splits the output by line into an array. 10 suggestions=( ${(f)"$(my-app --_generate_completions)"} ) 11 12 # Pass the suggestions to the Zsh completion engine. 13 _describe 'command' suggestions 14 } 15 16 # Tell Zsh to call our function when completing for my-app 17 _my_app_completions "$@" */ // zsh: /* #compdef forge # Zsh completion function for the 'forge' command. _forge_completions() { local -a words local -i CURRENT # Zsh's equivalent of Bash's COMP_WORDS and COMP_CWORD words=("${(@)words}") CURRENT=$CURRENT # Generate the completion suggestions by calling the forge command. # The output is split into an array. local -a suggestions suggestions=("${(@f)$(forge --auto-complete "'${words[CURRENT]}'" "${words[@]}")}") # Pass the suggestions to the Zsh completion system. _describe 'completions' suggestions } # Register the function to be called for the 'forge' command. _forge_completions "$@" */