当超出列时,clang格式强制每个参数/参数拥有自己的行?

clang-format force each argument / parameter to own line when column exceeded?

本文关键字:参数 拥有 自己的 格式 clang      更新时间:2023-10-16

我正在尝试弄清楚是否可以使用 clang 格式以我正在寻找的方式获取参数/参数。

我已经尝试了很多事情,但到目前为止我只能得到这个:

SDL_SetRenderDrawColor(renderer,153 + floor(toGreenRed * percentage),51 + floor(toGreenGreen * percentage),51 + floor(toGreenBlue * percentage),255);

要格式化为:

SDL_SetRenderDrawColor(renderer,
153 + floor(toGreenRed * percentage),
51 + floor(toGreenGreen * percentage),
51 + floor(toGreenBlue * percentage),
255);

但我想要这个:

SDL_SetRenderDrawColor(
renderer,
153 + floor(toGreenRed * percentage),
51 + floor(toGreenGreen * percentage),
51 + floor(toGreenBlue * percentage),
255
);

目前还有这个:

void renderHealthBox( SDL_Renderer *renderer, int sideUiWidth, int yOffset, float percentage, float laksjdlkajsdlkasjdlkasjd) {

格式为:

void renderHealthBox(
SDL_Renderer *renderer, int sideUiWidth, int yOffset, float percentage, float laksjdlkajsdlkasjdlkasjd) {

但是我想要:

void renderHealthBox(
SDL_Renderer *renderer, 
int sideUiWidth, 
int yOffset, 
float percentage, 
float laksjdlkajsdlkasjdlkasjd
) {

我正在寻找的 clang 格式可能吗?

我目前的配置是:

Language: Cpp
IndentWidth: 2
ObjCBlockIndentWidth: 2
ContinuationIndentWidth: 2
ColumnLimit: 120
BinPackArguments: false
BinPackParameters: false
AlignAfterOpenBracket: DontAlign
IndentCaseLabels: true

这个配置足够好吗?这是基于@hit的评论,但我不认为这个问题是另一个问题的重复。它的主要部分是AlignAfterOpenBracket: AlwaysBreak.来自 clang 格式的文档:

BAS_AlwaysBreak(在配置中:AlwaysBreak(如果参数不适合一行,则始终在开括号后中断


例:

.clang-format

Language: Cpp
IndentWidth: 2
ObjCBlockIndentWidth: 2
ContinuationIndentWidth: 2
ColumnLimit: 120
BinPackArguments: false
BinPackParameters: false
AlignAfterOpenBracket: AlwaysBreak
IndentCaseLabels: true
AllowAllParametersOfDeclarationOnNextLine: false

test.cpp

void renderHealthBox(SDL_Renderer *renderer, int sideUiWidth, int yOffset, float percentage, float laksjdlkajsdlkasjdlkasjd) {
}
int main()
{
SDL_SetRenderDrawColor(renderer,153 + floor(toGreenRed * percentage),51 + floor(toGreenGreen * percentage),51 + floor(toGreenBlue * percentage),255);
}

$ clang-format test.cpp

void renderHealthBox(
SDL_Renderer *renderer,
int sideUiWidth,
int yOffset,
float percentage,
float laksjdlkajsdlkasjdlkasjd) {}
int main() {
SDL_SetRenderDrawColor(
renderer,
153 + floor(toGreenRed * percentage),
51 + floor(toGreenGreen * percentage),
51 + floor(toGreenBlue * percentage),
255);
}

与所需格式的唯一区别是右括号不在自己的行上。我认为这是一个有点奇怪的要求,所以我认为不可能用clang-format来实现。