Editor
Editor 是源代码编辑控件。它建立在共享文本引擎之上,增加语言、行号槽、折叠、空白字符显示、文本装饰、高亮、搜索基础、诊断与 LSP 扩展。单行值使用 Input,普通多行文本使用 Textarea。
#语言编辑规则
Base 编辑器接受 LanguageConfig 及独立的 auto_close / smart_indent 选项。
它读取已注册的语言配置,不加载解析器。Component 在初始化时安装 LanguageProvider,
提供内置语言名称、默认规则及语法提供者;Base 使用者也可通过 set_language_provider
安装自己的服务,并用 set_language_config 配置语言规则。
配置字段及语言注册方式参见
语言编辑规则。直接使用 Base 时,从
gpui_kit::base::input 导入相同的配置类型。
#快捷键
Base 与样式组件共享键盘和鼠标行为。各平台快捷键、多光标编辑和矩形列选的细节请参阅 快捷键与矩形列选。
#搜索
编辑器内置搜索面板。编辑器聚焦时按 Ctrl-F(Windows/Linux)或 Cmd-F(macOS)打开。编程式 API(open_search、close_search、set_searchable)与只读行为参见
搜索。
#导入
use gpui_kit::base::input::{Editor, EditorState, TabSize};
#基本用法
let editor = cx.new(|cx| {
EditorState::new(window, cx)
.language("rust")
.line_number(true)
.folding(true)
.tab_size(TabSize { tab_size: 4, hard_tabs: false })
.default_value("fn main() {\n println!(\"Hello\");\n}")
});
Editor::new(&editor)
#空白字符与装饰
通过 show_whitespaces(true) 显示空白字符,通过 create_decorations_collection 创建随文本编辑自动跟踪范围的装饰集合。只要装饰仍需生效,就应保留返回的 collection。
#高亮与语言功能
InputHighlighterFactory、InputHighlighter、诊断类型和 LSP provider trait 是提供给设计系统作者的底层扩展点,作用于共享的 InputBaseState。样式组件的应用通常应通过编辑器集成配置它们,而不是普通文本框。
可运行展示使用 syntect,在 WASM 中选择兼容的 fancy-regex 后端。Syntect 只识别语法 scope;适配器把它们映射为语义名称,再由 HighlightStyleResolver 从应用主题解析颜色和字体样式。示例会在每次编辑后重新解析短代码;生产集成可以在 InputHighlighter 中保留增量解析状态。
#字体与表现
Editor 没有独立字体设置,而是使用环境文本样式。可在外层元素设置 font_family、text_size、字重和行高。应用负责编辑器颜色、行号槽、折叠图标和覆盖层;使用 InputEditorStyle、FoldIconRenderer 与 provider trait 接入。现成视觉方案参见 gpui-component Editor。
#可运行示例
cargo run -p gpui-base-examples -- editor