Почти 8 лет назад (без пяти дней) мы с
@Labotamy засели в скайпе с вопросом "что бы такое клёвое совместно написать". И решили запилить плагин для поддержки 1С в IntelliJ IDEA. Взяли в руки официальный гайдбук по разработке плагина, черновик грамматики в формате jflex, которую незадолго до этого напилил
@dmpas, и начали творить.
Это привело к тому, что через неделю в проекте появился класс BSLLanguageServer и заверте...
Плагин пытался одновременно работать поверх BSL LS и BSL Parser путем скрещивания через хитрый antlr adaptor (я не опечатался, автор так назвал свое детище), но страдал от двух вещей:
1) antlr в BSL Parser притерпевал регулярные изменения: то мы жили на ванильном antlr4, то переехали на optimized fork с несовместимым API, то переехали обратно, в итоге вообще остановились на собственном форке за авторством
@TheShadoWCo, который героически перенёс все оптимизации из optimized fork в ванильный antlr, сохранив обратную совместимость.
А antlr adaptor так и оставался в версии что.то.там.релиз.кандидат.снапшот.на.коленке.
2) Отсутствие фич в BSL LS типа автодополнения и контекста платформы. То есть пилить плагин для IDEA было прикольно, но при этом было и понимание, что усилия надо сосредоточить на самом BSL LS, обогатив его фичами, которые растекутся потом по всем редакторам.
За это время я успел поработать над несколькими различными плагинами подключения языковых серверов в IDEA: и старый intellij-lsp на scala с мэйнтейнером на подводной лодке, появляющимся на GitHub раз в полгода на пару недель, и с lsp4intellij - хард-форке, который я начинал делать совместно с шри-ланкийскими ребятами из WSO2/Ballerina Lang, и (теперь уже бес)платным клиентом в IntelliJ IDEA Ultimate, и наконец плагином lsp4ij от RedHat.
Последний хоть и содержал несколько детских болячек, которые вскрывал подключенный к нему BSL LS на раз, но заодно имел и активных мэйнтейнеров, которые быстро приходят в созданные баг-репорты и, что совсем уж удивительно, быстро чинят обнаруженые баги! А ещё у них в документации был подробный гайд, как запускать LSP-сервер поверх грамматики textmate для быстрой раскраски кода. А textmate - это как раз то, с чего вообще начинался проект 1c-syntax в 2014-2015.
И вот, спустя почти 8 лет и трех переписываний с нуля, Language 1C (BSL) плагин для семейства IntelliJ Platform наконец опубликован в JetBrains Marketplace:
https://plugins.jetbrains.com/plugin/32659-language-1c-bsl-Если маркетплейс у вас не работает, то установочный zip-архив можно забрать с
релизов на GitHub.
P.S. Не без помощи нейросеток конечно.
P.S.S. А что вы мне сделаете, я в другом городе (с)