Bagaimana saya bisa mengakses penyelesaian zsh secara terprogram?

8

zsh memiliki sistem penyelesaian, diaktifkan dengan menekan 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

Yang saya tahu adalah bahwa ini berasal dari skrip /usr/share/zsh/functions/Completion/Unix/_git, di mana _gitperintah penyelesaian dipanggil.

Dengan asumsi saya tahu nama fungsi penyelesaian (misalnya _git), bagaimana saya bisa mendapatkan output dari apa yang akan terjadi jika saya memasukkan string tertentu dan menekan tab? Pada dasarnya, saya mencoba untuk mengambil input dari mantan. git stdan dapatkan output di atas (secara terprogram, dari skrip).

Ada banyak pertanyaan lain yang ada tentang ini untuk bash, tapi saya belum menemukan apa pun yang menjelaskan bagaimana mencapainya dengan zsh.

Gagang pintu
sumber

Jawaban:

2

Ini bisa dilakukan dengan menggunakan zsh-capture-completion . File README.md repositori menyediakan beberapa contoh:

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

Perhatikan bahwa paket itu sendiri menyatakan bahwa itu adalah bukti konsep, dan karena itu mungkin mengandung kesalahan dalam pelaksanaannya.

aliceinpalth
sumber