Como posso acessar programaticamente a conclusão do zsh?

6

O zsh tem um sistema de conclusão, ativado pressionando a tecla:

llama@llama:~$ git st<Tab>
Completing main porcelain command
stash      -- stash away changes to dirty working directory
status     -- show working-tree status
Completing plumbing internal helper command
stripspace -- filter out empty lines

Tudo o que consegui descobrir é que isso vem do script /usr/share/zsh/functions/Completion/Unix/_git , em que _git é o comando de conclusão que está sendo chamado.

Supondo que eu saiba o nome da função de conclusão (por exemplo, _git ), como posso obter a saída do que aconteceria se eu inserisse uma determinada string e pressionasse a guia? Essencialmente, estou tentando pegar uma entrada do ex. git st e obtém a saída acima (programaticamente, a partir de um script).

Existem muitos outros perguntas existentes sobre este para bash, mas eu não encontrei nada explicando como conseguir isso com zsh.

    
por Doorknob 25.06.2016 / 16:43

1 resposta

2

Isso pode ser feito usando zsh-capture-completion . O arquivo README.md do repositório fornece vários exemplos:

capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'

Observe que o próprio pacote declara que é uma prova de conceito e, como tal, pode conter erros em sua execução.

    
por 25.01.2018 / 05:08