2015-10-12 1 views
2

, что лязг формат делает:предотвратить лязг-формат с отступом лямбды

QObject::connect(&w, &sap::Window::keyPress, [&w](auto* event) 
       { 
        if(event->key() == Qt::Key_Escape) 
         w.close(); 
       }); 

, что я хочу:

QObject::connect(&w, &sap::Window::keyPress, [&w](auto* event) 
{ 
    if(event->key() == Qt::Key_Escape) 
    w.close(); 
}); 

есть способ я могу сделать лязг-формат не отступа лямбда тела? ничего не может найти в документации.

это то, что я до сих пор:

BasedOnStyle: LLVM, 
BreakBeforeBraces: Allman, 
NamespaceIndentation: All, 
SpaceBeforeParens: Never, 
AccessModifierOffset: -4, 

AllowShortIfStatementsOnASingleLine: false, 
AllowShortBlocksOnASingleLine: false, 
AllowShortFunctionsOnASingleLine: None, 
AllowShortCaseLabelsOnASingleLine: false, 
AllowShortLoopsOnASingleLine: false, 

ColumnLimit: 100, 
AlwaysBreakTemplateDeclarations: true, 
PenaltyReturnTypeOnItsOwnLine: 9999, 
IndentWidth: 4, 
PointerAlignment: Left 

ответ

1

версии на clang-format вы используете?

конфигурации по умолчанию в последней версии (v3.9.0 или v 3.8.0) делает почти то, что вы хотите:

QObject::connect(&w, &sap::Window::keyPress, [&w](auto *event) { 
    if (event->key() == Qt::Key_Escape) 
    w.close(); 
}); 

вы можете попробовать его в Интернете: http://zed0.co.uk/clang-format-configurator/

, но и для более длинных пакетов аргументов, конфигурации по умолчанию возвращает :

QObject::connect(sender, &sap::ClassName::signalName, receiver, 
       &sap::OtherClass::slotFunc, 
       [this](auto dummy, const auto* event) { 
        if (event->key() == Qt::Key_Escape) 
         doStuff(); 
       }); 

по .clang-format, как это:

BasedOnStyle: LLVM 
IndentWidth: 4 
ColumnLimit: 80 
Language:  Cpp 

AlignAfterOpenBracket: AlwaysBreak 
BinPackArguments:  false 
BinPackParameters:  false 

PointerAlignment:  Left 

вы получите:

QObject::connect(&w, &sap::Window::keyPress, [&w](auto* event) { 
    if (event->key() == Qt::Key_Escape) 
     w.close(); 
}); 

QObject::connect(
    sender, 
    &sap::ClassName::signalName, 
    receiver, 
    &sap::OtherClass::slotFunc, 
    [this](auto dummy, const auto* event) { 
     if (event->key() == Qt::Key_Escape) 
      doStuff(); 
    }); 

на данный момент, BraceWrapping не имеет никакого специального элемента для лямбды.