我正在开发一个VSCode扩展,它注册一个TextDocumentContentProvider,为某些Azure资源提供一个自定义的只读查看器。我让它以我想要的方式工作,除了一个奇怪的行为。我无法让VSCode为不同的urls打开多个编辑器。当已经有一个编辑器显示我的一个文档时,调用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()调用关闭了第一个文档,并在同一编辑窗口/选项卡中显示第二个文档。
是否需要向提供程序添加一些额外的功能或配置,以允许同时打开多个文档?有没有人能说点什么?
发布于 2019-12-03 02:35:16
默认情况下,VS代码在preview mode中打开新的文本文档。这意味着当打开第二个文档时,它将替换打开的第一个文档。
您可以通过在传递给showTextDocument的TextDocumentShowOptions中设置preview: false来完全打开文档
https://stackoverflow.com/questions/58941748
复制相似问题