为 Lithe 的「导入 IDE 设置」提供 VS Code 和 IntelliJ IDEA 快捷键来源。这是一个社区插件, 原先随 Lithe 主程序一起分发,现在独立发布。
English: Adds VS Code and IntelliJ IDEA shortcut sources to Lithe's Import IDE settings. A community plugin that used to ship inside the Lithe app and is now released on its own.
| 来源 | 读取的文件 |
|---|---|
| VS Code、VS Code Insiders、Cursor(含 Profile) | keybindings.json |
| IntelliJ IDEA | options/keymap.xml 和选中的 keymaps/*.xml |
- 只映射 Lithe 已有且语义一致的命令。条件规则、连续按键、VS Code 移除规则不会变成全局快捷键,未映射的命令会被跳过。
- IDEA 支持
$default、Mac OS X、Mac OS X 10.5+内置方案和有界的自定义继承。没有keymap.xml时按 macOS 默认方案Mac OS X 10.5+处理; 没有keybindings.json时只使用 VS Code 的参考默认键。 - 写入前由 Lithe 检查快捷键冲突;有冲突时整次导入不写入。
- macOS 版 Lithe 的 preview 开发版:支持插件诊断日志(litheLogging 1),并且不再内置快捷键导入插件。稳定版 Lithe 目前无法启动本插件。
- 如果 Lithe 仍内置 Editor Shortcut Import,再安装本插件会出现两个提供方,导入时提示「多个插件都可以从此来源导入快捷键」。
这个版本是预发布,暂不收录在 Lithe Store。
- 下载 Releases 里的
editor-keymap-import-<版本>-darwin.zip,核对同名.sha256。 - 在 Lithe 中打开 设置 → 插件,点右上角 ⚙,选择 从磁盘安装插件…,选中这个 zip,确认权限后安装。
- 打开 导入 IDE 设置,点 重新扫描,在预览里勾选 键盘快捷键 后导入。
| 权限 | 用途 |
|---|---|
backend.launch |
运行插件包里的解析程序 bin/editor-keymap-import |
keymaps.provide |
向 Lithe 提供 VS Code 和 IDEA 两个快捷键来源 |
keymaps.readSelectedSources |
读取你在预览中选中来源的只读快照 |
插件拿不到任意路径。Lithe 只在你选中来源并开始导入时启动后端,通过短期只读快照提供清单里声明的文件;导入结束后撤销快照,最后一次请求结束时停止后端。 默认的来源发现只读元数据,不启动插件。
后端用 Lithe 插件 Rust SDK 编写,SDK 与宿主协商 litheLogging 1, 在每次请求的结果边界自动上报成功或失败。插件代码不写日志,不调用日志接口,也不自建日志文件。
| 进程 | 角色 | 通道 |
|---|---|---|
bin/editor-keymap-import |
backend |
plugins/io.github.lithe-idea.editor-keymap-import/host |
| 操作 | 结果 | 级别 | 事件 | 类别标识 |
|---|---|---|---|---|
lithe/keymap/import |
导入完成 | INFO | plugins.operation.finished |
— |
lithe/keymap/import |
来源无法读取或解析(编码错误、格式无效、超出大小或数量上限、XML 带 DOCTYPE、继承循环等) | ERROR | plugins.operation.failed |
internal_error |
lithe/keymap/import |
用户取消 | 不记录 | — | — |
- 导入是一次明确的用户操作,不属于高频操作,没有关闭成功记录。
- 没有降级或恢复路径:缺少
keybindings.json或keymap.xml属于预期的缺失,按默认值处理,不记录;不支持的命令按设计跳过,不算降级。 - 记录只带操作名、耗时和类别标识,不含快捷键内容、来源路径或错误正文;返回给 Lithe 的错误信息同样不含这些内容。
- 不启动上游程序,没有上游日志级别、大小上限或轮转设置。
排障时使用 Lithe 的独立日志窗口和诊断导出。日志文件不得写入插件安装目录。
plugin.json # 插件清单
backend/ # Rust 后端(src/)和单元测试(tests/)
scripts/package.mjs # 构建 Apple silicon / Intel 通用二进制,ad hoc 签名,打包 dist/editor-keymap-import-<版本>-darwin.zip
scripts/e2e.mjs # 用真实 Lithe Rust Core 运行插件包
e2e/keymap_import_plugin.rs # 端到端测试:导入、失败、日志事实、包不被修改
e2e/lithe-core.json # 最近一次通过端到端测试的 Lithe Core 版本
.github/workflows/ci.yml # PR 和 main 上检查、打包、端到端测试
.github/workflows/release.yml # 推送 v<版本> 标签时发布 GitHub Release(预发布)
cd backend
cargo fmt --all -- --check
cargo clippy --locked --all-targets -- -D warnings
cargo test --locked
cd ..
node scripts/package.mjs
node scripts/e2e.mjs --source https://github.com/1lck/Lithe-IDEA.git --ref previewSDK 以 Git 依赖固定在 backend/Cargo.toml 中的 commit。插件开发资料见 lithe-plugin-docs。
发布新版本:递增 plugin.json 的 version,在 docs/releases/v<版本>.md 写发布说明,推送对应的 v<版本> 标签。已发布的包不会被替换。
Apache-2.0。第三方依赖的许可见 NOTICE.md 和 licenses/。