Pull to refresh

Comments 7

Версия под bash не сработает под zsh? Что-нибудь более универсальное возможно?
По поводу универсальности я как то, признаться не подумал. Те варианты, что я видел (в т.ч. и этот) работать не будут — но можно ограничиться переписыванием только самой функции, ответственной за дополнение.
Вообще‐то в zsh есть слой совместимости с bash, позволяющий использовать скрипты автодополнения bash из zsh. Но если у вас есть время, то лучше сделать автодополнение под zsh: возможности bash в этом плане довольно убоги, в том числе и из‐за readline.

Для включения слоя совместимости используйте autoload bashcompinit && bashcompinit.
Отлично! У меня всё руки не доходили написать туториал по автокомплитам. А там есть о чём писать.
А что это за программа с таким интересным набором флагов?
В 99% случаев автокомплит нужен только для аргументов, а автокомплит по файлам и директориям умеет сам readline:
_proga()
{
    local cur prev words cword
    _init_completion -s || return

    if [[ $cur == -* ]]; then
        COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
        [[ $COMPREPLY == *= ]] && compopt -o nospace
    fi
} &&
complete -F _proga proga


_parse_help [any_prog] — вызывает программу с аргументом --help. Программа должна уметь корректно обработать этот аргумент и вывести небольшой хэлп и описание аргументов (пример из LLST).

Sign up to leave a comment.

Articles