visual-studio-code - 如何调用 Visual Studio Code Markdown 渲染器
问题描述
markdown-it
支持插件生态系统的 Visual Studio Code Markdown 预览版使用。
此渲染管道的扩展已记录在案,但这并未考虑除 markdown 预览窗格之外的客户端的可能性。
如何使用内置的 Markdown 渲染?
如果有帮助,我的用例是打印。我为 Visual Studio Code 编写了一个打印扩展,它的自然增强是在打印时呈现 Markdown。
目前我正在有效地重新创建渲染管道。除了明显的冗余之外,我想使用内置渲染的原因是继承任何配置的扩展,以便打印输出与预览功能相匹配。
期望 Markdown 预览窗格被实现为作为渲染管道客户端的虚拟文档似乎是合理的。哪些存储库和文件包含 Markdown 预览窗格的实现?
解决方案
似乎有一个 MarkdownEngine 类根据配置管理插件的加载,虽然似乎没有办法引用 MarkdownIt 实例,但这里定义了一个渲染方法
所以从表面上看,你需要做的就是导入 MarkdownEngine 并使用这个方法。但是,目前不支持此功能。我已经记录了一个功能请求。
作者不想暴露 MarkdownEngine,但他们建议提供一个渲染方法。
这是最终的答案,但现在没有任何帮助。在此期间,可以获得对 Visual Studio CodemarkdownIt
实例的引用。
将您的扩展更改为伪装成 Markdown 插件。请注意,在添加插件的文档中它说:
然后,在扩展的主激活函数中,返回一个对象,其函数名为 extendMarkdownIt。这个函数接受当前的 MarkdownIt 实例并且必须返回一个新的 MarkdownIt 实例:
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;
然后通过将其放在您的激活方法的末尾来捕获引用。
return { extendMarkdownIt(mdparam: any) { return md = mdparam; } };
当管道初始化时,它将调用您提供的回调,并传递对其自身的引用。您的其余代码可以从该属性中获取。
无论您是否使用 Markdown 预览窗格,此技巧都取决于提前加载渲染管道。很高兴它确实如此。
推荐阅读
- php - 从不需要的字符格式化输入字符串
- linux - 如何将子进程内存与 /usr/bin/time 相加
- typescript - 如何使 TypeScript 类型推断适用于数组
- python - PyQt - 将组合框文本传递给变量
- docker - 群中的 Docker 卷
- postgresql - Postgres 外部数据包装器 (FDW) 的最大表/查询大小限制?
- java - 我正在学习多维数组并尝试用 for 将它们写出来。我找到了,但我不明白它是如何工作的
- prolog - 处理未绑定的变量和列表
- sql-server - 在 SQL Server 中允许使用希伯来语字符
- c++ - C++ 等价于 R 的 set.seed() 函数