【问题标题】:Clang format unwanted indentationClang 格式不需要的缩进
【发布时间】: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:4TabWidth:4 在开头正好有一个标签是我所期望的。
  • 如果你不需要标签,你必须指定UseTab: Never
  • 澄清一下:我实际上想要用于缩进的制表符和用于对齐的空格。在我看来,这段代码应该不包含缩进,只包含对齐。我错了吗?
  • @AartStuurman 是的,因为结构初始化分布在多行上,所以除了第一行之外的所有行都将缩进。
  • @AartStuurman 我已经查看了选项,但乍一看我找不到这方面的东西。

标签: c clang-format


【解决方案1】:

我的解决方案是使用Cpp11BracedListStyle: trueUseTab: ForIndentation。这稍微改变了花括号列表的外观,但在对齐它们时会强制使用空格。

【讨论】:

    猜你喜欢
    • 2020-02-02
    • 2020-04-03
    • 1970-01-01
    • 2021-04-15
    • 2021-11-07
    • 2021-04-28
    • 2014-08-20
    • 2011-05-17
    • 2017-02-08
    相关资源
    最近更新 更多