fix: 很多被大厂惯坏的用户认为设置成9个能让自己不用翻页,我再多宠爱一下,现在你可以按下0上屏第10个候选

This commit is contained in:
amzxyz
2025-12-25 21:05:15 +08:00
parent 1bf833660c
commit 8d4e432d47

View File

@@ -223,22 +223,25 @@ function P.func(key, env)
-- 有候选菜单时,用数字选「当前页」的第 n 个候选
if has_menu then
local d = tonumber(r)
-- 如果按下的是 0视为第 10 个选项
if d == 0 then d = 10 end
-- 检查是否在有效范围内 (例如 page_size 是 10那么 1-10 都有效)
if d and d >= 1 and d <= page_sz then
local composition = context and context.composition
if composition and not composition:empty() then
local seg = composition:back() -- 当前正在编辑的 segment
local seg = composition:back()
local menu = seg and seg.menu
if menu and not menu:empty() then
-- 当前高亮候选的全局下标0 开始)
local sel_index = seg.selected_index or 0
local page_size = page_sz
-- 当前页号 = 高亮索引 / 每页大小
-- 计算当前页起始位置
local page_no = math.floor(sel_index / page_size)
local page_start = page_no * page_size
-- 当前页第 n 个候选的全局下标
-- 计算目标候选的全局下标 (d=10 则取第10个)
local index = page_start + (d - 1)
-- 防止越界(最后一页候选不足一整页)
-- 防止越界并执行上屏
if index < menu:candidate_count() then
if context:select(index) then
return wanxiang.RIME_PROCESS_RESULTS.kAccepted
@@ -247,6 +250,8 @@ function P.func(key, env)
end
end
end
-- 如果数字超出了 page_size (例如设置每页6个按了7)
-- 或者没有选中成功,返回 kNoop交给 Rime 默认处理
return wanxiang.RIME_PROCESS_RESULTS.kNoop
end
end