【发布时间】:2018-02-08 19:50:10
【问题描述】:
我正在开发 Visual Studio Code 扩展,我需要检测某个文档窗口何时关闭。 我知道 vscode.workspace.onDidCloseTextDocument 事件,它一般都有效。
但如果我通过 API 从工作区打开一个文件:
vscode.workspace.openTextDocument(localPath).then(function (doc) {
vscode.window.showTextDocument(doc, 1);
});
然后关闭它,onDidCloseTextDocument 不会像往常一样触发。 它着火了,但几分钟后。
我知道这是一些错误还是 VSCode 的工作方式,但我需要知道如何检测文档窗口何时关闭。
我通过 API 读取的打开文件是某种“虚拟”文件。所以,这可能是导致问题的原因。
【问题讨论】:
-
当您通过 API 关闭
TextDocument时,您是否检查过TextDocument.isClosed属性是否更新? -
是的,我试过了,但即使文件关闭,它也会返回“false”。同样,该错误仅在通过 API 加载文档时出现。当通过 UI 打开文档时 isClosed 返回真实状态。
-
尚未使用工作区文档,但它们会在关闭之前触发 DocumentClosing 事件吗?你可能会在那个事件中做一些魔法,即使你并不是真的打算这样使用它。如果您自己控制关闭,也许您可以依靠检查文件是否打开(物理上)或其他一些技巧?
-
会不会是因为文档说
Note that the lifecycle of the returned document is owned by the editor and not by the extension. That means an onDidClose-event can occur at any time after opening it.?
标签: javascript visual-studio-code vscode-extensions