Comment utiliser sans entrée?

11

De la docstring:

N'exécutez BODY que tant qu'aucune entrée n'est en attente.
Si l'entrée arrive, cela met fin à l'exécution de BODY et while-no-inputrenvoie t. Quitter le fait retourner nul. Si BODY se termine, while-no-inputrenvoie la valeur produite par BODY.

Si je comprends bien, cette macro me permet (d'essayer) d'effectuer un calcul lourd sans suspendre l'interface. C'est certainement un concept que je trouve attrayant, mais je me demande quand est-ce utile dans la pratique.

Il semble que le calcul puisse être interrompu à tout moment, sans aucune information sur l'endroit où cela s'est produit, et aucun moyen facile de le reprendre plus tard. Ce qui me fait penser que ce n'est peut-être pas si utile après tout ...

  • Existe-t-il un moyen recommandé d'utiliser la while-no-inputmacro?
  • Existe-t-il des exemples d'utilisation de cette macro dans la nature?
Malabarba
la source
1
On dirait que icomplete +, ivy, helm sont quelques-uns des paquets qui l'utilisent.
Kaushal Modi

Réponses:

10

En effet, il n'y a aucun soutien à la reprise. Bien sûr, le corps while-no-inputpeut faire des «points de contrôle» réguliers afin de savoir par où commencer la prochaine fois.

Mais la motivation d'origine de cette fonctionnalité était dans les cas où les informations calculées sont probablement inutiles après la commande suivante. Plus précisément, il a été introduit pour icomplete, afin que le calcul de l'ensemble des candidats à l'achèvement n'empêche pas l'utilisateur de taper plus de texte (ce qui nécessite à son tour un recalcul de cet ensemble de candidats à l'achèvement).

Stefan
la source
4

C'est super utile dans Counsel-git-grep : je suis capable d'appeler git greples 3 800 000 lignes du référentiel Emacs git après chaque coup de clé. Aucun raccrochage. Et c'est OK d'être interrompu, il vous suffit de vérifier cela.

abo-abo
la source