IntelliJ Scala Plugin的案例类缩进是荒谬的

lyo*_*omi 136 scala indentation intellij-idea case-class

当一个case类有很多字段并且它们的名字很长时,通常最好在每行中写下每个字段,如:

case class Person (
  name: String,
  age: Int
)
Run Code Online (Sandbox Code Playgroud)

这类似于C/C++ struct定义,即使案例类变大,也完全可读.但IntelliJ IDEA的默认Scala插件会自动更改其缩进:

case class Person (
                    name: String,
                    age: Int
                    )
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,但Scala风格指南没有提到任何关于案例类缩进的内容.

我在IDE设置中找不到任何可以改变此行为的内容.是否有一个选项可以使自动缩进像我上面描述的那样工作或禁用案例类的自动缩进?

Mic*_*cho 189

尝试文件 - >设置... - >代码样式 - > Scala

有很多设置可以自定义代码格式.

在"Wrapping and Braces"选项卡的"Method declaration parameters"下:

  • 检查"使用参数的正常缩进"
  • 取消选中"多行时对齐"

这会将其更改为您提供的示例.

如果您希望它在"Tabs and Indent"下的"Continuation indent"中使用缩进,则必须取消选中上述两个选项.

  • 我想你也必须禁用"多线时对齐". (22认同)
  • @BinWang:取消选中"使用参数的常规缩进"和"多行时对齐",并在"制表符和缩进"下将"延续缩进"设置为4 (6认同)
  • 如果你想在'文件 - >设置... - >代码样式 - > Scala - >其他'检查'4个空格缩进(根据Scala样式指南),用于4的构造函数args和参数声明的替代缩进 (6认同)