2016-07-15 14 views
7

Tôi đang sử dụng các tùy chọn sau trong tập tin .clang-format tôi:kêu vang định dạng: Căn dấu sao (*) kê khai con trỏ với biến tên

AlignConsecutiveDeclarations: true 
PointerAlignment: Right 

Kết quả định dạng hiện nay là như sau:

char *   var1; 
SomeOtherType *var2; 
int   var3; 

kết quả tôi đã mong đợi sẽ là:

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

Làm thế nào tôi có thể cấu hình clang-format để căn chỉnh dấu hoa thị (*) với tên biến thay vì sau đó với loại khi tôi là bằng cách sử dụng tùy chọn AlignConsecutiveDeclarations?

Trả lời

7

PointerAlignment: Right thật không may là chưa được triển khai.

Xem 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); 
} 
Các vấn đề liên quan