我想实现一个使用Language Server Protocol的 VSCode 扩展,但我希望服务器组件位于实际服务器(在云中)上,而不是 VSCode 扩展的一部分。
我可以将客户端扩展设置为通过 websockets 或 HTTP 连接到服务器吗?
我想实现一个使用Language Server Protocol的 VSCode 扩展,但我希望服务器组件位于实际服务器(在云中)上,而不是 VSCode 扩展的一部分。
我可以将客户端扩展设置为通过 websockets 或 HTTP 连接到服务器吗?
LanguageClient
根据 的签名初始化 a 时,支持多个 ServerOptions ServerOptions
。
StreamInfo
如果您想使用真正的删除服务器作为您的语言服务器,您可以使用。这是一个示例代码,用于通过连接到您的服务器WebSocket
并初始化LanguageClient
.
const connection = connectToServer(hostname, path);
const client = new LanguageClient(
"docfxLanguageServer",
"Docfx Language Server",
() => Promise.resolve<StreamInfo>({
reader: connection,
writer: connection,
}),
{});
private connectToServer(hostname: string, path: string): Duplex {
const ws = new WebSocket(`ws://${hostname}/${path}`);
return WebSocket.createWebSocketStream(ws);
}
我不确定您是否可以控制语言服务器的位置,但还有另一种选择。例如,您不需要实现语言服务器协议来提供解析帮助。在这种情况下,您可以实现自己方便的解析服务 API(根据您要支持的语言的性质量身定制)。
workspace.onDidChangeTextDocument
DiagnosticCollection
在您的扩展中,使用https://code.visualstudio.com/api/references/vscode-api#languages.createDiagnosticCollection创建一个并用云中解析服务器产生的警告/错误/提示替换填充它。workspace
事件,例如workspace.onDidOpenTextDocument
或workspace.onDidCloseTextDocument
为了保持DiagnosticCollection
内容相关