我正在编写一个创建临时划痕文件的扩展。我想允许用户删除所有划痕文件。
当我在编辑器中打开这些文件时,遇到了问题。如果我直接删除这些文件,就会出现文件不存在的错误消息:
有没有一种方法可以根据文件名关闭所有打开的标签页,然后再删除这些文件呢?
我正在编写一个创建临时划痕文件的扩展。我想允许用户删除所有划痕文件。
当我在编辑器中打开这些文件时,遇到了问题。如果我直接删除这些文件,就会出现文件不存在的错误消息:
有没有一种方法可以根据文件名关闭所有打开的标签页,然后再删除这些文件呢?
vscode.workspace.textDocuments
包含打开文本文档的数组。在删除文档之前,将 vscode.workspace.textDocuments
数组过滤为仅包括要删除文件的文本文档,然后循环过滤后的数组(不使用 forEach,因为关闭和删除文本文档是异步的),将每个文本编辑器带到焦点然后关闭它。然后运行您的删除代码。像这样:const filteredTextDocuments = vscode.workspace.textDocuments.filter(td => td.fileName === 'scratchFileName')
for (const td of filteredTextDocuments) {
await vscode.window.showTextDocument(td, { preview: true, preserveFocus: false });
await vscode.commands.executeCommand('workbench.action.closeActiveEditor');
await vscode.workspace.fs.delete(td.uri);
}