We are happy to announce the release of Metals v0.8.4, which will most likely be the last 0.8.x version.

Commits since last release 174 Merged PRs 55 Contributors 9 Closed issues 13 New features 3

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

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

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

navigating to parent method

support for launch.json

new "Create new symbol" code action

miscellaneous improvements

Navigating to parent method

Metals will now calculate if any definition of a method in the current file overrides another method, in which case it will show a new lens next to the method's position. Once clicked, the user will be able to go to the super method. Lenses also link to methods in external dependencies and are displayed in files from libraries. For this new feature to work make sure that you enable code lenses in your client.

If they are found to be disturbing your workflow they can be easily disabled via the metals.superMethodLensesEnabled configuration option - they are enabled by default. For example in Visual Studio Code:

These new lenses should be quick to calculate but if you notice significant slowdown you can also disable them, since when disabled they are not only not displayed but also not calculated at all.

There is also an exposed server command goto-super-method that can be mapped and used through shortcut in Visual Studio Code.

It is possible to also navigate the whole inheritance hierachy at once using the new super-method-hierarchy command.

This new command can be invoked on a method definition. It calculates super method hierarchy and if more than one position is found it displays a quickPick window (same as the new scala file feature) which displays all super methods and allows a user to select one and jump to its definition.

As an example in Visual Studio Code it can be bound to a shortcut this way:

Thanks to kpbochenek from VirtusLab for this new feature!

Support for 'launch.json'

Previously, it was only possible to launch main classes or tests via code lenses that would appear above a particular class. Now, we add a way for a user to be able specify the name of the the class or test to run. We will then automatically try to detect the build target, which that class/test belongs to and run it. In this release, we also add a way to specify the main class arguments.

While this will be primarily useful for the Visual Studio Code Metals extension, it will also make it easier for other editors that support the Debug Adapter Protocol. To obtain the uri needed for starting a debug session users can now execute the debug-adapter-start command with params:

for main class

{ "mainClass" : "com.foo.App" , "buildTarget" : "foo" , "args" : [ "bar" ] }

for test class

{ "testClass" : "com.foo.FooSuite" , "buildTarget" : "foo" }

buildTarget is an optional parameter, which might be useful if there are identically named classes in different modules. A uri will be returned that can be used by the DAP client.

More information about adding support for debugging is available here.

This awesome new feature was contributed by alekseiAlefirov from VirtusLab.

New 'Create new symbol...' code action

Previously we would propose to import a symbol (if available) in response to "missing symbol" errors. Now, thanks to gabro, we also propose to create a new class, case class, trait or object.

This might be useful when sketching out a domain model and should improve user experience for fast prototyping.

Miscellaneous improvements

package is no longer added on imports from package objects

is no longer added on imports from package objects if user right clicks on a file in Visual Studio Code the option for New Scala file also shows now the same as for directories

also shows now the same as for directories a multiline string can now be formatted exclusively when using format selection on that string

on that string added in ... to signify truncation in worksheets

to signify truncation in worksheets fixed hover on Scala App trait and several other cases that showed up on Scala Play projects

messages about upgrading Scala versions are now more valid to the user

references in a file are sorted before showing them

better cursor position when creating new files using the New Scala file command

command added "case class" option in NewFilesProvider

Contributors

Big thanks to everybody who contributed to this release!

git shortlog -sn --no-merges v0.8.3..v0.8.4 Olafur Pall Geirsson Chris Kipp Aleksei Alefirov Gabriele Petronella Tomasz Godzik Krzysztof Bochenek Alexandre Archambault Scala Steward Martin Duhem Tomasz Pasternak Wawrzyk Meriam Lachkar duianto

Merged PRs

Full Changelog

Merged pull requests: