blob: 1419e1ea1646c159ab047960d5a9cd2bb39ad6f5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
[[!meta title="Emacs: My awesome Java environment - Torstein Krause Johansen (skybert)"]]
## Emacs: My awesome Java environment
by torstein @ skybert dot net
## Hi, I'm Torstein 👋
- Been in ❤ with Emacs since 2000
## I've used many Java plugins/packages
- java-mode (2000 → 2001)
- [JDEE](//github.com/jdee-emacs/jdee) (2001 → 2009)
- [gtags](//www.gnu.org/software/global/manual/global.html)
- jtags
- [Malabar](//github.com/m0smith/malabar-mode) (2011 → 2012)
- [JDIbug](//github.com/udalrich/jdibug) (2009 → 2011)
- [eclim](//github.com/emacs-eclim/emacs-eclim) (2013 → 2017)
- [Meghanada](//github.com/mopemope/meghanada-emacs) (2017 → 2018)
- [lsp-java](//github.com/emacs-lsp/lsp-java) (2018 → present)
## My requirements
- Zero conf: Easily setup a new Java project
- Fast: must handle large projects
- Large meaning ~7000 classes (Tomcat has 2200)
- Easy to switch between projects
## Seeing is believing
Will use a wee app, [cheese-shop](//gitlab.com/skybert/cheese-shop) to
show the Java features in Emacs.
- Auto completion
- Code navigation
- Jump to source of 3rd party libraries
- Import classes
- Static import methods and fields
- Run JUnit tests from within Emacs
- Linting
- Unused variables
- Wrong syntax
- Missing generics
- Implement missing class
- Implement missing method
- Debug application from within Emacs
- Debugger with conditional break points
- Refactoring: rename variable
- Refactoring: extract to variable
- Refactoring: extract to method
|