diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1b0fb96c9..46ee08619 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,27 +1,41 @@ -name: Pack and Release +name: Build and Release on: push: branches: - main tags: - - '[0-9]+.*' + - "[0-9]+.*" paths: - - '**/**' - - '!**.md' - - '!**.gitignore' - - '!others/**' - - '!.github/**' + - "**/**" + - "!**.md" + - "!**.gitignore" + - "!.github/**" workflow_dispatch: jobs: Release: runs-on: ubuntu-latest + if: github.repository == 'iDvel/rime-ice' steps: - name: Checkout uses: actions/checkout@v4 + - name: Setup Go + if: ${{ contains(github.event.head_commit.message, ' [build]') || github.event_name == 'workflow_dispatch' }} + uses: actions/setup-go@v5 + with: + go-version: 1.22 + + - name: Check and build + id: check_and_build + if: ${{ contains(github.event.head_commit.message, ' [build]') || github.event_name == 'workflow_dispatch' }} + run: | + cd others/script + go mod tidy + go run main.go --rime_path "${{ github.workspace }}" --auto_confirm + - name: Pack dicts run: | mkdir dist @@ -36,21 +50,26 @@ jobs: zip -r dist/en_dicts.zip en_dicts echo "Pack opencc ..." zip -r dist/opencc.zip opencc + echo "copy LICENSE and README.md..." + cp LICENSE dist/LICENSE.txt + cp README.md dist/README.md - name: Create nightly release if: ${{ github.ref == 'refs/heads/main' }} - uses: 'softprops/action-gh-release@v2' + uses: "softprops/action-gh-release@v2" with: body: | ## 说明 - + 这里是每次提交后自动打包的版本,包含最新的功能和词库 + - `README.md`:简易的使用说明 - `full.zip` : 包含所有词典和方案文件 - `cn_dicts.zip`:中文词库 - `en_dicts.zip`:英文词库 - `opencc.zip`:opencc 词库(emoji 等) - `all_dicts.zip`:以上三个词库的整合 + - `LICENSE.txt`:开源协议 tag_name: nightly name: "nightly build" @@ -60,10 +79,24 @@ jobs: - name: Create stable release if: startsWith(github.ref, 'refs/tags/') - uses: 'softprops/action-gh-release@v2' + uses: "softprops/action-gh-release@v2" with: body_path: ${{ github.workspace }}/others/CHANGELOG.md draft: true make_latest: true files: | - dist/* \ No newline at end of file + dist/* + + - name: Push and commit + if: ${{ steps.check_and_build.outcome == 'success' }} + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git add --all + if ! git diff --cached --quiet; then + COMMIT_MSG=$(git log -1 --pretty=%B | sed -e 's/\s\[build\]$//' -e 's/^[a-zA-Z()]*:\s*//') + git commit -m "build(ci): auto build for -> ${COMMIT_MSG} <-" + git push + else + echo "No changes to commit." + fi \ No newline at end of file diff --git a/README.md b/README.md index 3b2155699..9e1ceaa37 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ 这里是 Rime 的一份配置仓库,用户需要下载各平台对应的前端,并将此配置应用到配置目录。 -雾凇拼音提供了一套开箱即用的完整配置,包含了输入方案(全拼、双拼)、长期维护的词库及各项扩展功能。 +雾凇拼音提供了一套开箱即用的完整配置,包含输入方案(全拼、常见双拼)、长期维护的开源词库及各项扩展功能。 详细介绍:[Rime 配置:雾凇拼音](https://dvel.me/posts/rime-ice/) @@ -24,33 +24,40 @@ - 简体 | 全拼 | 双拼 - 主要功能 - - [melt_eng](https://github.com/tumuyan/rime-melt) 英文输入(@tumuyan | [Apache 2.0](https://github.com/tumuyan/rime-melt/blob/master/LICENSE)) + - 轻量的英文输入,支持中英混输 - [优化英文输入体验](https://dvel.me/posts/make-rime-en-better/) - - [部件拆字方案](https://github.com/mirtlecn/rime-radical-pinyin) 反查、辅码(@mirtlecn | [CC BY-SA 4.0](https://github.com/mirtlecn/rime-radical-pinyin/blob/master/LICENSE)) + - 拆字反查(uU+拼音),拆字辅码(拼音+`+拆字辅码) - 自整理的 Emoji - - [以词定字](https://github.com/BlindingDark/rime-lua-select-character)(@BlindingDark | [LGPL 3.0](https://github.com/BlindingDark/rime-lua-select-character/blob/master/LICENSE)) - - [长词优先](https://github.com/tumuyan/rime-melt/blob/master/lua/melt.lua)(@tumuyan | [Apache 2.0](https://github.com/tumuyan/rime-melt/blob/master/LICENSE)) - - [Unicode](https://github.com/shewer/librime-lua-script/blob/main/lua/component/unicode.lua)(@shewer | [MIT](https://github.com/shewer/librime-lua-script/blob/main/lua/component/unicode.lua)) - - [数字、人民币大写](https://github.com/yanhuacuo/98wubi/blob/master/lua/number.lua)(@98wubi) - - 日期、时间、星期、[农历](https://github.com/boomker/rime-fast-xhup)(@boomker | [LGPL 3.0](https://github.com/boomker/rime-fast-xhup/blob/master/LICENSE)) + - 以词定字(左右中括号:[]) + - 长词优先 + - Unicode(U+Unicode 码位) + - 数字、人民币大写(R+数字) + - 日期、时间、星期(详见方案 `/date_translator` 节点) + - 农历(转写:N+八位数字;获取当前农历:全拼nl,双拼lunar) - 常见错音错字提示 - - 置顶候选项 - - 所有标点符号直接上屏,/ 模式改为 v 模式,/ 直接上屏 - - 增加了许多拼音纠错 + - 置顶候选项(详见方案 `/pin_cand_filter` 节点) + - 所有标点符号直接上屏 + - 特殊符号、字符输入(全拼v+首字母缩写;双拼V+首字母缩写) + - 拼音纠错(模糊音) + - 更多默认未启用的功能请参考 `rime.lua` 文件以及方案注释 - 简体字表、词库 - - [《通用规范汉字表》](https://github.com/iDvel/The-Table-of-General-Standard-Chinese-Characters) - - [华宇野风系统词库](http://bbs.pinyin.thunisoft.com/forum.php?mod=viewthread&tid=30049)(@野风) - - [清华大学开源词库](https://github.com/thunlp/THUOCL)(@THUNLP | [MIT](https://github.com/thunlp/THUOCL/blob/master/LICENSE)) - - [现代汉语常用词表](https://gist.github.com/indiejoseph/eae09c673460aa0b56db)(@Joseph cheng) - - [腾讯词向量](https://ai.tencent.com/ailab/nlp/en/download.html)(@Tencent AI Lab | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)) - - 参考 - - 《现代汉语词典》 - - 《同义词词林》 - - 《新华成语大词典》 + - [《通用规范汉字表》](https://github.com/iDvel/The-Table-of-General-Standard-Chinese-Characters) 8K 常用汉字 + - [Unihan 字库](https://www.unicode.org/Public/)(by Unicode lnc | [UNICODE LICENSE V3](https://www.unicode.org/license.txt))40K 大字库, **默认未启用** + - [华宇野风词库](http://bbs.pinyin.thunisoft.com/forum.php?mod=viewthread&tid=30049)(by 野风) + - [简化字八股文](https://github.com/rime/rime-essay-simp)(by rime | [LGPL](https://github.com/rime/rime-essay-simp/blob/master/LICENSE)) + - [清华大学开源词库](https://github.com/thunlp/THUOCL)(by THUNLP | [MIT](https://github.com/thunlp/THUOCL/blob/master/LICENSE)) + - [现代汉语常用词表](https://zh.wikipedia.org/wiki/%E7%8E%B0%E4%BB%A3%E6%B1%89%E8%AF%AD%E5%B8%B8%E7%94%A8%E8%AF%8D%E8%A1%A8)(by 中国国家语言文字工作委员会) + - [腾讯词向量](https://ai.tencent.com/ailab/nlp/en/download.html)(Huandeep [整理](https://github.com/iDvel/rime-ice/issues/24) | by Tencent AI Lab | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)) - 词库修订 - 校对大量异形词、错别字、错误注音 - 全词库完成注音 - 同义多音字注音 + - 参考 + - 《现代汉语词典》 + - 《同义词词林》 + - 《新华成语大词典》 + - [校对标准论坛](http://www.jiaodui.com/bbs/) +- Rime、Squirrel、Weasel 常用配置项的详尽注释
@@ -199,7 +206,16 @@ patch: ## 感谢 ❤️ -感谢上述提到的词库、方案及功能参考。 +特别感谢上文已经提及的词库、词典的作者、贡献者及整理者;特别感谢以及下列词库、方案、脚本的作者及贡献者(提及的均为 GitHub id): + +- @mozillazg 开发的汉字转拼音工具和数据库(MIT) +- [melt_eng](https://github.com/tumuyan/rime-melt)(@tumuyan | [Apache 2.0](https://github.com/tumuyan/rime-melt/blob/master/LICENSE)) :提供了部分(约 1000 条)英文词汇以及原始英文方案参考; +- [部件拆字方案 v1](https://github.com/mirtlecn/rime-radical-pinyin)(@mirtlecn | [CC BY-SA 4.0](https://github.com/mirtlecn/rime-radical-pinyin/blob/master/LICENSE)):提供的拆字反查,辅码插件; +- [长词优先插件](https://github.com/tumuyan/rime-melt/blob/master/lua/melt.lua)(@tumuyan | [Apache 2.0](https://github.com/tumuyan/rime-melt/blob/master/LICENSE)) +- [Unicode 插件](https://github.com/shewer/librime-lua-script/blob/main/lua/component/unicode.lua)(@shewer | [MIT](https://github.com/shewer/librime-lua-script/blob/main/lua/component/unicode.lua)) +- [数字、人民币大写插件](https://github.com/yanhuacuo/98wubi/blob/master/lua/number.lua)(@98wubi) +- [农历插件](https://github.com/boomker/rime-fast-xhup)(@boomker | [LGPL 3.0](https://github.com/boomker/rime-fast-xhup/blob/master/LICENSE)) +- 未能在此处详述的、在本库源码注释中提及的项目及作者给予的帮助和参考 感谢 [@Huandeep](https://github.com/Huandeep) 整理的多个词库。 @@ -207,9 +223,7 @@ patch: 感谢所有贡献者。 -搜狗转 Rime:[lewangdev/scel2txt](https://github.com/lewangdev/scel2txt) - -大量参考 [校对标准论坛](http://www.jiaodui.com/bbs/) + Thanks to JetBrains for the OSS development license. diff --git a/cn_dicts/41448.dict.yaml b/cn_dicts/41448.dict.yaml index 463647586..632eef256 100644 --- a/cn_dicts/41448.dict.yaml +++ b/cn_dicts/41448.dict.yaml @@ -17,7 +17,7 @@ # 这样小字表里存在的字按权重靠前排列,大字表殿后,生僻字自动就排在末尾。 --- name: 41448 -version: "2024-05-16" +version: "2024-07-28" sort: by_weight ... # 注释掉了一些 @@ -8676,6 +8676,7 @@ sort: by_weight 𩙣 feng 𩪌 feng 𪐃 feng +覅 fiao 㤇 fo 仏 fo 仸 fo @@ -23500,11 +23501,11 @@ sort: by_weight 溺 ni 濔 ni 狔 ni -祢 ni 猊 ni 疑 ni 眤 ni 睨 ni +祢 ni 秜 ni 籾 ni 縌 ni diff --git a/cn_dicts/base.dict.yaml b/cn_dicts/base.dict.yaml index 77badb729..adae08f8a 100644 --- a/cn_dicts/base.dict.yaml +++ b/cn_dicts/base.dict.yaml @@ -1911,10 +1911,11 @@ # 「喜剧届、音乐届、体育届」→「喜剧界、音乐界、体育界」 # 「全天侯」→「全天候」 # 「夏侯敦」→「夏侯惇」 +# 「纨裤子弟」-->「纨绔子弟」 #/// --- name: base -version: "2024-06-10" +version: "2024-08-18" sort: by_weight ... # +_+ @@ -7375,7 +7376,7 @@ sort: by_weight 傲游浏览器 ao you liu lan qi 112 遨游世界 ao you shi jie 545 遨游四海 ao you si hai 295 -遨游四海求其皇 ao you si hai qiu qi huang 1 +遨游四海求其凰 ao you si hai qiu qi huang 1 遨游太空 ao you tai kong 2355 遨游天下 ao you tian xia 400 敖幼祥 ao you xiang 37 @@ -9150,7 +9151,7 @@ sort: by_weight 拔丝楂糕 ba si zha gao 2 罢讼 ba song 9999 巴松 ba song 8 -巴松错 ba song cuo 2835 +巴松措 ba song cuo 2835 八松乡 ba song xiang 3 八艘 ba sou 8 罢诉 ba su 9999 @@ -24264,6 +24265,7 @@ sort: by_weight 避暑胜地 bi shu sheng di 6810 鼻舒适片 bi shu shi pian 1 必输无疑 bi shu wu yi 755 +必输性 bi shu xing 111 笔刷 bi shua 1111 避税 bi shui 28910 碧水 bi shui 4037 @@ -38568,12 +38570,13 @@ sort: by_weight 不眨眼 bu zha yan 1570 布渣叶 bu zha ye 29 卜宅卜邻 bu zhai bu lin 1 -布展 bu zhan 37150 -不占 bu zhan 31290 -不粘 bu zhan 15145 -不沾 bu zhan 14805 -不战 bu zhan 12135 -不展 bu zhan 1840 +不占 bu zhan 37150 +不沾 bu zhan 31290 +布展 bu zhan 15145 +不战 bu zhan 14805 +不粘 bu zhan 12135 +不站 bu zhan 1840 +不展 bu zhan 1830 步战 bu zhan 1825 不占白不占 bu zhan bai bu zhan 125 不沾边 bu zhan bian 1725 @@ -63028,6 +63031,7 @@ sort: by_weight 磁带录音机 ci dai lu yin ji 800 磁带驱动器 ci dai qu dong qi 195 次贷危机 ci dai wei ji 1 +此单 ci dan 111 次单位 ci dan wei 120 刺刀 ci dao 17460 磁道 ci dao 16615 @@ -78948,6 +78952,7 @@ sort: by_weight 倒叙 dao xu 3490 捣虚敌随 dao xu di sui 1 倒序排列 dao xu pai lie 550 +倒序排序 dao xu pai xu 111 捣虚撇抗 dao xu pie kang 1 倒悬 dao xuan 4125 道学 dao xue 8580 @@ -108187,7 +108192,8 @@ sort: by_weight 繁衍着 fan yan zhe 715 犯颜直谏 fan yan zhi jian 425 犯言直谏 fan yan zhi jian 65 -范阳 fan yang 1 +范阳 fan yang 111 +返样 fan yang 2 樊羊路北口 fan yang lu bei kou 4 凡要 fan yao 3065 反要 fan yao 1600 @@ -122914,6 +122920,7 @@ sort: by_weight 改打 gai da 2120 钙代谢紊乱 gai dai xie wen luan 1 改单 gai dan 1690 +该单 gai dan 111 钙蛋白 gai dan bai 65 该当 gai dang 7475 该党 gai dang 7010 @@ -133588,6 +133595,7 @@ sort: by_weight 共聚 gong ju 13155 共居 gong ju 2045 贡举 gong ju 1240 +贡菊 gong ju 1200 贡橘 gong ju 1180 公举 gong ju 680 工具安装 gong ju an zhuang 1223 @@ -148561,6 +148569,7 @@ sort: by_weight 过于靠近 guo yu kao jin 735 过于苛刻 guo yu ke ke 1930 过于频繁 guo yu pin fan 151 +国语水平 guo yu shui ping 111 国于天地 guo yu tian di 1 过于小心 guo yu xiao xin 350 国语专辑 guo yu zhuan ji 10220 @@ -149972,6 +149981,7 @@ sort: by_weight 还老 hai lao 111 害了 hai le 3465 嗨了 hai le 1111 +害了你 hai le ni 111 海了去了 hai le qu le 516 海乐社区 hai le she qu 120 海乐世界 hai le shi jie 165 @@ -190433,6 +190443,7 @@ sort: by_weight 简洁性 jian jie xing 2138 间接选举 jian jie xuan ju 1565 间接寻址 jian jie xun zhi 1273 +简洁一点 jian jie yi dian 111 间接引语 jian jie yin yu 725 间接影响 jian jie ying xiang 4510 间接原因 jian jie yuan yin 990 @@ -194406,6 +194417,7 @@ sort: by_weight 降序 jiang xu 4600 姜旭光 jiang xu guang 12 降序排列 jiang xu pai lie 2860 +降序排序 jiang xu pai xu 111 讲学 jiang xue 47280 降雪 jiang xue 10590 江雪 jiang xue 6070 @@ -282654,6 +282666,7 @@ sort: by_weight 你休想 ni xiu xiang 2210 逆序 ni xu 12675 逆序对 ni xu dui 2191 +逆序排序 ni xu pai xu 111 逆序数 ni xu shu 2329 逆序输出 ni xu shu chu 1451 逆序数对 ni xu shu dui 140 @@ -344753,6 +344766,7 @@ sort: by_weight 圣雄甘地 sheng xiong gan di 1375 生锈 sheng xiu 26165 升序 sheng xu 25212 +升序排序 sheng xu pai xu 111 胜选 sheng xuan 1111 盛宣怀 sheng xuan huai 239 胜选连任 sheng xuan lian ren 1111 @@ -363871,6 +363885,7 @@ sort: by_weight 顺序进程 shun xu jin cheng 53 顺序控制 shun xu kong zhi 1605 顺序排列 shun xu pai lie 18610 +顺序排序 shun xu pai xu 111 顺序容器 shun xu rong qi 1017 顺序搜索 shun xu sou suo 889 顺序索引 shun xu suo yin 364 @@ -398154,7 +398169,7 @@ sort: by_weight 纨绔膏粱 wan ku gao liang 2 纨绔世子妃 wan ku shi zi fei 118 纨绔子弟 wan ku zi di 341 -纨裤子弟 wan ku zi di 28 +# 纨裤子弟 wan ku zi di 0 碗筷 wan kuai 13950 万块 wan kuai 13720 挽狂澜 wan kuang lan 2055 @@ -425936,6 +425951,7 @@ sort: by_weight 夏庄村 xia zhuang cun 40 下坠 xia zhui 14970 瞎子 xia zi 30750 +虾子 xia zi 20000 匣子 xia zi 10835 虾籽 xia zi 5350 下子 xia zi 1 @@ -450517,6 +450533,7 @@ sort: by_weight 轩逸 xuan yi 2222 选译 xuan yi 1560 悬椅 xuan yi 15 +选一次 xuan yi ci 111 选一个 xuan yi ge 17770 宣颐家园 xuan yi jia yuan 15 悬疑剧 xuan yi ju 530 @@ -493363,6 +493380,7 @@ sort: by_weight 予以保密 yu yi bao mi 3470 玉翼婵娟 yu yi chan juan 1 予以承认 yu yi cheng ren 3345 +语义重复 yu yi chong fu 111 语义词典 yu yi ci dian 16 余亦辞家西入秦 yu yi ci jia xi ru qin 3 语义错误 yu yi cuo wu 118 @@ -503112,6 +503130,8 @@ sort: by_weight 在宣布 zai xuan bu 4790 在宣传 zai xuan chuan 21160 在选购 zai xuan gou 24830 +再选了 zai xuan le 4420 +在选了 zai xuan le 1442 在选择 zai xuan ze 81650 再选择 zai xuan ze 19670 在学 zai xue 65280 @@ -513448,8 +513468,8 @@ sort: by_weight 这种状况 zhe zhong zhuang kuang 70 这种子 zhe zhong zi 580 这种做法 zhe zhong zuo fa 215 -褶皱 zhe zhou 21985 -这周 zhe zhou 12830 +这周 zhe zhou 21985 +褶皱 zhe zhou 12830 折皱 zhe zhou 2370 这周二 zhe zhou er 89 这周六 zhe zhou liu 12 @@ -517411,6 +517431,8 @@ sort: by_weight 郑秀生 zheng xiu sheng 107 郑秀文 zheng xiu wen 13650 正需 zheng xu 2610 +正序 zheng xu 111 +正序排序 zheng xu pai xu 111 正虚邪实 zheng xu xie shi 26 正需要 zheng xu yao 8305 征选 zheng xuan 3333 @@ -533650,6 +533672,7 @@ sort: by_weight 猪油夹沙粽子 zhu you jia sha zong zi 27 住友家园 zhu you jia yuan 2 朱由检 zhu you jian 25 +朱由校 zhu you jiao 680 猪油开花包 zhu you kai hua bao 1 杼柚空虚 zhu you kong xu 1 朱由榔 zhu you lang 21 @@ -533663,7 +533686,6 @@ sort: by_weight 猪油汤团 zhu you tang tuan 105 猪油汤圆 zhu you tang yuan 45 主油箱 zhu you xiang 280 -朱由校 zhu you jiao 680 朱有勇 zhu you yong 176 猪油渣面 zhu you zha mian 19 朱友贞 zhu you zhen 2 diff --git a/cn_dicts/ext.dict.yaml b/cn_dicts/ext.dict.yaml index e786d101e..59c4cbdd5 100644 --- a/cn_dicts/ext.dict.yaml +++ b/cn_dicts/ext.dict.yaml @@ -16,7 +16,7 @@ # - 简化字八股文 https://github.com/rime/rime-essay-simp --- name: ext -version: "2024-06-10" +version: "2024-07-28" sort: by_weight ... # +_+ @@ -20065,7 +20065,6 @@ sort: by_weight 不认同 bu ren tong 100 不仁义的 bu ren yi de 100 不忍远离 bu ren yuan li 100 -不认账 bu ren zhang 100 不认这个账 bu ren zhe ge zhang 100 不认真履行职责 bu ren zhen lv xing zhi ze 100 不忍直视 bu ren zhi shi 100 @@ -71526,7 +71525,6 @@ sort: by_weight 反经合义 fan jing he yi 100 范九利 fan jiu li 100 犯酒瘾 fan jiu yin 100 -翻旧账 fan jiu zhang 100 翻卷子 fan juan zi 100 反绝杀 fan jue sha 100 翻开了新的一页 fan kai le xin de yi ye 100 @@ -101308,7 +101306,7 @@ sort: by_weight 喝一瓶水 he yi ping shui 100 喝一瓶饮料 he yi ping yin liao 100 和以前一样 he yi qian yi yang 100 -何以笙萧默 he yi sheng xiao mo 100 +何以笙箫默 he yi sheng xiao mo 100 和意同心 he yi tong xin 100 何以为战 he yi wei zhan 100 何意义 he yi yi 100 @@ -154687,6 +154685,7 @@ sort: by_weight 罗志明 luo zhi ming 100 罗致人才 luo zhi ren cai 100 罗郅阳 luo zhi yang 100 +裸指针 luo zhi zhen 100 罗致政 luo zhi zheng 100 洛钟东应 luo zhong dong ying 100 罗竹君 luo zhu jun 100 @@ -268822,6 +268821,7 @@ sort: by_weight 写出了 xie chu le 100 写出去 xie chu qu 100 泻出去 xie chu qu 100 +写错成 xie cuo cheng 100 写错成了 xie cuo cheng le 100 写错啦 xie cuo la 100 写错了呗 xie cuo le bei 100 @@ -310115,7 +310115,6 @@ sort: by_weight 折臂三公 zhe bi san gong 100 这笔手续费 zhe bi shou xu fei 100 这逼样 zhe bi yang 100 -这笔账 zhe bi zhang 100 遮蔽罩 zhe bi zhao 100 这逼装得 zhe bi zhuang de 100 这边的 zhe bian de 100 diff --git a/cn_dicts/tencent.dict.yaml b/cn_dicts/tencent.dict.yaml index ad561d1fa..7dcdc1a88 100644 --- a/cn_dicts/tencent.dict.yaml +++ b/cn_dicts/tencent.dict.yaml @@ -22,7 +22,7 @@ # 需要注音的字词设定在 others/script/rime/需要注音.txt --- name: tencent -version: "2024-06-10" +version: "2024-08-18" sort: by_weight columns: - text @@ -12320,7 +12320,6 @@ columns: 一笔小钱 100 一笔巨大的财富 100 一笔巨资 100 -一笔账 100 一笔收入 100 一笔横财 100 一笔生意 100 @@ -30274,7 +30273,6 @@ columns: 不买单 100 不买卖 100 不买吧 100 -不买账 100 不买房子 100 不买的话 100 不买社保 100 @@ -105857,7 +105855,6 @@ columns: 代理网络 100 代理联盟 100 代理要求 100 -代理记账 100 代理记账业务 100 代理记账公司 100 代理记账报税 100 @@ -121437,7 +121434,6 @@ columns: 何以玫 100 何以琛 100 何以知 100 -何以笙箫默 100 何以至此 100 何以言 100 何伟业 100 @@ -190983,7 +190979,6 @@ columns: 分类导航图 100 分类展示 100 分类工作 100 -分类账 100 分类帮扶 100 分类建设 100 分类引导 100 @@ -199420,7 +199415,6 @@ columns: 到市中心 100 到市区 100 到市场 100 -到账时间 100 到平台 100 到平面 100 到年中 100 @@ -223273,7 +223267,6 @@ columns: 升州路 100 升平公主 100 升序排列 100 -升序排序 100 升技能 100 升挂国旗 100 升旗山 100 @@ -282036,7 +282029,6 @@ columns: 商家销售 100 商家门店 100 商家需求 100 -商账追收 100 商店上架 100 商店中 100 商店中购买 100 @@ -282415,6 +282407,7 @@ columns: 商谈价格 100 商谈合作 100 商谈指数 100 +商账追收 100 商贩们 100 商贩占道经营 100 商贸业 100 @@ -300807,7 +300800,6 @@ columns: 坏家伙们 100 坏小子军团 100 坏就坏 100 -坏账准备 100 坏弟弟 100 坏影响 100 坏心思 100 @@ -399301,7 +399293,6 @@ columns: 巴普蒂斯特 100 巴朗山 100 巴木玉布木 100 -巴松措 100 巴林国王杯 100 巴林氏 100 巴林第纳尔 100 @@ -403515,8 +403506,6 @@ columns: 希阿荣博堪布 100 希鲁鲁克 100 帏薄不修 100 -账务处理 100 -账房先生 100 帐汗国 100 帐篷内 100 帐篷出租 100 @@ -403529,7 +403518,6 @@ columns: 帐篷酒店 100 帐篷露营 100 帐篷顶 100 -账面价值 100 帕丁顿 100 帕丁顿熊 100 帕亚加尼 100 @@ -414492,7 +414480,6 @@ columns: 应付利息 100 应付利润 100 应付工作 100 -应付账款 100 应付应付 100 应付式 100 应付性 100 @@ -415147,7 +415134,6 @@ columns: 应收债权 100 应收利息 100 应收尽收 100 -应收账款 100 应收应付 100 应收款项融资 100 应收申购款 100 @@ -433862,7 +433848,6 @@ columns: 往来信件 100 往来单位 100 往来密切 100 -往来账 100 往来港澳 100 往来穿梭 100 往来车辆 100 @@ -469775,7 +469760,6 @@ columns: 扇车门 100 扇面形 100 扇面画 100 -扇风点火 100 扈耀之 100 扉页故事 100 手一伸 100 @@ -470131,7 +470115,6 @@ columns: 手工巧克力 100 手工布艺 100 手工布鞋 100 -手工账 100 手工店 100 手工录入 100 手工彩绘 100 @@ -541546,7 +541529,6 @@ columns: 日记初一 100 日记初二 100 日记大全 100 -日记账 100 日记怎么写 100 日记本里 100 日记满分 100 @@ -546578,7 +546560,6 @@ columns: 明细信息 100 明细分类账 100 明细单 100 -明细账 100 明细情况 100 明细数据 100 明细查询 100 @@ -595834,7 +595815,6 @@ columns: 樱井玲香 100 樱井由纪 100 樱井知香 100 -樱井莉亚 100 樱井透 100 樱前街 100 樱吹雪 100 @@ -629375,7 +629355,6 @@ columns: 流水图 100 流水图片 100 流水对 100 -流水账 100 流水式 100 流水式转向灯 100 流水摆件 100 @@ -638731,9 +638710,9 @@ columns: 淫秽色情视频 100 淫秽视频 100 淫羊霍 100 +淫荡图片 100 淫荡女 100 淫荡女人 100 -淫荡图片 100 淫荡对白 100 淫荡少妇 100 淫荡护士 100 @@ -641132,7 +641111,6 @@ columns: 混子玩家 100 混官场 100 混小子 100 -混账东西 100 混帐门 100 混干皮 100 混床树脂 100 @@ -653005,7 +652983,6 @@ columns: 激酶抑制剂 100 濂溪区 100 濉溪路 100 -濑亚美莉 100 濑尿虾 100 濑户内 100 濑户内寂听 100 @@ -723535,7 +723512,6 @@ columns: 石原夏织 100 石原立也 100 石原聪美 100 -石原莉奈 100 石友三 100 石台阶 100 石呆子 100 @@ -759057,7 +759033,6 @@ columns: 糊汤粉 100 糊涂一点 100 糊涂侦探 100 -糊涂账 100 糊涂点 100 糊涂的人 100 糊涂鬼 100 @@ -769472,7 +769447,6 @@ columns: 经常学习 100 经常家暴 100 经常尿床 100 -经常账 100 经常带 100 经常帮助别人 100 经常干 100 @@ -769653,6 +769627,7 @@ columns: 经常说谎 100 经常请假 100 经常谈 100 +经常账 100 经常账户盈余 100 经常账户赤字 100 经常账户顺差 100 @@ -770079,7 +770054,6 @@ columns: 经济师考试 100 经济师职称 100 经济师证书 100 -经济账 100 经济带动 100 经济常识 100 经济平台 100 @@ -850488,7 +850462,6 @@ columns: 记大过处分 100 记好笔记 100 记工分 100 -记账凭证 100 记录一 100 记录一切 100 记录三 100 @@ -867319,7 +867292,6 @@ columns: 贸易展会 100 贸易展览 100 贸易展览会 100 -贸易账 100 贸易平台 100 贸易广场 100 贸易开放 100 @@ -867394,6 +867366,7 @@ columns: 贸易融资业务 100 贸易街 100 贸易规则 100 +贸易账 100 贸易路线 100 贸易过程 100 贸易运输 100 @@ -869813,7 +869786,6 @@ columns: 赌王之子何猷君 100 赌王之王 100 赌王何鸿燊 100 -赌王何鸿燊 100 赌王儿子 100 赌王儿子何猷君 100 赌王千金 100 @@ -902258,7 +902230,6 @@ columns: 选一家 100 选一张 100 选一条 100 -选一次 100 选一种 100 选一选 100 选一首 100 @@ -954544,7 +954515,6 @@ columns: 顺序安排 100 顺序录取 100 顺序性 100 -顺序排序 100 顺序播放 100 顺序码 100 顺序练习 100 @@ -955233,7 +955203,6 @@ columns: 预产期提前 100 预付卡 100 预付卡消费 100 -预付账款 100 预付式 100 预付式消费 100 预付款保函 100 diff --git a/double_pinyin.schema.yaml b/double_pinyin.schema.yaml index aae9e29d8..154adbdb7 100644 --- a/double_pinyin.schema.yaml +++ b/double_pinyin.schema.yaml @@ -157,6 +157,7 @@ pin_cand_filter: # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml + enable_word_completion: true # 大于 4 音节的词条自动补全,librime > 1.11.2 prism: double_pinyin # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。 spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中 always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。 diff --git a/double_pinyin_abc.schema.yaml b/double_pinyin_abc.schema.yaml index 7fa54b166..c5356ebd6 100644 --- a/double_pinyin_abc.schema.yaml +++ b/double_pinyin_abc.schema.yaml @@ -157,6 +157,7 @@ pin_cand_filter: # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml + enable_word_completion: true # 大于 4 音节的词条自动补全,librime > 1.11.2 prism: double_pinyin_abc # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。 spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中 always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。 diff --git a/double_pinyin_flypy.schema.yaml b/double_pinyin_flypy.schema.yaml index b4a6b870d..2fe79a3ac 100644 --- a/double_pinyin_flypy.schema.yaml +++ b/double_pinyin_flypy.schema.yaml @@ -157,6 +157,7 @@ pin_cand_filter: # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml + enable_word_completion: true # 大于 4 音节的词条自动补全,librime > 1.11.2 prism: double_pinyin_flypy # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。 spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中 always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。 diff --git a/double_pinyin_mspy.schema.yaml b/double_pinyin_mspy.schema.yaml index 8b29a6d7d..37a9e9366 100644 --- a/double_pinyin_mspy.schema.yaml +++ b/double_pinyin_mspy.schema.yaml @@ -157,6 +157,7 @@ pin_cand_filter: # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml + enable_word_completion: true # 大于 4 音节的词条自动补全,librime > 1.11.2 prism: double_pinyin_mspy # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。 spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中 always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。 diff --git a/double_pinyin_sogou.schema.yaml b/double_pinyin_sogou.schema.yaml index 0188e8a6a..49fe3525e 100644 --- a/double_pinyin_sogou.schema.yaml +++ b/double_pinyin_sogou.schema.yaml @@ -157,6 +157,7 @@ pin_cand_filter: # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml + enable_word_completion: true # 大于 4 音节的词条自动补全,librime > 1.11.2 prism: double_pinyin_sogou # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。 spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中 always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。 diff --git a/double_pinyin_ziguang.schema.yaml b/double_pinyin_ziguang.schema.yaml index 549daa658..16cb00e90 100644 --- a/double_pinyin_ziguang.schema.yaml +++ b/double_pinyin_ziguang.schema.yaml @@ -157,6 +157,7 @@ pin_cand_filter: # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml + enable_word_completion: true # 大于 4 音节的词条自动补全,librime > 1.11.2 prism: double_pinyin_ziguang # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。 spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中 always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。 diff --git a/en_dicts/cn_en.txt b/en_dicts/cn_en.txt index a434e4e2f..200b21ef3 100644 --- a/en_dicts/cn_en.txt +++ b/en_dicts/cn_en.txt @@ -912,3 +912,7 @@ O不OK obuok 人均GDP renjungdp V8引擎 Vbayinqing V8引擎 vbayinqing +4A级 siAji +4A级 siaji +5A级 wuAji +5A级 wuaji diff --git a/en_dicts/cn_en_abc.txt b/en_dicts/cn_en_abc.txt index 89b2668e3..ff519f19b 100644 --- a/en_dicts/cn_en_abc.txt +++ b/en_dicts/cn_en_abc.txt @@ -912,3 +912,7 @@ O不OK obuok 人均GDP rfjngdp V8引擎 Vbaycqy V8引擎 vbaycqy +4A级 siAji +4A级 siaji +5A级 wuAji +5A级 wuaji diff --git a/en_dicts/cn_en_double_pinyin.txt b/en_dicts/cn_en_double_pinyin.txt index 1705e0c3b..5ee001ac0 100644 --- a/en_dicts/cn_en_double_pinyin.txt +++ b/en_dicts/cn_en_double_pinyin.txt @@ -912,3 +912,7 @@ O不OK obuok 人均GDP rfjpgdp V8引擎 Vbaynqy V8引擎 vbaynqy +4A级 siAji +4A级 siaji +5A级 wuAji +5A级 wuaji diff --git a/en_dicts/cn_en_flypy.txt b/en_dicts/cn_en_flypy.txt index 328a3ee5f..a269813eb 100644 --- a/en_dicts/cn_en_flypy.txt +++ b/en_dicts/cn_en_flypy.txt @@ -912,3 +912,7 @@ O不OK obuok 人均GDP rfjygdp V8引擎 Vbaybqk V8引擎 vbaybqk +4A级 siAji +4A级 siaji +5A级 wuAji +5A级 wuaji diff --git a/en_dicts/cn_en_mspy.txt b/en_dicts/cn_en_mspy.txt index 2003738a7..b31940a0d 100644 --- a/en_dicts/cn_en_mspy.txt +++ b/en_dicts/cn_en_mspy.txt @@ -912,3 +912,7 @@ O不OK obuok 人均GDP rfjpgdp V8引擎 Vbaynq; V8引擎 vbaynq; +4A级 siAji +4A级 siaji +5A级 wuAji +5A级 wuaji diff --git a/en_dicts/cn_en_sogou.txt b/en_dicts/cn_en_sogou.txt index ed80448c5..13b68585c 100644 --- a/en_dicts/cn_en_sogou.txt +++ b/en_dicts/cn_en_sogou.txt @@ -912,3 +912,7 @@ O不OK obuok 人均GDP rfjpgdp V8引擎 Vbaynq; V8引擎 vbaynq; +4A级 siAji +4A级 siaji +5A级 wuAji +5A级 wuaji diff --git a/en_dicts/cn_en_ziguang.txt b/en_dicts/cn_en_ziguang.txt index 00a205db3..5495c4af4 100644 --- a/en_dicts/cn_en_ziguang.txt +++ b/en_dicts/cn_en_ziguang.txt @@ -912,3 +912,7 @@ O不OK obuok 人均GDP rwjmgdp V8引擎 Vbayyq; V8引擎 vbayyq; +4A级 siAji +4A级 siaji +5A级 wuAji +5A级 wuaji diff --git a/lua/cold_word_drop/processor.lua b/lua/cold_word_drop/processor.lua index 435513cf2..3bb304bc2 100644 --- a/lua/cold_word_drop/processor.lua +++ b/lua/cold_word_drop/processor.lua @@ -3,19 +3,18 @@ require("cold_word_drop.metatable") local processor = {} local function get_record_filername(record_type) + local path_sep = "/" + local user_data_dir = rime_api:get_user_data_dir() local user_distribute_name = rime_api:get_distribution_code_name() - if user_distribute_name:lower():match("weasel") then - return string.format("%s\\lua\\cold_word_drop\\%s_words.lua", rime_api:get_user_data_dir(), record_type) - elseif user_distribute_name:lower():match("squirrel") then - return string.format("%s/lua/cold_word_drop/%s_words.lua", rime_api:get_user_data_dir(), record_type) - elseif user_distribute_name:lower():match("fcitx") then - return string.format("%s/lua/cold_word_drop/%s_words.lua", rime_api:get_user_data_dir(), record_type) - elseif user_distribute_name:lower():match("ibus") then - return string.format( - "%s/rime/lua/cold_word_drop/%s_words.lua", + if user_distribute_name:lower():match("weasel") then path_sep = "\\" end + if user_distribute_name:lower():match("ibus") then + return string.format("%s/rime/lua/cold_word_records/%s_words.lua", os.getenv("HOME") .. "/.config/ibus", record_type ) + else + local file_path = string.format("%s/lua/cold_word_records/%s_words.lua", user_data_dir, record_type) + return file_path:gsub("/", path_sep) end end diff --git a/lua/search.lua b/lua/search.lua index 68033ca6f..6345a95c6 100755 --- a/lua/search.lua +++ b/lua/search.lua @@ -32,6 +32,7 @@ local function update_dict_entry( s, code, mem, proj ) return 0 end local e = DictEntry() + s = s:gsub( '^%s+', '' ):gsub( '%s+$', '' ) e.text = s local pos = {} @@ -80,7 +81,7 @@ end -- 通过 reverse db 查询(以字查码,然后比对辅码是否相同,快,但只能匹配未经算法转换的码) local function reverse_lookup( code_projection, db_table, wildcard, text, s, global_match ) - if wildcard then s = s:gsub( wildcard, '.*' ) end + if wildcard then s = s:gsub( wildcard, '.+' ) end if code_projection then -- old librime do not return original string when apply failed local p = code_projection:apply( s, true ) @@ -294,6 +295,8 @@ function f.fini( env ) if env.if_reverse_lookup or env.if_schema_lookup then env.notifier:disconnect() env.commit_notifier:disconnect() + if env.mem and env.mem.disconnect then env.mem:disconnect() end + if env.search and env.search.disconnect then env.search:disconnect() end if env.mem or env.search or env.db_table then env.db_table = nil env.mem = nil diff --git a/opencc/emoji.txt b/opencc/emoji.txt index 1e4715b0f..6813c57e3 100644 --- a/opencc/emoji.txt +++ b/opencc/emoji.txt @@ -12,6 +12,12 @@ 新加坡币 新加坡币 S$ 欧元 欧元 € 💶 英镑 英镑 £ 💷 +镑 镑 £ +比特币 比特币 ₿ +泰铢 泰铢 ฿ +铢 铢 ฿ +卢比 卢比 ₨ +印度卢比 印度卢比 ₹ 笑脸 笑脸 😀 露齿笑 露齿笑 😃 哈 哈 😄 diff --git a/opencc/others.txt b/opencc/others.txt index f4d518b5d..6bff4a4ba 100644 --- a/opencc/others.txt +++ b/opencc/others.txt @@ -1369,8 +1369,8 @@ rime rime 㞢 九次方 九次方 ⁹ 十次方 十次方 ¹⁰ 度 度 ° -摄氏度 摄氏度 °C -华氏度 华氏度 °F +摄氏度 摄氏度 ℃ +华氏度 华氏度 ℉ 点 点 · 丶 间隔号 间隔号 · 连接号 连接号 — diff --git a/others/CHANGELOG.md b/others/CHANGELOG.md index 2fb0084ac..02b7194cf 100644 --- a/others/CHANGELOG.md +++ b/others/CHANGELOG.md @@ -2,10 +2,10 @@ 除日常更新词库外的一些主要更新 🆕 及破坏性变更 ⚠️。 -## 2024.07.27 +## 2024-07-27 -- `number_translator.lua`: 转换时,将「拾万」和「壹拾万」作为两个独立的候选。 -- `en_spacer.lua`:现在不会在中英标点、空字符前添加空格。将在英文后添加空格,修改为在英文前添加空格。 +- `number_translator.lua`: 🆕 转换时,将「拾万」和「壹拾万」作为两个独立的候选。 +- `en_spacer.lua`:⚠️ 现在不会在中英标点、空字符前添加空格。将在英文后添加空格,修改为在英文前添加空格。 ## 2024-05-15 diff --git a/others/cn_en.txt b/others/cn_en.txt index 699e2e292..dd5ae2348 100644 --- a/others/cn_en.txt +++ b/others/cn_en.txt @@ -462,3 +462,5 @@ TF版本 O不OK 人均GDP V8引擎 +4A级 +5A级 diff --git a/others/demo.webp b/others/demo.webp index 316e5bf57..34829856c 100644 Binary files a/others/demo.webp and b/others/demo.webp differ diff --git a/others/emoji-map.txt b/others/emoji-map.txt index 3ec19859c..7924db1de 100644 --- a/others/emoji-map.txt +++ b/others/emoji-map.txt @@ -24,7 +24,11 @@ HK$ 港元 港币 MOP$ 澳门元 澳门币 葡币 S$ 新加坡元 新加坡币 € 欧元 -£ 英镑 +£ 英镑 镑 +₿ 比特币 +฿ 泰铢 铢 +₨ 卢比 +₹ 印度卢比 ### Smileys & Emotion diff --git a/others/script/go.mod b/others/script/go.mod index 6fab3d703..d009a0b60 100644 --- a/others/script/go.mod +++ b/others/script/go.mod @@ -1,6 +1,6 @@ module script -go 1.20 +go 1.22 require github.com/deckarep/golang-set/v2 v2.3.0 diff --git a/others/script/main.go b/others/script/main.go index 3ef4c54f0..f718b35a9 100644 --- a/others/script/main.go +++ b/others/script/main.go @@ -68,6 +68,11 @@ SORT: } func areYouOK() { + if rime.AutoConfirm { + fmt.Println("Auto confirm enabled. Skipping prompt.") + return + } + fmt.Println("Are you OK:") var isOK string _, _ = fmt.Scanf("%s", &isOK) diff --git a/others/script/rime/check.go b/others/script/rime/check.go index 229dcb5a4..8db5693c7 100644 --- a/others/script/rime/check.go +++ b/others/script/rime/check.go @@ -28,7 +28,7 @@ var ( ) // 初始化特殊词汇列表、需要注音列表、错别字列表、拼音列表 -func init() { +func initCheck() { // 特殊词汇列表,不进行任何检查 specialWords.Add("狄尔斯–阿尔德反应") specialWords.Add("特里斯坦–达库尼亚") @@ -102,7 +102,7 @@ func init() { text, code := parts[0], parts[1] hanPinyin[text] = append(hanPinyin[text], code) } - // 给 hanPinyin 补充不再字表的读音,和过滤列表 hanPinyinFilter + // 给 hanPinyin 补充不在字表的读音,和过滤列表 hanPinyinFilter file4, err := os.Open(汉字拼音映射TXT) if err != nil { log.Fatalln(err) diff --git a/others/script/rime/cn_en.go b/others/script/rime/cn_en.go index 261261f3a..268efa40e 100644 --- a/others/script/rime/cn_en.go +++ b/others/script/rime/cn_en.go @@ -118,330 +118,341 @@ type schema struct { file *os.File } -var doublePinyin = schema{ - name: "cn_en_double_pinyin", - desc: "自然码双拼", - combinationType: "unique", - path: filepath.Join(RimeDir, "en_dicts/cn_en_double_pinyin.txt"), - mapping: map[string]string{ - // 零声母 - "-a-": "aa", - "-e-": "ee", - "-o-": "oo", - "-ai-": "ai", - "-ei-": "ei", - "-ou-": "ou", - "-an-": "an", - "-en-": "en", - "-ang-": "ah", - "-eng-": "eg", - "-ao-": "ao", - "-er-": "er", - // zh ch sh - "zh": "v", - "ch": "i", - "sh": "u", - // 韵母 - "iu": "q", - "ia": "w", - "ua": "w", - "uan": "r", - "ue": "t", - "ve": "t", - "ing": "y", - "uai": "y", - "uo": "o", - "un": "p", - "iong": "s", - "ong": "s", - "iang": "d", - "uang": "d", - "en": "f", - "eng": "g", - "ang": "h", - "an": "j", - "ao": "k", - "ai": "l", - "ei": "z", - "ie": "x", - "iao": "c", - "ui": "v", - "ou": "b", - "in": "n", - "ian": "m", - }, -} +var ( + doublePinyin schema + doublePinyinFlypy schema + doublePinyinMSPY schema + doublePinyinSogou schema + doublePinyinZiGuang schema + doublePinyinABC schema +) -var doublePinyinFlypy = schema{ - name: "cn_en_flypy", - desc: "小鹤双拼", - combinationType: "unique", - path: filepath.Join(RimeDir, "en_dicts/cn_en_flypy.txt"), - mapping: map[string]string{ - // 零声母 - "-a-": "aa", - "-e-": "ee", - "-o-": "oo", - "-ai-": "ai", - "-ei-": "ei", - "-ou-": "ou", - "-an-": "an", - "-en-": "en", - "-ang-": "ah", - "-eng-": "eg", - "-ao-": "ao", - "-er-": "er", - // zh ch sh - "zh": "v", - "ch": "i", - "sh": "u", - // 韵母 - "iu": "q", - "ei": "w", - "uan": "r", - "ue": "t", - "ve": "t", - "un": "y", - "uo": "o", - "ie": "p", - "iong": "s", - "ong": "s", - "ai": "d", - "en": "f", - "eng": "g", - "ang": "h", - "an": "j", - "ing": "k", - "uai": "k", - "iang": "l", - "uang": "l", - "ou": "z", - "ia": "x", - "ua": "x", - "ao": "c", - "ui": "v", - "in": "b", - "iao": "n", - "ian": "m", - }, -} +func initSchemas() { + doublePinyin = schema{ + name: "cn_en_double_pinyin", + desc: "自然码双拼", + combinationType: "unique", + path: filepath.Join(RimeDir, "en_dicts/cn_en_double_pinyin.txt"), + mapping: map[string]string{ + // 零声母 + "-a-": "aa", + "-e-": "ee", + "-o-": "oo", + "-ai-": "ai", + "-ei-": "ei", + "-ou-": "ou", + "-an-": "an", + "-en-": "en", + "-ang-": "ah", + "-eng-": "eg", + "-ao-": "ao", + "-er-": "er", + // zh ch sh + "zh": "v", + "ch": "i", + "sh": "u", + // 韵母 + "iu": "q", + "ia": "w", + "ua": "w", + "uan": "r", + "ue": "t", + "ve": "t", + "ing": "y", + "uai": "y", + "uo": "o", + "un": "p", + "iong": "s", + "ong": "s", + "iang": "d", + "uang": "d", + "en": "f", + "eng": "g", + "ang": "h", + "an": "j", + "ao": "k", + "ai": "l", + "ei": "z", + "ie": "x", + "iao": "c", + "ui": "v", + "ou": "b", + "in": "n", + "ian": "m", + }, + } -var doublePinyinMSPY = schema{ - name: "cn_en_mspy", - desc: "微软双拼", - combinationType: "unique", - path: filepath.Join(RimeDir, "en_dicts/cn_en_mspy.txt"), - mapping: map[string]string{ - // 零声母 - "-a-": "oa", - "-e-": "oe", - "-o-": "oo", - "-ai-": "ol", - "-ei-": "oz", - "-ou-": "ob", - "-an-": "oj", - "-en-": "of", - "-ang-": "oh", - "-eng-": "og", - "-ao-": "ok", - "-er-": "or", - // zh ch sh - "zh": "v", - "ch": "i", - "sh": "u", - // 韵母 - "iu": "q", - "ia": "w", - "ua": "w", - "er": "r", - "uan": "r", - "ue": "t", - "uai": "y", - "uo": "o", - "un": "p", - "iong": "s", - "ong": "s", - "iang": "d", - "uang": "d", - "en": "f", - "eng": "g", - "ang": "h", - "an": "j", - "ao": "k", - "ai": "l", - "ing": ";", - "ei": "z", - "ie": "x", - "iao": "c", - "ui": "v", - "ve": "v", - "ou": "b", - "in": "n", - "ian": "m", - }, -} + doublePinyinFlypy = schema{ + name: "cn_en_flypy", + desc: "小鹤双拼", + combinationType: "unique", + path: filepath.Join(RimeDir, "en_dicts/cn_en_flypy.txt"), + mapping: map[string]string{ + // 零声母 + "-a-": "aa", + "-e-": "ee", + "-o-": "oo", + "-ai-": "ai", + "-ei-": "ei", + "-ou-": "ou", + "-an-": "an", + "-en-": "en", + "-ang-": "ah", + "-eng-": "eg", + "-ao-": "ao", + "-er-": "er", + // zh ch sh + "zh": "v", + "ch": "i", + "sh": "u", + // 韵母 + "iu": "q", + "ei": "w", + "uan": "r", + "ue": "t", + "ve": "t", + "un": "y", + "uo": "o", + "ie": "p", + "iong": "s", + "ong": "s", + "ai": "d", + "en": "f", + "eng": "g", + "ang": "h", + "an": "j", + "ing": "k", + "uai": "k", + "iang": "l", + "uang": "l", + "ou": "z", + "ia": "x", + "ua": "x", + "ao": "c", + "ui": "v", + "in": "b", + "iao": "n", + "ian": "m", + }, + } -var doublePinyinSogou = schema{ - name: "cn_en_sogou", - desc: "搜狗双拼", - combinationType: "unique", - path: filepath.Join(RimeDir, "en_dicts/cn_en_sogou.txt"), - mapping: map[string]string{ - // 零声母 - "-a-": "oa", - "-e-": "oe", - "-o-": "oo", - "-ai-": "ol", - "-ei-": "oz", - "-ou-": "ob", - "-an-": "oj", - "-en-": "of", - "-ang-": "oh", - "-eng-": "og", - "-ao-": "ok", - "-er-": "or", - // zh ch sh - "zh": "v", - "ch": "i", - "sh": "u", - // 韵母 - "iu": "q", - "ia": "w", - "ua": "w", - "er": "r", - "uan": "r", - "ue": "t", - "uai": "y", - "uo": "o", - "un": "p", - "iong": "s", - "ong": "s", - "iang": "d", - "uang": "d", - "en": "f", - "eng": "g", - "ang": "h", - "an": "j", - "ao": "k", - "ai": "l", - "ing": ";", - "ei": "z", - "ie": "x", - "iao": "c", - "ui": "v", - "ve": "t", - "ou": "b", - "in": "n", - "ian": "m", - }, -} + doublePinyinMSPY = schema{ + name: "cn_en_mspy", + desc: "微软双拼", + combinationType: "unique", + path: filepath.Join(RimeDir, "en_dicts/cn_en_mspy.txt"), + mapping: map[string]string{ + // 零声母 + "-a-": "oa", + "-e-": "oe", + "-o-": "oo", + "-ai-": "ol", + "-ei-": "oz", + "-ou-": "ob", + "-an-": "oj", + "-en-": "of", + "-ang-": "oh", + "-eng-": "og", + "-ao-": "ok", + "-er-": "or", + // zh ch sh + "zh": "v", + "ch": "i", + "sh": "u", + // 韵母 + "iu": "q", + "ia": "w", + "ua": "w", + "er": "r", + "uan": "r", + "ue": "t", + "uai": "y", + "uo": "o", + "un": "p", + "iong": "s", + "ong": "s", + "iang": "d", + "uang": "d", + "en": "f", + "eng": "g", + "ang": "h", + "an": "j", + "ao": "k", + "ai": "l", + "ing": ";", + "ei": "z", + "ie": "x", + "iao": "c", + "ui": "v", + "ve": "v", + "ou": "b", + "in": "n", + "ian": "m", + }, + } -var doublePinyinZiGuang = schema{ - name: "cn_en_ziguang", - desc: "紫光双拼", - combinationType: "unique", - path: filepath.Join(RimeDir, "en_dicts/cn_en_ziguang.txt"), - mapping: map[string]string{ - // 零声母 - "-a-": "oa", - "-e-": "oe", - "-o-": "oo", - "-ai-": "op", - "-ei-": "ok", - "-ou-": "oz", - "-an-": "or", - "-en-": "ow", - "-ang-": "os", - "-eng-": "ot", - "-ao-": "oq", - "-er-": "oj", - // zh ch sh - "zh": "u", - "ch": "a", - "sh": "i", - // 韵母 - "ao": "q", - "en": "w", - "an": "r", - "eng": "t", - "in": "y", - "uai": "y", - "uo": "o", - "ai": "p", - "ang": "s", - "ie": "d", - "ian": "f", - "iang": "g", - "uang": "g", - "iong": "h", - "ong": "h", - "er": "j", - "iu": "j", - "ei": "k", - "uan": "l", - "ing": ";", - "ou": "z", - "ia": "x", - "ua": "x", - "iao": "b", - "ue": "n", - "ui": "n", - "un": "m", - }, -} + doublePinyinSogou = schema{ + name: "cn_en_sogou", + desc: "搜狗双拼", + combinationType: "unique", + path: filepath.Join(RimeDir, "en_dicts/cn_en_sogou.txt"), + mapping: map[string]string{ + // 零声母 + "-a-": "oa", + "-e-": "oe", + "-o-": "oo", + "-ai-": "ol", + "-ei-": "oz", + "-ou-": "ob", + "-an-": "oj", + "-en-": "of", + "-ang-": "oh", + "-eng-": "og", + "-ao-": "ok", + "-er-": "or", + // zh ch sh + "zh": "v", + "ch": "i", + "sh": "u", + // 韵母 + "iu": "q", + "ia": "w", + "ua": "w", + "er": "r", + "uan": "r", + "ue": "t", + "uai": "y", + "uo": "o", + "un": "p", + "iong": "s", + "ong": "s", + "iang": "d", + "uang": "d", + "en": "f", + "eng": "g", + "ang": "h", + "an": "j", + "ao": "k", + "ai": "l", + "ing": ";", + "ei": "z", + "ie": "x", + "iao": "c", + "ui": "v", + "ve": "t", + "ou": "b", + "in": "n", + "ian": "m", + }, + } -var doublePinyinABC = schema{ - name: "cn_en_abc", - desc: "智能 ABC 双拼", - combinationType: "unique", - path: filepath.Join(RimeDir, "en_dicts/cn_en_abc.txt"), - mapping: map[string]string{ - // 零声母 - "-a-": "oa", - "-e-": "oe", - "-o-": "oo", - "-ai-": "ol", - "-ei-": "oq", - "-ou-": "ob", - "-an-": "oj", - "-en-": "of", - "-ang-": "oh", - "-eng-": "og", - "-ao-": "ok", - "-er-": "or", - // zh ch sh - "zh": "a", - "ch": "e", - "sh": "v", - // 韵母 - "ao": "k", - "en": "f", - "an": "j", - "eng": "g", - "in": "c", - "uai": "c", - "uo": "o", - "ai": "l", - "ang": "h", - "ie": "x", - "ian": "w", - "iang": "t", - "uang": "t", - "iong": "s", - "ong": "s", - "er": "r", - "iu": "r", - "ei": "q", - "uan": "p", - "ing": "y", - "ou": "b", - "ia": "d", - "ua": "d", - "iao": "z", - "ue": "m", - "ui": "m", - "un": "n", - }, + doublePinyinZiGuang = schema{ + name: "cn_en_ziguang", + desc: "紫光双拼", + combinationType: "unique", + path: filepath.Join(RimeDir, "en_dicts/cn_en_ziguang.txt"), + mapping: map[string]string{ + // 零声母 + "-a-": "oa", + "-e-": "oe", + "-o-": "oo", + "-ai-": "op", + "-ei-": "ok", + "-ou-": "oz", + "-an-": "or", + "-en-": "ow", + "-ang-": "os", + "-eng-": "ot", + "-ao-": "oq", + "-er-": "oj", + // zh ch sh + "zh": "u", + "ch": "a", + "sh": "i", + // 韵母 + "ao": "q", + "en": "w", + "an": "r", + "eng": "t", + "in": "y", + "uai": "y", + "uo": "o", + "ai": "p", + "ang": "s", + "ie": "d", + "ian": "f", + "iang": "g", + "uang": "g", + "iong": "h", + "ong": "h", + "er": "j", + "iu": "j", + "ei": "k", + "uan": "l", + "ing": ";", + "ou": "z", + "ia": "x", + "ua": "x", + "iao": "b", + "ue": "n", + "ui": "n", + "un": "m", + }, + } + + doublePinyinABC = schema{ + name: "cn_en_abc", + desc: "智能 ABC 双拼", + combinationType: "unique", + path: filepath.Join(RimeDir, "en_dicts/cn_en_abc.txt"), + mapping: map[string]string{ + // 零声母 + "-a-": "oa", + "-e-": "oe", + "-o-": "oo", + "-ai-": "ol", + "-ei-": "oq", + "-ou-": "ob", + "-an-": "oj", + "-en-": "of", + "-ang-": "oh", + "-eng-": "og", + "-ao-": "ok", + "-er-": "or", + // zh ch sh + "zh": "a", + "ch": "e", + "sh": "v", + // 韵母 + "ao": "k", + "en": "f", + "an": "j", + "eng": "g", + "in": "c", + "uai": "c", + "uo": "o", + "ai": "l", + "ang": "h", + "ie": "x", + "ian": "w", + "iang": "t", + "uang": "t", + "iong": "s", + "ong": "s", + "er": "r", + "iu": "r", + "ei": "q", + "uan": "p", + "ing": "y", + "ou": "b", + "ia": "d", + "ua": "d", + "iao": "z", + "ue": "m", + "ui": "m", + "un": "n", + }, + } } // CnEn 从 others/cn_en.txt 生成全拼和各个双拼的中英混输词库 diff --git a/others/script/rime/dir_linux.go b/others/script/rime/dir_linux.go new file mode 100644 index 000000000..0b2cbebea --- /dev/null +++ b/others/script/rime/dir_linux.go @@ -0,0 +1,18 @@ +//go:build linux +// +build linux + +package rime + +import ( + "log" + "os/user" + "path/filepath" +) + +func getRimeDirForPlatform() string { + u, err := user.Current() + if err != nil { + log.Fatalln(err) + } + return filepath.Join(u.HomeDir, ".config", "rime") +} diff --git a/others/script/rime/dir_mac.go b/others/script/rime/dir_mac.go index 1f21f43a4..4cc861029 100644 --- a/others/script/rime/dir_mac.go +++ b/others/script/rime/dir_mac.go @@ -5,26 +5,14 @@ package rime import ( "log" - "os/user" "path/filepath" - "runtime" ) -// 获取 macOS/Windows Rime 配置目录 -func getRimeDir() string { - var dir string - switch runtime.GOOS { - case "darwin": // macOS - u, err := user.Current() - if err != nil { - log.Fatalln(err) - } - dir = filepath.Join(u.HomeDir, "Library/Rime") - // case "windows": // Windows - // dir = getWeaselDir() - default: - log.Fatalf("Unsupported OS: %s so far", runtime.GOOS) +// 获取 macOS Rime 配置目录 +func getRimeDirForPlatform() string { + u, err := user.Current() + if err != nil { + log.Fatalln(err) } - - return dir + return filepath.Join(u.HomeDir, "Library/Rime") } diff --git a/others/script/rime/dir_windows.go b/others/script/rime/dir_windows.go index ec6dbf956..df85fb5e5 100644 --- a/others/script/rime/dir_windows.go +++ b/others/script/rime/dir_windows.go @@ -7,31 +7,11 @@ import ( "golang.org/x/sys/windows/registry" "log" "os" - "os/user" "path/filepath" - "runtime" ) -// 获取 macOS/Windows Rime 配置目录 -func getRimeDir() string { - var dir string - switch runtime.GOOS { - case "darwin": // macOS - u, err := user.Current() - if err != nil { - log.Fatalln(err) - } - dir = filepath.Join(u.HomeDir, "Library/Rime") - case "windows": // Windows - dir = getWeaselDir() - default: - log.Fatalf("Unsupported OS: %s so far", runtime.GOOS) - } - - return dir -} - -func getWeaselDir() string { +// 获取 Windows Rime 配置目录 +func getRimeDirForPlatform() string { keyPath := `Software\Rime\Weasel` valueName := "RimeUserDir" diff --git a/others/script/rime/pinyin.go b/others/script/rime/pinyin.go index 927ecd6d5..84a84464d 100644 --- a/others/script/rime/pinyin.go +++ b/others/script/rime/pinyin.go @@ -238,7 +238,7 @@ var onlyOne = map[string]string{ "给": "gei", } -func init() { +func initPinyin() { // 从 base、ext 准备结巴的词典和词组拼音映射 for _, dictPath := range []string{BasePath, ExtPath} { file, err := os.Open(dictPath) diff --git a/others/script/rime/rime.go b/others/script/rime/rime.go index efd14779c..52fdb21af 100644 --- a/others/script/rime/rime.go +++ b/others/script/rime/rime.go @@ -2,6 +2,7 @@ package rime import ( "bufio" + "flag" "fmt" mapset "github.com/deckarep/golang-set/v2" "log" @@ -21,26 +22,66 @@ type lemma struct { } var ( - mark = "# +_+" // 词库中的标记符号,表示从这行开始进行检查或排序 - RimeDir = getRimeDir() // Rime 配置目录 + mark = "# +_+" // 词库中的标记符号,表示从这行开始进行检查或排序 + RimeDir string + EmojiMapPath string + EmojiPath string + HanziPath string + BasePath string + ExtPath string + TencentPath string + HanziSet mapset.Set[string] + BaseSet mapset.Set[string] + ExtSet mapset.Set[string] + TencentSet mapset.Set[string] + 需要注音TXT string + 错别字TXT string + 汉字拼音映射TXT string + AutoConfirm bool +) + +func init() { + // 定义命令行参数 + flag.StringVar(&RimeDir, "rime_path", "", "Specify the Rime configuration directory") + flag.BoolVar(&AutoConfirm, "auto_confirm", false, "Automatically confirm the prompt") + flag.Parse() + + RimeDir = getRimeDir(RimeDir) // Rime 配置目录 EmojiMapPath = filepath.Join(RimeDir, "others/emoji-map.txt") - EmojiPath = filepath.Join(RimeDir, "opencc/emoji.txt") + EmojiPath = filepath.Join(RimeDir, "opencc/emoji.txt") - HanziPath = filepath.Join(RimeDir, "cn_dicts/8105.dict.yaml") - BasePath = filepath.Join(RimeDir, "cn_dicts/base.dict.yaml") - ExtPath = filepath.Join(RimeDir, "cn_dicts/ext.dict.yaml") + HanziPath = filepath.Join(RimeDir, "cn_dicts/8105.dict.yaml") + BasePath = filepath.Join(RimeDir, "cn_dicts/base.dict.yaml") + ExtPath = filepath.Join(RimeDir, "cn_dicts/ext.dict.yaml") TencentPath = filepath.Join(RimeDir, "cn_dicts/tencent.dict.yaml") - HanziSet = readToSet(HanziPath) - BaseSet = readToSet(BasePath) - ExtSet = readToSet(ExtPath) + HanziSet = readToSet(HanziPath) + BaseSet = readToSet(BasePath) + ExtSet = readToSet(ExtPath) TencentSet = readToSet(TencentPath) - 需要注音TXT = filepath.Join(RimeDir, "others/script/rime/需要注音.txt") - 错别字TXT = filepath.Join(RimeDir, "others/script/rime/错别字.txt") + 需要注音TXT = filepath.Join(RimeDir, "others/script/rime/需要注音.txt") + 错别字TXT = filepath.Join(RimeDir, "others/script/rime/错别字.txt") 汉字拼音映射TXT = filepath.Join(RimeDir, "others/script/rime/汉字拼音映射.txt") -) + + initCheck() + initSchemas() + initPinyin() +} + +func getRimeDir(rimePath string) string { + if rimePath != "" { + absPath, err := filepath.Abs(rimePath) + if err != nil { + log.Fatalf("Failed to get absolute path: %v", err) + } + // 使用传入的路径 + return absPath + } + + return getRimeDirForPlatform() +} // 将所有词库读入 set,供检查或排序使用 func readToSet(dictPath string) mapset.Set[string] { diff --git a/others/script/rime/sort.go b/others/script/rime/sort.go index f52dde1ab..bb094048b 100644 --- a/others/script/rime/sort.go +++ b/others/script/rime/sort.go @@ -123,7 +123,7 @@ func Sort(dictPath string, _type int) { return false }) } else { - sort.Slice(contents, func(i, j int) bool { + sort.SliceStable(contents, func(i, j int) bool { if contents[i].code != contents[j].code { return contents[i].code < contents[j].code } diff --git a/radical_pinyin.dict.yaml b/radical_pinyin.dict.yaml index 74905a3a6..56eccc689 100644 --- a/radical_pinyin.dict.yaml +++ b/radical_pinyin.dict.yaml @@ -83,7 +83,7 @@ --- name: radical_pinyin -version: "2024.05.13" +version: "2024.05.15" sort: original @@ -27539,7 +27539,10 @@ sort: original 札 mu'gou 本 mu'heng 末 mu'heng +末 heng'mu +未 mu'heng 未 heng'mu +未 er'xiao 朩 heng'xiao 木 shi'ren 木 shi'ba @@ -39240,9 +39243,48 @@ sort: original 䏡 rou'shi 䏝 yue'zhuan 䏝 rou'zhuan +䏍 si'yue +䏌 ba'yue +䏊 er'long +䏉 er'xian +䏈 er'si +䏇 er'piao +䏆 er'cao +䏅 er'ji +䏄 er'zhi +䏃 er'ming +䏂 er'sou +䏁 er'zai +䏀 er'la +䎿 er'qiu +䎾 er'lun +䎽 er'hun +䎼 er'lu +䎻 er'zhou +䎺 er'zhi +䎹 cai'er +䎸 er'wu +䎷 er'zhu +䎶 er'shen +䎵 er'bi +䎴 er'jing +䎳 er'yue +䎲 er'yi +䎡 er'huo +䎠 wan'er +䎟 nv'er 䎜 lao'lao 䎖 ceng'yu 䎃 ran'yu +䍲 yang'ni +䍲 yang'er +䍱 yang'yu +䍯 yang'wei +䍮 yang'zhao +䍬 yang'ping +䍫 yang'ta +䍪 yang'mo +䍩 yang'wen 䍇 fou'fa 䍁 si'sui 䍀 si'jian diff --git a/rime_ice.schema.yaml b/rime_ice.schema.yaml index 061fe77b6..fdc7b4d68 100644 --- a/rime_ice.schema.yaml +++ b/rime_ice.schema.yaml @@ -289,19 +289,20 @@ pin_cand_filter: # 主翻译器,拼音 translator: - dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml - spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中 - always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。 - initial_quality: 1.2 # 拼音的权重应该比英文大 - comment_format: # 标记拼音注释,供 corrector.lua 做判断用 + dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml + enable_word_completion: true # 大于 4 音节的词条自动补全,librime > 1.11.2 + spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中 + always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。 + initial_quality: 1.2 # 拼音的权重应该比英文大 + comment_format: # 标记拼音注释,供 corrector.lua 做判断用 - xform/^/[/ - xform/$/]/ - preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符 - - xform/([jqxy])v/$1u/ # 显示为 ju qu xu yu - # - xform/([nl])v/$1ü/ # 显示为 nü lü - # - xform/([nl])ue/$1üe/ # 显示为 nüe lüe - - xform/([nl])v/$1v/ # 显示为 nv lv - - xform/([nl])ue/$1ve/ # 显示为 nve lve + preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符 + - xform/([jqxy])v/$1u/ # 显示为 ju qu xu yu + # - xform/([nl])v/$1ü/ # 显示为 nü lü + # - xform/([nl])ue/$1üe/ # 显示为 nüe lüe + - xform/([nl])v/$1v/ # 显示为 nv lv + - xform/([nl])ue/$1ve/ # 显示为 nve lve # 次翻译器,英文 diff --git a/weasel.yaml b/weasel.yaml index b97e662d2..cb9c6cbad 100644 --- a/weasel.yaml +++ b/weasel.yaml @@ -14,7 +14,7 @@ config_version: "2024-05-14" app_options: firefox.exe: inline_preedit: true # 行内显示预编辑区:规避 - # cmd.exe: # 带 .exe 的进程名:Weasel 15.0 及之前版本须小写; PR #1049 合并后释出的版本大小写不敏感 + # cmd.exe: # 带 .exe 的进程名:Weasel 15.0 及之前版本须小写 # ascii_mode: true # 英文模式 # conhost.exe: # ascii_mode: true