【问题标题】:Format nested namespaces in C++ on one line using astyle使用 astyle 在一行中格式化 C++ 中的嵌套命名空间
【发布时间】:2017-12-29 13:12:43
【问题描述】:

在我公司的编码约定中,我们将嵌套命名空间格式化为一行。例如:

namespace Foo { namespace Bar {
...
}} // Foo::Bar

我正在尝试使用 astyle 强制执行此样式,但在 http://astyle.sourceforge.net/astyle.html 的文档中找不到任何内容

当我运行以下 astyle 命令时(忽略不相关的选项)

astyle --style=allman --add-brackets --align-reference=name --align-pointer=name --attach-namespaces --pad-header --pad-oper --unpad-paren -n <filename>

我最终将每个嵌套的命名空间放在单独的一行中,如下所示:

namespace Foo {
namespace Bar {
...
}
}

【问题讨论】:

  • 我对 Astyle 并不满意。我更喜欢 clang 格式 (clang.llvm.org/docs/ClangFormat.html) - 甚至还有一个适用于 clang 格式的 Visual Studio 插件。考虑切换到 clang 格式。
  • 我主要在 vim 中工作,但不介意转向 clang 格式。你知道我提到的用例的确切开关吗?谢谢。

标签: c++ astyle


【解决方案1】:

尝试修改astyle源代码。找到方法ASFormater::isOkToBreakBlock并在开头插入:

if (isBraceType(braceType, NAMESPACE_TYPE))
    return false;

确保它不会破坏整个格式。

附:希望astyle 团队能够听到并通过选项做出正确的更改。

【讨论】:

    猜你喜欢
    • 2011-01-02
    • 2012-09-02
    • 2019-08-03
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2012-02-19
    相关资源
    最近更新 更多