语言服务器协议 (LSP) 定义了编辑器或 IDE 与语言服务器之间使用的协议,该语言服务器提供诸如自动补全、转到定义、查找所有引用等语言功能。语言服务器索引格式 (LSIF,发音类似于 "else if") 的目标是在开发工具或 Web UI 中支持丰富的代码导航,而无需本地源代码副本。


什么是语言服务器协议?

为编程语言添加诸如自动补全、转到定义或悬停文档等功能需要付出巨大的努力。传统上,这项工作必须针对每个开发工具重复进行,因为每个工具都提供不同的 API 来实现相同的功能。

语言服务器旨在提供特定于语言的智能,并通过支持进程间通信的协议与开发工具进行通信。

语言服务器协议 (LSP) 背后的理念是标准化此类服务器和开发工具之间的通信协议。这样,一个语言服务器就可以在多个开发工具中重复使用,而这些工具又可以以最小的努力支持多种语言。

LSP 对语言提供商和工具供应商来说都是双赢!


概述

该协议定义了使用 JSON-RPC 在开发工具和语言服务器之间发送的消息格式。LSIF 定义了一种图格式来存储有关编程工件的信息。

规范

LSP 规范的最新版本是 3.17。现在还有即将推出的语言服务器索引格式 (LSIF) 的规范。

实现

LSP 已为许多语言实现,并且许多开发工具正在集成这些语言服务器。