C++ 铿锵格式可以为我对齐一块#defines吗?

C++ 铿锵格式可以为我对齐一块#defines吗?,c++,c,clang-format,C++,C,Clang Format,我有一个源文件,其中包含一些像这样的行 #define ARC_V2_LP_START 0x002 #define ARC_V2_LP_END 0x003 #define ARC_V2_STATUS32 0x00a 所有值都很好地对齐。不幸的是,叮当格式可以做到这一点 #define ARC_V2_LP_START 0x002 #define ARC_V2_LP_END 0x003 #define ARC_V2_STATUS32 0x00a

我有一个源文件,其中包含一些像这样的行

#define ARC_V2_LP_START         0x002
#define ARC_V2_LP_END           0x003
#define ARC_V2_STATUS32         0x00a
所有值都很好地对齐。不幸的是,叮当格式可以做到这一点

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

我找到了AlignConcertiveDeclarations和AlignConcertiveAssignments选项,但没有找到任何将对齐ConcertiveDefines的选项。有可能做到这一点吗?

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

[UPDATE]

op的pull请求终于通过了,从clang 9.0.0版开始生效。该功能由
对齐连续宏:true
选项启用

[原件]

奇怪的是,这个特性还没有在clang中实现;当前缺少连续宏的格式选项

许多开发人员对此感兴趣,并且有一个正在工作的pull请求已经等待批准多年:


您可以将其集成,也可以等待他们是否将其添加到官方分支,但目前我怀疑他们是否会集成。

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

请注意,clang-format-9及更高版本有一个选项
alignContinuitiveMacros: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。

似乎没有这样的选项。我目前正在将其添加为一个新的样式选项AlignConcertiveMacros。您可以在我的fork上看到它(我不会发布提交的直接链接,因为我一直在修改它。只需查看提交列表并选择最新的一个)您计划提交请求吗?看起来对我来说是个有用的补充@ErikNyquist谢谢你的请求。你知道为什么它仍然停留在评论中吗?(从另一篇我刚刚回答相同问题的帖子中复制粘贴):只是有很多的改动,如果你查看我在评论中发布的链接,你会看到所有请求的更改(以及我已经实现的更改)。然后沉默了很长很长一段时间,有人在上个月刚回来,基本上要求对整个事情进行修改,我只是没有时间/精力了……@ErikNyquist谢谢你提供的信息。我已经用你的补丁建立了叮当格式,我们已经用了几个月了,它工作得很好。对于他们缺乏反应性来说太糟糕了,很明显,很多人想要这个功能……你可能没有注意到,拉请求是OP在一年前提出这个问题后提出的。尽管如此,这个问题仍然没有答案,所以@ErikNyquist最好接受一个答案。更新:看起来更改已经被接受,并且已经准备就绪!两年后,我的补丁终于合并了!终于有了PP宏的对齐:)哦,我的意思是
对齐连续的宏:true
。。剪切粘贴了错误的行从我的叮当格式配置。我将编辑帖子。是的,当我发现该功能“AlignConcertiveMacros”不存在时,我自己为该功能创建了一个补丁。最新的clang格式支持使用
AlignConcertiveMacros