diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts index e7dde8f57a52986ab40fd9e8933de8310dd6d789..a262f876257f1881c6fee211fd72a6996cb156d3 100644 --- a/src/vs/workbench/api/node/extHostTypeConverters.ts +++ b/src/vs/workbench/api/node/extHostTypeConverters.ts @@ -150,14 +150,27 @@ export namespace MarkdownString { return markup.map(MarkdownString.from); } + interface Codeblock { + language: string; + value: string; + } + + function isCodeblock(thing: any): thing is Codeblock { + return typeof thing === 'object' + && typeof (thing).language === 'string' + && typeof (thing).value === 'string'; + } + export function from(markup: vscode.MarkdownString | vscode.MarkedString): htmlContent.IMarkdownString { - if (htmlContent.isMarkdownString(markup)) { + if (isCodeblock(markup)) { + const { language, value } = markup; + return { value: '```' + language + '\n' + value + '\n```\n' }; + } else if (htmlContent.isMarkdownString(markup)) { return markup; - } else if (typeof markup === 'string' || !markup) { - return { value: markup || '', isTrusted: true }; + } else if (typeof markup === 'string') { + return { value: markup, isTrusted: true }; } else { - const { language, value } = markup; - return { value: '```' + language + '\n' + value + '\n```' }; + return { value: '' }; } } export function to(value: htmlContent.IMarkdownString): vscode.MarkdownString {