Eclipse JDT: Назвать 'корректное добавление отступа' программно?

Я работаю над плагином Eclipse, который изменяет код Java в проекте пользователя.

В основном результат этого плагина состоит в том, что аннотации Java добавляются к некоторым методам, таким образом,

void foo() { ... }

становится

@MyAnnotation
void foo() { ... }

За исключением того, что это не вполне похоже на это; добавление отступа на недавно вставленной аннотации является ненормальным (а именно, новая аннотация полностью левой стороне строки). Я хотел бы внести все свои изменения в файл и затем программно назвать "Корректное Добавление отступа".

Кто-либо знает, как сделать это? Я не могу найти ответ здесь или на форумах JDT, и все классы, которые выглядят релевантными (IndentAction, JavaIndenter) находятся во внутренних пакетах, которые я, как предполагается, не использую...

Спасибо!

6
задан Nels Beckman 20 May 2010 в 12:34
поделиться

2 ответа

Думаю, я нашел решение, которое мне нужно. Думаю, мне следовало потратить больше времени на поиск, прежде чем спрашивать ... но на будущее, вот что я сделал! Хорошая вещь была в 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();

Это переформатирует весь файл. Есть и другие варианты, если нужно меньше форматировать ...

6
ответ дан 17 December 2019 в 04:43
поделиться

Возможно, проще добавлять отступы по мере обработки Java-кода.

Ваш плагин Eclipse должен был прочитать void foo() { ... }, чтобы понять, что нужно добавить @MyAnnotation, верно? Просто возьмите отступ из строки Java и добавьте к нему свою аннотацию.

-1
ответ дан 17 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: