TGViewer
Никита Федькин - мысли, заметки, анонсы Никита Федькин - мысли, заметки, анонсы @nixel2007_thoughts · 2.88K subscribers
Post #196 3.67K
BSL Language Server три года! 🎉

Ровно три года назад, спустя неделю робких попыток разработать плагин для 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!"

Спасибо всем вам за поддержку и за эти годы вместе. С Днем рождения нас! Ура!
GitHub Черновое подключение language-server · 1c-syntax/intellij-language-1c-bsl@ba0e40e Contribute to 1c-syntax/intellij-language-1c-bsl development by creating an account on GitHub.
More from @nixel2007_thoughts
  1. Oct 15, 2026Компьютерики шутят (с)
  2. Oct 11, 2026Когда устал пилить опенсорс, подобрел и решил открыть свой магазин одежды.
  3. Sep 28, 2026Вторую картинку в посте потерял. Вот так менять/задавать пароль.
  4. Sep 28, 2026Если вы можете прочесть этот пост, то вероятно, ваш телефон находится, кхм-кхм, за границе…
  5. Sep 28, 2026video post
  6. Sep 28, 2026#анонс Полишинеля Я разрываюсь между двумя фразами на анонс, пускай будут обе: 1. Мы строи…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →