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:
- Actualizar a una nueva versión de
clang-format
. - 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.