将外部语言服务器连接到VSCode扩展

时间:2016-10-27 12:24:58

标签: visual-studio-code vscode-extensions language-server-protocol

我想实现一个使用Language Server Protocol的VSCode扩展,但我希望服务器组件位于实际的服务器上(在云端),而不是VSCode扩展的一部分。

我可以设置客户端扩展以通过websockets或HTTP连接到服务器吗?

2 个答案:

答案 0 :(得分:0)

我不确定是否可以控制语言服务器的位置,但是还有另一种选择。例如,您无需实现语言服务器协议即可提供解析帮助。在这种情况下,您可以实现自己方便的解析服务API(根据您要支持的语言的性质而定)。

  1. 在您的扩展程序中,您使用workspace.onDidChangeTextDocument订阅工作区编辑事件
  2. 每次文件更改事件发生时,重新启动1秒超时
  3. 如果超时到期而没有任何其他文件修改,请收集所有相关文件并将其发送到您的解析服务器
  4. 在扩展程序中,使用https://code.visualstudio.com/api/references/vscode-api#languages.createDiagnosticCollection创建一个DiagnosticCollection,并用由云中的解析服务器产生的警告/错误/提示替换它。
  5. 订阅其他workspace个事件,例如workspace.onDidOpenTextDocumentworkspace.onDidCloseTextDocument,以保持DiagnosticCollection内容的相关性

答案 1 :(得分:0)

根据html, body { overflow-x: hidden; } body { position: relative; } 的签名初始化LanguageClient时支持多个ServerOptions。 enter image description here

如果您想使用真正的删除服务器作为您的语言服务器,您可以使用 ServerOptions。这是通过 StreamInfo 连接到您的服务器并初始化 WebSocket 的示例代码。

LanguageClient