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

时间:2012-01-08 05:33:36

标签: java eclipse-plugin

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

2 个答案:

答案 0 :(得分:5)

我无法让Andrew's answer在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);

答案 1 :(得分:0)

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

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

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

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

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

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