diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6702622..114bd32 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -314,7 +314,7 @@
 
 if ("${BUILD_TYPE_UPPER}" STREQUAL "DEBUG")
     # enable before adding tests to let them detect that format checking is available - one of the tests is format checking
-    source_format_enable(0.75)
+    source_format_enable(0.76)
 endif()
 
 # generate files
diff --git a/src/common.c b/src/common.c
index 8edeb33..38f51ea 100644
--- a/src/common.c
+++ b/src/common.c
@@ -458,6 +458,7 @@
 
     while (to_read > 0) {
         ssize_t n = read(fd, buf, to_read);
+
         if (n == 0) {
             return LY_SUCCESS;
         } else if (n < 0) {
diff --git a/src/json.c b/src/json.c
index ba711e1..5c45c8c 100644
--- a/src/json.c
+++ b/src/json.c
@@ -164,6 +164,7 @@
              * (one-char) entities and character references */
             if (len + offset + 4 >= size) {
                 size_t increment;
+
                 for (increment = BUFSIZE_STEP; len + offset + 4 >= size + increment; increment += BUFSIZE_STEP) {}
                 buf = ly_realloc(buf, size + increment);
                 LY_CHECK_ERR_RET(!buf, LOGMEM(jsonctx->ctx), LY_EMEM);
@@ -488,7 +489,7 @@
     /* Final position of decimal point in the buf. */
     int32_t dp_position;
     /* Exponent as integer. */
-    long long int e_val;
+    long long e_val;
     /* Byte for the decimal point. */
     int8_t dot;
     /* Required additional byte for the minus sign. */
diff --git a/src/parser_common.c b/src/parser_common.c
index 92b7b29..6fe068b 100644
--- a/src/parser_common.c
+++ b/src/parser_common.c
@@ -333,8 +333,10 @@
 #elif defined _WIN32
         HANDLE h = _get_osfhandle(in->method.fd);
         FILE_NAME_INFO info;
+
         if (GetFileInformationByHandleEx(h, FileNameInfo, &info, sizeof info)) {
             char *buf = calloc(info.FileNameLength + 1 /* trailing NULL */, MB_CUR_MAX);
+
             len = wcstombs(buf, info.FileName, info.FileNameLength * MB_CUR_MAX);
             lydict_insert(ctx, buf, len, filepath);
         }
@@ -914,8 +916,8 @@
 {
     size_t arg_len;
     char *ptr = NULL;
-    long long int num = 0;
-    unsigned long long int unum = 0;
+    long long num = 0;
+    unsigned long long unum = 0;
 
     if (*flags & LYS_SET_VALUE) {
         LOGVAL_PARSER(ctx, LY_VCODE_DUPSTMT, lyplg_ext_stmt2str(stmt->kw));
@@ -1055,7 +1057,7 @@
 {
     char *ptr;
     size_t arg_len;
-    unsigned long long int num;
+    unsigned long long num;
 
     if (*fracdig) {
         LOGVAL_PARSER(ctx, LY_VCODE_DUPSTMT, "fraction-digits");
@@ -1946,7 +1948,7 @@
 {
     size_t arg_len;
     char *ptr;
-    unsigned long long int num;
+    unsigned long long num;
 
     if (*flags & LYS_SET_MAX) {
         LOGVAL_PARSER(ctx, LY_VCODE_DUPSTMT, "max-elements");
@@ -2012,7 +2014,7 @@
 {
     size_t arg_len;
     char *ptr;
-    unsigned long long int num;
+    unsigned long long num;
 
     if (*flags & LYS_SET_MIN) {
         LOGVAL_PARSER(ctx, LY_VCODE_DUPSTMT, "min-elements");
diff --git a/src/parser_yang.c b/src/parser_yang.c
index d250c00..dd84480 100644
--- a/src/parser_yang.c
+++ b/src/parser_yang.c
@@ -1788,8 +1788,8 @@
     LY_ERR ret = LY_SUCCESS;
     char *buf = NULL, *word, *ptr;
     size_t word_len;
-    long long int num = 0;
-    unsigned long long int unum = 0;
+    long long num = 0;
+    unsigned long long unum = 0;
     enum ly_stmt kw;
 
     if (enm->flags & LYS_SET_VALUE) {
@@ -1941,7 +1941,7 @@
     LY_ERR ret = LY_SUCCESS;
     char *buf = NULL, *word, *ptr;
     size_t word_len;
-    unsigned long long int num;
+    unsigned long long num;
     enum ly_stmt kw;
 
     if (type->fraction_digits) {
@@ -2382,7 +2382,7 @@
     LY_ERR ret = LY_SUCCESS;
     char *buf = NULL, *word, *ptr;
     size_t word_len;
-    unsigned long long int num;
+    unsigned long long num;
     enum ly_stmt kw;
 
     if (*flags & LYS_SET_MAX) {
@@ -2454,7 +2454,7 @@
     LY_ERR ret = LY_SUCCESS;
     char *buf = NULL, *word, *ptr;
     size_t word_len;
-    unsigned long long int num;
+    unsigned long long num;
     enum ly_stmt kw;
 
     if (*flags & LYS_SET_MIN) {
diff --git a/src/parser_yin.c b/src/parser_yin.c
index 6b5ff77..fa44968 100644
--- a/src/parser_yin.c
+++ b/src/parser_yin.c
@@ -202,7 +202,7 @@
     name = in->current;
     ly_in_free(in, 0);
 
-    if (name - start == (long int)name_len) {
+    if (name - start == (long)name_len) {
         /* this is done because of collision in yang statement value and yang argument mapped to yin element value */
         if ((kw == LY_STMT_VALUE) && (parent == LY_STMT_ERROR_MESSAGE)) {
             return LY_STMT_ARG_VALUE;
@@ -707,7 +707,7 @@
 {
     const char *temp_val = NULL;
     char *ptr;
-    unsigned long long int num;
+    unsigned long long num;
 
     LY_CHECK_RET(lyxml_ctx_next(ctx->xmlctx));
     LY_CHECK_RET(yin_parse_attribute(ctx, YIN_ARG_VALUE, &temp_val, Y_STR_ARG, LY_STMT_FRACTION_DIGITS));
@@ -1132,8 +1132,8 @@
     LY_ERR ret = LY_SUCCESS;
     const char *temp_val = NULL;
     char *ptr;
-    long long int num = 0;
-    unsigned long long int unum = 0;
+    long long num = 0;
+    unsigned long long unum = 0;
 
     assert(parent_stmt == LY_STMT_POSITION || parent_stmt == LY_STMT_VALUE);
 
@@ -1363,7 +1363,7 @@
     LY_ERR ret = LY_SUCCESS;
     const char *temp_val = NULL;
     char *ptr;
-    unsigned long long int num;
+    unsigned long long num;
     struct yin_subelement subelems[] = {
         {LY_STMT_EXTENSION_INSTANCE, NULL, 0},
     };
@@ -1415,7 +1415,7 @@
 {
     const char *temp_val = NULL;
     char *ptr;
-    unsigned long long int num;
+    unsigned long long num;
     struct yin_subelement subelems[] = {
         {LY_STMT_EXTENSION_INSTANCE, NULL, 0},
     };
diff --git a/src/plugins_types.c b/src/plugins_types.c
index 5ffbc6d..cb4b896 100644
--- a/src/plugins_types.c
+++ b/src/plugins_types.c
@@ -499,6 +499,7 @@
 
         if ((rc != PCRE2_ERROR_NOMATCH) && (rc < 0)) {
             PCRE2_UCHAR pcre2_errmsg[LY_PCRE2_MSG_LIMIT] = {0};
+
             pcre2_get_error_message(rc, pcre2_errmsg, LY_PCRE2_MSG_LIMIT);
 
             return ly_err_new(err, LY_ESYS, 0, NULL, NULL, "%s", (const char *)pcre2_errmsg);
@@ -510,6 +511,7 @@
                 return ly_err_new(err, LY_EVALID, LYVE_DATA, NULL, eapptag, "%s", patterns[u]->emsg);
             } else {
                 const char *inverted = patterns[u]->inverted ? "inverted " : "";
+
                 return ly_err_new(err, LY_EVALID, LYVE_DATA, NULL, eapptag,
                         LY_ERRMSG_NOPATTERN, (int)str_len, str, inverted, patterns[u]->expr);
             }
diff --git a/src/printer_yang.c b/src/printer_yang.c
index aaf1d64..ea643ac 100644
--- a/src/printer_yang.c
+++ b/src/printer_yang.c
@@ -354,7 +354,7 @@
 
 static void
 ypr_unsigned(struct lys_ypr_ctx *pctx, enum ly_stmt substmt, uint8_t substmt_index, void *exts,
-        unsigned long int attr_value, ly_bool *flag)
+        unsigned long attr_value, ly_bool *flag)
 {
     char *str;
 
@@ -368,7 +368,7 @@
 }
 
 static void
-ypr_signed(struct lys_ypr_ctx *pctx, enum ly_stmt substmt, uint8_t substmt_index, void *exts, signed long int attr_value,
+ypr_signed(struct lys_ypr_ctx *pctx, enum ly_stmt substmt, uint8_t substmt_index, void *exts, long attr_value,
         ly_bool *flag)
 {
     char *str;
diff --git a/src/printer_yin.c b/src/printer_yin.c
index 0a9312d..74e0f0e 100644
--- a/src/printer_yin.c
+++ b/src/printer_yin.c
@@ -205,7 +205,7 @@
 }
 
 static void
-ypr_unsigned(struct lys_ypr_ctx *pctx, enum ly_stmt substmt, uint8_t substmt_index, void *exts, unsigned long int attr_value)
+ypr_unsigned(struct lys_ypr_ctx *pctx, enum ly_stmt substmt, uint8_t substmt_index, void *exts, unsigned long attr_value)
 {
     char *str;
 
@@ -218,7 +218,7 @@
 }
 
 static void
-ypr_signed(struct lys_ypr_ctx *pctx, enum ly_stmt substmt, uint8_t substmt_index, void *exts, signed long int attr_value)
+ypr_signed(struct lys_ypr_ctx *pctx, enum ly_stmt substmt, uint8_t substmt_index, void *exts, long attr_value)
 {
     char *str;
 
diff --git a/src/schema_compile_node.c b/src/schema_compile_node.c
index 9364554..0b64dcb 100644
--- a/src/schema_compile_node.c
+++ b/src/schema_compile_node.c
@@ -1328,6 +1328,7 @@
             &err_code, &err_offset, NULL);
     if (!code_local) {
         PCRE2_UCHAR err_msg[LY_PCRE2_MSG_LIMIT] = {0};
+
         pcre2_get_error_message(err_code, err_msg, LY_PCRE2_MSG_LIMIT);
         LOGVAL(ctx, LY_VCODE_INREGEXP, pattern, perl_regex + err_offset, err_msg);
         free(perl_regex);
diff --git a/tests/utests/basic/test_context.c b/tests/utests/basic/test_context.c
index ad81fb4..4c4cc3f 100644
--- a/tests/utests/basic/test_context.c
+++ b/tests/utests/basic/test_context.c
@@ -635,6 +635,7 @@
             "</modules-state>";
 
     char *with_netconf_features = malloc(8096);
+
     strcpy(with_netconf_features,
             DATA_YANG_LIBRARY_START
             "    <module>\n"
diff --git a/tests/utests/data/test_diff.c b/tests/utests/data/test_diff.c
index b0d5104..1b7592a 100644
--- a/tests/utests/data/test_diff.c
+++ b/tests/utests/data/test_diff.c
@@ -32,26 +32,26 @@
             struct lyd_node *data1;\
             struct lyd_node *data2;\
             struct lyd_node *data3;\
-    /*create*/\
+        /*create*/\
             CHECK_PARSE_LYD(XML1, data1);\
             CHECK_PARSE_LYD(XML2, data2);\
             CHECK_PARSE_LYD(XML3, data3);\
-    /* diff1 */ \
+        /* diff1 */ \
             struct lyd_node *diff1;\
             CHECK_PARSE_LYD_DIFF(data1, data2, diff1); \
             CHECK_LYD_STRING(diff1, DIFF1); \
             assert_int_equal(lyd_diff_apply_all(&data1, diff1), LY_SUCCESS); \
             CHECK_LYD(data1, data2); \
-    /* diff2 */ \
+        /* diff2 */ \
             struct lyd_node *diff2;\
             CHECK_PARSE_LYD_DIFF(data2, data3, diff2); \
             CHECK_LYD_STRING(diff2, DIFF2); \
             assert_int_equal(lyd_diff_apply_all(&data2, diff2), LY_SUCCESS);\
             CHECK_LYD(data2, data3);\
-    /* merge */ \
+        /* merge */ \
             assert_int_equal(lyd_diff_merge_all(&diff1, diff2, 0), LY_SUCCESS);\
             CHECK_LYD_STRING(diff1, MERGE); \
-    /* cleanup */ \
+        /* cleanup */ \
             lyd_free_all(data1);\
             lyd_free_all(data2);\
             lyd_free_all(data3);\
diff --git a/tests/utests/schema/test_yang.c b/tests/utests/schema/test_yang.c
index 97c96ef..78b1798 100644
--- a/tests/utests/schema/test_yang.c
+++ b/tests/utests/schema/test_yang.c
@@ -1425,6 +1425,7 @@
     assert_int_equal(LY_SUCCESS, parse_any(YCTX, kw, NULL, (struct lysp_node **)&any));
     // CHECK_LYSP_NODE(NODE, DSC, EXTS, FLAGS, IFFEATURES, NAME, NEXT, TYPE, PARENT, REF, WHEN)
     uint16_t node_type = kw == LY_STMT_ANYDATA ? LYS_ANYDATA : LYS_ANYXML;
+
     CHECK_LYSP_NODE(any, "test", 1, LYS_CONFIG_W | LYS_STATUS_CURR | LYS_MAND_TRUE, 1, "any", 0, node_type, 0, "test", 1);
     assert_non_null(any->musts);
     lysp_node_free(&fctx, (struct lysp_node *)any); any = NULL;
diff --git a/tests/utests/schema/test_yin.c b/tests/utests/schema/test_yin.c
index 3099cac..0ce3abc 100644
--- a/tests/utests/schema/test_yin.c
+++ b/tests/utests/schema/test_yin.c
@@ -91,11 +91,13 @@
 
 /* prototypes of static functions */
 enum yin_argument yin_match_argument_name(const char *name, size_t len);
+
 LY_ERR yin_parse_content(struct lysp_yin_ctx *ctx, struct yin_subelement *subelem_info, size_t subelem_info_size,
         const void *parent, enum ly_stmt parent_stmt, const char **text_content, struct lysp_ext_instance **exts);
 LY_ERR yin_validate_value(struct lysp_yin_ctx *ctx, enum yang_arg val_type);
 enum ly_stmt yin_match_keyword(struct lysp_yin_ctx *ctx, const char *name, size_t name_len,
         const char *prefix, size_t prefix_len, enum ly_stmt parrent);
+
 LY_ERR yin_parse_extension_instance(struct lysp_yin_ctx *ctx, const void *parent, enum ly_stmt parent_stmt,
         LY_ARRAY_COUNT_TYPE parent_stmt_index, struct lysp_ext_instance **exts);
 LY_ERR yin_parse_element_generic(struct lysp_yin_ctx *ctx, enum ly_stmt parent, struct lysp_stmt **element);
diff --git a/tests/utests/utests.h b/tests/utests/utests.h
index 8726910..877d048 100644
--- a/tests/utests/utests.h
+++ b/tests/utests/utests.h
@@ -366,12 +366,12 @@
  * @param[in] TYPEDEFS expected [sized array](@ref sizedarrays) size of list of typedefs
  */
 #define CHECK_LYSP_ACTION(NODE, DSC, EXTS, FLAGS, GROUPINGS, IFFEATURES, \
-            INPUT_DATA, INPUT_EXTS, INPUT_GROUPINGS, INPUT_MUSTS, \
-            INPUT_PARENT, INPUT_TYPEDEFS, \
-            NAME, NODETYPE, \
-            OUTPUT_DATA, OUTPUT_EXTS, OUTPUT_GROUPINGS, OUTPUT_MUSTS, \
-            OUTPUT_PARENT, OUTPUT_TYPEDEFS, \
-            PARENT, REF, TYPEDEFS) \
+                INPUT_DATA, INPUT_EXTS, INPUT_GROUPINGS, INPUT_MUSTS, \
+                INPUT_PARENT, INPUT_TYPEDEFS, \
+                NAME, NODETYPE, \
+                OUTPUT_DATA, OUTPUT_EXTS, OUTPUT_GROUPINGS, OUTPUT_MUSTS, \
+                OUTPUT_PARENT, OUTPUT_TYPEDEFS, \
+                PARENT, REF, TYPEDEFS) \
     assert_non_null(NODE); \
     CHECK_STRING((NODE)->dsc, DSC); \
     CHECK_ARRAY((NODE)->exts, EXTS); \
@@ -440,13 +440,12 @@
  * @param[in] NAME   expected name of imported module
  * @param[in] PREFIX expected prefix for the data from the imported schema
  * @param[in] REF    expected reference
- * @prame[in] REV    expected reprezenting date in format "11-10-2020"
+ * @param[in] REV    expected reprezenting date in format "11-10-2020"
  */
 #define CHECK_LYSP_IMPORT(NODE, DSC, EXTS, NAME, PREFIX, REF, REV) \
     assert_non_null(NODE); \
     CHECK_STRING((NODE)->dsc, DSC); \
     CHECK_ARRAY((NODE)->exts, EXTS); \
-    /*assert_non_null((NODE)->module); // ?? it is mandatory but in some test it doesnt work */ \
     assert_string_equal((NODE)->name, NAME); \
     assert_string_equal((NODE)->prefix, PREFIX); \
     CHECK_STRING((NODE)->ref, REF); \
@@ -488,7 +487,6 @@
     assert_non_null(NODE); \
     CHECK_STRING((NODE)->argument, ARGUMENT); \
     CHECK_POINTER((NODE)->child, CHILD); \
-    /*assert_int_equal((NODE)->flags, LYS_INTERNAL);*/ \
     assert_int_equal((NODE)->parent_stmt, PARENT_STMT); \
     assert_int_equal((NODE)->parent_stmt_index, PARENT_STMT_INDEX); \
     assert_string_equal((NODE)->name, NAME); \
@@ -557,7 +555,7 @@
  * @param[in] TYPES   expected [sized array](@ref sizedarrays) size of list of sub-types
  */
 #define CHECK_LYSP_TYPE(NODE, BASES, BITS, COMPILED, ENUMS, EXTS, FLAGS, FRACTIONS_DIGITS, \
-            LENGTH, NAME, PATH, PATTERNS, PMOD, RANGE, REQUIRE_INSTANCE, TYPES) \
+                LENGTH, NAME, PATH, PATTERNS, PMOD, RANGE, REQUIRE_INSTANCE, TYPES) \
     assert_non_null(NODE);\
     CHECK_ARRAY((NODE)->bases, BASES); \
     CHECK_ARRAY((NODE)->bits, BITS); \
@@ -623,7 +621,7 @@
  * @param[in] DFLT      0-> node dosn't have default value. 1 -> node have default value
  */
 #define CHECK_LYSP_NODE_LEAF(NODE, DSC, EXTS, FLAGS, IFFEATURES, NAME, NEXT, \
-            PARENT, REF, WHEN, MUSTS, UNITS, DFLT) \
+                PARENT, REF, WHEN, MUSTS, UNITS, DFLT) \
     CHECK_LYSP_NODE(NODE, DSC, EXTS, FLAGS, IFFEATURES, NAME, NEXT, LYS_LEAF, PARENT, REF, WHEN); \
     CHECK_ARRAY((NODE)->musts, MUSTS); \
     CHECK_STRING((NODE)->units, UNITS); \
@@ -696,7 +694,7 @@
  * @param[in] WHEN    expected [sized array](@ref sizedarrays) size of list of pointers to when statements
  */
 #define CHECK_LYSC_ACTION(NODE, DSC, EXTS, FLAGS, INPUT_DATA, INPUT_MUST, INPUT_EXTS, MODULE, NAME, NODETYPE, \
-            OUTPUT_DATA, OUTPUT_MUST, OUTPUT_EXTS, PARENT, PRIV, REF, WHEN) \
+                OUTPUT_DATA, OUTPUT_MUST, OUTPUT_EXTS, PARENT, PRIV, REF, WHEN) \
     assert_non_null(NODE); \
     CHECK_STRING((NODE)->dsc, DSC); \
     CHECK_ARRAY((NODE)->exts, EXTS); \
@@ -770,7 +768,7 @@
  * @param[in] WHEN    [sized array](@ref sizedarrays) size of when node array
  */
 #define CHECK_LYSC_NODE_LIST(NODE, DSC, EXTS, FLAGS, MODULE, NAME, NEXT, \
-            PARENT, PRIV, REF, ACTIONS, CHILD, MAX, MIN, MUSTS, NOTIFS, UNIQUES, WHEN) \
+                PARENT, PRIV, REF, ACTIONS, CHILD, MAX, MIN, MUSTS, NOTIFS, UNIQUES, WHEN) \
         CHECK_LYSC_NODE(NODE, DSC, EXTS, FLAGS, MODULE, NAME, NEXT, LYS_LIST, PARENT, PRIV, REF, WHEN); \
         CHECK_POINTER((NODE)->actions, ACTIONS); \
         CHECK_POINTER((NODE)->child, CHILD); \
@@ -800,7 +798,7 @@
  * @param[in] DFLT      0-> node dosn't have default value. 1 -> node have default value
  */
 #define CHECK_LYSC_NODE_LEAF(NODE, DSC, EXTS, FLAGS, MODULE, NAME, NEXT, \
-            PARENT, PRIV, REF, WHEN, MUSTS, UNITS, DFLT) \
+                PARENT, PRIV, REF, WHEN, MUSTS, UNITS, DFLT) \
     CHECK_LYSC_NODE(NODE, DSC, EXTS, FLAGS, MODULE, NAME, NEXT, LYS_LEAF, PARENT, PRIV, REF, WHEN); \
     CHECK_ARRAY((NODE)->musts, MUSTS); \
     assert_non_null((NODE)->type); \
diff --git a/tools/lint/main_ni.c b/tools/lint/main_ni.c
index e393241..04c2340 100644
--- a/tools/lint/main_ni.c
+++ b/tools/lint/main_ni.c
@@ -587,6 +587,7 @@
 
         case 'V': { /* --verbose */
             LY_LOG_LEVEL verbosity = ly_log_level(LY_LLERR);
+
             if (verbosity < LY_LLDBG) {
                 ++verbosity;
             }
@@ -596,6 +597,7 @@
 
         case 'Q': { /* --quiet */
             LY_LOG_LEVEL verbosity = ly_log_level(LY_LLERR);
+
             if (verbosity == LY_LLERR) {
                 /* turn logging off */
                 ly_log_options(LY_LOSTORE_LAST);
diff --git a/uncrustify.cfg b/uncrustify.cfg
index 6c76edb..ec52e71 100644
--- a/uncrustify.cfg
+++ b/uncrustify.cfg
@@ -1,4 +1,4 @@
-# Uncrustify-0.71.0_f
+# Uncrustify-0.76.0_f
 
 #
 # General options
@@ -1539,9 +1539,15 @@
 # Newline adding and removing options
 #
 
-# Whether to collapse empty blocks between '{' and '}'.
+# Whether to collapse empty blocks between '{' and '}' except for functions.
+# Use nl_collapse_empty_body_functions to specify how empty function braces
+# should be formatted.
 nl_collapse_empty_body          = true     # true/false
 
+# Whether to collapse empty blocks between '{' and '}' for functions only.
+# If true, overrides nl_inside_empty_func.
+nl_collapse_empty_body_functions = false    # true/false
+
 # Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
 nl_assign_leave_one_liners      = true     # true/false
 
@@ -1994,6 +2000,12 @@
 # See nl_oc_msg_leave_one_liner.
 nl_oc_msg_args                  = false    # true/false
 
+# (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
+nl_oc_msg_args_min_params       = 0        # unsigned number
+
+# (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
+nl_oc_msg_args_max_code_width   = 0        # unsigned number
+
 # Add or remove newline between function signature and '{'.
 nl_fdef_brace                   = force    # ignore/add/remove/force
 
@@ -2007,6 +2019,9 @@
 # Add or remove newline between 'return' and the return expression.
 nl_return_expr                  = remove   # ignore/add/remove/force
 
+# Add or remove newline between 'throw' and the throw expression.
+nl_throw_expr                   = ignore   # ignore/add/remove/force/not_defined
+
 # Whether to add a newline after semicolons, except in 'for' statements.
 nl_after_semicolon              = false    # true/false
 
@@ -2252,12 +2267,6 @@
 # Overrides nl_after_func_body and nl_after_func_body_class.
 nl_after_func_body_one_liner    = 2        # unsigned number
 
-# The number of blank lines after a block of variable definitions at the top
-# of a function body.
-#
-# 0: No change (default).
-nl_func_var_def_blk             = 1        # unsigned number
-
 # The number of newlines before a block of typedefs. If nl_after_access_spec
 # is non-zero, that option takes precedence.
 #
@@ -2274,6 +2283,15 @@
 # 0: No change (default).
 nl_typedef_blk_in               = 0        # unsigned number
 
+# The minimum number of blank lines after a block of variable definitions
+# at the top of a function body. If any preprocessor directives appear
+# between the opening brace of the function and the variable block, then
+# it is considered as not at the top of the function.Newlines are added
+# before trailing preprocessor directives, if any exist.
+#
+# 0: No change (default).
+nl_var_def_blk_end_func_top     = 1        # unsigned number
+
 # The number of newlines before a block of variable definitions not at the top
 # of a function body. If nl_after_access_spec is non-zero, that option takes
 # precedence.
@@ -3075,6 +3093,9 @@
 # Add or remove unnecessary parenthesis on 'return' statement.
 mod_paren_on_return             = remove   # ignore/add/remove/force
 
+# Add or remove unnecessary parentheses on 'throw' statement.
+mod_paren_on_throw              = ignore   # ignore/add/remove/force/not_defined
+
 # (Pawn) Whether to change optional semicolons to real semicolons.
 mod_pawn_semicolon              = false    # true/false
 
@@ -3172,6 +3193,49 @@
 # Add or remove the comma after the last value of an enumeration.
 mod_enum_last_comma             = remove   # ignore/add/remove/force
 
+# Syntax to use for infinite loops.
+#
+# 0: Leave syntax alone (default)
+# 1: Rewrite as `for(;;)`
+# 2: Rewrite as `while(true)`
+# 3: Rewrite as `do`...`while(true);`
+# 4: Rewrite as `while(1)`
+# 5: Rewrite as `do`...`while(1);`
+#
+# Infinite loops that do not already match one of these syntaxes are ignored.
+# Other options that affect loop formatting will be applied after transforming
+# the syntax.
+mod_infinite_loop               = 0        # unsigned number
+
+# Add or remove the 'int' keyword in 'int short'.
+mod_int_short                   = remove   # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'short int'.
+mod_short_int                   = remove   # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int long'.
+mod_int_long                    = remove   # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'long int'.
+mod_long_int                    = remove   # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int signed'.
+mod_int_signed                  = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'signed int'.
+mod_signed_int                  = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int unsigned'.
+mod_int_unsigned                = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'unsigned int'.
+mod_unsigned_int                = ignore   # ignore/add/remove/force/not_defined
+
+# If there is a situation where mod_int_* and mod_*_int would result in
+# multiple int keywords, whether to keep the rightmost int (the default) or the
+# leftmost int.
+mod_int_prefer_int_on_left      = false    # true/false
+
 # (OC) Whether to organize the properties. If true, properties will be
 # rearranged according to the mod_sort_oc_property_*_weight factors.
 mod_sort_oc_properties          = false    # true/false
@@ -3203,6 +3267,16 @@
 # Preprocessor options
 #
 
+# How to use tabs when indenting preprocessor code.
+#
+# -1: Use 'indent_with_tabs' setting (default)
+#  0: Spaces only
+#  1: Indent with tabs to brace level, align with spaces
+#  2: Indent and align with tabs, using spaces when not on a tabstop
+#
+# Default: -1
+pp_indent_with_tabs             = 0       # number
+
 # Add or remove indentation of preprocessor directives inside #if blocks
 # at brace level 0 (file-level).
 pp_indent                       = ignore    # ignore/add/remove/force
@@ -3223,8 +3297,8 @@
 # Default: 1
 pp_indent_count                 = 0        # unsigned number
 
-# Add or remove space after # based on pp_level of #if blocks.
-pp_space                        = ignore    # ignore/add/remove/force
+# Add or remove space after # based on pp level of #if blocks.
+pp_space_after                  = ignore   # ignore/add/remove/force/not_defined
 
 # Sets the number of spaces per level added with pp_space.
 pp_space_count                  = 0        # unsigned number
@@ -3259,6 +3333,18 @@
 # Whether to ignore the '#define' body while formatting.
 pp_ignore_define_body           = true     # true/false
 
+# An offset value that controls the indentation of the body of a multiline #define.
+# 'body' refers to all the lines of a multiline #define except the first line.
+# Requires 'pp_ignore_define_body = false'.
+#
+#  <0: Absolute column: the body indentation starts off at the specified column
+#      (ex. -3 ==> the body is indented starting from column 3)
+# >=0: Relative to the column of the '#' of '#define'
+#      (ex.  3 ==> the body is indented starting 3 columns at the right of '#')
+#
+# Default: 8
+pp_multiline_define_body_indent = 8        # number
+
 # Whether to indent case statements between #if, #else, and #endif.
 # Only applies to the indent of the preprocesser that the case statements
 # directly inside of.
@@ -3412,6 +3498,18 @@
 # 0: do not truncate.
 debug_truncate                  = 0        # unsigned number
 
+# sort (or not) the tracking info.
+#
+# Default: true
+debug_sort_the_tracks           = true     # true/false
+
+# decode (or not) the flags as a new line.
+# only if the -p option is set.
+debug_decode_the_flags          = false    # true/false
+
+# insert the number of the line at the beginning of each line
+set_numbering_for_html_output   = false    # true/false
+
 # Meaning of the settings:
 #   Ignore - do not do any changes
 #   Add    - makes sure there is 1 or more space/brace/newline/etc
