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 `${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);
}
}