What is Emacs?
Emacs is not just an editor. It's an editor construction kit that comes
with a half-finished editor. And that's one of the features that makes it
by far the best text editor in the world. The other feature is that you
program it in Lisp. O.K., so Elisp (Emacs's Lisp) is an antiquated
dynamically scoped Lisp, but it's still a real Lisp with Lisp macros and
all. And, as anyone who uses the force will tell you, Lisp is the most
powerful programming language there is.
Stages of Emacs Communion
Emacs has a serious flaw: the learning curve. I learned Emacs in two stages. In
the first stage, I learned how to use Emacs like I learned how to use any
other editor. I learned all the key combinations that make Emacs tick and
learned how to become somewhat productive with out-of-the-box Emacs. I
began using Emacs quite a bit, but eventually switched to a
better
editor and relegated Emacs to editing text files in the shell or via
SSH.
One day, however, I was fed up with the limitations of my
better
editor. I began to look for an editor that could do it all. I wanted an
editor that provided excellent support for
- All programming languages
- All computing environments
- Remote editing of text using all protocols
- Extending the editor with ease
- Viewing and navigating XML and other data formats
- Windowed environments
- Text-only shell-based environments
- Accessing all of the editor's internals
In addition to that, I wanted the editor to be supported forever
(guaranteed), to have great documentation, a solid community, and to be
easy to find and install, regardless of the platform.
(Actually, I wanted a whole lot more.)
I tried many an editor. And a few IDEs too. But I lived a life in which I
had to open some files with one editor and other files with another editor
and yet other files with a third or fourth editor. Common sense seemed to
dictate that no editor could do everything. But deep inside I knew there
was an editor out there that could indeed do it all.
An exhaustive search brought me right back to Emacs again. I was surprised
with this at first. After all, Emacs does seem a little archaic out of
the box. But, I pressed on.
I began to learn how to configure Emacs, how to use its advanced features,
and even how to extend it using Elisp. This new Emacs was nothing like the
Emacs that I had used for years before. I began to experience a second
stage of communion with Emacs. I became far more productive than I had ever
been before (who knew that an editor could make such a difference!). The
improvement felt much like the improvement I experienced in Perl
programming (and programming in general) after I was exposed to Lisp.
Emacs and I Today
Now I use Emacs for everything. In my Emacs configuration, I have little
bits of code that allow me to perform all kinds of tasks, such as
formatting XML, subtracting one list from another, creating a list of
distinct items from a list with some duplicate items, adding columns of
numbers, editing wiki topics, encrypting sensitive material, and writing
this article. Emacs even connects directly to Mark Logic database servers
and other servers, allowing me to use keyboard shortcuts to quickly
highlight and test snippets of code that I've inserted into in an article
or a program.
But getting Emacs to behave exactly like I want took a great deal of
work. These days, out-of-the-box Emacs feels just like that: out of the
box; like a desk from OfficeMax before it's been assembled.
Among many other things, my current Emacs configuration includes the
following modules:
Configuring Emacs
To install Emacs on a new machine, I usually perform these steps:
I also usually install the following Ubuntu packages (or their equivalents,
when using another distribution or platform):
My Future with Emacs
I have grown out of every programming language and skill that I've learned
so far. Almost without exception. But I can't imagine that I'll grow out of
Emacs any time soon. I hope that something better comes along one day, but
I think Emacs is going to be king for a while.
Resources