4

I've started using sbt on cygwin, but had a problem that my typing would not echo in console.

Following this advice, sbt now echos, e.g.:

$ sbt
[info] Loading project definition from D:\cygwin\home\Administrator\scala-2.11.2\coursera\example\project\project
[info] Loading project definition from D:\cygwin\home\Administrator\scala-2.11.2\coursera\example\project
[info] Set current project to progfun-example (in build file:/D:/cygwin/home/Administrator/scala-2.11.2/coursera/example/)
> ; eval System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal")
[info] ans: java.lang.String = jline.UnixTerminal
> console
[info] Starting scala interpreter...
[info] 
Welcome to Scala version 2.10.4 (Java HotSpot(TM) Client VM, Java 1.7.0_67).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import example.Lists._
import example.Lists._

scala> 

I tried to automate this fix by entering the line export SBT_OPTS="-Djline.terminal=scala.tools.jline.UnixTerminal" in ~/.sbtconfig, but I may not be using the correct syntax, as echoing doesn't seem to work.

How to get sbt console to use ; eval System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal") automatically?

4

1 に答える 1

2

sbt にはたくさんの発見があります...

> inspect initialize
[info] Setting: Unit = ()
[info] Description:
[info]  A convenience setting for performing side-effects during initialization.
[info] Provided by:
[info]  */*:initialize
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:153
[info] Delegates:
[info]  *:initialize
[info]  {.}/*:initialize
[info]  */*:initialize
[info] Related:
[info]  */*:initialize

初期化中に副作用を実行するためにinitialize呼び出されることを活用できます。以下を使用すると、実行を達成できます。~/.sbt/0.13/default.sbtSystem.setProperty

initialize := {
  System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal")
}

sbt シェルで実行eval sys.props("jline.terminal")してチェックアウトします。で正常に動作します(を呼び出すとconsoleドロップします)。evalsys.props

于 2014-09-22T16:35:38.050 に答える