When it comes to coding the use of IDEs is generally very popular, and dominant within most corporate/enterprise spaces. In particular:
- Visual Studio (with Resharper) for my day-to-day development tasks (and have done since 2002) in .NET land & it’s SQL Server derivatives for working with that (SSMS, BIDS, & now SSDT)
- Eclipse & its derivative IBM Rational System Architect
- Apple’s XCode for MacOS and iOS development with Objective-C
- JetBrains IDEs – especially IntelliJ for Java
These are great, but with the possible exception of Eclipse, they tend to be very focused on working with a particular language or platform (eg JVM or CLR). When working with these mainstream techsets, despite some bloat related slowness, they do provide a very productive development experience for the amount of investment in skills they require to use them effectively. They are intuitive, simple, and can be very powerful.
When working with less mainstream technologies, and for those willing to invest in the effort to master it, GNU Emacs offers a very effective experience. It also offers an advantage when attempting to learn a new language and its associated toolset. Unlike environments like Visual Studio, Eclipse, and IntelliJ which often hide some of what is going on from the user (such as working with the compiler, or debuggers) it’s typically less complete support in these areas requires the learner to understand them in order to work. This provides a range of advantages after transferring back to an IDE, in particular when things don’t work as expected.
Emacs benefits from having a wide range of modes available for it, and with the use of an emacs package manager (I use Marmalade) getting these packages installed is typically very simple. Even where the mode you want is not available as a compatible package, it tends to be very simple to get it installed (typically a matter of putting it in a suitable location) and then editing the .emacs file using emacs. Most languages tend to have a mode developed for them, and often before they become available in IDEs. In some communities emacs tends to be the standard editor to use, with no IDEs gaining comparable mindshare. For example with lisp based languages like common lisp, clojure and scheme (emacs is written in lisp, and can be fully customised using its own elisp variant). Additionally erlang has great support in emacs, with the Wrangler refactoring tool complementing its major mode.
Emacs has a certain reputation for the complexity of its keyboard shortcuts. Its use of keyboard combinations such as Ctrl-x, r, Space, #register_number to save the current position of the point (the caret) in a register draw humorous derision from users of other editors (in particular the Vi(m) community). Complaints about this tend to be unusual with most emacs users, and typically come from the outside. It can though be intimidating to a new user of the system.
Because of this I created a small github site to capture in one place emacs commands that I use a lot.
Because of this I’ve created a small github site to capture in one place common emacs commands. Twitter bootstrap was used to put the site quickly together.
You can find it here: emacs_shortcuts. Pages are included for SML Mode (Standard ML Mode) and the HTML Mode. Other modes may be added in time (though use of Ctrl-h, m) makes this a bit moot, and pull requests are very welcome.