2013-02-21 8 views
9

IDEA o uno dei suoi plugin è in grado di allineare il codice a caratteri speciali?Formattazione del codice: come allineare il codice multilinea a caratteri speciali?

voglio dire in modo che il codice

Map(
    'name -> "Peter", 
    'age -> 27, 
    'company -> "Foobar" 
) 

si trasforma per

Map(
    'name -> "Peter", 
    'age  -> 27, 
    'company -> "Foobar" 
) 

Esempio 2:

execute("x", true, 27) 
execute("foobar", false, 0) 

trasformato per

execute("x"  , true , 27) 
execute("foobar", false, 0) 
+0

Non esiste una soluzione generica per tutte le lingue e le parti di codice, ogni caso richiede il supporto del formattatore specifico della lingua. L'opzione è chiamata [allinea quando multilinea] (http://img13.imageshack.us/img13/2453/20130221161759.png). Se non è ancora supportato per la tua lingua o caso d'uso, [invia una richiesta di funzionalità] (http://youtrack.jetbrains.net/issues/IDEA) e potrebbe essere implementato nelle versioni future. – CrazyCoder

+0

Sono con te, Stefan, ma trovo che farlo manualmente non sia un grosso ostacolo alla codifica, dal momento che si spende molto più tempo solo pensando di ottenere gli algoritmi e le strutture giuste. Tuttavia ... Nessuna parentesi orfana o vedova, OK? –

+0

Se apri una richiesta di funzione, inseriscile qui, così possiamo procedere con l'upvoting. Questa sarebbe sicuramente una grande caratteristica, uso sempre questo tipo di formattazione, e odio farlo manualmente. –

risposta

1

In IDEA 12 se si utilizza il plugin Scala è possibile configurare "Allinea quando multilinea" per molte cose, tra cui la parentesi del metodo. Il tuo particolare esempio di invocazioni multiple su linee separate non è tuttavia supportato.

4

È possibile allineare istruzioni case, però:

value match { 
    case s: String => Some(java.lang.Long.parseLong(s)) 
    case bi: BigInt => Some(bi.longValue) 
    case _ => None 
} 

Come così:

value match { 
    case s: String => Some(java.lang.Long.parseLong(s)) 
    case bi: BigInt => Some(bi.longValue) 
    case _   => None 
} 

opzione Usa:

Impostazioni -> Codice di stile -> Scala => Wrapping e bretelle - > istruzioni 'match' e 'case' -> Allinea in colonne 'case' branches

+0

È possibile applicare questo stile alle funzioni parziali? – kisileno

+0

Sì, è possibile e funziona. Ho avuto delle righe vuote tra le dichiarazioni "case" e questo è il motivo per cui non ha funzionato. – kisileno

0

Il formattatore di codice sembra essere un solution.

+0

Sembra promettente. Purtroppo non ho potuto farlo funzionare in IDEA. –

+0

Funziona perfettamente per me. Mi ci sono voluti 5 minuti per configurarlo. – jhegedus

+0

OK, ho funzionato. Alcuni pensano che siano davvero belli. D'altra parte mi mancano due caratteristiche importanti: il supporto per schede e schede intelligenti e il supporto per la riformattazione parziale dei file in base alla selezione. Inoltre il mio "Esempio 2" non è supportato da scalafmt. Ad ogni modo, sembra molto promettente e potrebbe essere una buona soluzione per molte persone. –

Problemi correlati