2015-06-10 19 views
15

Desidero utilizzare il formato clang per allineare i miei commenti, ma nient'altro.Come posso applicare solo un'azione clang-format?

L'opzione è: AlignTrailingComments (bool).

Ma quando ho eseguito il seguente:

clang-format-3.6 -i -style='{AlignTrailingComments: true}' <file> 

Esegue tutti i tipi di altre opzioni di formattazione che suppongo hanno un default quando non specificato.

Come posso eseguire una sola regola di formattazione clang sulla base di codici?

Avendo tutti questi valori di default rendono difficile vedere l'effetto completo che una singola opzione di formattazione ha sul codice. Devo analizzare il diff di tutte queste altre modifiche e decidere se è stata l'opzione che ho specificato che effettivamente l'ha fatto.


ho notato che c'è un DisableFormat un'opzione, ma non importa come lo uso, si ferma qualsiasi formattazione accada a tutti.

clang-format-3.6 -i -style='{AlignTrailingComments: true, DisableFormat: true}' 

clang-format-3.6 -i -style='{DisableFormat: true, AlignTrailingComments: true}' 

Entrambe fanno sì che il formato clang non crei alcun codice.

+0

penso che dovresti specificare 'BasedOnStyle' – bolov

+0

dovresti provarlo come plug-in (ad es. Per Vim, Visual-Studio). È molto utile da usare in questo modo. – bolov

+0

@bolov Come plugin, applicherà ancora più di una regola di formattazione? Ci sono molti stili di formattazione in conflitto nella nostra base di codice, e non voglio ingombrare un commit con tutte queste modifiche aggiuntive che influenzano le porzioni di codice di altre persone. Voglio solo applicare un singolo cambiamento di stile in modo che altre persone possano consumare il cambiamento e gestire i conflitti di fusione più facilmente. Non è pratico iscriversi a un intero stile di codice utilizzando BasedOnStyle in questo momento. –

risposta

3

Penso che il formato clang non fosse semplicemente progettato per questo. Le regole non sono cose che si applicano in modo incrementale, il programma è invece costruito attorno, analizzando l'intero programma e dimenticando (la maggior parte) il vecchio spazio bianco e generando nuovi spazi bianchi in base alle regole selezionate.

Potete vedere alcuni panoramica dell'architettura qui: http://www.llvm.org/devmtg/2013-04/jasper-slides.pdf

In primo luogo si corre clang lexer e parser, quindi divide gruppi di gettoni in "linee da scartare", che sono "gettoni vorremmo mettere insieme su un riga singola se non c'era limite di colonna ". Quindi un layouter determina la formattazione di ogni linea non confezionata in base ai vari vincoli e ottimizzando le varie penalità.

Quindi, non penso che "un'azione in un unico clang" sia effettivamente una cosa, il design mi sembra piuttosto monolitico.

+0

Sfortunatamente, questa sembra essere la risposta corretta. –

Problemi correlati