用于QuickFix的ASTRewrite:如何定位光标?

时间:2015-08-05 10:10:35

标签: java eclipse eclipse-plugin eclipse-jdt

我使用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中为添加参数快速修复解决的方法:

enter image description here

enter image description here

我认为应该有一个API来实现这一点,因为Eclipse将这种行为用于不同的用例(在其他用户中自动完成)。有没有人知道如何实现它?

1 个答案:

答案 0 :(得分:0)

您可以查看org.eclipse.jdt.internal.ui.text.correction.proposals.LinkedCorrectionProposal.setEndPosition(ITrackedNodePosition position)的内部实施和使用情况,通过{{1}}快速修复或快速帮助设置链接模式的结束位置。