1 个不稳定版本
0.0.0 | 2022年8月13日 |
---|
#21 在 #helix
21KB
309 行
tree-painter – 一个基于tree-sitter和Helix编辑器主题的源代码语法高亮库,并将其渲染为HTML和CSS。
与使用基于正则表达式的解析器和基于Sublime-2主题定义的syntect不同,tree-painter使用tree-sitter来快速准确地解析源代码,以及使用Helix TOML主题来匹配已识别语言项的颜色和文本样式。
用法
首先,您需要定义要高亮的语言类型
// If you know what you are going to highlight ...
let cpp_lang = tree_painter::Lang::Cpp;
// ... if you don't, you can guess from the file extension.
let rust_lang = tree_painter::Lang::from("file.rs").unwrap();
然后加载一个Helix主题
let data = std::fs::read_to_string("custom.toml").unwrap();
let custom = tree_painter::Theme::from_helix(&data).unwrap();
// or use a bundled theme
let theme = tree_painter::Theme::from_helix(&tree_painter::themes::CATPPUCCIN_MOCHA).unwrap();
最后渲染代码
let mut renderer = tree_painter::Renderer::new(theme);
let source = std::fs::read_to_string("file.rs").unwrap();
for line in renderer.render(&rust_lang, source.as_bytes()).unwrap() {
println!("{line}");
}
请注意,每行都使用<span>
和CSS类进行格式化。为了将CSS类映射到主题的颜色,请适当包含[Renderer::css()
]的输出。
功能标志
默认功能标志启用了支持所有支持tree-sitter 0.20的tree-sitter语法的支持,以及一些捆绑的themes
。您可以选择退出并启用特定的语法以减少冗余:
[dependencies]
tree-painter = { version = "0", default-features = false, features = ["tree-sitter-c"] }
依赖项
~62MB
~2M SLoC