Come posso accedere a livello di codice al completamento di zsh?


8

zsh ha un sistema di completamento, attivato premendo 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

Tutto quello che sono riuscito a capire è che questo proviene dallo script /usr/share/zsh/functions/Completion/Unix/_git, dove _gitviene chiamato il comando di completamento.

Supponendo che conosco il nome della funzione di completamento (ad es. _git), Come potrei ottenere l'output di cosa succederebbe se inserissi una determinata stringa e premessi tab? In sostanza, sto cercando di dare un contributo di ex. git ste ottenere l'output sopra (a livello di codice, da uno script).

Ci sono molte altre domande esistenti su questo per bash, ma non ho trovato nulla che spieghi come ottenere questo risultato con zsh.


Risposte:


2

Questo può essere fatto usando zsh-capture-completamento . Il file README.md del repository fornisce diversi esempi:

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

Si noti che il pacchetto stesso afferma che è una prova di concetto e come tale può contenere errori nella sua esecuzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.