防止clang格式在 - >处打破一行操作者

时间:2017-06-20 16:25:30

标签: c++ clang-format

以下文件test.cpp

int func() {
   aaaaaaaaaaa = bbbbbbbb->cccccc(SomeNamespace::Function(dddddddd?"eeeeeeeee":"fffffffffff")).gggggggggg();
}

采用以下方式clang-format格式化(我尝试了不同的样式):

$ for s in LLVM Google Chromium Mozilla WebKit; do clang-format -style="{BasedOnStyle: $s, ColumnLimit: 80}" test.cpp; done
int func() {
  aaaaaaaaaaa = bbbbbbbb
                    ->cccccc(SomeNamespace::Function(dddddddd ? "eeeeeeeee"
                                                              : "fffffffffff"))
                    .gggggggggg();
}
int func() {
  aaaaaaaaaaa = bbbbbbbb
                    ->cccccc(SomeNamespace::Function(dddddddd ? "eeeeeeeee"
                                                              : "fffffffffff"))
                    .gggggggggg();
}
int func() {
  aaaaaaaaaaa = bbbbbbbb
                    ->cccccc(SomeNamespace::Function(dddddddd ? "eeeeeeeee"
                                                              : "fffffffffff"))
                    .gggggggggg();
}
int
func()
{
  aaaaaaaaaaa =
    bbbbbbbb
      ->cccccc(SomeNamespace::Function(dddddddd ? "eeeeeeeee" : "fffffffffff"))
      .gggggggggg();
}
int func()
{
    aaaaaaaaaaa = bbbbbbbb
                      ->cccccc(SomeNamespace::Function(
                          dddddddd ? "eeeeeeeee" : "fffffffffff"))
                      .gggggggggg();
}

我想知道是否有一个选项可以阻止clang-format->运算符处违反该行。

1 个答案:

答案 0 :(得分:1)

似乎没有任何选项仅影响list of clang-format options中的operator->,但您始终可以针对违规行停用clang-format

int func() {
   // clang-format off
   aaaaaaaaaaa = bbbbbbbb->cccccc(SomeNamespace::Function(dddddddd?"eeeeeeeee":"fffffffffff")).gggggggggg();
   // clang-format on
}

这会完全禁用格式化,因此如果需要其他格式规则,则可能需要进行一些手动干预。