如何防止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代码。我已将其修改为上述片段中的方式。
答案 0 :(得分:1)
三个答案:
像这样的宏是不好的样式,最好将宏修复为不包含结尾的逗号。这样您就不必担心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
和{{1 }}。有关详细信息,请参见documentation。