]> git.proxmox.com Git - mirror_edk2.git/blobdiff - .pytool/Plugin/UncrustifyCheck/uncrustify.cfg
.pytool/Plugin/UncrustifyCheck: Add Uncrustify CI plugin
[mirror_edk2.git] / .pytool / Plugin / UncrustifyCheck / uncrustify.cfg
diff --git a/.pytool/Plugin/UncrustifyCheck/uncrustify.cfg b/.pytool/Plugin/UncrustifyCheck/uncrustify.cfg
new file mode 100644 (file)
index 0000000..8506c33
--- /dev/null
@@ -0,0 +1,462 @@
+## @file\r
+# Uncrustify Configuration File for EDK II C Code\r
+#\r
+# Coding Standard: https://edk2-docs.gitbook.io/edk-ii-c-coding-standards-specification/\r
+#\r
+# This configuration file is meant to be a "best attempt" to align with the\r
+# definitions in the EDK II C Coding Standards Specification.\r
+#\r
+# Copyright (c) Microsoft Corporation.\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+##\r
+\r
+# Force UTF-8 encoding (no UTF-16)\r
+enable_digraphs                 = false\r
+utf8_byte                       = false\r
+utf8_force                      = true\r
+\r
+# Code width / line splitting\r
+#code_width                      =120     # TODO: This causes non-deterministic behaviour in some cases when code wraps\r
+ls_code_width                   =false\r
+ls_for_split_full               =true\r
+ls_func_split_full              =true\r
+pos_comma                       =trail\r
+\r
+# 5.1.7  All files must end with CRLF\r
+newlines                        = crlf\r
+\r
+# 5.1.2 Do not use tab characters\r
+\r
+cmt_convert_tab_to_spaces       = true      # Whether to convert all tabs to spaces in comments. If false, tabs in\r
+                                            # comments are left alone, unless used for indenting.\r
+indent_columns                  = 2         # Number of spaces for indentation\r
+indent_with_tabs                = 0         # Do not use TAB characters\r
+string_replace_tab_chars        = true      # Replace TAB with SPACE\r
+                                            # Note: This will break .robot files but is needed for edk2 style\r
+\r
+# 5.2.1.1 There shall be only one statement on a line (statement ends with ;)\r
+nl_multi_line_cond              = true      # Add a newline between ')' and '{' if the ')' is on a different line than\r
+                                            # the if/for/etc.\r
+nl_after_semicolon              = true      # Whether to add a newline after semicolons, except in 'for' statements.\r
+\r
+# 5.2.1.3 An open brace '{' goes on the same line as the closing parenthesis ')' of simple predicate expressions\r
+mod_full_brace_do               = add       # Add or remove braces on a single-line 'do' statement.\r
+mod_full_brace_for              = add\r
+mod_full_brace_function         = add       # Add or remove braces on a single-line function definition.\r
+mod_full_brace_if               = add       # Add or remove braces on a single-line 'if' statement. Braces will not be\r
+                                            # removed if the braced statement contains an 'else'.\r
+mod_full_brace_if_chain         = false\r
+mod_full_brace_while            = add\r
+\r
+# 5.2.1.4 A close brace '}' always goes at the beginning of the last line of the body\r
+eat_blanks_after_open_brace     = true\r
+eat_blanks_before_close_brace   = true      # Whether to remove blank lines before '}'.\r
+\r
+# 5.2.2.2 Always put space before and after binary operators.\r
+sp_assign                       = add       # Add or remove space around assignment operator '=', '+=', etc.\r
+sp_assign_default               = add\r
+sp_bool                         = add       # Add or remove space around boolean operators '&&' and '||'.\r
+sp_compare                      = add       # Add or remove space around compare operator '<', '>', '==', etc.\r
+\r
+# 5.2.2.3 Do not put space between unary operators and their object\r
+sp_addr                         = remove    # A or remove space after the '&' (address-of) unary operator.\r
+sp_incdec                       = remove    # Add or remove space between '++' and '--' the word to which it is being\r
+                                            # applied, as in '(--x)' or 'y++;'.\r
+sp_inv                          = remove    # Add or remove space after the '~' (invert) unary operator.\r
+sp_not                          = remove    # Add or remove space after the '!' (not) unary operator.\r
+sp_sign                         = remove    # Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.\r
+\r
+# 5.2.2.4 Subsequent lines of multi-line function calls should line up two spaces from the beginning of the function\r
+#         name\r
+nl_func_call_args_multi_line    = true      # Whether to add a newline after each ',' in a function call if '(' and ')'\r
+                                            # are in different lines.\r
+nl_func_call_args_multi_line_ignore_closures = false\r
+\r
+# - Indent each argument 2 spaces from the start of the function name. If a\r
+#   function is called through a structure or union member, of type\r
+#   pointer-to-function, then indent each argument 2 spaces from the start of the\r
+#   member name.\r
+indent_func_call_edk2_style     = true      # Use EDK2 indentation style for function calls  (**CUSTOM SETTING**)\r
+indent_paren_after_func_call    = true      # Whether to indent the open parenthesis of a function call, if the\r
+                                            # parenthesis is on its own line.\r
+\r
+# - Align the close parenthesis with the start of the last argument\r
+indent_paren_close              = 0         # How to indent a close parenthesis after a newline.\r
+                                            # (0: Body, 1: Openparenthesis, 2: Brace level)\r
+\r
+\r
+# 5.2.2.5 Always put space after commas or semicolons that separate items\r
+sp_after_comma                  = force     # Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.\r
+sp_before_comma                 = remove    # Add or remove space before ','.\r
+\r
+# 5.2.2.6 Always put space before an open parenthesis\r
+sp_after_sparen                 = add       # Add or remove space after ')' of control statements.\r
+sp_attribute_paren              = add       # Add or remove space between '__attribute__' and '('.\r
+sp_before_sparen                = force     # Add or remove space before '(' of control statements\r
+                                            # ('if', 'for', 'switch', 'while', etc.).\r
+sp_defined_paren                = force     # Add or remove space between 'defined' and '(' in '#if defined (FOO)'.\r
+sp_func_call_paren              = force     # Add or remove space between function name and '(' on function calls.\r
+sp_func_call_paren_empty        = force     # Add or remove space between function name and '()' on function calls\r
+                                            # without parameters. If set to ignore (the default), sp_func_call_paren is\r
+                                            # used.\r
+sp_func_def_paren               = add       # Add or remove space between alias name and '(' of a non-pointer function\r
+                                            # type typedef.\r
+sp_func_proto_paren             = add       # Add or remove space between function name and '()' on function declaration\r
+sp_sizeof_paren                 = force     # Add or remove space between 'sizeof' and '('.\r
+sp_type_func                    = add       # Add or remove space between return type and function name. A minimum of 1\r
+                                            # is forced except for pointer return types.\r
+\r
+# Not specified, but also good style to remove spaces inside parentheses (Optional)\r
+sp_cparen_oparen                = remove    # Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.\r
+sp_inside_fparen                = remove    # Add or remove space inside function '(' and ')'.\r
+sp_inside_fparens               = remove    # Add or remove space inside empty function '()'.\r
+sp_inside_paren                 = remove    # Add or remove space inside '(' and ')'.\r
+sp_inside_paren_cast            = remove    # Add or remove spaces inside cast parentheses. '(int)x'\r
+sp_inside_square                = remove    # Add or remove space inside a non-empty '[' and ']'.\r
+sp_paren_paren                  = remove    # Add or remove space between nested parentheses, i.e. '((' vs. ') )'.\r
+sp_square_fparen                = remove    # Add or remove space between ']' and '(' when part of a function call.\r
+\r
+# 5.2.2.7 Put a space before an open brace if it is not on its own line\r
+sp_do_brace_open                = force     # Add or remove space between 'do' and '{'.\r
+sp_paren_brace                  = force     # Add or remove space between ')' and '{'.\r
+sp_sparen_brace                 = force     # Add or remove space between ')' and '{' of of control statements.\r
+\r
+# 5.2.2.8 Do not put spaces around structure member and pointer operators\r
+sp_after_byref                  = remove    # Add or remove space after reference sign '&', if followed by a word.\r
+sp_before_byref                 = add       # Add or remove space before a reference sign '&'.\r
+sp_deref                        = remove    # Add or remove space after the '*' (dereference) unary operator. This does\r
+                                            # not affect the spacing after a '*' that is part of a type.\r
+sp_member                       = remove    # Add or remove space around the '.' or '->' operators.\r
+\r
+# 5.2.2.9 Do not put spaces before open brackets of array subscripts\r
+sp_before_square                = remove    # Add or remove space before '[' (except '[]').\r
+sp_before_squares               = remove    # Add or remove space before '[]'.\r
+sp_before_vardef_square         = remove    # Add or remove space before '[' for a variable definition.\r
+\r
+# 5.2.2.10 Use extra parentheses rather than depending on in-depth knowledge of the order of precedence of C\r
+mod_full_paren_if_bool          = true      # Whether to fully parenthesize Boolean expressions in 'while' and 'if'\r
+                                            # statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.\r
+\r
+# 5.2.2.11 Align a continuation line with the part of the line that it continues.\r
+use_indent_continue_only_once   = true\r
+\r
+# Additional '{}' bracing rules (Optional)\r
+# NOTE - The style guide specifies two different styles for braces,\r
+# so these are ignored for now to allow developers some flexibility.\r
+nl_after_brace_close            = true      # Whether to add a newline after '}'. Does not apply if followed by a\r
+                                            # necessary ';'.\r
+nl_brace_else                   = remove    # Add or remove newline between '}' and 'else'.\r
+nl_brace_while                  = remove    # Add or remove newline between '}' and 'while' of 'do' statement.\r
+nl_do_brace                     = remove    # Add or remove newline between 'do' and '{'.\r
+nl_else_brace                   = remove    # Add or remove newline between 'else' and '{'.\r
+nl_else_if                      = remove    # Add or remove newline between 'else' and 'if'.\r
+nl_elseif_brace                 = remove    # Add or remove newline between 'else if' and '{'.\r
+nl_enum_brace                   = remove    # Add or remove newline between 'enum' and '{'.\r
+nl_fcall_brace                  = remove    # Add or remove newline between a function call's ')' and '{',\r
+                                            # as in 'list_for_each(item, &list) { }'.\r
+nl_for_brace                    = remove    # Add or remove newline between 'for' and '{'.\r
+nl_if_brace                     = remove    # Add or remove newline between 'if' and '{'.\r
+nl_struct_brace                 = remove    # Add or remove newline between 'struct and '{'.\r
+nl_switch_brace                 = remove    # Add or remove newline between 'switch' and '{'.\r
+nl_union_brace                  = remove    # Add or remove newline between 'union' and '{'.\r
+nl_while_brace                  = remove    # Add or remove newline between 'while' and '{'.\r
+\r
+# Additional whitespace rules (Optional)\r
+sp_after_ptr_star               = remove    # Add or remove space after pointer star '*', if followed by a word.\r
+                                            # Useful when paired with align_var_def_star_style==2\r
+sp_after_ptr_star_func          = remove    # Add or remove space after a pointer star '*', if followed by a function\r
+                                            # prototype or function definition.\r
+sp_after_semi                   = remove    # Add or remove space after ';', except when followed by a comment.\r
+sp_before_case_colon            = remove    # Add or remove space before case ':'.\r
+sp_before_ptr_star              = add       # Add or remove space before pointer star '*'.\r
+sp_before_ptr_star_func         = add       # Add or remove space before a pointer star '*', if followed by a function\r
+                                            # prototype or function definition.\r
+sp_before_semi                  = remove    # Add or remove space before ';'\r
+sp_before_semi_for              = remove    # Add or remove space before ';' in non-empty 'for' statements.\r
+sp_before_semi_for_empty        = add       # Add or remove space before a semicolon of an empty part of a for statement\r
+sp_between_ptr_star             = remove    # Add or remove space between pointer stars '*'. (ie, 'VOID **')\r
+sp_brace_close_while            = force     # Add or remove space between '}' and 'while'.\r
+\r
+sp_after_cast                   = remove\r
+sp_after_type                   = add\r
+sp_balance_nested_parens        = false\r
+sp_before_nl_cont               = add\r
+sp_before_square_asm_block      = ignore\r
+sp_before_unnamed_byref         = add\r
+sp_brace_brace                  = ignore\r
+sp_brace_else                   = force\r
+sp_brace_typedef                = add\r
+sp_case_label                   = force\r
+sp_cmt_cpp_doxygen              = true\r
+sp_cond_colon                   = add\r
+sp_cond_question                = add\r
+sp_cpp_cast_paren               = force\r
+sp_else_brace                   = force\r
+sp_endif_cmt                    = force\r
+sp_enum_assign                  = add\r
+sp_inside_braces                = force\r
+sp_inside_braces_empty          = force\r
+sp_inside_braces_enum           = force\r
+sp_inside_braces_struct         = force\r
+sp_pp_concat                    = add\r
+sp_pp_stringify                 = add\r
+sp_return_paren                 = add\r
+sp_special_semi                 = force\r
+sp_while_paren_open             = force\r
+\r
+# Additional Indentation Rules\r
+indent_access_spec              = 1\r
+indent_access_spec_body         = false\r
+indent_align_assign             = true\r
+indent_align_string             = true\r
+indent_bool_paren               = true\r
+indent_brace_parent             = false\r
+indent_braces                   = false\r
+indent_braces_no_class          = false\r
+indent_braces_no_func           = true\r
+indent_braces_no_struct         = false\r
+indent_class                    = false\r
+indent_class_colon              = false\r
+indent_cmt_with_tabs            = false         # Whether to indent comments that are not at a brace level with tabs on\r
+                                                # a tabstop. Requires indent_with_tabs=2. If false, will use spaces.\r
+indent_col1_comment             = true\r
+indent_col1_multi_string_literal= true\r
+indent_comma_paren              = true\r
+indent_else_if                  = true\r
+indent_extern                   = false\r
+indent_first_bool_expr          = true\r
+\r
+indent_func_def_param_paren_pos_threshold = 0\r
+indent_func_param_double                  = false\r
+indent_func_proto_param                   = true\r
+indent_ignore_asm_block                   = true\r
+indent_label                              = 1\r
+indent_member                             = 2\r
+indent_namespace                          = false\r
+indent_param                              = 2\r
+indent_paren_nl                           = false\r
+indent_paren_open_brace                   = false\r
+indent_preserve_sql                       = false\r
+indent_relative_single_line_comments      = false\r
+indent_sing_line_comments                 = 0\r
+indent_single_newlines                    = false\r
+indent_square_nl                          = false\r
+indent_switch_case                        = 2\r
+indent_template_param                     = true\r
+indent_var_def_blk                        = 0\r
+indent_var_def_cont                       = false\r
+\r
+# Tidy-up rules (Optional)\r
+mod_move_case_break             = true      # Whether to move a 'break' that appears after a fully braced 'case'\r
+                                            # before the close brace, as in 'case X: { ... } break;' =>\r
+                                            # 'case X: { ... break; }'.\r
+mod_pawn_semicolon              = false\r
+mod_remove_empty_return         = false     # Whether to remove a void 'return;' that appears as the last statement\r
+                                            # in a function.\r
+mod_remove_extra_semicolon      = true\r
+mod_sort_import                 = false\r
+mod_sort_include                = false\r
+mod_sort_using                  = false\r
+nl_after_case                   = false     # Whether to add a newline after a 'case' statement.\r
+nl_end_of_file                  = force     # Add or remove newline at the end of the file.\r
+nl_end_of_file_min              = 1         # The minimum number of newlines at the end of the file\r
+nl_max                          = 2         # The maximum number of consecutive newlines (3 = 2 blank lines).\r
+nl_start_of_file                = remove    # Add or remove newlines at the start of the file.\r
+\r
+# Code alignment rules (Optional)\r
+align_asm_colon                 = false\r
+align_assign_span               = 1         # The span for aligning on '=' in assignments.\r
+align_assign_thresh             = 0\r
+align_edk2_style                = true      # Whether to apply edk2-specific alignment formatting\r
+align_enum_equ_span             = 1         # The span for aligning on '=' in enums.\r
+align_func_params               = true      # Whether to align variable definitions in prototypes and functions.\r
+align_func_params_gap           = 2\r
+align_func_params_span          = 2         # The span for aligning parameter definitions in function on parameter name.\r
+align_func_params_thresh        = 0\r
+align_func_proto_span           = 0\r
+align_keep_tabs                 = false\r
+align_left_shift                = false\r
+align_mix_var_proto             = false\r
+align_nl_cont                   = false\r
+align_oc_decl_colon             = false\r
+align_on_operator               = false\r
+align_on_tabstop                = false\r
+align_pp_define_gap             = 2\r
+align_pp_define_span            = 1\r
+align_right_cmt_at_col          = 0         # Align trailing comment at or beyond column N; 'pulls in' comments as\r
+                                            # a bonus side effect (0=ignore)\r
+align_right_cmt_gap             = 0         # If a trailing comment is more than this number of columns away from the\r
+                                            # text it follows,\r
+                                            # it will qualify for being aligned. This has to be > 0 to do anything.\r
+align_right_cmt_mix             = false     # If aligning comments, mix with comments after '}' and #endif with less\r
+                                            # than 3 spaces before the comment\r
+align_right_cmt_same_level      = true      # Whether to only align trailing comments that are at the same brace level.\r
+align_right_cmt_span            = 2         # The span for aligning comments that end lines.\r
+align_same_func_call_params     = false\r
+align_single_line_brace         = true\r
+align_single_line_func          = true\r
+align_struct_init_span          = 1         # The span for aligning struct initializer values.\r
+align_typedef_amp_style         = 1\r
+align_typedef_func              = 1         # How to align typedef'd functions with other typedefs.\r
+                                            # (0: No align, 1: Align open paranthesis, 2: Align function type name)\r
+align_typedef_gap               = 2\r
+align_typedef_span              = 1         # The span for aligning single-line typedefs.\r
+align_typedef_star_style        = 1\r
+align_var_def_amp_style         = 1\r
+align_var_def_attribute         = true\r
+align_var_def_colon             = true      # Whether to align the colon in struct bit fields.\r
+align_var_def_gap               = 2         # The gap (minimum spacing for aligned items) for variable definitions.\r
+align_var_def_inline            = false\r
+align_var_def_span              = 1         # The span (lines needed to align) for aligning variable definitions.\r
+align_var_def_star_style        = 1         # How to consider (or treat) the '*' in the alignment of variable\r
+                                            # definitions.\r
+                                            # 0: Part of the type     'void *   foo;' (default)\r
+                                            # 1: Part of the variable 'void     *foo;'\r
+                                            # 2: Dangling             'void    *foo;'\r
+                                            # (Note - should also set sp_after_ptr_star=remove)\r
+align_var_struct_gap            = 4\r
+align_var_struct_span           = 8         # The span for aligning struct/union member definitions.\r
+align_var_struct_thresh         = 0\r
+align_with_tabs                 = false\r
+\r
+# Comment formatting\r
+cmt_align_doxygen_javadoc_tags  = true      # Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)\r
+                                            # TODO: Eats '[' in '[in]'\r
+cmt_c_group                     = false\r
+cmt_c_nl_end                    = true      # Whether to add a newline before the closing '*/' of the combined c-comment.\r
+cmt_c_nl_start                  = true\r
+cmt_cpp_group                   = false\r
+cmt_cpp_nl_end                  = true\r
+cmt_cpp_nl_start                = true\r
+cmt_cpp_to_c                    = false\r
+cmt_indent_multi                = false     # Whether to apply changes to multi-line comments, including cmt_width,\r
+                                            # keyword substitution and leading chars.\r
+cmt_insert_before_preproc       = false\r
+#cmt_insert_file_header          = default_file_header.txt\r
+#cmt_insert_func_header          = default_function_header.txt\r
+cmt_multi_check_last            = false\r
+cmt_multi_first_len_minimum     = 2\r
+cmt_reflow_mode                 = 1         # How to reflow comments.\r
+                                            # (0:No reflow, 1:No touching at all, 2: Full reflow)\r
+cmt_sp_after_star_cont          = 0         # The number of spaces to insert after the star on subsequent comment lines.\r
+cmt_sp_before_star_cont         = 0         # The number of spaces to insert at the start of subsequent comment lines.\r
+cmt_star_cont                   = false     # Whether to put a star on subsequent comment lines.\r
+cmt_width                       = 120       # Try to wrap comments at N columns.\r
+sp_cmt_cpp_start                = add       # Add or remove space after the opening of a C++ comment, as in\r
+                                            # '// <here> A'.  NOTE: Breaks indentation within comments.\r
+\r
+# Function definitions / declarations\r
+indent_func_call_param          = false     # Whether to indent continued function call parameters one indent level,\r
+                                            # rather than aligning parameters under the open parenthesis.\r
+indent_func_class_param         = false     # Whether to indent continued function call declaration one indent level,\r
+                                            # rather than aligning parameters under the open parenthesis.\r
+indent_func_ctor_var_param      = false     # Whether to indent continued class variable constructors one indent level,\r
+                                            # rather than aligning parameters under the open parenthesis.\r
+indent_func_def_param           = true      # Whether to indent continued function definition parameters one indent\r
+                                            # level, rather than aligning parameters under the open parenthesis.\r
+nl_fdef_brace                   = add       # Add or remove newline between function signature and '{'.\r
+nl_func_call_end_multi_line     = true      # Whether to add a newline before ')' in a function call if '(' and ')' are\r
+                                            # in different lines.\r
+nl_func_call_paren              = remove    # Add or remove newline between a function name and the opening '(' in the\r
+                                            # call.\r
+nl_func_call_start_multi_line   = true      # Whether to add a newline after '(' in a function call if '(' and ')' are\r
+                                            # in different lines.\r
+nl_func_decl_args               = force     # Add or remove newline after each ',' in a function declaration.\r
+nl_func_decl_empty              = add       # Add or remove newline between '()' in a function declaration.\r
+nl_func_def_args                = force     # Add or remove newline after each ',' in a function definition.\r
+nl_func_def_empty               = add       # Add or remove newline between '()' in a function definition.\r
+nl_func_def_paren               = remove    # Add or remove newline between a function name and the opening '('\r
+                                            # in the definition.\r
+nl_func_paren                   = remove    # Add or remove newline between a function name and the opening '(' in\r
+                                            # the declaration.\r
+nl_func_type_name               = add       # Add or remove newline between return type and function name in a function\r
+                                            # definition.\r
+sp_fparen_brace                 = force     # Add or remove space between ')' and '{' of function.\r
+use_indent_func_call_param      = true      # indent_func_call_param will be used\r
+\r
+# Additional Newline Rules\r
+nl_after_brace_open                          = true     # Whether to add a newline after '{'. This also adds a newline\r
+                                                        # before the matching '}'.\r
+nl_after_brace_open_cmt                      = true     # Whether to add a newline between the open brace and a\r
+                                                        # trailing single-line comment.\r
+                                                        # Requires nl_after_brace_open = true.\r
+nl_after_do                                  = add      # Add or remove blank line after 'do/while' statement.\r
+nl_after_for                                 = add      # Add or remove blank line after 'for' statement.\r
+nl_after_func_body                           = 2        # The number of newlines after '}' of a multi-line function body\r
+nl_after_func_body_one_liner                 = 2\r
+nl_after_func_proto                          = 2\r
+nl_after_func_proto_group                    = 2\r
+nl_after_if                                  = add\r
+nl_after_multiline_comment                   = false\r
+nl_after_return                              = false\r
+nl_after_struct                              = 2\r
+nl_after_switch                              = add\r
+nl_after_vbrace_close                        = true\r
+nl_after_vbrace_open                         = true\r
+nl_after_vbrace_open_empty                   = true\r
+nl_after_while                               = add\r
+nl_assign_leave_one_liners                   = true\r
+nl_before_block_comment                      = 2\r
+nl_before_case                               = false\r
+nl_before_do                                 = ignore\r
+nl_before_for                                = ignore\r
+nl_before_if                                 = ignore\r
+nl_before_switch                             = ignore\r
+nl_before_while                              = ignore\r
+nl_before_whole_file_ifdef                   = 2\r
+nl_brace_brace                               = force\r
+nl_brace_struct_var                          = remove\r
+nl_case_colon_brace                          = add\r
+nl_class_leave_one_liners                    = false\r
+nl_collapse_empty_body                       = false\r
+nl_comment_func_def                          = 1\r
+nl_create_for_one_liner                      = false\r
+nl_create_if_one_liner                       = false\r
+nl_create_while_one_liner                    = false\r
+nl_define_macro                              = false\r
+nl_ds_struct_enum_close_brace                = true\r
+nl_ds_struct_enum_cmt                        = false\r
+nl_enum_leave_one_liners                     = false\r
+nl_func_decl_end                             = add\r
+nl_func_decl_start                           = add\r
+nl_func_def_end                              = add\r
+nl_func_def_start                            = add\r
+nl_func_leave_one_liners                     = false\r
+nl_func_proto_type_name                      = add\r
+nl_func_var_def_blk                          = 1\r
+nl_getset_leave_one_liners                   = false\r
+nl_if_leave_one_liners                       = false\r
+nl_multi_line_define                         = false\r
+nl_squeeze_ifdef                             = false\r
+nl_var_def_blk_end                           = 0\r
+nl_var_def_blk_start                         = 0\r
+\r
+# Preprocessor Rules\r
+pp_define_at_level      = true\r
+pp_if_indent_code       = false\r
+pp_indent_func_def      = false\r
+pp_indent_extern        = false\r
+pp_ignore_define_body   = true                # Workaround: Turn off processing for #define body\r
+                                              # (current rules do not work for some defines)\r
+pp_indent               = add\r
+pp_indent_at_level      = true\r
+pp_indent_count         = 2\r
+pp_indent_if            = 2\r
+pp_indent_region        = 2\r
+pp_region_indent_code   = false\r
+pp_space                = remove\r
+\r
+#\r
+# The tokens below are assigned specific types so they are always recognized properly.\r
+#\r
+\r
+# Explicitly define EDK II qualifiers\r
+set QUALIFIER CONST\r
+set QUALIFIER EFIAPI\r
+set QUALIFIER IN\r
+set QUALIFIER OPTIONAL\r
+set QUALIFIER OUT\r
+\r
+# Explicitly define EDK II types\r
+set TYPE EFI_STATUS\r
+set TYPE VOID\r