clang-format:如何对齐结构初始化列表
clang-format: How to align list of struct inits
我有一个结构数组:
(假设标识符在其他地方是 #define
d...)
typedef struct
{
int a;
char id[2+1];
} T;
const T T_list[] = {
{ PRIO_HOUSE, "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }
// ...
}
我想要 clang-format 格式化成这样:
const T T_list[] = {
{ PRIO_HOUSE , "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }
// ...
}
可能吗?
我已经阅读了文档,但在这方面我没有找到任何有用的东西。
https://clang.llvm.org/docs/ClangFormatStyleOptions.html
这是我的.clang-format
---
BasedOnStyle: WebKit
BreakBeforeBraces: Allman
BraceWrapping:
AfterEnum: false
IndentCaseLabels: 'true'
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignEscapedNewlines: 'true'
AlignTrailingComments: 'true'
AllowShortFunctionsOnASingleLine: 'false'
#...
没有。 clang-format
不能这样做。
我的做法是:
- 使用第三方工具对齐
- 格式化区域前放:
//clang-format off
- 在格式化区域后放:
//clang-format on
如果您想要垂直对齐,则可以在使用初始化列表时使用尾随逗号来实现。
之前
const T T_list[] = { { PRIO_HOUSE, "HI" }, { PRIO_SOMETHING_ELSE, "WO" } };
之后
const T T_list[] = {
{ PRIO_HOUSE, "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }, // <-- notice the comma here
};
如果您还想对齐声明,我不确定您会怎么做。但尾随逗号是第 1 步。
从 clang-format 版本 13 (2021) 开始,有一个新的 AlignArrayOfStructures
选项可以做到这一点。从问题中链接的现在更新的文档中:
AlignArrayOfStructures (ArrayInitializerAlignmentStyle)
clang-format 13
if not None, when using initialization for an array of structs aligns the >fields into columns.
以及 AlignArrayOfStructures: Left
的示例:
struct test demo[] =
{
{56, 23, "hello"},
{-1, 93463, "world"},
{7, 5, "!!" }
};
我有一个结构数组:
(假设标识符在其他地方是 #define
d...)
typedef struct
{
int a;
char id[2+1];
} T;
const T T_list[] = {
{ PRIO_HOUSE, "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }
// ...
}
我想要 clang-format 格式化成这样:
const T T_list[] = {
{ PRIO_HOUSE , "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }
// ...
}
可能吗?
我已经阅读了文档,但在这方面我没有找到任何有用的东西。 https://clang.llvm.org/docs/ClangFormatStyleOptions.html
这是我的.clang-format
---
BasedOnStyle: WebKit
BreakBeforeBraces: Allman
BraceWrapping:
AfterEnum: false
IndentCaseLabels: 'true'
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignEscapedNewlines: 'true'
AlignTrailingComments: 'true'
AllowShortFunctionsOnASingleLine: 'false'
#...
没有。 clang-format
不能这样做。
我的做法是:
- 使用第三方工具对齐
- 格式化区域前放:
//clang-format off
- 在格式化区域后放:
//clang-format on
如果您想要垂直对齐,则可以在使用初始化列表时使用尾随逗号来实现。
之前
const T T_list[] = { { PRIO_HOUSE, "HI" }, { PRIO_SOMETHING_ELSE, "WO" } };
之后
const T T_list[] = {
{ PRIO_HOUSE, "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }, // <-- notice the comma here
};
如果您还想对齐声明,我不确定您会怎么做。但尾随逗号是第 1 步。
从 clang-format 版本 13 (2021) 开始,有一个新的 AlignArrayOfStructures
选项可以做到这一点。从问题中链接的现在更新的文档中:
AlignArrayOfStructures (ArrayInitializerAlignmentStyle)
clang-format 13
if not None, when using initialization for an array of structs aligns the >fields into columns.
以及 AlignArrayOfStructures: Left
的示例:
struct test demo[] = { {56, 23, "hello"}, {-1, 93463, "world"}, {7, 5, "!!" } };