5 KiB
Scala layer
- Description
- Layer Installation
- Ensime
- 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.
Features:
- Syntax highlighting
- Auto-completion
- Syntax-checking
- Refactoring
- Incremental compilation
- Scala Repl
- Style linting
- Eldoc integration
- Test execution directly from emacs
- Automatic replacement of ASCII arrows with unicode ones
- Automatic starting/stopping of ENSIME IDE server
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
:
(push '("melpa-stable" . "stable.melpa.org/packages/") configuration-layer-elpa-archives)
(push '(ensime . "melpa-stable") package-pinned-packages)
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.
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 Ensime start when you load a scala file, you can enable it with
(setq-default dotspacemacs-configuration-layers '(
(scala :variables scala-auto-start-ensime t)))
Key bindings
All ensime key bindings are listed in the java
layer README.org.