This is done in order to improve cases where the lambda's body is moved too far to the right. Consider the following snippet with column limit set to 79:
void f() { leader::MakeThisCallHere(&leader_service_, cq_.get(), [this, liveness](const leader::ReadRecordReq& req, std::function<void()> done) { logger_->HandleReadRecord( req, resp, std::move(done)); }); leader::MakeAnother(&leader_service_, cq_.get(), [this, liveness](const leader::ReadRecordReq& req, std::function<void()> done) { logger_->HandleReadRecord( req, resp, std::move(done), a); }); }
The tool favors extra indentation for the lambda body and so the code incurs extra wrapping and adjacent calls are indented to a different level. I find this behavior annoying and I'd like the tool to favor new lines and, thus, use the extra width.
The fix, reduced, brings the following formatting.
Before:
function(1, [] { DoStuff(); // }, 1);
After:
function( 1, [] { DoStuff(); // }, 1);
Refer to the new tests in FormatTest.cpp
This is the clause that triggers the problem.