浏览代码

fix(kubectl): source completion instead of autoloading it

Marc Cornellà 2 年之前
父节点
当前提交
4f2d8b4d4c
共有 1 个文件被更改,包括 7 次插入7 次删除
  1. 7 7
      plugins/kubectl/kubectl.plugin.zsh

+ 7 - 7
plugins/kubectl/kubectl.plugin.zsh

@@ -8,15 +8,15 @@ if (( $+commands[kubectl] )); then
   command mkdir -p "$ZSH_CACHE_DIR/completions"
   (( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
 
-  # If the completion file doesn't exist yet, we need to autoload it and
-  # bind it to `kubectl`. Otherwise, compinit will have already done that.
+  # If the completion file does not exist, generate it and then source it
+  # Otherwise, source it and regenerate in the background
   if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then
-    typeset -g -A _comps
-    autoload -Uz _kubectl
-    _comps[kubectl]=_kubectl
+    kubectl completion zsh >| "$ZSH_CACHE_DIR/completions/_kubectl"
+    source "$ZSH_CACHE_DIR/completions/_kubectl"
+  else
+    source "$ZSH_CACHE_DIR/completions/_kubectl"
+    kubectl completion zsh >| "$ZSH_CACHE_DIR/completions/_kubectl" &|
   fi
-
-  kubectl completion zsh >! "$ZSH_CACHE_DIR/completions/_kubectl" &|
 fi
 
 # This command is used a LOT both below and in daily life