6

我正在开发一个 Eclipse 插件,它可以修改用户项目中的 Java 代码。

基本上这个插件的结果就是在一些方法上加了Java注解,所以

void foo() { ... }

变成

@MyAnnotation
void foo() { ... }

除了看起来不太像;新插入的注释上的缩进很奇怪(具体来说,新注释一直到行的左侧)。我想对文件进行所有更改,然后以编程方式调用“正确缩进”。

有谁知道如何做到这一点?我在这里或 JDT 论坛中找不到答案,所有看起来相关的类(IndentAction、JavaIndenter)都在我不应该使用的内部包中......

谢谢!

4

2 回答 2

6

好吧,我想我可能已经找到了我想要的解决方案。我想我应该在问之前花更多时间搜索......但为了将来参考,这就是我所做的!好东西在 ToolFactory...

import org.eclipse.jdt.core.ToolFactory;
import org.eclipse.jdt.core.formatter.CodeFormatter;
import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.text.edits.TextEdit;
import org.eclipse.jdt.core.ICompilationUnit;

...

ICompilationUnit cu = ...

...

CodeFormatter formatter = ToolFactory.createCodeFormatter(null);
ISourceRange range = cu.getSourceRange();
TextEdit indent_edit =
  formatter.format(CodeFormatter.K_COMPILATION_UNIT, 
    cu.getSource(), range.getOffset(), range.getLength(), 0, null);
cu.applyTextEdit(indent_edit, null);

cu.reconcile();

这将重新格式化整个文件。如果您需要重新格式化更少,还有其他选择...

于 2010-05-20T13:10:22.420 回答
-1

在处理 Java 代码时添加缩进可能更容易。

您的 Eclipse 插件必须阅读该void foo() { ... }行才能知道添加@MyAnnotation,对吗?只需从 Java 行获取缩进,并将注释附加到缩进。

于 2010-05-20T12:42:06.750 回答