Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using vs code, how to get scala format to work and format my code?

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.

like image 283
Blankman Avatar asked Apr 06 '20 12:04

Blankman


2 Answers

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.

like image 88
Mario Galic Avatar answered Oct 17 '22 23:10

Mario Galic


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.

like image 2
Jayden Lee Avatar answered Oct 17 '22 22:10

Jayden Lee