我对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
。
我尝试使用与通过IntelliJ编译b.scala
和a.scala
相同的过程,并且工作正常。我想念什么?
答案 0 :(得分:1)
浏览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,并观察测试失败,然后进行相应的操作。