Как стать автором
Поиск
Написать публикацию
Обновить

DLang плагин для IntelliJ IDEA (Alpha, EAP, POC)

Время на прочтение3 мин
Количество просмотров6.8K
Добрый день. Есть ли среди вас знатоки языка программирования D? Первое знакомство с этим языком часто наталкивается на проблему поиска подходящей IDE. С этой проблемой столкнулся и Я. И, как типичный тыжпрограммист, взялся написать плагин для поддержки языка D на платформе IntelliJ IDEA 14.

Disclaimer 1: Это версия 0.0.8, пока реализован минимум функциональности, наверняка будут баги, наверняка вам покажется, что плагин ничего не умеет. Я осознаю, что предстоит огромная работа по доведению плагина до состояния «можно пользоваться».

Disclaimer 2: Если всё же решитесь заглянуть в исходный код, хочу предупредить, что этой мой первый опыт программирования для IntelliJ IDEA. Критика приветствуется. Равно как и Pull реквесты.

DLang plugin 0.0.8





Что есть:
  1. Подсветка синтаксиса;
  2. Парсинг и построение синтаксического дерева;
  3. Навигация по классам;
  4. Вызов внешнего компилятора dmd или системы сборки dub;
  5. Подключение внешних LIB файлов и библиотек исходников;


Что ещё предстоит:
  1. Форматирование кода;
  2. Обработка ошибок парсинга;
  3. Ссылки внутри кода. То есть, возможность переходить к объявлению переменной/функции/метода/класса/модуля/шаблона по его имени.
  4. Подсказки и автодополнение кода;
  5. Проверки, проверки, проверки. IDEA должна уметь проверять тип переменной и значения, которое в неё записывают, проверять список аргументов у функций и методов, области видимость используемых переменных/функций/классов, корректность использования шаблонов, константность и неизменяемость, и множество других семантических проверок. На всю эту логику нужно писать код. Можно, конечно, положиться на компилятор в вопросах поиска ошибок, но зачем тогда IDE?
  6. Запуск и отладка приложения. Честно говоря, Я пока не представляю, как IDEA может взаимодействовать с отлаживаемой программой (анализировать стек, ставить breakpoint`ы, просматривать значения переменных, др.) Хорошо, что есть исходники intellij-erlang и intellij-haxe в качестве примера.
  7. Интеграция с системой сборок DUB и её конфигурационными файлами в формате JSON.


Пока в «команде» есть один бета тестировщик с Mac OS X и Я — программист под Windows.

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


Плагин требует версию IntelliJ IDEA 14 и выше. Откройте Settings > Plugins. Введите в поле поиска «D Language» и нажмите «Install Plugin».


Теперь вы можете создать новый DLang проект.

Как создать новый проект


Существует два типа проекта «D Application» и «D Application with DUB». Они отличаются только настройками сборки. В проектах первого типа по умолчанию создаётся конфигурация для сборки проекта с помощью компилятора DMD (Digital Mars D). В другом типе — конфигурация сборки через DUB (официально рекомендуемая система сборки DLang проектов).

DMD — это компилятор, разрабатываемый компанией Digital Mars. Именно его предлагают скачать на странице dlang.org/download.html.
Какой бы вариант вы не выбрали, всегда есть возможность перенастроить сборки с DMD на DUB и наоборот.

После создания своего первого проекта вам надо настроить DLang SDK. Откройте Project Structure (Strl + Alt + Shift + S) и добавьте «Digital Mars D Compiler»


Вам нужно будет выбрать папку, в которой лежит исполняемый файл dmd (или dmd.exe). Например E:\dmd2\windows\bin\
Теперь вы можете собирать и запускать свои D проекты.

Настройки модуля


Проект в IntelliJ IDEA состоит из модулей. DLang модуль имеет своим настройки, которые почти повторяют настройки Java модуля:
  • Source — настройки папок с исходным кодом
  • Output — настройки папок, куда будут складываться артефакты. Используется при компиляции с помощью DMD. Также запуск итогового исполняемого файла происходит по этому пути.
  • Dependencies — настройки зависимостей. Позволяет указывать DMD SDK и подключать внешние библиотеки и LIB файлы.


Как запустить сборку с помощью DUB


Рекомендуемая система сборки приложений — DUB. Проект настраивается с помощью dub.json файла, в котором указывается метаинформация, подмодули, внешние зависимости, параметры компиляции. См. http://code.dlang.org/package-format за подробностями. Плагин умеет запускать команду сборки прямо из IDE:



К сожалению пока интеграция с DUB неполная. Плагин должен уметь импортировать проект из dub.json файла, анализировать зависимости, и многие другие вещи, как Maven плагин в IDEA. Эта задача на будущее.

Планы по развитию


К сожалению, Я не могу уделять разработке плагина 8 часов в день, так как это не основная моя работа. Но разработка обязательно продолжится. Список жизненно необходимых фич есть выше. Устанавливайте, пользуйтесь, присылайте баги. Если вы знаете Java и хотите помочь — милости просим на Github.

P.S. Если вы когда-нибудь решите создать свой язык программирования, пожалуйста, никогда не называйте его одной или двумя буквами. Очень сложно нагуглить что-либо по букве «D» или слову «Go». Пусть название вашего языка программирования будет аббревиатурой из восьми букв, или словом из языка ндебеле, или названием монстра из D&D, или выдуманной планетой из сериала «Звёздные врата». Чем уникальнее будет слово, тем легче по нему найти информацию в Сети. Извините, накипело!
Теги:
Хабы:
Всего голосов 22: ↑17 и ↓5+12
Комментарии25

Публикации

Ближайшие события