2014-09-22 17 views
3

我已經開始在cygwin,上使用sbt,但有一個問題,我的打字不會在console中回顯。如何設置系統屬性jline.terminal(在cygwin的mintty上打字時修復沒有迴音)?

現在在此之後advice,SBT回聲,如:

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

我試圖在~/.sbtconfig進入線export SBT_OPTS="-Djline.terminal=scala.tools.jline.UnixTerminal"自動此修復程序,但我可能沒有使用正確的語法,爲呼應不似乎工作。

如何獲得sbt console自動使用; eval System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal")

回答

1

有這麼多的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.sbt下面你可以實現執行System.setProperty

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

當SBT外殼執行eval sys.props("jline.terminal")檢查出來。它在console(在致電sys.props時丟失eval)正常工作。

+0

你能解釋你的建議是如何自動化的? (作爲一個斯卡拉諾貝爾)我所能理解的是我必須每次開始時都要輸入一些東西。我的理解錯了,我可以在某些sbt初始化文件中輸入你的建議,以便在sbt啓動時自動執行該動作? – boardrider 2014-09-22 19:16:41

+0

查看我的更新回答。打開'〜/ .sbt/0.13/default.sbt'並用'initialize'複製行。開始'sbt'。 – 2014-09-22 19:20:29

+0

你能解釋你的建議如何自動化? (作爲斯卡拉neubee)如果我理解正確的話,我需要建立在每個項目build.sbt,並把其中你建議的路線,即: $貓build.sbt 初始化:= { System.setProperty(「jline.terminal」,「scala.tools.jline.UnixTerminal」) } 這樣做會產生「[error] java.lang.IllegalArgumentException:java.lang.ClassNotFoundException:scala.tools.jline.UnixTerminal 「(並且沒有迴應打字) – boardrider 2014-09-23 07:42:11

相關問題