如何防止 clang-format 缩进宏?
How can I prevent clang-format from indenting a macro?
如何防止 clang-format
缩进下面的宏及其赋值?
定义:
#define DESKTOPCHANGE(K,N) \
{MOD, K, changeworkspace, {.i=N}}, \
{MOD | SHIFT, K, sendtoworkspace, {.i=N}},
变成:
#define DESKTOPCHANGE(K, N) \
{MOD, K, changeworkspace, {.i = N}}, \
{MOD | SHIFT, K, sendtoworkspace, {.i = N}}
用法:
static key keys[] = {
DESKTOPCHANGE(XK_1, 0)
DESKTOPCHANGE(XK_2, 1)
DESKTOPCHANGE(XK_3, 2)
DESKTOPCHANGE(XK_4, 3)
DESKTOPCHANGE(XK_5, 4)};
变成:
static key keys[] = {DESKTOPCHANGE(XK_1, 0) DESKTOPCHANGE(XK_2, 1)
DESKTOPCHANGE(XK_3, 2) DESKTOPCHANGE(XK_4, 3)
DESKTOPCHANGE(XK_5, 4)}
我尝试了一些 options,但找不到正确的。有没有一种通用的方法可以关闭所有对齐方式,并仅打开如果需要?
这是来自 Github 的 source 代码。我已将其修改为上面代码段中的方式。
三个答案:
像这样的宏是糟糕的风格,最好修复宏以不包含结尾的逗号。那么您就不必担心 clang-format
(或任何其他格式化工具)误解代码。
使用 clang-format
6.0.0,您可以使用以下方法实现所需的格式:
BasedOnStyle: WebKit
ContinuationIndentWidth: 0
或者,如果您不想将格式设置基于 WebKit
样式,这将帮助您完成大部分工作:
AllowAllParametersOfDeclarationOnNextLine: false
BinPackParameters: false
ContinuationIndentWidth: 0
关键是 ContinuationIndentWidth
选项,已记录 here。但是,不幸的是,我不认为你真的想要这个答案,因为设置 ContinuationIndentWidth: 0
可能会使其他代码变得丑陋和不可读。
如果您已经按照自己的方式设置了代码格式,并且希望禁用 clang-format
影响特定代码块,则可以用 // clang-format on
将其包围和 // clang-format off
。有关详细信息,请参阅 documentation。
如何防止 clang-format
缩进下面的宏及其赋值?
定义:
#define DESKTOPCHANGE(K,N) \
{MOD, K, changeworkspace, {.i=N}}, \
{MOD | SHIFT, K, sendtoworkspace, {.i=N}},
变成:
#define DESKTOPCHANGE(K, N) \
{MOD, K, changeworkspace, {.i = N}}, \
{MOD | SHIFT, K, sendtoworkspace, {.i = N}}
用法:
static key keys[] = {
DESKTOPCHANGE(XK_1, 0)
DESKTOPCHANGE(XK_2, 1)
DESKTOPCHANGE(XK_3, 2)
DESKTOPCHANGE(XK_4, 3)
DESKTOPCHANGE(XK_5, 4)};
变成:
static key keys[] = {DESKTOPCHANGE(XK_1, 0) DESKTOPCHANGE(XK_2, 1)
DESKTOPCHANGE(XK_3, 2) DESKTOPCHANGE(XK_4, 3)
DESKTOPCHANGE(XK_5, 4)}
我尝试了一些 options,但找不到正确的。有没有一种通用的方法可以关闭所有对齐方式,并仅打开如果需要?
这是来自 Github 的 source 代码。我已将其修改为上面代码段中的方式。
三个答案:
像这样的宏是糟糕的风格,最好修复宏以不包含结尾的逗号。那么您就不必担心
clang-format
(或任何其他格式化工具)误解代码。使用
clang-format
6.0.0,您可以使用以下方法实现所需的格式:BasedOnStyle: WebKit ContinuationIndentWidth: 0
或者,如果您不想将格式设置基于
WebKit
样式,这将帮助您完成大部分工作:AllowAllParametersOfDeclarationOnNextLine: false BinPackParameters: false ContinuationIndentWidth: 0
关键是
ContinuationIndentWidth
选项,已记录 here。但是,不幸的是,我不认为你真的想要这个答案,因为设置ContinuationIndentWidth: 0
可能会使其他代码变得丑陋和不可读。如果您已经按照自己的方式设置了代码格式,并且希望禁用
clang-format
影响特定代码块,则可以用// clang-format on
将其包围和// clang-format off
。有关详细信息,请参阅 documentation。