es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  

Answer

  1. Avatar for 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 establecer DisableFormat en true. Por ejemplo:

    RawStringFormats:
      - Language: MyMarkupLanguage
        Delimiters: ['<mytag>', '</mytag>']
        DisableFormat: true
    

    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ón DisableFormat 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 para RawStringFormats. Si deseas desactivar la formateación de una cadena cruda sin un lenguaje específico, puedes usar la opción RawStringFormats sin especificar un lenguaje. Por ejemplo:

    RawStringFormats:
      - Delimiters: ['<mytag>', '</mytag>']
        DisableFormat: true
    

    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.

Comments are closed.