提交 83d52c12 编写于 作者: J Johannes Rieken

chore - prevent double markdown parse fyi @mjbvz

上级 18faaaf0
......@@ -19,34 +19,24 @@ export async function renderMarkdownDocument(
extensionService: IExtensionService,
modeService: IModeService,
): Promise<string> {
const renderer = await getRenderer(text, extensionService, modeService);
return marked(text, { renderer });
}
async function getRenderer(
text: string,
extensionService: IExtensionService,
modeService: IModeService,
): Promise<marked.Renderer> {
let result: Promise<ITokenizationSupport | null>[] = [];
const renderer = new marked.Renderer();
renderer.code = (_code, lang) => {
const modeId = modeService.getModeIdForLanguageName(lang);
if (modeId) {
result.push(extensionService.whenInstalledExtensionsRegistered().then((): PromiseLike<ITokenizationSupport> | null => {
modeService.triggerMode(modeId);
return TokenizationRegistry.getPromise(modeId);
}));
const highlight = (code: string, lang: string, callback: ((error: any, code: string) => void) | undefined): any => {
if (!callback) {
return code;
}
extensionService.whenInstalledExtensionsRegistered().then(async () => {
let support: ITokenizationSupport | undefined;
const modeId = modeService.getModeIdForLanguageName(lang);
if (modeId) {
modeService.triggerMode(modeId);
support = await TokenizationRegistry.getPromise(modeId) ?? undefined;
}
callback(null, `<code>${tokenizeToString(code, support)}</code>`);
});
return '';
};
marked(text, { renderer });
await Promise.all(result);
renderer.code = (code, lang) => {
const modeId = modeService.getModeIdForLanguageName(lang);
return `<code>${tokenizeToString(code, modeId ? TokenizationRegistry.get(modeId)! : undefined)}</code>`;
};
return renderer;
return new Promise<string>((resolve, reject) => {
marked(text, { highlight }, (err, value) => err ? reject(err) : resolve(value));
});
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册