clang-format:如果params不合适总是打破?

时间:2014-02-23 09:37:29

标签: clang clang-format

我无法弄清楚是否可以将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无法做到这一点。这是对的吗?

2 个答案:

答案 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不适合一行。它不会在aaabbb之间中断,直到aaa也过长,在这种情况下bbbccc将在同一行。即它在打开(后中断,但随后尝试填充线条。它不会自动中断所有逗号。

查看clang-format clang-format的{​​{3}},好像这个配置选项似乎不存在。这为您提供了两个选项:

  1. 升级到较新版本的public String parseJSON(String jsonString) { try { JSONObject object = (JSONObject) new JSONTokener(jsonString).nextValue(); return object.getJSONObject(1).getString("teamName"); } catch (JSONException e) { return null; }
  2. 别。