首页 > 解决方案 > Emacs ENSIME - 增量编译

问题描述

我对 ENSIME 很陌生。我正在尝试通过使用 SBT 逐一编译单个文件来在 Emacs 中进行增量编译。假设我有一个文件a.scala,它在 file 中导入了一个类b.scala。如果我尝试仅a.scala使用C-c C-b C它进行编译,显然会抱怨b.scala尚未编译。如果我尝试编译b.scala仍然使用C-c C-b C它正确编译,但之后我仍然无法编译a.scala.

我尝试使用相同的编译b.scalaa.scala使用 IntelliJ 程序,它工作正常。我错过了什么?

标签: emacssbtensime

解决方案


浏览 ensime-sbt 的代码,看起来目标类路径不包含在输入类路径中。因此,虽然ensimeCompileOnly看到 JAR 依赖项,但它不会看到任何对等编译的类(我在 sbt 1.xx 中观察到这一点)。理想情况下,它会而且我认为没有充分的理由不这样做。

查看定义了 compileOnlyTask 的 CompatExtras.scala。另外,也许在 ensime-sbt 上打开一张票,并尝试打开一个讨论。如果实施的是理想的,那么可以更新文档以反映这一点。

请注意,Ensime 目前没有专门的维护者。我们中的一些人偶尔会潜伏以帮助贡献合并。解决这个问题的最大机会是积极主动。我将首先更新在 中找到的测试./src/sbt-test-0.13/sbt-ensime/compile-only/test以具有项目依赖项(您会注意到 Foo、Baz 和 FooTest 之间没有)。也许您可以让 FooTest 引用 Foo,然后观察测试失败,然后继续进行。


推荐阅读