2013-03-07 80 views
9

我想更改Scala REPL的提示。我發現我可以像下面這樣改變power-mode的提示。是否有可能以編程方式更改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!> 

現在,我想這樣做,在正常模式下或SBT控制檯initialCommands。有誰知道如何做到這一點?

+2

FYI http://www.scala-sbt.org/release/docs/Howto/interactive.html#prompt – 2013-03-07 10:59:39

+1

謝謝,但我想改變的是提示的Scala REPL,而不是sbt交互式shell的提示。 – tototoshi 2013-03-07 12:18:27

+0

@totoshi對不起,我誤解了你的問題在控制檯部分。 – 2013-03-07 12:35:39

回答

8

斯卡拉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 2013-03-07 14:27:11

+0

這段代碼在REPL啓動後工作良好,但當我將它添加到sbt console的initialCommands時無法編譯。在REPL完全啓動之前無法看到$ intp值。有另一種方法來訪問$ intp值嗎? – tototoshi 2013-03-07 14:59:36

+0

對於漂亮的代碼佈局+1! – 2013-03-07 16:16:53

相關問題