Отказ от ответственности
Когда я писал этот вопрос, я ошибался в отношении поведения SelectionService ... SelectionService обычно уведомляет о перемещении курсора, но также не для каждого движения: наличиеВаша IDE быстро мигает, показывая подробную информацию, когда вы перемещаете курсор вверх на 10 строк, чтобы получить то, что вас интересует, и бесполезно, поскольку информация отображается слишком короткое время, чтобы быть полезной, сильно отвлекающей и, возможно, даже опасной дляте с потенциальной эпилепсией.
По этой причине SelectionService реагирует только после того, как курсор оставлен в одном и том же месте достаточно долго, что имеет смысл обновлять представления Eclipse в ответ на новый контекст.
Я также слышал, что несколько лет назад была одна версия Eclipse, в которой было выбрано SelectionService, поэтому я не уверен, опубликовал ли я это, потому что случайно произвел разработку плагинов Eclipse именно в этой версии,или потому, что я не понимал, почему SelectionService работает так, как он работает, но в конце концов использование Eclispe SelectionService - это все, что мне когда-либо было нужно, или я бы порекомендовал другим.
Оригиналвопрос
Я разрабатываю плагин Eclipse, который должен реагировать на текущую позицию курсора в редакторе Eclipse.
Из проведенных мною тестов выясняется, что с помощьюSelectionService сообщает вам, только когда в редакторе делается непустое выделение, а не когда курсор перемещается.
Я нашел один сайт, описывающий , как отслеживать выборки путем регистрации событий мыши и клавиатуры., но это похоже на хак.
Я также видел, как кто-то спрашивал в StackOverflow о alterвстроенный в интерфейс CaretListener для отслеживания перемещения курсора в редакторе Eclipse и описания способа регистрации в средстве просмотра текста редактора (а не в глобальном SelectionService) для получения обновлений перемещения каретки, но они предполагают, что это менее эффективнометод, который лучше заменить на интерфейс CaretListener в более поздних версиях Eclipse.
Последний вариант может быть одним из вариантов, но похоже, что использование CaretListener было бы предпочтительным подходом ... но если это так,как это можно сделать?