M-x return-to-emacs

The last time I was out in California for work, my coworkers ganged up on me…

“You just have to try IntelliJ. It’s so good. Check out this and this and that and the-other. It’s heaven.”

I bit the bullet and grabbed a license key from a departed colleague, and fired it up, I had someone show me the 3 important things I’d need to know, and grabbed the alpha-geek to show me how to get the servers up and running.

I spent the remainder of the week getting used to the environment, and have spent the last two weeks exclusively using IDEA. This morning, I switched back to emacs.

IDEA rocks

There’s no doubt that IDEA is simply the best IDE for Java projects. It’s really astounding. The keybindings are pretty well done, and it has an impressive wealth of features. The level of semantic “understanding” … especially around the configuration files for common frameworks like Struts is quite useful. In the end, I found it to be an approachable and easy-to-use masterpiece, with very little detracting from it’s excellence.

But, frankly, there are a lot of features that I didn’t have call to use. The quite extensive refactoring support — which seems great — just doesn’t enter into my day-to-day writing. I’m sure it works well and is productive when called for, but I’m not considering it compelling.

The features I ended up using day-to-day are:

  • C-n : open class by partial-name
  • C-S-n : open project file by partial-name
  • C-b : jump to appropriate thing for current token.
  • C-<SPC> : contextual complete
  • A-<RET> : auto-import, auto-cast, auto-…
  • C-7 : current class structure
  • C-q, C-p: in-line javadoc + method-signature popups
  • C-A-h : show method callers
  • JSP-parsing
  • debugging

emacs rolls

At the same time, there’s one area where emacs is simply better: editing text. Especially for someone who’s used it for many years, now, and has worked to patiently and effectively extend my emacs-fu … I believe emacs may be the best raw text-editor in existence. Moreover, it really is an operating system unto itself, which isn’t quite so silly … for instance, I’m only mildly curious about, say, any of the three emacs jabber clients, but having a simple calculator is pretty nice when it is.

But perhaps the most compelling reason for me right now is that I’m not strictly a Java programmer; I’ve been doing some fun python hacking in the evenings, and I still try to work on the Scheme + C beast that is GnuCash from time to time. As well as random text files, &c…

JDE

So I’ve re-embraced JDE, and found that pretty much all the major functionality I’ve grown used to is available…

  • C-n becomes C-c n, jde-open-class-source … doesn’t do the partial-value completion … but that sounds like a fun weekend hack … :)
  • C-b becomes C-c C-v C-g, jde-open-class-at-point … which also jumps to the appropriate method, too.
  • C-<SPC> becomes C-c <SPC>, jde-complete-minibuf
  • A-<RET> becomes C-c C-v C-z, jde-import-find-and-import
  • C-7 becomes C-c . l w, ecb-toggle-ecb-windows
  • C-A-h becomes jde-xref-display-call-tree

Now, for those playing along at home, those are the big ones anyways … complete, auto-import, “jump”, structure and show-callers. But that leaves a few things unaccounted for… specifically:

  • C-S-n : open project file by partial-name
  • this would be real nice, but also smells like a weekend hack.
  • A-<RET> : auto-cast, auto-…
  • I can cast myself, thanks. Fucking java, anyways…
  • C-q, C-p: in-line javadoc + method-signature popups
  • JdeDocIndex seems somewhat promising, but not exactly right either.
  • debugging
  • I haven’t tried JDE’s debugging support in a while, but I did have problems with it in the past. At the same time, I pretty generally want to ForgetTheDebugger … I’m just not of the UseTheDebugger school.

Which leaves the one major standout: first-order JSP support.

Now, I’ve tried … really tried … to use mmm-mode in order to switch between, say, nxml-mode and JDE. It just doesn’t work, primarily because the new-file parsing latency of JDE is so high. But that also sounds like a good weekend hack to craft some sort of a startup-effort caching into JDE, which would generally be beneficial.

Summary

IntelliJ is awesome. Emacs — and especially JDE [+ ECB + semantic + … ] — is good enough, and fits better into my world. The Emacs Development Environment tools could all stand to get better, and in many cases would find benefits across mulitple languages. So that’s where I’m headed.