Open youlans opened 2 years ago
查找 types.cc xxxxReg func methods get set https://github.com/hchunhui/librime-lua/blob/ad90e2ef5c2071d5b68b70de533e4689d4b7eb12/src/types.cc#L1581-L1586 RIME_DIR ==> rime_api.get_user_data_dir() package.config:sub(1,1) ==> "/" or "\"
utils.lua global func 太多 建議放入 utils table utils.xxxx(env ...) 還可以做成 metatable
local p={}
function p.init(env)
setmetatable( env , {__index= utils} )
env:sel_cand)
env:index()
end
function p.func(key,env)
local inp= env:sel_inp()
local ascii_mode = env:get_opt('ascii_mode')
....
end
librime-lua #177 可以利用 leveldb key value 可以參考 sample/leveldb.lua 用leveldb 可以降低內存 搜尋速度也不錯
做这个的背景是最近在手机上练习五笔(电脑上一直用五笔),发现手机上的主流五笔输入法竟然没有一个支持手工造词的,个人认为手工造词是五笔的必备功能,自动造词对五笔反而毫无用处。刚好发现有rime还有lua,于是就对着lua源码和参考手册边学边用自己写了一个,当初完全是自用,没有专门考虑对外发布,lua脚本也是用手机编写和调试的,开发平台是trime。 leveldb和rimeapi有在lua master代码里面看到,但实际试了trime最新版本不支持,为了适应性就自己写了个hash库,发现性能还可以,用三四年前的低端手机测试一万条以内的自造词量都是秒开,应对一般人的自有词汇量绰绰有余。 metedata的用法,看了下lua的参考手册就弃用了,单纯为了封装而增代码没有意义,utils里面的东西大部分函数纯粹是为了手机编码时少打几个字。
还有一个待改进的点,就是造词时,希望通过commit_notifier在zz模式拦截,用户通过任意方式commit后成词(这点理论上可以实现),但是我想同时在commit_notifier里面控制不让输入字上屏,这点还没有弄清楚好不好实现。 目前是通过拦截space和数字键部分实现上述功能,但分号次选或者手机上直接点击候选上屏这种还没有好的办法。 实现这个功能后在安卓下可以避免打开造词菜会方便不少。
https://github.com/shewer/trime/tree/develop-2 (己將 librime librime-lua 更新最新版 ,release bin 是由github ci 編譯的)
trime 3.2.3以後 #131 lua_filter 支援 tags_match(seg,env) return bool true 插入此filter false pass 此filter
-- single_char
local F={}
function F.tags_match(seg,env)
return env.engine.context:get_option('single_char')
end
function F.func(inp,env)
for cand in inp:iter() do
if utf8.len(cand.text) ==1 then
yield(cand)
end
end
end
return F
local function Version()
local ver
if LevelDb then
ver = 177
elseif Opencc then
ver = 147
elseif KeySequence and KeySequence().repr then
ver= 139
elseif ConfigMap and ConfigMap().keys then
ver= 127
elseif Projection then
ver= 102
elseif KeyEvent then
ver = 100
elseif Memory then
ver = 80
else
ver= 79
end
return ver
end
这个能再分享一下吗?很有用的lua。
连接已经失效,请重发一下吧
非常好的lua,希望能再分享一下
新版文件:trime.rc-wubi-pub.7z 链接:https://pan.baidu.com/s/1F-uncRl8q3RYbw-IMyQmLA?pwd=74i9 提取码:74i9
压缩文件包含:
这个如何增加到现有方案中啊,如https://github.com/KyleBing/rime-wubi86-jidian方案中,现在用的模块lua了
local keys_win = { --{ 0, 0, 1,1,0, "9", dict_deploy}, { -1, -1, 1, 1, 0, "0", lua_test}, { 1, 1, 0, 0, 0, " ", dict_add}, { 1, 1, 0, 0, 0, "", dict_add}, { 0, 1, 1, 1, 0, "", dict_del}, { 0, 1, 1, 0, 0, "", dict_top}, } local cc = { hist_mode(env) and 1 or 0, has_menu(env) and 1 or 0, key:ctrl() and 1 or 0, key:shift() and 1 or 0, key:alt() and 1 or 0, } 这两个表的对应逻辑关系, 看得脑壳都疼了. 我觉得直接做个返回当前按键值, 再用按键值做一个表来对应操作, 不是更简单?
local keys_win = { --{ 0, 0, 1,1,0, "9", dict_deploy}, { -1, -1, 1, 1, 0, "0", lua_test}, { 1, 1, 0, 0, 0, " ", dict_add}, { 1, 1, 0, 0, 0, "", dict_add}, { 0, 1, 1, 1, 0, "", dict_del}, { 0, 1, 1, 0, 0, "", dict_top}, } local cc = { hist_mode(env) and 1 or 0, has_menu(env) and 1 or 0, key:ctrl() and 1 or 0, key:shift() and 1 or 0, key:alt() and 1 or 0, } 这两个表的对应逻辑关系, 看得脑壳都疼了. 我觉得直接做个返回当前按键值, 再用按键值做一个表来对应操作, 不是更简单?
具体怎么操作的,不懂lua啊
链接: https://pan.baidu.com/s/1DFR6jd83ufj40BJqG-64Qw 提取码:8ajy
一 包含以下功能
二 适用范围
三 安装
四 用法
五 备注
rime用户目录下会生成三个文件记录增删的词组,不熟悉的情况下不要手工修改。 wubi86_add.txt wubi86_del.txt wubi86_top.txt