【问题标题】:ASTRewrite for a QuickFix: How to position the cursor?QuickFix 的 ASTRewrite:如何定位光标?
【发布时间】:2015-08-05 10:10:35
【问题描述】:

我在 Eclipse 插件上工作,并使用 ASTRewrite 创建了一个 QuickFix。简而言之,它的构造方式如下:

public class MyQFXProcessor implements IQuickFixProcessor {
    public IJavaCompletionProposal[] getCorrections(IInvocationContext context,
                                                    IProblemLocation[] locations) {
        AST ast = context.getASTRoot().getAST();
        ASTRewrite rw = ASTRewrite.create(ast);
        ASTNode replacement = ast.newSimpleName("Test");
        rewrite.replace(context.getCoveringNode(), replacement);
        IJavaCompletionProposal p = new ASTRewriteCorrectionProposal("My QFX",
                                                     context.getCompilationUnit(), rw, 10);
        return new IJavaCompletionProposal[]{p};
    }
}

到目前为止,这工作正常。但是我还没有实现的是在应用提案后设置所需的光标位置。例如,这是在 JDT 中解决添加参数快速修复的方法:

我认为应该有一个 API 可以做到这一点,因为 Eclipse 将这种行为用于不同的用例(在自动完成等方面)。有人知道如何实现吗?

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-jdt


    【解决方案1】:

    您可以通过org.eclipse.jdt.internal.ui.text.correction.proposals.LinkedCorrectionProposal.setEndPosition(ITrackedNodePosition position)查看org.eclipse.jdt.internal.ui.text.correction.proposals.LinkedCorrectionProposal的内部实现和用法,它在快速修复或快速协助中设置链接模式的结束位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多