2013-03-07 13 views
9

Chcę zmienić znak zachęty Scala REPL. Okazało się, że mogę zmienić podpowiedź w trybie zasilania, tak jak poniżej.Czy można zmienić program Scala REPL programowo?

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!> 

Teraz chcę to zrobić w trybie normalnym lub initialCommands konsoli SBT. Czy ktoś wie, jak to zrobić?

+2

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

+1

Dzięki, ale to, co chcę zmienić jest szybka Scala REPL, a nie zachęta do interaktywnej powłoki sbt. – tototoshi

+0

@totoshi przepraszam, źle zrozumiałem twoje pytanie w części konsoli sbt. –

Odpowiedz

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! To działa! Dzięki. – tototoshi

+0

Ten kod działa dobrze po uruchomieniu REPL, ale nie można go skompilować, gdy dodaję go do initialCommands konsoli sbt. Wartość $ intp nie jest widoczna, zanim REPL w pełni się uruchomi. Czy istnieje inny sposób dostępu do wartości $ intp? – tototoshi

+0

+1 za miły układ kodu! –

Powiązane problemy