refactor: 用 speller/initials 代替 auto_commit_single_punct.lua
This commit is contained in:
parent
fbef83c8b8
commit
8fc6a6e875
@ -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$/
|
||||
|
@ -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$/
|
||||
|
@ -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$/
|
||||
|
@ -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$/
|
||||
|
@ -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$/
|
||||
|
@ -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$/
|
||||
|
@ -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
|
3
rime.lua
3
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:
|
||||
|
||||
-- 日期时间,可在方案中配置触发关键字。
|
||||
|
@ -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:
|
||||
### 模糊音
|
||||
|
Loading…
Reference in New Issue
Block a user