當我寫這個問題,我錯了有關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,但這似乎有點破解。
我也見過有人在StackOverflow上詢問有關alternatives to the CaretListener interface的信息,以跟蹤Eclipse編輯器中的光標移動,並描述瞭如何註冊編輯器的文本查看器(而不是全局的SelectionService)以獲取光標移動更新,但它們表明這是一種效率較低的方法,可以在更新版本的Eclipse中被CaretListener接口更好地替代。
最後可能是一個選項,但它聽起來像使用CaretListener將是首選的方法......但如果它是,它是如何做到的?