我无法弄清楚是否可以将clang-format配置为在参数不适合时始终中断,即:
// Try this first:
SomeCall(aaa, bbb, ccc);
// If doesn't fit, try this:
SomeCall(
aaa, bbb, ccc);
// If still doesn't fit, do NOT try this:
SomeCall(aaa, bbb,
ccc);
// and NOT this:
SomeCall(aaa,
bbb,
ccc);
// but immediately do this:
SomeCall(
aaa,
bbb,
ccc);
到目前为止,我已经得出结论,使用clang-format 3.4无法做到这一点。这是对的吗?
答案 0 :(得分:5)
在较新版本的clang格式中,现在可以通过以下方式实现:
AlignAfterOpenBracket: AlwaysBreak
BinPackArguments: false
BinPackParameters: false
有关这些选项的完整说明,请参阅https://clang.llvm.org/docs/ClangFormatStyleOptions.html。
答案 1 :(得分:1)
我很遗憾只能访问clang-format
3.8.0(“clang-format version 3.8.0 (tags/RELEASE_380/final)
”),因此我无法轻松测试3.4版。
有clang-format
可用here的最新版本的手册,如果您找到与否,我不知道。它链接到Clang-Format Style Options列表。在那里,有一个样式选项与你的问题的标题相呼应:AlignAfterOpenBracket: AlwaysBreak
,如果参数不适合一行,总是在开括号后中断。
要使用此功能,请将以下内容放入~/.clang-format
文件中:
AlignAfterOpenBracket: AlwaysBreak
经过一些测试后,它似乎完全按照您的意愿行事,差不多。
格式化
SomeCall(aaa, bbb, ccc);
作为
SomeCall(
aaa, bbb,
ccc);
如果aaa, bbb, ccc
不适合一行。它不会在aaa
和bbb
之间中断,直到aaa
也过长,在这种情况下bbb
和ccc
将在同一行。即它在打开(
后中断,但随后尝试填充线条。它不会自动中断所有逗号。
查看clang-format
clang-format
的{{3}},好像这个配置选项似乎不存在。这为您提供了两个选项:
public String parseJSON(String jsonString) {
try {
JSONObject object = (JSONObject) new JSONTokener(jsonString).nextValue();
return object.getJSONObject(1).getString("teamName");
}
catch (JSONException e) {
return null;
}
。