.. | ||
img | ||
config.el | ||
funcs.el | ||
layers.el | ||
packages.el | ||
README.org |
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.
Choosing a backend
To choose a default backend set the layer variable java-backend
:
(java :variables java-backend 'meghanada)
Alternatively the lsp
backend will be automatically chosen if the layer lsp
is used and you did not specify any value for java-backend
.
Backend can be chosen on a per project basis using directory local variables
(files named .dir-locals.el
at the root of a project), an example to use the
lsp
backend:
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((java-mode (java-backend . lsp)))
Note: you can easily add a directory local variable with SPC f v d
.
Backends
LSP Java
LSP Java is the Java adapter for LSP Mode which is the Emacs client for Language Server Protocol.
It integrates with company
and flycheck
. In addition it also provides
full graphical debugging support via DAP mode
.
LSP is the default backend used by this layer, see Choosing a backend in order to learn how to select a different backend.
Installation
The lsp server will be installed automatically whenever a Java file is opened.
Meghanada
Meghanada is composed of a lightweight server and an Emacs minor mode. It
is unintrusive and integrates with company
and flycheck
.
Both Gradle
and Maven
projects are compatible with Meghanada.
Installation
The Meghanada server will be installed automatically whenever a Java file is opened.
If you get issues with the auto-installation you can either download the last
version of the server manually there or build from source hosted on the GitHub
repository and copy the jar
file to .emacs.d/.cache/meghanada
folder.
No additional configuration is necessary!
About Maven
Maven is not fully supported by Meghanada (but should still work fine for most
projects). If you encounter disconnection from the server then run mvn install
at the root of your project first.
Key bindings
LSP Java
Code completion
Key binding | Description |
---|---|
SPC m = |
Format code |
SPC m c c |
Build project |
SPC m c p |
Create spring boot project |
SPC m e a |
Execute code action |
SPC m e l |
List project errors/warnings |
SPC m g A |
Search type in project using lsp-ui |
SPC m g R |
Peek references using lsp-ui |
SPC m g a |
Search type in project |
SPC m g d |
Goto type definition |
SPC m g g |
Go to definition |
SPC m g k k |
Show type hierarchy |
SPC m g k s |
Show sub type hierarchy |
SPC m g k u |
Show super type hierarchy |
SPC m g r |
Find references |
SPC m h h |
Describe thing at point |
SPC m q r |
Restart workspace |
SPC m r a F |
Assign statement to field |
SPC m r a a |
Assign all parameters to fields |
SPC m r a f |
Assign parameter to field |
SPC m r a i |
Add import |
SPC m r a l |
Assign statement to local |
SPC m r a m |
Add unimplemented methods |
SPC m r a t |
Add throws exception |
SPC m r c f |
Create field |
SPC m r c i |
Convert to static import |
SPC m r c p |
Create parameter |
SPC m r e c |
Extract constant |
SPC m r e l |
Extract local |
SPC m r e m |
Extract method |
SPC m r g e |
Generate equals and hashCode methods |
SPC m r g g |
Generate getters/setters |
SPC m r g o |
Generate method overrides |
SPC m r g t |
Generate toString method |
SPC m r o i |
Organize imports |
SPC m r r |
Rename symbol |
SPC m t b |
test browser |
SPC m w u |
Refresh user settings |
Debugger
Using the dap
layer you'll get access to all the DAP key bindings, see the
complete list of key bindings on the dap layer description.
Meghanada
Server
Key binding | Description |
---|---|
SPC m D c |
Connect to server |
SPC m D d |
Disconnect from server |
SPC m D i |
Install server (should be done automatically |
SPC m D k |
Kill server |
SPC m D l |
Clear server cache |
SPC m D p |
Ping server |
SPC m D r |
Restart server |
SPC m D s |
Start server |
SPC m D u |
Update server |
SPC m D v |
Print version of the server |
Navigation
Key binding | Description |
---|---|
SPC m g b |
Jump back to previous location |
SPC m g g |
Jump to declaration |
Compilation
Key binding | Description |
---|---|
SPC m c b |
Compile file (buffer) |
SPC m c c |
Compile project |
Tests (junit)
Key binding | Description |
---|---|
SPC m t a |
Run all tests |
SPC m t c |
Run test class around point |
SPC m t l |
Run last tests |
SPC m t t |
Run test cause around point |
Refactoring
Key binding | Description |
---|---|
SPC m = |
Beautify code |
SPC m r i |
Optimize imports |
SPC m r I |
Import all |
SPC m r n |
Create a new class, interface, or enum |
Tasks
Key binding | Description |
---|---|
SPC m x : |
Run task |
Maven
Key binding | Description |
---|---|
SPC m m c c |
Compile |
SPC m m c C |
Clean |
SPC m m c r |
Clean and compile |
SPC m m g a |
Switch between class and test file |
SPC m m g A |
Switch between class and test file in another window |
SPC m m t a |
Run all tests |
SPC m m t C-a |
Clean and run all tests |
SPC m m t b |
Run current buffer tests |
SPC m m t i |
Test and install |
SPC m m t t |
Run a specific test |