clang-format 在有换行符时删除 if 条件中的缩进

clang-format removes indents in if condition when there is a line break

我有这个功能:

bool WS::receive(MB *const buffer) const {
    updateLastPackage();
    if ((!lastPackage_.empty()) &&
            (lastPackage_.size() <= buffer->capacity()) &&
            (lastUpdate_.getTime() <= settings_.refreshPeriod)) {
        buffer->clear();
        (*buffer) << lastPackage_;
        return true;
    }
    return false;
}

在我的样式文件应用 clang-format 后:

bool WS::receive(MB *const buffer) const {
    updateLastPackage();
    if ((!lastPackage_.empty()) &&
    (lastPackage_.size() <= buffer->capacity()) &&
    (lastUpdate_.getTime() <= settings_.refreshPeriod)) {
        buffer->clear();
        (*buffer) << lastPackage_;
        return true;
    }
    return false;
}

你可以看到当有换行符时,clang-format 删除了 if 条件中的缩进。那么,如何保持缩进不变呢?这也发生在模板上。

我的样式文件,基于LLVM: https://pastebin.com/ZDwZfBud

感谢 Unicorn。

解决方案:

AlignOperands: false
ContinuationIndentWidth: 8