IntelliJ Idea:Scala案例类成员的冒号对齐?

IntelliJ Idea:Scala案例类成员的冒号对齐?,scala,intellij-idea,ide,code-formatting,jetbrains-ide,Scala,Intellij Idea,Ide,Code Formatting,Jetbrains Ide,有没有办法防止Idea重新格式化多行case类成员 预期结果 (冒号的位置不是很重要,但是类型注释的对齐会很好) case类错误( 时间戳:LocalDateTime, 状态:Int, 代码:选项[字符串], 消息:String ) 我花了一段时间研究Scala的代码样式设置,我一直坚持这样的代码样式: case类错误( 时间戳:LocalDateTime, 状态:Int, 代码:选项[字符串], 消息:String ) 我可以用@formatter:off把代码弄得乱七八糟,但如果有更好的

有没有办法防止Idea重新格式化多行case类成员

预期结果
(冒号的位置不是很重要,但是类型注释的对齐会很好)

case类错误(
时间戳:LocalDateTime,
状态:Int,
代码:选项[字符串],
消息:String
)
我花了一段时间研究Scala的代码样式设置,我一直坚持这样的代码样式:

case类错误(
时间戳:LocalDateTime,
状态:Int,
代码:选项[字符串],
消息:String
)

我可以用
@formatter:off
把代码弄得乱七八糟,但如果有更好的方法,那就太棒了。

就像Madoc评论的那样,在添加新行时,这些格式可能会导致巨大的变化。此外,虽然在小的情况下很不错,但它不可扩展,而且我们似乎是在表中编程…

我的IntelliJ IDEA版本是ultimate 2019.3

第一步。首选项->编辑器->代码样式->Scala

第二步。包装和大括号->方法声明参数,然后 选中“对齐多行声明中的参数类型”

我试过这个例子,它是

case class ApiError(
                     timestamp: LocalDateTime,
                     status   : Int,
                     code     : Option[String],
                     message  : String
                   )
如果取消选中“多行时对齐”,则与预期结果一致


边注:考虑如果你真的想要这个。一旦您将代码格式化为这样,并且添加了一个新成员,其名称比其他成员长,您将看到VCS历史记录中的所有行都发生了更改,即使实际上只添加了一个成员。为什么一行的格式如此依赖于其他不相关的行最重要的是,您将代码设置为只能使用固定宽度字体正确查看。再说一遍,为什么?您所需的格式使您更容易了解用于成员的类型,但更难看到哪个成员具有哪种类型。@Madoc我同意与VC结合的缺点。目前,视觉分离(当然是高度主观的)为我证明了这一点(我在过去的两个JS项目中采用了类似的方式,并开始喜欢它构造代码的方式)。确切地说,我不一定希望Idea将其作为一个自动格式化选项提供,而是在重新格式化设置类型时作为一种保留。当然,这只是一种意见。就我个人而言,我转向了Scala代码的自动代码格式化。对于Java代码,我仍然保持打开状态。
case class ApiError(
  timestamp: LocalDateTime,
  status   : Int,
  code     : Option[String],
  message  : String
)