Ровно три года назад, спустя неделю робких попыток разработать плагин для 1С в IntelliJ IDEA, нам с @Labotamy пришла в голову идея попробовать реализовать ядро поддержки языка отдельно от IDE в виде Language Server - специализированного программного продукта, взаимодействующего со средой разработки по унифицированному протоколу, без привязки к конкретным особенностям среды, будь то Sublime Text или Visual Studio Code.
Исторический коммит, в котором появился класс BSLLanguageServer, можно посмотреть тут: https://github.com/1c-syntax/intellij-language-1c-bsl/commit/ba0e40e928616ea78011f7c8d0d4fe226df6ee0d
Что он делал? Да ничего, даже выключаться толком не мог, не говоря уже о том, что IDEA не могла к нему подключиться.
В ночь на 24 июля (https://github.com/1c-syntax/intellij-language-1c-bsl/commit/c0547e949f4bf46633c900ef711da521a7712b73) оно уже пыталось барахтаться, подключаясь через LSP-плагин для IDEA, а 25 июля начало жить в виде самостоятельного модуля, а затем и в виде отдельного проекта (https://github.com/1c-syntax/bsl-language-server/commit/4227866d46aff6db4101c8a0acb25619d45d1597).
Что произошло с проектом за три года? Парадоксально, но первая тестовая фича, подключенная в BSL LS - автодополнение кода строкой "hello world!" - так и не докатилась до релиза. Автодополнения все еще нет.
Зато есть:
* любимые и ненавидимые многими диагностики - BSL LS очень любит орать по поводу и иногда без повода;
* всплывающая подсказка при наведении на методы конфигурации и локальные методы в oscript;
* переходы к определению методов и поиск мест использования;
* иерархия вызовов методов с возможностью навигации;
* древовидное дерево областей/методов/переменных текущего модуля и их список во всем проекте;
* некоторое количество "быстрых исправлений" и "быстрых действий", которые могут помочь быстро поправить ошибку в коде;
*
* форматирование модуля и выделенного текста - хоть и с огрехами, но все же работает;
* сворачивание областей, методов, блоков кода, комментариев и пакетов запроса.
Что еще будет?
Работа с платформенным контекстом. Чтобы BSL LS знал, что такое
Новый Массив, какие у него есть методы, что там можно показать после точки для Справочники и вообще. Обещанного три года ждут, прошло как раз три года, значит, пора делать! :)Что будет в следующем релизе?
Нечеловеческими усилиями @theEvilBeaver в ядре BSL LS появился умный вычислитель выражений с учетом приоритетов операций (умножение, деление, и/или и прочее) и почти финализирован Control Flow Graph вместе с новой версией диагностики на
Возврат во всех ветках кода. Это охренеть как круто и большой респект!Это если из полезного. А из безполезного в след релизе BSL LS научится показывать прямо в редакторе кода окошко с предпросмотром цветов, создаваемых через конструктор
Новый Цвет() или обращение к системному перечислению WebЦвета. Еще и конвертировать их туда обратно, и подставлять значения выбранного цвета из палитры внутрь конструктора. Зачем? Все по заветам Андрея: "Because it's fucking awesome!"Спасибо всем вам за поддержку и за эти годы вместе. С Днем рождения нас! Ура!