diff --git a/extensions/markdown-language-features/src/markdownEngine.ts b/extensions/markdown-language-features/src/markdownEngine.ts index 7522eb8b782dca8008b525c879cdb68124c458c3..e6c422c14ce98431ffd132649aa4d6f078ce2d82 100644 --- a/extensions/markdown-language-features/src/markdownEngine.ts +++ b/extensions/markdown-language-features/src/markdownEngine.ts @@ -44,10 +44,10 @@ export class MarkdownEngine { } if (lang && hljs.getLanguage(lang)) { try { - return `
${hljs.highlight(lang, str, true).value}
`; + return `
${hljs.highlight(lang, str, true).value}
`; } catch (error) { } } - return `
${this.md!.utils.escapeHtml(str)}
`; + return `
${this.md!.utils.escapeHtml(str)}
`; } }).use(mdnh, { slugify: (header: string) => this.slugifier.fromHeading(header).value @@ -57,10 +57,12 @@ export class MarkdownEngine { this.usePlugin(await plugin); } - for (const renderName of ['paragraph_open', 'heading_open', 'image', 'code_block', 'blockquote_open', 'list_item_open']) { + for (const renderName of ['paragraph_open', 'heading_open', 'image', 'code_block', 'fence', 'blockquote_open', 'list_item_open']) { this.addLineNumberRenderer(this.md, renderName); } + this.addFencedRenderer(this.md); + this.addLinkNormalizer(this.md); this.addLinkValidator(this.md); } @@ -127,6 +129,18 @@ export class MarkdownEngine { }; } + private addFencedRenderer(md: any): void { + const original = md.renderer.rules['fenced']; + md.renderer.rules['fenced'] = (tokens: any, idx: number, options: any, env: any, self: any) => { + const token = tokens[idx]; + if (token.map && token.map.length) { + token.attrJoin('class', 'hljs'); + } + + return original(tokens, idx, options, env, self); + }; + } + private addLinkNormalizer(md: any): void { const normalizeLink = md.normalizeLink; md.normalizeLink = (link: string) => { diff --git a/extensions/markdown-language-features/src/util/topmostLineMonitor.ts b/extensions/markdown-language-features/src/util/topmostLineMonitor.ts index 7b51cf56dbb1d08417e234156287ffad87f1f166..700a3e376c19efbb5a5d4246addaac9f60ea96a1 100644 --- a/extensions/markdown-language-features/src/util/topmostLineMonitor.ts +++ b/extensions/markdown-language-features/src/util/topmostLineMonitor.ts @@ -18,7 +18,7 @@ export class MarkdownFileTopmostLineMonitor { vscode.window.onDidChangeTextEditorVisibleRanges(event => { if (isMarkdownFile(event.textEditor.document)) { const line = getVisibleLine(event.textEditor); - if (line) { + if (typeof line === 'number') { this.updateLine(event.textEditor.document.uri, line); } }