使用 vs code,如何让 scala 格式工作并格式化我的代码?

Bla*_*man 7 scala sbt visual-studio-code scalafmt scala-metals

我的多项目 sbt 存储库中有 scala 格式插件。

addSbtPlugin("org.scalameta"    % "sbt-scalafmt"        % "2.3.2")
Run Code Online (Sandbox Code Playgroud)

所以在 sbt 控制台中如果我运行 scalafmt 它工作正常

我的 build.sbt 有:

scalafmtOnCompile := true
Run Code Online (Sandbox Code Playgroud)

如果我在 sbt 中执行 ~compile 或只是手动编译,它不会在编译期间格式化我的代码。

我的设置有什么问题吗?

另外,运行 scalafmt 可以工作,但它不会像我的 Dependency.scala 文件那样格式化 /project 中的 .scala 文件。为什么它忽略这些文件?

我也使用带有金属的 VS Code 作为我的 IDE。

Mar*_*lic 7

Scalafmt似乎可以在我的机器上使用开箱即用的 Metals 在 VSC 中工作

Metals 根据...中定义的配置,自动使用 Scalafmt 响应来自编辑器的格式化请求。 .scalafmt.conf如果没有.scalafmt.conf,在收到第一个格式请求后,Metals 将为您创建 .scalafmt.conf 文件。

只需Format Document从 VSC 中执行命令Command Palette,它应该根据以下格式进行格式化.scalafmt.conf.如果您想在每次源更改时连续格式化和编译并且scalafmtOnCompile不起作用,请尝试在 sbt 中执行

~scalafmt;compile
Run Code Online (Sandbox Code Playgroud)

然而,根据文档,不鼓励编译时使用格式

不鼓励使用此选项,因为它会弄乱编辑器中的撤消缓冲区并减慢编译速度。建议在编辑器中使用“保存时格式化”。