2016-08-25 99 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列。