- Description
- Layer Installation
- Ensime
- Scalastyle
- Automatically show the type of the symbol under the cursor
- Automatically insert asterisk in multiline comments
- Key bindings
This layer adds support for the Scala language using the excellent ENSIME client/server.
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.
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 to generate these files.
Configure the ENSIME sbt plugin by adding the following to
~/.sbt/0.13/plugins/plugins.sbt
:
addSbtPlugin("org.ensime" % "ensime-sbt" % "0.2.3")
Please go to ensime-sbt Github Page to check the latest version of ensime-sbt
plugin.
Please note your projects’ project/build.properties
need to use a version newer that 0.13.5
of sbt.
sbt.version=0.13.9
- Create a
.ensime
file at the root of your Scala project usingsbt gen-ensime
at the shell. - Run
M-x ensime
within Emacs to start an ENSIME session.
Each Scala project uses a dedicated ENSIME session, so you only need to run M-x
ensime
once per project. Any Scala files you create or visit within the project
will automatically use ENSIME for the remainder of your editing session.
Scalastyle provides style-checking and linting. The Emacs functionality is provided by Flycheck.
To use scalastyle,
- Download the scalastyle jar and put it somewhere sensible
- Customise the
flycheck-scalastyle-jar
variable and set it to the path of the jar.
See the flycheck documentation for up-to-date configuration instructions.
To enable the feature ensime-print-type-at-point
when cursor moves, set the variable scala-enable-eldoc-mode
to t
.
(setq-default dotspacemacs-configuration-layers '(
(scala :variables scala-enable-eldoc-mode t)))
Enabling this option can cause slow editor performance.
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)))
Key Binding | Description |
---|---|
SPC m / | incremental search using ensime-scalex major mode |
SPC m ? | incremental search in all live buffers |
Key Binding | Description |
---|---|
SPC m b c | compile command |
SPC m b C | clean command |
SPC m b i | switch to sbt shell |
SPC m b p | package command |
SPC m b r | run command |
Key Binding | Description |
---|---|
SPC m c t | type check the current file |
SPC m c T | type check all the open buffers |
Key Binding | Description |
---|---|
SPC m d A | Attach to a remote debugger |
SPC m d b | set breakpoint |
SPC m d B | clear breakpoint |
SPC m d C | clear all breakpoints |
SPC m d c | continue |
SPC m d d | start a debug session |
SPC m d i | inspect value at point |
SPC m d l | list local variables |
SPC m d n | next |
SPC m d o | step out |
SPC m d q | quit |
SPC m d r | run |
SPC m d s | step |
SPC m d t | backtrace |
Note: These key bindings need a micro-state, PR welcome :-)
Key Binding | Description |
---|---|
SPC m e e | print error at point |
SPC m e l | show all errors and warnings |
SPC m e s | switch to buffer containing the stack trace parser |
Key Binding | Description |
---|---|
SPC m g g | go to definition |
SPC m g i | go to implementation |
SPC m g t | go to test |
Key Binding | Description |
---|---|
SPC m h h | show documentation for symbol at point |
SPC m h u | show uses for symbol at point |
SPC m h t | print type at point |
SPC m i i | inspect type at point |
SPC m i I | inspect type in other frame |
SPC m i p | inspect project package |
Key Binding | Description |
---|---|
SPC m n F | reload open files |
SPC m n s | start ensime server |
SPC m n S | regenerate the .ensime and restart the ensime server |
Key Binding | Description |
---|---|
SPC m r f | format source |
SPC m r d | get rid of an intermediate variable (ensime-refactor-inline-local ) |
SPC m r D | get rid of an intermediate variable (ensime-undo-peek ) |
SPC m r i | organize imports |
SPC m r m | extract a range of code into a method |
SPC m r r | rename a symbol project wide |
SPC m r t | import type at point |
SPC m r v | extract a range of code into a variable |
SPC m z | expand/contract region |
Key Binding | Description |
---|---|
SPC m t a | test command (sbt) |
SPC m t r | test quick command (sbt) |
SPC m t t | test only (sbt) |
Key Binding | Description |
---|---|
SPC m s a | ask for a file to be loaded in the REPL |
SPC m s b | send buffer to the REPL |
SPC m s B | send buffer to the REPL and focus the REPL buffer in insert state |
SPC m s i | start or switch to the REPL inferior process |
SPC m s r | send region to the REPL |
SPC m s R | send region to the REPL and focus the REPL buffer in insert state |