DLang плагин для IntelliJ IDEA (Alpha, EAP, POC)
Добрый день. Есть ли среди вас знатоки языка программирования D? Первое знакомство с этим языком часто наталкивается на проблему поиска подходящей IDE. С этой проблемой столкнулся и Я. И, как типичный тыжпрограммист, взялся написать плагин для поддержки языка D на платформе IntelliJ IDEA 14.Disclaimer 1: Это версия 0.0.8, пока реализован минимум функциональности, наверняка будут баги, наверняка вам покажется, что плагин ничего не умеет. Я осознаю, что предстоит огромная работа по доведению плагина до состояния «можно пользоваться».
Disclaimer 2: Если всё же решитесь заглянуть в исходный код, хочу предупредить, что этой мой первый опыт программирования для IntelliJ IDEA. Критика приветствуется. Равно как и Pull реквесты.
DLang plugin 0.0.8Что есть: Подсветка синтаксиса; Парсинг и построение синтаксического дерева; Навигация по классам; Вызов внешнего компилятора dmd или системы сборки dub; Подключение внешних LIB файлов и библиотек исходников; Что ещё предстоит:
Форматирование кода; Обработка ошибок парсинга; Ссылки внутри кода. То есть, возможность переходить к объявлению переменной/функции/метода/класса/модуля/шаблона по его имени. Подсказки и автодополнение кода; Проверки, проверки, проверки. IDEA должна уметь проверять тип переменной и значения, которое в неё записывают, проверять список аргументов у функций и методов, области видимость используемых переменных/функций/классов, корректность использования шаблонов, константность и неизменяемость, и множество других семантических проверок. На всю эту логику нужно писать код. Можно, конечно, положиться на компилятор в вопросах поиска ошибок, но зачем тогда IDE? Запуск и отладка приложения. Честно говоря, Я пока не представляю, как IDEA может взаимодействовать с отлаживаемой программой (анализировать стек, ставить breakpoint`ы, просматривать значения переменных, др.) Хорошо, что есть исходники intellij-erlang и intellij-haxe в качестве примера. Интеграция с системой сборок 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, или выдуманной планетой из сериала «Звёздные врата». Чем уникальнее будет слово, тем легче по нему найти информацию в Сети. Извините, накипело!