Browse Source

feat(watson): add completion (#10886)

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
Till Backhaus 1 year ago
parent
commit
13082bb159
2 changed files with 43 additions and 0 deletions
  1. 9 0
      plugins/watson/README.md
  2. 34 0
      plugins/watson/_watson

+ 9 - 0
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)
+```

+ 34 - 0
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;