【问题标题】:Can clang-format align a block of #defines for me?clang-format 可以为我对齐一个#defines 块吗?
【发布时间】:2016-07-27 17:53:47
【问题描述】:

我有一个包含这样一些行的源文件;

#define ARC_V2_LP_START         0x002
#define ARC_V2_LP_END           0x003
#define ARC_V2_STATUS32         0x00a

所有值都很好地对齐。不幸的是,clang-format 会这样做;

#define ARC_V2_LP_START 0x002
#define ARC_V2_LP_END 0x003
#define ARC_V2_STATUS32 0x00a

我找到了 AlignConsecutiveDeclarations 和 AlignConsecutiveAssignments 选项,但没有任何东西可以对齐连续的#defines。可以这样做吗?

【问题讨论】:

  • 好像没有这个选项。我目前正在努力将其添加为新样式选项 AlignConsecutiveMacros。您可以在我的 fork github.com/eriknyquist/clang/tree/align_defines 上看到它(我不会发布指向该提交的直接链接,因为我会不断修改它。只需查看提交列表并选择最新的)
  • 您打算提交拉取请求吗?看起来对我很有用!
  • @ErikNyquist 感谢您的拉取请求。知道为什么它仍然停留在审核中吗?
  • (从我刚刚回答相同问题的另一篇文章中复制粘贴):刚刚有很多流失,如果你查看我发布到评论的那个链接,你会看到所有的变化已要求(并且我已实施)。然后沉默了很长很长时间,上个月有人刚回来,基本上要求重做整个事情,我只是没有时间/精力了....
  • @ErikNyquist 感谢您提供信息。我已经用你的补丁构建了 clang-format,我们已经使用它几个月了,它运行良好。太糟糕了,因为他们缺乏反应性,很明显很多人都想要这个功能......

标签: c++ c clang-format


【解决方案1】:

[更新]

操作的拉取请求终于通过了,并且截至 clang 版本 9.0.0 已经上线。该功能由AlignConsecutiveMacros: true 选项启用。

[原创]

奇怪的是,这个功能还没有在 clang 中实现;目前缺少连续宏的格式化选项。

许多开发人员对此感兴趣,并且有一个等待批准多年的有效拉取请求:https://reviews.llvm.org/D28462?id=93341

你可以整合它,或者只是等待他们是否将它添加到官方分支,但在这一点上我怀疑他们会。

【讨论】:

【解决方案2】:

快速浏览style options,似乎目前没有此选项。我看到的处理预处理的唯一选项是IndentPPDirectives,它处理#if 块的缩进。

【讨论】:

    【解决方案3】:

    我也找不到任何选项。 Clang 已经破坏了我所有由 emacs 自动对齐的定义..

    【讨论】:

    • 最新的clang-format支持使用AlignConsecutiveMacros对齐宏
    【解决方案4】:

    请注意,clang-format-9 及更高版本有一个选项 AlignConsecutiveMacros: true 可以为您解决问题。

    要在 ubuntu/Debian 上安装 clang-format-9,您需要检查 http://apt.llvm.org/

    例如,如果您有 Ubuntu 16.04/xenial,则需要执行以下操作:

    sudo sh -c 'echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list'
    sudo sh -c 'echo "deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list'
    sudo apt update
    sudo apt install clang-format-9
    

    可以以同样的方式处理 Trusty/Ubuntu 14.04。

    【讨论】:

    • 哦,我的意思是 AlignConsecutiveMacros: true .. 从我的 clang 格式配置中剪切粘贴了错误的行。我将编辑帖子。
    • 是的,当我发现它不存在时,我自己为该功能“AlignConsecutiveMacros”创建了一个补丁。
    猜你喜欢
    • 2015-01-22
    • 2016-10-22
    • 2018-05-20
    • 2013-12-05
    • 1970-01-01
    • 2020-06-24
    • 2017-02-06
    • 2020-04-11
    • 2019-10-04
    相关资源
    最近更新 更多