Like, for instance, there are huge advancements from MSVC 97 to MSVC 2013...
Like, for instance, there are huge advancements from MSVC 97 to MSVC 2013...
* --daemon with emacsclient was a big improvement in usability (ie. "instant startup" by keeping it running all the time)
* As others have said, there's been a surge in elisp packages lately, thanks to package.el and friends
* Changing color themes and fonts used to be a real hassle, but no more.
* Unicode (and bidi) Just Works now, no magic incantations in ~/.emacs needed any more
* org-mode! Ten years ago, org-mode was just started and not yet a part of Emacs. I think I first installed it as an addon around 2005, but at the time it was quite barebones compared to what it is now … (and of course installing it and keeping it up-to-date was a lot more work than doing the same for any third-party package now).
-----
This question prompted me to look at https://en.wikipedia.org/wiki/GNU_Emacs#Release_history – other things I enjoy from that list include:
* good fullscreen support in X,
* lexical binding (not something you need most of the time, but indispensible when you do need it),
* docview (PROTIP: docview is better than most pdf viewers for copy-pasting text from pdf's),
* nXML (awesome XML editor),
* dbus bindings – can be handy,
* tramp! ohmydog tramp didn't even exist ten years ago!
And people were using c-mode to highlight CSS files … So yes, significant changes noticed :-)
DocView was new to me, and indeed, it does seem to do a good job at rendering PDFs. Now I just need to learn how to work it.
My personal opinion (as someone who uses the mouse a lot with Emacs) is that the most important change was the addition of the ability for Emacs to interface with the user through "window systems" (namely, X, Windows, Mac) which reached non-beta status in 1994.
(I'm ignoring the XEmacs fork since I never used it full-time.)
This allowed using the mouse much like it is used in e.g. TextEdit.app and added many possible key combinations (like Control-space and a "real" Meta key) that were not possible to express using the old terminal-based user interface.
Other important changes: high-quality ports to Mac OS X's window system in the early 2000s; the addition -- finally on 30 Jul 2009 -- of non-beta support for anti-aliased text when Emacs interfaces through the X windowing system. (Anti-aliased text was supported on OS X and on Windows much earlier than that -- probably as soon as the ports to their graphical interfaces became available.)
With the release of Emacs 24 a few years ago, a definite clunkiness around non-ascii character sets finally got sorted out with the result that most users of Emacs no longer have to think about coding systems and such.
About 10 years ago, it became possible to click on a "link" in the buffer that shows the docstring to an Emacs Lisp function to go right to the definition of that function, which was a nice new feature.
package.el excites me not at all.
And I'm very skeptical that the addition of threads to Emacs will improve it. I think it will prove an unnecessary complication.
In recent years, since 23.0, it feels as if Emacs has improved a great deal. This is largely due to the introduction of package.el (extension / package management.) To put it in slightly more dramatic terms, it's revolutionized it.
To be fair, I've customized my .emacs to be just how I like it, and it usually "just works" for me, so I don't change it much any more. It's entirely possible there are a ton of great new features that I just haven't bothered to look for yet.
Also, when I make changes I don't check to see when the feature was added, so it's possible I'm using new features, and I've just assumed they've been there forever and I just hadn't discovered them until recently :-)
I think that with either emacs or vim, once you have got a useful setup you tend to stick to it, so discovering new features is uncommon (and both apps don't make feature discovery easy in the first place.)
* lexical scoping and fully correct lexical closures
* cl-lib integrated into core
* a package manager
* Common-Lisp-style generic places (i.e., setf support)
* A much better advice system (add-function and advice-add)
* A very good testing framework, ERT, and a test suite that uses it
Emacs is a much nicer development environment than it was ten years ago.