Merge pull request #1645 from fpagliughi/clang_format

Added a .clang-format file and bash script to run it
This commit is contained in:
Ian Craggs 2026-02-13 13:43:50 +00:00 committed by GitHub
commit 2d47a7e62d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 86 additions and 0 deletions

79
.clang-format Normal file
View File

@ -0,0 +1,79 @@
---
Language: C
# Indentation: tabs, one tab per indent level
# The Emacs footer in source files specifies indent-tabs-mode: t
UseTab: ForIndentation
TabWidth: 4
IndentWidth: 4
ContinuationIndentWidth: 8
IndentCaseLabels: true
IndentCaseBlocks: false
IndentGotoLabels: false
IndentPPDirectives: None
IndentWrappedFunctionNames: false
# Braces: Allman style - opening brace on its own line for everything
BreakBeforeBraces: Allman
# Alignment
AlignAfterOpenBracket: DontAlign
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros: false
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
# Pointer style: mixed in codebase (char* ptr and char *ptr both appear),
# derive per file with Left as default
PointerAlignment: Left
DerivePointerAlignment: true
# Spaces
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpacesBeforeTrailingComments: 1
# Line breaking
ColumnLimit: 120
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
BinPackArguments: true
BinPackParameters: true
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: true
BreakStringLiterals: true
# Includes: preserve existing order, do not sort
SortIncludes: Never
IncludeBlocks: Preserve
# Blank lines
MaxEmptyLinesToKeep: 2
# Comments: do not reflow to preserve manual formatting
ReflowComments: false
# Penalties for line breaking decisions
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60

7
fmt.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
#
# Runs clang format over the whole project tree, excluding the 'build/' directory.
#
find . -type d \( -path './build' \) -prune -iname '*.h' -o -iname '*.c' | xargs clang-format -i