rime / librime

Rime Input Method Engine, the core library
https://rime.im
BSD 3-Clause "New" or "Revised" License
3.45k stars 562 forks source link

disable_user_dict_for_patterns 不能禁止字词录入用户词典 #953

Open Twilight-9 opened 4 days ago

Twilight-9 commented 4 days ago

起因是我想禁止单字加入用户词典。

发现 translator/disable_user_dict_for_patterns 似乎只是禁止某些编码 “加载/显示” 用户词典,而不是禁止某些编码的字词 “录入” 用户词典。

复现

patch:
  translator/disable_user_dict_for_patterns
    - "^z.*$"

↑先用上面的 patch,重新部署,然后打出“字字”(实际这一步加入了用户词典),然后注释掉上面的 patch,再打一遍“字字”的编码,发现“字字”置顶/加入了用户词典。

patch:
  translator/disable_user_dict_for_patterns
    - "^.{1,2,3,4}$"

↑先用上面的 patch,重新部署,然后打出“字字”(实际这一步加入了用户词典),再打一遍“字字珠玑”的编码,往下翻,发现“字字”置顶/加入了用户词典。

所以感觉 disable_user_dict_for_patterns 只是禁止“加载/显示” 用户词典,而不是禁止录入字词,不知道这是特性还是 bug。

lotem commented 4 days ago

只管這樣用。

disable_user_dict_for_patterns 匹配的是輸入碼。所以只管出詞。

更新詞典的時候,沒限制。更新不是用輸入碼,這項設定用不了。

ksqsf commented 3 days ago

我试了一下,这里的问题是即使我指定了 ^z.* ,依然可以造出词然后影响后续 z 开头的输入,就好像这个设置完全不存在一样。我觉得还是有问题的。

我觉得应该定义为:在输入匹配该 pattern 时,完全不使用 userdict,构造出的候选(即使是 sentence)也不写入 userdict。也就是只考虑输入,不关心 prism。