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

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: ... { "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。

====================================分割线================================

本文转自d1net(转载)

时间: 2024-10-22 10:59:34

Microsoft已将VS Code 语言服务器协议开源的相关文章

C语言udp协议,局域网下,这两段代码为什么不能通讯?

问题描述 C语言udp协议,局域网下,这两段代码为什么不能通讯? client.c 发送消息 #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<errno.h> #include<unistd.h> #include<sys/wait.

国内的豌豆荚也已发布“应用内搜索技术协议”。

Google 今天宣布其 "应用内搜索" 功能现已经支持所有英文内容,安卓用户在通过安卓端进行网页搜索时会在搜索结果里看到直接指向第三方应用的链接.对于其它语言的支持,Google 表示将会在以后逐渐添加对 "所有语言" 的支持,但是并未给出具体日期. 除 IMDB,Expedia,Etsy 和维基百科等 13 个首批支持该功能的应用之外,此次又有 24 个新开发者加入这个阵营,包括了 Pinterest,500px,Zillow,Huffington Post 和

Go语言服务器开发实现最简单HTTP的GET与POST接口_Golang

本文实例讲述了Go语言服务器开发实现最简单HTTP的GET与POST接口.分享给大家供大家参考.具体分析如下: Go语言提供了http包,可以很轻松的开发http接口.以下为示例代码: 复制代码 代码如下: package webserver    import (      "encoding/json"      "fmt"      "net/http"      "time"  )    func WebServerB

Go语言服务器开发之简易TCP客户端与服务端实现方法_Golang

本文实例讲述了Go语言服务器开发之简易TCP客户端与服务端实现方法.分享给大家供大家参考.具体实现方法如下: Go语言具备强大的服务器开发支持,这里示范了最基础的服务器开发:通过TCP协议实现客户端与服务器的通讯. 一 服务端,为每个客户端新开一个goroutine 复制代码 代码如下: func ServerBase() {      fmt.Println("Starting the server...")      //create listener      listener,

Apache Storm 官方文档 —— 多语言接口协议

本文描述了 Storm (0.7.1 版本以上)的多语言接口协议. Storm 多语言协议 Shell 组件 Storm 的多语言支持主要通过 ShellBolt,ShellSpout 和 ShellProcess 类来实现.这些类实现了 IBolt 接口.ISpout 接口,并通过使用 Java 的 ProcessBuilder 类调用 shell 进程实现了执行脚本的接口协议. 输出域 输出域是拓扑的 Thrift 定义的一部分.也就是说,如果你在 Java 中使用了多语言接口,那么你就需要

基于mfc的Modbus/TCP服务器协议

问题描述 基于mfc的Modbus/TCP服务器协议 求指教基于mfc的Modbus/TCP服务器协议,只要能读写数据功能,我用的vc6.0 解决方案 参考:http://wenku.baidu.com/link?url=H6E8CeMjXbeDpwMPuOAYx3A2tXoUnVY9rMeHtOBX_2WWohv87DKBLtEF93NQ6GbWZdjutL7sAFh6z9N7NiVlonLexZmaPFyxCsZ54tyYLfa 解决方案二: modbus协议用vc实现的源代码 http:/

马云布局丝路经济带,已与西北三省签署协议

马云布局丝路经济带,已与 西北三省签署协议11月27日消息,知情人士透露,近日阿里巴巴完 成了与甘肃省政府签署了合作协议,这是继新疆.宁夏之后阿里在西北签署的第三份协议.业内人士指出,阿里巴巴涉足丝绸之路经济带意图明显.根据协议,双方将共同推动 基于云计算.大数据的丝绸之路经济带建设.充分利用阿里巴巴在互联网及云计算技术的领先优势和甘肃省在丝绸之路经济带的区位节点优势,推动甘肃成为向中亚.西亚提供云计算服务的输出地.据了解,今年5月,宁夏自治区政府也与阿里巴巴签署战略合作框架协议.目前还在与陕西

Go语言服务器开发之客户端向服务器发送数据并接收返回数据的方法_Golang

本文实例讲述了Go语言服务器开发之客户端向服务器发送数据并接收返回数据的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package mysocket    import (      "fmt"      "io"      "net"  )    func MySocketBase() {      var (          host   = "www.apache.org"         

VS2015,Win10,调试时:“另一个调试器已连接到该Web服务器”

问题描述 vs2015,win10,IISVS2015已打Update1高度web程序时,提示"另一个调试器已连接到该Web服务器",必须重启IIS方可,调试完后,再次调试时,又出现同样的提示,再重启IIS后又可以了,如此反复.此现象不是100%出现,机率大概70-80%,比较频繁.求高手解惑. 解决方案 解决方案二:换个版本IIS看看,一般没人能回答这个问题吧解决方案三:据说vs2015的bug很多,不知道是不是真的.反正我vs2012一般没这个问题,如果有,直接右下角,关闭deve