2016-07-15 20 views
7

ich die folgenden Optionen verwende in meiner .clang-format Datei:Klirren-Format: Richten Stern (*) der Zeigerdeklaration mit Variablennamen

AlignConsecutiveDeclarations: true 
PointerAlignment: Right 

Die aktuelle Formatierung Ergebnis ist folgendes:

char *   var1; 
SomeOtherType *var2; 
int   var3; 

Das Ergebnis erwarte ich wäre:

char   *var1; //note the changed position of * 
SomeOtherType *var2; 
int   var3; 

Wie kann ich konfigurieren clang-format, um das Sternchen (*) mit dem Variablennamen anstatt mit dem Typ, wenn ich bin mit der AlignConsecutiveDeclarations Option?

Antwort

7

PointerAlignment: Right ist leider noch nicht implementiert.

Siehe https://github.com/llvm-mirror/clang/blob/release_39/lib/Format/WhitespaceManager.cpp#L327-L340

void WhitespaceManager::alignConsecutiveDeclarations() { 
    if (!Style.AlignConsecutiveDeclarations) 
    return; 

    // FIXME: Currently we don't handle properly the PointerAlignment: Right 
    // The * and & are not aligned and are left dangling. Something has to be done 
    // about it, but it raises the question of alignment of code like: 
    // const char* const* v1; 
    // float const* v2; 
    // SomeVeryLongType const& v3; 

    AlignTokens(Style, [](Change const &C) { return C.IsStartOfDeclName; }, 
       Changes); 
}