如何以 clang 格式包装结构初始值设定项?
How to wrap struct initializer in clang-format?
在 clang-format 运行之前以这个例子为例:
struct ApplicationState app_state = {
.signal = {
.use_crash_handler = true,
.use_abort_handler = true,
},
.exit_code_on_error = {
.python = 0,
}
};
在运行之后,clang-format应用如下:
struct ApplicationState app_state = {.signal =
{
.use_crash_handler = true,
.use_abort_handler = true,
},
.exit_code_on_error = {
.python = 0,
}};
有没有办法在大括号之后、结构成员之前添加一个换行符,使其更像第一个示例而不是第二个示例?
您需要的主要内容是:
BreakBeforeBinaryOperators: All
您可以改为将整体样式设置为 WebKit
,因为这样会将 BreakBeforeBinaryOperators
设置为 All
。
显然,clang-format 必须将 .
视为二元运算符。我不确定它是否应该,但它似乎就是这样做的。
我用 clang-format 6.0.0 测试了这个。大概较新的版本会工作相同,但我没有测试过所以我不能确定。
目前 clang-format
没有有效的方法来控制这个 (从版本 11.0 开始)。
虽然 BreakBeforeBinaryOperators: All
会强制换行(请参阅@eric-backus 的回答),但它也会影响许多其他地方的格式,与结构声明无关。
您可以但是,只需使用尾随逗号即可解决此问题。
之前:
struct ApplicationState app_state = {.signal =
{
.use_crash_handler = true,
.use_abort_handler = true,
},
.exit_code_on_error = {
.python = 0,
}};
之后:
struct ApplicationState app_state = {
.signal = {
.use_crash_handler = true,
.use_abort_handler = true,
},
.exit_code_on_error = {
.python = 0,
},
};
/* ^ notice trailing comma on the second last line! */
在 clang-format 运行之前以这个例子为例:
struct ApplicationState app_state = {
.signal = {
.use_crash_handler = true,
.use_abort_handler = true,
},
.exit_code_on_error = {
.python = 0,
}
};
在运行之后,clang-format应用如下:
struct ApplicationState app_state = {.signal =
{
.use_crash_handler = true,
.use_abort_handler = true,
},
.exit_code_on_error = {
.python = 0,
}};
有没有办法在大括号之后、结构成员之前添加一个换行符,使其更像第一个示例而不是第二个示例?
您需要的主要内容是:
BreakBeforeBinaryOperators: All
您可以改为将整体样式设置为 WebKit
,因为这样会将 BreakBeforeBinaryOperators
设置为 All
。
显然,clang-format 必须将 .
视为二元运算符。我不确定它是否应该,但它似乎就是这样做的。
我用 clang-format 6.0.0 测试了这个。大概较新的版本会工作相同,但我没有测试过所以我不能确定。
目前 clang-format
没有有效的方法来控制这个 (从版本 11.0 开始)。
虽然 BreakBeforeBinaryOperators: All
会强制换行(请参阅@eric-backus 的回答),但它也会影响许多其他地方的格式,与结构声明无关。
您可以但是,只需使用尾随逗号即可解决此问题。
之前:
struct ApplicationState app_state = {.signal =
{
.use_crash_handler = true,
.use_abort_handler = true,
},
.exit_code_on_error = {
.python = 0,
}};
之后:
struct ApplicationState app_state = {
.signal = {
.use_crash_handler = true,
.use_abort_handler = true,
},
.exit_code_on_error = {
.python = 0,
},
};
/* ^ notice trailing comma on the second last line! */