BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Visual Studio的语言服务器协议

| 作者 Jonathan Allen 关注 334 他的粉丝 ,译者 薛命灯 关注 19 他的粉丝 发布于 2017年12月15日. 估计阅读时间: 2 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

语言服务器协议(LSP)是Visual Studio Code的一个重要组件。语言服务器实际上是单独运行的编译器或分析器,它负责处理各种任务,如编译器错误报告、文本悬浮、代码自动完成(也就是IntelliSense),等。

语言服务器并不是个新概念,Vim和Emacs早就在用它实现代码自动完成功能。C#的语言服务器叫作OmniSharp,支持VS Code、Sublime、Atom、Emacs、Vim和Brackets。

VS Code为TypeScript实现了另一种语言服务器。与OmniSharp不同的是,它是基于HTTP的,“通过标准输入和输出与服务器进程打交道,并使用了JSON消息格式,类似V8调试器协议的请求和响应”。

VS Code现在有两种语言服务器,微软认为有必要制定一个通用的标准,现有和未来的新语言共同遵循该标准。于是,语言服务器协议出现了。

语言服务器协议采用JSON-RPC作为最基本的消息格式。JSON-RPC是SOAP的替代品,更为轻量级。与SOAP类似,它对传输层没有特殊的要求,因此可以通过标准输入输出、管道、套接字等方式进行传输。

Visual Studio本身不支持语言服务器协议,所以需要使用适配器,让VS语言服务与LSP客户端发生交互。微软开发实验室提供了一个叫作语言服务器协议客户端的工具。

除了客户端工具,可能还需要一个语言扩展。GitHub上的语言服务器协议示例演示了如何创建语言扩展。

Adam Driscoll提供了一个更为复杂的示例,叫作PowerShell的Visual Studio语言服务器协议扩展。Adam说:

我认为未来要支持更多的语言需要依赖LSP客户端。Visual Studio和Visual Studio Code共享同一个语言服务,这是一个大好局面。但我们还可以做得更好。LSP现在不支持调试。它是一种特殊的协议。LSP在Visual Stuido中还不够完善,文档中已经有一个图表说明了这个问题。要完善它尚需时日。

查看英文原文Language Server Protocol Support for Visual Studio

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT