clang clang-format

formato clang: siempre se rompe si no encajan los params?



clang-format (2)

No puedo averiguar si es posible configurar el formato de lenguaje para romper siempre si los parámetros no se ajustan, es decir:

// Try this first: SomeCall(aaa, bbb, ccc); // If doesn''t fit, try this: SomeCall( aaa, bbb, ccc); // If still doesn''t fit, do NOT try this: SomeCall(aaa, bbb, ccc); // and NOT this: SomeCall(aaa, bbb, ccc); // but immediately do this: SomeCall( aaa, bbb, ccc);

Hasta ahora he concluido que no es posible hacer esto con el formato 3.4. ¿Es correcto?


Desafortunadamente, solo tengo acceso a clang-format 3.8.0 (" clang-format version 3.8.0 (tags/RELEASE_380/final) "), así que no puedo hacer pruebas fácilmente para la versión 3.4.

Hay un manual para la última versión del clang-format de clang-format disponible here que no sé si lo ha encontrado o no. Enlaza a la lista de opciones de estilo de formato de Clang . Allí, hay una opción de estilo que refleja el título de su pregunta: AlignAfterOpenBracket: AlwaysBreak , siempre rompa después de un corchete abierto, si los parámetros no se ajustan en una sola línea .

Para usar esto, ponga lo siguiente en su archivo de ~/.clang-format :

AlignAfterOpenBracket: AlwaysBreak

Después de algunas pruebas, parece que está haciendo exactamente lo que usted quiere que haga, casi.

Se formatea

SomeCall(aaa, bbb, ccc);

como

SomeCall( aaa, bbb, ccc);

Si aaa, bbb, ccc no cabe en una línea. No se interrumpirá entre aaa y bbb hasta que aaa también sea demasiado larga, en cuyo caso bbb y ccc estarán en la misma línea. Es decir, se rompe después de la apertura ( , pero luego intenta rellenar líneas. No se rompe automáticamente en todas las comas.

En cuanto a la página correspondiente para clang-format 3.4, parece que esta opción de configuración lamentablemente no existe. Esto te deja con dos opciones:

  1. Actualizar a una nueva versión de clang-format .
  2. No lo hagas

En la versión más reciente de formato de Clang, esto ahora se puede lograr con:

AlignAfterOpenBracket: AlwaysBreak BinPackArguments: false BinPackParameters: false

Consulte https://clang.llvm.org/docs/ClangFormatStyleOptions.html para obtener una explicación completa de estas opciones.