From 13082bb159361d1c0807eb7e5577f4c670cb0f88 Mon Sep 17 00:00:00 2001 From: Till Backhaus Date: Fri, 16 Dec 2022 12:46:34 +0100 Subject: [PATCH] feat(watson): add completion (#10886) Co-authored-by: Carlo Sala --- plugins/watson/README.md | 9 +++++++++ plugins/watson/_watson | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 plugins/watson/README.md create mode 100644 plugins/watson/_watson diff --git a/plugins/watson/README.md b/plugins/watson/README.md new file mode 100644 index 000000000..ef734ec63 --- /dev/null +++ b/plugins/watson/README.md @@ -0,0 +1,9 @@ +# Watson + +This plugin provides completion for [Watson](https://tailordev.github.io/Watson/). + +To use it add `watson` to the plugins array in your zshrc file. + +```zsh +plugins=(... watson) +``` diff --git a/plugins/watson/_watson b/plugins/watson/_watson new file mode 100644 index 000000000..0f599bd66 --- /dev/null +++ b/plugins/watson/_watson @@ -0,0 +1,34 @@ +#compdef watson + +_watson_completion() { + local -a completions + local -a completions_with_descriptions + local -a response + (( ! $+commands[watson] )) && return 1 + + response=("${(@f)$(env COMP_WORDS="${words[*]}" COMP_CWORD=$((CURRENT-1)) _WATSON_COMPLETE=zsh_complete watson)}") + + for type key descr in ${response}; do + if [[ "$type" == "plain" ]]; then + if [[ "$descr" == "_" ]]; then + completions+=("$key") + else + completions_with_descriptions+=("$key":"$descr") + fi + elif [[ "$type" == "dir" ]]; then + _path_files -/ + elif [[ "$type" == "file" ]]; then + _path_files -f + fi + done + + if [ -n "$completions_with_descriptions" ]; then + _describe -V unsorted completions_with_descriptions -U + fi + + if [ -n "$completions" ]; then + compadd -U -V unsorted -a completions + fi +} + +compdef _watson_completion watson;