如何在'sbt console'中拥有彩色REPL?

12

从Scala 2.11.4开始,您可以通过调用scala -Dscala.color来获得彩色的REPL。我的问题是:当我在我的SBT项目中调用sbt console时,是否可以获得相同的彩色REPL?


尝试使用Dotty中的dotr - http://dotty.epfl.ch/ - udeshike
4个回答

13
将此内容放入您的 ~/.sbt/0.13/user.sbt 文件中:
initialize ~= { _ =>
  val ansi = System.getProperty("sbt.log.noformat", "false") != "true"
  if (ansi) System.setProperty("scala.color", "true")
}

这对我很有效!尽管解决方案并不是非常优雅,但我喜欢它,因为您可以将其添加到 repo 中,然后 fork repo 的每个人都将享受到彩色的 REPL。 - marios
OSX/Homebrew: 最新的sbt(0.13.12)默认仍然只使用Scala 2.10.6,因此只需在initialize ~= ...之前添加scalaVersion := "2.11.8"作为第一行即可获得颜色支持。 - Rahel Lüthy

7
同样地:
sbt -Dscala.color console

如果您只是调用sbt -Dscala.color,然后稍后进入console,这也可以起作用。


1
谢谢!我尝试了一下,但是出现了“警告:无效的系统属性'scala.color'”。你尝试这个方法时使用的SBT和Scala版本是什么? - marios
我有sbt 0.13.9和Scala 2.11.7。它似乎也可以与旧版本一起使用:sbt -sbt-version 0.13.5 -scala-version 2.11.4 -Dscala.color(这些标志来自paulp / sbt-extras,尽管我的初始sbt是原始版本)。 - knutwalker
1
对我来说仍然不起作用... :/。我使用的是sbt版本0.13.8和scala 2.11.4。 - marios
是哪个系统发出了警告,Scala、JVM、sbt 还是它的启动脚本?你可能有一个自定义的、可能过时的启动器,比如早期的 Homebrew 安装?你可以检查一下是否能够使用 paulp/sbt-extras。 - knutwalker
我认为你有所发现。我正在使用Mac,使用相对较旧的SBT安装程序,并使用端口(而不是homebrew)。 - marios
非常感谢@knutwalker!我认为你的解决方案对于一些正确配置的SBT安装来说是可行的,但并非所有情况都适用。我更喜欢你的简单解决方案,但是@Twisleton的解决方案也起作用了(尽管我不太喜欢它的优雅程度)。 - marios

3

从Scala 2.12.2开始,REPL默认带有颜色;因此,您只需要在~/.sbt/user.sbt文件中设置scalaVersion属性:

scalaVersion := "2.12.2"

太好了!感谢您的评论!我点赞了,因为它对于2.12.2用户非常有用。然而,我们中的许多人仍然使用2.11版本,所以我暂时将原始答案保留为正式接受的答案。 - marios
1
我为那些使用sbt控制台的新用户和未来用户添加了这个答案,以防他们找到这个线程。 - 7kemZmani

1
创建一个名为~/.sbt/0.13/colour.sbt的文件,并添加以下内容:
initialize ~= (_ => if (ConsoleLogger.formatEnabled) sys.props("scala.color") = "true")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接