Files
rime_wanxiang/lua/select_character.lua
2026-01-21 17:43:36 +08:00

42 lines
1.3 KiB
Lua

-- 以词定字
local wanxiang = require("wanxiang")
local select = {}
function select.init(env)
local config = env.engine.schema.config
select.first_key = config:get_string('key_binder/select_first_character')
select.last_key = config:get_string('key_binder/select_last_character')
end
function select.func(key, env)
local engine = env.engine
local context = env.engine.context
if
not key:release()
and (context:is_composing() or context:has_menu())
and (select.first_key or select.last_key)
then
local text = context.input
if context:get_selected_candidate() then
text = context:get_selected_candidate().text
end
if utf8.len(text) > 1 then
if (key:repr() == select.first_key) then
engine:commit_text(text:sub(1, utf8.offset(text, 2) - 1))
context:clear()
return wanxiang.RIME_PROCESS_RESULTS.kAccepted
elseif (key:repr() == select.last_key) then
engine:commit_text(text:sub(utf8.offset(text, -1)))
context:clear()
return wanxiang.RIME_PROCESS_RESULTS.kAccepted
end
end
end
return wanxiang.RIME_PROCESS_RESULTS.kNoop
end
return select