写点什么

Microsoft 已将 VS Code 语言服务器协议开源

  • 2016 年 7 月 13 日
  • 本文字数:876 字

    阅读完需:约 3 分钟

Microsoft 已将 VS Code 编辑器用于与各种可支持的语言服务器进行通信的协议开源。

Visual Studio Code 是一个由 Microsoft 开发的 IDE,支持超过 150 种语言。为支持多种语言,该 IDE 包含了 Monaco Editor 以及用于语法检查、错误报告等功能的代码验证工具,并通过语言服务器提供了智能感知和重构等功能。通常每种可支持的编程语言需要一个这样的服务器,Monaco 与这些服务器之间的通信是通过语言服务器协议(LSP)实现的,Microsoft 最近已将LSP 开源。

代码验证是一种需要投入大量资源的操作,因此语言服务器会通过一个独立的进程执行。语言服务器可使用多种语言编写,并使用一种基于 JSON-RPC 的轻量级协议通过 stdin/stdout 与编辑器交换信息。根据正在与 Microsoft 合作开发 Visual Studio 的计算机科学家 Erich Gamma 介绍,该协议受到了来自 V8 调试器协议的启发。

与 HTTP 类似,LSP 也包含一个页头区,随后是 JSON-RPC 内容区,代码片段如下所示:

复制代码
Content-Length: ...\r\n
\r\n
{
"jsonrpc": "2.0",
"id": 1,
"method": "textDocument/didOpen",
"params": {
...
}
}

页头区可包含两个用于指定内容长度和类型的字段。内容可由发往语言服务器的请求或从语言服务器收到的响应所代表。这一区域可用于发送消息、通知,以及命令。通过指定可支持的 _ 能力 _,语言服务器可以对代码验证功能可以使用的特性进行扩展。由于可以同时向不同语言服务器发送多个请求,每个数据包都包含一个 ID 字段,借此编辑器可以区分不同的回应。

LSP 实现了编辑器和所用语言服务器之间的解耦,这样就可以在一个 IDE 种使用多个服务器,或在支持某一协议的多个 IDE 之间重用同一个语言服务器。Microsoft 和其他供应商已经为 C++、CSS/LESS/SASS、JSON、PowerShell、Xtext、PHP 等语言创建了服务器。Eclipse Che 也已选择了 LSP 并计划借此提供针对 C/C++、C#、Go、JSON、R、TypeScript、RAML 以及 XML 的支持。Red Hat 将为 Eclipse Che 提供 Java 语言服务器。此外还有适用于 C#、Haxe、Java 和 Node.js 的 SDK。

查看英文原文 Microsoft Has Open Sourced the VS Code Language Server Protocol

2016 年 7 月 13 日 19:002620
用户头像

发布了 283 篇内容, 共 90.4 次阅读, 收获喜欢 48 次。

关注

评论

发布
暂无评论
发现更多内容
Microsoft已将VS Code 语言服务器协议开源-InfoQ