Eclipe PDE: перейдите к строке X и выделите ее - PullRequest
6 голосов
/ 20 мая 2010

Вопрос о разработке Eclipse PDE: я пишу небольшой плагин для Eclipse и имею следующее * an org.eclipse.ui.texteditor.ITextEditor * номер строки

Как я могу автоматически перейти к этой строке и отметить ее? Жаль, что API, похоже, поддерживает только смещения (см. ITextEditor.selectAndReveal ()) внутри документа, но без номеров строк.

Лучшее было бы - хотя это не работает:

ITextEditor editor = (ITextEditor)IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), file, true );
editor.goto(line);
editor.markLine(line);

Это возможно каким-то образом? Я не нашел решения

Ответы [ 2 ]

5 голосов
/ 25 июля 2010

в классе DetailsView Я нашел следующий метод.

private static void goToLine(IEditorPart editorPart, int lineNumber) {
  if (!(editorPart instanceof ITextEditor) || lineNumber <= 0) {
    return;
  }
  ITextEditor editor = (ITextEditor) editorPart;
  IDocument document = editor.getDocumentProvider().getDocument(
    editor.getEditorInput());
  if (document != null) {
    IRegion lineInfo = null;
    try {
      // line count internaly starts with 0, and not with 1 like in
      // GUI
      lineInfo = document.getLineInformation(lineNumber - 1);
    } catch (BadLocationException e) {
      // ignored because line number may not really exist in document,
      // we guess this...
    }
    if (lineInfo != null) {
      editor.selectAndReveal(lineInfo.getOffset(), lineInfo.getLength());
    }
  }
}
1 голос
/ 20 мая 2010

Несмотря на то, что org.eclipse.ui.texteditor.ITextEditor имеет значение смещения, оно должно иметь возможность получить номер вашей строки с помощью метода selectAndReveal().

См. эту тему и эту тему .

Попробуйте что-нибудь вроде:

((ITextEditor)org.eclipse.jdt.ui.JavaUI.openInEditor(compilationUnit)).selectAndReveal(int, int);
...