我正在开发一个 Etherpad-lite 插件,在编写时提供特殊的自动完成功能。我正在尝试在用户写入时更新自动完成项目的列表。我的问题是 aceEditEvent 的 context.rep.selStart 和 context.rep.selEnd 中的插入符号位置仅在按键后的第一个 idleWorkTimer 事件中更新,为此目的有很大的延迟。
aceEditEvent 中的事件发生如下:
- handleKeyEvent - 立即出现(我猜是 keydown), content.rep在击键之前有选择
- handleKeyEvent - 立即出现(我猜是按键), content.rep在击键之前有选择
- handleKeyEvent - 立即出现(我猜是 keyup), content.rep在击键之前有选择
- idleWorkTimer - 带有长达 1s 的延迟,content.rep在击键后有选择
那么如何在没有延迟的情况下获得新的插入符号位置?