2015-02-03 11 views
5

używam Eclipse JDT formatować moje wygenerowane pliki java, jak poniżej:Jak programowo używać programu do formatowania Intellij IDEA?

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(); 
} 

Ale pytanie brzmi jak mogę użyć kodu IntelliJ Idea formatyzatora API programowo jak wyżej? Czy Jetbrains wprowadził jakiekolwiek API?

Odpowiedz

1

Tak, możesz programowo formatować kod w IntelliJ.

Kluczem do tego jest:

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

Mam przykładowy plugin, który robi tylko to. Sprawdź to here.

Powiązane problemy