Команда Wrap с опциями в функции рыбы

219
Eric Brandwein

Есть ли способ обернуть команду с параметрами в функции, чтобы отображались дополнения для этой команды с параметрами?

Например, я хочу быть в состоянии сделать это:

function remove --wraps='pikaur -R' pikaur -R $argv; end 

так что использование removeзавершится с установленными пакетами, но это не сработает.

1

1 ответ на вопрос

0
Rafik Salama

--wrapsАргумент принимает только голую команду. Вы можете использовать, --wraps='pikaur'но не --wraps='pikaur -R'.

Если требуемые завершения запускаются только при -Rзаданном флаге, использования --wrapsможет быть недостаточно. Вам нужно будет добавить свой собственный файл дополнений. К счастью, Fish делает это очень просто.

Есть ли команда, которая позволяет запрашивать или перечислять допустимые параметры? Я не знаком с этим pikaur, но, например, допустим, допустимые аргументы вашей функции были даны командой вроде pikaur lsили pikaur query, или, возможно, они являются подкаталогами /etc/pikaur. Если такая команда существует, вы можете создать файл дополнений для вашей функции (т. Е. Если ваша функция расположена ~/.config/fish/functions/remove.fish, а затем создать ~/.config/fish/completions/remove.fish) со следующим содержимым:

complete -c remove --no-files --arguments "(<query command>)" 

Примечание. Если вы хотите сослаться на существующие дополнения, вы можете просмотреть каталоги, перечисленные в echo $fish_complete_path.