Metals

Metals

  • Docs
  • Blog
  • GitHub

›Text Editors

Text Editors

  • Overview
  • Visual Studio Code
  • Vim
  • Sublime Text
  • Emacs
  • Eclipse
  • Online IDEs
  • User Configuration

Build Tools

  • Overview
  • Bloop
  • Gradle
  • Maven
  • Mill
  • sbt

Contributing

  • Project Goals
  • Contributing to Metals
  • Contributing to the website
  • Making a release
  • Tests overview

Integrating with Metals

  • Remote Language Servers
  • Integrating a new build tool
  • Integrating a new editor
  • Tree View Protocol
  • Decoration Protocol
  • Debug Adapter Protocol

Troubleshooting

  • Proxy and mirrors
  • Frequently asked questions
Edit

Metals User Configuration

While each editor may have a different way to change the user configuration, the values should be more or less the same for all extensions. Below you'll find all the available configuration options and what they do.

Java Home directory

The Java Home directory used for indexing JDK sources and locating the java binary.

Default: JAVA_HOME environment variable with fallback to user.home system property.

Example:

{
  "metals": {
    "javaHome": "/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home"
  }
}

sbt script

Optional absolute path to an sbt executable to use for running sbt bloopInstall. By default, Metals uses java -jar sbt-launch.jar with an embedded launcher while respecting .jvmopts and .sbtopts. Update this setting if your sbt script requires more customizations like using environment variables.

Default: empty string "".

Example:

{
  "metals": {
    "sbtScript": "/usr/local/bin/sbt"
  }
}

Gradle script

Optional absolute path to a gradle executable to use for running gradle bloopInstall. By default, Metals uses gradlew with 5.3.1 gradle version. Update this setting if your gradle script requires more customizations like using environment variables.

Default: empty string "".

Example:

{
  "metals": {
    "gradleScript": "/usr/local/bin/gradle"
  }
}

Maven script

Optional absolute path to a maven executable to use for generating bloop config. By default, Metals uses mvnw maven wrapper with 3.6.1 maven version. Update this setting if your maven script requires more customizations

Default: empty string "".

Example:

{
  "metals": {
    "mavenScript": "/usr/local/bin/mvn"
  }
}

Mill script

Optional absolute path to a mill executable to use for running mill mill.contrib.Bloop/install. By default, Metals uses mill wrapper script with 0.5.0 mill version. Update this setting if your mill script requires more customizations like using environment variables.

Default: empty string "".

Example:

{
  "metals": {
    "millScript": "/usr/local/bin/mill"
  }
}

Scalafmt config path

Optional custom path to the .scalafmt.conf file. Should be an absolute path and use forward slashes / for file separators (even on Windows).

Default: empty string "".

Example:

{
  "metals": {
    "scalafmtConfigPath": "project/.scalafmt.conf"
  }
}

Scalafix config path

Optional custom path to the .scalafix.conf file. Should be an absolute path and use forward slashes / for file separators (even on Windows).

Default: empty string "".

Example:

{
  "metals": {
    "scalafixConfigPath": "project/.scalafix.conf"
  }
}

Ammonite JVM Properties

Optional list of JVM properties to pass along to the Ammonite server. Each property needs to be a separate item.\n\nExample: -Xmx1G or -Xms100M"

Default: [].

Example:

{
  "metals": {
    "ammoniteJvmProperties": ["-Xmx1G"]
  }
}

Excluded Packages

Packages that will be excluded from completions, imports, and symbol searches.

Note that this is in addition to some default packages that are already excluded. The default excluded packages are listed below:

META-INF
images
toolbarButtonGraphics
jdk
sun
oracle
java.awt.desktop
org.jcp
org.omg
org.graalvm
com.oracle
com.sun
com.apple
apple

If there is a need to remove one of the defaults, you are able to do so by including the package in your list and prepending -- to it.

Example:

["--sun"]

Default: [].

Example:

{
  "metals": {
    "excludedPackages": ["akka.actor.typed.javadsl"]
  }
}

Don't generate Bloop plugin file for sbt

If true, Metals will not generate metals.sbt files under the assumption that sbt-bloop is already manually installed in the sbt build. Build import will fail with a 'not valid command bloopInstall' error in case Bloop is not manually installed in the build when using this option.

Default: false

Example:

{
  "metals": {
    "bloopSbtAlreadyInstalled": false
  }
}

Version of Bloop

This version will be used for the Bloop build tool plugin, for any supported build tool, while importing in Metals as well as for running the embedded server

Default: 1.4.8-19-4d9f966b

Example:

{
  "metals": {
    "bloopVersion": "1.4.0-RC1"
  }
}

Should display lenses with links to super methods

Super method lenses are visible above methods definition that override another methods. Clicking on a lens jumps to super method definition. Disabled lenses are not calculated for opened documents which might speed up document processing.

Default: false

Example:

{
  "metals": {
    "superMethodLensesEnabled": false
  }
}

Should display type annotations for inferred types

When this option is enabled, each method that can have inferred types has them displayed either as additional decorations if they are supported by the editor or shown in the hover.

Default: false

Example:

{
  "metals": {
    "showInferredType": false
  }
}

Should display implicit parameter at usage sites

When this option is enabled, each method that has implicit arguments has them displayed either as additional decorations if they are supported by the editor or shown in the hover.

Default: false

Example:

{
  "metals": {
    "showImplicitArguments": false
  }
}

Should display implicit conversion at usage sites

When this option is enabled, each place where an implicit method or class is used has it displayed either as additional decorations if they are supported by the editor or shown in the hover.

Default: false

Example:

{
  "metals": {
    "showImplicitConversionsAndClasses": false
  }
}

Remote language server

A URL pointing to an endpoint that implements a remote language server.

See https://scalameta.org/metals/docs/contributors/remote-language-server.html for documentation on remote language servers.

Default: empty string "".

Example:

{
  "metals": {
    "remoteLanguageServer": "https://language-server.company.com/message"
  }
}

Default fallback Scala version

The Scala compiler version that is used as the default or fallback in case a file doesn't belong to any build target or the specified Scala version isn't supported by Metals. This applies to standalone Scala files, worksheets, and Ammonite scripts.

Default: 2.12.13

Example:

{
  "metals": {
    "fallbackScalaVersion": 2.12.13
  }
}
← Online IDEsOverview →
Metals
Overview
Text EditorsBuild ToolsProject GoalsContributing
Editors
Visual Studio CodeVimSublime TextEmacsEclipse
Social
Copyright © 2021 Metals