Skip to content

Instantly share code, notes, and snippets.

@zavorka
Last active October 31, 2017 10:24
Show Gist options
  • Save zavorka/d921fca5d7af078bc8b1a5efa4da8aef to your computer and use it in GitHub Desktop.
Save zavorka/d921fca5d7af078bc8b1a5efa4da8aef to your computer and use it in GitHub Desktop.
ang-format
# ang-format, ver. 1.0, compatible with clang-format-3.8 and up
#
#
# "Cause we never go out of style. We never go out of style."
#
# -- Taylor Swift, 2014
#
# All these settings have been taken from the clang-format manual,
# Take a look at http://clang.llvm.org/docs/ClangFormatStyleOptions.html
BasedOnStyle: LLVM
# The extra indent or outdent of access modifiers, e.g. "public":.
AccessModifierOffset: -4
# Horizontal alignment of arguments after an open bracket
# Possible values:
# - Align
# someLongFunction(argument1,
# argument2);
# - DontAlign
# someLongFunction(argument1,
# argument2);
# - AlwaysBreak
# someLongFunction(
# argument1, argument2);
#
AlignAfterOpenBracket: Align
# This will align the assignment operators of consecutive lines.
# This will result in formattings like
#
# int aaaa = 12;
# int b = 23;
# int ccc = 23;
#
AlignConsecutiveAssignments: false
# If true, aligns consecutive declarations.
# This will align the declaration names of consecutive lines.
# This will result in formattings like
#
# int aaaa = 12;
# float b = 23;
# std::string ccc = 23;
#
AlignConsecutiveDeclarations: false
# If true, aligns escaped newlines as far left as possible. Otherwise puts
# them into the right-most column.
#
AlignEscapedNewlinesLeft: false
# If true, horizontally align operands of binary and ternary expressions.
#
AlignOperands: false
# If true, aligns trailing comments.
#
AlignTrailingComments: true
# Allow putting all parameters of a function declaration onto the next line
# even if BinPackParameters is false.
#
AllowAllParametersOfDeclarationOnNextLine: true
# Allows contracting simple braced statements to a single line.
# E.g., this allows if (a) { return; } to be put on a single line.
#
AllowShortBlocksOnASingleLine: true
# If true, short case labels will be contracted to a single line.
#
AllowShortCaseLabelsOnASingleLine: false
# Dependent on the value, int f() { return 0; } can be put on a single
# line.
# Possible values:
# SFS_None (in "configuration": None) Never merge functions into a
# single line.
# SFS_Empty (in configuration: Empty) Only merge empty functions.
# SFS_Inline (in "configuration": Inline) Only merge functions defined
# inside a class.
# SFS_All (in "configuration": All) Merge all functions fitting on a
# single line.
AllowShortFunctionsOnASingleLine: Inline
# If true, if (a) return; can be put on a single line.
AllowShortIfStatementsOnASingleLine: false
# If true, while (true) continue; can be put on a single line.
AllowShortLoopsOnASingleLine: true
# The function definition return type breaking style to use.
# Possible values:
# DRTBS_None (in configuration: None) Break after return type automatically.
# PenaltyReturnTypeOnItsOwnLine is taken into account.
# DRTBS_All (in configuration: All) Always break after the return type.
# DRTBS_TopLevel (in configuration: TopLevel) Always break after the return types
# of top level functions.
#
AlwaysBreakAfterDefinitionReturnType: None
# The function declaration return type breaking style to use.
# Possible values:
# RTBS_None (in configuration: None) Break after return type automatically.
# PenaltyReturnTypeOnItsOwnLine is taken into account.
# RTBS_All (in configuration: All) Always break after the return type.
# RTBS_TopLevel (in configuration: TopLevel) Always break after the return
# types of top-level functions.
# RTBS_AllDefinitions (in configuration: AllDefinitions) Always break after
# the return type of function definitions.
# RTBS_TopLevelDefinitions (in configuration: TopLevelDefinitions) Always
# break after the return type of top-level definitions.
AlwaysBreakAfterReturnType: None
# If true, always break before multiline string literals.
# This flag is mean to make cases where there are multiple multiline
# strings in a file look more consistent. Thus, it will only take effect
# if wrapping the string at that point leads to it being indented
# ContinuationIndentWidth spaces from the start of the line.
#
AlwaysBreakBeforeMultilineStrings: true
# If true, always break after the template<...> of a template declaration.
AlwaysBreakTemplateDeclarations: false
# If false, a function call’s arguments will either be all on the same line
# or will have one line each.
BinPackArguments: false
# If false, a function call’s or function definition’s parameters will
# either all be on the same line or will have one line each.
BinPackParameters: false
# The way to wrap binary operators.
# Possible values:
# BOS_None (in configuration: None) Break after operators.
# BOS_NonAssignment (in configuration: NonAssignment) Break before operators that aren’t assignments.
# BOS_All (in configuration: All) Break before operators.
BreakBeforeBinaryOperators: NonAssignment
# The brace breaking style to use.
# Possible "values":
# BS_Attach (in "configuration": Attach) Always attach braces to
# surrounding context.
# BS_Linux (in "configuration": Linux) Like Attach, but break before braces
# on function, namespace and class definitions.
# BS_Mozilla (in configuration: Mozilla) Like Attach, but break before
# braces on enum, function, and record definitions.
# BS_Stroustrup (in "configuration": Stroustrup) Like Attach, but break
# before function definitions.
# BS_Allman (in "configuration": Allman) Always break before braces.
# BS_GNU (in "configuration": GNU) Always break before braces and add an extra
# level of indentation to braces of control statements, not to those of
# class, function or other definitions.
# BS_WebKit (in configuration: WebKit) Like Attach, but break before functions.
# BS_Custom (in configuration: Custom) Configure each individual brace in
# BraceWrapping.
BreakBeforeBraces: WebKit
# If true, ternary operators will be placed after line breaks.
BreakBeforeTernaryOperators: false
# Always break constructor initializers before commas and align the commas
# with the colon.
BreakConstructorInitializersBeforeComma: false
# The column limit. A column limit of 0 means that there is no column
# limit. In this case, clang-format will respect the input’s line breaking
# decisions within statements unless they contradict other rules.
ColumnLimit: 110
# If the constructor initializers don’t fit on a line, put each initializer
# on its own line.
ConstructorInitializerAllOnOneLineOrOnePerLine: true
# The number of characters to use for indentation of constructor
# initializer lists.
ConstructorInitializerIndentWidth: 2
# Indent width for line continuations.
ContinuationIndentWidth: 4
# If true, format braced lists as best suited for C++11 braced lists.
# Important "differences": - No spaces inside the braced list. - No line
# break before the closing brace. - Indentation with the continuation
# indent, not with the block indent. Fundamentally, C++11 braced lists are
# formatted exactly like function calls would be formatted in their place.
# If the braced list follows a name (e.g. a type or variable name), clang-
# format formats as if the {} were the parentheses of a function call with
# that name. If there is no name, a zero-length name is assumed.
Cpp11BracedListStyle: true
# If true, analyze the formatted file for the most common alignment of
# & and *. PointerAlignment is then used only as fallback.
DerivePointerAlignment: false
# Disables formatting completely
DisableFormat: false
# Regular expressions denoting the different #include categories used for
# ordering #includes.
# These regular expressions are matched against the filename of an include
# (including the <> or “”) in order. The value belonging to the first
# matching regular expression is assigned and #includes are sorted first
# according to increasing category number and then alphabetically within
# each category.
# If none of the regular expressions match, UINT_MAX is assigned as
# category. The main header for a source file automatically gets
# category 0, so that it is kept at the beginning of the
# #includes (http://llvm.org/docs/CodingStandards.html#include-style).
# To configure this in the .clang-format file, use:
# IncludeCategories:
# - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
# Priority: 2
# - Regex: '^(<|"(gtest|isl|json)/)'
# Priority: 3
# - Regex: '.\*'
# Priority: 1
#
IncludeCategories:
- Regex: '<[^/.]*>'
Priority: 1
- Regex: '<[^/]*>'
Priority: 2
- Regex: '<c[^/]*>'
Priority: 3
- Regex: '^<[^(ang)]'
Priority: 4
- Regex: '^<'
Priority: 5
# Indent case labels one level from the switch statement. When false, use
# the same indentation level as for the switch statement. Switch statement
# body is always indented one level more than case labels.
IndentCaseLabels: false
# The number of columns to use for indentation.
IndentWidth: 4
# Indent if a function definition or declaration is wrapped after the type.
IndentWrappedFunctionNames: false
# If true, empty lines at the start of blocks are kept.
KeepEmptyLinesAtTheStartOfBlocks: false
# Language, this format style is targeted at. Possible "values": LK_None
# (in "configuration": None) Do not use. LK_Cpp (in "configuration": Cpp)
# Should be used for C, C++, ObjectiveC, ObjectiveC++. LK_JavaScript (in
# "configuration": JavaScript) Should be used for JavaScript. LK_Proto (in
# "configuration": Proto) Should be used for Protocol Buffers
# ("https"://developers.google.com/protocol-buffers/).
Language: Cpp
# The maximum number of consecutive empty lines to keep.
MaxEmptyLinesToKeep: 2
# The indentation used for namespaces.
# Possible "values":
# NI_None (in "configuration": None) Don’t indent in namespaces.
# NI_Inner (in "configuration": Inner) Indent only in inner namespaces
# (nested in other namespaces).
# NI_All (in "configuration": All) Indent in all namespaces.
NamespaceIndentation: None
# The penalty for breaking before the first <<.
#PenaltyBreakFirstLessLess: 0
# The penalty for each line break introduced inside a string literal.
#PenaltyBreakString: 0
# The penalty for each character outside of the column limit.
#PenaltyExcessCharacter: 0
# Penalty for putting the return type of a function onto its own line.
#PenaltyReturnTypeOnItsOwnLine: 0
# Pointer and reference alignment style.
# Possible values:
# PAS_Left (in configuration: Left) Align pointer to the left.
# PAS_Right (in configuration: Right) Align pointer to the right.
# PAS_Middle (in configuration: Middle) Align pointer in the middle.
PointerAlignment: Left
SortIncludes: true
# If true, a space may be inserted after C style casts.
SpaceAfterCStyleCast: true
# SpaceAfterTemplateKeyword: true
# If false, spaces will be removed before assignment operators.
SpaceBeforeAssignmentOperators: true
# Defines in which cases to put a space before opening parentheses.
# Possible values:
# SBPO_Never (in configuration: Never)
# Never put a space before opening parentheses.
# SBPO_ControlStatements (in configuration: ControlStatements)
# Put a space before opening parentheses only after control statement
# keywords (for/if/while...).
# SBPO_Always (in configuration: Always)
# Always put a space before opening parentheses, except when
# it’s prohibited by the syntax rules (in function-like macro
# definitions) or when determined by other style rules (after
# unary operators, opening parentheses, etc.)
#
SpaceBeforeParens: ControlStatements
# If true, spaces may be inserted into ‘()’
SpaceInEmptyParentheses: false
# The number of spaces before trailing line comments (//-comments). This
# does not affect trailing block comments (/**/-comments) as those commonly
# have different usage patterns and a number of special cases.
SpacesBeforeTrailingComments: 1
# If true, spaces will be inserted after ‘<’ and before ‘>’ in template
# argument lists
SpacesInAngles: false
# If true, spaces may be inserted into C style casts.
SpacesInCStyleCastParentheses: false
# If true, spaces are inserted inside container literals (e.g. ObjC and
# Javascript array and dict literals).
SpacesInContainerLiterals: false
# If true, spaces will be inserted after ‘(‘ and before ‘)’.
SpacesInParentheses: false
# If true, spaces will be inserted after ‘[‘ and before ‘]’.
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment