2012-02-08 23 views
8

puede eclipsar configurarse formateador y el código de limpieza (o extendida) para añadir la sangría espero que en los siguientes ejemplos:¿Se puede configurar el formateador Eclipse para sangrar varias líneas entre paréntesis correctamente?

public static void main(String[] args) { 
    String[] numbers = new String[] { 
     "one", 
     "two", 
     "three", 
     "four", 
    }; 

    new MessageFormat("{0} {1} {2} {3}").format(
     "this is string one", 
     "this is string two", 
     "this is string three" 
    ); 

    System.out.println(
     new MessageFormat("{0} {1} {2} {3}").format(
      new String[]{ 
       "this is string zero", 
       "this is string one", 
       "this is string two", 
       "this is string three" 
      } 
     ) 
    ); 
} 

He jugado un poco con todos los ajustes que puedo encontrar. La opción "Nunca unirse a las líneas de" guarda de carnicería completamente el código, pero incluso entonces la sangría está todo pelado y el código sale así:

String[] numbers = new String[] { 
    "one", 
    "two", 
    "three", 
    "four", 
    }; 

    new MessageFormat("{0} {1} {2} {3}").format(
    "this is string one", 
    "this is string two", 
    "this is string three" 
    ); 

    System.out.println(
    new MessageFormat("{0} {1} {2} {3}").format(
    new String[] { 
    "this is string zero", 
    "this is string one", 
    "this is string two", 
    "this is string three" 
    } 
    ) 
    ); 

descubrí la capacidad de desactivar el formato de alrededor de tales bloques como esto:

// @formatter:off 
    String[] numbers = new String[] { 
     "one", 
     "two", 
     "three", 
     "four", 
    }; 
    // @formatter:on 

¿Qué es un trabajo decente en todo, excepto que mi código termina en desorden con ellos, y la parte "correcta sangría" de limpieza del código hace caso omiso de la Directiva y meta la pata de la sangría de todos modos.

Editar: Encontré la configuración para "Line Wrapping" -> "Indentación predeterminada para líneas envueltas" y "Indentación predeterminada para inicialización de matriz" y las establecí en "1" en lugar de "0". Es mejor para los inicializadores de matriz, pero todavía no parethesis cierre guión para que coincida con el paréntesis de apertura de la manera que yo quiero que:

public static void main(String[] args) { 
    String[] numbers = new String[] { 
     "one", 
     "two", 
     "three", 
     "four", 
    }; 

    new MessageFormat("{0} {1} {2} {3}").format(
     "this is string one", 
     "this is string two", 
     "this is string three" 
     ); 

    System.out.println(
     new MessageFormat("{0} {1} {2} {3}").format(
      new String[] { 
       "this is string zero", 
       "this is string one", 
       "this is string two", 
       "this is string three" 
      } 
      ) 
     ); 
} 
+0

Sí; cambie las sangrías para cada uno de los constructos. Hay 3-4 opciones para cada uno. Tiene una configuración bastante desastrosa si aplana algo, de manera predeterminada creo que obtengo el formato que desea. –

Respuesta

1

¿verificó pestaña ajuste de línea. si selecciona "Ajustar todos los elementos, cada elemento en una nueva línea" para Expresiones/Inicializadores de matriz y Llamadas de función/Argumentos de asignación de objeto Qalified, creo que obtendrá algo similar

+4

Solo quiero que arregle la sangría, pero nunca dividir líneas para mí. Todavía quiero poder hacer matrices de una línea y llamadas de método: new int [] {1,2,3}; call.method ("uno", "dos"); En el caso de los inicializadores de matriz, incluso cuando tengo líneas divididas para mí, no coloca la llave de cierre en una nueva línea y hace la sangría para que se alinee con la llave de apertura, la pone después de la última matriz elemento. –

Cuestiones relacionadas