eclipse中的scala代码完成

时间:2011-10-28 01:17:23

标签: eclipse scala scala-ide

[编辑]:我是个白痴。我正在使用'Eclipse IDE for Java Developers'并且应该使用'Eclipse Classic'。 Scala插件在Classic下运行得更好。

* [编辑]:11/1/2011 - 10月31日发布的Beta 12版本似乎明显更好*

** [编辑]:11/4/2011 - Beta 12版本变得不稳定,以至于我们的团队切换到IntelliJ。我希望将来能够尝试Eclipse插件并获得不同的体验。

我在eclipse中有一个混合的java / scala项目,我发现代码完成并不总是有效。它似乎与“对象”以及在不同项目中定义的类有最多的问题。我知道这只是scala插件的一个“功能”,但我是否应该采取任何措施来尽量减少这些功能的影响?

Eclipse Indigo
Scala Plugin: 2.0.0-beta11 

在玩了一天之后,我发现从scala访问java类的静态成员时会出现大多数问题。

3 个答案:

答案 0 :(得分:5)

您可以尝试http://groups.google.com/group/scala-ide-user组,前提是您可以提供其他详细信息,并希望使用 suck 这个词。

我只能说这个简短的测试用例适用于Helios SR2和Eclipse Scala插件2.0.0.beta11。我不确定使用Java对多项目的支持有多深,而且可能存在已知的局限性。

我测试了以下结构。

  1. test1 scala项目,test2 scala项目和test3 java项目。
  2. 我将test1和test3作为依赖项目添加到test2,并将它们添加到构建路径
  3. 在test2中
  4. 我可以从test1和test3自动完成类;和来自test1的对象(如果你还在关注我)
  5. 以下是自动填充的内容(参见评论)

    package test2
    
    import test1.{A1, O1} // A1 and O1 choices offered from A or O
    
    class A2 {
    
      val a1 = new A1
      a1.ma1("foo") // ma1 was autocompleted from m
    
      val a3 = new test3.A3 // test3 choice offered from test
      a3.ma3("wqqw").toLowerCase() // ma3 completed from m
      // toLowerCase was completed from toL (3 choices offered)
    
      val o1 = O1.mo1  // mo1 was autocompleted from m
      val ox = O1 // O1 was completed from O (as second choice)
    }
    

答案 1 :(得分:3)

目前有(Scala插件版本:2.0.0.beta11-2_09-201110031011-3a97f5e,Eclipse版本:3.6.2.v201102101200)插件中代码完成的许多问题。顺便说一句,这不是该插件的最新版本,我知道其中一些问题正在积极开展。

首先,请确保在Scala-> Setup Diagnostics中检查完成的两个选项:

  1. 使用与Scala兼容的JDT内容辅助提案
  2. 启用JDT内容自动辅助激活
  3. 有两个常见问题:

    1. 类的自动完成有时无法正确添加导入。

      val foo = new Th< ctrl-space>

    2. 当您进行ctrl-space时,类上的方法不会出现。

    3. 这些问题的解决方法是为您尝试手动使用的类添加导入。这避免了绝大多数问题。我知道这是一种痛苦,但它确实有效。

      我最近没有看过这个代码,但我记得问题主要是由于:

      1. scala编译器的速度(它没有java编译器那么快)
      2. 班级搜索工具(正在进行中,我认为现在已经解决了大部分问题)
      3. 所需提案的复杂性,即您必须等待scala编译器完成它的工作,以便它可以知道所有特征的所有方法等。
      4. 解决方案的成熟度。
      5. 另外,请注意,您期望的某些方法可能根本不会出现。如果对象受到隐式转换,那么你将无法获得你期望的方法。

        如果您遇到问题,请先查看Known Issuesopen issues列表。如果问题存在,请将您的用例添加到其中,包括版本号和任何其他相关信息。如果您的问题不存在,请创建它。

        对于额外的布朗尼点,您可以克隆scala ide on github并提交带有修复的拉取请求。

答案 2 :(得分:0)

这是一篇很老的帖子,我的环境略有不同,但我对Eclipse Luna + Scala IDE插件(4.2.0)也有同样的问题,并找到了一个想要贡献的解决方案。

就我而言,Ctrl + Space上没有自动完成,实际上也没有显示编译错误。

我的解决方法是

  1. 右键单击Scala项目
  2. Scala - >添加Scala库以构建路径
  3. 然后它开始工作。

    enter image description here

    (我的项目中缺少Scala Library容器[2.11.7])