Spesso mi ritrovo a iniziare un lungo processo in esecuzione dal REPL e quindi vorrei poter continuare a utilizzare REPL per altre attività mentre era in esecuzione. Posso usare la melma per lo sfondo del thread corrente o avviare un nuovo thread di controllo REPL? Anche l'avvio di un buffer REPL aggiuntivo andrebbe bene.È possibile eseguire lo sfondo di un thread in esecuzione nella Slime (Swank Emacs)
risposta
Edit:
Hm, in qualche modo riuscito a perdere il tag Clojure sulla vostra domanda. Sarei molto sorpreso se la soluzione sotto funzionasse per Clojure, poiché, come probabilmente sapete, la comunità Clojure purtroppo (almeno per quelli di noi che usano Clojure e CL) mantiene la propria versione di Slime. Non cancellerò la risposta, perché potrebbe essere utile per i programmatori CL che cercano questa funzionalità.
A meno che non ci sia una soluzione simile per Clojure, che consente a più REPLs multiplati su una singola presa, si potrebbe forse solo avvia un secondo server Swank a mano (dal buffer *inferior-lisp*
) e connettersi ad esso tramite slime-connect
come una soluzione. (Non può testare questa bancomat, da quando ho smesso di usare Slime con Clojure qualche tempo fa.)
Hai provato il slime-mrepl
contrib? Non ho effettivamente usato io stesso, ma un test rapido ha funzionato per me sotto CCL/Win/Emacs 24.
ho provato in questo modo: M-x slime
, immettere (sleep 10)
nel REPL, buffer di scambio, M-x slime-new-mrepl
.
Per favore perdonami per una risposta un po 'banale e non-melma; al rialzo funzionerà con qualsiasi REPL di clojure.
Quando so in anticipo sto iniziando un'attività a lungo termine dal REPL, quindi avvio il calcolo utilizzando future
e controllo con future-done?
prima di dereinviare.
Questo potrebbe non risponde alla tua domanda, ma potrebbe essere utile per rendersi conto che finché (slime-communication-style)
è :spawn
, le valutazioni effettuate utilizzando C-x C-e
deporre le uova sempre il proprio filo e può essere eseguito in parallelo a ciò che sta accadendo nel thread REPL. L'uscita (da println
ecc.) Verrà visualizzata nel buffer REPL.
ancora utile anche se non è direttamente la risposta a questo quiestion, grazie –