Generuję klasy z JDT. Następnie chciałbym sformatować całą ICompilationUnit, tak jakbym naciskał Ctrl + Shift + F (Źródło> Format) w otwartym Edytorze bez zaznaczenia.Formatowanie kodu źródłowego programowo za pomocą JDT
Wszelkie wskaźniki API w JDT w celu programowego formatowania kodu źródłowego są wysoko cenione.
Dodawanie: Próbowałem to tak, ale kod nie został zmieniony. Co ja robię?
private void formatUnitSourceCode(ICompilationUnit targetUnit, IProgressMonitor monitor) throws JavaModelException {
CodeFormatter formatter = ToolFactory.createCodeFormatter(null);
TextEdit formatEdit = formatter.format(CodeFormatter.K_COMPILATION_UNIT, targetUnit.getSource(), 0, targetUnit.getSource().length(), 0, null);
targetUnit.applyTextEdit(formatEdit, monitor);
}
To pomaga, ale doens't elegancko rozwiązać wszystkich pożądanego formatowania. I. e. trzeba ręcznie łamać długie deklaracje metod z dużą ilością parametrów. –
Bardzo interesujący problem. Widzę, co robisz, i właśnie zredagowałem swoją odpowiedź. Dzięki. – Ryan
Cześć Ryan, zmieniłem powyższy kod, aby użyć 'CodeFormatter.K_UNKNOWN', ale to też nie działało. Później sprawdziłem 'targetUnit.getSource()' po wywołaniu 'targetUnit.applyTextEdit' (które wykonuje' apply() 'na wewnętrznym' IDocument' z 'ICompilationUnit'), i dziwne, że zmiany wydają się być zastosowane. Ale nie są one stosowane do pliku. Czy to błąd, czy coś mi brakuje? –