c++ - 如何控制链式方法调用的 clang 格式缩进?

标签 c++ indentation clang-format

我希望结果如下所示:

auto foo = FooBuilder()
    .WithSomething()
    .WithSomethingElse()
    .Build();

而是 clang-format格式如下:
auto foo = FooBuilder()
               .WithSomething()
               .WithSomethingElse()
               .Build();

我希望链接的调用相对于前一行的开头缩进,而不是相对于 FooBuilder()称呼。我在 clang-format 中没有看到任何内容控制这一点的选项。设置 ContinuationIndentWidth没有帮助。有任何想法吗?

最佳答案

不幸的是,这似乎是 不可能。 我发现影响这一点的唯一选项是 ContinuationIndentWidth ,正如您所说,这不会做您想做的事情。
我个人会做的是使用以下正则表达式来查找已分解的链式方法调用:\)\s+\.它将匹配一个右括号、1 个或多个空白字符(但不是 0)和一个句点。您可能没有太多这样的实例,因此您可以手动修复它们,然后为这些行禁用 clang-format 以便将来不用管它:

// clang-format off

auto friggin_cool_object = SuperCoolBuilder().do_what_i_want()
    .figure()
    .out()
    .the()
    .params()
    .too();

// clang-format on

关于c++ - 如何控制链式方法调用的 clang 格式缩进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779985/

相关文章:

c++ - RawStringFormats 和 Delimeters 'pb' 在 clang 格式中的含义

Laravel 之刃 : New line appends space to former echo

html - 没有缩进的列表?

c++ - 堆栈上的可变大小对象

变量重新分配中的 C++11 内存释放

将循环语句添加到现有代码时的 Python 缩进

c++ - 如何使 clang-format 尊重 "table-like"代码格式

c++ - 如何告诉 clang-format 在二元运算符之间保持空白

c++ - 使用 strtok 查找子字符串

c++ - 使用静态成员时出现链接器错误