refactor: pin_cand_filter.lua 匹配逻辑改为无空格的 cand.preedit #586
This commit is contained in:
parent
78ee352b4d
commit
188a1112d0
@ -150,38 +150,9 @@ reduce_english_filter:
|
|||||||
|
|
||||||
|
|
||||||
# Lua 配置: 置顶候选项
|
# Lua 配置: 置顶候选项
|
||||||
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
|
#TODO 文档和示例
|
||||||
# (对简繁转换无效,除非简繁文字一致 😰)
|
|
||||||
#
|
|
||||||
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
|
|
||||||
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
|
|
||||||
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
|
|
||||||
#
|
|
||||||
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh,
|
|
||||||
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
|
|
||||||
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
|
|
||||||
# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
|
|
||||||
pin_cand_filter:
|
pin_cand_filter:
|
||||||
# 格式:编码<Tab>字词1<Space>字词2……
|
# 格式:编码<Tab>字词1<Space>字词2……
|
||||||
# 示例:
|
|
||||||
# - 'le 了' # 输入 le 时,置顶「了」
|
|
||||||
# - 'la 啦' # 输入 la 时,置顶「啦」
|
|
||||||
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
|
|
||||||
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
|
|
||||||
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
|
|
||||||
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
|
|
||||||
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
|
|
||||||
# - da zhuang 大专
|
|
||||||
# - da zhong 大众
|
|
||||||
# # 如果明确定义了简码形式,则完全使用简码形式
|
|
||||||
# - da z 打字
|
|
||||||
# - da zh 打仗
|
|
||||||
# # ⚠️ 双拼
|
|
||||||
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
|
|
||||||
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
|
|
||||||
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ...
|
|
||||||
- d 的
|
- d 的
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,38 +150,9 @@ reduce_english_filter:
|
|||||||
|
|
||||||
|
|
||||||
# Lua 配置: 置顶候选项
|
# Lua 配置: 置顶候选项
|
||||||
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
|
#TODO 文档和示例
|
||||||
# (对简繁转换无效,除非简繁文字一致 😰)
|
|
||||||
#
|
|
||||||
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
|
|
||||||
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
|
|
||||||
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
|
|
||||||
#
|
|
||||||
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh,
|
|
||||||
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
|
|
||||||
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
|
|
||||||
# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
|
|
||||||
pin_cand_filter:
|
pin_cand_filter:
|
||||||
# 格式:编码<Tab>字词1<Space>字词2……
|
# 格式:编码<Tab>字词1<Space>字词2……
|
||||||
# 示例:
|
|
||||||
# - 'le 了' # 输入 le 时,置顶「了」
|
|
||||||
# - 'la 啦' # 输入 la 时,置顶「啦」
|
|
||||||
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
|
|
||||||
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
|
|
||||||
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
|
|
||||||
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
|
|
||||||
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
|
|
||||||
# - da zhuang 大专
|
|
||||||
# - da zhong 大众
|
|
||||||
# # 如果明确定义了简码形式,则完全使用简码形式
|
|
||||||
# - da z 打字
|
|
||||||
# - da zh 打仗
|
|
||||||
# # ⚠️ 双拼
|
|
||||||
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
|
|
||||||
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
|
|
||||||
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ...
|
|
||||||
- d 的
|
- d 的
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,38 +150,9 @@ reduce_english_filter:
|
|||||||
|
|
||||||
|
|
||||||
# Lua 配置: 置顶候选项
|
# Lua 配置: 置顶候选项
|
||||||
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
|
#TODO 文档和示例
|
||||||
# (对简繁转换无效,除非简繁文字一致 😰)
|
|
||||||
#
|
|
||||||
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
|
|
||||||
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
|
|
||||||
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
|
|
||||||
#
|
|
||||||
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh,
|
|
||||||
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
|
|
||||||
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
|
|
||||||
# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
|
|
||||||
pin_cand_filter:
|
pin_cand_filter:
|
||||||
# 格式:编码<Tab>字词1<Space>字词2……
|
# 格式:编码<Tab>字词1<Space>字词2……
|
||||||
# 示例:
|
|
||||||
# - 'le 了' # 输入 le 时,置顶「了」
|
|
||||||
# - 'la 啦' # 输入 la 时,置顶「啦」
|
|
||||||
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
|
|
||||||
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
|
|
||||||
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
|
|
||||||
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
|
|
||||||
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
|
|
||||||
# - da zhuang 大专
|
|
||||||
# - da zhong 大众
|
|
||||||
# # 如果明确定义了简码形式,则完全使用简码形式
|
|
||||||
# - da z 打字
|
|
||||||
# - da zh 打仗
|
|
||||||
# # ⚠️ 双拼
|
|
||||||
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
|
|
||||||
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
|
|
||||||
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ...
|
|
||||||
- d 的
|
- d 的
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,38 +150,9 @@ reduce_english_filter:
|
|||||||
|
|
||||||
|
|
||||||
# Lua 配置: 置顶候选项
|
# Lua 配置: 置顶候选项
|
||||||
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
|
#TODO 文档和示例
|
||||||
# (对简繁转换无效,除非简繁文字一致 😰)
|
|
||||||
#
|
|
||||||
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
|
|
||||||
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
|
|
||||||
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
|
|
||||||
#
|
|
||||||
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh,
|
|
||||||
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
|
|
||||||
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
|
|
||||||
# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
|
|
||||||
pin_cand_filter:
|
pin_cand_filter:
|
||||||
# 格式:编码<Tab>字词1<Space>字词2……
|
# 格式:编码<Tab>字词1<Space>字词2……
|
||||||
# 示例:
|
|
||||||
# - 'le 了' # 输入 le 时,置顶「了」
|
|
||||||
# - 'la 啦' # 输入 la 时,置顶「啦」
|
|
||||||
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
|
|
||||||
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
|
|
||||||
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
|
|
||||||
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
|
|
||||||
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
|
|
||||||
# - da zhuang 大专
|
|
||||||
# - da zhong 大众
|
|
||||||
# # 如果明确定义了简码形式,则完全使用简码形式
|
|
||||||
# - da z 打字
|
|
||||||
# - da zh 打仗
|
|
||||||
# # ⚠️ 双拼
|
|
||||||
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
|
|
||||||
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
|
|
||||||
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ...
|
|
||||||
- d 的
|
- d 的
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,38 +150,9 @@ reduce_english_filter:
|
|||||||
|
|
||||||
|
|
||||||
# Lua 配置: 置顶候选项
|
# Lua 配置: 置顶候选项
|
||||||
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
|
#TODO 文档和示例
|
||||||
# (对简繁转换无效,除非简繁文字一致 😰)
|
|
||||||
#
|
|
||||||
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
|
|
||||||
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
|
|
||||||
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
|
|
||||||
#
|
|
||||||
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh,
|
|
||||||
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
|
|
||||||
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
|
|
||||||
# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
|
|
||||||
pin_cand_filter:
|
pin_cand_filter:
|
||||||
# 格式:编码<Tab>字词1<Space>字词2……
|
# 格式:编码<Tab>字词1<Space>字词2……
|
||||||
# 示例:
|
|
||||||
# - 'le 了' # 输入 le 时,置顶「了」
|
|
||||||
# - 'la 啦' # 输入 la 时,置顶「啦」
|
|
||||||
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
|
|
||||||
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
|
|
||||||
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
|
|
||||||
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
|
|
||||||
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
|
|
||||||
# - da zhuang 大专
|
|
||||||
# - da zhong 大众
|
|
||||||
# # 如果明确定义了简码形式,则完全使用简码形式
|
|
||||||
# - da z 打字
|
|
||||||
# - da zh 打仗
|
|
||||||
# # ⚠️ 双拼
|
|
||||||
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
|
|
||||||
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
|
|
||||||
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ...
|
|
||||||
- d 的
|
- d 的
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,38 +150,9 @@ reduce_english_filter:
|
|||||||
|
|
||||||
|
|
||||||
# Lua 配置: 置顶候选项
|
# Lua 配置: 置顶候选项
|
||||||
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
|
#TODO 文档和示例
|
||||||
# (对简繁转换无效,除非简繁文字一致 😰)
|
|
||||||
#
|
|
||||||
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
|
|
||||||
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
|
|
||||||
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
|
|
||||||
#
|
|
||||||
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh,
|
|
||||||
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
|
|
||||||
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
|
|
||||||
# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
|
|
||||||
pin_cand_filter:
|
pin_cand_filter:
|
||||||
# 格式:编码<Tab>字词1<Space>字词2……
|
# 格式:编码<Tab>字词1<Space>字词2……
|
||||||
# 示例:
|
|
||||||
# - 'le 了' # 输入 le 时,置顶「了」
|
|
||||||
# - 'la 啦' # 输入 la 时,置顶「啦」
|
|
||||||
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
|
|
||||||
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
|
|
||||||
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
|
|
||||||
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
|
|
||||||
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
|
|
||||||
# - da zhuang 大专
|
|
||||||
# - da zhong 大众
|
|
||||||
# # 如果明确定义了简码形式,则完全使用简码形式
|
|
||||||
# - da z 打字
|
|
||||||
# - da zh 打仗
|
|
||||||
# # ⚠️ 双拼
|
|
||||||
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
|
|
||||||
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
|
|
||||||
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ...
|
|
||||||
- d 的
|
- d 的
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
-- 置顶候选项
|
-- 置顶候选项
|
||||||
-- Powered By ChatGPT
|
-- Powered By ChatGPT
|
||||||
|
|
||||||
local function isInList(list, str)
|
local function is_in_list(list, str)
|
||||||
for i, v in ipairs(list) do
|
for i, v in ipairs(list) do
|
||||||
if v == str then
|
if v == str then
|
||||||
return true, i
|
return true, i
|
||||||
@ -10,21 +10,24 @@ local function isInList(list, str)
|
|||||||
return false, 0
|
return false, 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function starts_with(a, b)
|
||||||
|
return string.sub(a, 1, string.len(b)) == b
|
||||||
|
end
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
function M.init(env)
|
function M.init(env)
|
||||||
env.name_space = env.name_space:gsub("^*", "")
|
env.name_space = env.name_space:gsub("^*", "")
|
||||||
local list = env.engine.schema.config:get_list(env.name_space)
|
local list = env.engine.schema.config:get_list(env.name_space)
|
||||||
|
|
||||||
-- 如果定义了 'da zhuan' 或 'da zhong' ,会自动生成 'da z' 和 'da zh'。
|
|
||||||
-- 然而,如果明确定义了 'da z' 或 'da zh',则会优先使用这些明确自定义的简码,用 set 来做判断。
|
|
||||||
if not list then return end -- no configuration found -> stop
|
if not list then return end -- no configuration found -> stop
|
||||||
|
|
||||||
|
-- 如果定义了 'da zhuan' 或 'da zhong' ,会自动生成 'daz' 和 'dazh' 的键。
|
||||||
|
-- 然而,如果明确定义了 'da z' 或 'da zh',则会优先使用这些明确自定义的简码,用 set 来做判断。
|
||||||
local set = {}
|
local set = {}
|
||||||
for i = 0, list.size - 1 do
|
for i = 0, list.size - 1 do
|
||||||
local preedit, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)")
|
local preedit, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)")
|
||||||
-- use #text to match both nil and empty value
|
|
||||||
if #preedit > 0 and #texts > 0 then
|
if #preedit > 0 and #texts > 0 then
|
||||||
set[preedit] = true
|
set[preedit:gsub(" ", "")] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -32,43 +35,46 @@ function M.init(env)
|
|||||||
-- 'l 了 啦' → M.pin_cands["l"] = {"了", "啦"}
|
-- 'l 了 啦' → M.pin_cands["l"] = {"了", "啦"}
|
||||||
-- 'ta 他 她 它' → M.pin_cands["ta"] = {"他", "她", "它"}
|
-- 'ta 他 她 它' → M.pin_cands["ta"] = {"他", "她", "它"}
|
||||||
--
|
--
|
||||||
-- 对于词汇(preedit 包含空格),同时生成简码的拼写(最后一个空格后的首字母),如:
|
-- 无空格词汇,如 `nihao 你好` → M.pin_cands["nihao"] = {"你好"}
|
||||||
-- 'ni hao 你好 拟好' → M.pin_cands["ni hao"] = {"你好", "拟好"}
|
--
|
||||||
-- → M.pin_cands["ni h"] = {"你好", "拟好"}
|
-- 包含空格的词汇,同时生成简码的拼写(最后一个空格后的首字母),如:
|
||||||
|
-- 'ni hao 你好 拟好' → M.pin_cands["nihao"] = {"你好", "拟好"}
|
||||||
|
-- → M.pin_cands["nih"] = {"你好", "拟好"}
|
||||||
--
|
--
|
||||||
-- 如果最后一个空格后以 zh ch sh 开头,额外再生成 zh, ch, sh 的拼写,如:
|
-- 如果最后一个空格后以 zh ch sh 开头,额外再生成 zh, ch, sh 的拼写,如:
|
||||||
-- 'zhi chi 支持' → M.pin_cands["zhi chi"] = {"支持"}
|
-- 'zhi chi 支持' → M.pin_cands["zhichi"] = {"支持"}
|
||||||
-- → M.pin_cands["zhi c"] = {"支持"}
|
-- → M.pin_cands["zhic"] = {"支持"}
|
||||||
-- → M.pin_cands["zhi ch"] = {"支持"}
|
-- → M.pin_cands["zhich"] = {"支持"}
|
||||||
--
|
--
|
||||||
-- 如果同时定义了 'da zhuan 大专' 'da zhong 大众',会生成:
|
-- 如果同时定义了 'da zhuan 大专' 'da zhong 大众',会生成:
|
||||||
-- M.pin_cands["da zhuan"] = {"大专"}
|
-- M.pin_cands["dazhuan"] = {"大专"}
|
||||||
-- M.pin_cands["da zhong"] = {"大众"}
|
-- M.pin_cands["dazhong"] = {"大众"}
|
||||||
-- M.pin_cands["da z"] = {"大专", "大众"} -- 先写的排在前面
|
-- M.pin_cands["daz"] = {"大专", "大众"} -- 先写的排在前面
|
||||||
-- M.pin_cands["da zh"] = {"大专", "大众"} -- 先写的排在前面
|
-- M.pin_cands["dazh"] = {"大专", "大众"} -- 先写的排在前面
|
||||||
--
|
--
|
||||||
-- 如果同时定义了 'da zhuan 大专' 'da zhong 大众' 且明确定义了简码形式 'da z 打字',会生成:
|
-- 如果同时定义了 'da zhuan 大专' 'da zhong 大众' 且明确定义了简码形式 'da z 打字',会生成:
|
||||||
-- M.pin_cands["da zhuan"] = {"大专"}
|
-- M.pin_cands["dazhuan"] = {"大专"}
|
||||||
-- M.pin_cands["da zhong"] = {"大众"}
|
-- M.pin_cands["dazhong"] = {"大众"}
|
||||||
-- M.pin_cands["da z"] = {"打字"} -- 明确定义的优先级更高
|
-- M.pin_cands["daz"] = {"打字"} -- 明确定义的优先级更高
|
||||||
-- M.pin_cands["da zh"] = {"大专", "大众"} -- 没明确定义的,仍然按上面的方式生成
|
-- M.pin_cands["dazh"] = {"大专", "大众"} -- 没明确定义的,仍然按上面的方式生成
|
||||||
|
|
||||||
M.pin_cands = {}
|
M.pin_cands = {}
|
||||||
for i = 0, list.size - 1 do
|
for i = 0, list.size - 1 do
|
||||||
local preedit, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)")
|
local preedit, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)")
|
||||||
-- use #text to match both nil and empty value
|
-- use #text to match both nil and empty value
|
||||||
if #preedit > 0 and #texts > 0 then
|
if #preedit > 0 and #texts > 0 then
|
||||||
M.pin_cands[preedit] = {}
|
local preedit_no_spaces = preedit:gsub(" ", "")
|
||||||
|
M.pin_cands[preedit_no_spaces] = {}
|
||||||
-- 按照配置生成完整的拼写
|
-- 按照配置生成完整的拼写
|
||||||
for text in texts:gmatch("%S+") do
|
for text in texts:gmatch("%S+") do
|
||||||
table.insert(M.pin_cands[preedit], text)
|
table.insert(M.pin_cands[preedit_no_spaces], text)
|
||||||
end
|
end
|
||||||
-- 额外处理包含空格的 preedit,增加最后一个拼音的首字母和 zh, ch, sh 的简码
|
-- 额外处理包含空格的 preedit,增加最后一个拼音的首字母和 zh, ch, sh 的简码
|
||||||
if preedit:find(" ") then
|
if preedit:find(" ") then
|
||||||
local preceding_part, last_part = preedit:match("^(.+)%s(%S+)$")
|
local preceding_part, last_part = preedit:match("^(.+)%s(%S+)$")
|
||||||
if #last_part > 0 then
|
if #last_part > 0 then
|
||||||
-- 生成最后一个拼音的简码拼写(最后一个空格后的首字母),如 ni hao 生成 ni h
|
-- 生成最后一个拼音的简码拼写(最后一个空格后的首字母),如 ni hao 生成 nih
|
||||||
local p1 = preceding_part .. " " .. last_part:sub(1, 1)
|
local p1 = preceding_part:gsub(" ", "") .. last_part:sub(1, 1)
|
||||||
-- 只在没有明确定义此简码时才生成,已有的追加,没有的直接赋值
|
-- 只在没有明确定义此简码时才生成,已有的追加,没有的直接赋值
|
||||||
if not set[p1] then
|
if not set[p1] then
|
||||||
if M.pin_cands[p1] ~= nil then
|
if M.pin_cands[p1] ~= nil then
|
||||||
@ -76,12 +82,12 @@ function M.init(env)
|
|||||||
table.insert(M.pin_cands[p1], text)
|
table.insert(M.pin_cands[p1], text)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
M.pin_cands[p1] = M.pin_cands[preedit]
|
M.pin_cands[p1] = M.pin_cands[preedit_no_spaces]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- 生成最后一个拼音的 zh, ch, sh 的简码拼写(最后一个空格后以 zh ch sh 开头),如 zhi chi 生成 zhi ch
|
-- 生成最后一个拼音的 zh, ch, sh 的简码拼写(最后一个空格后以 zh ch sh 开头),如 zhi chi 生成 zhich
|
||||||
if last_part:match("^[zcs]h") then
|
if last_part:match("^[zcs]h") then
|
||||||
local p2 = preceding_part .. " " .. last_part:sub(1, 2)
|
local p2 = preceding_part:gsub(" ", "") .. last_part:sub(1, 2)
|
||||||
-- 只在没有明确定义此简码时才生成,已有的追加,没有的直接赋值
|
-- 只在没有明确定义此简码时才生成,已有的追加,没有的直接赋值
|
||||||
if not set[p2] then
|
if not set[p2] then
|
||||||
if M.pin_cands[p2] ~= nil then
|
if M.pin_cands[p2] ~= nil then
|
||||||
@ -89,7 +95,7 @@ function M.init(env)
|
|||||||
table.insert(M.pin_cands[p2], text)
|
table.insert(M.pin_cands[p2], text)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
M.pin_cands[p2] = M.pin_cands[preedit]
|
M.pin_cands[p2] = M.pin_cands[preedit_no_spaces]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -99,26 +105,27 @@ function M.init(env)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.func(input)
|
function M.func(input, env)
|
||||||
-- If there is no configuration, no filtering will be performed
|
-- If there is no configuration, no filtering will be performed
|
||||||
if not M.pin_cands then
|
if not M.pin_cands then
|
||||||
for cand in input:iter() do yield(cand) end
|
for cand in input:iter() do yield(cand) end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local pined = {} -- 提升的候选项
|
local pined = {} -- 提升的候选项
|
||||||
local others = {} -- 其余候选项
|
local others = {} -- 其余候选项
|
||||||
local pined_count = 0
|
local pined_count = 0
|
||||||
|
|
||||||
for cand in input:iter() do
|
for cand in input:iter() do
|
||||||
local texts = M.pin_cands[cand.preedit]
|
local preedit_no_spaces = cand.preedit:gsub(" ", "")
|
||||||
local candtext = cand.text
|
|
||||||
if cand:get_dynamic_type() == "Shadow" then
|
-- 跳过不需要处理的部分,这样期望置顶的字词在句子开头及输入到一半时也会被置顶
|
||||||
-- handle cands converted by simplifier
|
if M.pin_cands[preedit_no_spaces] == nil then
|
||||||
local originalCand = cand:get_genuine()
|
yield(cand)
|
||||||
if #originalCand.text == #candtext then
|
goto continue
|
||||||
-- 笑|😄 candtext = 😄; 麼|么 candtext = 麼;
|
|
||||||
candtext = originalCand.text
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local texts = M.pin_cands[preedit_no_spaces]
|
||||||
if texts then
|
if texts then
|
||||||
-- 给 pined 几个空字符串占位元素,后面直接 pined[idx] = cand 确保 pined 与 texts 顺序一致
|
-- 给 pined 几个空字符串占位元素,后面直接 pined[idx] = cand 确保 pined 与 texts 顺序一致
|
||||||
if #pined < #texts then
|
if #pined < #texts then
|
||||||
@ -126,8 +133,18 @@ function M.func(input)
|
|||||||
table.insert(pined, '')
|
table.insert(pined, '')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- 处理简繁转换后的问题
|
||||||
|
local candtext = cand.text
|
||||||
|
if cand:get_dynamic_type() == "Shadow" then
|
||||||
|
-- handle cands converted by simplifier
|
||||||
|
local originalCand = cand:get_genuine()
|
||||||
|
if #originalCand.text == #candtext then
|
||||||
|
-- 笑|😄 candtext = 😄; 麼|么 candtext = 麼;
|
||||||
|
candtext = originalCand.text
|
||||||
|
end
|
||||||
|
end
|
||||||
-- 要置顶的放到 pined 中,其余的放到 others
|
-- 要置顶的放到 pined 中,其余的放到 others
|
||||||
local ok, idx = isInList(texts, candtext)
|
local ok, idx = is_in_list(texts, candtext)
|
||||||
if ok then
|
if ok then
|
||||||
pined[idx] = cand
|
pined[idx] = cand
|
||||||
pined_count = pined_count + 1
|
pined_count = pined_count + 1
|
||||||
@ -142,6 +159,8 @@ function M.func(input)
|
|||||||
table.insert(others, cand)
|
table.insert(others, cand)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|
||||||
|
::continue::
|
||||||
end
|
end
|
||||||
|
|
||||||
-- yield pined others 及后续的候选项
|
-- yield pined others 及后续的候选项
|
||||||
|
12
rime.lua
12
rime.lua
@ -86,3 +86,15 @@ is_in_user_dict = require("is_in_user_dict")
|
|||||||
-- get_record_filername() 函数中仅支持了 Windows、macOS、Linux
|
-- get_record_filername() 函数中仅支持了 Windows、macOS、Linux
|
||||||
cold_word_drop_processor = require("cold_word_drop.processor")
|
cold_word_drop_processor = require("cold_word_drop.processor")
|
||||||
cold_word_drop_filter = require("cold_word_drop.filter")
|
cold_word_drop_filter = require("cold_word_drop.filter")
|
||||||
|
|
||||||
|
-- 临时用的
|
||||||
|
function debug_checker(input, env)
|
||||||
|
for cand in input:iter() do
|
||||||
|
yield(ShadowCandidate(
|
||||||
|
cand,
|
||||||
|
cand.type,
|
||||||
|
cand.text,
|
||||||
|
env.engine.context.input .. " - " .. env.engine.context:get_preedit().text .. " - " .. cand.preedit
|
||||||
|
))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@ -139,35 +139,9 @@ reduce_english_filter:
|
|||||||
|
|
||||||
|
|
||||||
# Lua 配置: 置顶候选项
|
# Lua 配置: 置顶候选项
|
||||||
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
|
#TODO 文档和示例
|
||||||
# (对简繁转换无效,除非简繁文字一致 😰)
|
|
||||||
#
|
|
||||||
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
|
|
||||||
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
|
|
||||||
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
|
|
||||||
#
|
|
||||||
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh,
|
|
||||||
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
|
|
||||||
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
|
|
||||||
# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
|
|
||||||
pin_cand_filter:
|
pin_cand_filter:
|
||||||
# 格式:编码<Tab>字词1<Space>字词2……
|
# 格式:编码<Tab>字词1<Space>字词2……
|
||||||
# 示例:
|
|
||||||
# - 'le 了' # 输入 le 时,置顶「了」
|
|
||||||
# - 'la 啦' # 输入 la 时,置顶「啦」
|
|
||||||
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
|
|
||||||
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
|
|
||||||
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
|
|
||||||
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
|
||||||
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
|
|
||||||
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
|
|
||||||
# - da zhuang 大专
|
|
||||||
# - da zhong 大众
|
|
||||||
# # 如果明确定义了简码形式,则完全使用简码形式
|
|
||||||
# - da z 打字
|
|
||||||
# - da zh 打仗
|
|
||||||
#
|
|
||||||
# ⚙️ 以下是个人习惯,仅供参考,可以打个补丁来覆盖。
|
# ⚙️ 以下是个人习惯,仅供参考,可以打个补丁来覆盖。
|
||||||
# 单编码
|
# 单编码
|
||||||
- q 去 千
|
- q 去 千
|
||||||
@ -197,41 +171,79 @@ pin_cand_filter:
|
|||||||
- n 那 哪 拿 呐
|
- n 那 哪 拿 呐
|
||||||
- m 吗 嘛 呣
|
- m 吗 嘛 呣
|
||||||
# 单字
|
# 单字
|
||||||
- de 的 地 得
|
- qing 请
|
||||||
- na 那 哪 拿
|
- qu 去
|
||||||
- ta 他 她 它 祂
|
- wo 我
|
||||||
|
- wei 为
|
||||||
- er 而 儿 二
|
- er 而 儿 二
|
||||||
- ma 吗 嘛 妈
|
- en 嗯
|
||||||
- zhe 这 着
|
- rang 让
|
||||||
- hai 还
|
- ta 他 她 它 祂
|
||||||
- you 有 🈶 又 由
|
- tai 太
|
||||||
- mei 没
|
|
||||||
- bing 并
|
|
||||||
- tong 同
|
- tong 同
|
||||||
- yu 与 于
|
- yu 与 于
|
||||||
- he 和
|
- you 有 🈶 又 由
|
||||||
- ji 及 即 既
|
|
||||||
- shi 是 时
|
|
||||||
- la 啦 拉
|
|
||||||
- xing 行
|
|
||||||
- dian 点
|
|
||||||
- yao 要
|
- yao 要
|
||||||
- kan 看
|
- ye 也
|
||||||
- bei 被
|
- shi 是 时 使 式
|
||||||
- zuo 做
|
- de 的 地 得
|
||||||
|
- dan 但
|
||||||
- dao 到 倒
|
- dao 到 倒
|
||||||
- xiang 想 像 向
|
- dian 点
|
||||||
- zhi 只
|
- dang 当
|
||||||
- cai 才
|
- dui 对
|
||||||
|
- fa 发
|
||||||
|
- ge 个 各
|
||||||
- gang 刚
|
- gang 刚
|
||||||
|
- he 和
|
||||||
|
- huo 或
|
||||||
|
- hui 会
|
||||||
|
- hai 还
|
||||||
|
- hao 好
|
||||||
|
- ji 及 即 既
|
||||||
- jiu 就
|
- jiu 就
|
||||||
|
- jiang 将
|
||||||
|
- ke 可
|
||||||
|
- kan 看
|
||||||
|
- kai 开
|
||||||
|
- le 了
|
||||||
|
- la 啦 拉
|
||||||
|
- lai 来
|
||||||
|
- li 里
|
||||||
|
- zai 在 再
|
||||||
|
- zhi 只
|
||||||
|
- zhe 这 着
|
||||||
|
- zhen 真
|
||||||
|
- zui 最
|
||||||
|
- zheng 正
|
||||||
|
- zuo 做 坐 左
|
||||||
|
- ze 则
|
||||||
|
- xiang 想 像 向
|
||||||
|
- xian 先
|
||||||
|
- xia 下
|
||||||
|
- xing 行
|
||||||
|
- cai 才
|
||||||
|
- cong 从
|
||||||
|
- chu 出
|
||||||
|
- ba 吧 把
|
||||||
|
- bu 不
|
||||||
|
- bing 并
|
||||||
|
- bei 被
|
||||||
|
- bie 别
|
||||||
|
- bi 比
|
||||||
|
- bing 并
|
||||||
|
- na 那 哪 拿
|
||||||
|
- ni 你
|
||||||
|
- ma 吗 嘛 妈
|
||||||
|
- mei 没
|
||||||
# ta、na
|
# ta、na
|
||||||
- ta de 他的 她的 它的
|
|
||||||
- 'tad 他的 她的 它的' # 英文单词 tad 造成 preedit 为 tad,从而让 ta d 的置顶未生效,需要明确再写上 tad
|
|
||||||
- ta men 他们 她们 它们
|
- ta men 他们 她们 它们
|
||||||
|
- tm 他们 她们 它们
|
||||||
|
- ta de 他的 她的 它的
|
||||||
- ta men de 他们的 她们的 它们的
|
- ta men de 他们的 她们的 它们的
|
||||||
- na er 那儿 哪儿
|
- na er 那儿 哪儿
|
||||||
- na ge 那个 哪个
|
- na ge 那个 哪个
|
||||||
|
- ng 那个 哪个
|
||||||
- na xie 那些 哪些
|
- na xie 那些 哪些
|
||||||
- na li 那里 哪里
|
- na li 那里 哪里
|
||||||
- na bian 那边 哪边
|
- na bian 那边 哪边
|
||||||
@ -239,28 +251,25 @@ pin_cand_filter:
|
|||||||
- na wei 那位 哪位
|
- na wei 那位 哪位
|
||||||
# 简码
|
# 简码
|
||||||
- zh 这
|
- zh 这
|
||||||
- d d 等等
|
- dd 等等
|
||||||
- 'dd 等等' # 覆盖英文单词 D&D
|
- dddd 等等等等
|
||||||
- d d d d 等等等等
|
- gg 刚刚
|
||||||
- g g 刚刚
|
- cgg 才刚刚
|
||||||
- c g g 才刚刚
|
- zd 知道
|
||||||
- z d 知道
|
- bzd 不知道
|
||||||
- b z d 不知道
|
- ww 往往
|
||||||
- w w 往往
|
- hh 哈哈
|
||||||
- h h 哈哈
|
- kk 看看
|
||||||
- k k 看看
|
- cc 常常
|
||||||
- c c 常常
|
- xx 想想 🤔 想象
|
||||||
- x x 想想 🤔 想象
|
- yw 因为
|
||||||
- y w 因为
|
- sm 什么
|
||||||
- s m 什么
|
- wsm 为什么
|
||||||
- w s m 为什么
|
- sbs 是不是
|
||||||
- s b s 是不是
|
- msm 没什么
|
||||||
- m s m 没什么
|
- smd 什么的
|
||||||
- s m d 什么的
|
- sms 什么是
|
||||||
- s m s 什么是
|
- sma 什么啊
|
||||||
- 'sms 什么是' # 覆盖英文单词 SMS
|
|
||||||
- s m a 什么啊
|
|
||||||
- 'sma 什么啊' # 覆盖英文单词 S码
|
|
||||||
|
|
||||||
|
|
||||||
# 主翻译器,拼音
|
# 主翻译器,拼音
|
||||||
|
Loading…
x
Reference in New Issue
Block a user