Плагин Eclipse: Как программно выделить текст в редакторе? - PullRequest
3 голосов
/ 08 января 2012

Я хочу программно перейти на позицию в текстовом редакторе и выделить код.

Ответы [ 2 ]

5 голосов
/ 08 января 2012

Я не смог получить Эндрю ответ , чтобы работать в Eclipse 3.7. Компилятор выдал эту ошибку:

The method getSourceViewer() from the type AbstractTextEditor is not visible.

Однако я смог заставить его работать с selectAndReveal() методом:

IFile myfile = ...
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
ITextEditor editor = (ITextEditor) IDE.openEditor(page, myfile);
editor.selectAndReveal(offset, length);
0 голосов
/ 08 января 2012

Если у вас уже есть дескриптор в текущем редакторе, то вы можете сделать:

editor.getSourceViewer().setSelectedRange(offset, length);

Если у вас нет дескриптора в текущем редакторе, то вам нужно выполнить некоторую работу, чтобы получитьтам (при условии текстового редактора):

TextEditor editor = (TextEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
    .getActivePage().getActiveEditor();

Хотя это будет работать, я упростил несколько вещей.

  1. Вы должны убедиться, что активный редактор действительноa TextEditor, поэтому вы захотите выполнить экземпляр теста
  2. Иногда различные части длинной фразы выше могут быть нулевыми (например, при запуске или завершении работы).Я склоняюсь к тому, чтобы просто обернуть выражение в блок try-catch (NPE) и предположить, что если выбрасывается NPE, то редактор недоступен.
...