Como posso acessar programaticamente a conclusão do zsh?

8

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

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, onde _gitestá sendo chamado o comando de conclusão.

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

Existem muitas outras perguntas existentes sobre isso para o bash, mas não encontrei nada explicando como conseguir isso com o zsh.

Maçaneta
fonte

Respostas:

2

Isso pode ser feito usando o zsh-capture-complete . 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 afirma que é uma prova de conceito e, como tal, pode conter erros em sua execução.

aliceinpalth
fonte