mirror of
https://github.com/d0zingcat/rime_wanxiang.git
synced 2026-05-23 23:26:44 +00:00
fix: 输入中持续保持英文加空格的记录状态,哪怕你输入的慢点
This commit is contained in:
12
README.md
12
README.md
@@ -459,7 +459,15 @@ datetime_formats:
|
||||
|
||||
<img src="https://storage.deepin.org/thread/202509260130219621_首选成对符号1.jpg" height="80"> <img src="https://storage.deepin.org/thread/202509260130208277_首选成对符号2.jpg" height="80"> <img src="https://storage.deepin.org/thread/202509260130199763_首选成对符号3.jpg" height="80">
|
||||
|
||||
**英文方案:** ①支持英文整句,支持独立使用与万象拼音挂接使用②输入hello则得到hello,输入首字母大写Hello则得到Hello和一众首字母大写的联想词,输入前两码大写HEllo则得到全为大写的HELLO和一众大写英文。还有一个项目。③英文自动加空格,off: 关闭; before: 总是前加; after: 总是后加,smart: 智能模式连续输入英文时第二个单词前开始加空格,非输入状态的回车与空格都能打断加空格状态,也就是说你自己按了空格/回车再输入英文就不会加空格,可以想象一下回车后从头输入出现了空格的尴尬。
|
||||
**英文方案:**
|
||||
|
||||
①支持英文整句,支持与万象拼音挂接使用,支持独立使用,能在输入中自动完成句中空格的添加
|
||||
|
||||
②尾部~的含义,在输入句子的时候,当最后一个单词还未输入完全,如this is english只输入到了eng~这个时候就会出现~代表了一个不在词库中、未稳定的状态,这能保证你的输入视觉上的完美,也可以随时上屏。其本质是空码补全,因此有时候输入一个如scx~时候你可以空格上屏也可以拍下回车,兼容多种习惯。
|
||||
|
||||
③输入hello则得到hello,输入首字母大写Hello则得到Hello和一众首字母大写的联想词,输入前两码大写HEllo则得到全为大写的HELLO和一众大写英文。
|
||||
|
||||
④英文智能加空格,off: 关闭; before: 总是前加; after: 总是后加,smart: 智能模式连续输入英文时第二个单词前开始加空格,非输入状态的回车与空格都能打断加空格状态,也就是说你自己按了空格/回车再输入英文就不会加空格,可以想象一下回车后从头输入出现了空格的尴尬。支持加空格状态延时销毁,可在方案中配置,超时就不加空格,你忽然鼠标定位到行首,稍作停顿就不会在行首输出空格了,默认设置5秒可根据你输入单词的速度做调整,在紧凑的输入中,前面提到的空格、回车动作都能立即生效。
|
||||
|
||||
<img src="https://storage.deepin.org/thread/202509260133175234_首字母大写.jpg" height="80">
|
||||
<img src="https://storage.deepin.org/thread/202509260133175362_双字母大写.jpg" height="80">
|
||||
@@ -481,7 +489,7 @@ datetime_formats:
|
||||
|
||||
**中文无感造词Lua(仅PRO):** 在关闭调频的情况下,通过逐步选字选词的方式上屏将为你记录整段,且不会产生小碎片,所造词汇与db用户词是一回事,遵循用户词管理的相关逻辑,其中直接上屏不造词。相比按需造词更加不打断输入。
|
||||
|
||||
**英文造词Lua:** 例如当输入scx的时候没有任何候选,此时可以追加\,```scx\```可以触发创建候选,但是有的时候我们想要任意编码进行英文造词,但是又有汉字在前面怎么办,本着一次不行就来两次的原则```nihao\\```末尾输入两个就可以了。当然你也可以统一理解为按两下来触发强制英文候选。然后空格上屏他就记录到了en.userdb,导出和同步与用户词逻辑一致。
|
||||
**英文造词Lua:** 在任意英文输入编码后面,如:```nihao\\```末尾输入两个就可以触发英文造词。然后空格上屏他就记录到了en.userdb,导出和同步与用户词逻辑一致。
|
||||
|
||||
**用户词删除:** 使用Ctrl+del是rime系统删除用户词,就可以将用户词标记为c<=0,这在rime系统中就表现为不使用,假性删除。
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ end
|
||||
-- 辅助函数:判断是否为置顶表词汇
|
||||
local function is_table_type(c)
|
||||
local t = fast_type(c)
|
||||
return t == "table" or t == "user_table" or t == "fixed"
|
||||
return t == "user_table" or t == "fixed"
|
||||
end
|
||||
-- [Time] 封装统一的时间获取函数 (单位: 秒, 带小数)
|
||||
local function get_now()
|
||||
@@ -240,8 +240,8 @@ function F.init(env)
|
||||
env.delim_check_pattern = "[" .. escaped_delims .. "]"
|
||||
|
||||
env.prev_commit_is_eng = false
|
||||
env.last_commit_time = 0
|
||||
|
||||
env.last_commit_time = 0 --记录上次提交时间
|
||||
env.comp_start_time = nil -- 记录本次输入开始的时间
|
||||
if env.engine.context then
|
||||
env.update_notifier = env.engine.context.update_notifier:connect(function(ctx)
|
||||
local curr_input = ctx.input
|
||||
@@ -251,6 +251,13 @@ function F.init(env)
|
||||
else
|
||||
env.block_derivation = false
|
||||
end
|
||||
-- 如果输入框为空,重置开始时间
|
||||
if curr_input == "" then
|
||||
env.comp_start_time = nil
|
||||
-- 如果输入框不为空,且还没记录开始时间,说明是“刚刚开始打字”
|
||||
elseif env.comp_start_time == nil then
|
||||
env.comp_start_time = get_now()
|
||||
end
|
||||
end)
|
||||
env.commit_notifier = env.engine.context.commit_notifier:connect(function(ctx)
|
||||
local commit_text = ctx:get_commit_text()
|
||||
@@ -311,11 +318,12 @@ function F.func(input, env)
|
||||
|
||||
-- [Check 2] 时间自然过期
|
||||
elseif effective_prev_is_eng and env.spacing_timeout > 0 then
|
||||
local now = get_now()
|
||||
-- now 是秒(带小数), last_commit_time 是秒(带小数), spacing_timeout 是配置的秒数(如 0.5)
|
||||
if (now - env.last_commit_time) > env.spacing_timeout then
|
||||
-- 取“输入开始时间”保证输入中
|
||||
local check_time = env.comp_start_time or get_now()
|
||||
-- 计算间隙:(开始打字时间 - 上次上屏时间)
|
||||
if (check_time - env.last_commit_time) > env.spacing_timeout then
|
||||
effective_prev_is_eng = false
|
||||
env.prev_commit_is_eng = false -- 更新状态避免重复计算
|
||||
env.prev_commit_is_eng = false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user