-
-
Notifications
You must be signed in to change notification settings - Fork 84
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
formatting: add .clang-format config file
Fvwm has had a long history, with contributions from many people over the years. As a result the code formatting which has crept in is varied -- both in terms of whitespace, indentation, etc., with there being mass inconsistencies all over the code base. Even as far back as 2006 (see commit: 1c9e17f), there was an attempt at reformatting some of FvwmButton's code, but not all of it. Thankfully, technology exists to bring consistency to this automatically. clang-format (from llvm) is one example, but it seems to do the job well enough. This definition cribs from FreeBSD's style, which isn't too far off the codebase as it stands at the moment.
- Loading branch information
1 parent
53f6c8d
commit 63485b3
Showing
1 changed file
with
170 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,183 @@ | ||
--- | ||
# Basic .clang-format | ||
--- | ||
BasedOnStyle: WebKit | ||
AlignAfterOpenBracket: DontAlign | ||
AlignArrayOfStructures: Left | ||
AlignConsecutiveAssignments: true | ||
AlignConsecutiveDeclarations: true | ||
AlignEscapedNewlinesLeft: true | ||
AlignOperands: true | ||
AlignEscapedNewlines: Left | ||
AlignOperands: false | ||
AlignTrailingComments: true | ||
AllowShortBlocksOnASingleLine: false | ||
AllowAllArgumentsOnNextLine: false | ||
AllowAllParametersOfDeclarationOnNextLine: false | ||
AllowShortBlocksOnASingleLine: Never | ||
AllowShortCaseLabelsOnASingleLine: false | ||
AllowShortFunctionsOnASingleLine: None | ||
AllowShortIfStatementsOnASingleLine: false | ||
AllowShortFunctionsOnASingleLine: InlineOnly | ||
AllowShortIfStatementsOnASingleLine: Never | ||
AllowShortLoopsOnASingleLine: false | ||
AlwaysBreakAfterReturnType: All | ||
BasedOnStyle: LLVM | ||
AlwaysBreakAfterReturnType: TopLevelDefinitions | ||
AlwaysBreakBeforeMultilineStrings: false | ||
AlwaysBreakTemplateDeclarations: MultiLine | ||
BinPackArguments: true | ||
BinPackParameters: true | ||
BreakAfterJavaFieldAnnotations: true | ||
BreakBeforeBinaryOperators: NonAssignment | ||
BreakBeforeBraces: Mozilla | ||
ColumnLimit: 80 | ||
ContinuationIndentWidth: 4 | ||
BreakBeforeBinaryOperators: None | ||
BreakBeforeBraces: WebKit | ||
BreakBeforeTernaryOperators: false | ||
# TODO: BreakStringLiterals can cause very strange formatting so turn it off? | ||
BreakStringLiterals: false | ||
# Prefer: | ||
# some_var = function(arg1, | ||
# arg2) | ||
# over: | ||
# some_var = | ||
# function(arg1, arg2) | ||
PenaltyBreakAssignment: 100 | ||
# Prefer: | ||
# some_long_function(arg1, arg2 | ||
# arg3) | ||
# over: | ||
# some_long_function( | ||
# arg1, arg2, arg3) | ||
PenaltyBreakBeforeFirstCallParameter: 100 | ||
CompactNamespaces: true | ||
DerivePointerAlignment: false | ||
ExperimentalAutoDetectBinPacking: false | ||
IndentWidth: 8 | ||
DisableFormat: false | ||
ForEachMacros: | ||
- ARB_ARRFOREACH | ||
- ARB_ARRFOREACH_REVWCOND | ||
- ARB_ARRFOREACH_REVERSE | ||
- ARB_FOREACH | ||
- ARB_FOREACH_FROM | ||
- ARB_FOREACH_SAFE | ||
- ARB_FOREACH_REVERSE | ||
- ARB_FOREACH_REVERSE_FROM | ||
- ARB_FOREACH_REVERSE_SAFE | ||
- BIT_FOREACH_ISCLR | ||
- BIT_FOREACH_ISSET | ||
- CPU_FOREACH | ||
- CPU_FOREACH_ISCLR | ||
- CPU_FOREACH_ISSET | ||
- FOREACH_THREAD_IN_PROC | ||
- FOREACH_PROC_IN_SYSTEM | ||
- FOREACH_PRISON_CHILD | ||
- FOREACH_PRISON_DESCENDANT | ||
- FOREACH_PRISON_DESCENDANT_LOCKED | ||
- FOREACH_PRISON_DESCENDANT_LOCKED_LEVEL | ||
- MNT_VNODE_FOREACH_ALL | ||
- MNT_VNODE_FOREACH_ACTIVE | ||
- RB_FOREACH | ||
- RB_FOREACH_FROM | ||
- RB_FOREACH_SAFE | ||
- RB_FOREACH_REVERSE | ||
- RB_FOREACH_REVERSE_FROM | ||
- RB_FOREACH_REVERSE_SAFE | ||
- SLIST_FOREACH | ||
- SLIST_FOREACH_FROM | ||
- SLIST_FOREACH_FROM_SAFE | ||
- SLIST_FOREACH_SAFE | ||
- SLIST_FOREACH_PREVPTR | ||
- SPLAY_FOREACH | ||
- LIST_FOREACH | ||
- LIST_FOREACH_FROM | ||
- LIST_FOREACH_FROM_SAFE | ||
- LIST_FOREACH_SAFE | ||
- STAILQ_FOREACH | ||
- STAILQ_FOREACH_FROM | ||
- STAILQ_FOREACH_FROM_SAFE | ||
- STAILQ_FOREACH_SAFE | ||
- TAILQ_FOREACH | ||
- TAILQ_FOREACH_FROM | ||
- TAILQ_FOREACH_FROM_SAFE | ||
- TAILQ_FOREACH_REVERSE | ||
- TAILQ_FOREACH_REVERSE_FROM | ||
- TAILQ_FOREACH_REVERSE_FROM_SAFE | ||
- TAILQ_FOREACH_REVERSE_SAFE | ||
- TAILQ_FOREACH_SAFE | ||
- VM_MAP_ENTRY_FOREACH | ||
- VM_PAGE_DUMP_FOREACH | ||
IndentCaseLabels: false | ||
IndentPPDirectives: None | ||
Language: Cpp | ||
NamespaceIndentation: All | ||
NamespaceIndentation: None | ||
PointerAlignment: Right | ||
PointerBindsToType: false | ||
ReflowComments: true | ||
SortIncludes: true | ||
ContinuationIndentWidth: 4 | ||
IndentWidth: 8 | ||
TabWidth: 8 | ||
ColumnLimit: 80 | ||
UseTab: Always | ||
... | ||
SpaceAfterCStyleCast: false | ||
IncludeBlocks: Regroup | ||
IncludeCategories: | ||
- Regex: '^\"config\.h\"' | ||
Priority: 1 | ||
SortPriority: 1 | ||
- Regex: '^\"opt_.*\.h\"' | ||
Priority: 1 | ||
SortPriority: 10 | ||
- Regex: '^<sys/cdefs\.h>' | ||
Priority: 2 | ||
SortPriority: 20 | ||
- Regex: '^<sys/types\.h>' | ||
Priority: 2 | ||
SortPriority: 21 | ||
- Regex: '^<sys/param\.h>' | ||
Priority: 2 | ||
SortPriority: 22 | ||
- Regex: '^<sys/systm\.h>' | ||
Priority: 2 | ||
SortPriority: 23 | ||
- Regex: '^<sys.*/' | ||
Priority: 2 | ||
SortPriority: 24 | ||
- Regex: '\"libs\/.*\.h\"' | ||
Priority: 3 | ||
SortPriority: 15 | ||
- Regex: '^<[^/].*\.h' | ||
Priority: 9 | ||
SortPriority: 90 | ||
- Regex: '^\".*\.h\"' | ||
Priority: 10 | ||
SortPriority: 100 | ||
# LLVM's header include ordering style is almost the exact opposite of ours. | ||
# Unfortunately, they have hard-coded their preferences into clang-format. | ||
# Clobbering this regular expression to avoid matching prevents non-system | ||
# headers from being forcibly moved to the top of the include list. | ||
# http://llvm.org/docs/CodingStandards.html#include-style | ||
IncludeIsMainRegex: 'BLAH_DONT_MATCH_ANYTHING' | ||
# FIXME: We want SortIncludes to be "true", however, enabling this exposes | ||
# bugs in how headers in fvwm are including each other, leading to compilation | ||
# failures. Disable for now until this is fixed. | ||
SortIncludes: false | ||
KeepEmptyLinesAtTheStartOfBlocks: true | ||
TypenameMacros: | ||
- ARB_ELMTYPE | ||
- ARB_HEAD | ||
- ARB8_HEAD | ||
- ARB16_HEAD | ||
- ARB32_HEAD | ||
- ARB_ENTRY | ||
- ARB8_ENTRY | ||
- ARB16_ENTRY | ||
- ARB32_ENTRY | ||
- LIST_CLASS_ENTRY | ||
- LIST_CLASS_HEAD | ||
- LIST_ENTRY | ||
- LIST_HEAD | ||
- QUEUE_TYPEOF | ||
- RB_ENTRY | ||
- RB_HEAD | ||
- SLIST_CLASS_HEAD | ||
- SLIST_CLASS_ENTRY | ||
- SLIST_HEAD | ||
- SLIST_ENTRY | ||
- SMR_POINTER | ||
- SPLAY_ENTRY | ||
- SPLAY_HEAD | ||
- STAILQ_CLASS_ENTRY | ||
- STAILQ_CLASS_HEAD | ||
- STAILQ_ENTRY | ||
- STAILQ_HEAD | ||
- TAILQ_CLASS_ENTRY | ||
- TAILQ_CLASS_HEAD | ||
- TAILQ_ENTRY | ||
- TAILQ_HEAD |