【问题标题】:eclipse plugin: How to programmatically select text in editor?eclipse 插件:如何在编辑器中以编程方式选择文本?
【发布时间】:2012-01-08 05:33:36
【问题描述】:

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

【问题讨论】:

  • Eclipse API 是一个迷宫。我可以找到很多关于如何“获取”当前选择,而不是“设置”选择的谷歌点击。
  • 通过 googleling 找到这个(不是直接在主题上)......如果你想半自动标记一个代码块(例如一些 sql 块/查询在一些 plsql 函数中)对于执行(例如在 SQL File Editor 中),您可以在当前悬停/标记的块上使用非常通用的 Nodeclipse Editor PluginALT+Zgithub.com/Nodeclipse/EditBox

标签: java eclipse-plugin


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您已经掌握了当前编辑器的句柄,那么您可以这样做:

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

    如果您没有当前编辑器的句柄,那么您需要做一些工作才能到达那里(假设是文本编辑器):

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

    虽然这可行,但我已经简化了一些事情。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 2012-03-08
      • 2011-08-18
      • 1970-01-01
      相关资源
      最近更新 更多