ENSIME не может найти правильное определение проекта
Я использую снимок Emacs 24 на Ubuntu 12.04 с Scala 2.9.2 и ensime_2.9.2-RC1-0.9.3.RC4
,
В основном я сделал то же самое, что описано в https://groups.google.com/forum/?hl=en&fromgroups
- Я генерирую.ensime файл, используя SBT
ensime generate
, - Я начинаю ENSIME на Emacs с
M-x ensime
, - Он правильно анализирует все библиотеки и т. Д. (Автозаполнение работает правильно и т. Д.)
Однако, когда я пытаюсь запустить консоль SBT в Emacs, используя C-c C-v s
, он отображает следующую ошибку:
[info] Loading project definition from /home/ximyu/.sbt/plugins
[info] Updating {file:/home/ximyu/.sbt/plugins/}default-86f483...
[error] a module is not authorized to depend on itself: default#default-86f483;0.0
[error] {file:/home/ximyu/.sbt/plugins/}default-86f483/*:update:
java.lang.IllegalArgumentException: a module is not authorized to depend on itself: default#default-86f483;0.0
Очевидно, ENSIME ищет неправильный каталог для определения проекта. Вместо того, чтобы смотреть на мой каталог проекта, он на самом деле смотрит на ~/.sbt
, Любое решение этого?
1 ответ
У меня такая же проблема. Я только начал с ensime, так что я действительно не знаю, почему это так. Кроме того, мои знания по scala и ensime очень ограничены, так что это всего лишь обходной путь к чему-то более очевидному.
Во всяком случае, это проблемная функция ensime:
(defun ensime-sbt-project-dir-p (path)
"Is path an sbt project?"
(or (not (null (directory-files path nil "\\.sbt$")))
(file-exists-p (concat path "/project/Build.scala" ))
(file-exists-p (concat path "/project/boot" ))
(file-exists-p (concat path "/project/build.properties" ))))
В основном ensime будет использовать вышеуказанную функцию для поиска папки над буфером, где вы нажимаете Cc Cv s, чтобы определить корневую папку проекта. Таким образом, легко исправить это просто добавить (пустую) папку .sbt в папку, содержащую описание вашего проекта.ensime.