Files
doomemacs/modules/lang/scala
Henrik Lissner a70e634ebd refactor(:lang): move tree-sitter init
Moved add-hook calls (for tree-sitter initialization) into their
respective modes' config blocks, or nearby, to be consistent with how
other, similar tools (like lsp!) are initialized, and does so at
runtime, rather than at expansion/compile time, which eval-when! caused.
2022-07-25 17:34:44 +02:00
..
2022-07-23 14:04:01 +02:00
2020-10-15 15:22:41 -04:00

lang/scala

Description

This module adds scala and sbt support to Doom Emacs.

Module Flags

  • +lsp Enables integration for the metals LSP server.

+lsp Integration

Prerequisites

Coursier

Note: Coursier is only required to install Metals. If system is running arch linux this step can be safely skipped.

Ubuntu / Debian / Fedora
curl -fLo cs https://git.io/coursier-cli-linux &&
    chmod +x cs &&
    ./cs
MacOS
curl -fLo cs https://git.io/coursier-cli-macos &&
    chmod +x cs &&
    (xattr -d com.apple.quarantine cs || true) &&
    ./cs
Arch
yay -S coursier

Metals

Ubuntu / Debian / Fedora / MacOS

Note: Update following command to latest version of metals found here.

coursier bootstrap \
  --java-opt -Xss4m \
  --java-opt -Xms100m \
  --java-opt -Dmetals.client=emacs \
  org.scalameta:metals_2.12:0.9.4 \
  -r bintray:scalacenter/releases \
  -r sonatype:snapshots \
  -o /usr/local/bin/metals-emacs -f
Arch
yay -S metals

Features

According to https://scalameta.org/metals/docs/editors/overview.html it adds

  • Goto Definition
  • Completions
  • Hover
  • Paremeter Hints
  • Find References
  • Run/Debug
  • Find Implementations
  • Rename Symbol
  • Code Actions
  • Document Symbols
  • Formatting
  • Folding
  • Organize Imports

Notes