Come usare while-no-input?


11

Dalla dotstring:

Esegui BODY solo finché non ci sono input in sospeso.
Se arriva l'input, questo termina l'esecuzione di BODY e while-no-inputrestituisce t. Smettere lo restituisce zero. Se BODY termina, while-no-inputrestituisce qualsiasi valore prodotto da BODY.

Se ho capito bene, questa macro mi permette di (tentare di) eseguire un calcolo pesante senza appendere l'interfaccia. Questo è certamente un concetto che trovo attraente, ma mi chiedo quando sia utile nella pratica.

Sembra che il calcolo possa essere interrotto in qualsiasi momento, senza informazioni su dove sia successo e senza un modo semplice per riprenderlo in seguito. Il che mi fa pensare che potrebbe non essere così utile dopo tutto ...

  • Esiste un modo consigliato di utilizzare la while-no-inputmacro?
  • Ci sono esempi di utilizzo di questa macro in natura?

1
Sembra icomplete +, edera, timone sono alcuni dei pacchetti che lo utilizzano.
Kaushal Modi,

Risposte:


10

In effetti, non esiste alcun supporto per la ripresa. Naturalmente, il corpo di while-no-inputpuò fare "checkpoint" regolari in modo da sapere da dove iniziare la prossima volta.

Ma la motivazione originale per questa funzionalità era nei casi in cui le informazioni calcolate sono probabilmente inutili dopo il comando successivo. Più specificamente, è stato introdotto icomplete, in modo che il calcolo dell'insieme dei candidati al completamento non impedisca all'utente di digitare ulteriore testo (che a sua volta richiede comunque il calcolo di tale insieme di candidati al completamento).


4

È super utile in counsel-git-grep : sono in grado di chiamare git greptutte le 3.800.000 di righe del repository git di Emacs dopo ogni pressione del tasto. Nessun problema. Ed è OK per essere interrotto, devi solo verificarlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.