Visual Studio 代码语言服务器 - 如何验证工作区中的所有文件

Visual Studio Code Language Server - how to validate all files in workspace

我遵循 tutorial 来自 visual studio 代码的这个关于如何创建语言服务器来验证扩展文件的代码。我开始制作 lsp-sample 项目的副本并得到它 运行.

在我对该项目的分析中,我注意到仅验证工作区中打开或更改的文件。

// The content of a text document has changed. This event is emitted
// when the text document first opened or when its content has changed.        
documents.onDidChangeContent((change) => { 
    validateTextDocument(change.document);
});

这对大多数情况来说都很好,但我认为当工作区打开时,所有文件(无论是否被编辑器打开)都应该被验证以获得更丰富的 IDE 体验在 vscode.

任何有语言服务器协议经验的人都可以帮助我如何做到这一点吗?据我所知,“文档”对象只填充了打开的文件。

非常感谢, 里卡多

您需要检查来自客户端的初始 initialize 请求中的 rootPathrootUri。从那里,您可以验证其所有文件并根据需要报告错误。当然也有可能两者都是null.

如果客户端支持工作区文件夹,那么您将需要与 workspace/workspaceFoldersworkspace/didChangeWorkspaceFolders 交互并从那里提取相关信息以确定如何验证您的文件。