librime icon indicating copy to clipboard operation
librime copied to clipboard

请问如何在向左移动光标后,保持光标后的 preedit.text 分隔符和 preedit_format 效果不变

Open ccyybn opened this issue 1 year ago • 0 comments

我发现向左移动光标后,光标后 preedit 的内容会变成原始输入内容,分隔符 会消失,preedit_format 也会失效。 这样左右调整位置时,整个内容会不断跳动变化,特别是双拼这种将 长韵母 映射为 单键 的情况,肉眼很难定位,很不舒服 而微软拼音左右移动光标整个 preedit 就不会变,只有光标在动,就很舒服

我尝试修改源码,找到这两行,发现光标前的内容是由 cand->preedit() 生成,光标后就是简单的直接拼接的 full_input 字符串

composition.cc: 63
preedit.text += std::to_string(i) + cand->preedit();
composition.cc: 82
if (end < full_input.length()) {
  preedit.text += full_input.substr(end);
}

然后似乎caret_pos_改变后,update_notifier_(this) 通知了cand 改变其preedit()的内容,不过我没找到在哪,我现在也不知道要怎么改了,而且这好像有点难改

ccyybn avatar May 06 '24 09:05 ccyybn