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

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


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

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


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

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


我正在调用unrustify,如下所示:

uncrustify -c indent_paren.cfg indent_paren.c


我发现与版本0.56相同的行为(从
Ubuntu 11.04的存储库)。我使用了错误的配置吗
设置,还是这里有其他问题?谢谢你的帮助。

最佳答案

经过进一步的实验并在不生锈的地方进行了探索
源代码,我发现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));
}


观察不可靠的来源,看来这种行为
不可调。 indent_continue提供所需的结果
在大多数情况下,这似乎是最令人信服的
可以在这个时候来。

关于uncrustify - 在开括号下使用unrustify而不对齐,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7730378/

10-13 06:48