2010-11-13 11 views
46

Ho appena creato un generatore per alcune interfacce fluenti. Ora ho un sacco di codice simile a questo:Come indentare il pattern di interfaccia fluente "correttamente" con eclissi?

new MyFluentInterface() 
    .setFirst("first") 
    .setSecond("second") 
    .setThird("third") 
    .invoke(obj); 

Mi piace il rientro mostrato sopra, ma non riesco a trovare un modo per configurare Eclipse per far rientrare questo modo corretto.

eclisse fa rientrare sempre così:

new MyFluentInterface() 
.setFirst("first") 
.setSecond("second") 
.setThird("third") 
.invoke(obj); 

Come posso configurare eclisse in modo che fa rientrare questo schema interfaccia fluida, come mostrato nel mio primo esempio di codice?

+0

Vuoi che il formattatore lo faccia? Intendo "CONTROL + SHIFT + f" sull'intero buffer o vuoi essere in grado di indentare solo quella riga? – dacwe

+0

Sarebbe bello se il formattatore o il penetratore di eclissi potesse produrre questo ... – tangens

+1

Ciao, so che questo è un vecchio thread, hai notato che 'Ctrl + A',' Ctrl + I' annulla questa formattazione? – durron597

risposta

63

Con Eclipse 3.6, sembra fattibile configurando il tuo profilo personalizzato Java> Stile codice> Formatter. Modificalo e vai alla scheda Line Wrapping e seleziona Chiamata di funzione> Chiamate qualificate. Poi, nei Impostazioni per invocazioni qualificati, configurare le cose in questo modo:

alt text

questo sarà (dovrebbe) produrre il risultato atteso:

SomeEntity e1 = new SomeEntity.Builder() 
    .age(10) 
    .amount(10.0d) 
    .firstname("foo") 
    .lastname("bar") 
    .build(); 

Ma questo sarà ovviamente interesserà tutto il codice , che personalmente non mi piace. Così sto utilizzando il nuovo Off/On Tags da Eclipse 3.6 (ultima scheda quando si modifica un profilo):

alt text

E racchiudere le parti che non vengono formattati come voglio e fare io stesso:

// @formatter:off 
SomeEntity e2 = new SomeEntity.Builder() 
    .age(10) 
    .amount(10.0d) 
    .firstname("foo") 
    .lastname("bar") 
    .build(); 
// @formatter:on 

Scegli il tuo veleno :)

+1

Non avevo notato i tag off/on prima, molto bello. –

+0

bella risposta (+1). ora se conosci anche un plugin di eclissi che genera setter fluenti ... :-) –

+4

@seanizer: In realtà, quanto sopra è il risultato del [Builder Pattern Eclipse Plugin] (http://boss.bekk.no/ bpep /). Mi piace questo piccolo plug-in così com'è :) –

Problemi correlati