Intereting Posts
Сервер Apache: проблема разрешения и символической ссылки Добавление дополнительных привязок к Emacs в редактор строк ZSH (ZLE) Количество отслеживаемых данных и файл устройства обмениваются Ubuntu 15.10 Название сетевых интерфейсов Две версии SSH Как читать первую и последнюю строку от выхода cat? Вход в стандартный вывод (Кабели Ethernet): Может ли прямой провод работать (слегка), где необходим кроссовер (без MDX)? Измельчение всего: файлы / папки и соответствующие имена файлов Как проверить, какой GPU активен Невозможно использовать find -print в AWK Отображать заголовки с помощью vimdiff или vim -d Вручную добавление статического ip не будет разрешено через некоторое время Как я могу защитить свой компьютер, когда единственный способ доступа к Интернету – это скомпрометированное интернет-соединение? svn: добавить все мои новые файлы и каталоги

Автозаполнение флагов после подкоманды

Существует программа, которую я назвал luarocks которая содержит список подкоманд, таких как build , install и make , с флагами после них. В конце команда должна понравиться следующим:

 # luarocks install varargs --server=https://example.com/` $ luarocks make ./varargs.rockspec $ luarocks pack ./varargs.rockspec 

Команда _arguments автозаполнения zsh может принимать список флагов типа -s и --long и создавать описания для них, например:

 _arguments "-s[short flag]" "--long[long flag]" 

Однако это не сработает, если в команду включена подкоманда типа install , поэтому, когда вы вводите luarocks install <tab> , список флажков отсутствует. Как я могу позволить _argument игнорировать любые подкоманды, которые не включены в список флагов?

Для справки, вот мой текущий код:

 #compdef luarocks local curcontext="$curcontext" state line typeset -A opt_args local -a lr_commands lr_commands=( build config doc download help install lint list make new_version pack path purge remove search show unpack upload write_rockspec ) local -a generic_args generic_args=( "--long[long]" "-s[short]" ) _arguments \ '1: :->cmd'\ '*: :->args' case $state in cmd) _arguments "1:Commands:($lr_commands)" ;; args) _arguments $generic_args ;; esac