🔥

Тред (Старовойт Андрей)


Тред про достоинства и недостатки Language Server

Универсальность. Написав сервер один раз, можно относительно легко добавить поддержку технологии в огромное количество редакторов

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

Изолированность. LS обычно представляет из себя внешний процесс, с которым IDE общается посредством некоторого интерфейса (например, stdout). Если процесс начал работать медленно, то это никак не влияет на работу редактора / поддержку других технологий

Простота. Это скорее относиться к LSP. Для базовой реализации сервера нужно написать поддержку всего 10-15 команд

- Изолированность (да, это еще и минус). Поскольку поддержка технологии “сама в себе”, то она ничего не знает о других языках, и как с ними взаимодействовать

- Ограниченность. IDE может получить только ту функциональность, которая есть в Language Service. Например, если LS не поддерживает переименование или рефакторинги, то и IDE не сможет этого делать

- Скорость. На запуск процесса и поднятие модели требуется довольно много времени. Коммуникация между процессами тоже не мгновенная