去壳 + Lambda

Uncrustify + Lambda

我在 uncrustify 格式化 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;
};

现在有人知道什么设置负责牙套的定位吗?

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

  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 行确保了这一点)。