# Java contribution layer for Spacemacs ## Description This layer adds support for the Java language using the [Eclim](http://eclim.org) client/server. ## Layer Installation **Table of Contents** - [Java contribution layer for Spacemacs](#java-contribution-layer-for-spacemacs) - [Description](#description) - [Layer Installation](#layer-installation) - [Eclim](#eclim) - [Installation](#installation) - [Usage](#usage) - [Key bindings](#key-bindings) - [Eclim key bindings in java-mode](#eclim-key-bindings-in-java-mode) - [Project management](#project-management) - [Maven](#maven) - [Goto](#goto) - [Refactoring](#refactoring) - [Documentation, Find](#documentation-find) - [Problems](#problems) - [Tests](#tests) - [Eclim keybindings in problems buffer](#eclim-keybindings-in-problems-buffer) - [Eclim keybindings in projects buffer](#eclim-keybindings-in-projects-buffer) Add this layer to your `~/.spacemacs`. ```elisp (setq-default dotspacemacs-configuration-layers '(java)) ``` and also in `~/.spacemacs` set eclipse and eclim paths: ```elisp (custom-set-variables '(eclim-eclipse-dirs '("~/opt/eclipse")) '(eclim-executable "~/opt/eclipse/eclim")) ``` ## Eclim [Eclim]() provides the ability to access Eclipse code editing features (code completion, searching, code validation, and many more) via the command line or a local network connection, allowing those features to be integrated with your favorite editor. ### Installation For installation check [official page](http://eclim.org/install.html#download) ### Usage Currently you have to have eclimd already started. This layer doesn't try to control eclimd in no way although there's that option in `emacs-eclim` itself. This layer uses `company` as a completion framework. If you want to use `auto-complete` I encourage you to make it configurable. ## Key bindings ### Eclim key bindings in java-mode #### Project management Key Binding | Description ----------------------|------------------------------------------------------------ SPC m p j | Information about project SPC m p o | Open project SPC m p b | Build 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 c | Create project SPC m p k | Close project SPC m p s | Open project management buffer SPC m p u | Update project #### Maven Key Binding | Description ----------------------|------------------------------------------------------------ SPC m m p | Run one already goal from list SPC m m R | Run one maven goal SPC m m r | Run maven goals SPC m m t | Run maven test SPC m m i | Run maven clean install SPC m m I | Run maven install #### Goto Key Binding | Description ----------------------|------------------------------------------------------------ SPC m g g or M-. | go to declaration M-, | jump back from go to declaration/definition SPC m g t | go to type definition #### Refactoring Key Binding | Description ----------------------|------------------------------------------------------------ SPC m r f | Format file SPC m r r | Rename symbol SPC m r i | optimize imports #### Documentation, Find Key Binding | Description ----------------------|------------------------------------------------------------ SPC m h h | show documentation for symbol at point SPC m h u | show usages for symbol at point SPC m f f | general find in project #### Problems Key Binding | Description ----------------------|------------------------------------------------------------ SPC m e o | open buffer with problems SPC m e b | open buffer with problems SPC m e a | set all problems for next/prev action SPC m e e | set only errors for next/prev action SPC m e w | set warnings for next/prev action SPC m e f | set only current file for next/prev action SPC m e n | set all problems for next/prev action SPC m e n | go to next problem SPC m e p | go to previous problem SPC m e c | show options with problem corrections #### Tests Key Binding | Description ----------------------|------------------------------------------------------------ SPC m t t | run JUnit tests for current method or current file or project SPC m t T | run maven test phase ### Eclim keybindings in problems buffer Key Binding | Description ----------------------|------------------------------------------------------------ a | show all problems e | show only errors g | refresh problems q | quit w | show only warnings f | show problems only for current file RET | go to problem place ### Eclim keybindings in projects buffer Key Binding | Description ----------------------|------------------------------------------------------------ N | create new project m | mark current project M | mark all projects u | unmark current project U | unmark all projects o | open project c | go to problem place i | info about current project I | import existing project into the workspace RET | go to current project D | delete project p | update project g | refresh buffer R | rename current project q | quit