我对ENSIME很陌生。我试图通过使用SBT逐个编译单个文件,在Emacs中进行增量编译。假设我有一个文件a.scala,它在b.scala文件中导入一个类。如果我尝试只使用a.scala编译C-c C-b C,显然会出现抱怨,因为b.scala没有编译。如果我仍然使用b.scala来编译C-c C-b C,它就会正确编译,但在那之后我仍然不能编译a.scala。
我尝试使用使用b.scala和a.scala使用IntelliJ编译的相同过程,它工作得很好。我遗漏了什么?
发布于 2018-07-03 17:57:52
浏览一下ensime的代码,它看起来不像是输入类路径中包含了目标类路径。因此,虽然ensimeCompileOnly看到JAR依赖项,但它不会看到任何对等编译类(我用SBT1.x.x观察到这一点)。理想情况下,它会,我不认为有很强的理由这样做。
查看CompatExtras.scala,其中定义了compileOnlyTask。此外,也许可以打开一张票,然后尝试开始讨论。如果所实现的是理想的,那么可以更新文档以反映这一点。
请注意,Ensime今天没有专门的维护人员。我们中的一些人潜伏在一起,以帮助捐款偶尔被合并。最有可能解决这一问题的方法是积极主动。我首先更新在./src/sbt-test-0.13/sbt-ensime/compile-only/test中找到的具有项目依赖关系的测试(您会注意到Foo、Baz和FooTest之间没有任何依赖项)。也许您可以使用FooTest引用Foo,然后观察测试失败,然后继续进行。
https://stackoverflow.com/questions/51103003
复制相似问题