intellij-idea 在IntelliJ中,完成当前语句在Scala中的行为有所不同

cedebl8k  于 2022-11-01  发布在  Scala
关注(0)|答案(1)|浏览(173)

我最近升级了我的IDEA,现在使用IntelliJ IDEA 2022.2 Ultimate Edition。我发现Scala代码中的Complete Current Statement的行为与Java代码中的不同,这非常烦人。x1c 0d1x
例如,在Java代码中:

public static void main(String[] args) {
String foo = "bar"
}

在第2行的任意位置按下Complete Current Statement快捷键(shift+cmd+enter),将在行尾添加一个;,并且也将应用自动缩进:

public static void main(String[] args) {
    String foo = "bar";
}

然后再次按Complete Current Statement将带您到一个新的行时,没有更多的调整。

public static void main(String[] args) {
    String foo = "bar";

}

在以前版本的IntelliJ中,我大致记得Scala代码的行为是相同的。但是在这个版本的IntelliJ中,当我尝试在Scala代码中做同样的事情时,例如:

def foo (): Unit = {
throw new RuntimeException
  }

当我在第2行按下Complete Current Statement时,什么也没发生。
有没有人能帮我看看我为什么或者应该如何配置以与Java代码的行为保持一致?非常感谢!

mepcadol

mepcadol1#

在Scala中不需要使用分号,因为分号是可选的,而且几乎从不使用。实际上,Scala代码示例已经是一个“完整的语句”。
对于格式化,我建议设置File-〉Settings-〉Tools-〉Actions on save,并选中Reformat code和可选的Optimize imports,每当你使用Ctrl + S保存源文件时,它都会同时执行这两项操作。
Scala也有自己的格式化程序Scalafmt,它可以根据你的喜好设置不同的Scala特性,可以更好地控制它们的格式。这个格式化程序位于Settings-〉Editor-〉Code Style-〉Scala
如果出于某种原因,您仍然希望使用快捷键,那么Complete current statement对Scala代码所能做的唯一事情就是自动缩进当前行,但由于某种原因,它没有这样做,因此这似乎是Intellij的一个bug。但您可以做的是替换Auto-Indent Lines快捷键,使用您的Complete current statement快捷键,并获得相同的行为。

相关问题