Як користуватися режимом "без вводу"?


11

З докстрингу:

Виконайте BODY лише до тих пір, поки не буде вкладеного вводу.
Якщо надходить вхід, це закінчує виконання BODY і while-no-inputповертає t. Покидання змушує повернути нуль. Якщо BODY закінчується, while-no-inputповертає незалежне значення BODY.

Якщо я правильно зрозумів, цей макрос дозволяє мені (намагатися) виконувати важкі обчислення без підвішування інтерфейсу. Це, звичайно, концепція, яка мені здається привабливою, але мені залишається цікаво, коли це корисно на практиці.

Здається, що обчислення може бути перервано в будь-який момент, не маючи інформації про те, де це сталося, і немає простого способу відновити його згодом. Що змушує мене думати, що це може бути не так корисно ...

  • Чи є рекомендований спосіб використання while-no-inputмакросу?
  • Чи є приклад використання цього макросу в дикій природі?

1
Схоже, icomplete +, плющ, штурвал - це декілька пакетів, що використовують його.
Каушал Моді

Відповіді:


10

Дійсно, немає підтримки для відновлення. Звичайно, орган while-no-inputможе робити регулярні "контрольно-пропускні пункти", щоб знати, з чого почати наступного разу.

Але первісна мотивація цієї функціональності була у випадках, коли обчислена інформація, ймовірно, є марною після наступної команди. Більш конкретно, він був введений для icomplete, так що обчислення набору кандидатів на завершення не заважає користувачеві вводити подальший текст (що, в свою чергу, вимагає перерахунку цього набору кандидатів на завершення).


4

Це надзвичайно корисно для поради-git-grep : я можу викликати git grepцілі 3 800 000 рядків сховища git Emacs після кожного ключового обведення. Ніяких зависань. І це нормально, щоб перерватись, потрібно лише перевірити це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.