2013-03-07 11 views
9

Voglio cambiare il prompt di Scala REPL. Ho scoperto che posso modificare il prompt in modalità di alimentazione come il seguente.È possibile modificare il prompt di Scala REPL in modo programmatico?

scala> 

scala> :power 
** Power User mode enabled - BEEP WHIR GYVE ** 
** :phase has been set to 'typer'.   ** 
** scala.tools.nsc._ has been imported  ** 
** global._, definitions._ also imported ** 
** Try :help, :vals, power.<tab>   ** 

scala> repl.setPrompt("\ncool prompt!> ") 

cool prompt!> 

Ora io voglio fare questo in modalità normale o initialCommands di console SBT. Qualcuno sa come fare questo?

+2

FYI http://www.scala-sbt.org/release/docs/Howto/interactive.html#prompt –

+1

Grazie, ma quello che voglio cambiare è il prompt di Scala REPL e non il prompt di shell interattiva sbt. – tototoshi

+0

@totoshi mi dispiace, ho frainteso la tua domanda nella parte della console sbt. –

risposta

8

Scala 2.10.0

$intp.asInstanceOf[scala.tools.nsc.interpreter.ILoop$ILoopInterpreter] 
    .getClass 
    .getDeclaredField("$outer").get($intp) 
    .asInstanceOf[scala.tools.nsc.interpreter.ILoop] 
    .setPrompt("\ncool prompt!> ") 
+0

Wow! Funziona! Grazie. – tototoshi

+0

Questo codice funziona bene dopo l'avvio di REPL, ma non può essere compilato quando lo aggiungo a initialCommands di sbt console. Il valore $ intp non può essere visto prima che REPL si avvii completamente. C'è un altro modo per accedere al valore $ intp? – tototoshi

+0

+1 per un bel layout del codice! –

Problemi correlati