Использование uncrustify без выравнивания в открытых скобках

Я пытаюсь настроить 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 ответов


после дальнейших экспериментов и спелеологии в uncrustify исходный код, я обнаружил, что тут в основном то, что я хочу. По умолчанию indent_continue - это ноль, и продолжение линий отступом вверх под открытой скобкой в линия выше. Настройка indent_continue до ненулевого значения переопределяет это поведение, вызывая строки продолжения отступ на основе текущего "уровня". Итак, мой оригинальный пример изрезан, как хотелось, когда, используя следующие параметры в uncrustify.cfg следующее:

indent_with_tabs = 0
indent_columns   = 4
indent_continue  = 4

потому что "уровень" увеличивается для вложенных скобок, однако для таких случаев отступов больше, чем требуется as:

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));
}

глядя на источник uncrustify, кажется, что это поведение не регулируется. indent_continue дает желаемые результаты в большинстве случаев, и это кажется самым близким, что uncrustify может прийти в это время.