Так что я не совсем уверен, что это неправильно в скрипте optparse-Applicative или я его неправильно использую.
В optparse-Applicative readme говорится, что программы доступны с помощью сценариев автоматического завершения с опциями для 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
, и мне кажется, что скрипт завершения мне подходит, и я оглянулся, но не могу понять, почему происходит эта ошибка ...