Clang 格式过多的标识

问题描述 投票:0回答:1

为什么 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

如何减少压痕?

c++ clang clang-format
1个回答
0
投票

我也遇到过同样的问题,但永远无法让它发挥作用。但是,我在 GitHub 上发现了有关此问题的错误报告:https://github.com/llvm/llvm-project/issues/56283

看起来这个问题从未修复过,但这里有更多信息:https://reviews.llvm.org/D129443

(从另一个答案中获取答案:https://stackoverflow.com/a/74109314/16529532) 如果适用,我会避免 clang 格式并使用代码编辑器格式化工具。如果做不到也没关系。

© www.soinside.com 2019 - 2024. All rights reserved.