首页 > 解决方案 > vscode.window.showTextDocument() 意外关闭当前文档

问题描述

我正在开发一个注册 TextDocumentContentProvider 的 VSCode 扩展,以便为某些 Azure 资源提供自定义只读查看器。我让它按照我想要的方式工作,除了一种奇怪的行为。我无法让 VSCode 为不同的 url 打开多个编辑器。当已经有一个编辑器显示我的一个文档时调用 vscode.window.showTextDocument() 总是在编辑新文档之前关闭当前文档。普通文件不会发生这种情况。

具体来说,这个序列:

doc1 = await vscode.workspace.openTextDocument( "file1.txt" );
edit1 = await vscode.window.showTextDocument( doc1, undefined, true );

doc2 = await vscode.workspace.openTextDocument( "file2.txt" );
edit2 = await vscode.window.showTextDocument( doc2, undefined, true );

总是会导致两个编辑窗口/选项卡按预期显示每个文件的内容,而此序列:

doc1 = await vscode.workspace.openTextDocument( <url1> );
edit1 = await vscode.window.showTextDocument( doc1, undefined, true );

doc2 = await vscode.workspace.openTextDocument( <url2> );
edit2 = await vscode.window.showTextDocument( doc2, undefined, true );

总是导致只有一个编辑窗口/选项卡显示与 url2 关联的内容。

在调试器中单步执行确认第二个 showTextDocument() 调用关闭了第一个文档并在同一编辑窗口/选项卡中显示第二个文档。

是否需要向我的提供程序添加一些额外的功能或配置以允许同时打开多个文档?任何人都可以解释一下吗?

标签: visual-studio-code

解决方案


默认情况下,VS Code 以预览模式打开新的文本文档。这意味着当打开第二个文档时,它会替换打开的第一个文档。

您可以通过设置传递preview: falseTextDocumentShowOptionsshowTextDocument


推荐阅读