Формат Clang в C ++: предотвращение разрыва строки перед оператором доступа к элементу - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь использовать файл в формате .clang с Visual Studio 2017, и я почти на месте, но у меня проблемы с операторами доступа членов (в частности -> и.).Я обнаружил, что формат clang всегда хочет поставить разрыв строки перед оператором доступа к элементу, и, похоже, нет возможности запретить это (я думаю, что Visual Studio 2017 поддерживает clang 5: http://releases.llvm.org/5.0.0/tools/clang/docs/ClangFormatStyleOptions.html).

Я бы хотел, чтобы мой код был отформатирован следующим образом:

const auto result = object->DoAThing(
    input1,
    input2->DoSomethingElse(),
    input3 )->DoAnotherThing();

Но в итоге я получаю:

const auto result = object
                        ->DoAThing(
                            input1,
                            input2->DoSomethingElse(),
                            input3 )
                        ->DoAnotherThing();

Единственные параметры, которые, по-видимому, предотвращают это поведение,если я увеличу ColumnLimit (что я не хочу делать). Мой файл в формате .clang выглядит следующим образом:

Language: Cpp
#DisableFormat: true

AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
    AfterClass:      true   
    AfterControlStatement: true
    AfterEnum:       true
    AfterFunction:   true          
    AfterNamespace:  true                
    AfterStruct:     true
    AfterUnion:      true
    BeforeCatch:     true
    BeforeElse:      true   
    IndentBraces:    false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: false
BreakConstructorInitializers: AfterColon
BreakStringLiterals: true
ColumnLimit: 110
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
FixNamespaceComments: true
IncludeCategories:
    - Regex:           '\/stdafx.h'
      Priority:        -1
IndentCaseLabels: true
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PenaltyBreakAssignment: 10000
PenaltyBreakBeforeFirstCallParameter: 10
PenaltyBreakComment: 0
PenaltyBreakFirstLessLess: 100
PenaltyBreakString: 50
PenaltyExcessCharacter: 5
PenaltyReturnTypeOnItsOwnLine: 100
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesInAngles: true
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpacesInParentheses: true
SpacesInSquareBrackets: true
TabWidth: 4
UseTab: Never
...