11 个版本
0.2.3 | 2024 年 3 月 22 日 |
---|---|
0.2.2 | 2024 年 3 月 22 日 |
0.1.7 | 2023 年 11 月 10 日 |
0.1.5 | 2023 年 3 月 5 日 |
0.0.1 | 2022 年 4 月 26 日 |
#30 在 文本编辑器
3,849 每月下载量
在 8 个 crate(5 个直接) 中使用
4.5MB
138K SLoC
tree-sitter-markdown
tree-sitter 的 Markdown 解析器。
该解析器旨在根据 CommonMark 规范 读取 Markdown,但也包含来自不同来源(如 GitHub 语法高亮 Markdown)的一些规范扩展。这些可以在编译时开启或关闭。具体信息请参见 扩展
目标
尽管这个解析器已经存在一段时间,并且明显的问题已经基本解决,但输出中仍然存在许多不准确之处。这些不准确之处源于将复杂的格式(如 Markdown)限制在相当严格的 tree-sitter 解析规则中。
因此,不建议在正确性很重要的情况下使用此解析器。此解析器的主要目标是提供用于类似 neovim 和 helix 这样的解析器中的语法高亮所需的语法信息。
贡献
欢迎所有贡献。有关详细信息,请参阅 CONTRIBUTING.md。
扩展
可以通过环境变量在编译时启用扩展。其中一些默认开启,可以通过环境变量 NO_DEFAULT_EXTENSIONS
禁用。
名称 | 环境变量 | 规范 | 默认 | 同时启用 |
---|---|---|---|---|
GitHub 语法高亮 Markdown | EXTENSION_GFM |
链接 | ✓ | 任务列表、删除线、管道表格 |
任务列表 | EXTENSION_TASK_LIST |
链接 | ✓ | |
删除线 | EXTENSION_STRIKETHROUGH |
链接 | ✓ | |
管道表格 | EXTENSION_PIPE_TABLE |
链接 | ✓ | |
YAML 元数据 | EXTENSION_MINUS_METADATA |
链接 | ✓ | |
TOML 元数据 | EXTENSION_PLUS_METADATA |
链接 | ✓ | |
标签 | 扩展标签 |
链接 | ||
维基链接 | EXTENSION_WIKI_LINK |
链接 |
在编辑器中的使用
有关如何在特定编辑器中使用此解析器的指南,请参阅该编辑器的特定文档,例如:
独立使用
要使用这两种语法,首先使用块语法解析文档。然后使用内联语法执行第二次解析,使用 ts_parser_set_included_ranges
指定哪些部分是内联内容。这些部分被标记为 inline
节点。这些内联节点的子节点应排除在这些范围之外。请参阅 lib.rs
文件中的示例实现,该文件位于 bindings
文件夹中。
与WASM一起使用
不幸的是,目前使用此解析器与WASM/web-tree-sitter无法直接工作。这是因为解析器使用了一些tree-sitter默认未导出的C函数。要修复此问题,可以将解析器静态链接到tree-sitter。请参阅https://github.com/tree-sitter/tree-sitter/issues/949、https://github.com/MDeiml/tree-sitter-markdown/issues/126 和 https://github.com/MDeiml/tree-sitter-markdown/issues/93。
依赖关系
~2.7–4MB
~71K SLoC