我如何在Eclipse编辑器中注册插入式侦听器?

问题描述 投票:4回答:1

免责声明

[当我写这个问题时,我对SelectionService的行为是错误的... SelectionService通常会通知光标移动,但也不会为每一次移动通知:当您向上滚动光标时,让IDE快速闪烁以显示详细信息10条线无法显示您感兴趣的内容,因为信息显示的时间太短而无法使用,高度分散注意力,甚至可能对患有癫痫病的人造成危险。

出于这个原因,SelectionService仅在将光标留在同一位置足够长的时间后响应,以使Eclipse视图能够响应新上下文进行更新才有意义。

[我还听说几年前有一个Eclipse版本中的SelectionService受到了错误影响,所以我不确定是否发布了此版本,因为我碰巧第一次开发的正是该版本的Eclipse插件,或者因为我没有我不明白为什么SelectionService会如此工作,但最后,我只需要使用Eclispe SelectionService,或者会推荐给其他人。

原始问题

我正在开发一个Eclipse插件,该插件需要响应Eclipse编辑器中的当前光标位置。

根据我已经完成的测试,似乎使用SelectionService仅告诉您何时在编辑器中进行了非空选择,而不是何时移动了光标。

我已经找到一个描述how to track selections by registering for mouse and keyboard events的网站,但这似乎有点hack。

[我还看到有人在StackOverflow上询问有关alternatives to the CaretListener interface的信息,以跟踪Eclipse编辑器中的光标移动,并描述了一种向编辑器的文本查看器(而不是全局SelectionService)注册以获取插入符号移动更新的方法,但是他们建议这是一种效率较低的方法,最好在最新版本的Eclipse中用CaretListener接口代替。

最后一个可能是一个选项,但听起来像使用CaretListener将是首选方法...但是,如果是这样,怎么做?

cursor caret eclipse-plugin
1个回答
3
投票

如果您可以在不支持Eclipse早期版本(3.4及更低版本)的情况下生存,那么CaretListener绝对是可行的方法。较早的CaretListener实现不会发送有关插入符号移动的任何通知。

如您的第一个链接中所述,访问编辑器的StyledText控件,但不要添加键或鼠标侦听器,而要添加StyledText

CaretListener
© www.soinside.com 2019 - 2024. All rights reserved.