На прошлой неделе мы исследовали один из способов получить хорошую среду разработки для Haskell. Мы использовали текстовый редактор Atom, в котором есть пара плагинов для Haskell, и его вполне можно взломать.

Но есть еще один вариант, который я вообще не рассматривал в этой статье. Это IntelliJ IDE. Его основное использование — разработка на Java и Android. Но, как и Atom, Visual Studio и другие IDE, у него есть богатая библиотека плагинов. И одна из них — окружение Haskell!

На этой неделе мы увидим, как настроить IntelliJ для работы с Haskell. Мы увидим, как мы можем настроить отличную среду Haskell с теми же функциями, что и в Atom. Я работаю на компьютере с Windows, но вы сможете выполнить все эти шаги и на Mac.

Однако IDE не заменит базовые знания! Если вы новичок в Haskell, вам поможет хорошая настройка разработчика. Но вы также должны прочитать нашу серию Подъем и скачать наш Контрольный список для начинающих! Это даст вам некоторые другие инструменты, которые вам понадобятся!

Установка и настройка

Начать работу с IntelliJ довольно просто. Установка редактора работает через обычный мастер. У вас будет множество вариантов для немедленной установки различных плагинов. Многие из них специфичны для Java, поэтому они вам не понадобятся. Но как только вы это сделаете, вы также можете установить IntelliJ-Haskellplugin. В моем случае я также установил плагин Vim для этих сочетаний клавиш.

Есть небольшая хитрость, связанная с настройкой вашего проекта для сборки с помощью Stack. Когда вы впервые устанавливаете плагин, он спросит вас, какую программу использовать для «сборки» проекта. Это означает, что вам нужно будет найти исполняемый файл стека в средстве поиска файлов, чтобы вы могли перетащить его. В Windows это будет означать отображение скрытых папок в средстве поиска. Вам также может понадобиться использовать команду where в терминале, чтобы помочь (вместо which из Linux). Однако, как только вы это сделаете, у вас должно получиться хорошо!

Горячие клавиши

При работе с Atom мы подчеркивали важность сочетаний клавиш. Они могут значительно упростить наш рабочий процесс. IntelliJ также предоставляет множество вариантов настройки для них. Главное, что нужно знать, это то, что вам нужно нажать ctrl+alt+s, чтобы попасть в меню настроек. Затем вы можете найти keymap на боковой панели. Отсюда вы можете настроить практически все. Самыми важными для меня были создание проекта и манипулирование панелями.

Возможность поиска команд очень полезна. Мне было намного проще изменять команды, скажем, для разделения окон, чем в Atom. Моя текущая настройка включает следующие комбинации:

Build Project: Ctrl+Alt+Shift+B
Split Screen Vertically: Ctrl+Alt+Shift+Right
Split Screen Horizontally: Ctrl+Alt+Shift+Down
Next/Previous Split: Ctrl+Shift+[Right/Left]
Unsplit: Ctrl+Alt+Shift+U
Toggle Bottom Terminal: Ctrl+Shift+Up

Что бы это ни стоило, я также отмечу, что сочетания клавиш Vim лучше, чем у меня в Atom. Перемещение по линиям и сохранение файлов с помощью :w работают, для пары примеров.

Возможности Хаскеля

Вот где сияет плагин IntelliJ. Многие функции работают прямо из коробки. Например, он умеет использовать hlint и выделяет любой код с помощью lints. Подсказки компиляции появляются автоматически. Есть даже много автодополнения из библиотек для выражений и типов. Интеграция с Hoogle довольно проста.

Лучше всего мне кажется, что эти фичи работают в проектах с разными версиями GHC. Насколько я могу судить, вам не нужно вручную устанавливать ghc-mod и беспокоиться о его версии, как вы это делали с Atom. Учитывая трудности, с которыми я столкнулся при настройке Atom для работы с этими функциями, это было большим облегчением.

Интеграция с Git

На прошлой неделе мы не проходили контроль версий. Но это еще один жизненно важный компонент рабочего процесса любого разработчика, поэтому интеграция с IDE — это большой плюс. И Atom, и IntelliJ имеют хорошую поддержку Github, и это отличная новость! Оба поставляются с включенными батареями, когда речь идет обо всех общих операциях Git, которые нам нужны. Вы можете легко создавать новые ветки, добавлять коммиты, push и pull. Оба позволяют привязать их к клавишам, что дает вам свободу еще больше оптимизировать рабочий процесс.

Недостатки

Если бы мне пришлось найти один недостаток в моей настройке IntelliJ, это то, что настройка проекта может потребовать много времени загрузки. Когда вы добавляете новую библиотеку в файл .cabal, вам нужно запустить команду Tools->Haskell->Update Settings. Среде IDE потребуется некоторое время, чтобы сбросить все с учетом этого. Сказав это, большая часть времени загрузки уходит на настройку всех соответствующих библиотек. Это включает все приятные функции, о которых я упоминал ранее. Так что я полагаю, что это цена, которую вы платите. Атом тоже иногда медленный, со своей стороны. Но сама программа не такая громоздкая, как IntelliJ, которая имеет множество дополнительных функций, которые вам, вероятно, не понадобятся.

И последнее замечание: IntelliJ добавит папку .idea в каталог вашего проекта. Не забудьте добавить это в свой .gitignore!

Вывод

В целом работа с IntelliJ/HaskelIDE до сих пор была хорошим опытом. В нем есть все нужные мне функции, а установка немного проще, чем у Atom. Долгие нагрузки иногда могут сдерживать меня, но обычно это нормально. Опять же, вы можете заглянуть на страницу Github для проекта для получения более подробной информации. Очень рекомендую попробовать этот плагин! С любовью к Рику ван дер Клей, автору!

Полная настройка IDE действительно поможет вам начать изучение Haskell! Но вам также потребуются некоторые другие инструменты и знания. Загрузите наш Контрольный список для начинающих, чтобы узнать о некоторых других инструментах, которые вам понадобятся. Также взгляните на наш Мини-курс по стеку, чтобы узнать больше о настройке проекта на Haskell!