Rom*_*kov 12 emacs scala sbt ensime jrebel
我是Scala的新手,并使用emacs + ensime + sbt设置进行Scala开发.
这个设置非常好用,但是有一件事让我疯狂 - 无法自动编译/重新加载到sbt的Scala控制台.
我使用REPL很多,并希望能够从console命令启动REPL并使用REPL 测试我对scala类的更改,而不必关闭它并在每次进行更改时重新加载.
我来自Erlang环境,这种开发方式很容易使用Erlang但是SBT似乎很难.我安装了JRebel插件,但它似乎对我描述的情况不起作用.
有没有人能够做出类似的工作,并愿意分享配置步骤?
非常感谢提前.
有两件事可能sbt:
通过在命令前加上~(波浪号) 来导致由文件更改触发的项目源的自动重新编译。的console,或者console-quick,或者console-project命令可以前缀,太多,但你必须退出REPL,使重新编译发生(只需点击Ctrl+D并等待。)
触发控制台后立即自动执行 REPL 命令。它们可以定义为属性(例如 in build.sbt):
initialCommands in console := """
import some.library._
def someFun = println("Hello")
"""
Run Code Online (Sandbox Code Playgroud)
没有必要单独定义属性,consoleQuick因为它默认为 中定义的属性console,但如果您想使用该console-project命令,则必须单独定义它。
最后一点:记住在*.sbt文件中的每个属性之间留空行。它们是正确解析属性所必需的。在上面的例子中,中间没有空行,所以这意味着一切都进入了initialCommands属性(这就是我们想要的。)