Aus der Dokumentationszeichenfolge:
Führen Sie BODY nur aus, solange keine Eingabe ansteht.
Wenn eine Eingabe eintrifft, wird die Ausführung von BODY beendet undwhile-no-input
t zurückgegeben. Wenn Sie aufhören, wird Null zurückgegeben. Wenn BODY beendet ist,while-no-input
wird der von BODY erzeugte Wert zurückgegeben.
Wenn ich das richtig verstehe, kann ich mit diesem Makro eine umfangreiche Berechnung durchführen (versuchen), ohne die Schnittstelle aufzuhängen. Das ist sicherlich ein Konzept, das ich attraktiv finde, aber ich frage mich, wann das in der Praxis nützlich ist.
Es scheint, dass die Berechnung jederzeit unterbrochen werden kann, ohne Informationen darüber, wo dies geschehen ist, und ohne einfache Möglichkeit, sie später wieder aufzunehmen. Was mich denken lässt, dass es vielleicht doch nicht so nützlich ist ...
- Gibt es eine empfohlene Verwendung des
while-no-input
Makros? - Gibt es ein Beispiel für die Verwendung dieses Makros in freier Wildbahn?
quelle
Antworten:
In der Tat gibt es keine Unterstützung für die Wiederaufnahme. Natürlich kann der Körper von
while-no-input
regelmäßig "Checkpoints" durchführen, um zu wissen, wo er das nächste Mal anfangen soll.Die ursprüngliche Motivation für diese Funktionalität war jedoch in Fällen, in denen die berechneten Informationen nach dem nächsten Befehl wahrscheinlich unbrauchbar sind. Insbesondere wurde es für eingeführt
icomplete
, damit die Berechnung des Satzes von Abschlusskandidaten den Benutzer nicht daran hindert, weiteren Text einzugeben (was wiederum ohnehin eine Neuberechnung dieses Satzes von Abschlusskandidaten erfordert).quelle
Es ist sehr nützlich in Counsel-Git-Grep : Ich kann nach jedem Tastendruck
git grep
die gesamten 3.800.000 Zeilen des Emacs-Git-Repositorys aufrufen . Keine Probleme. Und es ist in Ordnung, unterbrochen zu werden, das müssen Sie nur überprüfen.quelle