使用uncrustify而不在开括号下对齐

时间:2011-10-11 18:00:19

标签: uncrustify

我正在尝试配置uncrustify(源代码美化器) 避免在先前的左括号下面对齐。对于 例如,我希望代码看起来像这样(来自文件 indent_paren.c):

void f(void)
{
    while (one &&
        two)
    {
        continue;
    }
}

当我在上面的代码上运行uncrustify时,行two) 缩进与上面一行中的(对齐:

void f(void)
{
    while (one &&
           two)
    {
        continue;
    }
}

我正在使用最新版本的uncrustify(0.59)编译而成 source,具有此测试的以下配置设置 (在文件indent_paren.cfg中):

indent_with_tabs = 0
indent_columns   = 4
indent_paren_nl  = false
indent_bool_paren = false

我按照以下方式调用uncrustify:

uncrustify -c indent_paren.cfg indent_paren.c

我发现0.56版本的相同行为(从...安装) Ubuntu 11.04的存储库)。我使用了错误的配置 设置,或者这里有什么不对吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:9)

经过进一步的实验并在解开后进行探索 源代码,我发现indent_continue选项可以 主要是我想要的。默认情况下,indent_continue为零,并且 继续的线条在左侧的开括号下方缩进 上面这一行。将indent_continue设置为非零值 覆盖此行为,导致延续行 基于当前“级别”缩进。所以我原来的例子 在使用以下设置时根据需要缩进 uncrustify.cfg:

indent_with_tabs = 0
indent_columns   = 4
indent_continue  = 4

因为嵌套括号的“级别”递增, 但是,对于这种情况,存在比期望更多的缩进 为:

void g(void)
{
    /* Nested parentheses cause undesired additional indent. */
    TRACE(("The varargs need extra parentheses %d %d\n",
        (firstArgIsLong + 
        withMultipleTerms),
        secondArg));
}

以上设置生成缩进,如下所示 不希望的额外缩进程度:

void g(void)
{
    /* Nested parentheses cause undesired additional indent. */
    TRACE(("The varargs need extra parentheses %d %d\n",
            (firstArgIsLong +
                withMultipleTerms),
            secondArg));
}

看着unrusifictify源,看来这种行为 是不可调整的。 indent_continue给出了预期的结果 在大多数情况下,它似乎是最接近unrustify 可以在这个时候来。