2011-12-12 11 views
14

Ogni volta che valuto un valore elevato che stampa una grande struttura dati nel repl, la melma diventa molto lenta da allora in poi. Digitando qualcosa successivamente nel repl compare un ritardo nei valori che appaiono nel repl e un'ulteriore valutazione di qualsiasi codice del clojure è lento. L'unica cosa che sembra funzionare è il riavvio del repl che non sembra una soluzione.Come interrompere la valutazione di un grande risultato di repl causando la melma con clojure swank a rallentare?

Un semplice esempio di una grande infrastruttura di dati è lo slurping di un file e quindi la stampa (potrebbe anche essere un file piuttosto piccolo).

Questo sembra accadere sia in Win7 che in Ubuntu.

Qualsiasi idea su come fermare questo e perché sta accadendo sarebbe apprezzata!

+0

Interessante - Ho osservato lo stesso comportamento usando ClojureBlox su Windows e stavo anche toccando le dita dei piedi che desideravano un modo per interrompere mentre era in esecuzione. Ecco il codice da riprodurre: https://gist.github.com/1454300 - elabora la sceneggiatura di Pulp Fiction. – noahlz

risposta

8

Quando ho incontrato questo problema (che capita spesso), ho semplicemente cancellato il buffer di repl. Puoi farlo con C-c M-o, o usando "Clear Buffer" sotto la voce di menu "REPL". Questo non riavvia il repl, e la cronologia dei comandi e simili non sono interessati.

+0

Non so perché funzioni, ma funziona anche per me. – georgek

+0

Il motivo per cui funziona è che questo non è un problema di sostituzione, ma un problema con la dimensione del buffer in Emacs. Emacs non è bravo a gestire buffer eccessivamente grandi. – vedang

+0

Dopo averlo menzionato l'ho verificato, il tuo diritto, una tecnica di cancellazione meno storica è Cc Co, che svuota l'ultima voce ... Lascerò la domanda aperta ancora per un po 'per vedere se qualcuno ha una buona ragione per questo o una soluzione. Non riesco a immaginare che "Emacs non possa gestire molto testo" sia una buona scusa per un editor di testo ... – toofarsideways

2

Un modo per controllare la quantità di informazioni stampate dal REPL proviene da Clojure stessa utilizzando le variabili *print-length* e *print-level*.

Problemi correlati