java - ASTRewrite 用于 QuickFix : How to position the cursor?

标签 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 将这种行为用于不同的用例(在自动完成等方面)。有人知道如何实现吗?

最佳答案

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

关于java - ASTRewrite 用于 QuickFix : How to position the cursor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31829465/

相关文章:

java - Dozer boolean 映射 Eclipse 错误

java - 一旦源文件更新,Eclipse PMD会自动重新解析吗?

eclipse-plugin - eclipse插件开发中弹出操作的动态标签

java - 使用 JSoup 提取表行数据不返回任何内容

java - 调用接口(interface)方法,但返回类型无效?

java - AngularJS -> Java : POST/PUT request results in 'Preflight request doesn' t pass access control check'

eclipse - 为什么 Eclipse 可能无法在 Ant 构建文件的运行选项中显示 "Ant Build"?

C 编译器问题,多个路径定义/链接

java - 单击项目两次而不是一次

regex - Eclipse 或 Notepad++ 中区分大小写的字符串替换