From 45124a26f8d36dd5a7a8dae61541ad480f75f57b Mon Sep 17 00:00:00 2001 From: amzxyz Date: Sat, 10 Jan 2026 22:40:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=80=82=E9=85=8D=E5=85=83=E4=B9=A6?= =?UTF-8?q?=E7=9A=84=E4=B9=9D=E5=AE=AB=E6=A0=BC=E5=A4=84=E7=90=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dicts/cn&en.dict.yaml | 2 ++ lua/super_filter.lua | 50 ++++++++++++++++------------------------- wanxiang_t9.schema.yaml | 6 +++++ 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/dicts/cn&en.dict.yaml b/dicts/cn&en.dict.yaml index 2f491a1..4f99bab 100644 --- a/dicts/cn&en.dict.yaml +++ b/dicts/cn&en.dict.yaml @@ -15,6 +15,8 @@ sort: original #字典初始排序,可選original或by_weight 4H 4H 4X 4X 7z 7z ++86 jiā'86 +WiFi伴侣 wifi'bàn'lǚ AA制 AA'zhì A班 A'bān A杯 A'bēi diff --git a/lua/super_filter.lua b/lua/super_filter.lua index bc1be16..a4b2cde 100644 --- a/lua/super_filter.lua +++ b/lua/super_filter.lua @@ -28,7 +28,7 @@ local M = {} local byte, find, gsub, upper, sub = string.byte, string.find, string.gsub, string.upper, string.sub --- ========= 工具 ========= +-- 工具 local function fast_type(c) local t = c.type if t then return t end @@ -72,32 +72,20 @@ local function has_english_token_fast(s) return false end --- ========= 英文候选判定 ========= --- 使用现有的 has_english_token_fast 叠加 is_table_type: --- - 若不属于 table/user_table/fixed:只要含英文 token 即视为英文候选 --- - 若属于 table/user_table/fixed:要求“只含 ASCII”(没有中文),且含英文 token +-- 纯ASCII判定 local function is_english_candidate(cand) - if not cand or not cand.text or cand.text == "" then return false end - local txt = cand.text - + local txt = cand and cand.text + if not txt or txt == "" then return false end if not has_english_token_fast(txt) then return false end - - if is_table_type(cand) then - -- 表内候选如果混有非 ASCII(大概率是中文),就不当英文处理 - for i = 1, #txt do - local b = byte(txt, i) - if b > 127 then - return false - end - end + if string.find(txt, "[\128-\255]") then + return false end - return true end --- ========= 文本格式化(转义 + 自动大写)========= +-- 文本格式化(转义 + 自动大写) local escape_map = { ["\\n"] = "\n", ["\\t"] = "\t", ["\\r"] = "\r", ["\\\\"] = "\\", ["\\s"] = " ", ["\\d"] = "-", @@ -137,7 +125,7 @@ local function clone_candidate(c) return nc end --- ========= 包裹映射 ========= +-- 包裹映射 local default_wrap_map = { -- 单字母:常用成对括号/引号(每项恰好两个字符) a = "[]", -- 方括号 @@ -167,14 +155,14 @@ local default_wrap_map = { y = "⟪⟫", -- 双角括号 z = "{}", -- 花括号 - -- ===== 扩展括号族 / 引号 ===== + -- 扩展括号族 / 引号 dy = "''", -- 英文单引号 sy = "\"\"", -- 英文双引号 zs = "“”", -- 中文弯双引号 zd = "‘’", -- 中文弯单引号 fy = "``", -- 反引号 - -- ===== 双字母括号族 ===== + -- 双字母括号族 aa = "〚〛", -- 双中括号 bb = "〘〙", -- 双中括号(小) cc = "〚〛", -- 双中括号(重复,可用于 Lua 匹配) @@ -201,7 +189,7 @@ local default_wrap_map = { yy = "⌠⌡", -- 数学 / 程序符号 zz = "⟅⟆", -- 数学 / 装饰括号 - -- ===== Markdown / 标记 ===== + -- Markdown / 标记 md = "**|**", -- Markdown 粗体 jc = "**|**", -- 加粗 it = "__|__", -- 斜体 @@ -222,7 +210,7 @@ local default_wrap_map = { br = "| ", -- 换行 cm = "", -- 注释 - -- ===== 运算与标记符 ===== + -- 运算与标记符 pl = "++", mi = "--", sl = "//", @@ -292,7 +280,7 @@ local function precompile_wrap_parts(wrap_map, delimiter) end return parts end --- ========= 字符集过滤工具 ========= +-- 字符集过滤工具 -- 单个码点是否在 charset 里(带缓存,考虑白名单 + 黑名单) local function codepoint_in_charset(env, codepoint) if not env then @@ -390,7 +378,7 @@ local function is_reverse_lookup_segment(env) or seg:has_tag("add_user_dict") or seg:has_tag("punct") end --- ========= 字符集过滤初始化 ========= +-- 字符集过滤初始化 -- 从 schema 里读取 charsetlist / charsetblacklist local function init_charset_filter(env, cfg) -- 主字符集(表滤镜) @@ -441,7 +429,7 @@ local function init_charset_filter(env, cfg) load_charset_list("charsetblacklist", env.charset_block) end --- ========= 生命周期 ========= +-- 生命周期 function M.init(env) local cfg = env.engine and env.engine.schema and env.engine.schema.config or nil env.wrap_map = cfg and load_mapping_from_config(cfg) or default_wrap_map @@ -489,7 +477,7 @@ end function M.fini(env) end --- ========= 统一产出通道 ========= +-- 统一产出通道 -- ctxs: -- charset : 字符集过滤 -- suppress_set : { [text] = true } 阻止镜像文本 @@ -542,7 +530,7 @@ local function emit_with_pipeline(cand, ctxs) cand = ctxs.unify_tail_span(cand) yield(cand) end --- ========= 主流程 ========= +-- 主流程 function M.func(input, env) local ctx = env and env.engine and env.engine.context or nil local code = ctx and (ctx.input or "") or "" @@ -701,7 +689,7 @@ function M.func(input, env) return true end - -- ===== 非分组路径 ===== + -- 非分组路径 if not do_group then local idx = 0 for cand in input:iter() do @@ -755,7 +743,7 @@ function M.func(input, env) return end - -- ===== 分组路径(2..6 码)===== + -- 分组路径(2..6 码) local idx2, mode, grouped_cnt = 0, "unknown", 0 local window_closed = false local group2_others = {} diff --git a/wanxiang_t9.schema.yaml b/wanxiang_t9.schema.yaml index 6147c6a..15a90e4 100644 --- a/wanxiang_t9.schema.yaml +++ b/wanxiang_t9.schema.yaml @@ -43,6 +43,7 @@ switches: # 输入引擎 engine: processors: + - t9_processor #元书T9处理器 - lua_processor@*super_tips #超级提示模块:表情、简码、翻译、化学式、等等靠你想象 - lua_processor@*partial_commit #通过ctrl+1~0局部提交10个字以内的句子的前几个字(一般为正确的前几个)使用时要遵循合理的分词结构能促进后续编码打出正确的词汇 - lua_processor@*super_sequence*P #手动排序,高亮候选 ctrl+j左移动 ctrl+k 右移动 ctrl+l 移除位移 ctrl+p 置顶 @@ -89,6 +90,11 @@ engine: - lua_filter@*super_sequence*F #手动排序,高亮候选 ctrl+j左移动 ctrl+k 右移动 ctrl+0 移除位移 - uniquifier # 去重 +t9: + enable: true #启用仓、元书t9输入方式 + + + super_comment: # 超级注释模块,子项配置 true 开启,false 关闭 candidate_length: 1 # 候选词辅助码提醒的生效长度,0为关闭 但同时清空其它,应当使用上面开关来处理 corrector_type: "〔comment〕" # 错音措字,随意更换左右括号,比如"〔comment〕" 不加括号为无括号,comment占位不能动