Когда я начинал разработку программного обеспечения на Java еще во времена Java 1.3, я вспомнил, как некоторое время использовал JDeveloper, прежде чем перейти к ранним версиям Eclipse. Я пробыл в Eclipse очень долго (около 8 лет), прежде чем перейти на IntelliJ около 4 лет назад. Я всегда был большим поклонником IntelliJ, не только для программирования на Java, но я также продолжал использовать его, когда начал работать со Scala пару лет назад. Однако в последние месяцы я начал замечать, что на самом деле я использую лишь небольшую часть всей функциональности IntelliJ, и постепенно меня раздражало то, как IntelliJ замедлился до сканирования для некоторых проектов Scala. В сочетании с тем, что IntelliJ споткнулся о некоторые вещи Shapeless, Spray, Scalaz, я начал искать альтернативный облегченный редактор Scala.
Поскольку я уже использую Atom для заметок (nvAtom в сочетании с синхронизированной папкой dropbox отлично работает!), И я попробовал Ensime пару месяцев назад, я подумал, что я попробовал эту комбинацию еще раз. В этой статье вы можете прочитать шаги, которые я предпринял, плагины, которые я установил, чтобы получить довольно хорошую рабочую комбинацию Ensime / Atom.
Получение и установка Ensime
Я ждал этой статьи, пока не вышла Scala 2.11.8, поскольку она решает ряд проблем с импортом и последствиями при использовании Ensime. Так что для лучшего опыта использования Ensime обновите свои проекты до Scala 2.11.8. Итак, с этим по пути давайте начнем с установки Ensime.
Чтобы установить Ensime, просто следуйте инструкциям на сайте ( http://ensime.github.io/editors/atom/installation/ ), и вы получите атом, который можно использовать для запуска Ensime.
Подготовка и импорт проекта
После установки убедитесь, что вы указали на локальную версию sbt, и вы более или менее готовы начать использовать ensime. Последнее, что нам нужно сделать, это установить плагин sbt, который необходим для генерации некоторой информации. Следуйте инструкциям по установке здесь ( http://ensime.github.io/build_tools/sbt/ ) и, как только закончите, откройте консоль и перейдите к проекту, который вы хотите импортировать. Если вы этого еще не сделали, обновите версию Scala до 2.11.8. В этом каталоге вызовите `sbt gen-ensime`.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
➜ graphql-sangria sbt gen-ensime [info] Set current project to graphql-sangria (in build file:/Users/jos/dev/git/graphql-sangria/) [info] ENSIME update. Please vote for https: //github.com/sbt/sbt/issues/2266 [info] ENSIME updateClassifiers. Please vote for https: //github.com/sbt/sbt/issues/1930 [warn] Multiple dependencies with the same organization/name but different versions. To avoid conflict, pick one version: [info] Resolving org.scala-lang#scalap; 2.11 . 7 ... [info] ENSIME processing graphql-sangria (graphql-sangria) ➜ graphql-sangria ls -lat total 32 -rw-r--r-- 1 jos staff 9327 Mar 19 09 : 54 .ensime drwxr-xr-x 57 jos staff 1938 Feb 22 09 : 28 .. drwxr-xr-x 6 jos staff 204 Jan 20 07 : 15 .ensime_cache drwxr-xr-x 9 jos staff 306 Jan 19 20 : 22 . drwxr-xr-x 12 jos staff 408 Jan 5 14 : 17 .idea -rw-r--r-- 1 jos staff 410 Jan 2 14 : 45 build.sbt drwxr-xr-x 4 jos staff 136 Jan 2 13 : 24 src drwxr-xr-x 6 jos staff 204 Jan 2 13 : 24 target drwxr-xr-x 6 jos staff 204 Jan 2 13 : 23 project ➜ graphql-sangria |
Обратите внимание, что я использую следующую обертку sbt ( https://github.com/paulp/sbt-extras ), которая радикально сокращает вывод SBT только до необходимого и предоставляет множество дополнительных функций, которые делают работу с SBT немного Полегче. Поэтому, когда вы запустите это, вы можете увидеть больше информации. Важно отметить, что теперь у нас есть каталог `.ensime` и` .ensime_cache`, который содержит специфичные для Ensime файлы.
В Atom откройте новое окно, добавьте эту папку, и вы можете использовать ctrl-cmd-p `Ensime: start` для запуска ensime.
Первый раз займет некоторое время, пока загружаются зависимости, но в итоге Ensime завершит загрузку и запустит сервер. На этом этапе вы можете использовать Ensime для проверки кода Scala (во время набора текста или при сохранении). Внизу он покажет вам проблемы с текущим файлом или с полным проектом. Например, в примере проекта у меня есть несколько неиспользованных импортов:
Он также предоставляет предложения по импорту:
И показывает конкретные ошибки.
Так что для многих проектов вы уже можете использовать Atom для разработки Scala. Однако есть и несколько проблем с Ensime.
Что еще не работает так здорово
Я заядлый пользователь IntelliJ, и одной из функций, которые я заметил, я часто использовал, когда начал использовать Atom, была функция автоматического импорта IntelliJ. Ensime / Atom предлагает нечто похожее, но оно далеко не так полезно, как IntelliJ. С Atom / Ensime вы можете импортировать предложение, но (на данный момент) оно просто выбирает одно, а не позволяет вам выбирать. Чаще всего неправильно импортируется.
Несмотря на то, что функция импорта раздражает, ее добавление — вопрос времени, поскольку Ensime предоставляет несколько подсказок, просто плагин Atom / Ensime пока не поддерживает ее.
Существует ряд других функций, в которых IntelliJ предоставляет более полезную информацию, но ничего такого, что действительно мешает работе, вы просто немного больше просматриваете источник / документацию, что легко сделать (`Ensime: go в док`):
Или просто `ctrl-click`, чтобы перейти к объявлению.
Некоторые вещи, которые блокировали
В то время как Ensime / Atom быстро улучшается, в настоящее время для некоторых проектов могут быть некоторые проблемы, которые действительно блокируют. Если вы используете проект, который использует макросы или некоторые плагины компилятора, вы можете получить ложные ошибки. Я собирался показать проект, в котором сообщалось о ложных ошибках, но с последней версией ошибки, по-видимому, больше не встречаются в моем проекте распыления / бесформенной формы. Поэтому я взял один из моих других проектов (который использует много Scalaz), где у IntelliJ возникли проблемы в качестве теста, чтобы увидеть, как Ensime / Atom справляется с этим. Хотя Ensime требуется некоторое время, чтобы все скомпилировать и перейти в стабильное состояние, он все обрабатывает правильно!
Независимо от этого недавнего удивительного успеха, все еще есть большие изменения, вы столкнетесь с ложными ошибками. Это проблема, о которой команда Ensime знает (см. Проблему: https://github.com/ensime/ensime-server/issues/673 ), и которую, по-видимому, очень трудно решить. Однако люди работают над этим, предоставляя плагин, который возвращает правильные подписи для сгенерированного кода, чтобы редакторы были довольны. Более подробную информацию об этом можно найти здесь: https://github.com/fommil/imaginary-friend
Дополнительные плагины, которые облегчают работу с Ensime
С плагином Ensime вы, вероятно, уже можете выполнить большую работу, используя стандартные функции Atom. Однако я установил два предложенных плагина с сайта Ensime / Atom, и они действительно облегчают работу с несколькими проектами и навигацию по вашему коду. Так что если вы намерены начать использовать Atom и Ensime больше. Эти два очень полезны для установки:
- Менеджер проектов: позволяет управлять несколькими проектами
- Последняя позиция курсора: вернуться туда, где вы были
Наконец, я предлагаю вам установить пакет term3, с этим пакетом вы можете открыть окно терминала прямо в вашем Atom, что хорошо, когда у вас есть несколько быстрых команд sbt для выполнения или некоторые действия git (что в значительной степени как я тоже работаю в IntelliJ)
Вывод
Разработка сервера Ensime идет быстро, как я только что заметил. Месяц назад было много проблем со спреем / бесформенным, который, кажется, теперь решен (будь то через улучшения Ensime или scala 2.11.8, я не знаю). Плагин Atom имеет некоторые острые углы, но он уже очень полезен. Одним из самых больших преимуществ является то, как легкий Atom по сравнению с IntelliJ. Поэтому я буду все больше и больше работать с Atom, но, возможно, вернусь к IntelliJ для проектов определенного типа.
Ссылка: | Разработка Scala в Atom с Ensime от нашего партнера JCG Йоса Дирксена в блоге Smart Java . |