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

Ido*_*Ido 13 visual-studio-code vscode-extensions language-server-protocol

我想实现一个使用语言服务器协议的VSCode扩展,但我希望服务器组件位于实际的服务器上(在云中),而不是VSCode扩展的一部分.

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

Jan*_*jsi 0

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

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