eclipse插件:如何以编程方式在编辑器中选择文本?

我想以编程方式跳转到文本编辑器中的某个位置并突出显示代码。

我无法得到Andrew在Eclipse 3.7中的工作答案 。 编译器给出了这个错误:

  AbstractTextEditor类型的方法getSourceViewer()不可见。 

但是,我能够使用selectAndReveal()方法:

 IFile myfile = ... IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); ITextEditor editor = (ITextEditor) IDE.openEditor(page, myfile); editor.selectAndReveal(offset, length); 

如果您已经拥有当前编辑器的句柄,那么您可以执行以下操作:

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

如果你没有当前编辑器的句柄,那么你需要做一些工作来实现(假设一个文本编辑器):

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

虽然这会奏效,但我简化了一些事情。

  1. 您需要确保活动编辑器确实是TextEditor ,因此您将要进行instanceof测试
  2. 有时上面的长短语的各个部分可以为空(例如,在启动或关闭期间)。 我倾向于将表达式包装在try-catch(NPE)块中,并假设如果抛出NPE,则编辑器不可用。