From 9e2b73a0456673b9f1aec939725b49ea60f95e09 Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 16 Aug 2022 08:09:39 -0700 Subject: [PATCH] Use unmodified official ClangFormat configuration as base formatter configuration (#1324) The Arduino IDE's "Auto Format" feature is configured to produce the standard Arduino sketch formatting style by default. The Arduino IDE editor's default settings are compliant with that style. However, the user may adjust the editor settings. In this case, the Arduino IDE automatically adjusts the Auto Format configuration to align with the user's preferences. The formatter configuration is consumed by several other projects in addition to the Arduino IDE. For this reason, the configuration is hosted and maintained in a centralized location, from which it is pulled by all projects that use it. Previously, the adjustment of the Arduino IDE formatter configuration according to the editor settings was integrated into the configuration object itself. This meant that the standardized configuration had to be modified each time it was pulled in to sync from the upstream source. Moving the base formatter configuration object to a dedicated file, separated from the handling and adjustment code allows syncs to be done by simply replacing the existing configuration file with the one automatically generated by the CI system of the repository where the source configuration is hosted. --- .../src/node/clang-formatter.ts | 183 +---------------- .../src/node/default-formatter-config.json | 193 ++++++++++++++++++ arduino-ide-extension/tsconfig.json | 1 + 3 files changed, 196 insertions(+), 181 deletions(-) create mode 100644 arduino-ide-extension/src/node/default-formatter-config.json diff --git a/arduino-ide-extension/src/node/clang-formatter.ts b/arduino-ide-extension/src/node/clang-formatter.ts index 2431d96d..a1ba2345 100644 --- a/arduino-ide-extension/src/node/clang-formatter.ts +++ b/arduino-ide-extension/src/node/clang-formatter.ts @@ -147,189 +147,10 @@ function styleJson({ UseTab, }: ClangFormatOptions): Record { // Source: https://github.com/arduino/tooling-project-assets/tree/main/other/clang-format-configuration + const defaultConfig = require('../../src/node/default-formatter-config.json'); return { - AccessModifierOffset: -2, - AlignAfterOpenBracket: 'Align', - AlignArrayOfStructures: 'None', - AlignConsecutiveAssignments: 'None', - AlignConsecutiveBitFields: 'None', - AlignConsecutiveDeclarations: 'None', - AlignConsecutiveMacros: 'None', - AlignEscapedNewlines: 'DontAlign', - AlignOperands: 'Align', - AlignTrailingComments: true, - AllowAllArgumentsOnNextLine: true, - AllowAllConstructorInitializersOnNextLine: true, - AllowAllParametersOfDeclarationOnNextLine: true, - AllowShortBlocksOnASingleLine: 'Always', - AllowShortCaseLabelsOnASingleLine: true, - AllowShortEnumsOnASingleLine: true, - AllowShortFunctionsOnASingleLine: 'Empty', - AllowShortIfStatementsOnASingleLine: 'AllIfsAndElse', - AllowShortLambdasOnASingleLine: 'Empty', - AllowShortLoopsOnASingleLine: true, - AlwaysBreakAfterDefinitionReturnType: 'None', - AlwaysBreakAfterReturnType: 'None', - AlwaysBreakBeforeMultilineStrings: false, - AlwaysBreakTemplateDeclarations: 'No', - AttributeMacros: ['__capability'], - BasedOnStyle: 'LLVM', - BinPackArguments: true, - BinPackParameters: true, - BitFieldColonSpacing: 'Both', - BraceWrapping: { - AfterCaseLabel: false, - AfterClass: false, - AfterControlStatement: 'Never', - AfterEnum: false, - AfterFunction: false, - AfterNamespace: false, - AfterObjCDeclaration: false, - AfterStruct: false, - AfterUnion: false, - AfterExternBlock: false, - BeforeCatch: false, - BeforeElse: false, - BeforeLambdaBody: false, - BeforeWhile: false, - IndentBraces: false, - SplitEmptyFunction: true, - SplitEmptyRecord: true, - SplitEmptyNamespace: true, - }, - BreakAfterJavaFieldAnnotations: false, - BreakBeforeBinaryOperators: 'NonAssignment', - BreakBeforeBraces: 'Attach', - BreakBeforeConceptDeclarations: false, - BreakBeforeInheritanceComma: false, - BreakBeforeTernaryOperators: true, - BreakConstructorInitializers: 'BeforeColon', - BreakConstructorInitializersBeforeComma: false, - BreakInheritanceList: 'BeforeColon', - BreakStringLiterals: false, - ColumnLimit: 0, - CommentPragmas: '', - CompactNamespaces: false, - ConstructorInitializerAllOnOneLineOrOnePerLine: false, - ConstructorInitializerIndentWidth: 2, - ContinuationIndentWidth: 2, - Cpp11BracedListStyle: false, - DeriveLineEnding: true, - DerivePointerAlignment: true, - DisableFormat: false, - EmptyLineAfterAccessModifier: 'Leave', - EmptyLineBeforeAccessModifier: 'Leave', - ExperimentalAutoDetectBinPacking: false, - FixNamespaceComments: false, - ForEachMacros: ['foreach', 'Q_FOREACH', 'BOOST_FOREACH'], - IfMacros: ['KJ_IF_MAYBE'], - IncludeBlocks: 'Preserve', - IncludeCategories: [ - { - Regex: '^"(llvm|llvm-c|clang|clang-c)/', - Priority: 2, - SortPriority: 0, - CaseSensitive: false, - }, - { - Regex: '^(<|"(gtest|gmock|isl|json)/)', - Priority: 3, - SortPriority: 0, - CaseSensitive: false, - }, - { Regex: '.*', Priority: 1, SortPriority: 0, CaseSensitive: false }, - ], - IncludeIsMainRegex: '', - IncludeIsMainSourceRegex: '', - IndentAccessModifiers: false, - IndentCaseBlocks: true, - IndentCaseLabels: true, - IndentExternBlock: 'Indent', - IndentGotoLabels: false, - IndentPPDirectives: 'None', - IndentRequires: true, - IndentWidth: 2, - IndentWrappedFunctionNames: false, - InsertTrailingCommas: 'None', - JavaScriptQuotes: 'Leave', - JavaScriptWrapImports: true, - KeepEmptyLinesAtTheStartOfBlocks: true, - LambdaBodyIndentation: 'Signature', - Language: 'Cpp', - MacroBlockBegin: '', - MacroBlockEnd: '', - MaxEmptyLinesToKeep: 100000, - NamespaceIndentation: 'None', - ObjCBinPackProtocolList: 'Auto', - ObjCBlockIndentWidth: 2, - ObjCBreakBeforeNestedBlockParam: true, - ObjCSpaceAfterProperty: false, - ObjCSpaceBeforeProtocolList: true, - PPIndentWidth: -1, - PackConstructorInitializers: 'BinPack', - PenaltyBreakAssignment: 1, - PenaltyBreakBeforeFirstCallParameter: 1, - PenaltyBreakComment: 1, - PenaltyBreakFirstLessLess: 1, - PenaltyBreakOpenParenthesis: 1, - PenaltyBreakString: 1, - PenaltyBreakTemplateDeclaration: 1, - PenaltyExcessCharacter: 1, - PenaltyIndentedWhitespace: 1, - PenaltyReturnTypeOnItsOwnLine: 1, - PointerAlignment: 'Right', - QualifierAlignment: 'Leave', - ReferenceAlignment: 'Pointer', - ReflowComments: false, - RemoveBracesLLVM: false, - SeparateDefinitionBlocks: 'Leave', - ShortNamespaceLines: 0, - SortIncludes: 'Never', - SortJavaStaticImport: 'Before', - SortUsingDeclarations: false, - SpaceAfterCStyleCast: false, - SpaceAfterLogicalNot: false, - SpaceAfterTemplateKeyword: false, - SpaceAroundPointerQualifiers: 'Default', - SpaceBeforeAssignmentOperators: true, - SpaceBeforeCaseColon: false, - SpaceBeforeCpp11BracedList: false, - SpaceBeforeCtorInitializerColon: true, - SpaceBeforeInheritanceColon: true, - SpaceBeforeParens: 'ControlStatements', - SpaceBeforeParensOptions: { - AfterControlStatements: true, - AfterForeachMacros: true, - AfterFunctionDefinitionName: false, - AfterFunctionDeclarationName: false, - AfterIfMacros: true, - AfterOverloadedOperator: false, - BeforeNonEmptyParentheses: false, - }, - SpaceBeforeRangeBasedForLoopColon: true, - SpaceBeforeSquareBrackets: false, - SpaceInEmptyBlock: false, - SpaceInEmptyParentheses: false, - SpacesBeforeTrailingComments: 2, - SpacesInAngles: 'Leave', - SpacesInCStyleCastParentheses: false, - SpacesInConditionalStatement: false, - SpacesInContainerLiterals: false, - SpacesInLineCommentPrefix: { Minimum: 0, Maximum: -1 }, - SpacesInParentheses: false, - SpacesInSquareBrackets: false, - Standard: 'Auto', - StatementAttributeLikeMacros: ['Q_EMIT'], - StatementMacros: ['Q_UNUSED', 'QT_REQUIRE_VERSION'], + ...defaultConfig, TabWidth, - UseCRLF: false, UseTab, - WhitespaceSensitiveMacros: [ - 'STRINGIZE', - 'PP_STRINGIZE', - 'BOOST_PP_STRINGIZE', - 'NS_SWIFT_NAME', - 'CF_SWIFT_NAME', - ], }; } diff --git a/arduino-ide-extension/src/node/default-formatter-config.json b/arduino-ide-extension/src/node/default-formatter-config.json new file mode 100644 index 00000000..f0f56044 --- /dev/null +++ b/arduino-ide-extension/src/node/default-formatter-config.json @@ -0,0 +1,193 @@ +{ + "AccessModifierOffset": -2, + "AlignAfterOpenBracket": "Align", + "AlignArrayOfStructures": "None", + "AlignConsecutiveAssignments": "None", + "AlignConsecutiveBitFields": "None", + "AlignConsecutiveDeclarations": "None", + "AlignConsecutiveMacros": "None", + "AlignEscapedNewlines": "DontAlign", + "AlignOperands": "Align", + "AlignTrailingComments": true, + "AllowAllArgumentsOnNextLine": true, + "AllowAllConstructorInitializersOnNextLine": true, + "AllowAllParametersOfDeclarationOnNextLine": true, + "AllowShortBlocksOnASingleLine": "Always", + "AllowShortCaseLabelsOnASingleLine": true, + "AllowShortEnumsOnASingleLine": true, + "AllowShortFunctionsOnASingleLine": "Empty", + "AllowShortIfStatementsOnASingleLine": "AllIfsAndElse", + "AllowShortLambdasOnASingleLine": "Empty", + "AllowShortLoopsOnASingleLine": true, + "AlwaysBreakAfterDefinitionReturnType": "None", + "AlwaysBreakAfterReturnType": "None", + "AlwaysBreakBeforeMultilineStrings": false, + "AlwaysBreakTemplateDeclarations": "No", + "AttributeMacros": ["__capability"], + "BasedOnStyle": "LLVM", + "BinPackArguments": true, + "BinPackParameters": true, + "BitFieldColonSpacing": "Both", + "BraceWrapping": { + "AfterCaseLabel": false, + "AfterClass": false, + "AfterControlStatement": "Never", + "AfterEnum": false, + "AfterFunction": false, + "AfterNamespace": false, + "AfterObjCDeclaration": false, + "AfterStruct": false, + "AfterUnion": false, + "AfterExternBlock": false, + "BeforeCatch": false, + "BeforeElse": false, + "BeforeLambdaBody": false, + "BeforeWhile": false, + "IndentBraces": false, + "SplitEmptyFunction": true, + "SplitEmptyRecord": true, + "SplitEmptyNamespace": true + }, + "BreakAfterJavaFieldAnnotations": false, + "BreakBeforeBinaryOperators": "NonAssignment", + "BreakBeforeBraces": "Attach", + "BreakBeforeConceptDeclarations": false, + "BreakBeforeInheritanceComma": false, + "BreakBeforeTernaryOperators": true, + "BreakConstructorInitializers": "BeforeColon", + "BreakConstructorInitializersBeforeComma": false, + "BreakInheritanceList": "BeforeColon", + "BreakStringLiterals": false, + "ColumnLimit": 0, + "CommentPragmas": "", + "CompactNamespaces": false, + "ConstructorInitializerAllOnOneLineOrOnePerLine": false, + "ConstructorInitializerIndentWidth": 2, + "ContinuationIndentWidth": 2, + "Cpp11BracedListStyle": false, + "DeriveLineEnding": true, + "DerivePointerAlignment": true, + "DisableFormat": false, + "EmptyLineAfterAccessModifier": "Leave", + "EmptyLineBeforeAccessModifier": "Leave", + "ExperimentalAutoDetectBinPacking": false, + "FixNamespaceComments": false, + "ForEachMacros": ["foreach", "Q_FOREACH", "BOOST_FOREACH"], + "IfMacros": ["KJ_IF_MAYBE"], + "IncludeBlocks": "Preserve", + "IncludeCategories": [ + { + "Regex": "^\"(llvm|llvm-c|clang|clang-c)/", + "Priority": 2, + "SortPriority": 0, + "CaseSensitive": false + }, + { + "Regex": "^(<|\"(gtest|gmock|isl|json)/)", + "Priority": 3, + "SortPriority": 0, + "CaseSensitive": false + }, + { + "Regex": ".*", + "Priority": 1, + "SortPriority": 0, + "CaseSensitive": false + } + ], + "IncludeIsMainRegex": "", + "IncludeIsMainSourceRegex": "", + "IndentAccessModifiers": false, + "IndentCaseBlocks": true, + "IndentCaseLabels": true, + "IndentExternBlock": "Indent", + "IndentGotoLabels": false, + "IndentPPDirectives": "None", + "IndentRequires": true, + "IndentWidth": 2, + "IndentWrappedFunctionNames": false, + "InsertTrailingCommas": "None", + "JavaScriptQuotes": "Leave", + "JavaScriptWrapImports": true, + "KeepEmptyLinesAtTheStartOfBlocks": true, + "LambdaBodyIndentation": "Signature", + "Language": "Cpp", + "MacroBlockBegin": "", + "MacroBlockEnd": "", + "MaxEmptyLinesToKeep": 100000, + "NamespaceIndentation": "None", + "ObjCBinPackProtocolList": "Auto", + "ObjCBlockIndentWidth": 2, + "ObjCBreakBeforeNestedBlockParam": true, + "ObjCSpaceAfterProperty": false, + "ObjCSpaceBeforeProtocolList": true, + "PPIndentWidth": -1, + "PackConstructorInitializers": "BinPack", + "PenaltyBreakAssignment": 1, + "PenaltyBreakBeforeFirstCallParameter": 1, + "PenaltyBreakComment": 1, + "PenaltyBreakFirstLessLess": 1, + "PenaltyBreakOpenParenthesis": 1, + "PenaltyBreakString": 1, + "PenaltyBreakTemplateDeclaration": 1, + "PenaltyExcessCharacter": 1, + "PenaltyIndentedWhitespace": 1, + "PenaltyReturnTypeOnItsOwnLine": 1, + "PointerAlignment": "Right", + "QualifierAlignment": "Leave", + "ReferenceAlignment": "Pointer", + "ReflowComments": false, + "RemoveBracesLLVM": false, + "SeparateDefinitionBlocks": "Leave", + "ShortNamespaceLines": 0, + "SortIncludes": "Never", + "SortJavaStaticImport": "Before", + "SortUsingDeclarations": false, + "SpaceAfterCStyleCast": false, + "SpaceAfterLogicalNot": false, + "SpaceAfterTemplateKeyword": false, + "SpaceAroundPointerQualifiers": "Default", + "SpaceBeforeAssignmentOperators": true, + "SpaceBeforeCaseColon": false, + "SpaceBeforeCpp11BracedList": false, + "SpaceBeforeCtorInitializerColon": true, + "SpaceBeforeInheritanceColon": true, + "SpaceBeforeParens": "ControlStatements", + "SpaceBeforeParensOptions": { + "AfterControlStatements": true, + "AfterForeachMacros": true, + "AfterFunctionDefinitionName": false, + "AfterFunctionDeclarationName": false, + "AfterIfMacros": true, + "AfterOverloadedOperator": false, + "BeforeNonEmptyParentheses": false + }, + "SpaceBeforeRangeBasedForLoopColon": true, + "SpaceBeforeSquareBrackets": false, + "SpaceInEmptyBlock": false, + "SpaceInEmptyParentheses": false, + "SpacesBeforeTrailingComments": 2, + "SpacesInAngles": "Leave", + "SpacesInCStyleCastParentheses": false, + "SpacesInConditionalStatement": false, + "SpacesInContainerLiterals": false, + "SpacesInLineCommentPrefix": { + "Minimum": 0, + "Maximum": -1 + }, + "SpacesInParentheses": false, + "SpacesInSquareBrackets": false, + "Standard": "Auto", + "StatementAttributeLikeMacros": ["Q_EMIT"], + "StatementMacros": ["Q_UNUSED", "QT_REQUIRE_VERSION"], + "TabWidth": 2, + "UseCRLF": false, + "UseTab": "Never", + "WhitespaceSensitiveMacros": [ + "STRINGIZE", + "PP_STRINGIZE", + "BOOST_PP_STRINGIZE", + "NS_SWIFT_NAME", + "CF_SWIFT_NAME" + ] +} diff --git a/arduino-ide-extension/tsconfig.json b/arduino-ide-extension/tsconfig.json index 24604fe4..31b89c62 100644 --- a/arduino-ide-extension/tsconfig.json +++ b/arduino-ide-extension/tsconfig.json @@ -13,6 +13,7 @@ "emitDecoratorMetadata": true, "module": "commonjs", "moduleResolution": "node", + "resolveJsonModule": true, "target": "ES2017", "outDir": "lib", "lib": [