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





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

    Подробнее
    Реклама

    Комментарии 25

      –2
      Так а Visual Studio и D-IDE чем не угодили?
        +3
        VS — windows-only, за D-IDE не держался, но предполагаю, что самобытностью
          –1
          Я — программист под Windows
            0
            екий вы избирательный.
            Пока в «команде» есть...


            sheknitrtch молодец — думает не только о Win-собратьях, но и о других собратьях по оружию
          +4
          Visual Studio — это Windows Only решение. Про D-IDE не слышал. По-моему, IntelliJ IDEA одна из самых популярных IDE. Да к тому же, мультиплатформенная. Это моя основная среда разработки. И было странно, что под неё есть плагины для Go, Haxe и Erlang, но отсутсвует поддержка D.
            0
            Haskell забыли. Неплохой плагин, кстати.
              0
              Странно, что вы не посетили вот эту страничку: wiki.dlang.org/IDEs
                0
                и то верно. sheknitrtch, обновите там страницу — добавьте что теперь и в IDEA есть поддержка
              +1
              D-IDE тоже Windows-only
              +3
              О. Новая реализация D Lang на базе IntelliJ. Спасибо что Вы используете GrammarKit.

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

                +3
                Возвращаясь к «Disclaimer 2», это мой первый опыт разработки под платформу IntelliJ IDEA. Я следовал туториалу. Про stubIndex не слышал. Спасибо за наводку!
                0
                Hint: гуглите по «golang» для Go.
                  0
                  А для D хорошо ищется по «dlang».
                  0
                  >проблему поиска подходящей IDE

                  Ну, если IDE уже давно найдена, и это Eclipse, то тут всё просто — DDT :-)
                    –3
                    Если D такой классный язык, почему не написали плагин на самом D?
                      +1
                      IntelliJ IDEA написана на Java. Весь API, доступный плагинам, это Java. Сама IDEA запускается под мультиплатформенной Java Virtual Machine, создаёт Java классы, описанные в plugin.xml, и вызывает их Java методы. В каком месте вы предлагаете написать код на D? И как вы предлагаете скомпилировать его под все платформы?
                      На чистом D есть IDE Poseidon, основанная на графической библиотеке DWT. Эту IDE пишут русские ребята.
                        +1
                        Уже 4 года как не пишут, к сожалению. Из более-менее живых на D есть только D-IDE. Поднять целую IDE с нуля — сложная задача, поэтому немногие разработчики сконцентрировали свои усилия на плагинах к уже развитым IDE: VS, Eclipse, а теперь и IDEA :-) Успехов вам и терпения. Сам я тоже ею пользуюсь по работе, но скорее от безысходности. Все эти среды разработки на Яве — тормозные пожиратели памяти.
                    –1
                    попробуйте писать плагин на Котлине, после джавы жить станет проще и веселей
                      0
                      Вопрос: Я думал, где бы завести англоязычный блог. Он мне нужен для анонсов и обсуждений. Я подумал, что Vivaldi.net — это хорошая идея. Но сейчас уже сомневаюсь. Текущий блог требует регистрации, чтобы смотреть посты. UI у Vivaldi.net не очень понятный. Коллеги, посоветуйте платформу для технического англоязычного блога, чтобы не поднимать свой сервер?
                        0
                        dzone.com, blogger.com?
                        0
                        dlang очень интересный язык, но хорошего IDE под линухом ой как не хватает…
                          0
                          Так Eclipse + DDT же.
                            0
                            Вы правы, придётся попробовать, хотя в своё время с облегчением слез с эклипса на intellij (pycharm).
                              0
                              Сколько людей… Я же наоборот, перепрыгнул на Eclipse после IDEA :-)

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое