Home Up

Emacs and Lisp Programming

Here, I provide some material and references for emacs and lisp programming.
Much of the material on lisp is quite old, but most of it is still relevant.

Emacs

Enjoys active and sustainable development

Do you have a curiosity about emacs, but worry that it is not popular? Check out this emacsconf video by David Wilson.

My take on this video is that sustained, active development is what is really important, and that emacs has that. David Wilson argues that it is relatively easy for an emacs user to climb the ladder from user, to package author, and finally to core developer. Highly challenging of course, and only possible for people of extraordinary motivation and ability - but still easier than for other editor platforms.

Why? First of all people attracted to emacs tend to be programming savvy and motivated to contribute in the first place. But there is another, more fundamental reason.

In most applications there is an uncrossable chasm separating users from core developers. Imagine I were to spend the time to become a power user of LibreOffice. I would know all the menu items, all the ways to configure it, maybe even become proficient at writing spreadsheet macros, etc. I would then be just a baby step away from committing improvements to the LibreOffice code base, right?
No, of course not. Configuring LibreOffice and coding its core are completely different things.

In emacs on the other hand; basic configuration, package development, and most core development are fundamentally the same thing - writing elisp code, albeit at a different level of complexity or sophistication.

Old is Good

Another point the David Wilson brings up in his video, is that emacs has been consistently maintained for over 40 years.
That's a good thing. It means emacs has a fighting chance to still be under active development for another 40 years.

What is so good about emacs?

To me, best thing about emacs is
  1. It is 100% programmable
  2. And in Lisp, which I now find elegant (albeit that took time).

Killer Apps?

Among the countless emacs packages, I would mention magit, the git client package mention below, and the built-in mathematics software known as emacs calc-mode. A blog entry entitled The Emacs Calculator by Chris Wellons gives a preview of some of the tasks calc-mode is capable of.

I would also mention emacs has nice support for interfacing with exterior processes, seamlessly piping input and output through emacs. One can for example run multiple *nix command line shell environments, or various computing tools such as GNU Octave, etc.

Learning Emacs Step Zero

Completely new to emacs?
Assuming you have installed emacs already, a good first step might be to use C-u M-x help-with-tutorial to read a very simple, but useful tutorial bundled with emacs.

My teaching material on emacs/elisp/lisp

I am working on some original teaching material on elisp.
Currently it is work under construction, just some notes on emacs and elisp.

Links to material on emacs/elisp

Emphasis on Using Emacs

Emphasis on Elisp Programming

Some of the links are copies or updated copies of links found in
Pascal Costanza's Highly Opinionated Guide to Lisp, which gives an enjoyable and useful overview of lisp.

  • Strongly recommended packages: Themes: Emacs themes allow you to customize the colors and fonts used by emacs. For example (load-theme 'lawrence t) loads the theme "lawrence". Some themes are available by default (you can use customize-themes to obtain a list); many more available at emacstheme.com, including citrusOcean designed by a student of this class.

    Common Lisp Reference Works

    Books on Lisp

    Articles on Lisp

    Books and Articles on Lisp, non-English

    Lisp Implementations

    Note clisp and sbcl both have debian packages for easy installation.

    Web/blog pages on elisp/emacs

    Project Ideas

    I have started a list of project ideas.