用 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
-
官方版小鹤音形并没有一个词库用于内嵌的编码提示,但是开源小鹤有一个词典,配合 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