Disclaimer 1: Это версия 0.0.8, пока реализован минимум функциональности, наверняка будут баги, наверняка вам покажется, что плагин ничего не умеет. Я осознаю, что предстоит огромная работа по доведению плагина до состояния «можно пользоваться».
Disclaimer 2: Если всё же решитесь заглянуть в исходный код, хочу предупредить, что этой мой первый опыт программирования для IntelliJ IDEA. Критика приветствуется. Равно как и Pull реквесты.
DLang plugin 0.0.8
- Исходный код: github.com
- Где скачать: plugins.jetbrains.com
- Блог разработчика: Vivaldi.net
- Email: sheknitrtch@vivaldi.net
Что есть:
- Подсветка синтаксиса;
- Парсинг и построение синтаксического дерева;
- Навигация по классам;
- Вызов внешнего компилятора 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, или выдуманной планетой из сериала «Звёздные врата». Чем уникальнее будет слово, тем легче по нему найти информацию в Сети. Извините, накипело!
Комментарии (24)
VISTALL
18.05.2015 13:27+3О. Новая реализация D Lang на базе IntelliJ. Спасибо что Вы используете GrammarKit.
А почему Вы используете fileBasedIndex — если можно использовать просто stubIndex ? Быстро просмотрев код — я не вижу причин юзать fileBasedIndex
sheknitrtch Автор
18.05.2015 13:30+3Возвращаясь к «Disclaimer 2», это мой первый опыт разработки под платформу IntelliJ IDEA. Я следовал туториалу. Про
stubIndex
не слышал. Спасибо за наводку!
kloppspb
18.05.2015 17:03>проблему поиска подходящей IDE
Ну, если IDE уже давно найдена, и это Eclipse, то тут всё просто — DDT :-)
zenden2k
18.05.2015 19:41-3Если D такой классный язык, почему не написали плагин на самом D?
sheknitrtch Автор
18.05.2015 20:11+1IntelliJ IDEA написана на Java. Весь API, доступный плагинам, это Java. Сама IDEA запускается под мультиплатформенной Java Virtual Machine, создаёт Java классы, описанные в
plugin.xml
, и вызывает их Java методы. В каком месте вы предлагаете написать код на D? И как вы предлагаете скомпилировать его под все платформы?
На чистом D есть IDE Poseidon, основанная на графической библиотеке DWT. Эту IDE пишут русские ребята.vintage
19.05.2015 11:03+1Уже 4 года как не пишут, к сожалению. Из более-менее живых на D есть только D-IDE. Поднять целую IDE с нуля — сложная задача, поэтому немногие разработчики сконцентрировали свои усилия на плагинах к уже развитым IDE: VS, Eclipse, а теперь и IDEA :-) Успехов вам и терпения. Сам я тоже ею пользуюсь по работе, но скорее от безысходности. Все эти среды разработки на Яве — тормозные пожиратели памяти.
nerzhul
20.05.2015 01:32-1попробуйте писать плагин на Котлине, после джавы жить станет проще и веселей
sheknitrtch Автор
20.05.2015 12:25Вопрос: Я думал, где бы завести англоязычный блог. Он мне нужен для анонсов и обсуждений. Я подумал, что Vivaldi.net — это хорошая идея. Но сейчас уже сомневаюсь. Текущий блог требует регистрации, чтобы смотреть посты. UI у Vivaldi.net не очень понятный. Коллеги, посоветуйте платформу для технического англоязычного блога, чтобы не поднимать свой сервер?
vintage
Так а Visual Studio и D-IDE чем не угодили?
develop7
VS — windows-only, за D-IDE не держался, но предполагаю, что самобытностью
vintage
Borz
екий вы избирательный.
sheknitrtch молодец — думает не только о Win-собратьях, но и о других собратьях по оружию
sheknitrtch Автор
Visual Studio — это Windows Only решение. Про D-IDE не слышал. По-моему, IntelliJ IDEA одна из самых популярных IDE. Да к тому же, мультиплатформенная. Это моя основная среда разработки. И было странно, что под неё есть плагины для Go, Haxe и Erlang, но отсутсвует поддержка D.
fshp
Haskell забыли. Неплохой плагин, кстати.
vintage
Странно, что вы не посетили вот эту страничку: wiki.dlang.org/IDEs
Borz
и то верно. sheknitrtch, обновите там страницу — добавьте что теперь и в IDEA есть поддержка
develop7
D-IDE тоже Windows-only