language-server-protocol (microsoft/language-server-protocol)

Searching Database…

Что это такое?Это репозиторий Language Server Protocol (LSP) — спецификации Microsoft, которая определяет единый протокол для language-серверов: компонентов, с которыми редакторы и IDE общаются, чтобы получить языковые возможности вроде автодополнения.
Это программа или библиотека, которую я устанавливаю, или что-то другое?Ни то, ни другое — это репозиторий со спецификацией. Здесь лежат документы протокола, а не рабочий код: устанавливать нечего, в репозитории нет ни скриптов сборки, ни зависимостей.
Как начать использовать это в своём инструменте?Прочитайте спецификацию на https://microsoft.github.io/language-server-protocol/ и реализуйте описанные в ней сообщения в своём language-сервере или в клиенте редактора. Чтобы работать с самой спецификацией, ничего устанавливать не нужно.
Если я следую спецификации, мой редактор сразу заработает — в чём подвох?Спецификация описывает только протокол, готового кода в ней нет. Обе стороны — и language-сервер, и клиент редактора — придётся реализовать самому, либо взять готовую библиотеку с реализацией.
Это для обычных пользователей или для тех, кто делает редакторы?В первую очередь для разработчиков инструментов: авторов редакторов, IDE и language-серверов, которым нужно, чтобы их продукты умели работать друг с другом. Обычные пользователи выигрывают косвенно — когда их редактор понимает этот протокол.
Насколько LSP прижился в редакторах и инструментах?Очень: репозиторий публичный с сентября 2015 года, поддерживается в организации Microsoft и собрал около 13 000 звёзд. Его повсеместно считают стандартным способом общения редакторов с language-серверами.
Зачем вообще нужен общий протокол?Потому что language-сервер можно написать один раз и использовать в любом редакторе, который понимает протокол, — вместо того чтобы каждый инструмент отдельно встраивал поддержку каждого языка. В этом и есть весь смысл общего протокола из описания.
Мне нужно быть TypeScript-разработчиком, чтобы этим пользоваться?Нет. В репозитории указан язык TypeScript, но по сути это документы со спецификацией. Реализацию LSP можно написать на любом языке — продукт здесь протокол, а не код.
What are similar projects?rust-analyzer, monaco-editor, ale, rfcs, toast, htn_planner, dsh-std, spec
Creator
microsoft
Size
7.4 MB
Stars
13K
Updated
CommitOct 01
Age
11y
Commits · 90 Days