I have the scala format plugin in my multi project sbt repository.
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.3.2")
So in the sbt console if I run scalafmt it works fine
My build.sbt has:
scalafmtOnCompile := true
If I do a ~compile in sbt or just compile manually, it doesn't format my code during compilation.
What is wrong with my setup?
Also, running scalafmt works but it doesn't format my .scala files in /project like my Dependencies.scala file. Why is it ignoring these files?
I am using VS Code with metals also as my IDE.
Scalafmt seeems to work in VSC with Metals out-of-the-box on my machine
Metals automatically uses Scalafmt to respond to formatting requests from the editor, according to the configuration defined in
.scalafmt.conf
... if there is no.scalafmt.conf
, upon receiving the first format request Metals will create the .scalafmt.conf file for you.
Simply execute Format Document
command from Command Palette
in VSC and it should format according to .scalafmt.conf.
If you would like to continuously format and compile on every source change and scalafmtOnCompile
is not working, then try executing in sbt
~scalafmt;compile
however format on compile is discouraged as per documentation
This option is discouraged since it messes up undo buffers in the editor and it slows down compilation. It is recommended to use "format on save" in the editor instead.
In VS Code, if you go into File -> Preferences - > Settings
and type in editor.format
, you'll see a bunch of options.
Enable all of them and it metals should apply all of the changes according.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With