我如何获得 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 中添加什么设置才能实现此目的?

我尝试了一些我认为可能相关的说明符,但无济于事:

编辑:仍然有这个问题。在第一个大括号之后添加了注释,以至少将大括号强制向左移动:

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}},
                                  }}};

...这与您的要求不完全相同,但非常接近。