From 8fc6a6e87521465941aee4660eca4e4228119a67 Mon Sep 17 00:00:00 2001 From: Dvel Date: Sat, 24 Feb 2024 19:47:54 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=94=A8=20speller/initials=20?= =?UTF-8?q?=E4=BB=A3=E6=9B=BF=20auto=5Fcommit=5Fsingle=5Fpunct.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- double_pinyin.schema.yaml | 9 +--- double_pinyin_abc.schema.yaml | 9 +--- double_pinyin_flypy.schema.yaml | 9 +--- double_pinyin_mspy.schema.yaml | 9 +--- double_pinyin_sogou.schema.yaml | 9 +--- double_pinyin_ziguang.schema.yaml | 9 +--- lua/auto_commit_single_punct.lua | 90 ------------------------------- rime.lua | 3 -- rime_ice.schema.yaml | 11 ++-- 9 files changed, 15 insertions(+), 143 deletions(-) delete mode 100644 lua/auto_commit_single_punct.lua diff --git a/double_pinyin.schema.yaml b/double_pinyin.schema.yaml index 33c4ef6..34a10cd 100644 --- a/double_pinyin.schema.yaml +++ b/double_pinyin.schema.yaml @@ -54,7 +54,6 @@ engine: processors: - lua_processor@select_character # 以词定字 - ascii_composer - - lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏 - recognizer - key_binder - speller @@ -106,12 +105,6 @@ date_translator: lunar: lunar # 农历: 二〇二三年冬月二十 癸卯年(兔)冬月二十 -# Lua 配置:直接上屏单个字符 -# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。 -# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。 -auto_commit_single_punct: "`" - - # Lua 配置:为 corrector 格式化 comment,占位符为 {comment} # 默认 "{comment}" 输入 hun dun 时会在「馄饨」旁边生成 hún tun 的 comment # 例如左右加个括号 "({comment})" 就会变成 (hún tun) @@ -308,6 +301,8 @@ key_binder: speller: # 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射 alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA` + # initials 定义仅作为始码的按键,排除 ` 让单个的 ` 可以直接上屏 + initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。 algebra: - erase/^xx$/ diff --git a/double_pinyin_abc.schema.yaml b/double_pinyin_abc.schema.yaml index eeaae13..504804e 100644 --- a/double_pinyin_abc.schema.yaml +++ b/double_pinyin_abc.schema.yaml @@ -54,7 +54,6 @@ engine: processors: - lua_processor@select_character # 以词定字 - ascii_composer - - lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏 - recognizer - key_binder - speller @@ -106,12 +105,6 @@ date_translator: lunar: lunar # 农历: 二〇二三年冬月二十 癸卯年(兔)冬月二十 -# Lua 配置:直接上屏单个字符 -# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。 -# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。 -auto_commit_single_punct: "`" - - # Lua 配置:为 corrector 格式化 comment,占位符为 {comment} # 默认 "{comment}" 输入 hun dun 时会在「馄饨」旁边生成 hún tun 的 comment # 例如左右加个括号 "({comment})" 就会变成 (hún tun) @@ -311,6 +304,8 @@ key_binder: speller: # 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射 alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA` + # initials 定义仅作为始码的按键,排除 ` 让单个的 ` 可以直接上屏 + initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。 algebra: - erase/^xx$/ diff --git a/double_pinyin_flypy.schema.yaml b/double_pinyin_flypy.schema.yaml index a212322..a315d10 100644 --- a/double_pinyin_flypy.schema.yaml +++ b/double_pinyin_flypy.schema.yaml @@ -54,7 +54,6 @@ engine: processors: - lua_processor@select_character # 以词定字 - ascii_composer - - lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏 - recognizer - key_binder - speller @@ -106,12 +105,6 @@ date_translator: lunar: lunar # 农历: 二〇二三年冬月二十 癸卯年(兔)冬月二十 -# Lua 配置:直接上屏单个字符 -# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。 -# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。 -auto_commit_single_punct: "`" - - # Lua 配置:为 corrector 格式化 comment,占位符为 {comment} # 默认 "{comment}" 输入 hun dun 时会在「馄饨」旁边生成 hún tun 的 comment # 例如左右加个括号 "({comment})" 就会变成 (hún tun) @@ -308,6 +301,8 @@ key_binder: speller: # 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射 alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA` + # initials 定义仅作为始码的按键,排除 ` 让单个的 ` 可以直接上屏 + initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。 algebra: - erase/^xx$/ diff --git a/double_pinyin_mspy.schema.yaml b/double_pinyin_mspy.schema.yaml index 1f47c1d..5f42cda 100644 --- a/double_pinyin_mspy.schema.yaml +++ b/double_pinyin_mspy.schema.yaml @@ -54,7 +54,6 @@ engine: processors: - lua_processor@select_character # 以词定字 - ascii_composer - - lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏 - recognizer - key_binder - speller @@ -106,12 +105,6 @@ date_translator: lunar: lunar # 农历: 二〇二三年冬月二十 癸卯年(兔)冬月二十 -# Lua 配置:直接上屏单个字符 -# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。 -# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。 -auto_commit_single_punct: "`;" - - # Lua 配置:为 corrector 格式化 comment,占位符为 {comment} # 默认 "{comment}" 输入 hun dun 时会在「馄饨」旁边生成 hún tun 的 comment # 例如左右加个括号 "({comment})" 就会变成 (hún tun) @@ -312,6 +305,8 @@ key_binder: speller: # 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射 alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA;` + # initials 定义仅作为始码的按键,排除 ` ; 让单个的 ` ; 可以直接上屏 + initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。 algebra: - erase/^xx$/ diff --git a/double_pinyin_sogou.schema.yaml b/double_pinyin_sogou.schema.yaml index b1d460e..3153308 100644 --- a/double_pinyin_sogou.schema.yaml +++ b/double_pinyin_sogou.schema.yaml @@ -54,7 +54,6 @@ engine: processors: - lua_processor@select_character # 以词定字 - ascii_composer - - lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏 - recognizer - key_binder - speller @@ -106,12 +105,6 @@ date_translator: lunar: lunar # 农历: 二〇二三年冬月二十 癸卯年(兔)冬月二十 -# Lua 配置:直接上屏单个字符 -# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。 -# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。 -auto_commit_single_punct: "`;" - - # Lua 配置:为 corrector 格式化 comment,占位符为 {comment} # 默认 "{comment}" 输入 hun dun 时会在「馄饨」旁边生成 hún tun 的 comment # 例如左右加个括号 "({comment})" 就会变成 (hún tun) @@ -312,6 +305,8 @@ key_binder: speller: # 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射 alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA;` + # initials 定义仅作为始码的按键,排除 ` ; 让单个的 ` ; 可以直接上屏 + initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。 algebra: - erase/^xx$/ diff --git a/double_pinyin_ziguang.schema.yaml b/double_pinyin_ziguang.schema.yaml index 81ca7d4..84a2f6b 100644 --- a/double_pinyin_ziguang.schema.yaml +++ b/double_pinyin_ziguang.schema.yaml @@ -54,7 +54,6 @@ engine: processors: - lua_processor@select_character # 以词定字 - ascii_composer - - lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏 - recognizer - key_binder - speller @@ -106,12 +105,6 @@ date_translator: lunar: lunar # 农历: 二〇二三年冬月二十 癸卯年(兔)冬月二十 -# Lua 配置:直接上屏单个字符 -# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。 -# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。 -auto_commit_single_punct: "`;" - - # Lua 配置:为 corrector 格式化 comment,占位符为 {comment} # 默认 "{comment}" 输入 hun dun 时会在「馄饨」旁边生成 hún tun 的 comment # 例如左右加个括号 "({comment})" 就会变成 (hún tun) @@ -310,6 +303,8 @@ key_binder: speller: # 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射 alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA;` + # initials 定义仅作为始码的按键,排除 ` ; 让单个的 ` ; 可以直接上屏 + initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。 algebra: - erase/^xx$/ diff --git a/lua/auto_commit_single_punct.lua b/lua/auto_commit_single_punct.lua deleted file mode 100644 index 1a61e4d..0000000 --- a/lua/auto_commit_single_punct.lua +++ /dev/null @@ -1,90 +0,0 @@ --- 让写在 alphabet 中的某标点自动上屏 --- --- 感谢 @[Mirtle](https://github.com/mirtlecn) 的 PR --- --- 配置,在方案中填写 auto_commit_single_punct: '`' --- 用途示例: `(反引号)被添加到了 speller/alphabet 来响应辅码,如 gan`shuijin 得到「淦」。 --- 这样导致在输入单个的 ` 时仍然需要按空格选择一下。 --- 因为 ` 只在非开头状态下产生作用,所以我希望输入单个的 ` 时和其他标点一样都直接上屏。 --- 支持设置多个符号,例如双拼可以设置为 auto_commit_single_punct: '`;' 让单个的分号也直接上屏 - -local P = {} - -function P.get_punct_text(cfg, path) - if cfg:is_list(path) then - -- null value or list -> return nil - -- `: [`,-] -> nil - return nil - elseif cfg:is_map(path) then - local map = cfg:get_map(path) - -- map and has commit key -> return commit text - -- `: {commit: '*'} -> * - -- `: {pair: ["‘", "’"]} -> nil - if map:has_key("commit") then - return map:get_value("commit").value - end - elseif cfg:is_value(path) then - -- string -> return value - -- `: '`' -> ` - return cfg:get_string(path) - end - return nil -end - -function P.init(env) - local cfg = env.engine.schema.config - local puncts = cfg:get_string(env.name_space:gsub('^*', '')) - if not puncts then - return - end - - P.puncts = {} - for punct in puncts:gmatch(".") do - table.insert(P.puncts, punct) - end - - P.full_shape_texts = {} - P.half_shape_texts = {} - for _, punct in ipairs(P.puncts) do - local full_shape_path = "punctuator/full_shape/" .. punct - local half_shape_path = "punctuator/half_shape/" .. punct - P.full_shape_texts[punct] = P.get_punct_text(cfg, full_shape_path) - P.half_shape_texts[punct] = P.get_punct_text(cfg, half_shape_path) - end -end - -function P.func(key, env) - local context = env.engine.context - - -- 不影响组合键 - if not P.puncts or key:release() or key:ctrl() or key:alt() or key:super() then - return 2 -- kNoop - end - - local ascii_str = '' - if key.keycode > 0x20 and key.keycode < 0x7f then - ascii_str = string.char(key.keycode) - end - - -- 解开下面三行,将只允许一次辅码上屏(辅码检索时,将会阻止再次输入辅码) - -- if context.input:find("^[a-z;]+" .. P.char) and ascii_str == P.char then - -- return 1 - -- end - - for _, punct in ipairs(P.puncts) do - if not context:is_composing() and ascii_str == punct then - local is_full_shape = env.engine.context:get_option("full_shape") - if is_full_shape and P.full_shape_texts[punct] then - env.engine:commit_text(P.full_shape_texts[punct]) - return 1 - elseif (not is_full_shape) and P.half_shape_texts[punct] then - env.engine:commit_text(P.half_shape_texts[punct]) - return 1 - end - end - end - - return 2 -- kNoop -end - -return P diff --git a/rime.lua b/rime.lua index e85c335..aadf369 100644 --- a/rime.lua +++ b/rime.lua @@ -6,9 +6,6 @@ -- 以词定字,可在 default.yaml → key_binder 下配置快捷键,默认为左右中括号 [ ] select_character = require("select_character") --- 让写在 alphabet 中的某标点自动上屏,可在方案中配置标点 -auto_commit_single_punct = require("auto_commit_single_punct") - -- translators: -- 日期时间,可在方案中配置触发关键字。 diff --git a/rime_ice.schema.yaml b/rime_ice.schema.yaml index ba2963c..bfba562 100644 --- a/rime_ice.schema.yaml +++ b/rime_ice.schema.yaml @@ -6,7 +6,7 @@ schema: schema_id: rime_ice name: 雾凇拼音 - version: "2024-02-23" + version: "2024-02-24" author: - Dvel description: | @@ -43,7 +43,6 @@ engine: processors: - lua_processor@select_character # 以词定字 - ascii_composer - - lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏 - recognizer - key_binder - speller @@ -105,12 +104,6 @@ long_word_filter: idx: 4 -# Lua 配置:直接上屏单个字符 -# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。 -# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。 -auto_commit_single_punct: "`" - - # Lua 配置:为 corrector 格式化 comment,占位符为 {comment} # 默认 "{comment}" 输入 hun dun 时会在「馄饨」旁边生成 hún tun 的 comment # 例如左右加个括号 "({comment})" 就会变成 (hún tun) @@ -410,6 +403,8 @@ key_binder: speller: # 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射 alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA` + # initials 定义仅作为始码的按键,排除 ` 让单个的 ` 可以直接上屏 + initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。 algebra: ### 模糊音