---
Language: Cpp
BasedOnStyle: LLVM

AlignEscapedNewlines: DontAlign
AlignTrailingComments: Never
AllowAllParametersOfDeclarationOnNextLine: false
AlwaysBreakAfterReturnType: All
BreakBeforeBinaryOperators: NonAssignment
ColumnLimit: 0
Cpp11BracedListStyle: false
IncludeBlocks: Regroup
IncludeCategories:
  - Regex: '<.*>'
    Priority: -2
    CaseSensitive: true
  - Regex: '".*/.*"'
    Priority: -1
    CaseSensitive: true
  - Regex: '"[^/]*"'
    Priority: 0
    SortPriority: 1
    CaseSensitive: true
IndentCaseLabels: true
IndentWidth: 4
InsertNewlineAtEOF: true
MaxEmptyLinesToKeep: 3
SpaceAfterCStyleCast: true
SpaceBeforeParens: Always
WhitespaceSensitiveMacros:
  # Buggy workaround to add exceptions to 'SpaceBeforeParens: Always' (see below)
  - _
# Workaround to avoid some alignment bugs when adding a macro to WhitespaceSensitiveMacros,
# see https://github.com/llvm/llvm-project/issues/55443#issuecomment-1953268337
# This doesn't fix all alignment bugs though, so I'd rather make an exception only for '_',
# and not also for 'N_' or 'I_' for example.
# See also https://github.com/llvm/llvm-project/issues/82288
Macros:
  - _(x)=x
...
