Добрый день. Есть ли среди вас знатоки языка программирования 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, или выдуманной планетой из сериала «Звёздные врата». Чем уникальнее будет слово, тем легче по нему найти информацию в Сети. Извините, накипело!

Комментарии (24)


  1. vintage
    18.05.2015 13:08
    -2

    Так а Visual Studio и D-IDE чем не угодили?


    1. develop7
      18.05.2015 13:24
      +3

      VS — windows-only, за D-IDE не держался, но предполагаю, что самобытностью


      1. vintage
        19.05.2015 10:50
        -1

        Я — программист под Windows


        1. Borz
          19.05.2015 11:00

          екий вы избирательный.

          Пока в «команде» есть...


          sheknitrtch молодец — думает не только о Win-собратьях, но и о других собратьях по оружию


    1. sheknitrtch Автор
      18.05.2015 13:28
      +4

      Visual Studio — это Windows Only решение. Про D-IDE не слышал. По-моему, IntelliJ IDEA одна из самых популярных IDE. Да к тому же, мультиплатформенная. Это моя основная среда разработки. И было странно, что под неё есть плагины для Go, Haxe и Erlang, но отсутсвует поддержка D.


      1. fshp
        18.05.2015 14:46

        Haskell забыли. Неплохой плагин, кстати.


      1. vintage
        19.05.2015 10:55

        Странно, что вы не посетили вот эту страничку: wiki.dlang.org/IDEs


        1. Borz
          19.05.2015 11:14

          и то верно. sheknitrtch, обновите там страницу — добавьте что теперь и в IDEA есть поддержка


    1. develop7
      18.05.2015 13:28
      +1

      D-IDE тоже Windows-only


  1. VISTALL
    18.05.2015 13:27
    +3

    О. Новая реализация D Lang на базе IntelliJ. Спасибо что Вы используете GrammarKit.

    А почему Вы используете fileBasedIndex — если можно использовать просто stubIndex ? Быстро просмотрев код — я не вижу причин юзать fileBasedIndex


    1. sheknitrtch Автор
      18.05.2015 13:30
      +3

      Возвращаясь к «Disclaimer 2», это мой первый опыт разработки под платформу IntelliJ IDEA. Я следовал туториалу. Про stubIndex не слышал. Спасибо за наводку!


  1. Shoonoise
    18.05.2015 16:14

    Hint: гуглите по «golang» для Go.


    1. Korobochka
      19.05.2015 00:56

      А для D хорошо ищется по «dlang».


  1. kloppspb
    18.05.2015 17:03

    >проблему поиска подходящей IDE

    Ну, если IDE уже давно найдена, и это Eclipse, то тут всё просто — DDT :-)


  1. zenden2k
    18.05.2015 19:41
    -3

    Если D такой классный язык, почему не написали плагин на самом D?


    1. sheknitrtch Автор
      18.05.2015 20:11
      +1

      IntelliJ IDEA написана на Java. Весь API, доступный плагинам, это Java. Сама IDEA запускается под мультиплатформенной Java Virtual Machine, создаёт Java классы, описанные в plugin.xml, и вызывает их Java методы. В каком месте вы предлагаете написать код на D? И как вы предлагаете скомпилировать его под все платформы?
      На чистом D есть IDE Poseidon, основанная на графической библиотеке DWT. Эту IDE пишут русские ребята.


      1. vintage
        19.05.2015 11:03
        +1

        Уже 4 года как не пишут, к сожалению. Из более-менее живых на D есть только D-IDE. Поднять целую IDE с нуля — сложная задача, поэтому немногие разработчики сконцентрировали свои усилия на плагинах к уже развитым IDE: VS, Eclipse, а теперь и IDEA :-) Успехов вам и терпения. Сам я тоже ею пользуюсь по работе, но скорее от безысходности. Все эти среды разработки на Яве — тормозные пожиратели памяти.


  1. nerzhul
    20.05.2015 01:32
    -1

    попробуйте писать плагин на Котлине, после джавы жить станет проще и веселей


  1. sheknitrtch Автор
    20.05.2015 12:25

    Вопрос: Я думал, где бы завести англоязычный блог. Он мне нужен для анонсов и обсуждений. Я подумал, что Vivaldi.net — это хорошая идея. Но сейчас уже сомневаюсь. Текущий блог требует регистрации, чтобы смотреть посты. UI у Vivaldi.net не очень понятный. Коллеги, посоветуйте платформу для технического англоязычного блога, чтобы не поднимать свой сервер?


    1. Borz
      20.05.2015 12:37

      dzone.com, blogger.com?


  1. ik62
    05.06.2015 21:40

    dlang очень интересный язык, но хорошего IDE под линухом ой как не хватает…


    1. kloppspb
      05.06.2015 23:23

      Так Eclipse + DDT же.


      1. ik62
        06.06.2015 09:02

        Вы правы, придётся попробовать, хотя в своё время с облегчением слез с эклипса на intellij (pycharm).


        1. kloppspb
          06.06.2015 11:30

          Сколько людей… Я же наоборот, перепрыгнул на Eclipse после IDEA :-)