返回

文章详情

Emacs 31: Markdown-ts-mode 非官方指南

Hacker News2026年8月27日 13:22

简介 如今,Emacs 31 已经发布,许多闪亮的新功能等待我们探索。你可能听说过这个新的 markdown-ts-mode,并决定检查一下。你猜怎么着?在 Emacs 31 版本中,这被标记为实验模式。这意味着什么?你应该使用它吗?它准备好了吗?这只是一个模式的草图吗?将此帖子视为快速指南,以启动和运行此模式,并帮助你找到这些问题的答案。 这在功能上处于什么水平?这是一个实验模式,对吗?你需要选择加入,因此可能并不是所有功能都能完美运行,它还需要更多的测试和反馈。话虽如此,不要让这个标题误导你。这并不意味着该模式在功能上不成熟。正如你将看到的,这个模式功能非常丰富。这个模式已经涵盖了 https://commonmark.org/ 规范的所有内容,以及大多数 https://github.github.com/gfm/ 的内容,还有一些额外的功能,比如对非 ts-mode 的代码块支持,像 elisp、目录工具,以及与外部转换工具的接口,如 pandoc 和 gfm。在自己深入了解之前,你可能需要一些帮助来简单地启用此模式。Tree-sitter 是复杂的。它可能是你第一次使用 tree-sitter,因此快速的 "安装指南" 则在我们的议程上。它在哪里?我需要安装这个模式吗?实验模式意味着 Emacs 默认情况下不会启用该模式,因此在打开一个 .md 文件或通过 M-x markdown-ts-mode RET 调用它时无法使用。你需要加载这个库。和往常一样,在 Emacs 上有不止一种方法可以做到这一切,我很喜欢使用 use-package,因此我倾向于用它来组织我的初始化文件。以下是我建议的初始设置:或者,如果你不把 use-package 纳入你的工具包中:现在模式和 x (额外好的东西)库都已加载,你可以使用它直接访问你的 Markdown 文件。如果你想在不影响自己配置的情况下进行实验,请执行以下操作:将上述内容保存到一个文件中,例如 testing.el。使用 emacs -Q --load 'testing.el' 调用 emacs。现在你就拥有了一个基础的 Emacs 会话,并设置了你的测试环境。这就是我将在本指南的剩余部分中使用的内容。重要提示:不需要下载或将此软件包添加到你的包管理器中。 (现在非常旧并已归档的)MELPA 仓库将拒绝在 Emacs 31 版本及更高版本中安装,而且在功能上非常非常贫乏。如果你正在使用这个,你就没有在用新的内置 markdown-ts-mode,对吗?让我们继续。打开我们的第一个 markdown 文件 为了让你 "看到我看到的内容",我们需要一些图片。如果这是你第一次使用基于 tree-sitter 的模式,让我警告你:虽然 tree-sitter 是极好的、快速的且功能丰富,但它也有自己的一系列任务需要完成,也许还需要调试技能。如果它需要帮助的话。我将尽量在这里覆盖一些;我肯定会忘记其他一些内容。在本指南中,我将使用这个测试文件。它所在的库就是我们的实验室。没有代码存在于那里,记住,所有代码都在 Emacs 本身。在此,继续打开 test.md 文件。重要提示:在这一点上,可能会发生许多事情。如果你在系统中安装了 markdown 的语法,文件已经打开。尽管如此,你可能会被提示,正如我在这里看到的:它意味着 Emacs 在我的系统中(具体来说是在 ~/.emacs.d/tree-sitter/ 中,这是我使用 emacs -Q ... 启动 Emacs 时的默认位置)没有找到 markdown 的语法。Emacs 会提供安装它的选项,这意味着从 markdown-ts-mode 的源代码中已经定义的一个仓库下载和编译它。让我们通过 y 安装它。Emacs 将克隆语法库,编译它,然后继续到第二个语法。是的,markdown 使用两个语法:主语法和一个用于内联解析的语法。我将允许 Emacs 通过 y 安装第二个语法。成功!你应该看到的内容:如果没有,这里是你应该检查的内容,如果有问题:Emacs 是使用 tree-sitter 标志编译的吗?使用 M-: (featurep 'treesit) RET 并检查它是否返回 t。你是否拥有用于 "编译" 语法的工具,如 make、gcc 等?Tree-sitter 需要你的发行版中的一个包,通常命名为 tree-sitter-cli,它提供一个 tree-sitter 二进制文件,你可以通过 tree-sitter --version 检查你是否拥有它。这是所有 tree-sitter 模式的常见头痛问题。许多人喜欢不编译自己的语法,而是使用一些来自他们信任的地方的已编译文件,比如他们自己的发行版仓库或具有数百个预编译语法的包。我不会深入探讨;获取语法有很多种方法,在本指南中我将坚持"自行构建"的方法。看,我有点欺骗了你。我告诉你你应该看到那个,但实际上, "你看到我看到的内容吗" 应该是这样:我们提供完整的文件,在这里,有几种默认主题可以供你比较,以检查你的设置是否完整。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡