基于treesitter的着色基本完成, 欢迎大家尝试
- code block natively 类似org-mode 和markdown-mode
- markdown-inline 解析 inline code 已实现
- footnote, highlight, emoji等等 tree-sitter 不支持的 feature 用regexp 来实现,
请编译最新的分支, 毕竟 treesit.el最近变动频繁.
基于treesitter的着色基本完成, 欢迎大家尝试
请编译最新的分支, 毕竟 treesit.el最近变动频繁.
表格高亮支持吗?
手动点赞
你想要什么效果? 是背景高亮吗? 目前我只是设置了不同颜色的 table header, 只有 inline code 和 fenced code block 有背景高亮, 需要的话我可以加.
加了几张截图, 大家可以参考下. 我发现官方好像有一个 markdown-ts-mode
, 不过比较简单.
目前 emacs-devel 也在讨论加 markdown-ts-mode
https://lists.gnu.org/archive/html/emacs-devel/2025-02/msg00681.html
https://lists.gnu.org/archive/html/emacs-devel/2025-03/msg00019.html
treesit.el最近有关嵌套 parser 的改动相当频繁, 说不定就是为了适应这个.
markdown-mode 本身的实现还是很完善的,但是看起来很可惜因为 FSF 的问题没办法合并进主线了?
尤其是有一些 nice-to-have 的东西,比如利用 edit-src 实现类似 org-mode 的 C-c '
的可以单独编辑代码块的功能。还有 code block 的 highlight 做的也没什么问题。
虽然理论上 treesit 的很大优势之一就是可以做 injection 因此多语言共存会很方便。但是 treesit 我之前研究过如何做 grammar injection (主要是想给字符串注入 sql 高亮),我的粗略印象是 injection 仍然需要做大量的手动活,对于每一个被 inject 的语言都需要做一些手动的工作,并且还需要被 inject 的语言也实现了 ts-mode。因此对于 markdown 这样的需要任意语言高亮的话,似乎不好做自动化?所以目前来看仍然是通过传统方法做 code block 高亮更方便?
对于 codeblock 这种可以是任意语言的代码块来说,只能使用类似于org-mode和markdown-mode的处理方法,这边我实现了一些markdown tree-sitter支持的固定的injection: 比如 toml/yaml格式的 frontmatter(hugo使用的那种), html的嵌入等等.html, yaml,toml 都必须要安装好对应的 parsers, 否则的话讲没有着色,只是正常文本.
markdown-mode 最大的问题还是性能问题, 纯粹靠regex pattern实现,太繁琐了. md-ts-mode 目前遇到了一些parser的着色错误问题是因为本身 markdown-inline parser 解析文本就是错的, 那我也没办法了, 恐怕要上游去修复.
期待的效果:
那不行, 现在还差得远 , 我看了一下, table cell 默认是 markdown parser来解析, 而不是 markdown-inline, 所以treesit不行, 只有两种办法
说到底, pipe-table 这种格式不是markdown基本语法, 扩展类的语法和gfm特有的格式很多 treesitter 都实现的不完全, 连 footnote 的识别 grammar都没做, 我看是毫无兴趣了, 我打算以后用font-lock-keywords来补强看看.
Update: 表格内高亮已经解决! 不过code inline 着色错误的问题还是存在, 离可以使用还有一段距离.
赞,晚上回去更新
不太了解 md-ts-code-block
为什么继承的是 secondary-selection
,但感觉继承 org-block
比较好,secondary-selection
因为突出显示,应该都是较为艳丽的颜色。
我不用org, 也不想因为一个face来引入org, 所以默认选了secondary-selection, 可以自己选择合适的背景颜色来覆盖吧
markdown-ts-mode 已经合并到 Emacs 31.0.50 了。
有点简陋了
我突然发现不能编译为elc使用, 一旦编译之后,整个markdown着色就不正常了, 不知道是我机器的问题还是大家都有的问题.
建议题主直接把 md-ts-mode 贡献到 master和 markdown-ts-mode 合并好了。
我也出现了这种现象。前几天是用 straight 下载的,所以自动编译程 elc 了,结果效果就很糊。