Bagaimana cara menggunakan selagi tidak ada input?

11

Dari docstring:

Jalankan BODY hanya selama tidak ada input yang tertunda.
Jika input tiba, itu mengakhiri eksekusi BODY, dan while-no-inputmengembalikan t. Berhenti membuatnya kembali nol. Jika BODY selesai, while-no-inputkembalikan nilai apa pun yang diproduksi BODY.

Jika saya mengerti dengan benar, makro ini memungkinkan saya untuk (mencoba) melakukan perhitungan yang berat tanpa menggantung antarmuka. Itu tentu konsep yang menurut saya menarik, tetapi saya bertanya-tanya kapan itu berguna dalam praktik.

Tampaknya perhitungan dapat terganggu setiap saat, tanpa informasi di mana itu terjadi, dan tidak ada cara mudah untuk melanjutkannya nanti. Yang membuat saya berpikir itu mungkin tidak berguna sama sekali ...

  • Apakah ada cara yang disarankan untuk menggunakan while-no-inputmakro?
  • Apakah ada contoh penggunaan makro ini di alam liar?
Malabarba
sumber
1
Sepertinya icomplete +, ivy, helm adalah beberapa dari paket yang menggunakannya.
Kaushal Modi

Jawaban:

10

Memang, tidak ada dukungan untuk dimulainya kembali. Tentu saja, badan while-no-inputdapat melakukan "pos pemeriksaan" secara teratur untuk mengetahui di mana harus memulai waktu berikutnya.

Tetapi motivasi asli untuk fungsi ini adalah dalam kasus di mana informasi yang dikomputasi kemungkinan tidak berguna setelah perintah berikutnya. Lebih khusus, itu diperkenalkan untuk icomplete, sehingga perhitungan dari set kandidat penyelesaian tidak mencegah pengguna dari mengetik teks lebih lanjut (yang pada gilirannya memerlukan perhitungan ulang dari set kandidat penyelesaian itu pula).

Stefan
sumber
4

Ini sangat berguna dalam counsel-git-grep : Saya dapat memanggil git grepseluruh baris 3.800.000 repositori git Emacs setelah setiap stroke kunci. Tidak ada hangup. Dan tidak apa-apa untuk terganggu, Anda hanya perlu memeriksa itu.

abo-abo
sumber