2015-04-07 116 views
1

如果單個或多個字符超過溢出,是否有強制參數和參數爲單行的方法?clang-format:強制參數和參數爲一行 - 如果語句溢出,則每個參數都爲

例如:

例如,這樣的:

if(value != "course" || value != "module" || value != "lesson" 
) 

應該是這樣的:

if(value != "course" || 
    value != "module" || 
    value != "lesson") 

或者這樣:

if(value != "course" 
|| value != "module" 
|| value != "lesson") 

而且這樣的:

void some_class::some_func(const std:string s, const std::string t 
) 

應該是這樣的:

void some_class::some_func(const std:string s, 
          const std::string t) 

或者這樣:

void some_class::some_func(const std:string s 
          , const std::string t) 

編輯:

My .clang-format

#http://clang.llvm.org/docs/ClangFormatStyleOptions.html 

# The style used for all options not specifically set in the configuration. 
# This option is supported only in the clang-format configuration (both within -style='{...}' and the .clang-format file). 
# LLVM A style complying with the LLVM coding standards 
# Google A style complying with Google’s C++ style guide 
# Chromium A style complying with Chromium’s style guide 
# Mozilla A style complying with Mozilla’s style guide 
# WebKit A style complying with WebKit’s style guide 
#BasedOnStyle: Webkit 

# The extra indent or outdent of access modifiers, e.g. public:. 
AccessModifierOffset: -4 

# If true, horizontally aligns arguments after an open bracket. 
# This applies to round brackets (parentheses), angle brackets and square brackets. This will result in formattings like code someLongFunction(argument1, argument2); endcode 
#AlignAfterOpenBracket: false 

# If true, aligns escaped newlines as far left as possible. Otherwise puts them into the right-most column. 
#AlignEscapedNewlinesLeft 

# If true, horizontally align operands of binary and ternary expressions. 
AlignOperands: true 

# If true, aligns trailing comments. 
AlignTrailingComments: true 

# Allow putting all parameters of a function declaration onto the next line even if BinPackParameters is false. 
AllowAllParametersOfDeclarationOnNextLine: false 

# Allows contracting simple braced statements to a single line. 
# E.g., this allows if (a) { return; } to be put on a single line. 
AllowShortBlocksOnASingleLine: true 

# If true, short case labels will be contracted to a single line. 
AllowShortCaseLabelsOnASingleLine: true 

# Dependent on the value, int f() { return 0; } can be put on a single line. 
# SFS_None (in configuration: None) Never merge functions into a single line. 
# SFS_Inline (in configuration: Inline) Only merge functions defined inside a class. 
# SFS_Empty (in configuration: Empty) Only merge empty functions. 
# SFS_All (in configuration: All) Merge all functions fitting on a single line. 
AllowShortFunctionsOnASingleLine: Inline 

# If true, if (a) return; can be put on a single line. 
#AllowShortIfStatementsOnASingleLine: false 

# If true, while (true) continue; can be put on a single line. 
AllowShortLoopsOnASingleLine: true 

# If true, always break after function definition return types. 
# More truthfully called ‘break before the identifier following the type in a function definition’. PenaltyReturnTypeOnItsOwnLine becomes irrelevant. 
AlwaysBreakAfterDefinitionReturnType: false 

# If true, always break before multiline string literals. 
AlwaysBreakBeforeMultilineStrings: false 

# If true, always break after the template<...> of a template declaration. 
AlwaysBreakTemplateDeclarations: true 

# If false, a function call’s arguments will either be all on the same line or will have one line each. 
BinPackArguments: true 

# If false, a function call’s arguments will either be all 
# on the same line or will have one line each. 
BinPackParameters: true 

# The way to wrap binary operators. 
# BOS_None (in configuration: None) Break after operators. 
# BOS_NonAssignment (in configuration: NonAssignment) Break before operators that aren’t assignments. 
# BOS_All (in configuration: All) Break before operators. 
#BreakBeforeBinaryOperators: None 

# The brace breaking style to use. 
# BS_Attach (in configuration: Attach) Always attach braces to surrounding context. 
# BS_Linux (in configuration: Linux) Like Attach, but break before braces on function, namespace and class definitions. 
# BS_Stroustrup (in configuration: Stroustrup) Like Attach, but break before function definitions, and ‘else’. 
# BS_Allman (in configuration: Allman) Always break before braces. 
# BS_GNU (in configuration: GNU) Always break before braces and add an extra level of indentation to braces of control statements, not to those of class, function or other definitions. 
BreakBeforeBraces: Allman 

# If true, ternary operators will be placed after line breaks. 
BreakBeforeTernaryOperators: true 

# Always break constructor initializers before commas and align the commas with the colon. 
BreakConstructorInitializersBeforeComma: true 

# Always break constructor initializers before commas and align the commas with the colon. 
BreakConstructorInitializersBeforeComma: true 

# The column limit. 
# A column limit of 0 means that there is no column limit. In this case, clang-format will respect the input’s line breaking decisions within statements unless they contradict other rules. 
ColumnLimit: 80 

# A regular expression that describes comments with special meaning, which should not be split into lines or otherwise changed. 
CommentPragmas: "\/*(.*)*\/" 

# If the constructor initializers don’t fit on a line, put each initializer on its own line. 
#ConstructorInitializerAllOnOneLineOrOnePerLine: false 

# The number of characters to use for indentation of constructor initializer lists. 
ConstructorInitializerIndentWidth: 0 

# Indent width for line continuations. 
#ContinuationIndentWidth: 4 

# If true, format braced lists as best suited for C++11 braced lists. 
# Important differences: - No spaces inside the braced list. - No line break before the closing brace. - Indentation with the continuation indent, not with the block indent. 
# Fundamentally, C++11 braced lists are formatted exactly like function calls would be formatted in their place. If the braced list follows a name (e.g. a type or variable name), clang-format formats as if the {} were the parentheses of a function call with that name. If there is no name, a zero-length name is assumed. 
Cpp11BracedListStyle: true 

# If true, analyze the formatted file for the most common alignment of & and *. Point 
#DerivePointerAlignment: false 

# Disables formatting at all. 
#DisableFormat: false 

# If true, clang-format detects whether function calls and definitions are formatted with one parameter per line. 
# Each call can be bin-packed, one-per-line or inconclusive. If it is inconclusive, e.g. completely on one line, but a decision needs to be made, clang-format analyzes whether there are other bin-packed cases in the input file and act accordingly. 
# NOTE: This is an experimental flag, that might go away or be renamed. Do not use this in config files, etc. Use at your own risk. 
#ExperimentalAutoDetectBinPacking: false 

# A vector of macros that should be interpreted as foreach loops instead of as function calls. 
# These are expected to be macros of the form: code FOREACH(<variable-declaration>, ...) <loop-body> endcode 
# For example: BOOST_FOREACH. 
#ForEachMacros (std::vector<std::string>) 

# Indent case labels one level from the switch statement. 
# When false, use the same indentation level as for the switch statement. Switch statement body is always indented one level more than case labels. 
IndentCaseLabels: false 

# The number of columns to use for indentation. 
IndentWidth: 4 

# Indent if a function definition or declaration is wrapped after the type. 
#IndentWrappedFunctionNames: false 

# If true, empty lines at the start of blocks are kept. 
#KeepEmptyLinesAtTheStartOfBlocks: false 

# Language, this format style is targeted at. 
# LK_None (in configuration: None) Do not use. 
# LK_Cpp (in configuration: Cpp) Should be used for C, C++, ObjectiveC, ObjectiveC++. 
# LK_Java (in configuration: Java) Should be used for Java. 
# LK_JavaScript (in configuration: JavaScript) Should be used for JavaScript. 
# LK_Proto (in configuration: Proto) Should be used for Protocol Buffers (https://developers.google.com/protocol-buffers/). 
Language: Cpp 

# The maximum number of consecutive empty lines to keep. 
#MaxEmptyLinesToKeep: 0 

# The indentation used for namespaces. 
# NI_None (in configuration: None) Don’t indent in namespaces. 
# NI_Inner (in configuration: Inner) Indent only in inner namespaces (nested in other namespaces). 
# NI_All (in configuration: All) Indent in all namespaces. 
#NamespaceIndentation: Inner 

# The number of characters to use for indentation of ObjC blocks. 
#ObjCBlockIndentWidth: 4 

# Add a space after @property in Objective-C, i.e. use \@property (readonly) instead of \@property(readonly). 
#ObjCSpaceAfterProperty: false 

# Add a space in front of an Objective-C protocol list, i.e. use Foo <Protocol> instead of Foo<Protocol>. 
#ObjCSpaceBeforeProtocolList: false 

# The penalty for breaking a function call after 「call(」. 
#PenaltyBreakBeforeFirstCallParameter (unsigned) 

# The penalty for each line break introduced inside a comment. 
#PenaltyBreakComment (unsigned) 

# The penalty for breaking before the first <<. 
#PenaltyBreakFirstLessLess (unsigned) 

# The penalty for each line break introduced inside a string literal. 
#PenaltyBreakString (unsigned) 

# The penalty for each character outside of the column limit. 
#PenaltyExcessCharacter (unsigned) 

# Penalty for putting the return type of a function onto its own line. 
#PenaltyReturnTypeOnItsOwnLine (unsigned) 

# If true, analyze the formatted file for the most common alignment of & and *. PointerAlignment is then used only as fallback. 
PointerAlignment: Middle 

# If true, a space may be inserted after C style casts. 
SpaceAfterCStyleCast: false 

# If false, spaces will be removed before assignment operators. 
#SpaceBeforeAssignmentOperators: true 

# Defines in which cases to put a space before opening parentheses. 
# SBPO_Never (in configuration: Never) Never put a space before opening parentheses. 
# SBPO_ControlStatements (in configuration: ControlStatements) Put a space before opening parentheses only after control statement keywords (for/if/while...). 
# SBPO_Always (in configuration: Always) Always put a space before opening parentheses, except when it’s prohibited by the syntax rules (in function-like macro definitions) or when determined by other style rules (after unary operators, opening parentheses, etc.) 
SpaceBeforeParens: Never 

# If true, spaces may be inserted into ‘()’. 
SpaceInEmptyParentheses: false 

# The number of spaces before trailing line comments (// - comments). 
# This does not affect trailing block comments (/**/ - comments) as those commonly have different usage patterns and a number of special cases. 
SpacesBeforeTrailingComments: 1 

# If true, spaces will be inserted after ‘<’ and before ‘>’ in template argument lists 
SpacesInAngles: false 

# If true, spaces may be inserted into C style casts. 
SpacesInCStyleCastParentheses: false 

# If true, spaces are inserted inside container literals (e.g. ObjC and Javascript array and dict literals). 
SpacesInContainerLiterals: false 

# If true, spaces will be inserted after ‘(‘ and before ‘)’. 
SpacesInParentheses: false 

# If true, spaces will be inserted after ‘[‘ and before ‘]’. 
SpacesInSquareBrackets: false 

# Format compatible with this standard, e.g. use A<A<int> > instead of A<A<int>> for LS_Cpp03. 
# LS_Cpp03 (in configuration: Cpp03) Use C++03-compatible syntax. 
# LS_Cpp11 (in configuration: Cpp11) Use features of C++11 (e.g. A<A<int>> instead of A<A<int> >). 
# LS_Auto (in configuration: Auto) Automatic detection based on the input. 
Standard: Cpp11 

# The number of columns used for tab stops. 
#TabWidth: 4 

# The way to use tab characters in the resulting file. 
# UT_Never (in configuration: Never) Never use tab. 
# UT_ForIndentation (in configuration: ForIndentation) Use tabs only for indentation. 
# UT_Always (in configuration: Always) Use tabs whenever we need to fill whitespace that spans at least from one tab stop to the next one. 
UseTab: Never 
+0

請張貼了'.clang-format'和'鐺-​​format'命令,它是給你的這些結果。 – Pradhan

+1

已發佈。如果我知道總是將參數拆分爲一行的命令 - 當語句溢出時,我不會問這是什麼命令? –

回答

1

設置:

BinPackArguments: false 
BinPackParameters: false 

並確保

ExperimentalAutoDetectBinPacking: false 
AllowAllParametersOfDeclarationOnNextLine: false 

或者沒有定義。

0

我有同樣的問題,所以我不會打開另一個話題。 我設置了4個選項,但參數不希望有他自己的行...我發佈我的配置,還有2張照片(實際和預期)。由於

enter image description here enter image description here

Language: Cpp 

IndentWidth: 4 
#AlignAfterOpenBracket: Align 
BreakBeforeBraces: Allman 
IndentCaseLabels: true 
AllowShortBlocksOnASingleLine: false 
AllowShortFunctionsOnASingleLine: None 
AllowShortIfStatementsOnASingleLine: false 
SpaceBeforeAssignmentOperators: true 
AlwaysBreakBeforeMultilineStrings: false 
PointerAlignment: Right 
ColumnLimit: 100 
AccessModifierOffset: -4 
SortIncludes: false 
BinPackArguments: false 
BinPackParameters: false 
ExperimentalAutoDetectBinPacking: false 
AllowAllParametersOfDeclarationOnNextLine: false