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文本编辑器

Download history 494/week @ 2024-04-20 480/week @ 2024-04-27 599/week @ 2024-05-04 630/week @ 2024-05-11 604/week @ 2024-05-18 553/week @ 2024-05-25 665/week @ 2024-06-01 671/week @ 2024-06-08 877/week @ 2024-06-15 561/week @ 2024-06-22 653/week @ 2024-06-29 786/week @ 2024-07-06 749/week @ 2024-07-13 805/week @ 2024-07-20 748/week @ 2024-07-27 1419/week @ 2024-08-03

3,849 每月下载量
8 个 crate(5 个直接) 中使用

MIT 许可证

4.5MB
138K SLoC

C 137K SLoC // 0.0% comments JavaScript 1K SLoC // 0.2% comments Rust 410 SLoC Scheme 78 SLoC // 0.0% comments

tree-sitter-markdown

CI discord matrix npm crates

tree-sitter 的 Markdown 解析器。

screenshot

该解析器旨在根据 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/949https://github.com/MDeiml/tree-sitter-markdown/issues/126https://github.com/MDeiml/tree-sitter-markdown/issues/93

依赖关系

~2.7–4MB
~71K SLoC