lotem/librime — pull request #18 by tramhao (2014-07-02 09:53:28+00:00)
Title: CQLB update

Based on patch from Lotem. Absxbbs modified some code, about auto-commit logic. I would like to post his message below:

# rime官方新正则补丁应用于超强两笔方案的使用体会

rime 新正则补丁已彻底地解决了cqlb各种无重上屏体验的要求，并巧妙解决了i全形码lookup拼音时查询时码长达到maxcode时被强行截断的问题。在本补丁下，应用于超强两笔标准版（不带第5选择键编码）编写方案时，若“,./;”码不列入initals，则满四键出现多候选项时，下一键若为“,. /;”标点符号，则不能正常顶屏，若为其他编码字符，则正常顶屏；为避免出现这种情况，须将“,./;”码列入initals中，并需在字典中加入这四个标点对应中文的编码；因为此时“,./;”不经rime的punctuator处理，rime的switches->ascii_punct功能体验不完善（,./;在英文状态时仍为中文标点），其他各种功能均正常。

应用于超强两笔无重码版时，若设置maxcode=5，则满四键且第五键不为无重选择键或标点符号时无法顶字上屏，再说第5码为无重选择码，符合5码长的都可用正则限制无重上屏补丁解决。若设置为maxcode为4，则第5码无重选择键失效。

建议官方将maxcode顶字上屏逻辑稍作修改，先查看输入maxcode+1键情况下，有无候选项，如果有，这是特殊情况，不作顶字上屏处理；如果无候选项，则将前maxcode个编码的候选项顶字上屏，将第max+1个字符作为新的输入序列首键，且该键不属于initals时，交给rime其他组件（如 punctuator）处理。这样无重码版的方案很容易编写，标准版的方案也可以将四个标点从initals中移除，完全由punctuator处理。这种修改同时不影响原顶字上屏功能，只是效率略低。

补丁又略修饰了，看能不能提交到官方。

http://pan.baidu.com/s/1c0gquL6