diff --git a/src/vs/base/browser/htmlContentRenderer.ts b/src/vs/base/browser/htmlContentRenderer.ts index 38db8a72cca..a7719542863 100644 --- a/src/vs/base/browser/htmlContentRenderer.ts +++ b/src/vs/base/browser/htmlContentRenderer.ts @@ -9,7 +9,7 @@ import DOM = require('vs/base/browser/dom'); import { defaultGenerator } from 'vs/base/common/idGenerator'; import { escape } from 'vs/base/common/strings'; import { TPromise } from 'vs/base/common/winjs.base'; -import { IHTMLContentElement, MarkedString } from 'vs/base/common/htmlContent'; +import { IHTMLContentElement, MarkedString, removeMarkdownEscapes } from 'vs/base/common/htmlContent'; import { marked } from 'vs/base/common/marked/marked'; import { IMouseEvent } from 'vs/base/browser/mouseEvent'; @@ -127,6 +127,9 @@ function _renderHtml(content: IHTMLContentElement, options: RenderOptions = {}): return ''; }; renderer.link = (href, title, text): string => { + // Remove markdown escapes in href and title. Workaround for https://github.com/chjj/marked/issues/829 + title = removeMarkdownEscapes(title); + href = removeMarkdownEscapes(href); return `${text}`; }; renderer.paragraph = (text): string => { diff --git a/src/vs/base/common/htmlContent.ts b/src/vs/base/common/htmlContent.ts index 57f8a8dc960..9a3caf34ece 100644 --- a/src/vs/base/common/htmlContent.ts +++ b/src/vs/base/common/htmlContent.ts @@ -71,6 +71,12 @@ export function textToMarkedString(text: string): MarkedString { return text.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash } +export function removeMarkdownEscapes(text: string): string { + if (!text) { + return text; + } + return text.replace(/\\([\\`*_{}[\]()#+\-.!])/g, '$1'); +} export interface IHTMLContentElement { /**