Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

雾凇拼音输入法,输入'dian' 出现的都是'di' 相关的字 #675

Closed
xkia opened this issue Feb 7, 2024 · 11 comments
Closed

雾凇拼音输入法,输入'dian' 出现的都是'di' 相关的字 #675

xkia opened this issue Feb 7, 2024 · 11 comments
Labels
bug Something isn't working

Comments

@xkia
Copy link

xkia commented Feb 7, 2024

效果如图:
image

@iDvel
Copy link
Owner

iDvel commented Feb 7, 2024

你可以把你的整个配置发上来看一下吗,想知道是怎么导致这个问题的。
纯默认配置是没问题的。

@xkia
Copy link
Author

xkia commented Feb 7, 2024

使用的默认配置,只是禁用了corrector.lua的两个参数spelling_hints和always_show_comments
使用版本为:095630890883eee0559c3b6acd0a6f936cd13ae9
和个人的历史的词库有关系吗?每次同步均保留历史rime_ice.userdb
日常小鹤双拼和雾凇拼音混用,,,
目前测试看是和rime_ice.userdb的配置有关系,删除rime_ice.userdb重新创建后无此问题。可能和最近双拼,拼接切换使用导致的吧

@iDvel
Copy link
Owner

iDvel commented Feb 7, 2024

不应该的呀,我也偶尔切到双拼,无论用全拼还是双拼输入,记录到用户词典后都是完整拼音的。
你看看你同步目录的 rime_ice.userdb.txt 里面是不是有错误的记录,比如「底」被记录成了 dian
试不出这个问题,不知道是怎么导致的。

@xkia
Copy link
Author

xkia commented Feb 7, 2024

rime_ice.userdb.txt记录没有错误,只是Rime中的rime_ice.userdb导致的,我先清理重新创建了,我保留了历史的rime_ice.userdb,并排查具体原因,我再同步

@iDvel iDvel added the bug Something isn't working label Feb 7, 2024
@iDvel
Copy link
Owner

iDvel commented Feb 8, 2024

pin_cand_filter.lua 的 bug,应该和你的用户词典没关系,关掉 emoji 可复现。
抱歉写得太烂了,晚上重写一下。

@xkia
Copy link
Author

xkia commented Feb 8, 2024

感谢🙏

@iDvel iDvel closed this as completed in dacea2c Feb 8, 2024
@iDvel
Copy link
Owner

iDvel commented Feb 8, 2024

这回应该是应该是行了,测了好几遍。

更改了 engine/filters 的顺序,置顶的配置里也不需要写 emoji 了,简繁问题也解决了。

@mirtlecn
Copy link
Collaborator

mirtlecn commented Feb 8, 2024

+env.pin_cands[preedit_no_spaces] = {}
+table.insert(env.pin_cands[preedit_no_spaces], text)

注意改了变量命名,把 M.pin_cands 改成了 env.pin_cands,是前者明确会引起什么特殊的问题才改的吗(没有审查整个脚本)

P.S. 即:其他使用类似命名方案的 lua,是否有问题,需要修改?(习惯用本地的表格变量,只是因为 env 对于 librime lua 来说算是个全局变量,一直担心在此脚本设定的 env.pin_cands 在后续的其他脚本仍然有效,导致环境污染,但从未验证)。

@iDvel
Copy link
Owner

iDvel commented Feb 8, 2024

我之前说诡异的串台问题,就是因为我在双拼方案给 pin_cand_filter: 留空了,导致双拼方案在 init 时设置失败,但却成功使用了全拼方案的配置。
我就那么灵机一动试了一下,改成 env 开头的就不会串台了。

另外测试了不会有污染,在 filter_b 里拿不到 filter_a 里设置的 env.xxx

@mirtlecn
Copy link
Collaborator

mirtlecn commented Feb 9, 2024

修复了留空导致 init 失败进而串台,看起来是这一句:

-if not list then return end -- no configuration found -> stop
+if not list or list.size == 0 then return end

这里面好几个我写的 lua 都是这么命名变量的,以后有 bug 报出来了,再回来看看是不是也和变量命名有关。

@iDvel
Copy link
Owner

iDvel commented Feb 10, 2024

这句没改变「串台」的问题。
M.xxx 在多个方案之间共享了,env.xxx 没在多个方案共享。

local M = {}

function M.init(env)

    log.error("init " .. env.engine.schema.schema_id)

    if env.engine.schema.schema_id == "rime_ice" then
        env.rime_ice_only = "rime_ice_only"
        log.error("set rime_ice_only")
    end

    if env.engine.schema.schema_id == "double_pinyin" then
        if env.rime_ice_only == nil then
            log.error("nil") -- 切换到另一个方案后,这里输出 nil
        else
            log.error("not nil")
        end
    end

    -- 。。。
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants