Comment accéder par programmation à l'achèvement de zsh?

8

zsh dispose d'un système de complétion, activé en appuyant sur 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

Tout ce que j'ai pu comprendre, c'est que cela vient du script /usr/share/zsh/functions/Completion/Unix/_git, où _gitest appelée la commande d'achèvement.

En supposant que je connaisse le nom de la fonction d'achèvement (par exemple _git), comment puis-je obtenir la sortie de ce qui se passerait si j'entrais une certaine chaîne et appuyais sur tab? Essentiellement, j'essaye de prendre une entrée d'ex. git stet obtenez la sortie ci-dessus (par programme, à partir d'un script).

Il y a beaucoup d' autres existants des questions sur ce pour bash, mais je n'ai rien trouvé qui explique comment atteindre cet objectif avec zsh.

Poignée de porte
la source

Réponses:

2

Cela peut être fait en utilisant zsh-capture-complétement . Le fichier README.md du référentiel fournit plusieurs exemples:

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

Notez que le package lui-même indique qu'il s'agit d'une preuve de concept et, en tant que tel, peut contenir des erreurs dans son exécution.

aliceinpalth
la source