10个版本
0.2.6 | 2021年10月7日 |
---|---|
0.2.5 | 2021年9月21日 |
0.1.2 | 2021年9月8日 |
0.1.0 | 2020年10月14日 |
#1466 in 文本处理
42 每月下载量
2MB
27K SLoC
Ultron
Ultron是一个完全用Rust编写的基于Web的等宽文本编辑器,具有语法高亮功能。
特性
- 真正的等宽GUI,支持多宽字符,如CJK和Unicode框绘制。
- 快速,打字延迟约为15ms,光标移动约为10ms。
- 块模式
- 允许您进行矩形选择
- 虚拟编辑
- 允许您在编辑器的任何地方输入,即使在没有行的区域
静态站点生成器的语法高亮器
Ultron附带ultron-ssg
crate,可用于静态站点生成器的语法高亮。
use ultron_ssg;
fn main() {
let content = r#"
fn main(){
println!("hello from ultron-ssg");
}
"#
let html =
ultron_ssg::render_to_string(content, "rust", Some("gruvbox-dark"));
std::fs::create_dir_all("out").expect("must create dir");
std::fs::write("out/hello.html", html).expect("must write to file");
}
用例
我编写了这个代码编辑器,因为我有非常具体的用例
- GUI编辑器的真实等宽,支持多宽字符,使得它们与其他行的字符在字符宽度上对齐。
GUI编辑器在处理CJK字符或任何超过1个字符宽的Unicode字符时,对等宽字体的处理并不好。
终端没有问题显示它们。GUI中的字体似乎会根据字符的排列紧密程度调整字符。这对于阅读很好,但不适用于Ascii图表。
解决方案是将每个字符包裹在一个<div>
中,以强制它们在一个单元格中。宽字符将使用<div class"wide_{n}">
,其中n
是unicode_width。这个字符的样式将使用正常宽度的倍数来设置。
构建和运行编辑器
git clone https://github.com/ivanceras/ultron.git
cd ultron
./serve.sh
然后,导航到https://127.0.0.1:4002
演示
Patreon链接
依赖项
~15–26MB
~379K SLoC