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 {
/**