提交 c371e0ba 编写于 作者: B Benjamin Pasero

notifications - more markdown config

上级 70ac21b9
......@@ -9,8 +9,9 @@ import * as DOM from 'vs/base/browser/dom';
import { defaultGenerator } from 'vs/base/common/idGenerator';
import { escape } from 'vs/base/common/strings';
import { removeMarkdownEscapes, IMarkdownString } from 'vs/base/common/htmlContent';
import { marked, MarkedRenderer } from 'vs/base/common/marked/marked';
import { marked, MarkedRenderer, MarkedOptions } from 'vs/base/common/marked/marked';
import { IMouseEvent } from 'vs/base/browser/mouseEvent';
import { assign } from 'vs/base/common/objects';
export interface RenderOptions {
className?: string;
......@@ -18,7 +19,7 @@ export interface RenderOptions {
actionCallback?: (content: string, event?: IMouseEvent) => void;
codeBlockRenderer?: (modeId: string, value: string) => Thenable<string>;
codeBlockRenderCallback?: () => void;
joinRendererConfiguration?: (renderer: MarkedRenderer) => void;
joinRendererConfiguration?: (renderer: MarkedRenderer) => MarkedOptions;
}
function createElement(options: RenderOptions): HTMLElement {
......@@ -157,14 +158,19 @@ export function renderMarkdown(markdown: IMarkdownString, options: RenderOptions
});
}
const markedOptions: MarkedOptions = {
sanitize: true,
renderer
};
if (options.joinRendererConfiguration) {
options.joinRendererConfiguration(renderer);
const additionalMarkedOptions = options.joinRendererConfiguration(renderer);
if (additionalMarkedOptions) {
assign(markedOptions, additionalMarkedOptions);
}
}
element.innerHTML = marked(markdown.value, {
sanitize: true,
renderer
});
element.innerHTML = marked(markdown.value, markedOptions);
signalInnerHTML();
return element;
......
......@@ -26,6 +26,7 @@ import { DropdownMenuActionItem } from 'vs/base/browser/ui/dropdown/dropdown';
import { INotificationViewItem, NotificationViewItem } from 'vs/workbench/common/notifications';
import { ClearNotificationAction, ExpandNotificationAction, CollapseNotificationAction, ConfigureNotificationAction } from 'vs/workbench/browser/parts/notifications/notificationsActions';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { MarkedOptions } from 'vs/base/common/marked/marked';
export class NotificationsListDelegate implements IDelegate<INotificationViewItem> {
......@@ -130,7 +131,16 @@ class NotificationMessageMarkdownRenderer {
public static render(markdown: IMarkdownString, actionCallback?: (content: string) => void): HTMLElement {
return renderMarkdown(markdown, {
inline: true,
joinRendererConfiguration: renderer => NotificationMessageMarkdownRenderer.MARKED_NOOP_TARGETS.forEach(fn => renderer[fn] = NotificationMessageMarkdownRenderer.MARKED_NOOP),
joinRendererConfiguration: renderer => {
// Overwrite markdown render functions as no-ops
NotificationMessageMarkdownRenderer.MARKED_NOOP_TARGETS.forEach(fn => renderer[fn] = NotificationMessageMarkdownRenderer.MARKED_NOOP);
return {
gfm: false, // disable GitHub style markdown,
smartypants: false // disable some text transformations
} as MarkedOptions;
},
actionCallback
});
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册