6

关于 Eclipse PDE 开发的一个问题:我为 Eclipse 编写了一个小插件,并且有以下 * 一个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);

这在某种程度上可能吗?我没有找到解决方案

4

2 回答 2

5

在类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());
    }
  }
}
于 2010-07-25T13:55:10.860 回答
1

即使org.eclipse.ui.texteditor.ITextEditor处理偏移量,它应该能够使用该selectAndReveal()方法获取您的行号。

请参阅此线程此线程

尝试以下方式:

((ITextEditor)org.eclipse.jdt.ui.JavaUI.openInEditor(compilationUnit)).selectAndReveal(int, int);
于 2010-05-20T13:16:10.970 回答