123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- # DO NOT COMMIT OR MERGE CODE THAT IS RUN THROUGH THIS TOOL YET.
- #
- # WE ARE STILL DISCUSSING OUR DESIRED STYLE AND ITERATING ON IT.
- # (12 Feb 2020)
- ---
- Language: Cpp
- # Out of all supported styles, LLVM seems closest to our own.
- BasedOnStyle: LLVM
- ################
- #
- # Deviations from LLVM's style.
- #
- ################
- # We prefer an indentation width of 4 columns; LLVM likes 2.
- ## OVERRIDE FOR COMPARISON
- IndentWidth: 2
- ## OVERRIDE FOR COMPARISON
- ## for now i'm not sorting includes, since that makes every file get touched.
- SortIncludes: false
- # We prefer 79; llvm likes 80.
- ColumnLimit: 79
- # Where do we want to put backslashes on multiline macros? Our choices are
- # "as far left as possible", "as far right as possible", and "make no changes."
- # LLVM defaults to right, but we don't dig that.
- AlignEscapedNewlines: Left
- # When we see a bunch of things in a row with comments after them, should we
- # try to align those comments? Doing so makes some of our code pretty ugly.
- AlignTrailingComments: false
- # We use a function declaration style much closer to BSD KNF than to LLVM's.
- # We say:
- # int foo(int x);
- # int
- # foo(int x)
- # {
- # ...
- # }
- # whereas llvm prefers:
- # int foo(int x);
- # int foo(int x) {
- # ...
- # }
- # or even:
- # int foo(int x) { ... }
- #
- BreakBeforeBraces: Custom
- BraceWrapping:
- AfterFunction: true
- AllowShortFunctionsOnASingleLine: None
- AlwaysBreakAfterReturnType: AllDefinitions
- # We don't like blocks to start with an empty line.
- #
- KeepEmptyLinesAtTheStartOfBlocks: false
- ################
- #
- # Tor-specific magic
- #
- ################
- #
- # These comments are magical, and should not be changed.
- #
- CommentPragmas: 'LCOV_EXCL|COVERITY'
- #
- # Remove duplicate empty lines.
- #
- MaxEmptyLinesToKeep: 1
- #
- # Indent preprocessor directives, for clarity.
- #
- IndentPPDirectives: AfterHash
- #
- # These introduce an iteration, and work a bit like a for loop.
- #
- # Note that we can NOT include ones that don't work like "for". For example,
- # if the body is an argument to the macro, we can't list it here.
- #
- ForEachMacros:
- - MAP_FOREACH
- - MAP_FOREACH_MODIFY
- - TOR_SIMPLEQ_FOREACH
- - TOR_SIMPLEQ_FOREACH_SAFE
- - TOR_SLIST_FOREACH
- - TOR_SLIST_FOREACH_SAFE
- - TOR_LIST_FOREACH
- - TOR_LIST_FOREACH_SAFE
- - TOR_TAILQ_FOREACH
- - TOR_TAILQ_FOREACH_SAFE
- - TOR_TAILQ_FOREACH_REVERSE
- - TOR_TAILQ_FOREACH_REVERSE_SAFE
- - TOR_CIRCLEQ_FOREACH
- - TOR_CIRCLEQ_FOREACH_SAFE
- - TOR_CIRCLEQ_FOREACH_REVERSE
- - TOR_CIRCLEQ_FOREACH_REVERSE_SAFE
- - HT_FOREACH
- - SMARTLIST_FOREACH_BEGIN
- - DIGESTMAP_FOREACH
- - DIGESTMAP_FOREACH_MODIFY
- - DIGEST256MAP_FOREACH
- - DIGEST256MAP_FOREACH_MODIFY
- - SDMAP_FOREACH
- - RIMAP_FOREACH
- - EIMAP_FOREACH
- #
- # Omitting:
- #
- # - SMARTLIST_FOREACH, since the body of the loop is an argument.
- #
- # This explains how to sort our headers.
- #
- # This is more complex than it truly should be, but I've edited this till
- # compilation still mostly passes.
- #
- # I'm disabling this, however, since it's a distraction from the other
- # formatting issues. See SortIncludes above.
- #
- IncludeCategories:
- - Regex: '^"orconfig.h'
- Priority: -30
- - Regex: '^"ext/'
- Priority: -18
- - Regex: '^"lib/'
- Priority: -10
- - Regex: '^"core/or/or.h'
- Priority: -5
- - Regex: '^"core/'
- Priority: 5
- - Regex: '^"feature/'
- Priority: 10
- - Regex: '^"app/'
- Priority: 20
- #
- # These macros should always cause indentation, as though they were { and }.
- #
- # Do NOT put macros here unless you want an extra level of indentation between
- # them whenever they appear.
- #
- MacroBlockBegin: "^STMT_BEGIN|TT_STMT_BEGIN$"
- MacroBlockEnd: "^STMT_END|TT_STMT_END$"
- #
- # These macros are interpreted as types.
- # (Not supported in my clang-format)
- #
- # TypenameMacros:
- # - "STACK_OF"
- ...
|