Como adicionar autocomplete para o caminho para a função de conclusão personalizada em zsh?

2

Eu criei minha própria função de conclusão do zsh para audtool . Aqui está uma amostra: -

#compdef audtool

_audtool() { 
    local state

_arguments \
    '1: :->csi'\

case $state in
csi)
    _arguments '1::(
    --current-song
    --current-song-filename 
    --help
    --playlist-addurl)'
;;
esac
}

_audtool "$@"

A função acima funciona bem, exceto por um pequeno erro, ou seja, após o preenchimento automático quando tento adicionar um caminho para um arquivo, o caminho não se expande. O que eu quero perguntar é por que não faz

audtool --playlist-addurl /h

expanda para

audtool --playlist-addurl /home/ 

depois de pressionar a tecla Tab .

Se alguém puder me ajudar com isso. Obrigada!

    
por Raphael 24.11.2016 / 07:41

1 resposta

1

Eu resolvi isso. Para adicionar um argumento de modo que exiba o caminho completo, tudo o que preciso fazer é adicionar estas linhas:

_arguments '*:filename:_files'

Então, a função final se parece com:

#compdef audtool

_audtool() { 
    local curcontext="$curcontext" state line
    typeset -A opt_args

    _arguments \
        '1: :->csi'\
        '2: :->file'

    case $state in
    csi)
        _arguments '1: :(
            --current-song
            --current-song-filename 
            --current-song-length
            --playlist-addurl)'
    ;;
    file)
        _arguments '*:filename:_files'
    ;;
    esac
}

_audtool "$@"
    
por 24.11.2016 / 10:02

Tags