c++ eclipse-cdt code-formatting

c++ - Cómo deshabilitar el formateador de código CDT de Eclipse para un bloque de código



eclipse-cdt code-formatting (5)

Por lo que sé, la respuesta es simplemente no, tal característica no existe. Sin embargo, es posible que pueda implementar dicha función utilizando el SDK. Tenga en cuenta que, según mi experiencia, la documentación está muy incompleta y es muy difícil encontrar un desarrollador de Eclipse que esté dispuesto a ayudarlo a completar los huecos. Pero como la función existe en el formateador de Java y es un producto de código abierto, tal vez podría trasladar la lógica al formateador de C ++.

También puede evitar formatear todo el archivo y, en su lugar, formatear solo por selección.

El formateador de códigos CDT tiene una selección bastante decente de opciones, pero no parece tener una característica que le permita a uno decirle que ignore un bloque de código. Esta característica existe en el formateador de código Java:

// @formatter:off ... // code that should not be formatted // @formatter:on

¿Existe esta característica y yo simplemente no la conozco, o alguien sabe de algún trabajo decente?

En mi caso particular, estoy tratando de definir estructuras de datos (tipos de enumeración y matrices de cadenas) que quiero tener diseños específicos.


Sí, puede hacerlo ya que CDT admite esta función a partir de la versión 9.7. El comportamiento es exactamente el mismo de JDT.


Si está utilizando OS X o Linux (no he comprobado Windows, pero es posible que sea compatible), puede usar clang-format CppStyle y CppStyle en CppStyle lugar.

clang-format es una utilidad de formateador que se proporciona con Clang , y admite comentarios on / off // clang-format on y // clang-format off en el código C / C ++ / ObjC. Una introducción para construir Clang y sus herramientas de utilidad se pueden encontrar aquí. http://clang.llvm.org/get_started.html No necesita instalar archivos completos de Clang y LLVM en su sistema. Porque clang-format es un programa independiente que funciona sin Clang . Los comentarios de activación / desactivación no son compatibles con las versiones anteriores, así que use la versión 3.7 (disponible en SVN a partir de febrero de 2015).

CppStyle es un plugin de Eclipse que nos permite usar clang-format CppStyle de Eclipse CDT. https://github.com/wangzw/cppstyle

Para tu información Aquí está la misma solicitud de características en el CDT Bugzilla. La funcionalidad podría ser oficialmente compatible en el futuro, pero el uso de clang-format o Astyle parece ser una mejor solución en este momento. https://bugs.eclipse.org/bugs/show_bug.cgi?id=453926


Supongo que podría pegar estos en un archivo con una extensión ignorada por el formateador e incluir este archivo cuando sea apropiado. Probé esto y funciona: la estructura de datos se selecciona en el indexador (es decir, funciona con autocompletado). Aún así, sería bueno tener un equivalente a la sintaxis "@formatter: ..." de Java.


Use el formateador Astyle (estilo artístico), es muy superior al formateador incorporado Eclipse CDT y tiene la función que necesita:

http://astyle.sourceforge.net/astyle.html#_Disable_Formatting

Ejemplo:

#include <iostream> int main(int argc, char** argv) { // *INDENT-OFF* std::cout<<"hello world"<<''/n''; // *INDENT-ON* }

El formateo utilizando astyle no sangrará el código entre // INDENT-OFF y // INDENT-ON, pero también deshabilitará cualquier otra característica de formateo que astyle, como el espaciado de las instrucciones en este caso.

Lo uso yo mismo configurado como una herramienta externa. El único problema es que las herramientas externas no tienen teclas de acceso rápido, pero hay una tecla de acceso rápido para "Ejecutar la última herramienta externa lanzada", y si solo usa una herramienta externa, funcionará igual.

Más detalles sobre la configuración (linux):

Un estilo:

Puede obtenerlo fácilmente desde sus repositorios de distribución o a través del sitio oficial.

Para configurar un archivo de configuración con la configuración de formato:

http://astyle.sourceforge.net/astyle.html#_Options_File

Utilizo la variante de la carpeta de inicio, solo creo un .astylerc en tu $ HOME, el mío contiene:

--suffix=none --style=allman --indent=tab=4 --max-code-length=70 --close-templates --keep-one-line-blocks --break-elseifs --break-closing-brackets --align-reference=type --align-pointer=type --indent-classes --indent-modifiers --indent-switches --indent-cases --indent-labels --indent-col1-comments --min-conditional-indent=0 --pad-oper --pad-header --unpad-paren

Eclipse:

Menú "Ejecutar" -> Herramientas externas -> Configuraciones de herramientas externas ... Agregue un nuevo "Programa" y en la ventana de configuración:

  • Ubicación: / usr / bin / astyle (use whereis o localice para verificar esto)

  • Directorio de trabajo: $ {project_loc}

  • Argumentos: $ {selected_resource_loc}

En la misma ventana, actualice la pestaña:

  • Marque Actualizar los recursos al finalizar.

  • Marque "El recurso seleccionado"

Misma ventana, pestaña común:

  • Mostrar en el menú de favoritos, Marcar "Herramientas externas"