Dari docstring:
Jalankan BODY hanya selama tidak ada input yang tertunda.
Jika input tiba, itu mengakhiri eksekusi BODY, danwhile-no-input
mengembalikan t. Berhenti membuatnya kembali nol. Jika BODY selesai,while-no-input
kembalikan 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-input
makro? - Apakah ada contoh penggunaan makro ini di alam liar?
elisp
elisp-macros
Malabarba
sumber
sumber
Jawaban:
Memang, tidak ada dukungan untuk dimulainya kembali. Tentu saja, badan
while-no-input
dapat 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).sumber
Ini sangat berguna dalam counsel-git-grep : Saya dapat memanggil
git grep
seluruh 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.sumber