当列超出时,clang-format 强制每个参数/参数占一行?

rya*_*zec 7 c++ clang-format

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

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

SDL_SetRenderDrawColor(renderer,153 + floor(toGreenRed * percentage),51 + floor(toGreenGreen * percentage),51 + floor(toGreenBlue * percentage),255);
Run Code Online (Sandbox Code Playgroud)

格式化成这个:

SDL_SetRenderDrawColor(renderer,
  153 + floor(toGreenRed * percentage),
  51 + floor(toGreenGreen * percentage),
  51 + floor(toGreenBlue * percentage),
  255);
Run Code Online (Sandbox Code Playgroud)

但我想要这个:

SDL_SetRenderDrawColor(
  renderer,
  153 + floor(toGreenRed * percentage),
  51 + floor(toGreenGreen * percentage),
  51 + floor(toGreenBlue * percentage),
  255
);
Run Code Online (Sandbox Code Playgroud)

目前还有这个:

void renderHealthBox( SDL_Renderer *renderer, int sideUiWidth, int yOffset, float percentage, float laksjdlkajsdlkasjdlkasjd) {
Run Code Online (Sandbox Code Playgroud)

格式为:

void renderHealthBox(
  SDL_Renderer *renderer, int sideUiWidth, int yOffset, float percentage, float laksjdlkajsdlkasjdlkasjd) {
Run Code Online (Sandbox Code Playgroud)

但是我想要:

void renderHealthBox(
  SDL_Renderer *renderer, 
  int sideUiWidth, 
  int yOffset, 
  float percentage, 
  float laksjdlkajsdlkasjdlkasjd
) {
Run Code Online (Sandbox Code Playgroud)

我正在寻找可能的 clang-format 吗?

我目前的配置是:

Language: Cpp
IndentWidth: 2
ObjCBlockIndentWidth: 2
ContinuationIndentWidth: 2
ColumnLimit: 120
BinPackArguments: false
BinPackParameters: false
AlignAfterOpenBracket: DontAlign
IndentCaseLabels: true
Run Code Online (Sandbox Code Playgroud)

Gor*_*gar 5

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

\n\n
\n

BAS_AlwaysBreak(在配置中:)AlwaysBreak如果参数 don\xe2\x80\x99t 适合单行,则始终在左括号后中断

\n
\n\n
\n\n

例子:

\n\n

.clang-format

\n\n
Language: Cpp\nIndentWidth: 2\nObjCBlockIndentWidth: 2\nContinuationIndentWidth: 2\nColumnLimit: 120\nBinPackArguments: false\nBinPackParameters: false\nAlignAfterOpenBracket: AlwaysBreak\nIndentCaseLabels: true\nAllowAllParametersOfDeclarationOnNextLine: false\n
Run Code Online (Sandbox Code Playgroud)\n\n

test.cpp

\n\n
void renderHealthBox(SDL_Renderer *renderer, int sideUiWidth, int yOffset, float percentage, float laksjdlkajsdlkasjdlkasjd) {\n}\n\nint main()\n{\n    SDL_SetRenderDrawColor(renderer,153 + floor(toGreenRed * percentage),51 + floor(toGreenGreen * percentage),51 + floor(toGreenBlue * percentage),255);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

$ clang-format test.cpp

\n\n
void renderHealthBox(\n  SDL_Renderer *renderer,\n  int sideUiWidth,\n  int yOffset,\n  float percentage,\n  float laksjdlkajsdlkasjdlkasjd) {}\n\nint main() {\n  SDL_SetRenderDrawColor(\n    renderer,\n    153 + floor(toGreenRed * percentage),\n    51 + floor(toGreenGreen * percentage),\n    51 + floor(toGreenBlue * percentage),\n    255);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n