From 63544c3a9d4a11efde8d214a4936ae3e24e1c6c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 22 Oct 2021 20:39:50 +0200 Subject: clang-format: Sync config with LLVM 13 Disable minimum amount of spaces in comment prefix for now, as it otherwise modifies the whole codebase. That's something we probably want to use as it matches our convention, but we should look into fully converting these comments to our style guide at the same time. --- .clang-format | 95 +++++++++++++++++++++++++++++++------- misc/hooks/pre-commit-clang-format | 6 +-- 2 files changed, 81 insertions(+), 20 deletions(-) diff --git a/.clang-format b/.clang-format index 1c26421a7f..9ddb19e57c 100644 --- a/.clang-format +++ b/.clang-format @@ -1,31 +1,41 @@ -# Commented out parameters are those with the same value as base LLVM style +# Commented out parameters are those with the same value as base LLVM style. # We can uncomment them if we want to change their value, or enforce the -# chosen value in case the base style changes (last sync: Clang 6.0.1). +# chosen value in case the base style changes (last sync: Clang 13.0). --- ### General config, applies to all languages ### BasedOnStyle: LLVM AccessModifierOffset: -4 AlignAfterOpenBracket: DontAlign -# AlignConsecutiveAssignments: false -# AlignConsecutiveDeclarations: false +# AlignArrayOfStructures: None +# AlignConsecutiveMacros: None +# AlignConsecutiveAssignments: None +# AlignConsecutiveBitFields: None +# AlignConsecutiveDeclarations: None # AlignEscapedNewlines: Right -# AlignOperands: true +# AlignOperands: Align AlignTrailingComments: false +# AllowAllArgumentsOnNextLine: true +# AllowAllConstructorInitializersOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: false -# AllowShortBlocksOnASingleLine: false +# AllowShortEnumsOnASingleLine: true +# AllowShortBlocksOnASingleLine: Never # AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: Inline -# AllowShortIfStatementsOnASingleLine: false +# AllowShortLambdasOnASingleLine: All +# AllowShortIfStatementsOnASingleLine: Never # AllowShortLoopsOnASingleLine: false # AlwaysBreakAfterDefinitionReturnType: None # AlwaysBreakAfterReturnType: None # AlwaysBreakBeforeMultilineStrings: false -# AlwaysBreakTemplateDeclarations: false +# AlwaysBreakTemplateDeclarations: MultiLine +# AttributeMacros: +# - __capability # BinPackArguments: true # BinPackParameters: true # BraceWrapping: +# AfterCaseLabel: false # AfterClass: false -# AfterControlStatement: false +# AfterControlStatement: Never # AfterEnum: false # AfterFunction: false # AfterNamespace: false @@ -35,13 +45,17 @@ AllowShortFunctionsOnASingleLine: Inline # AfterExternBlock: false # BeforeCatch: false # BeforeElse: false +# BeforeLambdaBody: false +# BeforeWhile: false # IndentBraces: false # SplitEmptyFunction: true # SplitEmptyRecord: true # SplitEmptyNamespace: true # BreakBeforeBinaryOperators: None +# BreakBeforeConceptDeclarations: true # BreakBeforeBraces: Attach # BreakBeforeInheritanceComma: false +# BreakInheritanceList: BeforeColon BreakBeforeTernaryOperators: false # BreakConstructorInitializersBeforeComma: false BreakConstructorInitializers: AfterColon @@ -53,14 +67,19 @@ ConstructorInitializerAllOnOneLineOrOnePerLine: true ConstructorInitializerIndentWidth: 8 ContinuationIndentWidth: 8 Cpp11BracedListStyle: false +# DeriveLineEnding: true # DerivePointerAlignment: false # DisableFormat: false +# EmptyLineAfterAccessModifier: Never +# EmptyLineBeforeAccessModifier: LogicalBlock # ExperimentalAutoDetectBinPacking: false # FixNamespaceComments: true # ForEachMacros: # - foreach # - Q_FOREACH # - BOOST_FOREACH +# IfMacros: +# - KJ_IF_MAYBE # IncludeBlocks: Preserve IncludeCategories: - Regex: '".*"' @@ -70,13 +89,21 @@ IncludeCategories: - Regex: '^<.*' Priority: 3 # IncludeIsMainRegex: '(Test)?$' +# IncludeIsMainSourceRegex: '' +# IndentAccessModifiers: false IndentCaseLabels: true +# IndentCaseBlocks: false +# IndentGotoLabels: true # IndentPPDirectives: None +# IndentExternBlock: AfterExternBlock +# IndentRequires: false IndentWidth: 4 # IndentWrappedFunctionNames: false +# InsertTrailingCommas: None # JavaScriptQuotes: Leave # JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: false +# LambdaBodyIndentation: Signature # MacroBlockBegin: '' # MacroBlockEnd: '' # MaxEmptyLinesToKeep: 1 @@ -86,38 +113,72 @@ KeepEmptyLinesAtTheStartOfBlocks: false # PenaltyBreakComment: 300 # PenaltyBreakFirstLessLess: 120 # PenaltyBreakString: 1000 +# PenaltyBreakTemplateDeclaration: 10 # PenaltyExcessCharacter: 1000000 # PenaltyReturnTypeOnItsOwnLine: 60 +# PenaltyIndentedWhitespace: 0 # PointerAlignment: Right -# RawStringFormats: -# - Delimiter: pb -# Language: TextProto -# BasedOnStyle: google +# PPIndentWidth: -1 +# ReferenceAlignment: Pointer # ReflowComments: true -# SortIncludes: true +# ShortNamespaceLines: 1 +# SortIncludes: CaseSensitive +# SortJavaStaticImport: Before # SortUsingDeclarations: true # SpaceAfterCStyleCast: false +# SpaceAfterLogicalNot: false # SpaceAfterTemplateKeyword: true # SpaceBeforeAssignmentOperators: true +# SpaceBeforeCaseColon: false +# SpaceBeforeCpp11BracedList: false +# SpaceBeforeCtorInitializerColon: true +# SpaceBeforeInheritanceColon: true # SpaceBeforeParens: ControlStatements +# SpaceAroundPointerQualifiers: Default +# SpaceBeforeRangeBasedForLoopColon: true # SpaceInEmptyParentheses: false # SpacesBeforeTrailingComments: 1 -# SpacesInAngles: false +# SpaceInEmptyBlock: false +# SpaceInEmptyParentheses: false +# SpacesBeforeTrailingComments: 1 +# SpacesInAngles: Never +# SpacesInContainerLiterals: true +# SpacesInConditionalStatement: false # SpacesInContainerLiterals: true # SpacesInCStyleCastParentheses: false +## Godot TODO: We'll want to use a min of 1, but we need to see how to fix +## our comment capitalization at the same time. +SpacesInLineCommentPrefix: + Minimum: 0 + Maximum: -1 # SpacesInParentheses: false # SpacesInSquareBrackets: false +# SpaceBeforeSquareBrackets: false +# BitFieldColonSpacing: Both +# StatementAttributeLikeMacros: +# - Q_EMIT +# StatementMacros: +# - Q_UNUSED +# - QT_REQUIRE_VERSION TabWidth: 4 +# UseCRLF: false UseTab: Always +# WhitespaceSensitiveMacros: +# - STRINGIZE +# - PP_STRINGIZE +# - BOOST_PP_STRINGIZE +# - NS_SWIFT_NAME +# - CF_SWIFT_NAME --- ### C++ specific config ### Language: Cpp -Standard: Cpp11 +Standard: c++17 --- ### ObjC specific config ### Language: ObjC -Standard: Cpp11 +# ObjCBinPackProtocolList: Auto ObjCBlockIndentWidth: 4 +# ObjCBreakBeforeNestedBlockParam: true # ObjCSpaceAfterProperty: false # ObjCSpaceBeforeProtocolList: true --- diff --git a/misc/hooks/pre-commit-clang-format b/misc/hooks/pre-commit-clang-format index 81bc412944..3112f1af5f 100755 --- a/misc/hooks/pre-commit-clang-format +++ b/misc/hooks/pre-commit-clang-format @@ -77,10 +77,10 @@ fi # To get consistent formatting, we recommend contributors to use the same # clang-format version as CI. RECOMMENDED_CLANG_FORMAT_MAJOR_MIN="11" -RECOMMENDED_CLANG_FORMAT_MAJOR_MAX="12" +RECOMMENDED_CLANG_FORMAT_MAJOR_MAX="13" if [ ! -x "$CLANG_FORMAT" ] ; then - message="Error: clang-format executable not found. Please install clang-format $RECOMMENDED_CLANG_FORMAT_MAJOR.x.x." + message="Error: clang-format executable not found. Please install clang-format $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX." if [ ! -t 1 ] ; then if [ -x "$ZENITY" ] ; then @@ -108,7 +108,7 @@ CLANG_FORMAT_VERSION="$(clang-format --version | sed "s/[^0-9\.]*\([0-9\.]*\).*/ CLANG_FORMAT_MAJOR="$(echo "$CLANG_FORMAT_VERSION" | cut -d. -f1)" if [[ "$CLANG_FORMAT_MAJOR" -lt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MIN" || "$CLANG_FORMAT_MAJOR" -gt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MAX" ]]; then - echo "Warning: Your clang-format binary is the wrong version ($CLANG_FORMAT_VERSION, expected between $RECOMMENDED_CLANG_FORMAT_MAJOR_MIN.x.x and $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX.x.x)." + echo "Warning: Your clang-format binary is the wrong version ($CLANG_FORMAT_VERSION, expected between $RECOMMENDED_CLANG_FORMAT_MAJOR_MIN and $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX)." echo " Consider upgrading or downgrading clang-format as formatting may not be applied correctly." fi -- cgit v1.2.3