IntelliJ Idea and Haxe, Eric Bishton

В своем докладе Эрик Биштон рассказал о возможностях IntelliJ Idea для Haxe-программистов.

Eric Bishton

Эрик работает над Haxe-плагином для Idea уже около 5 лет и является основным его разработчиком.
Также он поддерживает официальный сайт плагина - http://intellij-haxe.org/, занимается его наполнением, пишет документацию.
Вы можете поддержать его работу с помощью patreon - https://www.patreon.com/EricBishton/memberships

Nice to meet you

Эрик кратко пересказал историю Haxe-плагина:
Компания Jetbrains начала его разработку около 6 лет назад в качестве эксперимента.
Но затем программист, который занимался развитием плагина, ушел из компании (кажется это был Fedor Korotkov) и плагин забросили, т.к. у Haxe слишком мало пользователей, а это значит, что рынок у него небольшой.
Когда компания TiVo начала работать с Haxe, они убедили Jetbrains открыть исходный код плагина и продолжили его разработку под свои нужды. Как раз тогда к разработке плагина присоединился Эрик.
Но когда в TiVo доделали основные нужные им фичи, его разработку опять подзабросили. Эрика переключили на другие проекты и плагином он занимался в свое свободное время.
Спустя какое-то время компанию TiVo купили, а Эрика сократили. Примерно тогда же Джошуа Граник разместил несколько сообщений об ошибках в плагине и Эрик связался с ним, а через него - с компанией FlowPlay, которой и нужно было исправить эти ошибки. Так работу Эрика над плагином стала спонсировать FlowPlay.
Код плагина был передан в Haxe Foundation, и т.к. компания Jetbrains больше не занималась его разработкой, то этот форк был официально признан как основной.

History? TL;DR

Если хотите узнать, чем же IntelliJ Idea отличается от других IDE для разработки на Haxe - то на википедии есть страничка со сравнением возможностей разных IDE - https://en.wikipedia.org/wiki/Comparison_of_IDE_choices_for_Haxe_programmers 
Хотя на этой странице совсем не упоминается VS Code.
Idea является полноценной IDE профессионального уровня, однако и у нее есть свои недостатки по сравнению с другими.
Можно сказать, что VS Code был выбран Haxe Foundation как “точка входа” в Haxe. Такой выбор обусловлен тем, что с ней легко начать работать и вообще просто пользоваться. С Idea же новичку начать работу непросто.
FlashDevelop / HaxeDevelop также очень сильно упрощает начало работы с Haxe - при установке этой IDE будут также установлены все необходимые инструменты, в комплекте идет набор шаблонов проектов для основных нужд. Таким образом FlashDevelop может настроить все необходимое окружение.
Idea так не умеет - и это основная причина того, что программисты не начинают работу с Haxe с нее. И Эрик надеется, что в будущем такая возможность настройки рабочего окружения может появиться и в Idea.

IntelliJ vs. everything else

Далее Эрик рассказал об улучшениях в плагине.
Автодополнение по-умолчанию работает с помощью средств, встроенных в IntelliJ Idea (IDE сама “понимает” Haxe с помощью имеющегося парсера языка). В июне 2017 была добавлена возможность автодополнения кода средствами компилятора, но она выключена по-умолчанию, т.к. может работать медленнее, чем с помощью встроенных в Idea средств.

Compiler completion

Ускорить работу автодополнения кода с помощью компилятора можно используя сервер компиляции Haxe (compilation server). Но Idea не умеет автоматически его настраивать. Поэтому вам нужно вручную запустить сервер перед запуском самой Idea, а также добавить “--connect” в список параметров компилятора в настройках модуля (во вкладке Haxe).

Using completion with the compiler server

Также была улучшена поддержка haxelib. Теперь при запуске IDE выполняет команду haxelib, читает список всех установленных библиотек, добавляет их в список библиотек, доступных в вашем модуле, и индексирует их содержимое.
Однако Idea пока еще не умеет одновременно поддерживать библиотеки, установленные в разных локальных репозиториях haxelib (в haxelib есть возможность иметь несколько репозиториев библиотек, и в настройках проекта можно указать какой репозиторий использовать).

Haxelib support

Как уже было сказано, Idea сама “понимает” Haxe, весь код парсится средствами IDE, а не компилятором. И в последнее время парсер языка значительно улучшился, стало гораздо меньше ложных срабатываний с сообщениями о синтаксических ошибках.
Но все еще остается проблема с неинформативными сообщениями о таких ошибках, из них, например, сложно понять, что в коде просто не хватает точки с запятой в конце строки.

Parsing and typing

Поддержка условной компиляции была причиной жалоб №1.
Хотя Idea и “понимает” Haxe, однако использование #if, #elseif, #end ломало парсинг языка.
Временное решение данной проблемы - интерпретировать код, обернутый в #if, #elseif, #end как комментарии, тогда весь остальной код остается для Idea валидным и его можно парсить без проблем.
Однако при этом для кода, обернутого в #if’ы, перестают работать подсветка синтаксиса, а также рефакторинги.
Данную проблему с корректным парсингом всего кода, по словам автора, не решил еще никто, ни в одной IDE нет таких возможностей. Но у Эрика есть идея, с помощью которой потенциально можно решить эту проблему и в скором времени он попытается реализовать ее. Однако решение может оказаться довольно медленным, т.к. потребует множественных проходов по файлам.

Conditional compilation

В качестве еще одной новой фичи плагина для Idea Эрик назвал поддержку новых возможностей Haxe 4. В последнем официальном релизе есть поддержка short lambdas. А в dev-ветке появилась поддержка final и нового синтаксиса описания типов функций. Эти две фичи появятся в следующем релизе, который обещается в скором времени (в июне?).

Haxe 4 support

Если вам нужна помощь с Haxe-плагином для Idea, то с Эриком можно связаться:

Кроме того, Эрик предоставляет платную поддержку плагина, все средства, полученные от нее, идут на развитие плагина. 

Getting help

Если вы хотите как-то поучаствовать в развитии плагина, то для этого есть множество способов.

  • на гитхабе доступен весь исходный код - https://github.com/HaxeFoundation/intellij-haxe 
  • также вы можете помочь просто пользуясь плагином и составляя новые issues все также на гитхабе. Дело в том, что это огромный проект и оттестировать его силами одного человека практически невозможно
  • также Эрик будет очень сильно рад, если вы поможете с исправлением существующих ошибок и пришлете pull-request :)

Кроме того, помочь проекту можно и финансово:

Contributing

Также Эрик поделился планами на дальнейшее развитие плагина:

  • продолжить поддержку Haxe 4 и новых возможностей, которые в него будут добавлять
  • улучшение парсинга языка, т.к. сейчас в некоторых случаях он может “ломаться”
  • полная поддержка файлов проектов - hxml, nmml (чтение списка библиотек с последующим их парсингом, чтение списка define’ов)
  • полная поддержка условной компиляции
  • улучшение рефакторингов, т.к. по ним поступил ряд жалоб от пользователей
  • обновление cpp дебаггера. В настоящее время Idea использует устаревшую версию дебаггера. Планируется, что будет использоваться новый протокол, основанный на json
  • и, конечно, исправление найденных багов.

Roadmap

И в завершение Эрик поблагодарил компанию FlowPlay, которая спонсировала работу над плагином.

The final slide