【发布时间】:2020-04-04 17:32:29
【问题描述】:
我正在使用 clang 格式自动执行编码风格。一切格式正确,除了一个不需要的工件。我的 .clang-format 配置文件的简化版本是:
ColumnLimit: 120
Cpp11BracedListStyle: false
IndentWidth: 4
Standard: Auto
TabWidth: 4
UseTab: ForIndentation
格式化后有问题的代码是:
static struct option long_options[] = { { "str1", no_argument, NULL, 'h' },
{ "str2", no_argument, NULL, 'v' },
{ "str3", required_argument, NULL, 's' },
{ NULL, 0, NULL, 0 } };
在 Stackoverflow 上很难显示,但这是使用 8 列选项卡显示的方式。所有空格都是空格,除了第一个字符,它是一个制表符(但在这里显示为 8 个空格)。所以:
static struct option long_options[] = { { "str1", no_argument, NULL, 'h' },
<__tab_> { "str2", no_argument, NULL, 'v' },
<__tab_> { "str3", required_argument, NULL, 's' },
<__tab_> { NULL, 0, NULL, 0 } };
这不是我正在寻找的格式。显示 4 列选项卡给出了我期望的输出:
static struct option long_options[] = { { "str1", no_argument, NULL, 'h' },
<tb> { "str2", no_argument, NULL, 'v' },
<tb> { "str3", required_argument, NULL, 's' },
<tb> { NULL, 0, NULL, 0 } };
不过,我觉得根本不应该有tab,对齐应该只用空格来完成,防止整个显示tab大小的问题。
如何设置 clang-format 来解决这个问题?
【问题讨论】:
-
IndentWidth:4和TabWidth:4在开头正好有一个标签是我所期望的。 -
如果你不需要标签,你必须指定
UseTab: Never -
澄清一下:我实际上想要用于缩进的制表符和用于对齐的空格。在我看来,这段代码应该不包含缩进,只包含对齐。我错了吗?
-
@AartStuurman 是的,因为结构初始化分布在多行上,所以除了第一行之外的所有行都将缩进。
-
@AartStuurman 我已经查看了选项,但乍一看我找不到这方面的东西。
标签: c clang-format