Clang-format删除带有指示符的数组定义中的新行



我喜欢在可能的情况下用指示符定义数组值:

enum Mode {
    NONE,
    SPLIT_FILES,
    SINGLE_FILE,
    INVALID
};
const std::string ModeName[] = {
    [NONE] = "NONE",
    [SPLIT_FILES] = "SPLIT_FILES",
    [SINGLE_FILE] = "SINGLE_FILE",
    [INVALID] = "INVALID"
};

通过clang-format(3.5)运行此操作会使新行变乱,使其可读性降低:

enum RecorderMode { REC_NONE, REC_SPLIT_FILES, REC_SINGLE_FILE, REC_INVALID };
const std::string RecorderModeName[]
    = {[REC_NONE] = "NONE", [REC_SPLIT_FILES] = "SPLIT_FILES", [REC_SINGLE_FILE] = "SINGLE_FILE",
       [REC_INVALID] = "INVALID" };

数组定义有几个问题:= {被移动到下一行。如果在最后一个数组项后面添加逗号,则行缩进两次。

是否有一种方法可以保留新行和缩进,除了使用clang-format关闭注释?

这显示了enum的解决方案(在最后一个常量之后添加逗号,或者在逗号之后添加尾随注释),但它似乎不适用于数组。

这个答案给了我一个可以接受的变通方法:

设置"ColumnLimit"为"0"。这样做的代价是不会自动换行,但这是值得的。无论如何,所有工作中的程序员都倾向于不写超过120栏的内容。

每行加注释也可以。

enum Mode {
  NONE,         // Comments
  SPLIT_FILES,  // On
  SINGLE_FILE,  // Every
  INVALID       // Line
};

最新更新