diff --git a/extensions/markdown-language-features/src/extension.ts b/extensions/markdown-language-features/src/extension.ts index 5312e4109bb..875b5d69f8a 100644 --- a/extensions/markdown-language-features/src/extension.ts +++ b/extensions/markdown-language-features/src/extension.ts @@ -17,6 +17,7 @@ import { MarkdownEngine } from './markdownEngine'; import { getMarkdownExtensionContributions } from './markdownExtensions'; import { ExtensionContentSecurityPolicyArbiter, PreviewSecuritySelector } from './security'; import { loadDefaultTelemetryReporter } from './telemetryReporter'; +import { stripSlugifier } from './slugify'; export function activate(context: vscode.ExtensionContext) { @@ -26,7 +27,7 @@ export function activate(context: vscode.ExtensionContext) { const contributions = getMarkdownExtensionContributions(); const cspArbiter = new ExtensionContentSecurityPolicyArbiter(context.globalState, context.workspaceState); - const engine = new MarkdownEngine(contributions); + const engine = new MarkdownEngine(contributions, stripSlugifier); const logger = new Logger(); const selector: vscode.DocumentSelector = [ diff --git a/extensions/markdown-language-features/src/markdownEngine.ts b/extensions/markdown-language-features/src/markdownEngine.ts index 6d78b575dab..7522eb8b782 100644 --- a/extensions/markdown-language-features/src/markdownEngine.ts +++ b/extensions/markdown-language-features/src/markdownEngine.ts @@ -7,7 +7,7 @@ import { MarkdownIt, Token } from 'markdown-it'; import * as path from 'path'; import * as vscode from 'vscode'; import { MarkdownContributions } from './markdownExtensions'; -import { stripSlugifier } from './slugify'; +import { Slugifier } from './slugify'; const FrontMatterRegex = /^---\s*[^]*?(-{3}|\.{3})\s*/; @@ -19,7 +19,8 @@ export class MarkdownEngine { private currentDocument?: vscode.Uri; public constructor( - private readonly extensionPreviewResourceProvider: MarkdownContributions + private readonly extensionPreviewResourceProvider: MarkdownContributions, + private readonly slugifier: Slugifier, ) { } private usePlugin(factory: (md: any) => any): void { @@ -49,7 +50,7 @@ export class MarkdownEngine { return `
${this.md!.utils.escapeHtml(str)}`;
}
}).use(mdnh, {
- slugify: (header: string) => stripSlugifier.fromHeading(header).value
+ slugify: (header: string) => this.slugifier.fromHeading(header).value
});
for (const plugin of this.extensionPreviewResourceProvider.markdownItPlugins) {
@@ -145,13 +146,13 @@ export class MarkdownEngine {
if (fragment) {
uri = uri.with({
- fragment: stripSlugifier.fromHeading(fragment).value
+ fragment: this.slugifier.fromHeading(fragment).value
});
}
return normalizeLink(uri.with({ scheme: 'vscode-resource' }).toString(true));
} else if (!uri.scheme && !uri.path && uri.fragment) {
return normalizeLink(uri.with({
- fragment: stripSlugifier.fromHeading(uri.fragment).value
+ fragment: this.slugifier.fromHeading(uri.fragment).value
}).toString(true));
}
} catch (e) {
diff --git a/extensions/markdown-language-features/src/test/engine.ts b/extensions/markdown-language-features/src/test/engine.ts
index a7a30a89ce0..fbd2322cc38 100644
--- a/extensions/markdown-language-features/src/test/engine.ts
+++ b/extensions/markdown-language-features/src/test/engine.ts
@@ -6,13 +6,15 @@
import * as vscode from 'vscode';
import { MarkdownEngine } from '../markdownEngine';
import { MarkdownContributions } from '../markdownExtensions';
+import { stripSlugifier } from '../slugify';
+
+const emptyContributions = new class implements MarkdownContributions {
+ readonly previewScripts: vscode.Uri[] = [];
+ readonly previewStyles: vscode.Uri[] = [];
+ readonly previewResourceRoots: vscode.Uri[] = [];
+ readonly markdownItPlugins: Promise<(md: any) => any>[] = [];
+};
export function createNewMarkdownEngine(): MarkdownEngine {
- return new MarkdownEngine(new class implements MarkdownContributions {
- readonly previewScripts: vscode.Uri[] = [];
- readonly previewStyles: vscode.Uri[] = [];
- readonly previewResourceRoots: vscode.Uri[] = [];
- readonly markdownItPlugins: Promise<(md: any) => any>[] = [];
- });
+ return new MarkdownEngine(emptyContributions, stripSlugifier);
}
-