2013-03-07 2 views
9

Я хочу изменить приглашение Scala REPL. Я узнал, что могу изменить приглашение в режиме питания, как показано ниже.Возможно ли изменить подсказку Scala REPL программно?

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

Теперь я хочу сделать это в нормальном режиме или initialCommands из SBT консоли. Кто-нибудь знает как это сделать?

+2

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

+1

Спасибо, но то, что я хочу изменить это приглашение Scala REPL, а не приглашение интерактивной оболочки sbt. – tototoshi

+0

@totoshi извините, я неправильно понял ваш вопрос в части консоли sbt. –

ответ

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

Вау! Оно работает! Благодарю. – tototoshi

+0

Этот код хорошо работает после запуска REPL, но не может быть скомпилирован, когда я добавляю его в initialCommands из sbt-консоли. Значение $ intp невозможно увидеть, пока REPL полностью не запустится. Есть ли другой способ получить доступ к значению $ intp? – tototoshi

+0

+1 для красивого кода! –

Смежные вопросы