2016-08-25 100 views
0

我喜歡用指示符,可能當定義我數組值:鐺格式去除在數組定義新線與指示符

enum Mode { 
    NONE, 
    SPLIT_FILES, 
    SINGLE_FILE, 
    INVALID 
}; 

const std::string ModeName[] = { 
    [NONE] = "NONE", 
    [SPLIT_FILES] = "SPLIT_FILES", 
    [SINGLE_FILE] = "SINGLE_FILE", 
    [INVALID] = "INVALID" 
}; 

通過clang-format(3.5)運行該軋液機的新的生產線,並使其小於可讀:

enum RecorderMode { REC_NONE, REC_SPLIT_FILES, REC_SINGLE_FILE, REC_INVALID }; 

const std::string RecorderModeName[] 
    = {[REC_NONE] = "NONE", [REC_SPLIT_FILES] = "SPLIT_FILES", [REC_SINGLE_FILE] = "SINGLE_FILE", 
     [REC_INVALID] = "INVALID" }; 

該數組定義有幾個問題:= {被移動到下一行。如果在最後一個數組輸入後添加逗號,則這些行會縮進兩次。

有沒有辦法保持新的行和縮進,使用鐺格式關閉評論?

This顯示enum(在最後一個常量後添加一個逗號,或在逗號後面添加尾部註釋)的解決方法,但它似乎不適用於該數組。

+1

我在很多方面發現了clang格式想要之後,我已經成爲[uncrustify](https://github.com/uncrustify/uncrustify)的粉絲。這並不完美,但至少它不斷進步。沒有輸入uncrustify不會改變你的佈局;然而,[9次要的默認值](https://github.com/uncrustify/uncrustify/blob/master/documentation/htdocs/configuration.txt)(第25行)。爲了讓所有枚舉看起來如何,你可以使用'nl_enum_own_lines = force'。我仍然在學習,所以我不確定如何安排陣列。但是它也會默認保留它。 –

+0

@NoviceC:一年多之後,我在GNU indent和clang格式的憤怒退出之後,肆無忌憚地進行了uncrustify。我喜歡它,它好多了!我希望我在一年前建議它時嘗試過。你現在可能會更好,但如果不讓我建議[universalindentgui](http://universalindent.sourceforge.net/)。它會實時顯示所有選項及其效果。 – Gauthier

回答

0

This answer給了我一個可以接受的解決方法:

設置ColumnLimit 0權衡的是,沒有行可以自動換,但是這是值得的。所有在工作的程序員都傾向於不寫過第120列。