新行上的clang格式右括号

Posted

技术标签:

【中文标题】新行上的clang格式右括号【英文标题】:clang-format closing bracket on a new line 【发布时间】:2019-02-09 00:03:21 【问题描述】:

我的代码如下所示:

EXPECT_EQ(
    subsystem->previousTouchscreenState,
    expectedTouchscreenState
);

当我运行 clang-format 时,它会将 sn-p 重新格式化为如下所示:

EXPECT_EQ(
    subsystem->previousTouchscreenState,
    expectedTouchscreenState );

这很违反直觉;我希望我的多行函数调用(尽管 EXPECT_EQ 在这种情况下是一个宏)在其自己的行上有右圆括号,缩进到函数名称的级别,因为它在第一个sn-p。

如何使用clang-format 完成此操作?

非常感谢。

【问题讨论】:

你找到答案了吗? 看起来他们将来会添加它reviews.llvm.org/D33029 @devalone 为什么不添加这个作为答案? @eike *可以添加。我不认为这是一个答案。 这能回答你的问题吗? Get clang format to put closing parenthesis of multiline function calls on separate lines? 【参考方案1】:

我希望我的多行函数调用(尽管在这种情况下 EXPECT_EQ 是一个宏)在其自己的行上有右圆括号,缩进到函数名称的级别,就像它在第一个sn-p。

如何使用 clang-format 完成此任务?

该选项似乎尚未添加;要么等待,要么参与 clang 开源项目。

【讨论】:

警告,clang 格式以无法通过的贡献标准而闻名:clang.llvm.org/docs/… 这样的选项已被开发和审查,但仍悬而未决:reviews.llvm.org/D33029 这里有一个有效的 PR 已被接受:reviews.llvm.org/D109557【参考方案2】:

我找到了一种解决方法。如果您在最后一个参数的末尾添加注释,clang-format(或任何工具)不应折回右括号。

EXPECT_EQ(
    subsystem->previousTouchscreenState,
    expectedTouchscreenState //
);

【讨论】:

以上是关于新行上的clang格式右括号的主要内容,如果未能解决你的问题,请参考以下文章

如何在打开函数的大括号之前使 clang-format 添加新行?

可以clang格式将大括号添加到单行if语句等

反正有没有让 VS Code 在 C# 的新行上自动格式化大括号?

Clang-format 语法在自己的行上获取初始化程序左大括号

CREATE TABLE 中的 DEFAULT 上的“缺少右括号”

配置 prettier 以在新行上推送花括号并且不清除空行