1
0
mirror of https://github.com/MarlinFirmware/Marlin.git synced 2024-11-23 02:35:31 +00:00

Add a code formatter

This commit is contained in:
Scott Lahteine 2020-06-06 03:54:12 -05:00
parent fda1ef2dd3
commit 9a0b0d8469
3 changed files with 341 additions and 0 deletions

30
buildroot/bin/format_code Executable file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
#
# format_code [dir/file...]
#
HERE=`dirname $0`
while [[ $# -gt 0 ]]; do
val="$1"
if [ -d "$val" ]; then
find $val -name *.cpp -exec "$HERE/uncrust" '{}' \;
elif [ -d "./Marlin/src/$val" ]; then
find "./Marlin/src/$val" -name *.cpp -exec "$HERE/uncrust" '{}' \;
elif [ -f "./Marlin/src/$val" ]; then
uncrust "./Marlin/src/$val"
elif [ -f "$val" ]; then
uncrust "$val"
fi
done

16
buildroot/bin/uncrust Executable file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env bash
#
# Run uncrustify for a file in-place
#
TMPDIR=`mktemp -d`
# Reformat a single file to tmp/
uncrustify -c ./buildroot/share/extras/uncrustify.cfg -f "$1" >$TMPDIR/uncrustify.out
# Replace the original file
cp "$TMPDIR/uncrustify.out" "$1"
# Clean up, deliberately
rm "$TMPDIR/uncrustify.out"
rmdir "$TMPDIR"

View File

@ -0,0 +1,295 @@
#
# http://uncrustify.sourceforge.net/
#
# Source beautifier configuration which helps to create
# more consistent look to your source with the expected
# coding style in VICE
#
# Usage: "uncrustify -c uncrustify.cfg source.c"
#
# There's no guarantee the look is perfect after this
# but at least the most common stuff is corrected.
#
# Make sure to use the latest version.
#
# no cr/lf
newlines = lf
# no tabs
indent_with_tabs = 0
# no tabs
output_tab_size = 2
# small indents
indent_columns = 2
# Spaces to indent '{' from 'case'.
# By default, the brace will appear under the 'c' in case.
# Usually set to 0 or indent_columns.
indent_case_brace = 4
# Spaces to indent 'case' from 'switch'
# Usually 0 or indent_columns.
indent_switch_case = 4
# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
sp_arith = force
# Add or remove space around assignment operator '=', '+=', etc
sp_assign = force
# Add or remove space around boolean operators '&&' and '||'
sp_bool = force
# Add or remove space around compare operator '<', '>', '==', etc
sp_compare = force
# Add or remove space around the ':' in 'b ? t : f'
sp_cond_colon = force
# Add or remove space around the '?' in 'b ? t : f'
sp_cond_question = force
# In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
# and ':'.
#
# Overrides all other sp_cond_* options.
sp_cond_ternary_short = remove
# Add or remove space between nested parens
sp_paren_paren = remove
# Add or remove space inside '(' and ')'
sp_inside_sparen = remove
# Add or remove space between 'else' and '{' if on the same line
sp_else_brace = force
# Add or remove space between '}' and 'else' if on the same line
sp_brace_else = force
# Add or remove space inside a non-empty '[' and ']'
sp_inside_square = remove
# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
sp_before_sparen = force
# Add or remove space after ','
sp_after_comma = force
# Add or remove space before ','
sp_before_comma = remove
# Add or remove space between ')' and '{'
sp_paren_brace = force
# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
sp_after_sparen = force
# Add or remove space after ';', except when followed by a comment. Default=Add
sp_after_semi = force
# Add or remove newline between '}' and 'else'
nl_brace_else = force
# Add or remove newline between 'enum' and '{'
nl_enum_brace = remove
# Add or remove newline between 'struct and '{'
nl_struct_brace = remove
# Add or remove newline between 'union' and '{'
nl_union_brace = remove
# Whether to put a newline after brace open.
# This also adds a newline before the matching brace close.
nl_after_brace_open = true
# Add or remove newline between 'if' and '{'
nl_if_brace = remove
# Add or remove newline between 'else' and '{'
nl_else_brace = remove
# Add or remove newline between 'switch' and '{'
nl_switch_brace = remove
# Add or remove newline at the end of the file
nl_end_of_file = add
# Add or remove newline between function signature and '{'
nl_fdef_brace = remove
# Whether to remove blank lines after '{'
eat_blanks_after_open_brace = true
# Whether to remove blank lines before '}'
eat_blanks_before_close_brace = false
# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
# have, or do not have, braces. If true, braces will be added if any block
# needs braces, and will only be removed if they can be removed from all
# blocks.
#
# Overrides mod_full_brace_if.
mod_full_brace_if_chain = true
# Add or remove braces on single-line 'if' statement. Will not remove the braces if they contain an 'else'.
mod_full_brace_if = false
# Add or remove braces on single-line 'do' statement
mod_full_brace_do = false
# Add or remove braces on single-line 'for' statement
mod_full_brace_for = false
# Add or remove braces on single-line 'while' statement
mod_full_brace_while = false
# Whether to remove superfluous semicolons
mod_remove_extra_semicolon = true
# If an #ifdef or #else body exceeds the specified number of newlines and
# doesn't have a comment after the #else, a comment will be added.
mod_add_long_ifdef_else_comment = 40
# Whether to put a newline after a brace close.
# Does not apply if followed by a necessary ';'.
nl_after_brace_close = true
# If false, disable all multi-line comment changes, including cmt_width. keyword substitution, and leading chars.
# Default is true.
cmt_indent_multi = false
# Add or remove indentation of preprocessor directives inside #if blocks
# at brace level 0 (file-level).
pp_indent = add
# Whether to indent #if/#else/#endif at the brace level. If false, these are
# indented from column 1.
pp_indent_at_level = true
# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
# not at file-level. Negative values decrease indent down to the first column.
#
# =0: Indent preprocessors using output_tab_size
# >0: Column at which all preprocessors will be indented
pp_indent_if = 0
# 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.
#
# Default: true
pp_indent_case = false
# Whether to indent the code between #if, #else and #endif.
pp_if_indent_code = true
# Specifies the number of columns to indent preprocessors per level
# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
# the number of columns to indent preprocessors per level
# at brace level > 0 (function-level).
#
# Default: 1
pp_indent_count = 2
# Whether to indent '#define' at the brace level. If false, these are
# indented from column 1.
pp_define_at_level = true
# Whether to ignore the '#define' body while formatting.
pp_ignore_define_body = true
#
# Newline adding and removing options
#
# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
nl_assign_leave_one_liners = true
# Don't split one-line braced statements inside a 'class xx { }' body.
nl_class_leave_one_liners = true
# Don't split one-line enums, as in 'enum foo { BAR = 15 };'
nl_enum_leave_one_liners = true
# Don't split one-line get or set functions.
nl_getset_leave_one_liners = true
# (C#) Don't split one-line property get or set functions.
nl_cs_property_leave_one_liners = true
# Don't split one-line function definitions, as in 'int foo() { return 0; }'.
# might modify nl_func_type_name
nl_func_leave_one_liners = true
# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
nl_cpp_lambda_leave_one_liners = false
# Don't split one-line if/else statements, as in 'if(...) b++;'.
nl_if_leave_one_liners = true
# Don't split one-line while statements, as in 'while(...) b++;'.
nl_while_leave_one_liners = true
# Don't split one-line for statements, as in 'for(...) b++;'.
nl_for_leave_one_liners = true
# Whether to indent the body of a C++11 lambda.
indent_cpp_lambda_body = true
# The value might be used twice:
# - at the assignment
# - at the opening brace
#
# To prevent the double use of the indentation value, use this option with the
# value 'true'.
#
# true: indentation will be used only once
# false: indentation will be used every time (default)
indent_cpp_lambda_only_once = true
# How to reflow comments.
#
# 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
# 1: No touching at all
# 2: Full reflow
cmt_reflow_mode = 1
# Whether to group cpp-comments that look like they are in a block. Only
# meaningful if cmt_cpp_to_c=true.
cmt_cpp_group = true
# Whether to put a star on subsequent comment lines.
cmt_star_cont = true
# The number of spaces to insert at the start of subsequent comment lines.
cmt_sp_before_star_cont = 1
# The number of spaces to insert after the star on subsequent comment lines.
cmt_sp_after_star_cont = 1
# Whether to convert all tabs to spaces in comments. If false, tabs in
# comments are left alone, unless used for indenting.
cmt_convert_tab_to_spaces = true
# Add a newline before ')' if an if/for/while/switch condition spans multiple
# lines. Overrides nl_before_if_closing_paren if both are specified.
nl_multi_line_sparen_close = ignore
# Add or remove newline before 'if'/'else if' closing parenthesis.
nl_before_if_closing_paren = ignore
# Add or remove space around assignment operator '=' in a prototype.
#
# If set to ignore, use sp_assign.
sp_assign_default = remove
# Whether to right-align numbers.
align_number_right = true