From 252515e59dd3bb79062d56c03e307ba296b6a365 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 29 Mar 2022 13:24:39 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/markdownExtensions.ts | 41 +++++++++---------- .../src/preview/preview.ts | 3 -- .../src/preview/previewManager.ts | 4 +- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/extensions/markdown-language-features/src/markdownExtensions.ts b/extensions/markdown-language-features/src/markdownExtensions.ts index 387a41388c0..cd6dfeb4260 100644 --- a/extensions/markdown-language-features/src/markdownExtensions.ts +++ b/extensions/markdown-language-features/src/markdownExtensions.ts @@ -7,29 +7,27 @@ import * as vscode from 'vscode'; import * as arrays from './util/arrays'; import { Disposable } from './util/dispose'; -const resolveExtensionResource = (extension: vscode.Extension, resourcePath: string): vscode.Uri => { +function resolveExtensionResource(extension: vscode.Extension, resourcePath: string): vscode.Uri { return vscode.Uri.joinPath(extension.extensionUri, resourcePath); -}; +} -const resolveExtensionResources = (extension: vscode.Extension, resourcePaths: unknown): vscode.Uri[] => { - const result: vscode.Uri[] = []; +function* resolveExtensionResources(extension: vscode.Extension, resourcePaths: unknown): Iterable { if (Array.isArray(resourcePaths)) { for (const resource of resourcePaths) { try { - result.push(resolveExtensionResource(extension, resource)); - } catch (e) { + yield resolveExtensionResource(extension, resource); + } catch { // noop } } } - return result; -}; +} export interface MarkdownContributions { - readonly previewScripts: ReadonlyArray; - readonly previewStyles: ReadonlyArray; - readonly previewResourceRoots: ReadonlyArray; - readonly markdownItPlugins: Map any>>; + readonly previewScripts: readonly vscode.Uri[]; + readonly previewStyles: readonly vscode.Uri[]; + readonly previewResourceRoots: readonly vscode.Uri[]; + readonly markdownItPlugins: ReadonlyMap any>>; } export namespace MarkdownContributions { @@ -60,16 +58,14 @@ export namespace MarkdownContributions { && arrays.equals(Array.from(a.markdownItPlugins.keys()), Array.from(b.markdownItPlugins.keys())); } - export function fromExtension( - extension: vscode.Extension - ): MarkdownContributions { - const contributions = extension.packageJSON && extension.packageJSON.contributes; + export function fromExtension(extension: vscode.Extension): MarkdownContributions { + const contributions = extension.packageJSON?.contributes; if (!contributions) { return MarkdownContributions.Empty; } - const previewStyles = getContributedStyles(contributions, extension); - const previewScripts = getContributedScripts(contributions, extension); + const previewStyles = Array.from(getContributedStyles(contributions, extension)); + const previewScripts = Array.from(getContributedScripts(contributions, extension)); const previewResourceRoots = previewStyles.length || previewScripts.length ? [extension.extensionUri] : []; const markdownItPlugins = getContributedMarkdownItPlugins(contributions, extension); @@ -122,6 +118,7 @@ export interface MarkdownContributionProvider { } class VSCodeExtensionMarkdownContributionProvider extends Disposable implements MarkdownContributionProvider { + private _contributions?: MarkdownContributions; public constructor( @@ -129,17 +126,19 @@ class VSCodeExtensionMarkdownContributionProvider extends Disposable implements ) { super(); - vscode.extensions.onDidChange(() => { + this._register(vscode.extensions.onDidChange(() => { const currentContributions = this.getCurrentContributions(); const existingContributions = this._contributions || MarkdownContributions.Empty; if (!MarkdownContributions.equal(existingContributions, currentContributions)) { this._contributions = currentContributions; this._onContributionsChanged.fire(this); } - }, undefined, this._disposables); + })); } - public get extensionUri() { return this._extensionContext.extensionUri; } + public get extensionUri() { + return this._extensionContext.extensionUri; + } private readonly _onContributionsChanged = this._register(new vscode.EventEmitter()); public readonly onContributionsChanged = this._onContributionsChanged.event; diff --git a/extensions/markdown-language-features/src/preview/preview.ts b/extensions/markdown-language-features/src/preview/preview.ts index e734d56e5d4..08a9c6e30bd 100644 --- a/extensions/markdown-language-features/src/preview/preview.ts +++ b/extensions/markdown-language-features/src/preview/preview.ts @@ -584,9 +584,6 @@ interface DynamicPreviewInput { readonly line?: number; } -/** - * A - */ export class DynamicMarkdownPreview extends Disposable implements ManagedMarkdownPreview { public static readonly viewType = 'markdown.preview'; diff --git a/extensions/markdown-language-features/src/preview/previewManager.ts b/extensions/markdown-language-features/src/preview/previewManager.ts index cddfe192aa2..a0f837c2425 100644 --- a/extensions/markdown-language-features/src/preview/previewManager.ts +++ b/extensions/markdown-language-features/src/preview/previewManager.ts @@ -56,6 +56,7 @@ class PreviewStore extends Disposable { } export class MarkdownPreviewManager extends Disposable implements vscode.WebviewPanelSerializer, vscode.CustomTextEditorProvider { + private static readonly markdownPreviewActiveContextKey = 'markdownPreviewFocus'; private readonly _topmostLineMonitor = new TopmostLineMonitor(); @@ -73,7 +74,9 @@ export class MarkdownPreviewManager extends Disposable implements vscode.Webview private readonly _engine: MarkdownEngine, ) { super(); + this._register(vscode.window.registerWebviewPanelSerializer(DynamicMarkdownPreview.viewType, this)); + this._register(vscode.window.registerCustomEditorProvider(StaticMarkdownPreview.customEditorViewType, this, { webviewOptions: { enableFindWidget: true } })); @@ -258,4 +261,3 @@ export class MarkdownPreviewManager extends Disposable implements vscode.Webview vscode.commands.executeCommand('setContext', MarkdownPreviewManager.markdownPreviewActiveContextKey, value); } } -