derekwyatt / vim-scala

My work on integration of Scala into Vim - not a ton here, but useful for me.
http://derekwyatt.org
Apache License 2.0
1.09k stars 144 forks source link

Code formatting feature #155

Closed poslegm closed 5 years ago

poslegm commented 5 years ago

There is a great tool for automatic code formatting called scalafmt.

It will be great to be able to call it on current open file with one command like :ScalaFmt.

Similar feature realized in vim-go plugin for go fmt and it works well.

derekwyatt commented 5 years ago

I dunno if you'd want to spawn a JVM every time you wanted to format a file; this is something that is far more appropriate for SBT to do, IMHO. At any rate, I probably won't be writing this one, but if someone has a decent implementation, a PR would be fine.

poslegm commented 5 years ago

Oh, while writing this issue I relied on my experience with a scalafmt-intellij plugin which works very fast. But I missed out that Intellij plugin just call scalafmt functions from already running JVM.

I measured the launch time of scalafmt-cli and it will obviously annoy the user :unamused:
In this case, I see no reason to keep this issue open.

ches commented 5 years ago

FWIW there may be alternative ways to get this, through language server processes that stay active so are fast to invoke:

poslegm commented 5 years ago

Eventually I achive it in the following way:

  1. vim-autoformat plugin with config
    let g:formatdef_scalafmt = "'scalafmt --stdin'"
    let g:formatters_scala = ['scalafmt']
  2. scalafmt built with GraalVM. GraalVM allows instant scalafmt CLI launch:
    scalafmt --help  0,01s user 0,02s system 15% cpu 0,199 total

But without GraalVM it is unviable idea.