From afc08ae477293c178d0c563b21a3bfe99f068f56 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 5 Apr 2018 10:24:07 -0700 Subject: [PATCH] Make markdown preview revive wait on content populated --- .../src/features/preview.ts | 17 ++++++++--------- .../src/features/previewManager.ts | 3 +-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/extensions/markdown-language-features/src/features/preview.ts b/extensions/markdown-language-features/src/features/preview.ts index 5a3ca7443d4..8a357a2ff68 100644 --- a/extensions/markdown-language-features/src/features/preview.ts +++ b/extensions/markdown-language-features/src/features/preview.ts @@ -29,14 +29,14 @@ export class MarkdownPreview { private forceUpdate = false; private isScrolling = false; - public static revive( + public static async revive( webview: vscode.Webview, state: any, contentProvider: MarkdownContentProvider, previewConfigurations: MarkdownPreviewConfigurationManager, logger: Logger, topmostLineMonitor: MarkdownFileTopmostLineMonitor - ): MarkdownPreview { + ): Promise { const resource = vscode.Uri.parse(state.resource); const locked = state.locked; const line = state.line; @@ -53,6 +53,7 @@ export class MarkdownPreview { if (!isNaN(line)) { preview.line = line; } + await preview.doUpdate(); return preview; } @@ -299,13 +300,11 @@ export class MarkdownPreview { this.forceUpdate = false; this.currentVersion = { resource, version: document.version }; - this.contentProvider.provideTextDocumentContent(document, this.previewConfigurations, this.line) - .then(content => { - if (this._resource === resource) { - this.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this.locked); - this.webview.html = content; - } - }); + const content = await this.contentProvider.provideTextDocumentContent(document, this.previewConfigurations, this.line); + if (this._resource === resource) { + this.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this.locked); + this.webview.html = content; + } } private static getLocalResourceRoots( diff --git a/extensions/markdown-language-features/src/features/previewManager.ts b/extensions/markdown-language-features/src/features/previewManager.ts index d9a2752edd3..7186ea4e4bb 100644 --- a/extensions/markdown-language-features/src/features/previewManager.ts +++ b/extensions/markdown-language-features/src/features/previewManager.ts @@ -92,7 +92,7 @@ export class MarkdownPreviewManager implements vscode.WebviewSerializer { webview: vscode.Webview, state: any ): Promise { - const preview = MarkdownPreview.revive( + const preview = await MarkdownPreview.revive( webview, state, this.contentProvider, @@ -101,7 +101,6 @@ export class MarkdownPreviewManager implements vscode.WebviewSerializer { this.topmostLineMonitor); this.registerPreview(preview); - preview.refresh(); return true; }