## 问题描述 在默认的 `rime_mint.custom.yaml` 文件中,含有一个 `__include` 项,如果在之后追加带有 `/+` 语法的值,原本应该追加(或者合并)的列表(或者字典)项会被整个覆盖。 ## 问题示例 修改 `rime_mint.custom.yaml` 文件如下: <img width="386" alt="image" src="https://github.com/Mintimate/oh-my-rime/assets/34620278/63ae4e9a-9d50-4dcf-9dcc-bf2934f581df"> 重新部署后 `build/rime_mint.schema.yaml` 文件中对应项如下: <img width="414" alt="image" src="https://github.com/Mintimate/oh-my-rime/assets/34620278/504e5f4e-00a8-449f-9101-79f91ad23958"> 注意其中 `#` 项值使用了 `default.yaml` 中、而非 `rime_mint.schema.yaml` 中的设定。这意味着 `/+` 项只是覆盖了 `rime_mint.schema.yaml` 中对应项的值。 删除 `__include` 行后,重新部署,`build/rime_mint.schema.yaml` 文件中对应项如下: <img width="365" alt="image" src="https://github.com/Mintimate/oh-my-rime/assets/34620278/31c0ad4d-aaf9-44d7-ad39-ba1f020f3904"> 此时字典正确合并。 ## 可能原因 由于含有 `__include` 项,根据[官方文档](https://github.com/rime/home/wiki/Configuration)中的描述: > 同一節點下,編譯指令的執行順序爲: `__include`: 包含指定節點 → 合併當前節點下的其他 `key-value` 數據 → `__patch`: 修改子節點。 这可能使得原本 `/+` 项在 `rime_mint.custom.yaml` 内部提前展开,并在之后覆盖了 `rime_mint.schema.yaml` 中对应项的值。 ## 可能的解决方法 将默认的 `rime_mint.custom.yaml` 文件中的 `__include` 值移至 `rime_mint.schema.yaml` 中
Activity
[-]默认 `rime_mint.custom.yaml` 中的 __include: code_limit:/patch 会导致`/+`语法失效[/-][+]默认 `rime_mint.custom.yaml` 中的 `__include: code_limit:/patch` 会导致`/+`语法失效[/+][-]默认 `rime_mint.custom.yaml` 中的 `__include: code_limit:/patch` 会导致`/+`语法失效[/-][+]默认 `rime_mint.custom.yaml` 中的 `__include: code_limit:/patch` 会导致 `/+` 语法失效[/+]WntFlm commentedon Feb 25, 2024
rime/librime#192
另一种可行的方法是使用
/+/+
,这样__include
只会展开第一个/+
,但是这样的写法本身就很奇怪,更像一个不得以而为之的方案,我觉得直接将__include
项移出是一个更好的解决方法。Mintimate commentedon Feb 26, 2024
测试了一下,确实
__include
和/+
的语法有冲突,直接导致/+
的部分失效。感谢建议,用__include
的场景不多,而且/+
更方便,去除__include
是个不错的方案。fix: 移除__inculde配置,优化字符限制Lua