#syntect #语法高亮 #tui #ratatui #ui #翻译 #

syntect-tui

syntect.rs 和 tui.rs 风格类型之间的轻量级转换层

7个稳定版本

3.0.3 2024年7月25日
3.0.2 2024年3月8日
3.0.1 2024年1月7日
2.0.0 2023年10月12日
1.0.1 2022年12月27日

#210 in 命令行界面

Download history 82/week @ 2024-04-27 135/week @ 2024-05-04 78/week @ 2024-05-11 79/week @ 2024-05-18 61/week @ 2024-05-25 71/week @ 2024-06-01 35/week @ 2024-06-08 26/week @ 2024-06-15 39/week @ 2024-06-22 30/week @ 2024-06-29 70/week @ 2024-07-06 66/week @ 2024-07-13 188/week @ 2024-07-20 361/week @ 2024-07-27 86/week @ 2024-08-03 41/week @ 2024-08-10

683 每月下载
用于 5 crates

MIT 许可证

18KB
156 代码行,不包括注释

syntect-tui Build Status

syntect 和 ratatui 风格类型之间的轻量级转换层。如果你正在构建一个由 tui.rs 驱动的 UI 的 CLI 应用程序并且需要语法高亮,那么这个 crate 可能对你很有用!

鉴于这个 crate 的范围有限,我目前没有计划扩展现有功能。然而,我愿意接受请求和/或贡献,所以请随意分叉并提交 pull request。

入门

syntect-tuicrates.io 上可用。您可以通过将以下行添加到您的 Cargo.toml 来安装它

syntect-tui = "3.0"

文档

有关更多信息,请阅读 文档

示例代码

基于 syntect 的简单示例,以下是一个解析一些 Rust 代码,使用 syntect 进行高亮并将其转换为 ratatui::text::Line 以在 tui 应用程序中渲染的代码片段

use syntect::easy::HighlightLines;
use syntect::parsing::SyntaxSet;
use syntect::highlighting::{ThemeSet, Style};
use syntect::util::LinesWithEndings;
use syntui::into_span;

let ps = SyntaxSet::load_defaults_newlines();
let ts = ThemeSet::load_defaults();
let syntax = ps.find_syntax_by_extension("rs").unwrap();
let mut h = HighlightLines::new(syntax, &ts.themes["base16-ocean.dark"]);
let s = "pub struct Wow { hi: u64 }\nfn blah() -> u64 {}";
for line in LinesWithEndings::from(s) { // LinesWithEndings enables use of newlines mode
    let line_spans: Vec<tui::text::Span> =
        h.highlight_line(line, &ps)
         .unwrap()
         .into_iter()
         .filter_map(|segment| into_span(segment).ok())
         .collect();
    let spans = tui::text::Spans::from(line_spans);
    print!("{:?}", spans);
}

许可证 & 致谢

所有代码均在 MIT 许可证下发布。感谢 trishumefdehauratatui 社区 构建 sytecttuiratatui!还要感谢为维护此 crate 做出贡献的同行 Rustaceans!

依赖项

~8–16MB
~181K SLoC