簡體   English   中英

如何調用VSCode markdown渲染器

[英]How to invoke the VSCode markdown renderer

VS Code markdown預覽版使用markdown-it ,它支持插件生態系統。

該渲染管道的擴展已記錄在案,但這並未考慮除markdown預覽窗格以外的客戶端的可能性。

誰能提供使用內置降價渲染的指南?

我的用例(如果有幫助的話)是打印。 我為vs代碼寫了一個打印擴展程序,它的自然增強是在打印時渲染markdown。 目前,我正在有效地重新創建渲染管道。 除了明顯的冗余外,我想使用內置渲染的原因是繼承了所有已配置的擴展名,以便打印輸出與預覽功能匹配。

期望將markdown預覽窗格實現為虛擬文檔 ,這是呈現管道的客戶端,這似乎是合理的。 有人知道哪些回購和文件包含markdown預覽窗格的實現嗎?

似乎有一個MarkdownEngine類,它根據config管理插件的加載,雖然似乎沒有引用MarkdownIt實例的方法,但這里定義了一個render方法

https://github.com/Microsoft/vscode/blob/fa5306d67bb934c42d206fb3c7e028dff00d530f/extensions/markdown-language-features/src/markdownEngine.ts#L96

因此,表面上,您需要做的就是導入MarkdownEngine並使用此方法。 但是,當前不支持此功能。 我已經記錄了功能請求

作者不想公開MarkdownEngine,而是建議提供一個render方法。


這是最終的答案,但目前無濟於事。 在此期間,可以獲取對VS Code的markdownIt實例的引用。

將您的擴展名偽裝為markdown插件。 請注意,在添加插件的文檔中它說

然后,在擴展程序的主要激活函數中,返回一個帶有名為extendMarkdownIt的函數的對象。 此函數采用當前的markdown-it實例,並且必須返回一個新的markdown-it實例:

 import * as vscode from 'vscode'; export function activate(context: vscode.ExtensionContext) { return { extendMarkdownIt(md: any) { return md.use(require('markdown-it-emoji')); } }; } 

這是捕獲markdown渲染器的機會。 修改您的擴展以顯示為markdown插件

"contributes": {
    "markdown.markdownItPlugins": true,

給它提供一個私有屬性,以保存對markdownIt實例的引用。 不要打擾強類型它,這將需要您捆綁MarkdownIt庫。

var md: any;

然后通過將其放在您的activate方法的末尾來捕獲參考。

return { extendMarkdownIt(mdparam: any) { return md = mdparam; } };

當管道初始化時,它將調用您提供的回調,並傳遞對其自身的引用。 您的其余代碼可以從屬性中獲取。

無論是否使用降價預覽窗格,此技巧都取決於渲染管道的早期加載。 令人高興的是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM