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

Searching Database…

这是做什么的?这里是语言服务器协议(LSP)的官方主页。这是微软制定的一份规范,为语言服务器定义了一套通用协议——语言服务器就是编辑器和 IDE 为实现自动补全等语言功能而与之通信的组件。
这是要安装的应用或库,还是别的东西?都不是——这是一个规范仓库。它托管的是协议文档,而不是可运行的程序:仓库里没有可以安装的包,没有构建脚本,也没有任何依赖。
我想在自己的工具里用它,该怎么开始?阅读 https://microsoft.github.io/language-server-protocol/ 上的规范,然后在你的语言服务器或编辑器客户端中实现其中定义的消息。使用这份规范本身不需要安装任何东西。
如果我照着规范做,编辑器就能直接用了吗——有什么坑?这份规范只定义了协议本身,不附带任何可运行的代码。你仍然需要自己实现两端——语言服务器和编辑器客户端——或者复用已有的实现库。
这是给普通用户用的,还是给开发编辑器的人看的?主要面向工具开发者:也就是编辑器、IDE 和语言服务器的作者,他们需要让产品之间互相兼容。当编辑器支持这套协议后,普通用户也能间接受益。
LSP 在编辑器和工具圈里的普及程度如何?非常普及:这个仓库从 2015 年 9 月起就公开了,由 Microsoft 组织维护,目前有大约 13000 个 star。它被广泛视为编辑器与语言服务器通信的标准方式。
为什么一套通用协议很重要?因为语言服务器只需编写一次,任何支持该协议的编辑器都能复用它,而不必每个工具单独集成每一种语言。这正是描述中所说的通用协议的全部意义所在。
我必须是 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