VS代码扩展名更新虚拟文档



我试图弄清楚如何使用我在编辑器中打开的自己的自定义提供程序更新虚拟文档。我既不了解 https://code.visualstudio.com/api/extension-guides/virtual-documents#update-virtual-documents 的文档,也不了解 https://github.com/microsoft/vscode-extension-samples/tree/master/contentprovider-sample

我试图破解如下内容:

class MyProvider implements vscode.TextDocumentContentProvider {
public onDidChangeEmitter = new vscode.EventEmitter<vscode.Uri>();
onDidChange = this.onDidChangeEmitter.event;
public static instance: LocalChangesProvider | undefined;
public constructor() {
LocalChangesProvider.instance = this;
}
provideTextDocumentContent(uri: vscode.Uri) {
return someGlobal.text;
}
}
someGlobal.text = 'other text';
MyProvider.instance.onDidChangeEmitter.fire(myUriSchema);

但似乎我错过了一些东西。我有点沮丧,我太愚蠢了,不能简单地通知vscode更新我自己的虚拟文档:/任何帮助都值得赞赏:)

在处理最小的完整示例时,我注意到myUriSchema必须与打开的文档的标题/路径匹配,这意味着:

const documentUriToUpdate = vscode.Uri.parse(myUriSchema + ':' + myTitle);
MyProvider.instance.onDidChangeEmitter.fire(documentUriToUpdate )

附言: 从设计的角度来看,我的这个instance- hack绝对没有赢得任何代价 - 只是为了PoC它是如何工作的:)

最新更新