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(转载)
如何用Visual Studio Code远程调试运行在服务器上的nodejs应用 nodejs 专栏收录该内容 159 篇文章3 订阅 假设我有一个nodejs应用,运行在AWS - 亚马逊云平台上(Amazone Web Service)。我想用本地的Visual Studio Code来远程调试服务器端的nodejs应用。
vscode插件快餐教程(4) - 语言服务器协议lsp 在有lsp之前,存在三个主要问题: 一是语言相关的扩展都是用该语言母语写的,不容易集成到插件中去。毕竟现在大量的语言都带有运行时。 二是语言扫描相关的工作都比较占用CPU资源,运行在vscode内部不如放在独立进程,甚至远程服务器上更好。
《Visual Edge Computing Service视图计算产品发布介绍》PDF 立即下载
相关文章
- 如何vs升级后10和12都能同时兼容
- [RxJS] Share vs ShareReply
- [AWS] Launch configuration vs Launch template
- [Machine Learning] Multiclass Classification - one vs all
- [Angular & Unit Testing] TestBed.get vs Injector
- SAP CRM Genil Text-for-Key-Codes vs SAP C4C只读字段
- VS Code使用过程中遇到的一些问题
- AWS vs. Azure,从九大方面看哪家强
- Apache Flink vs Apache Spark——感觉二者是互相抄袭啊 看谁的好就抄过来 Flink支持在runtime中的有环数据流,这样表示机器学习算法更有效而且更有效率
- VS中CString与char型数组相互转换问题
- VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的简介、案例应用之详细攻略
- 4K vs. UHD: What’s the Difference?