Использование uncrustify без выравнивания в открытых скобках - PullRequest
7 голосов
/ 11 октября 2011

Я пытаюсь настроить uncrustify (beautifier исходного кода), чтобы избежать выравнивания под предыдущей открытой скобкой.Например, я хотел бы, чтобы код выглядел следующим образом (из файла 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

Я вызываю uncrustify следующим образом:

uncrustify -c indent_paren.cfg indent_paren.c

Я обнаружил то же поведение с версией 0.56 (установленной из репозитория для Ubuntu 11.04).Я использую неправильные настройки конфигурации, или здесь что-то не так?Спасибо за любую помощь.

1 Ответ

9 голосов
/ 13 октября 2011

После дальнейших экспериментов и спелкинга в некрустите Исходный код, я обнаружил, что опция 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 дает желаемые результаты в большинстве случаев, и, кажется, наиболее близки к может прийти в это время.

...