lang式缩进内部初始化程序与延续缩进

时间:2019-01-10 11:26:15

标签: c++ c++11 indentation code-formatting clang-format

我有一些带有clang-format规则的C ++ 11代码,该规则使用4的普通缩进(IndentWidth)和8的连续缩进(ContinuationIndentWidth)。所以长函数看起来像这样的东西:

// All indented "correctly"
void this_function_has_a_very_long_name_and_lots_of_parameters(
        int parameter_a, int parameter_b, int parameter_c)
{
    this_function_has_a_very_long_name_and_lots_of_parameters(
            parameter_a, parameter_b, parameter_c);
}

但是,我也有类似的数据(请注意最后一个逗号,以防止垃圾箱包装并使每行中的内容保持一个-在现实生活中,这些数字不只是1,2,3):

static std::vector<std::vector<int>> data{
    {
        1, // Comment
        2,
        3, // Comment
    },
};

考虑到Cpp11BracedListStyle设置为false,以上是我的预期外观,因此应使用块缩进(4),而不是连续缩进(8)。在clang-format docs中,如果是true

  

“重要区别:-括号列表内没有空格。-无行   在大括号前中断。 -缩进与延续   缩进,而不是块缩进。”

因此,我希望看到使用的“块缩进”(4)。但是,我实际上得到的是:

static std::vector<std::vector<int>> data{
    {
           1, // Comment - indented by 4 + 8!
           2,
           3, // Comment
    },
};

如您所见,“内部”初始化程序列表以8缩进,但外部列表的元素仅以4缩进(如预期)。

如果我将Cpp11BracedListStyle更改为true,则所有级别都缩进8(根据文档的预期):

static std::vector<std::vector<int>> data{
        {
                1,
                2,
                3,
        },
};

如何在不更改代码其他地方使用的8位连续缩进形式的情况下,用clang-format格式化这些列表?

lang格式的版本为7.0.1 (tags/RELEASE_701/final),但根据configurator,此行为在各种版本中似乎是相同的。

应用相关规则的简单.clang-format文件是:

BasedOnStyle: LLVM
BreakBeforeBraces: Allman
ContinuationIndentWidth: 8
ColumnLimit: 72
Cpp11BracedListStyle: false
IndentWidth: 4

0 个答案:

没有答案