How to programmatically use the Intellij IDEA code formatter?

I use Eclipse jdt to format my generated java files as shown below:

public String format(String code) throws MalformedTreeException, BadLocationException { Map options = new java.util.HashMap(); options.put(JavaCore.COMPILER_SOURCE, "1.5"); options.put(JavaCore.COMPILER_COMPLIANCE, "1.5"); options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, "1.5"); DefaultCodeFormatterOptions cfOptions = DefaultCodeFormatterOptions.getDefaultSettings(); cfOptions.insert_new_line_after_annotation = false; cfOptions.comment_insert_new_line_for_parameter = true; cfOptions.blank_lines_before_method = 1; cfOptions.number_of_empty_lines_to_preserve= 1; cfOptions.tab_char = DefaultCodeFormatterOptions.SPACE; CodeFormatter cf = new DefaultCodeFormatter(cfOptions, options); TextEdit te = cf.format(CodeFormatter.K_UNKNOWN, code, 0, code.length(), 0, null); IDocument dc = new Document(code); te.apply(dc); return dc.get(); } 

But the question is, how can I use the Intellij Idea code formatting API as above? Does Jetbrains have any API?

+6
source share
1 answer

Yes, you can programmatically format code in IntelliJ.

The key to this:

 CodeStyleManager styleManager = CodeStyleManager.getInstance(project); PsiElement psiFile = event.getData(LangDataKeys.PSI_FILE); styleManager.reformat(psiFile); 

I have an example plugin that does just that. Check here .

+2
source

Source: https://habr.com/ru/post/981914/


All Articles