Endless Parentheses

Ramblings on productivity and technical subjects.

profile for Malabarba on Stack Exchange

Emacs 25 is out! What are the new features and what were my predictions

Four Saturdays ago, on September 17, Emacs 25 was finally released. Almost two years before that, I wrote a post predicting a few Big things to expect from Emacs 25. Throughout the months since then, I’ve also been reporting interesting new features as they arrived on the dev builds. Today, we compile a list of all of those news posts, and review which predictions I actually got right.

News posts

For the convenience of those looking for actually practical information, I feel we should start with a list of the posts. I must strive to be clear that this is not a comprehensive list of new features. Not by a mile! If you want everything, you can have a look at the news file that ships with Emacs, /etc/NEWS, or you can read Mickey Petersen’s commented version.

The list below merely sums up most (not even all) of the features that piqued my interest over the last couple of years.

  1. Easily search for non-ASCII characters (char-folding search)
  2. Round quotes in Help buffers
  3. Query-replace history is enhanced
  4. The comment-line command
  5. The seq.el library
  6. The let-alist library
  7. The map.el library
  8. Have prettify-symbols-mode reveal the symbol at point
  9. More flow control macros
  10. EWW improvements
  11. Easily install multifile package from a directory
  12. Better Rectangles
  13. Better dependency management
  14. User-selected packages
  15. Asynchronous Package Menu
  16. Filtering by status and archive
  17. Archive priorities and downgrading packages

If you’re short on time, I personally recommend checking out char-folding search (1), archive priorities (17), and the comment-line command (4), which are all features you might not realize are there. The round-quotes in Help buffers (2) and the improved query-replace history (3) are also among my favorites, but you don’t need to do anything special to see them in action.

Reviewing predictions

Now, for the indulgence of those looking for more than just practical information. On the aforementioned post, I talked about 6 things I hoped to see by the time Emacs 25 came out.

Moving the code base to git
This one even had a schedule date when I wrote the post, so it obviously doesn’t count as a prediction. Still, I’m extremely glad it happened as I would never have contributed myself if not for this change.
Dynamic library loading

Now this is exciting. I originally wrote it was “looking almost in shape for release”, but I have no idea what led me to say that. This feature actually almost didn’t make it into release. It only got merged to the emacs-25 branch more than one year later, after the feature-freeze took place!

Nonetheless, it’s finally out and about, and I’m eager to see what comes out of it. If you’re interested, it’s actually very easy to get started (well… easy by C-coding standards). Aurélien Aptel has a super short tutorial on how to write, compile, and use a dynamic module in Emacs.

Concurrency in Elisp
I’ll count this as a half point. We don’t have proper concurrency in Elisp yet, and whether that’s something we want is still an ongoing discussion. Still, most of the points in my rant have already been addressed. The packages list does refresh asynchronously now (despite the lack of concurrency), and several optimizations have been made which speed up the actual rendering of the list.
A Better Package Menu
I shouldn’t have to say much here. The last 5 links on list above are all improvements to the package menu. While there’s still room for improvement, it’s quite ahead of where it was 2 years ago. Better dependency management, asynchronous refreshing, and more filtering options were all much needed improvements. Meanwhile, archive priorities are a nice cherry to top of it all off.
A More Robust Customize Interface
Out of the two issues that led me to write this point, one of them has been fixed (custom-theme-load-path is no longer a defcustom). Still, I’m counting this as a miss. Over the last couple of years I’ve seen other fundamental issues with the Customize interface be reported, and there’s still quite a bit of work to be done here.
Namespaces
Well, OK. We still don’t have namespaces. Honestly, though, it doesn’t bother me anymore. I’ve released two packages, Names and Nameless, which are available on Elpa and help mitigate the the lack of namespaces. I use Nameless for all my Elisp coding now and that’s the end of the story for me.

Summarizing, even if we exclude the Git point (which wasn’t really a prediction), it’s a 2½ out of 5 (or 3½ if we count namespaces). That’s a pretty good outcome considering I had never even made a single contribution to Emacs core when I wrote that post. I’d love to write another one of those, but I’m not nearly as involved in the news as I was 2 years ago. Maybe in a couple of months I’ll manage to catch up.

Tags: news, emacs-25, emacs,

comments powered by Disqus