2014-11-24 7 views
24

Ist es möglich, Clang-Format Align-Variablenzuweisungen in Spalten zu haben? Zum Beispiel:Kann clang-Format Variablen- oder Makrozuweisungen in Spalten ausrichten?

int someInteger    = 42; 
std::string someString  = "string"; 
const unsigned someUnsigned = 42; 

#define SOME_INTEGER  42 
#define SOME_STRING_LITERAL "string" 
#define SOME_CONSTANT  42 

enum Enum { 
    ONE = 1, 
    TWO = 2, 
    THREE = 3, 
    FOUR = 4, 
    FIVE = 5, 
    SIX = 6, 
    SEVEN = 7 
}; 

ist besser lesbar als:

int someInteger = 42; 
const unsigned someUnsigned = 42; 
std::string someString = "string"; 

#define SOME_INTEGER 42 
#define SOME_STRING_LITERAL "string" 
#define SOME_CONSTANT 42 

enum Enum { 
    ONE = 1, 
    TWO = 2, 
    THREE = 3, 
    FOUR = 4, 
    FIVE = 5, 
    SIX = 6, 
    SEVEN = 7 
}; 

Ich weiß, dass es dies für Klirren-Format nicht immer praktisch sein kann, aber wenn der Code wie bereits manuell wie der Code formatierte Es wäre schön, wenn das Clam-Format die Formatierung an Ort und Stelle belässt.

+0

[uncrustify] (http://uncrustify.sourceforge.net/) hat eine Option dafür, aber kein Clang-Format. – Jarod42

+1

Es ist schockierend für mich, dass es das nicht unterstützt. Im Grunde macht das Clang-Format IMO unbrauchbar. – David

+0

Die entsprechende Option von uncrustify ist: align_pp_define_span – Cofyc

Antwort

8

Es sieht aus wie 3,7 unterstützt so etwas (noch nicht getestet).

Vom docs

AlignConsecutiveAssignments (bool)
If true, aligns consecutive assignments.

This will align the assignment operators of consecutive lines. This will result in formattings like code int aaaa = 12; int b = 23; int ccc = 23; endcode

(sic)

+0

das scheint gut zu funktionieren – syvex

+2

@syvex, musstest du etwas besonderes machen, damit das funktioniert? Ich erhalte 'Fehler: unbekannter Schlüssel 'AlignConsecutiveAssignments'' –

+2

Dies funktioniert tatsächlich nicht für Präprozessor-Makros. Ich versuche derzeit, dies als eine separate Option hinzuzufügen, sehen Sie die neuesten Commit auf diesem Zweig https://github.com/eriknyquist/clang/tree/align_defines –

1

Clang-Format hat keine Option, dies zu tun.

Wenn Sie Klirren-Format sagen, will allein bestimmte Linien zu verlassen, können Sie es so mit // clang-format off und // clang-format on Kommentare behelfen.

+0

Irgendwie hatte ich kein Glück mit '// clang-format off' für diese ... – syvex

+1

@syvex Welche Version benutzen Sie? Es sieht so aus, als wäre es seit der Version 3.5 ein neues Feature. – bames53

1

Getestet habe ich es https://github.com/mattga/ClangFormat-Xcode/tree/clang_3.7 mit dem Zweig ist ClangFormat-Xcode 3.7 zu unterstützen.

Ich könnte a = 9999 formatieren; Geben Sie die gewünschte Liste ein, wie von der Option gewünscht

AlignConsecutiveAssignments = true

. Aber Definitionen wurden nicht ausgerichtet. Gibt es Hinweise darauf, sie auszurichten?