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

Resuelto Greg Mattes asked hace 14 años • 14 respuestas

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

He dividido semánticamente las sentencias SQL en varias cadenas concatenadas en varias líneas de código para facilitar el mantenimiento. Entonces 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 SQL sea mucho más fácil de leer y mantener (en mi humilde opinión), especialmente para consultas más grandes. Por ejemplo, puedo poner mi editor en modo "sobrescribir" y modificar el texto in situ con bastante facilidad.

Tenga en cuenta que este problema se 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 utilizan el editor Eclipse y el formato semántico a menudo se destruye cuando dan formato a un archivo fuente completo.

¿Hay alguna manera de indicarle a Eclipse que ignore ciertas líneas de código fuente con respecto al formato?

Estoy buscando algo así como un comentario especial que alterne el formateador de Eclipse. Idealmente, dicho comentario podría configurarse para que sea 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 algún formateador externo como Jalopy o JIndent , pero de eso no se trata esta pregunta (tampoco es mi decisión sobre este proyecto): estoy buscando específicamente una manera de Evite el formateador de Eclipse de forma ad hoc.

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

Greg Mattes avatar Nov 30 '09 23:11 Greg Mattes
Aceptado

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

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

Las funciones de activación/desactivación deben estar "activadas" en las preferencias de Eclipse: Java > Code Style > Formatter. Haga clic en Edit, Off/On Tags, habilitar Enable Off/On tags.

También es posible cambiar las cuerdas mágicas en las preferencias; consulte los documentos de Eclipse 3.6 aquí .

Más información

Java > Code Style > Formatter > Edit > Off/On Tags

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

ingrese la descripción de la imagen aquí

También necesitas habilitar las banderas deJava Formatting

xpmatteo avatar Jul 28 '2010 14:07 xpmatteo

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. Quizás eso haga lo que quieres.

Si no, existe este feo truco.

String query = //
    "SELECT FOO, BAR, BAZ" + //
    "  FROM ABC"           + //
    " WHERE BAR > 4";
jitter avatar Nov 30 '2009 16:11 jitter

Vea esta respuesta en SO .

Existe otra solución que puede utilizar para suprimir el formato de comentarios de bloque específicos. Utilice /*-(tenga en cuenta el guión) al principio del comentario del 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 .

Renaud avatar Apr 11 '2014 15:04 Renaud

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

Propiedades → Estilo de código Java → Formateador → Habilitar configuraciones específicas del proyecto O Configurar ajustes del espacio de trabajo → Editar → Ajuste de línea (pestaña) → marque "No unir nunca líneas ya ajustadas"

Guardar, aplicar.

ingrese la descripción de la imagen aquí

ilinca avatar Jul 31 '2014 14:07 ilinca

Si coloca el signo más al principio de la línea, el formato será diferente:

String query = 
    "SELECT FOO, BAR, BAZ" 
    +    "  FROM ABC"           
    +    " WHERE BAR > 4";
CPerkins avatar Nov 30 '2009 16:11 CPerkins