Как я могу реализовать зависимое завершение в zsh? - PullRequest
0 голосов
/ 07 января 2020

Я реализую завершение для скрипта, который имеет некоторые флаги, --flag-one и --flag-two

--flag-two должны появляться только в дополнениях после того, как --flag-one было указано. И --flag-two принимает целочисленный аргумент (который должен быть автоматически завершен). Например:

my_script --[TAB]

Если только предоставить --flag-one в качестве кандидата на завершение.

my_script --flag-one --[TAB]

Если только предоставить --flag-two в качестве кандидата на завершение.

my_script --flag-one --flag-two [TAB]

Должен предоставить только несколько целых чисел в качестве кандидатов на завершение.

Моя наивная идея выглядит следующим образом:

#compdef _my_script my_script

_my_script() {
    local state

    _arguments '--flag-one: :->flag_one'

    case $state in
        flag_one) _arguments '--flag-two: :->flag_two' ;;
        flag_two) _alternative 'args:custom arg:(5 6 7)' ;;
    esac
}

Это работает для предоставления двух флагов в правильном порядке, но табуляция после --flag-two просто возвращается без аргументов.

...