2017-01-26 2 views
7

Ich benutze Atom mit Atom-verschönern und unkrustieren, um meine Java-Dateien zu formatieren. Ich möchte, dass der Einzug eines Lambda-Ausdrucks nur eine Ebene nach einer geöffneten Klammer einrückt, () -> {. Ich habe versucht, die indent_continue Eigenschaft anzupassen, aber es geht verrückt, wenn ich es auf Null setze. (Mit 4 Leerzeichen für Einrückungen)Wie kann man nach Java Lambda-Ausdruck mit uncrustify Formatierer richtig einrücken?

wenn indent_continue = 0, geschieht dies:

public class Test { 
    public static void runTest(Runnable code) { code.run(); } 

    public static void main(String[] args) { 
     runTest(() -> { 
        System.out.println("hello"); // <-- look at this line 
       });        // <-- this one too 
    } 
} 

wenn indent_continue = 4, es doppelte Einzüge:

public class Test { 
    public static void runTest(Runnable code) { code.run(); } 

    public static void main(String[] args) { 
     runTest(() -> { 
       System.out.println("hello"); // <-- look at this line 
      });        // <-- this one too 
    } 
} 

Wunschergebnis:

public class Test { 
    public static void runTest(Runnable code) { code.run(); } 

    public static void main(String[] args) { 
     runTest(() -> { 
      System.out.println("hello"); // <-- look at this line 
     });        // <-- this one too 
    } 
} 

Aktuelle uncrustify .cfg

# -------------------------------------------------------------------------------------------------# 
# Boilerplate: https://github.com/bengardner/uncrustify/blob/master/etc/defaults.cfg    # 
# -------------------------------------------------------------------------------------------------# 


## General 
## ------------------------------------------------------------------------------------------------- 

# The type of line endings 
newlines  = lf  # auto/lf/crlf/cr 

# - 80 limit is completely deprecated 
# - 100 is the new soft limit 
# - 120 is hard limit 
code_width  = 120 

# empty_lines_max = nl_max - 1 
nl_max   = 4 


## UNICODE 
## ------------------------------------------------------------------------------------------------- 
## Ideally ASCII, UTF-8 otherwise 

# If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8 
utf8_byte  = false 

# Force the output encoding to UTF-8 
utf8_force  = true 


## Tabs 
## ------------------------------------------------------------------------------------------------- 
## Always use 4 spaces 

input_tab_size   = 4 
output_tab_size   = 4 

indent_with_tabs  = 0 

# Comments that are not a brace level are indented with tabs on a tabstop. 
# Requires indent_with_tabs  = 2. If false, will use spaces. 
indent_cmt_with_tabs = false 

# Whether to use tabs for aligning 
align_with_tabs   = false 

# Whether to keep non-indenting tabs 
align_keep_tabs   = false 

# Whether to bump out to the next tab when aligning 
align_on_tabstop  = false 


## Indenting 
## ------------------------------------------------------------------------------------------------- 

# The number of columns to indent per level. 
# Usually 2, 3, 4, or 8. 
indent_columns   = 4 

# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents. 
# For FreeBSD, this is set to 4. Negative value is absolute and not increased for each (level 
indent_continue   = 0 


## Spacing 
## ------------------------------------------------------------------------------------------------- 

# Whether to balance spaces inside nested parens 
sp_balance_nested_parens = false 


## Parentheses 
## ------------------------------------------------------------------------------------------------- 

# Controls the indent of a close paren after a newline. 
# 0: Indent to body level 
# 1: Align under the open paren 
# 2: Indent to the brace level 
indent_paren_close  = 2 


## Preprocessor 
## ------------------------------------------------------------------------------------------------- 

# Control indent of preprocessors inside #if blocks at brace level 0 
pp_indent     = remove # ignore/add/remove/force 

# indent by 1 space 
pp_space     = add 
pp_space_count    = 1 

# indent pp at code level 
pp_indent_at_level   = true 
pp_define_at_level   = true 

# Control whether to indent the code between #if, #else and #endif when not at file-level 
pp_if_indent_code   = false 

# # Align macro functions and variables together 
# align_pp_define_together = false 

# The minimum space between label and value of a preprocessor define 
align_pp_define_gap   = 0 

# The span for aligning on '#define' bodies (0=don't align) 
align_pp_define_span  = 2 

# Add or remove space around preprocessor '##' concatenation operator. Default=Add 
sp_pp_concat    = add  # ignore/add/remove/force 

# Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator. 
sp_pp_stringify    = ignore # ignore/add/remove/force 

# Add or remove space before preprocessor '#' stringify operator as in '#define x(y) L#y'. 
#sp_before_pp_stringify  = ignore # ignore/add/remove/force 


# Template 
# -------------------------------------------------------------------------------------------------- 

# Add or remove space in 'template <' vs 'template<'. 
# If set to ignore, sp_before_angle is used. 
sp_template_angle = add  # ignore/add/remove/force 

# Add or remove space before '<>' 
sp_before_angle  = remove # ignore/add/remove/force 

# Add or remove space inside '<' and '>' 
sp_inside_angle  = remove # ignore/add/remove/force 

# Add or remove space after '<>' 
sp_after_angle  = add  # ignore/add/remove/force 

# Add or remove space between '<>' and '(' as found in 'new List<byte>();' 
sp_angle_paren  = remove # ignore/add/remove/force 

# Add or remove space between '<>' and a word as in 'List<byte> m;' 
sp_angle_word  = add  # ignore/add/remove/force 

# Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add 
sp_angle_shift  = add  # ignore/add/remove/force 





indent_align_string  = false 

# Whether braces are indented to the body level 
indent_braces   = false 
# Disabled indenting function braces if indent_braces is true 
indent_braces_no_func  = false 
# Disabled indenting class braces if indent_braces is true 
indent_braces_no_class  = false 
# Disabled indenting struct braces if indent_braces is true 
indent_braces_no_struct  = false 
# Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc. 
indent_brace_parent  = false 

indent_namespace  = false 
indent_extern  = false 
indent_class  = true 
indent_class_colon  = false 
indent_else_if  = false 
indent_var_def_cont  = true 

indent_func_call_param  = false 
indent_func_def_param  = false 
indent_func_proto_param  = false 
indent_func_class_param  = false 
indent_func_ctor_var_param  = false 
indent_func_param_double  = true 

indent_template_param  = false 
indent_relative_single_line_comments  = false 
indent_col1_comment  = true 
indent_access_spec_body  = false 
indent_paren_nl  = false 
indent_comma_paren  = false 
indent_bool_paren  = false 
indent_first_bool_expr  = false 
indent_square_nl  = false 
indent_preserve_sql  = false 
indent_align_assign  = true 

align_number_left  = true 
align_func_params  = true 
align_same_func_call_params  = false 
align_var_def_colon  = false 
align_var_def_attribute  = true 
align_var_def_inline  = true 
align_right_cmt_mix  = false 
align_on_operator  = false 
align_mix_var_proto  = false 
align_single_line_func  = false 
align_single_line_brace  = false 
align_nl_cont  = false 
align_left_shift  = true 
align_oc_decl_colon  = false 

nl_collapse_empty_body  = true 
nl_assign_leave_one_liners  = true 
nl_class_leave_one_liners  = true 
nl_enum_leave_one_liners  = true 
nl_getset_leave_one_liners  = true 
nl_func_leave_one_liners  = true 
nl_if_leave_one_liners  = true 
nl_multi_line_cond  = true 
nl_multi_line_define  = true 
nl_before_case  = false 
nl_after_case  = false 
nl_after_return  = true 
nl_after_semicolon  = true 
nl_after_brace_open  = false 
nl_after_brace_open_cmt  = false 
nl_after_vbrace_open  = false 
nl_after_vbrace_open_empty  = false 
nl_after_brace_close  = false 
nl_after_vbrace_close  = false 
nl_define_macro  = false 
nl_squeeze_ifdef  = false 
nl_ds_struct_enum_cmt  = false 
nl_ds_struct_enum_close_brace  = false 
nl_create_if_one_liner  = false 
nl_create_for_one_liner  = false 
nl_create_while_one_liner  = false 
ls_for_split_full  = true 
ls_func_split_full  = false 
nl_after_multiline_comment  = true 
eat_blanks_after_open_brace  = true 
eat_blanks_before_close_brace  = true 
mod_full_brace_if_chain  = true 
mod_pawn_semicolon  = false 
mod_full_paren_if_bool  = false 
mod_remove_extra_semicolon  = false 
mod_sort_import  = false 
mod_sort_using  = false 
mod_sort_include  = false 
mod_move_case_break  = false 
mod_remove_empty_return  = true 
cmt_indent_multi  = true 
cmt_c_group  = false 
cmt_c_nl_start  = false 
cmt_c_nl_end  = false 
cmt_cpp_group  = false 
cmt_cpp_nl_start  = false 
cmt_cpp_nl_end  = false 
cmt_cpp_to_c  = false 
cmt_star_cont  = true 
cmt_multi_check_last  = true 
cmt_insert_before_preproc  = false 
indent_sing_line_comments  = 0 
indent_switch_case  = 4 
indent_case_shift  = 0 

align_var_def_star_style  = 0 
align_var_def_amp_style  = 1 
align_assign_span  = 1 
align_assign_thresh  = 8 
align_enum_equ_span  = 3 
align_var_struct_span  = 3 
align_var_struct_gap  = 1 
align_struct_init_span  = 2 
align_right_cmt_span  = 2 
align_right_cmt_gap  = 1 
align_right_cmt_at_col  = 2 

nl_end_of_file_min  = 1 
nl_func_var_def_blk  = 1 
nl_after_func_body  = 2 
nl_after_func_body_one_liner  = 2 
nl_before_block_comment  = 2 
nl_after_struct  = 1 
mod_full_brace_nl  = 1 
mod_add_long_function_closebrace_comment  = 32 
mod_add_long_ifdef_endif_comment  = 10 
mod_add_long_ifdef_else_comment  = 10 
sp_arith  = ignore 
sp_assign  = force 
sp_assign_default  = add 
sp_enum_assign  = force 
sp_bool  = force 
sp_compare  = force 
sp_before_ptr_star  = remove 
sp_before_unnamed_ptr_star  = add 
sp_between_ptr_star  = remove 
sp_after_ptr_star  = add 
sp_after_ptr_star_func  = force 
sp_before_ptr_star_func  = force 
sp_after_type  = force 
sp_before_sparen  = force 
sp_inside_sparen  = remove 
sp_after_sparen  = add 
sp_sparen_brace  = add 
sp_special_semi  = remove 
sp_before_semi  = remove 
sp_before_semi_for_empty  = remove 
sp_after_semi  = add 
sp_after_semi_for_empty  = remove 
sp_after_comma  = force 
sp_before_comma  = remove 
sp_before_case_colon  = remove 
sp_after_operator  = add 
sp_after_operator_sym  = add 
sp_after_cast  = add 
sp_inside_paren_cast  = remove 
sp_sizeof_paren  = remove 
sp_inside_braces_enum  = add 
sp_inside_braces_struct  = add 
sp_inside_braces  = add 
sp_inside_braces_empty  = remove 
sp_func_proto_paren  = remove 
sp_func_def_paren  = remove 
sp_inside_fparens  = remove 
sp_inside_fparen  = remove 
sp_fparen_brace  = add 
sp_func_call_paren  = remove 
sp_func_call_paren_empty  = remove 
sp_func_call_user_paren  = remove 
sp_return_paren  = add 
sp_attribute_paren  = remove 
sp_defined_paren  = remove 
sp_macro  = add 
sp_macro_func  = add 
sp_else_brace  = add 
sp_brace_else  = add 
sp_brace_typedef  = add 
sp_not  = remove 
sp_inv  = remove 
sp_addr  = remove 
sp_member  = remove 
sp_deref  = remove 
sp_sign  = remove 
sp_incdec  = remove 
sp_before_nl_cont  = add 
sp_cond_colon  = force 
sp_cond_question  = force 
sp_cmt_cpp_start  = add 
nl_start_of_file  = remove 
nl_end_of_file  = force 
nl_assign_brace  = remove 
nl_assign_square  = remove 
nl_enum_brace  = remove 
nl_struct_brace  = remove 
nl_union_brace  = remove 
nl_if_brace  = remove 
nl_brace_else  = remove 
nl_elseif_brace  = remove 
nl_else_brace  = remove 
nl_else_if  = remove 
nl_for_brace  = remove 
nl_while_brace  = remove 
nl_do_brace  = remove 
nl_brace_while  = remove 
nl_switch_brace  = remove 
nl_case_colon_brace  = remove 
nl_func_type_name  = remove 
nl_func_proto_type_name  = remove 
nl_func_paren  = remove 
nl_func_def_paren  = remove 
nl_func_decl_empty  = remove 
nl_func_def_empty  = remove 
nl_fdef_brace  = remove 
nl_return_expr  = remove 
pos_arith  = lead 
pos_assign  = trail 
pos_bool  = trail 
pos_conditional  = trail 
pos_comma  = trail 
pos_class_comma  = lead 
pos_class_colon  = lead 
mod_full_brace_do  = remove 
mod_full_brace_for  = remove 
mod_full_brace_function  = force 
mod_full_brace_while  = remove 
mod_paren_on_return  = ignore 

# Misc 
# -------------------------------------------------------------------------------------------------- 

# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'. 
# If true (default), 'assert(x<0 && y>=3)' will be broken. 
# Improvements to template detection may make this option obsolete. 
tok_split_gte  = false 

Versionsinformationen:

Ubuntu 16.04.1 LTS 
Atom : 1.13.0 
Electron: 1.3.13 
Chrome : 52.0.2743.82 
Node : 6.5.0 
uncrustify: 0.59 
atom-beautify: 0.29.17 
+0

Ich habe die gleiche Konfiguration wie Sie verwendet und ich bekomme die gewünschten Ergebnisse .. Was ist die Version von unkrustieren und Atom-verschönern Sie verwenden? –

+0

@MaciejKowalski uncrustify: 0,59 Atom: 1.12.6 Electron: 1.3.9 Chrome: 52.0.2743.82 Knoten: 6.5.0 – DavidC

+0

@MaciejKowalski ich auch auf Ubuntu bin mit 16, nicht sicher, ob es ankommt – DavidC

Antwort

1

Auf meinem System, Ubuntu 16.10 und Atom 1.14.1 (andere Versionen waren die gleichen), löste ich das von neuesten uncrustify Version 0.64 aktualisieren.

Da war ich nicht daran interessiert, für den Wieder Aufbau uncrustify von der Quelle, ich Docker Bild von ubuntu gezogen: 17.04, installierte uncrustify es und kopierte die kompilierte-and-ready-to-use binär von /usr/bin/uncrustify im Docker Behälter anstelle von /usr/bin/uncrustify meiner Host-Maschine.
Dies funktionierte perfekt für mich und Einzug ist jetzt wie erwartet.

Verwandte Themen