diff --git a/rime.lua b/rime.lua index 12456ad..e81e723 100644 --- a/rime.lua +++ b/rime.lua @@ -199,17 +199,19 @@ function reduce_english_filter(input, env) -- filter start local code = env.engine.context.input if env.words[code] then - local first_cand + local pending_cands = {} local index = 0 for cand in input:iter() do index = index + 1 - if first_cand then - yield(cand) + if string.lower(cand.text) == code then + table.insert(pending_cands, cand) else - first_cand = cand + yield(cand) end - if index >= env.idx then - yield(first_cand) + if index >= env.idx + #pending_cands - 1 then + for _, cand in ipairs(pending_cands) do + yield(cand) + end break end end diff --git a/rime_ice.schema.yaml b/rime_ice.schema.yaml index f640755..7742313 100644 --- a/rime_ice.schema.yaml +++ b/rime_ice.schema.yaml @@ -98,7 +98,11 @@ reduce_english_filter: # 降低到第 idx 个位置 idx: 2 # 要降低的单词,匹配的是输入码,即全小写。 - words: [rug, bus, ship, laos, bail, bam, bans, bib, bos, chic, chit, dab, dag, dal, dit, dub, dug, fab, gam, ger, gus, hem, hep, hud, kat, lam, lax, lex, lug, lux, moc, mos, mot, mum, nad, nay, nib, nip, pak, pap, pax, rig, rum, sac, sal, sax, sec, shin, sis, ska, slang, sus, tad, taj, tac, tic, yep, yum] + words: [rug, bus, ship, laos, bail, bam, bans, bib, bos, chic, chit, dab, dag, + dal, dit, dub, dug, fab, gam, ger, gus, hem, hep, hud, kat, lam, lax, lex, lug, + lux, moc, mos, mot, mum, nad, nay, nib, nip, pak, pap, pax, rig, rum, sac, sal, + sax, sec, shin, sis, ska, slang, sus, tad, taj, tac, tic, yep, yum, fax, cain, + key, mob, buy] # 从 default 继承快捷键