Como posso acessar programaticamente a conclusão do zsh?

Como posso acessar programaticamente a conclusão do zsh?

zsh possui um sistema de conclusão, ativado pressionando 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 poderia obter a saída do que aconteceria se eu inserisse uma determinada string e pressionasse tab? Essencialmente, estou tentando obter uma opinião de ex. git ste obtenha a saída acima (programaticamente, a partir de um script).

muitosoutroexistirquestõessobreesseparabash, mas não encontrei nada explicando como conseguir isso com o zsh.

Responder1

Isso pode ser feito usandoconclusão de captura zsh. 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.

informação relacionada