是否有Scala REPL / SBT控制台的配置文件?

时间:2015-10-26 05:13:30

标签: scala sbt

我一直试图找到某种点文件来放入Scala REPL设置和自定义函数。

特别是我有兴趣传递像-Dscala.color这样的标志(启用语法高亮),以及覆盖结果字符串截断等设置:

scala> :power
scala> vals.isettings.maxPrintString = 10000

将这些设置应用于简单的Scala REPL会话以及sbt控制台会话会很不错。

Scala是否存在这样的中央配置位置?

4 个答案:

答案 0 :(得分:4)

穷人的解决方案:为自己设置一个alias

alias myScala='scala -Dscala.repl.axPrintString = 10000' 

答案 1 :(得分:4)

也许您可以使用现代化的Scala REPL:

https://lihaoyi.github.io/Ammonite/

答案 2 :(得分:2)

如上所述here ~/.sbt/0.13/global.sbt是sbt的全局配置文件。您可以在此处更改全局设置,这可能不会影响REPL但应该与SBT控制台一起使用

答案 3 :(得分:1)

你主要询问有关属性设置的问题,考虑加载一个定义文件,这有点超出了 - 并且对Windows没什么帮助 - 但我想我会分享以防它有用:

我使用保存为~/bin/scala的包装器脚本来设置配置属性并加载一些实用程序功能:

#!/bin/sh

# The scala REPL doesn't have any config file, so this wrapper serves to set
# some property values and load an init file of utilities when run without
# arguments to enter REPL mode.
#
# If there are arguments, just assume we're running a .scala file in script
# mode, a class or jar, etc., and execute normally.

SCALA=${SCALA:-/usr/local/bin/scala}

if [ "$#" -eq 0 ] && [ -r ~/.config/scala/replinit.scala ]; then
    exec "$SCALA" -i ~/.config/scala/replinit.scala -Dscala.color
else
    exec "$SCALA" "$@"
fi

如果您有时使用Ammonite REPL,正如另一个答案所示,load可以~/.ammonite/predef.scala分享实用程序定义:

try load.exec(ammonite.ops.home/".config"/'scala/"replinit.scala")
catch { case _: Exception => println("=== replrc not loaded! ===") }

我不确定自动加载sbt console的初始化文件的方法,但是Seth Tisue关于initialize设置的评论对属性有帮助,但使用的是<{1}}值的:load命令似乎不起作用。