Explicitly register for save and saveAs

This commit is contained in:
Matt Bierner
2019-11-26 15:30:01 -08:00
parent 6b69213fa4
commit e33be1b0af
3 changed files with 35 additions and 6 deletions

View File

@@ -280,8 +280,6 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma
this._proxy.$applyEdits(handle, editsToApply);
}
});
model.onWillSave(e => { e.waitUntil(this._proxy.$onSave(handle)); });
model.onWillSaveAs(e => { e.waitUntil(this._proxy.$onSaveAs(handle, e.resource.toJSON(), e.targetResource.toJSON())); });
webviewInput.onDisposeWebview(() => {
this._customEditorService.models.disposeModel(model);
@@ -315,6 +313,20 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma
this._editorProviders.delete(viewType);
}
public async $registerCapabilities(handle: extHostProtocol.WebviewPanelHandle, capabilities: readonly extHostProtocol.WebviewEditorCapabilities[]): Promise<void> {
const webviewInput = this.getWebviewInput(handle);
const model = await this._customEditorService.models.loadOrCreate(webviewInput.getResource(), webviewInput.viewType);
const capabilitiesSet = new Set(capabilities);
if (capabilitiesSet.has(extHostProtocol.WebviewEditorCapabilities.Save)) {
model.onWillSave(e => { e.waitUntil(this._proxy.$onSave(handle)); });
}
if (capabilitiesSet.has(extHostProtocol.WebviewEditorCapabilities.SaveAs)) {
model.onWillSaveAs(e => { e.waitUntil(this._proxy.$onSaveAs(handle, e.resource.toJSON(), e.targetResource.toJSON())); });
}
}
public $onEdit(handle: extHostProtocol.WebviewPanelHandle, editData: any): void {
const webview = this.getWebviewInput(handle);
if (!(webview instanceof CustomFileEditorInput)) {