visual-studio-code - 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() 调用关闭了第一个文档并在同一编辑窗口/选项卡中显示第二个文档。
是否需要向我的提供程序添加一些额外的功能或配置以允许同时打开多个文档?任何人都可以解释一下吗?
解决方案
默认情况下,VS Code 以预览模式打开新的文本文档。这意味着当打开第二个文档时,它会替换打开的第一个文档。
您可以通过设置传递preview: false
给TextDocumentShowOptions
showTextDocument
推荐阅读
- typescript - 打字稿,对象的类型为“未知”
- python-3.x - 仅从导入的模块中捕获回溯
- php - 如何通过 php curl 提交没有键的数组?
- php - Symfony 进程 - 找不到命令
- r - 如何在图表外指定 x/y 轴标签值
- javascript - 使用 Vue.js 在 .then 函数中键入错误
- python - Python serial.write() 一段时间后停止工作
- tampermonkey - 我下载了一个没有 Tampermonkey 的 GreeasyFork 脚本
- r - 检查矩阵中是否存在多个向量,需要速度
- google-app-engine - GoogleAppEngine Standard 中的 Jetty 配置