trucos sangria pestaña para ordenar linea indentar descomentar como comentar comando codigo cambiar java eclipse code-formatting pretty-print eclipse-formatter

sangria - ordenar codigo java eclipse



¿Cómo desactivar el formateador de código Eclipse para ciertas secciones de código Java? (12)

¡Los comentarios fantasmas, agregando // donde quieres nuevas líneas, son excelentes!

  1. El @formatter: off agrega una referencia del código al editor. El código no debería, en mi opinión, tener tales referencias.

  2. Los comentarios fantasmas (//) funcionarán independientemente de la herramienta de formato utilizada. Independientemente de Eclipse o InteliJ o cualquier editor que utilice. Esto incluso funciona con el muy buen formato Java de Google.

  3. Los comentarios fantasmas (//) funcionarán en toda su aplicación. Si también tiene Javascript y quizás use algo como JSBeautifier . Puede tener un estilo de código similar también en el Javascript.

  4. En realidad, probablemente QUIERES formatear, ¿verdad? Desea eliminar las pestañas / espacios mixtos y los espacios finales. Desea sangrar las líneas de acuerdo con el código estándar. Lo que NO quieres es una larga cola. ¡Eso, y solo eso, es lo que te da el comentario fantasma!

Tengo un código Java con sentencias de SQL escritas como cadenas Java (por favor, no OR / M flamewars, el SQL incorporado es lo que es, no es mi decisión).

He dividido semánticamente las sentencias de SQL en varias cadenas concatenadas en varias líneas de código para facilitar el mantenimiento. Así que en lugar de algo como:

String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";

Tengo algo como:

String query = "SELECT FOO, BAR, BAZ" + " FROM ABC " + " WHERE BAR > 4 ";

Este estilo hace que el SQL sea mucho más fácil de leer y mantener (IMHO), especialmente para consultas más grandes. Por ejemplo, puedo poner mi editor en modo "sobrescribir" y modificar el texto en el lugar con bastante facilidad.

Tenga en cuenta que este problema generaliza más allá del ejemplo particular de SQL. Cualquier código escrito con cualquier formato vertical, particularmente construcciones tabulares, es susceptible de ser destruido por una impresora bonita.

Ahora, algunos miembros del proyecto usan el editor de Eclipse y el formato semántico a menudo se destruye cuando formatean un archivo fuente completo.

¿Hay alguna forma de indicar a Eclipse que ignore ciertas líneas de origen con respecto al formato?

Estoy buscando algo como un comentario especial que alterna el formateador de Eclipse. Idealmente, tal comentario podría ser configurable para ser lo que elijamos, y otros formateadores podrían programarse para respetarlo también:

// STOP-ECLIPSE-FORMATTING String query = "SELECT FOO, BAR, BAZ" + " FROM ABC " + " WHERE BAR > 4 "; // START-ECLIPSE-FORMATTING

Obviamente, una "solución" es hacer que los miembros de nuestro equipo estandaricen en algún formateador externo como Jalopy o JIndent , pero no es de eso de lo que trata esta pregunta (tampoco de mi decisión sobre este proyecto): estoy buscando específicamente una manera de Evite el formateador Eclipse sobre una base ad hoc.

Idealmente, una solución me permitirá insertar instrucciones para el formateador de Eclipse sin requerir que los miembros del equipo utilicen Eclipse para realizar cualquier reconfiguración de IDE (aparte de elegir posiblemente un comentario de comando agnóstico del formateador: STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING ).


@xpmatteo tiene la respuesta para deshabilitar partes del código, pero además de esto, la configuración predeterminada de eclipse debe configurarse para dar formato solo a las líneas de código editadas en lugar de todo el archivo.

Preferences->Java->Editor->Save Actions->Format Source Code->Format Edited Lines

Esto hubiera impedido que esto sucediera en primer lugar, ya que sus compañeros de trabajo están reformateando el código que en realidad no cambiaron. Esta es una buena práctica para evitar contratiempos que se vuelven inútiles en el control de origen (cuando se reformatea un archivo completo debido a diferencias menores en la configuración de formatos).

También evitaría el cambio de formato si se desactivara la opción de etiquetas de encendido / apagado.


AFAIK de Eclipse 3.5 M4 en el formateador tiene una opción "Nunca unir líneas" que conserva los saltos de línea del usuario. Tal vez eso hace lo que quieres.

Si no hay este truco feo

String query = // "SELECT FOO, BAR, BAZ" + // " FROM ABC" + // " WHERE BAR > 4";


Eclipse 3.6 le permite desactivar el formato colocando un comentario especial, como

// @formatter:off ... // @formatter:on

Las funciones de encendido / apagado deben estar activadas en las preferencias de Eclipse: Java > Estilo de código > Formateador . Haga clic en Editar , Etiquetas Desactivadas / Activadas , habilitar etiquetas Activar Desactivadas / Activadas .

También es posible cambiar las cadenas mágicas en las preferencias; consulte la documentación de Eclipse 3.6 aquí .

Más información

Java > Estilo de código > Formateador > Editar > Desactivar / Activar etiquetas

Esta preferencia le permite definir una etiqueta para deshabilitar y una etiqueta para habilitar el formateador (consulte la pestaña Desactivar / Activar etiquetas en su perfil de formateador):

También es necesario habilitar los indicadores de Formateo de Java


En lugar de desactivar el formato, puede configurarlo para que no se una a las líneas ya envueltas. Similar a la respuesta de Jitter, aquí está para Eclipse STS:

Propiedades → Java Code Style → Formateador → Habilitar ajustes específicos del proyecto O Configurar ajustes del área de trabajo → Editar → Ajuste de línea (pestaña) → marcar "Nunca unir líneas ya envueltas"

Guardar, aplicar.


Este truco funciona:

String x = "s" + //Formatter Hack "a" + // "c" + // "d";

Yo sugeriría no usar el formateador. El código incorrecto debe verse mal, no bueno artificialmente. Buen código lleva tiempo. No se puede engañar a la calidad. El formateo es parte de la calidad del código fuente.


Estoy usando partes de cadena de ancho fijo (rellenadas con espacios en blanco) para evitar que el formateador desordene mi sangría de cadena SQL. Esto le brinda resultados mixtos, y no funcionará donde el espacio en blanco no se ignora como lo está en SQL, pero puede ser útil.

final String sql = "SELECT v.value FROM properties p " + "JOIN property_values v ON p.property_id = v.property_id " + "WHERE p.product_id = ? " + "AND v.value IS NOT NULL ";


Método alternativo: en Eclipse 3.6, debajo de "Ajuste de línea" y luego "Configuración general" hay una opción para "Nunca unir líneas ya envueltas". Esto significa que el formateador ajustará las líneas largas pero no deshará ningún ajuste que ya tenga.


Si coloca el signo más en el principio de la línea, se formatea de manera diferente:

String query = "SELECT FOO, BAR, BAZ" + " FROM ABC" + " WHERE BAR > 4";


Termine cada una de las líneas con una barra doble "//". Eso evitará que eclipse los mueva a todos en la misma línea.


Tienes que activar la capacidad de agregar las etiquetas del formateador. En la barra de menú ir a:

Windows Preferencias Java Estilo de código Formateador

Presione el botón Editar . Elija la última pestaña. Observe el cuadro de activación / desactivación y habilítelos con una casilla de verificación.


Vea esta respuesta en SO .

Hay otra solución que puede utilizar para suprimir el formato de comentarios de bloque específicos. Use /*- (note el guión) al principio del comentario de bloque, y el formato no se verá afectado si formatea el resto del archivo.

/*- * Here is a block comment with some very special * formatting that I want indent(1) to ignore. * * one * two * three */

Fuente: Documentación en Oracle .