Я работаю над плагином Eclipse, который изменяет код Java в проекте пользователя.
В основном результат этого плагина состоит в том, что аннотации Java добавляются к некоторым методам, таким образом,
void foo() { ... }
становится
@MyAnnotation
void foo() { ... }
За исключением того, что это не вполне похоже на это; добавление отступа на недавно вставленной аннотации является ненормальным (а именно, новая аннотация полностью левой стороне строки). Я хотел бы внести все свои изменения в файл и затем программно назвать "Корректное Добавление отступа".
Кто-либо знает, как сделать это? Я не могу найти ответ здесь или на форумах JDT, и все классы, которые выглядят релевантными (IndentAction, JavaIndenter) находятся во внутренних пакетах, которые я, как предполагается, не использую...
Спасибо!
Думаю, я нашел решение, которое мне нужно. Думаю, мне следовало потратить больше времени на поиск, прежде чем спрашивать ... но на будущее, вот что я сделал! Хорошая вещь была в 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();
Это переформатирует весь файл. Есть и другие варианты, если нужно меньше форматировать ...
Возможно, проще добавлять отступы по мере обработки Java-кода.
Ваш плагин Eclipse должен был прочитать void foo() { ... }
, чтобы понять, что нужно добавить @MyAnnotation
, верно? Просто возьмите отступ из строки Java и добавьте к нему свою аннотацию.