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.

Mantén los múltiples espacios alineados en `set(VARIABLE valor)` tal como estaban durante cmake-format.

Tenemos muchos archivos CMake que contienen secuencias de set() como esta:

cmake
set(VERSION_MAJOR 1)
set(VERSION_MINOR 2)
set(VERSION_ABI 3)
set(VERSION_PATCH 0-rc2)

No puedo encontrar una manera de que cmake-format mantenga esta alineación; siempre comprimirá los espacios en blanco repetidos (aquí, después de _ABI) en uno solo.

¿Hay alguna forma de indicarle a cmake-format que mantenga esta alineación?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Lamentablemente, no hay una forma directa de indicarle a cmake-format que mantenga la alineación de las secuencias set() como se muestra en la pregunta. cmake-format tiene sus propias reglas de formato y siempre intenta condensar los espacios para reducir la longitud de la línea.

    Sin embargo, hay algunas soluciones alternativas que puedes probar:

    • Utiliza las directivas # fmt: off y # fmt: on alrededor de la secuencia set() para indicarle a cmake-format que ignore el formato:
    # fmt: off
    set(VERSION_MAJOR 1)
    set(VERSION_MINOR 2)
    set(VERSION_ABI   3)
    set(VERSION_PATCH 0-rc2)
    # fmt: on
    

    Esto evitará que cmake-format modifique el formato de la secuencia set(). Sin embargo, debes deshabilitar el formato para toda la sección donde se encuentren estas secuencias set(), lo cual puede no ser deseable.

    • Utiliza el argumento format de set() para formatear la cadena:
    set(VERSION_MAJOR 1)
    set(VERSION_MINOR 2)
    set(VERSION_ABI   3)
    set(VERSION_PATCH "0-rc2" FORMAT "%-15s %s")
    

    Esto formateará la cadena VERSION_PATCH como una cadena alineada a la izquierda con un ancho de 15, seguida del valor de 0-rc2. Sin embargo, esto puede no ser tan flexible como el enfoque anterior y debes especificar explícitamente el formato para cada cadena formateada.

    • Escribe un complemento personalizado para cmake-format que preserve la alineación de las secuencias set() como se muestra en la pregunta. Lamentablemente, esto requiere cierto conocimiento de la API de complementos de cmake-format y programación en Python.

    En resumen, aunque no hay una forma directa de preservar la alineación de las secuencias set() en cmake-format, puedes utilizar algunas soluciones alternativas como deshabilitar el formato para toda la sección o utilizar el argumento format de set().

Comments are closed.