使用 IntelliJ 在 Scala 中格式化部分函数,​​如匹配函数

Format partial functions like match functions in Scala with IntelliJ

IntelliJ(14.0.3,Scala 插件 1.4)在函数之后格式化常规 case/match 块(这来自一些 HTTP 代码):

get("/work") { x => x match {
  case (200, result) => ...
  case _ => ...
}
             } // I'm not worried about this brace

如果我折叠那个明显的 x => x match,它的格式如下:

get("/work") {
               case (200, result) => ...
               case _ => ...
             }

如果对 get("/work") 的调用使用更长的 url(就像我在某些地方所做的那样),这种格式会变得混乱。如果我有更多的嵌套东西,情况会变得更糟。

有没有办法让 IntelliJ 格式化 case 语句相对于原始语句缩进一个制表位,而不是相对于左大括号?

事实证明,这是设置正确的代码样式选项的问题。

在设置 -> 编辑器 -> 代码风格 -> Scala,环绕和大括号 -> 方法调用参数中,如果 Align when multiline 开启,Do not align block expression parameters 必须开启。