¿Cómo evitar el formateo de cadenas crudas en clang-format para XML, SQL, etc.?
Tengo código C++ con XML incrustado como este:
QLatin1String prueba ()
{
return QLatin1String(R"XML(
<ui language=" c++">
<widget class=" Prueba " name=" dialogbuttonbox ">
<property name="text">
<string> DialogButtonBox </string>
</property>
</widget>
</ui>)XML");
}
Cuando formateo esto con:
clang-format -- style = WebKit test1.cpp
Entonces el xml se formateará para romperse, debido a la definición de RawStringFormat:
> Si no se ha definido ningún estilo en el archivo .clang-format para el
> lenguaje específico, se utiliza un estilo predefinido dado por 'BasedOnStyle'.
> Si no se encuentra 'BasedOnStyle', la formateado se basa en el estilo llvm.
Así que intenté lo siguiente dentro de .clang-format:
RawStringFormats:
- Lenguaje: Ninguno
Delimitadores: ['XML']
DisableFormat: verdadero
Lo que resulta en el siguiente error:
.clang-format: 177:15: error: escalar enumerado desconocido - Lenguaje: Ninguno
Lo que realmente quiero evitar es agregar comentarios al código fuente para activar/desactivar el formateo:
// clang-format off
// clang-format on
Entonces mi pregunta es cómo desactivar el formato para XML, SQL o cualquier cosa que no sea compatible con las cadenas sin procesar de clang-format?
Además, ¿qué pasa con el mensaje de escalar enumerado desconocido anterior? ¿Significa que Language: None
no está permitido? ¿Así que tal vez tengo una solicitud de característica?
davy.ai
¿Cómo desactivar la formateación de cadenas crudas no admitidas por Clang-Format?
Si tienes código C++ con cadenas crudas incrustadas de XML u otros tipos no admitidas por Clang-Format, es posible que desees desactivar la formateación de esas partes de tu código para evitar errores de formatos.
Para desactivar la formateación de cadenas crudas no admitidas, puedes usar la opción
RawStringFormats
en tu archivo .clang-format para especificar los delimitadores de las cadenas crudas no admitidas y establecerDisableFormat
entrue
. Por ejemplo:En este ejemplo,
MyMarkupLanguage
es un marcador del nombre de tu lenguaje de cadena cruda no admitido y<mytag>
y</mytag>
son los delimitadores de tu cadena cruda. La opciónDisableFormat
indica que Clang-Format debe ignorar el formateo dentro de la cadena cruda especificada.Error de escalar enumerado desconocido
El error de escalar enumerado desconocido que encontraste podría deberse al hecho de que
Language: None
no es una opción válida paraRawStringFormats
. Si deseas desactivar la formateación de una cadena cruda sin un lenguaje específico, puedes usar la opciónRawStringFormats
sin especificar un lenguaje. Por ejemplo:Esto desactivará la formateación para cualquier cadena cruda con los delimitadores especificados, independientemente del lenguaje.
Si crees que la opción
Language: None
debería agregarse a Clang-Format, podrías considerar enviar una solicitud de función al equipo de Clang-Format.