浏览代码

feat(watson): add completion (#10886)

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
Till Backhaus 1 年之前
父节点
当前提交
13082bb159
共有 2 个文件被更改,包括 43 次插入0 次删除
  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;