qtgrpc/.clang-format

139 lines
4.5 KiB
YAML

# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
# Evaluate features before including repository subparts.
---
# Use the new standard
Standard: c++20
# Webkit style was loosely based on the Qt style
BasedOnStyle: WebKit
# Column width is limited to 100 in accordance with Qt Coding Style.
# https://wiki.qt.io/Qt_Coding_Style
# Note that this may be changed at some point in the future.
ColumnLimit: 100
# We want a space between the type and the star for pointer types.
PointerBindsToType: false
# We want to break before the operators, but not before a '='.
BreakBeforeBinaryOperators: NonAssignment
PointerAlignment: Right
AllowShortEnumsOnASingleLine: true
# Allow indentation for preprocessing directives (if/ifdef/endif). https://reviews.llvm.org/rL312125
IndentPPDirectives: AfterHash
# We only indent with 2 spaces for preprocessor directives
PPIndentWidth: 2
# Do not format copyright comment lines and qtdoc lines
CommentPragmas: "^ SPDX-License-Identifier:|^ Copyright|\\since|\\overload|\\reentrant|\\value|\\li|\\l"
# macros for which the opening brace stays attached.
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH, forever, Q_FOREVER, QBENCHMARK, QBENCHMARK_ONCE ]
# In QtBase/QtGRPC we use template < with space
SpaceAfterTemplateKeyword: true
# Break constructor initializers before the colon and after the commas.
BreakConstructorInitializers: BeforeColon
# Add "// namespace <namespace>" comments on closing brace for a namespace
# Ignored for namespaces that qualify as a short namespace,
# see 'ShortNamespaceLines'
FixNamespaceComments: true
# When constructor initializers do not fit on one line, put them each on a new line.
ConstructorInitializerAllOnOneLineOrOnePerLine: false
# Indent initializers by 4 spaces
ConstructorInitializerIndentWidth: 4
# Avoids the addition of a space between an identifier and the
# initializer list in list-initialization.
SpaceBeforeCpp11BracedList: false
# Indent width for line continuations.
ContinuationIndentWidth: 4
# No indentation for namespaces.
NamespaceIndentation: None
# Braces are usually attached, but not after functions or class declarations
# Add SplitEmptyRecord: true to existing BraceWrapping stype
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyRecord: true
# InlineOnly to split empty functions (mainly ctors/dtors) in source file
AllowShortFunctionsOnASingleLine: InlineOnly
# Sort includes in each logical block
SortIncludes: true
IncludeBlocks: Preserve
# Put all constructor initializers on the current line if they fit.
# Otherwise, try to fit them on the next line or put each one on its own line.
PackConstructorInitializers: BinPack
# When escaping newlines in a macro attach the '\' as far left as possible, e.g.
##define a \
# something; \
# other; \
# thelastlineislong;
AlignEscapedNewlines: Left
# Try to fit as much as possible in the assignment line, break only if necessary
PenaltyBreakAssignment: 1000
# Try to fit as much as possible in the function declaration, break only if necessary
AlwaysBreakAfterReturnType: None
PenaltyReturnTypeOnItsOwnLine: 100
# Horizontally align arguments after an open bracket.
# The coding style does not specify the following, but this is what gives
# results closest to the existing code.
AlignAfterOpenBracket: Align
AlignArrayOfStructures: Left
AlwaysBreakTemplateDeclarations: Yes
# Try to fit all parameters/arguments in one line, break only if necessary
BinPackParameters: true
BinPackArguments: true
PenaltyBreakOpenParenthesis: 1000
AllowAllArgumentsOnNextLine: false
# Comment // namespace <name> after end of the namespace only when it's bigger that 10 lines
ShortNamespaceLines: 10
# Known limitations:
# (format by your own judgment and ignore clang-format pre-hook (ONLY IN THAT CASE!))
# IndentPPDirectives indents all directives, but some of them shouldn't be indented
# e.g #if after #ifndef.
#
# Function body is either one line or multiline, with breaks after braces and return,
# but Qt code style allows body without breaks, if it fits into one line,
# even with multiple statements, e.g.
# type fun(LooooooongParameter arg)
# { type a; return a; }
#
---
# Use the Google-based style for .proto files.
Language: Proto
BasedOnStyle: Google
IndentWidth: 4
ColumnLimit: 100