所以我不确定这是否与 optparse-applicative 的脚本有问题,或者我是否使用错误。
在 optparse-applicative自述文件中,它指出程序可以通过自动完成脚本获得,并带有 zsh 选项。对于我的程序setup
:
$> 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,但我删除了它,这仍然发生在一个最低限度的配置中,只添加了一个小的 PATH 来获取setup
脚本)。
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
source <(setup --zsh-completion-script `which setup`)
我多次收到以下错误:
/dev/fd/11:compadd:24: can only be called from completion function
我已经运行compinit
了,完成脚本对我来说似乎是正确的,我环顾四周,但我似乎无法弄清楚为什么会发生这个错误......