14 个版本
0.3.9 | 2023 年 6 月 1 日 |
---|---|
0.3.8 | 2023 年 3 月 28 日 |
0.3.3 | 2023 年 1 月 17 日 |
0.3.2 | 2022 年 10 月 29 日 |
0.1.0 | 2022 年 8 月 28 日 |
#110 在 文本编辑器
156 每月下载量
84KB
1.5K SLoC
代码编辑器
一个独立的代码(和文本)编辑器,适用于像我这样的人,他们使用像 pixels 这样的crate编写自己的用户界面。
代码编辑器将其显示渲染到 Vec<u8>
,并且完全独立于任何UI crate。它使用 fontdue 进行字体渲染。
示例应用程序
在 仓库 中包含了一个基于 pixels
和 winit
的独立示例应用程序。
用法
use code_editor::prelude::*;
let mut code_editor = CodeEditor::new();
code_editor.set_font("fonts/Source_Code_Pro/static/SourceCodePro-Regular.ttf");
code_editor.set_mode(CodeEditorMode::Rhai);
code_editor.set_font_size(17.0);
code_editor.set_text("Your source code".to_string());
在您的绘制循环中,您可以绘制编辑器
code_editor.draw(frame, (0, 0, width, height), width);
第二个参数是绘制矩形到您的帧中,最后一个参数是像素步长。
您可以通过 get_text()
获取编辑的文本。您还需要将鼠标和键盘事件连接到代码编辑器,请参阅示例应用程序。还有 cut
、copy
、paste
、undo
和 redo
的插槽。您还需要在您的应用程序中将这些连接起来(示例应用程序不处理它们)。
语法高亮
目前的语法高亮不可配置,但相当通用。目前支持的模式是 Rhai 和 Text(没有高亮)。我将在未来尝试使语法高亮更可配置,同时您可以在需要的情况下调整源代码。
主题
默认主题的实现如下
impl Theme {
pub fn new() -> Self {
Self {
background : [34, 34, 36, 255],
line_numbers : [160, 160, 160, 255],
line_numbers_bg : [30, 30, 32, 255],
text : [255, 255, 255, 255],
cursor : [170, 170, 170, 255],
identifier : [120, 214, 255, 255],
number : [159, 197, 146, 255],
keywords : [45, 133, 200, 255],
brackets : [226, 73, 146, 212],
comments : [69, 128, 56, 212],
string : [197, 117, 92, 212],
error : [237, 55, 54, 255],
}
}
}
您可以在 CodeEditor 结构的主题属性中调整它,或者您可以通过 set_theme(theme);
函数设置一个新的主题。
免责声明
代码编辑器正在积极维护,我将在使用它为自己的应用程序时不断改进它。
依赖关系
~3MB
~48K SLoC