我如何获得 clang-format 以将大括号初始化构造的参数放在同一行?
How can I get clang-format to put the parameters of a brace-initialized construction on the same line?
我是 运行 clang-format
,有一个 .clang-format
文件,它只指定 Language: Cpp
在此输入上(无效的 C++,但这并不重要):
const auto SOME_VARIABLE_NAME = {{"key", { {"key2", std::array{ 0, 0, 0, 0, }}, }}};
我得到这个输出:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2",
std::array{
0,
0,
0,
0,
}},
}}};
我想要更接近于以下输出:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2",
std::array{0, 0, 0, 0}},
}}};
我不确定为什么 clang-format 在第 50 列周围的每个 0
之后放置一个换行符。
我应该在 .clang-format
中添加什么设置才能实现此目的?
我尝试了一些我认为可能相关的说明符,但无济于事:
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortFunctionsOnASingleLine: true
BinPackParameters: true
BreakBeforeBinaryOperators: false
ColumnLimit: 120
ConstructorInitializerAllOnOneLineOrOnePerLine: true
Cpp11BracedListStyle: false
IndentFunctionDeclarationAfterType: true
PenaltyBreakBeforeFirstCallParameter: 1000
Standard: Cpp11
编辑:仍然有这个问题。在第一个大括号之后添加了注释,以至少将大括号强制向左移动:
const auto SOME_VARIABLE_NAME = { //
{"key",
{
{"key2",
std::array{
0,
0,
0,
0,
}},
}}};
问题出在右大括号之前的尾随逗号上。结尾的逗号(在 c++
中是可选的)告诉 clang-format
将每个元素放在单独的行中。不知道这个约定从何而来,好像也不是documented。在你的情况下,它似乎妨碍了。
如果您只删除最后一个“0”后的逗号,则默认 clang-format
设置会产生以下结果:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2", std::array{0, 0, 0, 0}},
}}};
...这与您的要求不完全相同,但非常接近。
我是 运行 clang-format
,有一个 .clang-format
文件,它只指定 Language: Cpp
在此输入上(无效的 C++,但这并不重要):
const auto SOME_VARIABLE_NAME = {{"key", { {"key2", std::array{ 0, 0, 0, 0, }}, }}};
我得到这个输出:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2",
std::array{
0,
0,
0,
0,
}},
}}};
我想要更接近于以下输出:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2",
std::array{0, 0, 0, 0}},
}}};
我不确定为什么 clang-format 在第 50 列周围的每个 0
之后放置一个换行符。
我应该在 .clang-format
中添加什么设置才能实现此目的?
我尝试了一些我认为可能相关的说明符,但无济于事:
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortFunctionsOnASingleLine: true
BinPackParameters: true
BreakBeforeBinaryOperators: false
ColumnLimit: 120
ConstructorInitializerAllOnOneLineOrOnePerLine: true
Cpp11BracedListStyle: false
IndentFunctionDeclarationAfterType: true
PenaltyBreakBeforeFirstCallParameter: 1000
Standard: Cpp11
编辑:仍然有这个问题。在第一个大括号之后添加了注释,以至少将大括号强制向左移动:
const auto SOME_VARIABLE_NAME = { //
{"key",
{
{"key2",
std::array{
0,
0,
0,
0,
}},
}}};
问题出在右大括号之前的尾随逗号上。结尾的逗号(在 c++
中是可选的)告诉 clang-format
将每个元素放在单独的行中。不知道这个约定从何而来,好像也不是documented。在你的情况下,它似乎妨碍了。
如果您只删除最后一个“0”后的逗号,则默认 clang-format
设置会产生以下结果:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2", std::array{0, 0, 0, 0}},
}}};
...这与您的要求不完全相同,但非常接近。