
Metals (`scalameta.metals`) is the official Scala Language Server, developed by Scala Center and VirtusLab, bringing 27+ LSP features — completions, go-to-definition across library sources, integrated test running, and scalafmt formatting — to VS Code and six other editors. v2.0.0-M13 Gold (2026-05-20) adds a Gradle MBT extractor, BSP CodeLenses, and a forward-port from v1.6.7 stable.
scalameta.metals) is the official answer — the Language Server Protocol implementation that brings type-aware completions, go-to-definition across library sources, integrated test running, and scalafmt formatting to VS Code, Vim, Emacs, Helix, and Zed. 1 Version v2.0.0-M13 Gold shipped on May 20, 2026 — the latest milestone in the active v2 pre-release series — adding a Gradle MBT (Module Build Target) extractor and BSP CodeLenses improvements on top of a full forward-port from the v1.6.7 stable track. 2scala-cli. 3 The GitHub repository has 2.3k stars, 423 forks, and 10,071 commits. 1scalameta), or install from the terminal: 4code --install-extension scalameta.metalsbuild.sbt, build.sc, or a src/main/scala tree. Metals activates automatically and prompts you to import the build. 4
object with a main method gets a run | debug code lens above its definition line. Every test class gets test | test debug. Click to run — no terminal command needed. 4
object Main — click run or debug to launch without leaving the editor. 4.vscode/launch.json:{
"version": "0.2.0",
"configurations": [
{
"type": "scala",
"request": "launch",
"name": "Run with args",
"mainClass": "example.Main",
"args": ["--config", "prod.conf"],
"jvmOptions": ["-Xmx2g"]
}
]
}.vscode/settings.json: 5{
"[scala]": {
"editor.formatOnSave": true
}
}.scalafmt.conf exists in the project root, Metals creates one. Multi-line strings get | alignment automatically as you type (onTypeFormatting) and when you paste (formatOnPaste), both enabled by default.| Category | What you get |
|---|---|
| Completions | Auto-import, override completions, exhaustive match cases, string interpolators, file name completions |
| Navigation | Go-to-definition (project + library jars), find references, find implementations, workspace symbol fuzzy search |
| Hover | Type at point, symbol signature, docstring |
| Diagnostics | Syntax errors as-you-type; type errors on save via the build tool |
| Refactoring | Rename symbol (workspace-wide), code actions (extract method, insert type, convert to/from) |
| Imports | Organize imports, auto-insert on completion |
| Implicits | Virtual text decorations showing inferred implicit parameters and conversions |
| Testing | VS Code Test Explorer (JUnit4, MUnit, Scalatest, Weaver), per-suite run/debug |
| Worksheets | *.worksheet.sc files evaluate on save, results shown as inline hints |
| MCP server | HTTP + stdio transport for AI agent integration (added in v1.6.0) |
| Decompiler | Auto-decode .class / .semanticdb / .tasty files (VS Code, added v1.6.7) |

.class/.tasty/.semanticdb auto-decompilation.Dog.name() won't surface callers of Animal.name() — overridden method references aren't included. 11AnyVal). Move AnyVal subclasses to a separate file as a workaround. 11scalameta.metals · Stable server: v1.6.7 (extension v1.66.2) · Pre-release server: v2.0.0-M13 (2026-05-20) · IDE: VS Code (also: Vim, Emacs, Helix, Zed, Sublime Text) · Language: Scala 2.12 / 2.13 / 3 · Use case: full language server (completions, navigation, diagnostics, testing, formatting, debug) · License: Apache-2.0 · GitHub: 2.3k ★ 1github.com
github.com
scalameta.org
marketplace.visualstudio.com
scalameta.org
scalameta.org
metals-lsp.org
linkedin.com
github.com
blog.jetbrains.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.