为什么会有这个问题呢😅?经常看过我博客的人应该都知道,我之前写过不少有关MLIR和LLVM的博客,但Hexo使用的highlight.js只能渲染LLVM IR,MLIR IR就会自动降级为Plaintext

image-20241227213539031

这种情况在Hexo上也还可以接受,但转到Astro上后,Shiki的代码渲染给我感觉就笨的多:不仅对于语言名称大小写不敏感,导致早年写的一堆代码无法渲染渲染😅连LLVM IR的渲染也给我搞没了。

这忍不了了,得好好处理下😅

添加语法文件

看下Shiki和Expressive Code的文档很容易理解,难点在于如何找到合适的json格式TextMate文件进行导入

Load Custom Languages | Shiki

syntax-highlighting/#configuration

这里有个小技巧:可以去VS Code的插件里面找对应语言的语法高亮插件,那些插件的仓库里多半有描述语法的json文件

LLVM IR -> colejcummins/llvm-syntax-highlighting

MLIR IR -> llvm/vscode-mlir

Note: Shiki自己的语法描述文件是放在 shikijs/textmate-grammars-themes 这个仓库里的

载入

参考这个commit,理论上使用Shiki进行渲染的系统都可以参照这个进行操作:

feat: add support for LLVM IR and MLIR IR syntax highlighting in markdown,

最终效果

其实就是这篇文章:如何愉快的运行一个MLIR程序

image-20241227211508817

image-20241227211527478