c++ - 如何在 clang 格式的新行中控制 lessless 的对齐方式

标签 c++ clang-format

clang-format 默认格式化如下代码:

void func() {
  return some_func(some_variables)
         << "aaaaaaaaaaaaaaasssssssssssssssaaaaaaaaaaaaaaaaaa"
         << "asdaaasssssssss";
}

但是,我希望 clang-format 可以对齐 <<默认缩进宽度(8 个空格),例如

void func() {
  return some_func(some_variables)
          << "aaaaaaaaaaaaaaasssssssssssssssaaaaaaaaaaaaaaaaaa"
          << "asdaaasssssssss";
}

我该怎么做?

最佳答案

clang 格式 AlignOperands在这种情况下选项是相关的。这是来自 doc 的描述:

AlignOperands (bool)
If true, horizontally align operands of binary and ternary expressions.
Specifically, this aligns operands of a single expression that needs to be split over multiple lines.

AlignOperands 的默认值选项是 false .在您的示例中,clang-format 的结果是 <<some_func 对齐, 就好像 AlignOperands设置为 true :

void func() {
  return some_func(some_variables)
         << "aaaaaaaaaaaaaaasssssssssssssssaaaaaaaaaaaaaaaaaa"
         << "asdaaasssssssss";
}

如果未明确设置,此选项可能由某些预定义样式设置,例如 LLVM 样式 (--style=llvm)。

拥有 <<根据定义的缩进级别缩进,确保 AlignOperands设置为 false .例如,对于 IndentWidth: 4 ,预期结果将是:

void func() {
    return some_func(some_variables)
        << "aaaaaaaaaaaaaaasssssssssssssssaaaaaaaaaaaaaaaaaa"
        << "asdaaasssssssss";
}

最新的 clang 格式 AFAICT 无法实现预期结果的精确对齐,其中第 2 行缩进 2 个空格,第 3 行和第 4 行缩进 8 个空格。

关于c++ - 如何在 clang 格式的新行中控制 lessless 的对齐方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49955660/

相关文章:

c++ - C++中套接字上的 Protocol Buffer

clang-format - 防止 clang-format 缩进 lambdas

c++ - clang-format:在 lambda 函数和外部 block 的大括号之前中断

c++ - 数学表达式中奇怪的 clang 格式

c++ - 可移植分支预测提示

c++ - OpenCV 级联分类器加载错误 iOS

c++ - LLVM 存储操作数必须是指针

c++ - 将 cv::Points2f 的 vector 与 cv::Matx33f 相乘

c++ - 使用 clang 格式缩进预处理器指令