2012-01-20 3 views
10

mi piace fare il mio sviluppo Scala di Emacs, e di tanto in tanto, io uso il REPL di testare frammenti di codice o di caricare e testare po 'di codice che ho appena scritto. Sto usando Scala 2.9.1 e ho notato che quando apro REPL in un buffer di terminale, le cose sono sostanzialmente rotte. In particolare, non riesco a rimuovere alcun carattere dalla riga corrente e non posso spostare il cursore indietro sulla linea corrente. Questo è molto frustrante in quanto ogni volta che digito in errore qualcosa, devo ricominciare da capo il comando. Mi stavo chiedendo se qualcun altro sta avendo questo problema usando il REPL di Scala in Emacs e se qualcuno ha una soluzione potenziale.Scala REPL in Emacs

+0

Come stai iniziando la REPL all'interno di Emacs? – leedm777

+0

Apro un nuovo buffer con ansi-term. Quindi, in quel buffer di terminale, avvio REPL chiamando direttamente "scala" o usando la console di sbt. Ad ogni modo, questo problema sembra verificarsi. – nomad

+1

Potrebbe essere meglio aprire un nuovo buffer con shell e avviare scala o sbt dalla shell. – leedm777

risposta

8

trovo che rlwrap (readline involucro) gioca bene con emacs' ansi-termine e la Scala. Basta chiamare "rlwrap scala", e avrai il solito editing di bash line, oltre alla cronologia, che funziona correttamente. Come bonus, la tua cronologia coprirà più invocazioni di scala, quindi non perderai tutto ciò che hai digitato dopo essere uscito da Scala REPL.

Se rlwrap non funziona per voi, solo il passaggio alla linea-mode in ANSI-termine (Cx Cj per impostazione predefinita) vi permetterà di utilizzare la modifica emacs stile sulla linea, ma senza le sottigliezze della shell come la storia e completamento.

Ensime è già stato menzionato, quindi mi limiterò a seconda che, come una grande opzione se non ti dispiace il setup coinvolti.

+0

Grazie per il suggerimento. Questo sembra funzionare abbastanza bene per me. In effetti, mi piace l'approccio rlwrap rispetto all'approccio Ensime perché mi fornisce una cronologia dei comandi. Al momento, l'unica limitazione rimanente a invocare REPL via Emacs usando l'approccio rlwrap è l'incapacità di usare il tab-completion. – nomad

+0

Come è stato ottenuto il completamento tramite tabulazione in REPL tramite emacs? – CodeKingPlusPlus

7

È possibile installare ENSIME e follow instructions. Non so come invocare REPL, ma REPL ha chiamato da ENSIME works (permette di spostare il cursore indietro e cancellare i simboli, ho controllato).

+2

Grazie per il suggerimento. Sembra che invocare REPL da Ensime risolva questo problema, ma ne introduce altri. In particolare, il REPL invocato tramite Ensime non ha una cronologia dei comandi e non sembra in grado di completare i tab. – nomad

+1

+1 per ENSIME, ENSIME è cool –