Clang-Format verfügt über 2 Optionen BinPackParameters
und BinPackArguments
. Sie scheinen zu steuern, wie Funktionsdeklarationen und Funktionsaufrufe eingerückt werden.Clang-Format BinPackArguments funktioniert nicht wie erwartet
BinPackParameters
scheint das erwartete Ergebnis für eine Funktionsdeklaration zu liefern, aber BinPackArguments
scheint nicht zu funktionieren, wie man es für einen Funktionsaufruf erwarten würde.
Hier ist ein einfaches Testdatei:
#include <stdbool.h>
void function_with_a_huge_name_that_should_just_not_be(unsigned int a, char *b, unsigned int c, unsigned int d, unsigned int e)
{
return;
}
int main()
{
function_with_a_huge_name_that_should_just_not_be(13, "bb", 1234234, 4324324, 2355345);
}
Und das ist, wie es formatiert ist:
#include <stdbool.h>
void function_with_a_huge_name_that_should_just_not_be(unsigned int a,
char *b,
unsigned int c,
unsigned int d,
unsigned int e)
{
return;
}
int main()
{
function_with_a_huge_name_that_should_just_not_be(
13, "bb", 1234234, 4324324, 2355345);
}
Meine .clang-format
Datei ist wie folgt:
---
AccessModifierOffset: -2
AlignAfterOpenBracket: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AlwaysBreakAfterDefinitionReturnType: false
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackParameters: false
BinPackArguments: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Linux
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DerivePointerAlignment: false
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
IndentFunctionDeclarationAfterType: false
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakString: 1000
PenaltyBreakFirstLessLess: 120
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
TabWidth: 4
UseTab: Never
Mein clang- Formatversion ist: 3.6.0 (tags/RELEASE_360/final)
Mit beiden BinPackParameters
und BinPackArguments
ist falsch Ich hätte erwartet, dass die gleiche Einrückung für den Funktionsaufruf erhalten, wie ich für die Funktionsdeklaration bekomme.
Irgendeine Idee, was ich falsch mache?
Danke, aber mit 'ColumnLimit' 0 gibt es keine Veränderung im Styling, da keine Linie jemals als zu groß angesehen werden kann, um brechen zu müssen. – Lefteris
Das hat wirklich für mich funktioniert. "Ein Spaltenlimit von 0 bedeutet, dass es kein Spaltenlimit gibt. In diesem Fall berücksichtigt das Clam-Format die Zeilentrennungsentscheidungen der Eingabe innerhalb von Anweisungen, sofern sie nicht anderen Regeln widersprechen." http://clang.llvm.org/docs/ClangFormatStyleOptions.html – cs01
Gibt es eine Lösung dafür? Ich habe auch einen Fehler in LLVM bezüglich dieses Problems gemacht, weil ich das clang-Format mit diesem schrecklichen Fehler nicht benutzen kann: https://bugs.llvm.org/show_bug.cgi?id=35968 – Taw