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文本编辑器

Download history 4/week @ 2024-03-10 4/week @ 2024-03-31

156 每月下载量

MIT 许可证

84KB
1.5K SLoC

代码编辑器

一个独立的代码(和文本)编辑器,适用于像我这样的人,他们使用像 pixels 这样的crate编写自己的用户界面。

代码编辑器将其显示渲染到 Vec<u8>,并且完全独立于任何UI crate。它使用 fontdue 进行字体渲染。

示例应用程序

仓库 中包含了一个基于 pixelswinit 的独立示例应用程序。

用法

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() 获取编辑的文本。您还需要将鼠标和键盘事件连接到代码编辑器,请参阅示例应用程序。还有 cutcopypasteundoredo 的插槽。您还需要在您的应用程序中将这些连接起来(示例应用程序不处理它们)。

语法高亮

目前的语法高亮不可配置,但相当通用。目前支持的模式是 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