clang-format ha 2 opzioni chiamate BinPackParameters
e BinPackArguments
. Sembrano controllare il modo in cui le dichiarazioni di funzione e le chiamate di funzione sono rientrate.BinPackArguments in formato clang non funziona come previsto
BinPackParameters
sembra fornire il risultato previsto per una dichiarazione di funzione ma BinPackArguments
non sembra funzionare come ci si aspetterebbe per una chiamata di funzione.
Ecco un semplice file di test:
#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);
}
e questo è il modo in cui viene formattato:
#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);
}
Il mio file .clang-format
è la seguente:
---
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
mio clang- la versione in formato è: 3.6.0 (tags/RELEASE_360/final)
Sia con BinPackParameters
sia con BinPackArguments
in modo falso, mi sarei aspettato di ottenere lo stesso rientro per la chiamata di funzione che sto ottenendo per la dichiarazione di funzione.
Qualche idea su cosa sto facendo male?
Grazie ma con 'ColumnLimit' 0 non vi è alcun cambiamento nello stile poiché nessuna riga può mai essere considerata troppo grande per aver bisogno di essere interrotta. – Lefteris
Questo ha funzionato davvero per me. "Un limite di colonna pari a 0 significa che non vi è alcun limite di colonne, in questo caso il formato clang rispetterà le decisioni di interruzione di riga all'interno delle istruzioni a meno che non siano in contraddizione con altre regole". http://clang.llvm.org/docs/ClangFormatStyleOptions.html – cs01
C'è una soluzione per questo? Ho anche messo un bug su LLVM riguardo questo problema, perché non posso usare clang-format con questo bug orribile: https://bugs.llvm.org/show_bug.cgi?id=35968 – Taw