.. | ||
img | ||
config.el | ||
funcs.el | ||
layers.el | ||
packages.el | ||
README.org |
Scala layer
- Description
- Layer Installation
- Backends
- Scalastyle
- Automatically show the type of the symbol under the cursor
- Automatically insert asterisk in multiline comments
- Automatically replace arrows with unicode ones
- Auto-start
- Key bindings
with
Description
This layer adds support for the Scala language to Spacemacs.
Layer Installation
To use this configuration layer, add it to your ~/.spacemacs
. You will need to
add scala
to the existing dotspacemacs-configuration-layers
list in this
file.
Then, you should modify your ~/.spacemacs
to use the recommended Ensime
version (Stable). Please add the following lines to dotspacemacs/user-init
:
(add-to-list 'configuration-layer-elpa-archives '("melpa-stable" . "stable.melpa.org/packages/"))
(add-to-list 'package-pinned-packages '(ensime . "melpa-stable"))
Backends
The currently supported language backends are:
- scala-ensime (default)
- scala-metals
To set your choice of backend, configure the layer variable scala-backend
.
(setq-default dotspacemacs-configuration-layers
'((scala :variables scala-backend 'scala-ensime))) ;or 'scala-metals
Ensime
ENSIME provides IDE-like features, such as refactoring, incremental compilation and project-wide type-checking.
ENSIME requires a configuration file at the root of each Scala project. It provides an SBT plugin, a gradle plugin and others (see ensime.org for a full list) to generate these files.
Installation instructions and usage can be found in the Java
layer
README.org.
Metals
Currently, you must manually install the metals server. It is possible to do so via coursier; the latest version can be built using the following commands:
./coursier bootstrap \
--java-opt -Xss4m \
--java-opt -Xms100m \
--java-opt -Dmetals.client=emacs \
org.scalameta:metals_2.12:0.5.1 \
-r bintray:scalacenter/releases \
-r sonatype:snapshots \
-o /usr/local/bin/metals-emacs -f
You will then have the common LSP key bindings; see http://develop.spacemacs.org/layers/+tools/lsp/README.html#key-bindings for more details.
Scalastyle
Scalastyle provides style-checking and linting. The Emacs functionality is provided by Flycheck.
To use scalastyle, it must be present as an executable in your PATH
.
- OSX users:
brew install scalastyle
- Linux, please see http://www.scalastyle.org/command-line.html
To test if scalastyle
executable is in your path, run scalastyle
in a new
terminal, it should output something like:
$ scalastyle
scalastyle 0.8.0
Usage: scalastyle [options] <source directory>
...
Finally, enable the syntax-checking
layer and set the flycheck-scalastylerc
variable to a valid location.
(setq-default flycheck-scalastylerc "/usr/local/etc/scalastyle_config.xml")
See the flycheck documentation and scalastyle configuration for up-to-date configuration instructions.
Use Java doc-style
To enable java-doc-style
, set the variable scala-indent:use-javadoc-style
to
t
(setq-default dotspacemacs-configuration-layers '(
(scala :variables scala-indent:use-javadoc-style t)))
Automatically show the type of the symbol under the cursor
To enable the feature ensime-type-at-point
when cursor moves, set the
variable scala-enable-eldoc
to t
.
(setq-default dotspacemacs-configuration-layers '(
(scala :variables scala-enable-eldoc t)))
Enabling this option can cause slow editor performance.
Automatically insert asterisk in multiline comments
To insert a leading asterisk in multiline comments automatically, set the
variable scala-auto-insert-asterisk-in-comments
to t
.
(setq-default dotspacemacs-configuration-layers '(
(scala :variables scala-auto-insert-asterisk-in-comments t)))
Automatically replace arrows with unicode ones
To replace =>
, ->
and <-
with unicode arrows ⇒
, →
and ←
, set the
variable scala-use-unicode-arrows
to t
.
If in some occasions you don't want the arrows replaced (for example when
defining compound operators like =>>
), you can always undo the change and get
the ascii arrows back.
(setq-default dotspacemacs-configuration-layers '(
(scala :variables scala-use-unicode-arrows t)))
Auto-start
If you prefer to have the backend start when you load a scala file, you can enable it with
(setq-default dotspacemacs-configuration-layers '(
(scala :variables scala-auto-start-backend t)))
Key bindings
All ensime key bindings are listed in the java
layer README.org.