就地(“快速辅助”或更简单的)源代码修饰符?

时间:2012-03-14 19:24:22

标签: eclipse

Eclipse已经非常令人印象深刻和有用,我称之为“源代码修饰符”(请建议一个更好的名称)。

例如,它具有“快速修复”,“单词完成”,“外化字符串”以及通过菜单(或键组合)修改源代码的其他功能。

现在,我希望添加我自己的“源代码修饰符”功能:我想:

  1. 突出显示(选择)任意字符串。
  2. 右键单击
  3. 使用我编写的函数(最好是Java),调用一个菜单项,将该字符串“转换”为另一个字符串。与默认上下文菜单中当前的“快速修复”或“替换为”类似。
  4. 这在Eclipse中是否可行?

    如果是这样,我需要做些什么来完成这项工作?

2 个答案:

答案 0 :(得分:2)

答案简短:

快速助手必须修改Java代码的AST。基本上,您必须将org.eclipse.jdt.core.dom.SimpleName节点替换为您想要的节点。

答案很长:

org.eclipse.jdt.ui.quickAssistProcessors扩展点使您可以贡献自己的Java代码快速助手。

要为扩展点创建新扩展,您需要首先在plugin.xml中提供所需的扩展名。例如,JDT定义了以下处理器

   <extension
         point="org.eclipse.jdt.ui.quickAssistProcessors">
      <quickAssistProcessor
            name="%defaultQuickAssistProcessor"
            class="org.eclipse.jdt.internal.ui.text.correction.QuickAssistProcessor"
            id="org.eclipse.jdt.ui.text.correction.QuickAssistProcessor">
      </quickAssistProcessor>
   </extension>

(有关各个属性的说明,请参阅扩展点文档)

然后,您需要创建实现org.eclipse.jdt.ui.text.java.IQuickAssistProcessor接口的类,并修改此类中的AST。 (此类与声明扩展时指定的类相同)

提供正确的IJavaCompletionProposal

JDT为修正提案提供以下默认实施,可用于提供快速修复和快速帮助。

  • ChangeCorrectionProposal
  • CUCorrectionProposal
  • ASTRewriteCorrectionProposal

如果使用ASTRewrite,则应创建ASTRewriteCorrectionProposal。

ASTView插件

这可以帮助您可视化Java源文件http://www.eclipse.org/jdt/ui/astview/index.php

的AST

答案 1 :(得分:1)

正确的名称是“Quick Assist”。您必须编写一些代码来创建快速助手。