vscode.TextDocumentContentProvider 提供者在扩展激活时不会更新,

xe55xuns  于 3个月前  发布在  Vscode
关注(0)|答案(6)|浏览(51)

当所有扩展都被禁用时,这个问题是否会发生?:是/否

  • VS Code 版本:1.88.1
  • OS 版本:Windows 11

重现步骤:
按照此 bug 的重现步骤进行操作:microsoft/vscode-cmake-tools#3651。这是我调查的根本 bug,导致我创建了这个。
我认为我已经注意到了这个问题。
实际上,如果你在没有打开 CMakePresets.json 文件的情况下打开文件夹。然后执行一个激活 CMake Tools 扩展的操作,接着再打开 CMakePresets.json 文件,由于提供者已经被激活,CMake Tools 扩展提供的 provideTextDocumentContent 方法将被调用。
然而,如果你在激活 CMake Tools 扩展之前打开 CMakePresets.json 文件,甚至在激活 CMake Tools 扩展并关闭后重新打开 CMakePresets.json 文件之后,验证仍然失败。
这让我觉得 provideTextDocumentContent 在扩展被激活时不会再次为新提供者调用。
技术上我们可以通过添加 onFileSystem:cmake-tools-schema 激活事件来解决这个问题,但我还不确定我们是否想要这样做。
谢谢

sg2wtvxw

sg2wtvxw1#

请按照这个bug的复现步骤进行:microsoft/vscode-cmake-tools#3651。这是我调查的根本问题,导致我创建了这个。
抱歉,我不能继续进行。欢迎提供最小的复现步骤。
这让我觉得在扩展被激活时,provideTextDocumentContent没有再次为新的提供者调用。
你能提供更多上下文吗?CMakePresets.json文件是磁盘上的真实文件还是从哪里来的?此外,如果扩展尚未激活,谁会为其提供内容?
一般来说,如果文档已经打开并且“属于”另一个提供者,我们不会再次调用provideTextDocumentContent。

vsmadaxz

vsmadaxz2#

CMakePresets.json 是一个真实存在的文件。
我的期望是,除了当我们的扩展被激活时,它不会被另一个提供者拥有。
最小重现步骤:

  1. 打开一个空文件夹
  2. 确保已安装 CMake Tools 扩展。
  3. 创建一个 CMakePresets.json 文件,内容为 "{}"。
  4. 注意顶部有一个警告,说无法加载模式。
  5. 运行 "CMake: Configure" 命令以激活 cmake tools 扩展。
  6. 即使现在已激活,模式问题仍然存在。
    这就是我稍微期望的地方,当我们提供模式提供者时,它会被重新调用并解决。
    要查看我们的扩展如何提供模式:
  7. 在上述项目中,关闭 CMakePresets.json 文件。
  8. 关闭 VS Code。
  9. 打开 VS Code。
  10. 运行 "CMake: Configure" 命令以激活 CMake Tools 扩展。
  11. 打开 CMakePresets.json
  12. 注意模式已正确加载。
e5nszbig

e5nszbig3#

请注意,顶部有一个警告说无法加载模式。因此,您为模式注册了一个文本文档内容提供程序,而不是文件本身。但是,通过其他方式传递了schema-uri,对吗?

yptwkmov

yptwkmov4#

正确。
我不太确定我是否理解您的问题。但是CMake Tools扩展使用package.json jsonValidation条目将文件与schema-uri关联起来。

z4iuyo4d

z4iuyo4d5#

嘿,@jrieken,这个问题可能需要进一步关注。
@gcampbell-msft,如果你发现问题已经不存在了,可以帮我们关闭这个问题,或者提供更多信息。

s3fp2yjn

s3fp2yjn6#

好的思考。-dlj...。
在2024年7月14日星期日,VSCode Triage Bot ***@***.***>写道:嘿,@jrieken < https://github.com/jrieken >,这个问题可能需要进一步关注。@gcampbell-msft < https://github.com/gcampbell-msft >,如果你发现问题已经不存在了,可以通过关闭此问题来帮助我们,或者添加更多信息。—直接回复此电子邮件,查看GitHub上的<#211116 (comment)>,或取消订阅< https://github.com/notifications/unsubscribe-auth/AAHH6MTDVMHS3SGYRRYCYCLZMJOB3AVCNFSM6AAAAABGVHJPZGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRXGMYTANRZHA >。你收到这封邮件是因为你订阅了这个线程。消息ID:***@***.***>

相关问题