diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..30c11aa0 --- /dev/null +++ b/.clang-format @@ -0,0 +1,43 @@ +--- +# Things explicitly enumerated in CONTRIBUTING.md +IndentWidth: 4 +UseTab: Never +SpaceBeforeParens: Never +BreakBeforeBraces: Attach +ColumnLimit: 100 +# Docs say 100, but some places look more like 80. +#ColumnLimit: 80 + +# Based on minimizing diff when applying clang-format +AccessModifierOffset: -4 +DerivePointerAlignment: true +AlignConsecutiveAssignments: true +FixNamespaceComments: true +NamespaceIndentation: Inner +AllowShortLoopsOnASingleLine: true +AlwaysBreakTemplateDeclarations: Yes # MultiLine +SpaceAfterTemplateKeyword: false +MaxEmptyLinesToKeep: 2 +IndentPPDirectives: AfterHash +AlignEscapedNewlines: DontAlign +BreakConstructorInitializers: BeforeColon +AllowShortCaseLabelsOnASingleLine: true + +# This one is mixed in its effect: it permits some single-line functions, +# but also tends to put, e.g., enums on a single line. +AllowShortBlocksOnASingleLine: true + +# No way to remove all space around operators as seen in much of the code I looked at. +#SpaceBeforeAssignmentOperators: false + +# Only seen some of the time (mostly just variables, not functions) +# but clang-format only has a true/false +#AlignConsecutiveDeclarations: true + + +# Would be nice to turn on eventually, maybe? +SortIncludes: false +SortUsingDeclarations: false + +# Hard to tell what the desired config here was. +# AllowShortFunctionsOnASingleLine: Inline diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 045ef974..4caf715b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -186,6 +186,11 @@ std::string SolveSpace::Dirname(std::string filename) { } ``` +If you install [clang-format][], this style can be automatically applied by staging your changes +with `git add -u`, running `git clang-format`, and staging any changes it made again. + +[clang-format]: https://clang.llvm.org/docs/ClangFormat.html + Debugging code --------------