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
请求中的 rootPath
或 rootUri
。从那里,您可以验证其所有文件并根据需要报告错误。当然也有可能两者都是null
.
如果客户端支持工作区文件夹,那么您将需要与 workspace/workspaceFolders
和 workspace/didChangeWorkspaceFolders
交互并从那里提取相关信息以确定如何验证您的文件。
我遵循 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
请求中的 rootPath
或 rootUri
。从那里,您可以验证其所有文件并根据需要报告错误。当然也有可能两者都是null
.
如果客户端支持工作区文件夹,那么您将需要与 workspace/workspaceFolders
和 workspace/didChangeWorkspaceFolders
交互并从那里提取相关信息以确定如何验证您的文件。