- ENSIME can now find dependencies declared via sbt, Maven or Ivy.
- The M-x ensime-config-gen automates the creation of a .ensime configuration for your project.
- The inspector now alerts you when an interface is provided via implicit resolution.
- There's now a toggle link to switch between a type and its companion object.
- Type arguments are linked separately.
- Nested types are listed for each interface.
- Symbol and member completion much more reliable.
- Completion candidates are prettier.
- Method parameter help is displayed in the minibuffer when completing a call.
- Added a stand-alone, incremental builder based on scala.tools.nsc.interactive.BuildManager
- Errors and warnings are displayed in a hyperlinked read-out after each build/rebuild.
- Mirko Stocker's stand-alone refactoring library has been integrated.
- Rename, Organize Imports, Extract Method, Inline Local are all just an Emacs command away.
- Ray Racine's inferior sbt mode for Emacs has been integrated.
- There's an elisp-hacker-friendly interface for sending commands to sbt.
- JDB can now be controlled using graphical breakpoints and run/step/next shortcuts.
- class->source and source->class mapping are handled intelligently, so setting breakpoints in anonymous functions works as it should.
- Scala REPL can be launched with your project's classes loaded.
If you want more information on any of these topics, please check the ENSIME manual.
And, of course, the work is far from done. There are still plenty of rough edges, and if you run into one, please open an issue at github. Or even better, fork the repo and send a patch! The meat of ENSIME is its Scala-based server component, so you don't even need to look at E-Lisp in order to contribute ;)
This summer was a great experience for me. I want to thank my GSOC mentor Hubert Plociniczak for his patient support, the organizers at Google for creating this program, and all the brilliant folks at EPFL for making Scala such a wonderful language to work with.