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 etwhile-no-input
renvoie t. Quitter le fait retourner nul. Si BODY se termine,while-no-input
renvoie 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-input
macro? - Existe-t-il des exemples d'utilisation de cette macro dans la nature?
elisp
elisp-macros
Malabarba
la source
la source
Réponses:
En effet, il n'y a aucun soutien à la reprise. Bien sûr, le corps
while-no-input
peut 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).la source
C'est super utile dans Counsel-git-grep : je suis capable d'appeler
git grep
les 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.la source