Saturday, April 15, 2006
People come to Lisp in a variety of different ways. If you look at the
main roads that people took to Lisp (from
"The Road to Lisp" survey), you'll see that a lot came by
way of Emacs. That was true for me as well. I started programming in
the early 80's on systems that most people today have probably never heard of
Advanced Revelation). At the time, for me, Lisp was just a paragraph in a
computer languages text and I was far more interested in C.
Then, in the late 90's, I came across Emacs. It was like a virus that, once infecting me, spread slowly but pervasively. I don't even remember how I was first introduced to it. I think it was because some of the editors that I was using at the time had Emacs key bindings and I was curious why an editor manufacturer would be targeting Emacs users. I initially did the online tutorial and was just a "user"; however, after a while, I wanted to learn more and read Learning GNU Emacs and Writing GNU Emacs Extensions (aka - the Giraffe book). After that, I was hooked! I had done some basic .emacs customizations but wanted to do some more sophisticated stuff. The two biggest contributors to my elisp education were the Giraffe book and the wealth of code examples available in Emacs itself. I read both the GNU Emacs Lisp Reference Manual and Programming in Emacs Lisp. At the time, I had no one I was discussing Lisp with so books and online resources were my only sources of information about Lisp and I would read everything I got my hands on about Elisp programming. I also read GNU Emacs and XEmacs and Sams Teach Yourself Emacs in 24 Hours but I think that the Giraffe book had the biggest impact on me. Then, one day, I stumbled across c.l.l. and gradually started moving more towards CL as I saw it as a way to actually use Lisp in application work as opposed to just Emacs customizations. And, as they say, "the rest is history"! ;-)
Initially, I was using Emacs primarily as an editor; however, over the years, I have come to use it for a variety of different tasks. The synergies that you gain from being able to customize other Emacs applications and use them together within Emacs in many cases outweighs the advantages of using a "more featureful" stand-alone application. The main things that I use Emacs for today (I use Emacs for a lot of different things; however, these are currently the primary day-to-day things that I use Emacs for) are:
- Common Lisp development
- Emacs Lisp development
- IRC - primarily #lisp and #tech.coop
- Reading Usenet and Newsgroups
- Writing this weblog
- Contacts and Calendar/Diary. I'm swaying a bit on using Emacs for this as I use gmail for mail (and gmail does a pretty good job of recording email contacts) and I've just started using Google Calendar. Although I've toyed with the idea of accessing my gmail emails using mutt and Emacs, I'm not sure which way I'll go. On the one hand, I like being able to control the apps from within Emacs; however, on the other hand, there are some good reasons for having these applications available online (and I don't like continual sync-ups). Any thoughts/opinions others have on this would be appreciated!
## Step 1/3 - CVS download cvs -z3 -d:pserver:firstname.lastname@example.org:/sources/emacs login cvs -z3 -d:pserver:email@example.com:/sources/emacs co emacs ## Step 2/3 - configure cd emacs ./configure --enable-carbon-app ## Step 3/3 - make make bootstrap make sudo make installThis creates a Carbon Emacs app and installs it in "/Applications/Emacs.app". However, the standard emacs executable is included in the the app bundle, so I then modified my .bash_profile file to include the following line:
alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs -nw --debug-init'(I could have just modified the configure statement above to include a "--prefix=/usr" parameter. This would have overwritten the terminal emacs that ships with Mac OS X; however, I decided on a more conservative approach and just created an alias)
Running emacs in the terminal brought back memories of working on some other systems in the 80's! It was actually quite fun and Emacs running in a terminal is quite a "snappy" application - "Eight Megabytes And Constantly Swapping" indeed! ;-)
Incidentally, in addition to the above-mentioned paper/online books, there are a number of other good sources of Emacs information:
- The Emacs Wiki is a tremendous resource for all things related to Emacs.
- I recently discovered the Emacs article collection in the online version of "Linux Journal" magazine. There are a number of good Emacs articles there.
- Richard Stallman's paper "EMACS: The Extensible, Customizable Display Editor" describes some of the design considerations in Emacs (the paper was also included in the excellent book Interactive Programming Environments). Another "background" book is The Craft of Text Editing --or-- Emacs for the Modern World. Richard Stallman's speech at ILC2002 gives a bit of history and context to the development of Emacs.
- There is a wealth of links and information available in the Emacs Tiny Tools project as well as a lot of useful code.