diff --git a/.editorconfig b/.editorconfig index d1785ecc..feebda8f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,7 +18,7 @@ ij_wrap_on_typing = false indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_css_align_closing_brace_with_properties = false ij_css_blank_lines_around_nested_selector = 1 ij_css_blank_lines_between_blocks = 1 @@ -42,46 +42,46 @@ ij_css_value_alignment = do_not_align indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_declarative_keep_indents_on_empty_lines = false [*.java] indent_style = space -ij_continuation_indent_size = 4 -ij_visual_guides = +ij_continuation_indent_size = 2 +ij_visual_guides = ij_java_align_consecutive_assignments = false ij_java_align_consecutive_variable_declarations = false ij_java_align_group_field_declarations = false ij_java_align_multiline_annotation_parameters = true -ij_java_align_multiline_array_initializer_expression = false -ij_java_align_multiline_assignment = false -ij_java_align_multiline_binary_operation = false -ij_java_align_multiline_chained_methods = false +ij_java_align_multiline_array_initializer_expression = true +ij_java_align_multiline_assignment = true +ij_java_align_multiline_binary_operation = true +ij_java_align_multiline_chained_methods = true ij_java_align_multiline_deconstruction_list_components = true -ij_java_align_multiline_extends_list = false +ij_java_align_multiline_extends_list = true ij_java_align_multiline_for = true -ij_java_align_multiline_method_parentheses = false +ij_java_align_multiline_method_parentheses = true ij_java_align_multiline_parameters = true -ij_java_align_multiline_parameters_in_calls = false -ij_java_align_multiline_parenthesized_expression = false +ij_java_align_multiline_parameters_in_calls = true +ij_java_align_multiline_parenthesized_expression = true ij_java_align_multiline_records = true ij_java_align_multiline_resources = true -ij_java_align_multiline_ternary_operation = false -ij_java_align_multiline_text_blocks = false -ij_java_align_multiline_throws_list = false +ij_java_align_multiline_ternary_operation = true +ij_java_align_multiline_text_blocks = true +ij_java_align_multiline_throws_list = true ij_java_align_subsequent_simple_methods = false ij_java_align_throws_keyword = false ij_java_align_types_in_multi_catch = true -ij_java_annotation_new_line_in_record_component = false -ij_java_annotation_parameter_wrap = off -ij_java_array_initializer_new_line_after_left_brace = false -ij_java_array_initializer_right_brace_on_new_line = false -ij_java_array_initializer_wrap = off +ij_java_annotation_new_line_in_record_component = true +ij_java_annotation_parameter_wrap = split_into_lines +ij_java_array_initializer_new_line_after_left_brace = true +ij_java_array_initializer_right_brace_on_new_line = true +ij_java_array_initializer_wrap = on_every_item ij_java_assert_statement_colon_on_next_line = false ij_java_assert_statement_wrap = off -ij_java_assignment_wrap = off +ij_java_assignment_wrap = normal ij_java_binary_operation_sign_on_next_line = false -ij_java_binary_operation_wrap = off +ij_java_binary_operation_wrap = normal ij_java_blank_lines_after_anonymous_class_header = 0 ij_java_blank_lines_after_class_header = 0 ij_java_blank_lines_after_imports = 1 @@ -89,7 +89,7 @@ ij_java_blank_lines_after_package = 1 ij_java_blank_lines_around_class = 1 ij_java_blank_lines_around_field = 0 ij_java_blank_lines_around_field_in_interface = 0 -ij_java_blank_lines_around_field_with_annotations = 0 +ij_java_blank_lines_around_field_with_annotations = 1 ij_java_blank_lines_around_initializer = 1 ij_java_blank_lines_around_method = 1 ij_java_blank_lines_around_method_in_interface = 1 @@ -99,14 +99,14 @@ ij_java_blank_lines_before_method_body = 0 ij_java_blank_lines_before_package = 0 ij_java_blank_lines_between_record_components = 0 ij_java_block_brace_style = end_of_line -ij_java_block_comment_add_space = false +ij_java_block_comment_add_space = true ij_java_block_comment_at_first_column = true -ij_java_builder_methods = +ij_java_builder_methods = ij_java_call_parameters_new_line_after_left_paren = false ij_java_call_parameters_right_paren_on_new_line = false -ij_java_call_parameters_wrap = off +ij_java_call_parameters_wrap = normal ij_java_case_statement_on_separate_line = true -ij_java_catch_on_new_line = false +ij_java_catch_on_new_line = true ij_java_class_annotation_wrap = split_into_lines ij_java_class_brace_style = end_of_line ij_java_class_count_to_use_import_on_demand = 9999 @@ -115,8 +115,8 @@ ij_java_deconstruction_list_wrap = normal ij_java_delete_unused_module_imports = true ij_java_do_not_indent_top_level_class_members = false ij_java_do_not_wrap_after_single_annotation = false -ij_java_do_not_wrap_after_single_annotation_in_parameter = false -ij_java_do_while_brace_force = never +ij_java_do_not_wrap_after_single_annotation_in_parameter = true +ij_java_do_while_brace_force = always ij_java_doc_add_blank_line_after_description = true ij_java_doc_add_blank_line_after_param_comments = false ij_java_doc_add_blank_line_after_return = false @@ -135,43 +135,43 @@ ij_java_doc_keep_invalid_tags = false ij_java_doc_param_description_on_new_line = false ij_java_doc_preserve_line_breaks = false ij_java_doc_use_throws_not_exception_tag = true -ij_java_else_on_new_line = false -ij_java_entity_dd_prefix = +ij_java_else_on_new_line = true +ij_java_entity_dd_prefix = ij_java_entity_dd_suffix = EJB -ij_java_entity_eb_prefix = +ij_java_entity_eb_prefix = ij_java_entity_eb_suffix = Bean -ij_java_entity_hi_prefix = +ij_java_entity_hi_prefix = ij_java_entity_hi_suffix = Home ij_java_entity_lhi_prefix = Local ij_java_entity_lhi_suffix = Home ij_java_entity_li_prefix = Local -ij_java_entity_li_suffix = +ij_java_entity_li_suffix = ij_java_entity_pk_class = java.lang.String -ij_java_entity_ri_prefix = -ij_java_entity_ri_suffix = -ij_java_entity_vo_prefix = +ij_java_entity_ri_prefix = +ij_java_entity_ri_suffix = +ij_java_entity_vo_prefix = ij_java_entity_vo_suffix = VO -ij_java_enum_constants_wrap = off -ij_java_enum_field_annotation_wrap = off -ij_java_extends_keyword_wrap = off -ij_java_extends_list_wrap = off +ij_java_enum_constants_wrap = split_into_lines +ij_java_enum_field_annotation_wrap = split_into_lines +ij_java_extends_keyword_wrap = normal +ij_java_extends_list_wrap = normal ij_java_field_annotation_wrap = split_into_lines -ij_java_field_name_prefix = -ij_java_field_name_suffix = -ij_java_filter_class_prefix = -ij_java_filter_class_suffix = -ij_java_filter_dd_prefix = -ij_java_filter_dd_suffix = -ij_java_finally_on_new_line = false -ij_java_for_brace_force = never +ij_java_field_name_prefix = +ij_java_field_name_suffix = +ij_java_filter_class_prefix = +ij_java_filter_class_suffix = +ij_java_filter_dd_prefix = +ij_java_filter_dd_suffix = +ij_java_finally_on_new_line = true +ij_java_for_brace_force = always ij_java_for_statement_new_line_after_left_paren = false ij_java_for_statement_right_paren_on_new_line = false ij_java_for_statement_wrap = off ij_java_generate_final_locals = false ij_java_generate_final_parameters = false ij_java_generate_use_type_annotation_before_type = true -ij_java_if_brace_force = never -ij_java_imports_layout = $*,|,@*,|,java.**,|,javax.**,|,jakarta.**,|,org.**,|,com.**,|,io.**,|,ai.docling.**,|,* +ij_java_if_brace_force = always +ij_java_imports_layout = $*,|,@*,|,java.**,|,javax.**,|,jakarta.**,|,org.**,|,org.apache.commons.**,|,org.springframework.**,|,io.quarkus.**,|,ai.**,|,io.**,|,com.vaadin.**,org.vaadin.**,|,* ij_java_indent_case_from_switch = true ij_java_insert_inner_class_imports = true ij_java_insert_override_annotation = true @@ -179,15 +179,15 @@ ij_java_keep_blank_lines_before_right_brace = 2 ij_java_keep_blank_lines_between_package_declaration_and_header = 2 ij_java_keep_blank_lines_in_code = 2 ij_java_keep_blank_lines_in_declarations = 2 -ij_java_keep_builder_methods_indents = false +ij_java_keep_builder_methods_indents = true ij_java_keep_control_statement_in_one_line = true ij_java_keep_first_column_comment = true ij_java_keep_indents_on_empty_lines = false ij_java_keep_line_breaks = true -ij_java_keep_multiple_expressions_in_one_line = false -ij_java_keep_simple_blocks_in_one_line = false -ij_java_keep_simple_classes_in_one_line = false -ij_java_keep_simple_lambdas_in_one_line = false +ij_java_keep_multiple_expressions_in_one_line = true +ij_java_keep_simple_blocks_in_one_line = true +ij_java_keep_simple_classes_in_one_line = true +ij_java_keep_simple_lambdas_in_one_line = true ij_java_keep_simple_methods_in_one_line = false ij_java_label_indent_absolute = false ij_java_label_indent_size = 0 @@ -197,66 +197,66 @@ ij_java_layout_static_imports_separately = true ij_java_line_comment_add_space = false ij_java_line_comment_add_space_on_reformat = false ij_java_line_comment_at_first_column = true -ij_java_listener_class_prefix = -ij_java_listener_class_suffix = -ij_java_local_variable_name_prefix = -ij_java_local_variable_name_suffix = -ij_java_message_dd_prefix = +ij_java_listener_class_prefix = +ij_java_listener_class_suffix = +ij_java_local_variable_name_prefix = +ij_java_local_variable_name_suffix = +ij_java_message_dd_prefix = ij_java_message_dd_suffix = EJB -ij_java_message_eb_prefix = +ij_java_message_eb_prefix = ij_java_message_eb_suffix = Bean ij_java_method_annotation_wrap = split_into_lines ij_java_method_brace_style = end_of_line -ij_java_method_call_chain_wrap = off +ij_java_method_call_chain_wrap = split_into_lines ij_java_method_parameters_new_line_after_left_paren = false ij_java_method_parameters_right_paren_on_new_line = false ij_java_method_parameters_wrap = off ij_java_modifier_list_wrap = false -ij_java_multi_catch_types_wrap = normal +ij_java_multi_catch_types_wrap = on_every_item ij_java_names_count_to_use_import_on_demand = 9999 -ij_java_new_line_after_lparen_in_annotation = false +ij_java_new_line_after_lparen_in_annotation = true ij_java_new_line_after_lparen_in_deconstruction_pattern = true -ij_java_new_line_after_lparen_in_record_header = false -ij_java_new_line_when_body_is_presented = false -ij_java_packages_to_use_import_on_demand = java.awt.*,javax.swing.* -ij_java_parameter_annotation_wrap = off -ij_java_parameter_name_prefix = -ij_java_parameter_name_suffix = +ij_java_new_line_after_lparen_in_record_header = true +ij_java_new_line_when_body_is_presented = true +ij_java_packages_to_use_import_on_demand = javax.swing.* +ij_java_parameter_annotation_wrap = normal +ij_java_parameter_name_prefix = +ij_java_parameter_name_suffix = ij_java_parentheses_expression_new_line_after_left_paren = false ij_java_parentheses_expression_right_paren_on_new_line = false ij_java_place_assignment_sign_on_next_line = false -ij_java_prefer_longer_names = true -ij_java_prefer_parameters_wrap = false +ij_java_prefer_longer_names = false +ij_java_prefer_parameters_wrap = true ij_java_preserve_module_imports = true -ij_java_record_components_wrap = normal -ij_java_repeat_annotations = +ij_java_record_components_wrap = on_every_item +ij_java_repeat_annotations = ij_java_repeat_synchronized = true ij_java_replace_instanceof_and_cast = true ij_java_replace_null_check = true ij_java_replace_sum_lambda_with_method_ref = true ij_java_resource_list_new_line_after_left_paren = false ij_java_resource_list_right_paren_on_new_line = false -ij_java_resource_list_wrap = off -ij_java_rparen_on_new_line_in_annotation = false +ij_java_resource_list_wrap = on_every_item +ij_java_rparen_on_new_line_in_annotation = true ij_java_rparen_on_new_line_in_deconstruction_pattern = true -ij_java_rparen_on_new_line_in_record_header = false -ij_java_servlet_class_prefix = -ij_java_servlet_class_suffix = -ij_java_servlet_dd_prefix = -ij_java_servlet_dd_suffix = -ij_java_session_dd_prefix = +ij_java_rparen_on_new_line_in_record_header = true +ij_java_servlet_class_prefix = +ij_java_servlet_class_suffix = +ij_java_servlet_dd_prefix = +ij_java_servlet_dd_suffix = +ij_java_session_dd_prefix = ij_java_session_dd_suffix = EJB -ij_java_session_eb_prefix = +ij_java_session_eb_prefix = ij_java_session_eb_suffix = Bean -ij_java_session_hi_prefix = +ij_java_session_hi_prefix = ij_java_session_hi_suffix = Home ij_java_session_lhi_prefix = Local ij_java_session_lhi_suffix = Home ij_java_session_li_prefix = Local -ij_java_session_li_suffix = -ij_java_session_ri_prefix = -ij_java_session_ri_suffix = -ij_java_session_si_prefix = +ij_java_session_li_suffix = +ij_java_session_ri_prefix = +ij_java_session_ri_suffix = +ij_java_session_si_prefix = ij_java_session_si_suffix = Service ij_java_space_after_closing_angle_bracket_in_type_argument = false ij_java_space_after_colon = false @@ -302,14 +302,14 @@ ij_java_space_before_while_keyword = true ij_java_space_before_while_left_brace = true ij_java_space_before_while_parentheses = true ij_java_space_inside_one_line_enum_braces = false -ij_java_space_within_empty_array_initializer_braces = true +ij_java_space_within_empty_array_initializer_braces = false ij_java_space_within_empty_method_call_parentheses = false ij_java_space_within_empty_method_parentheses = false ij_java_spaces_around_additive_operators = true ij_java_spaces_around_annotation_eq = true ij_java_spaces_around_assignment_operators = true ij_java_spaces_around_bitwise_operators = true -ij_java_spaces_around_equality_operators = false +ij_java_spaces_around_equality_operators = true ij_java_spaces_around_lambda_arrow = true ij_java_spaces_around_logical_operators = true ij_java_spaces_around_method_ref_dbl_colon = false @@ -321,7 +321,7 @@ ij_java_spaces_around_unary_operator = false ij_java_spaces_inside_block_braces_when_body_is_present = false ij_java_spaces_within_angle_brackets = false ij_java_spaces_within_annotation_parentheses = false -ij_java_spaces_within_array_initializer_braces = true +ij_java_spaces_within_array_initializer_braces = false ij_java_spaces_within_braces = false ij_java_spaces_within_brackets = false ij_java_spaces_within_cast_parentheses = false @@ -338,25 +338,25 @@ ij_java_spaces_within_synchronized_parentheses = false ij_java_spaces_within_try_parentheses = false ij_java_spaces_within_while_parentheses = false ij_java_special_else_if_treatment = true -ij_java_static_field_name_prefix = -ij_java_static_field_name_suffix = -ij_java_subclass_name_prefix = +ij_java_static_field_name_prefix = +ij_java_static_field_name_suffix = +ij_java_subclass_name_prefix = ij_java_subclass_name_suffix = Impl -ij_java_switch_expressions_wrap = normal +ij_java_switch_expressions_wrap = on_every_item ij_java_ternary_operation_signs_on_next_line = false -ij_java_ternary_operation_wrap = off -ij_java_test_name_prefix = +ij_java_ternary_operation_wrap = split_into_lines +ij_java_test_name_prefix = ij_java_test_name_suffix = Test -ij_java_throws_keyword_wrap = off +ij_java_throws_keyword_wrap = normal ij_java_throws_list_wrap = off ij_java_use_external_annotations = false ij_java_use_fq_class_names = false ij_java_use_relative_indents = false ij_java_use_single_class_imports = true -ij_java_variable_annotation_wrap = off +ij_java_variable_annotation_wrap = split_into_lines ij_java_visibility = public -ij_java_while_brace_force = never -ij_java_while_on_new_line = false +ij_java_while_brace_force = always +ij_java_while_on_new_line = true ij_java_wrap_comments = false ij_java_wrap_first_method_in_call_chain = false ij_java_wrap_long_lines = false @@ -365,7 +365,7 @@ ij_java_wrap_semicolon_after_call_chain = false [*.less] indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_less_align_closing_brace_with_properties = false ij_less_blank_lines_around_nested_selector = 1 ij_less_blank_lines_between_blocks = 1 @@ -390,7 +390,7 @@ ij_less_value_alignment = 0 [*.proto] indent_style = space ij_continuation_indent_size = 4 -ij_visual_guides = +ij_visual_guides = ij_protobuf_keep_blank_lines_in_code = 2 ij_protobuf_keep_indents_on_empty_lines = false ij_protobuf_keep_line_breaks = true @@ -403,7 +403,7 @@ ij_protobuf_spaces_within_brackets = false [*.vue] indent_style = space ij_continuation_indent_size = 4 -ij_visual_guides = +ij_visual_guides = ij_vue_indent_children_of_top_level = template ij_vue_interpolation_new_line_after_start_delimiter = true ij_vue_interpolation_new_line_before_end_delimiter = true @@ -412,7 +412,7 @@ ij_vue_keep_indents_on_empty_lines = false ij_vue_spaces_within_interpolation_expressions = true [.editorconfig] -ij_visual_guides = +ij_visual_guides = ij_editorconfig_align_group_field_declarations = false ij_editorconfig_space_after_colon = false ij_editorconfig_space_after_comma = true @@ -424,7 +424,7 @@ ij_editorconfig_spaces_around_assignment_operators = true indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_asciidoc_blank_lines_after_header = 1 ij_asciidoc_blank_lines_keep_after_header = 1 ij_asciidoc_formatting_enabled = true @@ -433,7 +433,7 @@ ij_asciidoc_one_sentence_per_line = true [{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.pom,*.rng,*.tld,*.wadl,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}] ij_continuation_indent_size = 4 ij_smart_tabs = true -ij_visual_guides = +ij_visual_guides = ij_xml_align_attributes = true ij_xml_align_text = false ij_xml_attribute_wrap = normal @@ -457,7 +457,7 @@ indent_size = 4 indent_style = space tab_width = 4 ij_continuation_indent_size = 4 -ij_visual_guides = +ij_visual_guides = ij_typescript_align_imports = false ij_typescript_align_multiline_array_initializer_expression = false ij_typescript_align_multiline_binary_operation = false @@ -549,7 +549,7 @@ ij_typescript_prefer_explicit_types_function_expression_returns = false ij_typescript_prefer_explicit_types_function_returns = false ij_typescript_prefer_explicit_types_vars_fields = false ij_typescript_prefer_parameters_wrap = false -ij_typescript_property_prefix = +ij_typescript_property_prefix = ij_typescript_reformat_c_style_comments = false ij_typescript_space_after_colon = true ij_typescript_space_after_comma = true @@ -636,7 +636,7 @@ ij_typescript_wrap_comments = false [{*.bash,*.sh,*.zsh}] indent_style = space -ij_visual_guides = +ij_visual_guides = ij_shell_binary_ops_start_line = false ij_shell_keep_column_alignment_padding = false ij_shell_minify_program = false @@ -645,7 +645,7 @@ ij_shell_switch_cases_indented = false ij_shell_use_unix_line_separator = true [{*.cfpimport,*.har,*.jsb2,*.jsb3,*.json,*.jsonc,*.postman_collection,*.postman_collection.json,*.postman_environment,*.postman_environment.json,*.sonarlint/*.json,.babelrc,.eslintrc,.prettierrc,.stylelintrc,.ws-context,connectedMode.json,jest.config}] -ij_visual_guides = +ij_visual_guides = ij_json_array_wrapping = split_into_lines ij_json_keep_blank_lines_in_code = 0 ij_json_keep_indents_on_empty_lines = false @@ -666,7 +666,7 @@ indent_size = 4 indent_style = space tab_width = 4 ij_continuation_indent_size = 4 -ij_visual_guides = +ij_visual_guides = ij_javascript_align_imports = false ij_javascript_align_multiline_array_initializer_expression = false ij_javascript_align_multiline_binary_operation = false @@ -754,7 +754,7 @@ ij_javascript_prefer_explicit_types_function_expression_returns = false ij_javascript_prefer_explicit_types_function_returns = false ij_javascript_prefer_explicit_types_vars_fields = false ij_javascript_prefer_parameters_wrap = false -ij_javascript_property_prefix = +ij_javascript_property_prefix = ij_javascript_reformat_c_style_comments = false ij_javascript_space_after_colon = true ij_javascript_space_after_comma = true @@ -1034,16 +1034,10 @@ ij_groovy_wrap_long_lines = false [{*.hcl,*.nomad}] indent_style = space tab_width = 4 -ij_visual_guides = -ij_hcl_array_wrapping = normal -ij_hcl_import_providers_automatically = true +ij_visual_guides = ij_hcl_keep_blank_lines_in_code = 2 ij_hcl_keep_indents_on_empty_lines = false ij_hcl_keep_line_breaks = true -ij_hcl_line_commenter_character = pound_sign_(#) -ij_hcl_object_wrapping = normal -ij_hcl_property_alignment = on_equals -ij_hcl_run_tf_fmt_on_reformat = true ij_hcl_space_after_comma = true ij_hcl_space_before_comma = false ij_hcl_spaces_around_assignment_operators = true @@ -1055,7 +1049,7 @@ ij_hcl_wrap_long_lines = false indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 ij_html_align_attributes = true ij_html_align_text = false @@ -1086,7 +1080,7 @@ ij_html_text_wrap = normal [{*.http,*.rest}] indent_size = 4 ij_continuation_indent_size = 4 -ij_visual_guides = +ij_visual_guides = ij_http-request_call_parameters_wrap = normal ij_http-request_method_parameters_wrap = split_into_lines ij_http-request_space_before_comma = true @@ -1096,7 +1090,7 @@ ij_http-request_spaces_around_assignment_operators = true indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_jsp_jsp_prefer_comma_separated_import_list = false ij_jsp_keep_indents_on_empty_lines = false @@ -1104,13 +1098,13 @@ ij_jsp_keep_indents_on_empty_lines = false indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_jspx_keep_indents_on_empty_lines = false [{*.kt,*.kts}] indent_style = space ij_continuation_indent_size = 2 -ij_visual_guides = +ij_visual_guides = ij_kotlin_align_in_columns_case_branch = false ij_kotlin_align_multiline_binary_operation = false ij_kotlin_align_multiline_extends_list = false @@ -1153,6 +1147,7 @@ ij_kotlin_enum_constants_wrap = off ij_kotlin_extends_list_wrap = normal ij_kotlin_field_annotation_wrap = split_into_lines ij_kotlin_finally_on_new_line = false +ij_kotlin_function_context_parameters_wrap = split_into_lines ij_kotlin_if_rparen_on_new_line = true ij_kotlin_import_nested_classes = true ij_kotlin_imports_layout = *,java.**,javax.**,jakarta.**,kotlin.**,io.quarkus.**,org.**,^ @@ -1178,6 +1173,7 @@ ij_kotlin_name_count_to_use_star_import = 2147483647 ij_kotlin_name_count_to_use_star_import_for_members = 99 ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.**,io.ktor.** ij_kotlin_parameter_annotation_wrap = off +ij_kotlin_property_context_parameters_wrap = split_into_lines ij_kotlin_space_after_comma = true ij_kotlin_space_after_extend_colon = true ij_kotlin_space_after_type_colon = true @@ -1211,7 +1207,7 @@ ij_kotlin_wrap_first_method_in_call_chain = false indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_markdown_force_one_space_after_blockquote_symbol = true ij_markdown_force_one_space_after_header_symbol = true ij_markdown_force_one_space_after_list_bullet = true @@ -1233,7 +1229,7 @@ ij_markdown_wrap_text_inside_blockquotes = true indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_mermaid_after_arrow_text_within_sep = false ij_mermaid_after_colon = true ij_mermaid_after_comma = true @@ -1271,7 +1267,7 @@ ij_mermaid_within_square = false [{*.pb,*.textproto,*.txtpb}] indent_style = space ij_continuation_indent_size = 4 -ij_visual_guides = +ij_visual_guides = ij_prototext_keep_blank_lines_in_code = 2 ij_prototext_keep_indents_on_empty_lines = false ij_prototext_keep_line_breaks = true @@ -1283,7 +1279,7 @@ ij_prototext_spaces_within_braces = true ij_prototext_spaces_within_brackets = false [{*.properties,spring.handlers,spring.schemas}] -ij_visual_guides = +ij_visual_guides = ij_properties_align_group_field_declarations = false ij_properties_keep_blank_lines = true ij_properties_key_value_delimiter = equals @@ -1293,7 +1289,7 @@ ij_properties_spaces_around_key_value_delimiter = false indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_python_add_indent_inside_injections = false ij_python_align_collections_and_comprehensions = true ij_python_align_multiline_imports = true @@ -1382,7 +1378,7 @@ ij_python_wrap_long_lines = false [{*.tf,*.tfvars}] indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_hcl-terraform_array_wrapping = normal ij_hcl-terraform_import_providers_automatically = true ij_hcl-terraform_keep_blank_lines_in_code = 2 @@ -1399,15 +1395,15 @@ ij_hcl-terraform_spaces_within_braces = false ij_hcl-terraform_spaces_within_brackets = false ij_hcl-terraform_wrap_long_lines = false -[{*.toml,Cargo.lock,Cargo.toml.orig,Gopkg.lock,Pipfile,poetry.lock,uv.lock}] +[{*.toml,Cargo.lock,Cargo.toml.orig,Gopkg.lock,Pipfile,pdm.lock,poetry.lock,uv.lock}] indent_size = 4 indent_style = space tab_width = 4 -ij_visual_guides = +ij_visual_guides = ij_toml_keep_indents_on_empty_lines = false [{*.yaml,*.yml}] -ij_visual_guides = +ij_visual_guides = ij_yaml_align_values_properties = do_not_align ij_yaml_autoinsert_sequence_marker = true ij_yaml_block_mapping_on_new_line = false @@ -1420,4 +1416,4 @@ ij_yaml_line_comment_at_first_column = true ij_yaml_sequence_on_new_line = false ij_yaml_space_before_colon = false ij_yaml_spaces_within_braces = true -ij_yaml_spaces_within_brackets = true +ij_yaml_spaces_within_brackets = true \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 77d474b8..1de7bcc5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -124,6 +124,8 @@ jobs: if: github.event_name == 'pull_request' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 - name: Reclaim disk space working-directory: .github/scripts diff --git a/.github/workflows/spotless.yml b/.github/workflows/spotless.yml new file mode 100644 index 00000000..31814d08 --- /dev/null +++ b/.github/workflows/spotless.yml @@ -0,0 +1,52 @@ +name: Spotless + +on: + pull_request: + branches: + - main + workflow_dispatch: + +concurrency: + group: "workflow = ${{ github.workflow }}, ref = ${{ github.event.ref }}, pr = ${{ github.event.pull_request.id }}" + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +defaults: + run: + shell: bash + +permissions: + contents: read + +jobs: + spotless-check: + runs-on: ubuntu-latest + name: spotless-check + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + + - name: Reclaim disk space + working-directory: .github/scripts + shell: bash + run: ./ci-reclaim-disk-space.sh + + - name: Set up Java 17 + uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 + with: + java-version: 17 + distribution: temurin + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2 + + - name: Run Spotless check + run: | + if ! ./gradlew --no-daemon -Pjava.version=17 spotlessCheck; then + echo "::error title=Spotless check failed::Formatting violations were found." + echo "Fix options:" + echo " 1) Run: ./gradlew --no-daemon spotlessApply" + echo " 2) Ensure your IDE honors .editorconfig and reformat changed files" + echo "Then commit and push the updated files." + exit 1 + fi diff --git a/.spotless/import-order.txt b/.spotless/import-order.txt new file mode 100644 index 00000000..55d4f4ed --- /dev/null +++ b/.spotless/import-order.txt @@ -0,0 +1,23 @@ +0=\# +1= +2=java +3= +4=javax +5= +6=jakarta +7= +8=org +9= +10=com +11= +12=ai +13= +14=org.apache.commons +15= +16=org.springframework +17= +18=io.quarkus +19= +20=io +21= +22=\* \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1cfffc13..d8c27c77 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -101,6 +101,28 @@ If you have not done so on this machine, you need to: The project has a `.editorconfig` file checked into the root. Please make sure the rules in there are adhered to by your IDE. +## Build + +To run a full build locally: + +```bash +./gradlew --no-daemon build +``` + +To run code linting locally: + +```bash +./gradlew --no-daemon spotlessCheck +``` + +To automatically apply formatting fixes: + +```bash +./gradlew --no-daemon spotlessApply +``` + +`spotlessCheck` enforces Java formatting plus basic whitespace rules (LF line endings, no trailing whitespace, and final newline). IDE style settings are still driven by `.editorconfig`. + ## The small print This project is an open source project, please act responsibly, be nice, polite and enjoy! diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index f798598b..a27aed8e 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -10,6 +10,7 @@ repositories { dependencies { implementation("org.yaml:snakeyaml:2.6") implementation(libs.lombok.gradle) + implementation(libs.spotless.gradle) } // Read root gradle.properties diff --git a/buildSrc/src/main/kotlin/docling-java-shared.gradle.kts b/buildSrc/src/main/kotlin/docling-java-shared.gradle.kts index af36f30d..1a693565 100644 --- a/buildSrc/src/main/kotlin/docling-java-shared.gradle.kts +++ b/buildSrc/src/main/kotlin/docling-java-shared.gradle.kts @@ -2,6 +2,7 @@ plugins { id("docling-shared") `java-library` `jacoco` + id("com.diffplug.spotless") } repositories { @@ -41,6 +42,20 @@ jacoco { toolVersion = libs.findVersion("jacoco").get().toString() } +spotless { + ratchetFrom("origin/main") + + java { + toggleOffOn() + target("src/*/java/**/*.java") + + // Only going to enforce import order for now + importOrderFile("${rootProject.layout.projectDirectory}/.spotless/import-order.txt") + + // Project maintainers need to decide what the formatting rules should be + } +} + tasks.withType().configureEach { // Use JUnit Platform for unit tests. useJUnitPlatform() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 10c75197..022ecd7e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,6 +9,7 @@ junit = "6.0.3" lombok = "1.18.42" lombok-gradle = "9.2.0" module-info = "1.14" +spotless = "8.2.1" semver4j = "6.0.0" slf4j = "2.0.17" testcontainers = "2.0.3" @@ -26,6 +27,7 @@ awaitility = { group = "org.awaitility", name = "awaitility", version.ref = "awa # lombok-gradle lombok-gradle = { group = "io.freefair.lombok", name = "io.freefair.lombok.gradle.plugin", version.ref = "lombok-gradle" } +spotless-gradle = { group = "com.diffplug.spotless", name = "spotless-plugin-gradle", version.ref = "spotless" } # Jackson jackson-annotations = { group = "com.fasterxml.jackson.core", name = "jackson-annotations" }