diff --git a/lua/en_spacer.lua b/lua/en_spacer.lua index 0a8090a..ae368a5 100644 --- a/lua/en_spacer.lua +++ b/lua/en_spacer.lua @@ -1,20 +1,16 @@ --- 这个 Lua 给英文单词后面自动加一个空格 #496 +-- 中文或者英文后,再输入英文单词自动添加空格 +local F = {} -local function add_space_to_english_word(input) - -- 匹配纯英文单词(don't 算纯英文单词)并在单词后添加空格 - input = input:gsub("(%a+'?%a*)", "%1 ") - return input -end - --- 在候选项上屏时触发的函数 -local function en_spacer(input, env) +function F.func( input, env ) + local latest_text = env.engine.context.commit_history:latest_text() for cand in input:iter() do - if cand.text:match("^[%a']+[%a']*$") then - -- 如果候选项是纯英文单词,则在输入后添加一个空格 - cand = cand:to_shadow_candidate(cand.type, add_space_to_english_word(cand.text), cand.comment) + if cand.text:match( '^[%a\']+[%a\']*$' ) and latest_text and #latest_text > 0 and + not latest_text:find( '[%p%s。,;?:—!《》‘’“”、¥…()【】「」『』]$' ) then + cand = cand:to_shadow_candidate( 'en_spacer', cand.text:gsub( '(%a+\'?%a*)', ' %1' ), cand.comment ) end - yield(cand) + yield( cand ) end end -return en_spacer +return F + diff --git a/rime.lua b/rime.lua index aadf369..92262a1 100644 --- a/rime.lua +++ b/rime.lua @@ -50,8 +50,8 @@ long_word_filter = require("long_word_filter") -- 在 engine/filters 增加 - lua_filter@cn_en_spacer cn_en_spacer = require("cn_en_spacer") --- 英文词条上屏自动空格 --- 在 engine/filters 增加 - lua_filter@en_spacer +-- 英文词条上屏自动添加空格 +-- 在 engine/filters 的倒数第二个位置,增加 - lua_filter@en_spacer en_spacer = require("en_spacer") -- 九宫格,将输入框的数字转为对应的拼音或英文,iRime 用,Hamster 不需要。