Skip to main content

Metals v0.11.3 - Aluminium

· 11 min read

We're happy to announce the release of Metals v0.11.3.

Commits since last release231
Merged PRs110
Contributors17
Closed issues21
New features7

This release uses a new version of Bloop. This should fix a few bugs regarding e.g. stale diagnostics in Scala 3. Moreover, the new release brings also a few UX improvements regarding Doctor view and running/debugging your code.

For full details: https://github.com/scalameta/metals/milestone/48?closed=1

Metals is a language server for Scala that works with VS Code, Vim, Emacs and Sublime Text. Metals is developed at the Scala Center and VirtusLab with the help from Lunatech along with contributors from the community.

TL;DR

Check out https://scalameta.org/metals/, and give Metals a try!

  • Add more information to the Doctor view
  • Create companion object code action
  • Add status bar when starting a debug session
  • Ensure the "no run or test" message is shown to user.
  • Show better unnaply signatures
  • Provide an easier way to configure bloop settings
  • Better MUnit support in Test Explorer
  • Better sbt BSP integration
  • Improved Scala3 support

Add more information to the Doctor view

Thanks to the joined effort of #3772, #3763 and #3710 the Doctor view currently:

  • shows the Metals server version and information about Java used to run the Metals server
  • displays the compilation status of project
  • allows to navigate to the build target info for each target

new-doctor-view

Create companion object code action

Thanks to the efforts of zmerr, Metals offers a new code action - Create companion object. As its name suggests, it can be used to automatically create a companion object for the given class, trait or enum.

create-companion-object-code-action Theme: One Dark Pro

Add status bar when starting a debug session

Starting a debug session is a complex task, which requires a few steps:

  • Metals has to compile your project and create a debug session
  • debugger has to be initialized (configuration, breakpoints, etc.)

Very often each of these steps takes up to a few seconds in order to complete. Until now, the user had no idea what is happening because Metals didn't show any progress indicator. ckipp01 addressed this problem and added a status bar for each of the steps.

start-debug-session-status-bar Theme: One Dark Pro

Ensure the "no run or test" message is shown to user.

There is a command Run main class or tests in current file which is a convenient way, as name suggests, of running main class: run-main Theme: One Dark Pro

or running tests in the current file: run-tests Theme: One Dark Pro

It is also possible to just press F5 in file and Metals will execute main class or run tests in the current file if no run configuration is defined.

However, this command was silently failing when there was no class or test to run in the file. This is no longer the case, now Metals will display proper error message in this scenario. no-class-to-run Theme: One Dark Pro

Show better unnaply signatures

Previously, when pattern matching Metals was showing real unnaply method signature, which wasn't very useful. Now, Metals properly uses unapply result type to show what types can be matched on. unnaply-signatures Theme: One Dark Pro

Provide an easier way to configure bloop settings

Bloop JVM options can be configured through a global config file. Thanks to the zmerr, Metals is capable of changing those settings. Each modification of Bloop Jvm Properties settings will try to update that global file if possible. In case of manually configured settings, Metals will inform user about it and ask for their action.

update-bloop-settings Theme: One Dark Pro

Better MUnit support in Test Explorer

Disclaimer: this works only when Bloop is a build server

Test Explorer in Metals is now able to detect some single test cases for MUnit test framework. munit-single-tests Theme: One Dark Pro

More information about current MUnit support status can be found at this issue.

Better sbt BSP integration

From this release Metals will no longer run the compilation when sbt generates files under the src-managed directory. The previous behaviour was related to some of the source generating sbt plugins. When used with sbt BSP users would experience continuous compilation. For more details, see #2183.

Improved Scala3 support

Metals 0.11.3 now includes some better Scala3 supports in go-to-definition, rename symbols, and displaying hover.

For more information, check out the following pull requests:

Contributors

Big thanks to everybody who contributed to this release or reported an issue!

$ git shortlog -sn --no-merges v0.11.2..v0.11.3
32 Rikito Taniguchi
30 Scala Steward
19 Tomasz Godzik
17 Vadim Chelyshov
15 Kamil Podsiadło
15 zmerr
12 ckipp01
11 Alexandre Archambault
5 Kamil Podsiadlo
4 Martin Duhem
3 Arthur McGibbon
3 tgodzik
2 Georg Pfuetzenreuter
1 Gabriele Petronella
1 Chris Kipp
1 dependabot[bot]
1 Jens Petersen

Merged PRs

v0.11.3 (2022-04-26)

Full Changelog

Merged pull requests: