ошибка compadd во время optparse-аппликативного сценария завершения zsh - PullRequest
0 голосов
/ 12 января 2019

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

...