Протокол языкового сервера
-
Определение и цель протокола LSP
- LSP — это протокол на основе JSON-RPC для языковых инструментов.
- Он предназначен для обеспечения независимой поддержки языков программирования в редакторах и IDE.
- В начале 2020-х годов стал стандартом для языковых инструментов.
-
История и развитие
- LSP был разработан для Visual Studio Code и является открытым стандартом.
- Microsoft, Red Hat и Codenvy стандартизировали спецификацию протокола в 2016 году.
- Спецификация протокола размещена на GitHub.
-
Фон и функции IDE
- Современные IDE предоставляют сложные языковые функции, такие как рефакторинг и подсветка синтаксиса.
- Для поддержки рефакторинга требуется глубокое понимание языка программирования.
- Обычные компиляторы и интерпретаторы не могут предоставить эти языковые услуги.
-
Преимущества LSP
- Протокол позволяет отделить языковые службы от редактора.
- Это упрощает адаптацию языковых сервисов к различным инструментам редактирования.
- LSP снижает нагрузку на поставщиков инструментов редактирования.
- Он позволяет распространять и разрабатывать языковые серверы без участия поставщиков компиляторов.
-
Применение LSP
- LSP не ограничивается языками программирования и может использоваться для текстовых языков и DSL.
-
Технический обзор
- Клиент и сервер взаимодействуют через JSON-RPC, используя заголовки, аналогичные HTTP.
- Протокол не определяет, как запросы и ответы передаются между клиентом и сервером.
-
Реестр и рекомендации
- Существуют списки совместимых реализаций LSP, поддерживаемые сообществом и Microsoft.
- Для дальнейшего чтения и внешних ссылок указаны официальные веб-сайты.