New variable `java-backend' controls whether to use eclim, by default, or ensime. The setup is identical to scala and as such there's some functionality included that still isn't supported in java.
7.5 KiB
Java layer
Description
Layer Installation
Layer
To use this configuration layer, add it to your ~/.spacemacs
. You will need to
add java
to the existing dotspacemacs-configuration-layers
list in this
file. To choose a backend explicitly,
java :variables java-backend 'eclim
Eclim
Eclim provides the ability to access Eclipse features such as code completion, searching, code validation, and many more.
Installation
For installation check the official page.
Then set the Eclipse
and Eclim
paths in dotspacemacs/user-config
,
for instance:
(setq eclim-eclipse-dirs '("~/opt/eclipse")
eclim-executable "~/opt/eclipse/eclim")
You can also configure other options, as shown below:
(setq
;; Use another eclimd executable
eclimd-executable "/path/to/another/executable"
;; Specify the workspace to use by default
eclimd-default-workspace "/path/to/default/eclipse/workspace"
;; Whether or not to block emacs until eclimd is ready
eclimd-wait-for-process t)
Usage
Start the eclim daemon with SPC m d s
and stop it with SPC m d k
. (See
below.)
Ensime
Another backend option is the Ensime server, which is a lot more responsive than Eclim. It uses the same keybinding setup as the scala layer.
Installation
Find it with your favourite package manager, eg:
nix-env --install sbt
or refer to the sbt installation instructions.
You also need to follow the Ensime configuration instructions to run Ensime.
To use the build functions under SPC m b
you need to use version 0.13.5
or
newer of sbt
, and specify that in your project's project/build.properties
.
For example,
sbt.version=0.13.11
Usage
Start the ensime server by running SPC SPC ensime
or M-x ensime
.
Issues
Ensime is originally built for Scala, so support for java is not complete, in particular refactoring doesn't work.
Key bindings
Java-mode
Project management
Key Binding | Description |
---|---|
SPC m p b |
Build project |
SPC m p c |
Create project |
SPC m p d |
Delete project |
SPC m p g |
Open file in current project |
SPC m p i |
Import project |
SPC m p j |
Information about project |
SPC m p k |
Close project |
SPC m p o |
Open project |
SPC m p p |
Open project management buffer |
SPC m p u |
Update project |
Eclimd
Key Binding | Description |
---|---|
SPC m d s |
Start daemon |
SPC m d k |
Stop daemon |
Maven
Key Binding | Description |
---|---|
SPC m m i |
Run maven clean install |
SPC m m I |
Run maven install |
SPC m m p |
Run one already goal from list |
SPC m m r |
Run maven goals |
SPC m m R |
Run one maven goal |
SPC m m t |
Run maven test |
Goto
Key Binding | Description |
---|---|
M-, |
jump back from go to declaration/definition |
SPC m g g |
go to declaration |
SPC m g t |
go to type definition |
Refactoring
Key Binding | Description |
---|---|
SPC m r i |
optimize imports |
SPC m r f |
Format file |
SPC m r r |
Rename symbol |
Documentation, Find
Key Binding | Description |
---|---|
SPC m f f |
general find in project |
SPC m h h |
show documentation for symbol at point |
SPC m h u |
show usages for symbol at point |
Problems
Key Binding | Description |
---|---|
SPC m e a |
set all problems for next/prev action |
SPC m e b |
open buffer with problems |
SPC m e c |
show options with problem corrections |
SPC m e e |
set only errors for next/prev action |
SPC m e f |
set only current file for next/prev action |
SPC m e n |
go to next problem |
SPC m e o |
open buffer with problems |
SPC m e p |
go to previous problem |
SPC m e w |
set warnings for next/prev action |
Tests
Key Binding | Description |
---|---|
SPC m t t |
run JUnit tests for current method or current file or project |
Problems buffer
Key Binding | Description |
---|---|
RET |
go to problem place |
a |
show all problems |
e |
show only errors |
f |
show problems only for current file |
g |
refresh problems |
q |
quit |
w |
show only warnings |
Projects buffer
Key Binding | Description |
---|---|
RET |
go to current project |
c |
go to problem place |
D |
delete project |
g |
refresh buffer |
i |
info about current project |
I |
import existing project into the workspace |
m |
mark current project |
M |
mark all projects |
N |
create new project |
o |
open project |
p |
update project |
q |
quit |
R |
rename current project |
u |
unmark current project |
U |
unmark all projects |