Make markdown extension points dynamic

For #67574

Blocked by #67958
This commit is contained in:
Matt Bierner
2019-02-05 17:44:57 -08:00
parent 8f10101dd4
commit 038e8d3904
5 changed files with 72 additions and 11 deletions

View File

@@ -59,14 +59,19 @@ export class MarkdownEngine {
public constructor(
private readonly contributionProvider: MarkdownContributionProvider,
private readonly slugifier: Slugifier,
) { }
) {
contributionProvider.onContributionsChanged(() => {
// Markdown plugin contributions may have changed
this.md = undefined;
});
}
private async getEngine(config: MarkdownItConfig): Promise<MarkdownIt> {
if (!this.md) {
this.md = import('markdown-it').then(async markdownIt => {
let md: MarkdownIt = markdownIt(await getMarkdownOptions(() => md));
for (const plugin of this.contributionProvider.contributions.markdownItPlugins) {
for (const plugin of this.contributionProvider.contributions.markdownItPlugins.values()) {
try {
md = (await plugin)(md);
} catch {