【问题标题】:Keeping Argument/Parameters in same line as much as possible尽可能将参数/参数保持在同一行
【发布时间】:2020-07-07 07:08:53
【问题描述】:

我正在尝试使我的 clang 格式尽可能接近我们的 eclipse 格式化程序。 在这次迁移中,我意识到 eclipse 更喜欢尽可能地将参数/参数保持在同一行: 例子:

如果我更改 BinPackParameters,我会得到:

或:

我希望拥有与 eclipse 相同的行为: “保持将参数与函数/方法名称放在同一行,然后在达到列限制时换行”

我怎样才能做到这一点?

编辑: 我正在扩展 Google 风格

【问题讨论】:

    标签: clang-format


    【解决方案1】:

    一些想法:

    1. 您不应使用图像向我们展示代码。没什么大不了的,但它让别人很难剪切和粘贴您的示例代码来调查问题。
    2. 我认为您正在寻找的设置是AlignAfterOpenBracket: DontAlign。鉴于上面显示的两个输入,命令 clang-format -style='{BasedOnStyle: Google,AlignAfterOpenBracket: DontAlign}' 给出:
        virtual int *XXXXXXXXXXXXX(int *parentaaaa, unsigned int x.unsigned int y,
            int index, int resolution, int zoom);
        virtual int XXXXXXXXXXXXX(int *attrasdasdasd, char *outstr,
            unsigned char mode, unsigned int minlen, unsigned int maxlen);
      
    3. 但是,在 AlignAfterOpenBracket: DontAlign 的情况下,clang-format 会将所有参数移动到下一行。您可能会看到其中一种情况,我认为没有任何好的解决方法。因此,您可能希望使用AlignAfterOpenBrackets: Align(这是 Google 样式的默认设置)。这与您的 Eclipse 示例不完全匹配,但大多数情况下它相当接近。例如,命令clang-format -style='{BasedOnStyle: Google}' 给出:
        virtual int* XXXXXXXXXXXXX(int* parentaaaa, unsigned int x.unsigned int y,
                                   int index, int resolution, int zoom);
        virtual int XXXXXXXXXXXXX(int* attrasdasdasd, char* outstr,
                                  unsigned char mode, unsigned int minlen,
                                  unsigned int maxlen);
      
    4. 您的eclipse 示例(您问题中的第一个示例)的续行进一步缩进。要完全匹配,您将使用ContinuationIndentWidth: 8。所以命令clang-format -style='{BasedOnStyle: Google,AlignAfterOpenBracket: DontAlign, ContinuationIndentWidth: 8}' 给出:
        virtual int *XXXXXXXXXXXXX(int *parentaaaa, unsigned int x.unsigned int y,
                int index, int resolution, int zoom);
        virtual int XXXXXXXXXXXXX(int *attrasdasdasd, char *outstr,
                unsigned char mode, unsigned int minlen, unsigned int maxlen);
      
    5. 有关这些样式选项的更多信息,请参阅documentation
    6. configurator 是尝试样式选项并了解不同版本 clang-format 之间差异的好地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2022-08-18
      • 2011-01-21
      • 1970-01-01
      相关资源
      最近更新 更多