2011-10-11 8 views
7

Estoy tratando de configurar un embotificador de código fuente a evitando alinear debajo de un paréntesis abierto anterior. Para ejemplo, me gustaría que el código para tener este aspecto (de archivo indent_paren.c):Usando uncrustify sin alinear bajo paréntesis abierto

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

Cuando corro Uncrustify en el código anterior, la línea two) guiones para alinearse con la ( desde la línea de arriba:

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

estoy usando la versión más reciente de Uncrustify (0,59) compilado a partir de fuente, con las siguientes opciones de configuración para esta prueba (en el archivo de indent_paren.cfg):

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

estoy invocando Uncrustify de la siguiente manera:

uncrustify -c indent_paren.cfg indent_paren.c 

he encontrado el mismo comportamiento con la versión 0.56 (instalado desde el repositorio para Ubuntu 11.04). ¿Estoy utilizando la configuración incorrecta configuración, o hay algo más aquí? Gracias por cualquier ayuda.

Respuesta

9

Después de la experimentación y la espeleología en el código fuente Uncrustify, me he dado cuenta que la opción indent_continue hace sobre todo lo que quiero. De forma predeterminada, indent_continue es cero y líneas continuas están sangradas para arriba debajo de abrir paréntesis en la línea anterior. Al establecer indent_continue en un valor distinto de cero se reemplaza este comportamiento, lo que hace que las líneas de continuación sean indentadas en función del "nivel" actual. Así que mi ejemplo original de tiene sangría según se desee cuando se utilizan los siguientes ajustes en uncrustify.cfg:

indent_with_tabs = 0 
indent_columns = 4 
indent_continue = 4 

Debido a que el "nivel" se incrementa para paréntesis anidados, sin embargo, no es más de lo deseado muesca para los casos tales como:

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

Los ajustes anteriores generan muesca de la siguiente manera, con niveles extra no deseados de la sangría:

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

En cuanto a la fuente de no crítica, parece que este comportamiento no es ajustable. indent_continue da los resultados deseados en la mayoría de los casos, y parece ser lo más cerca que puede aparecer en este momento.

Cuestiones relacionadas