【问题标题】:Uncrustify + Lambda去壳+ Lambda
【发布时间】:2016-07-12 03:29:39
【问题描述】:

我在格式化 C++ lambda 时遇到了麻烦

这就是它把我的 lambda 变成的东西:

auto print = [](auto const &i, qi::unused_type, qi::unused_type)
             {
                 qDebug() << i;
             };

这是我想要的:

auto print = [](auto const &i, qi::unused_type, qi::unused_type)
{
    qDebug() << i;
};

现在有没有人负责定位括号的设置是什么?

【问题讨论】:

  • 您介意分享您的 Uncrustify 配置文件吗?
  • 给你link

标签: c++ lambda uncrustify


【解决方案1】:

查看您的配置文件,似乎有一些流氓设置:

  1. 在第 223 行

    # Align continued statements at the '='. Default=True
    # If FALSE or the '=' is followed by a newline, the next line is indent one tab.
    indent_align_assign                       = true     # false/true
    

    如您所见,您将 lambda 分配给符号。其他换行符被配置为与分配的= 符号对齐。

  2. 在第 830 和 833 行

    # The span for aligning on '=' in assignments (0=don't align)
    align_assign_span                         = 1        # number
    
    # The threshold for aligning on '=' in assignments (0=no limit)
    align_assign_thresh                       = 0        # number
    

    如果您不想更改第 223 行的配置,也许您可​​以尝试使用这对设置。

如果更改这些设置中的任何一个对您来说都不太合理,您可能需要进行一些认真的代码样式改革。一方面,我看到示例 lambda 适合作为一行语句。也许将它们保持在单行中。 (它们将保持这种状态,因为配置文件中的第 964 行确保了这一点。

【讨论】:

  • 感谢您详细了解它。 830/833 没有帮助,因为 lambas 跨越几行(在当前状态下)跨越多行,所以跨度需要像 6,这会与其他行发生冲突。到目前为止,第 223 行编辑似乎做了我想要的。我现在就这样做。我不想让这些lambas 成为一个衬里,因为它们的参数列表很大
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2014-05-21
  • 2016-09-28
相关资源
最近更新 更多