设置导进来了,界面却没变:配置不能只管写文件
支持 VS Code 风格的配置,听起来像是读一份 JSON,再把几个字段写进 TOML。真正用起来,还得回答另一个问题:导完以后,眼前这个窗口有没有变?
alpha.17 把设置导入、外部修改热加载和快捷键运行时判断又补了一轮。
文件里写对了,旧状态仍然可能盖住它
字体大小、主题、换行、侧边栏位置,有些既能在配置文件里改,也能从菜单改。菜单选择会记到会话状态里,优先级可能更高。
导入只写 config.toml,旧菜单值仍然压在上面,用户看到的就像“导入成功了,但没用”。
这次对导入涉及的设置,同时清掉相应的菜单覆盖,再重新加载。没导入的字段继续保留,原 TOML 的注释也留下。
入口能识别 VS Code、Cursor 等使用同类文件的编辑器,也可以手动选一个 settings.json。字体、行高、字号、缩进、换行、自动保存、侧边栏和终端等已有对应项会转换;砚没有对应能力的设置列出来,不假装全部兼容。
快捷键按现有实现追加在自己的绑定之后,沿用后写生效的规则。同一个键可能因此改变,导入后值得打开 keybindings.json 看一遍。
另一个窗口保存了,这边也要知道
用户配置、快捷键文件和项目的 .yan.toml 被其他窗口或其他程序修改,也会触发重新加载。项目设置仍保留覆盖用户设置的优先级。
配置暂时写坏了,不能把已经可用的设置清空。现在保留上一份有效值,在状态栏显示错误,修好再应用。
字体族和行高也能热更新,字体族接受逗号分隔的回退列表。很多时候调字体就是来回试几个值,能少重启一次是一次。
when 得在按键那一刻再看
有没有选区、焦点是不是终端、查找输入框是否打开,这些都随操作变化。加载配置时判断一次,过几秒就可能不成立了。
这一轮让相关 when 条件在按键发生时求值,平台条件也走当前平台配置。条件不满足,就回到原来的命令或普通文字输入,不让一条没生效的绑定把按键吞掉。
带参数的 type、vscode.open 和终端 sendSequence 也接进来了。打开路径支持绝对路径、~/、file:// 和项目相对路径。
runCommands 还碰到异步命令的顺序:前一步 Git 操作没完成,后一步不能先跑。现在等待完成再继续,失败就停下。这比把命令名按顺序调用一遍要多管一层。
.gitignore 的修改,也是一种配置变化
在 .gitignore 里取消一条规则,文件树应该恢复显示,快速打开和全文搜索也要重新纳入那些文件。只刷新其中一个地方,仍然会让人觉得规则没生效。
这次监听到规则变化后,会重读 ignore 规则、刷新树和索引,再更新相关搜索。
顺手也补了没有语言模式文件的行注释:.gitignore、.dockerignore、.env、.editorconfig 等用 #。一个常用按键不该因为没有语法高亮,就突然毫无反应。
这一轮记录的功能都不算大,但它们有个共同点:人已经表达了意图,编辑器就该把变化应用到正在用的地方。
下载试用
本文功能进入 v0.1.0-alpha.17,可以下载对应版本体验。
下载地址核对于 2026-10-19。安装包适用于 macOS 13+、Apple Silicon,目前尚未 Apple 公证,首次打开说明见发布页。
仓库留档
- 实现与设计:core/app/importsettings.go、core/config/vscode.go、core/app/keybindings.go、core/app/settings.go。
- 测试入口:core/app/importsettings_test.go、core/app/keybindings_runtime_test.go、core/app/gitignore_test.go。本轮只核对源码、历史报告与发布信息,没有重跑产品测试或安装包。