blob: a2408fce1557ae4b11feac333e5d90cc1db01987 (
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
50
51
52
53
54
55
56
57
58
59
60
61
|
[[!meta title="How Emacs became my awesome Java editing environment - Torstein Krause Johansen"]]
[[!meta copyright="Copyright © 2019 Torstein Krause Johansen"]]
[[!template id=vid
src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-19-how-emacs-became-my-awesome-java-environment--skybert.webm"
type="video/webm"]]
### Download
- [Video (Live)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-19-how-emacs-became-my-awesome-java-environment--skybert.webm) (720p)
- [Video (Prerecording)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-19-how-emacs-became-my-awesome-java-environment--prerec--skybert.webm) (1080p)
### Notes
#### 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
|