OPTPASE应用程序zsh完成脚本期间compadd失败

OPTPASE应用程序zsh完成脚本期间compadd失败,zsh,zshrc,zsh-completion,optparse-applicative,Zsh,Zshrc,Zsh Completion,Optparse Applicative,所以我不确定这是否是optparse应用程序的脚本出了问题,还是我用错了 在optparse应用程序中,它声明程序可以使用自动完成脚本,并带有zsh选项。对于我的程序设置: $> setup --zsh-completion-script `which setup` 产出: #compdef setup local request local completions local word local index=$((CURRENT - 1)) request=(--bash-com

所以我不确定这是否是optparse应用程序的脚本出了问题,还是我用错了

在optparse应用程序中,它声明程序可以使用自动完成脚本,并带有zsh选项。对于我的程序
设置

$> setup --zsh-completion-script `which setup`
产出:

#compdef setup

local request
local completions
local word
local index=$((CURRENT - 1))

request=(--bash-completion-enriched --bash-completion-index $index)
for arg in ${words[@]}; do
  request=(${request[@]} --bash-completion-word $arg)
done

IFS=$'\n' completions=($( /Users/anrothan/.local/bin/setup "${request[@]}" ))

for word in $completions; do
  local -a parts

  # Split the line at a tab if there is one.
  IFS=$'\t' parts=($( echo $word ))

  if [[ -n $parts[2] ]]; then
     if [[ $word[1] == "-" ]]; then
       local desc=("$parts[1] ($parts[2])")
       compadd -d desc -- $parts[1]
     else
       local desc=($(print -f  "%-019s -- %s" $parts[1] $parts[2]))
       compadd -l -d desc -- $parts[1]
     fi
  else
    compadd -f -- $word
  fi
done
我在我的zshrc中运行以下内容(我使用了oh my zsh,但我删除了它,这仍然发生在一个简单的最小配置中,只有一个小的路径添加才能获得
设置
脚本)

自动加载-U+X compinit&&compinit
自动加载-U+X bashcompinit&&bashcompinit

source您不需要为zsh完成脚本编写源代码,只需要将它们添加到fpath参数中

因此,只需将
setup--zsh completion script$(哪个设置)
的输出放在
\u setup
$HOME/.config/zsh/completions
文件调用中即可

fpath=($HOME/.config/zsh/completions $fpath)
autoload -U compinit && compinit

看起来你的格式可能被弄乱了。您是否介意重新评估它,并确保内联代码引用标记有
反勾号
fpath=($HOME/.config/zsh/completions $fpath)
autoload -U compinit && compinit