¿Cómo desactivar el formateador de código Eclipse para ciertas secciones del código Java?
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-FORMATTING
→ STOP-FORMATTING
).
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):
También necesitas habilitar las banderas deJava Formatting
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";
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 .
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.
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";