Тред про достоинства и недостатки Language Server
Универсальность. Написав сервер один раз, можно относительно легко добавить поддержку технологии в огромное количество редакторов
Один источник правды. LS обычно делается поверх компилятора, поэтому получаемые данные всегда согласованы с результатами компиляции
Изолированность. LS обычно представляет из себя внешний процесс, с которым IDE общается посредством некоторого интерфейса (например, stdout). Если процесс начал работать медленно, то это никак не влияет на работу редактора / поддержку других технологий
Простота. Это скорее относиться к LSP. Для базовой реализации сервера нужно написать поддержку всего 10-15 команд
- Изолированность (да, это еще и минус). Поскольку поддержка технологии “сама в себе”, то она ничего не знает о других языках, и как с ними взаимодействовать
- Ограниченность. IDE может получить только ту функциональность, которая есть в Language Service. Например, если LS не поддерживает переименование или рефакторинги, то и IDE не сможет этого делать
- Скорость. На запуск процесса и поднятие модели требуется довольно много времени. Коммуникация между процессами тоже не мгновенная