【发布时间】:2018-11-12 01:22:48
【问题描述】:
我正在编写一个创建临时暂存文件的扩展程序。 我想允许用户删除所有暂存文件。
当我在编辑器中打开暂存文件时会出现我的问题。 如果我只是删除文件,我会收到文件不存在的错误消息:
有没有一种方法可以在我删除文件之前根据文件名关闭所有打开的选项卡?
【问题讨论】:
标签: visual-studio-code vscode-extensions
我正在编写一个创建临时暂存文件的扩展程序。 我想允许用户删除所有暂存文件。
当我在编辑器中打开暂存文件时会出现我的问题。 如果我只是删除文件,我会收到文件不存在的错误消息:
有没有一种方法可以在我删除文件之前根据文件名关闭所有打开的选项卡?
【问题讨论】:
标签: visual-studio-code vscode-extensions
为避免此错误,请在删除相关文件之前关闭打开的文本编辑器。
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);
}
【讨论】: