如何控制链接方法调用的clang-format缩进
How to control clang-format indentation of chained method calls?
我想让结果看起来像这样:
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
发现使用clang-format选项PenaltyIndentedWhitespace
的hack。增加这个惩罚会像这样重新格式化你的核心:
auto foo =
FooBuilder()
.WithSomething()
.WithSomethingElse()
.Build();
这不是你最初想要的,但是缩进并不取决于auto foo =
的行长。
对我来说设置PenaltyIndentedWhitespace: 1
是有效的
相关文章:
- 在c++中多次调用方法
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 接收字符串并使用它来调用方法C++
- 使用 gmock c++ 在真实对象上调用方法
- 不带预处理器的调用方法/文件的文件名/行号
- JNI从Android调用C++方法
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- 从内部类中的方法从包含类调用方法
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- 为什么派生类的实例从基类调用方法?
- 实例化对象并调用方法,使用单行语法在 C# 或 C++ 中返回值?
- C++当您取消引用指向类对象的指针,然后将其作为引用返回时,是否可以对此引用调用方法
- 通过模板函数对未知类型调用方法
- 从基于迭代器的for循环转换后,如何在map::find()中调用方法
- 创建一个C++DLL以从C#DLL调用方法
- 如何从qt中的类中调用方法
- 如何在不迭代的情况下对数组中的每个元素调用方法
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- C ++:如何在不创建对象的情况下在主函数中调用方法