завершение скала-кода в затмении - PullRequest
1 голос
/ 28 октября 2011

[РЕДАКТИРОВАТЬ]: Я идиот. Я использовал «Eclipse IDE для разработчиков Java» и должен был использовать «Eclipse Classic». Плагин Scala работает намного лучше под Classic.

* [РЕДАКТИРОВАТЬ]: 01.11.2011 - релиз Beta 12, выпущенный 31.10, кажется, значительно лучше *

** [РЕДАКТИРОВАТЬ]: 04.11.2011 - выпуск Beta 12 стал нестабильным до такой степени, что наша команда перешла на IntelliJ. Я надеюсь попробовать плагин Eclipse в будущем и получить другой опыт.

У меня есть смешанный проект java / scala в eclipse, и я обнаружил, что завершение кода не всегда работает. Кажется, у него больше всего проблем с «объектами» и классами, которые определены в другом проекте. Я понимаю, что это всего лишь «особенность» плагина scala, но есть ли какие-то вещи, которые я должен сделать, чтобы минимизировать влияние этих функций?

Eclipse Indigo
Scala Plugin: 2.0.0-beta11 

Проиграв с ним еще один день, я обнаружил, что большинство проблем возникает при доступе к статическим членам классов Java из Scala.

Ответы [ 3 ]

5 голосов
/ 28 октября 2011

Возможно, вы захотите попробовать группу http://groups.google.com/group/scala-ide-user, при условии, что вы можете предоставить дополнительную информацию и, надеюсь, не использовать слово suck .

ВсеЯ могу сказать, что этот короткий контрольный пример прекрасно работает на Helios SR2 и Eclipse Scala plugin 2.0.0.beta11.Я не уверен, насколько глубока поддержка мульти-проектов с Java, и, возможно, существуют известные ограничения.

Я протестировал со следующей структурой.

  1. Проект scala test1, проект scala test2 и проект java test3.
  2. Я добавил test1 и test3 в качестве зависимых проектов вtest2, а также добавил их в путь сборки
  3. в test2. Я могу автозаполнять классы из test1 и test3;и на объекте из test1 (если вы все еще следуете за мной)

Вот что было заполнено автоматически (см. комментарии)

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)
}
3 голосов
/ 28 октября 2011

В настоящее время (версия плагина Scala: 2.0.0.beta11-2_09-201110031011-3a97f5e, версия Eclipse: 3.6.2.v201102101200) существует ряд проблем с дополнением кода в плагине. Кстати, это не последняя версия плагина, и я знаю, что над некоторыми из этих проблем ведется активная работа.

Во-первых, убедитесь, что в Scala-> Setup Diagnostics проверены два варианта завершения:

  1. Используйте предложения по поддержке контента JDT, совместимые с Scala
  2. Включить автоматическую активацию JDT-контента

Есть две основные области проблем:

  1. Автозаполнение классов иногда неправильно добавляет импорт.

    val foo = new Th

  2. Методы класса не отображаются при выполнении ctrl-space.

Обходной путь для этих проблем - добавить импорт для класса, который вы пытаетесь использовать вручную. Это позволяет избежать подавляющего большинства проблем. Это боль, которую я знаю, но она работает.

Я не смотрел этот код в последнее время, но, насколько я помню, проблемы в основном связаны с:

  1. скорость компилятора Scala (это не так быстро, как компилятор Java)
  2. средство поиска классов (над которым я сейчас работаю, я думаю, что большинство проблем уже устранено)
  3. Сложность требуемых предложений, т. Е. Вам нужно дождаться, пока компилятор scala завершит свою работу, чтобы он мог знать все методы по всем признакам и т. Д.
  4. Срок погашения решения.

Также обратите внимание, что некоторые из ожидаемых методов могут вообще не отображаться. Если объект подвергается неявному преобразованию, то вы не получите ожидаемых методов.

Если вы столкнулись с проблемами, то сначала посмотрите на Известные проблемы и список открытых проблем . Если проблема существует, пожалуйста, добавьте к ней свой вариант использования, включая номера версий и любую другую соответствующую информацию. Если вашей проблемы не существует, создайте ее.

Для получения дополнительных очков брауни вы можете клонировать scala ide на github и отправить запрос на извлечение с вашим исправлением.

0 голосов
/ 03 октября 2015

Это старый пост, и моя среда немного отличается, но у меня была та же проблема с плагином Eclipse Luna + Scala IDE (4.2.0), и я нашел решение, которое так хотел внести.

В моемВ этом случае автозаполнение при Ctrl + Пробел и ошибки компиляции также не отображалось.

Мой обходной путь был

  1. Щелкните правой кнопкой мыши проект Scala
  2. Scala ->Добавить библиотеку Scala в путь сборки

Затем она начала работать.

enter image description here

(контейнер библиотеки Scala [2.11.7]отсутствовал в моем проекте)

...