如何使用 Eclipse JDT 代码格式化程序在方法和类型注释之后插入新行?
How to insert new line just after method and type annotations using Eclipse JDT code formatter?
我正在使用 Eclipse JDT API 来格式化生成的 java 源文件。
使用哪些选项我可以强制格式化程序使输出如下所示:
@Annotation1
@Annotation2
@Annotation3
@Annotation4
public class TheClass {
private static final int PAGE_SIZE = 10;
@Annotation5
private Object o1;
@Annotation5
private Object o2;
@Annotation6
@Annotation7
public void doSomething(@Annotation8 @Annotation Object dto) {
// some works
}
}
据我所知,DefaultCodeFormatterOptions
有 insert_new_line_after_annotation
字段在所有注释之后添加新行,甚至是方法参数注释。但是我想在类型方法或类型注释之后添加换行符
Edit:
这是格式化代码:
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();
}
DefaultCodeFormatterOptions 在注释的每个可能上下文的注释后都有单独的换行字段
public boolean insert_new_line_after_annotation_on_type;
public boolean insert_new_line_after_annotation_on_field;
public boolean insert_new_line_after_annotation_on_method;
public boolean insert_new_line_after_annotation_on_package;
public boolean insert_new_line_after_annotation_on_parameter;
public boolean insert_new_line_after_annotation_on_local_variable;
所以我猜 insert_new_line_after_annotation_on_type
是答案...我已经检查了 IDE 本身而不是 API 的行为是否符合预期。
这是 this commit in February 2014 to fix bug/feature 425040 添加的相对较新的内容。在我面前的eclipse 4.4.0
中可用
我正在使用 Eclipse JDT API 来格式化生成的 java 源文件。 使用哪些选项我可以强制格式化程序使输出如下所示:
@Annotation1
@Annotation2
@Annotation3
@Annotation4
public class TheClass {
private static final int PAGE_SIZE = 10;
@Annotation5
private Object o1;
@Annotation5
private Object o2;
@Annotation6
@Annotation7
public void doSomething(@Annotation8 @Annotation Object dto) {
// some works
}
}
据我所知,DefaultCodeFormatterOptions
有 insert_new_line_after_annotation
字段在所有注释之后添加新行,甚至是方法参数注释。但是我想在类型方法或类型注释之后添加换行符
Edit:
这是格式化代码:
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();
}
DefaultCodeFormatterOptions 在注释的每个可能上下文的注释后都有单独的换行字段
public boolean insert_new_line_after_annotation_on_type;
public boolean insert_new_line_after_annotation_on_field;
public boolean insert_new_line_after_annotation_on_method;
public boolean insert_new_line_after_annotation_on_package;
public boolean insert_new_line_after_annotation_on_parameter;
public boolean insert_new_line_after_annotation_on_local_variable;
所以我猜 insert_new_line_after_annotation_on_type
是答案...我已经检查了 IDE 本身而不是 API 的行为是否符合预期。
这是 this commit in February 2014 to fix bug/feature 425040 添加的相对较新的内容。在我面前的eclipse 4.4.0
中可用