【问题标题】:Emacs ENSIME - incremental compileEmacs ENSIME - 增量编译
【发布时间】:2018-12-08 17:22:03
【问题描述】:

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

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

【问题讨论】:

    标签: emacs sbt ensime


    【解决方案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,然后观察测试失败,然后继续进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多