用 lua 实现小鹤音形官方版「仅在空码时显示后续编码」功能 #33
amorphobia
started this conversation in
展示/Show and tell
Replies: 1 comment
-
|
大佬 我用了你的方法实现了官方版的功能
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
官方版小鹤音形并没有一个词库用于内嵌的编码提示,但是开源小鹤有一个词典,配合 lua 脚本用于这个提示。
这里展示一个方案,使用了 lua 脚本来实现自动的提示,但是需要对词典进行部分甚至是大量的改动。
配置的改动
这个方法大致的思路就是使用 Rime 自身的自动补全,判定在空码的时候,将自动补全的候选排序第一的词语展示出来,因此需要将
translator/enable_completion改为true。另外如果要实现排序,则需要在
engine/filters里面加上lua_filter@openfly_empty_code_completion_filter. 当然这个过滤器名字可以自定义。如果只是实现空码时自动提示一个候选,那么这样改动就可以了,若想自动提示
n个候选,那么需要添加一个选项empty_code_completion_size: n,其中n是一个整数。词典的改动
对于词典,需要给部分词加上排序信息,数字越小越优先。如果不改动词典,也可以自动补全,但候选的优先级就是 Rime 引擎决定的,无法改动。
改动的例子如下:
在词的后面加上
`[排序],这里的排序数字越小就越靠前。小鹤音形官方版默认会在空码时显示一个自动提示,如果仅为了实现这个功能,最多只需要在 primary 词典里给 embedded.hint 词典有的词的词加上排序信息,注意是在 primary 词典里加。其实也不需要给所有在 embedded.hint 词典里的词语都加上,因为有的空码本身就只会有一个候选,抑或是有多个候选,但第一优先正是需要的词。如果要实现自动补全任意个数并且排序,则需要给相应的词语都加上排序信息。去看小鹤音形官方版的码表可以发现,甚至所有的词语都有一个「排序」项,而且不能导出,这也是本方法不会发布到仓库里的直接原因——工作量太大了,无法维护。
Lua 脚本
主要脚本
openfly_empty_code_completion_filter.lua放在lua文件夹里:在
rime.lua文件里加上一行openfly_empty_code_completion_filter = require("openfly_empty_code_completion_filter"), 这样就行了。Beta Was this translation helpful? Give feedback.
All reactions