Well somehow very quietly last month the worlds greatest text-editor/IDE/anything-you-can-imagine software, Emacs, got ratcheted up to version 24. Actually, 24.1 to be exact. Major version releases of Emacs don’t happen very often (between 2 and 6 years, on average), so I’ve been excited to get my hands on some of the new features. My first attempts to compile it on my Ubuntu boxes failed, but fortunately Damien Cassou came through with a PPA for emacs24, and this past weekend I found time to upgrade my systems to the new version.
It seems like much of the theme of this release is simply incorporating and standardizing features that have long existed as 3rd-party add-ons. Which is, of course, a good thing, but since anyone who’s used Emacs much has probably already tricked it out with loads of hacked-up elisp, it’s not quite the revolutionary change you’d expect. Still, there are changes, and I’ve been working my way through the “What’s new in emacs24” post over on the “Mastering Emacs” blog. Here are a few bits that are highlights for me:
Package Management!!!
Probably the most significant change for all users is the new built-in package management system, that promises to cut down on the disorganized mess that is my ~/elisp folder and make it a bit easier to add 3rd-party features. I took a crack at it straight away to see if it could help me correct some long-standing shortcomings in my Python coding setup — most notably “intellisense”-like completion. Well, I did add a few nice features I’d never known about like indentation highlighting and PEP8/PyLint checking; sadly, code completion is still beyond my grasp (and I’ve tried it all folks: company, anything, ropemacs, auto-complete, etc).
But I digress. The package management thing is pretty sweet, really; though it took me a while to realize that I need to put
(package-initialize)
somewhere near the top of my ~/.emacs to make sure the downloaded packages are available before referencing them in any configs. Hopefully now that this package system is standard, it will become standard practice to package 3rd-party extensions this way instead of just tarballs of elisp. Most of the popular packages are in there already, but there are a few important (to me) extensions that aren’t (nxhtml mode, e.g.).
Color Themes
Color themes has been a 3rd-party add-on (and a pretty indispensable one, IMHO) for ages, but now it’s all bundled in and St. Ignucious-blessed. The customizing interface is nice and consistent with the rest of Emacs, and when combined with the ability to download new themes from the package manager, pretty slick (at least, as slick as Emacs gets) overall. Well, it knocked half a dozen lines off my .emacs file, anyway.
GTK3?
I’ve read that the new version can be compiled against GTK3, but the packages in Damien’s repo appear to be GTK2, at least based on the “about” screen. I’m not sure what compiling against GTK3 would do for me, since I don’t use the toolbars and only rarely touch the menus, but perhaps I’ll find out when it hits the mainstream repos.
Lack of Breakage
If you don’t use a piece of software like Emacs — that is, a piece of software that you can (and do) heavily customize with your own code additions — you might not be able to appreciate the apprehension with which one upgrades to a new major version. Will all my carefully (or carelessly) hacked-together extensions suddenly crumble? Will my add-ons blow the whole program up and force me to restart from scratch?
Well, for me, the answer in this case was a glorious “not so much”. There were a few tiny breaks that were quickly and easily dealt with (for instance, magit (emacs GIT integration) stopped working for me, but I just installed the latest version from the package manager); and in a few cases, things actually worked better after they were corrected for the new version (sql-set-product actually worked in my db macros!!).
Overall, my transition has been marvelously smooth.
More to come??
I see a fair amount of under-the-hood changes going on with Emacs, which means many of the user-visible improvements will likely come in the form of extensions taking advantage of these improvements. I wish the update had come in time for the Debian Wheezy freeze, but perhaps a backport will happen.
What cool things have you found in Emacs24, dear readers?