为什么 clang-format 会在复杂 lambda 中向函数参数(例如 std::move(widget))添加过多的缩进或换行符?我如何配置它以保持参数内联或减少不必要的中断?
void overlay::remove(std::variant<std::shared_ptr<widget>, std::shared_ptr<label>> &&widget) noexcept {
std::visit([this](auto &&arg) {
std::erase_if(_widgets, [&arg](const auto &existing) {
return existing == arg;
});
},
std::move(widget)); // This line has a excessive amount of identation
}
我的
.clang-format
BasedOnStyle: LLVM
Language: Cpp
UseTab: Never
BreakBeforeBraces: Attach
AllowShortIfStatementsOnASingleLine: true
IndentCaseLabels: false
ColumnLimit: 0
IndentWidth: 2
TabWidth: 2
AlignAfterOpenBracket: BlockIndent
DerivePointerAlignment: False
PointerAlignment: Right
AccessModifierOffset: -2
QualifierAlignment: Left
FixNamespaceComments: False
AllowShortFunctionsOnASingleLine: Inline
BinPackArguments: true
BinPackParameters: true
如何减少压痕?
我也遇到过同样的问题,但永远无法让它发挥作用。但是,我在 GitHub 上发现了有关此问题的错误报告:https://github.com/llvm/llvm-project/issues/56283。
看起来这个问题从未修复过,但这里有更多信息:https://reviews.llvm.org/D129443
(从另一个答案中获取答案:https://stackoverflow.com/a/74109314/16529532) 如果适用,我会避免 clang 格式并使用代码编辑器格式化工具。如果做不到也没关系。