Visual studio code vscode语言服务器节点中的服务器端命令如何知道哪个是当前文档?
我正在为DSL开发vscode的语言扩展。该体系结构使用来自微软github的vscode languageserver节点基础设施,并带有一个可以评估DSL的REST后端 我有一个名为Evaluate的命令,它应该将当前打开的文件文本发送到后端服务器进行评估 我尝试将其建模为使用Visual studio code vscode语言服务器节点中的服务器端命令如何知道哪个是当前文档?,visual-studio-code,vscode-extensions,languageservice,Visual Studio Code,Vscode Extensions,Languageservice,我正在为DSL开发vscode的语言扩展。该体系结构使用来自微软github的vscode languageserver节点基础设施,并带有一个可以评估DSL的REST后端 我有一个名为Evaluate的命令,它应该将当前打开的文件文本发送到后端服务器进行评估 我尝试将其建模为使用onExecuteCommand执行的服务器端命令,但是在服务器处理程序中,实际上没有办法找出客户端中当前的焦点源文件。至少我看不出来 我想我可以将它建模为一个客户端命令,然后手动调用sendRequest(Execu
onExecuteCommand
执行的服务器端命令,但是在服务器处理程序中,实际上没有办法找出客户端中当前的焦点源文件。至少我看不出来
我想我可以将它建模为一个客户端命令,然后手动调用
sendRequest(ExecuteCommandRequest)
,将包含我所需信息的参数调用到该客户端处理程序中的服务器,但我想知道我是否遗漏了什么。假设只有用户更新的文本文档需要(重新)验证,我发现通过实现languageserver更方便(至少对于需要同时验证多个源文件的DSL类型而言),languageserver在初始化时会做两件事:
workspace.textDocuments
(在上一次VS代码会话中在工作区中打开的文本文档),并将它们添加到要验证的文件集合中
-->应验证文件并显示诊断信息workspace.onDidOpenTextDocument
-->应重新验证文件,并显示诊断信息workspace.onDidChangeTextDocument
-->应删除诊断信息workspace.onDidCloseTextDocument