Emacs ENSIME - 增量编译



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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新