I've been using emacs (and, on occasion, xemacs) as one of my editing tools of choice for a few years now. In that time I've written a small number of elisp (emacs' own lisp) packages. Below are ones that I'm not (too) ashamed to show to the world.

If you're looking for pointers for other emacs lisp packages you might want to take a look at the emacs lisp list and the EmacsWiki.


5x5.el is a simple but annoying puzzle for emacs. Please note that this package will be part of GNU emacs from version 21.1 onwards.

Chris Moore has been playing with this from a point of view of how the puzzle itself works, especialy with differing grid sizes. Take a look at his page about what he's played with and found.


avmmf.el provides a set of functions, and an interactive function, for dealing with the proposed AVM microformat.


I once saw a "binary clock" running on a friend's Windows machine and thought to myself "emacs could do that too". binclock.el was the result.


boxquote.el provides a set of functions for using a text quoting style that partially boxes in the left hand side of an area of text, such a marking style might be used to show externally included text or example code.

| The default style looks like this.

A number of functions are provided for quoting a region, a buffer, a paragraph and a defun. There are also functions for quoting text while pulling it in, either by inserting the contents of another file or by yanking text into the current buffer.


constellations.el provides a constellation abbreviation lookup tool. I can never remember the abbreviations for most constellations so, when I'm writing my observing logs I find this little tool handy — saves me from having to remember.


davep-wx.el is a little tool used to display the current weather conditions as acquired by my weather station.


An emacs implementation of ddate(1). All hail discordia.


equinox.el provides two support functions and one interactive command for displaying the date and the number of days to the next equinox or solstice.


festival.el provides a simple interface into the festival speech synthesis program from emacs lisp.

It was only once I'd more or less finished writing the first version of this that I noticed that a festival.el comes with festival itself (yeah, I know, I should spend more time examining the contents of software packages). As it is, I decided to press on with this anyway because I'd done a couple of different things and, more importantly, I was having far too much fun.


fscroll.el extends `scroll-up' and `scroll-down' so that the cursor is positioned at the very end/start of the buffer once you've scrolled as far as you can.


garble.el is an emacs interface for garble, a command line utility for interfacing with a Garmin GPS unit.


icmp-info.el provides a function for looking up the meaning of ICMP type/code combinations. I find this handy when I'm browsing any ipchains logs on my GNU/Linux box.


lbdb.el is an emacs interface into the Little Brother's Database


mutt-alias.el provides a couple of functions for looking up and inserting the expansion of mutt mail aliases.


I often mention the names of newsgroups in mail or news postings and it's pretty tedious typing out their names again and again. I've tried using things like abbrev to speed this up but have found that that isn't the right solution.

Given that almost all the groups I mention are groups I subscribe to it seemed that ngn.el was a reasonable solution. It provides a couple of functions for inserting a group name into a buffer using a completing read, the lookup list for that completing read is taken from ~/.newsrc.


nukneval.el is a little utility function I wrote to help out when writing elisp code. I use it to unbind function and variable definitions in an elisp buffer and to then reevaluate the buffer.


obfusurl.el provides a command for obfuscating an URL in written text such that the URL itself won't give the reader a clue to what it's pointing at but it can still be used as an URL.

This is useful if the URL itself could be a spoiler when you want it to be a surprise.


I wrote parenface.el as an experiment in "hiding" parenthesis in lisp code. It is often said that lisp programmers simply don't notice the parenthesis (it's my experience that this is true) and it was once suggested in comp.lang.lisp that you could use an editor to colour the parens so that they are almost invisible and a lisp programmer wouldn't notice.

Boris Schaefer provided the main part of the code in a post to comp.lang.scheme and I tidied it up and "packaged" it.


post.el is an emacs mode directed at people who use emacs as their mail editor when using mutt. I'm not the main author of post.el but I did contribute a whole bunch of code from a similar mode I use myself.


protocols.el provides code for reading the content of /etc/protocols. It also provides a command for doing protocol lookups (something that might be useful when you're having a read of log files).


quickurl.el provides a method of quickly getting at URLs you often quote. It allows you to do it by word expansion (a little like abbrev) or by selecting from a menu.

Please note that this package will be part of GNU emacs from version 21.1 onwards.


sawfish.el is a package for working with sawfish. As well as providing a programming mode for editing sawfish config files (nothing clever, it simply derives from emacs-lisp-mode) it also allows direct interaction with the window manager from the buffer.


services.el provides code for reading the content of /etc/services. It also provides a command for doing service lookups (something that might be useful when you're having a read of log files).


slashdot.el is some code I wrote so that I can view the slashdot headline database I build with slashcache.lisp.


smartsig.el is a package that provides an adaptive signature facility to a news/email editing mode in emacs. Unlike many adpative signature tools which work on who you are sending the text to, smartsig works on the content of your text.


spamprobe.el contains some utility functions that help me keep track of how well spamprobe is doing at detecting spam.


thinks.el is a little bit of silliness inspired by the think bubbles you see in cartoons. It allows you to

. o O ( insert text that looks like this )

into a buffer. This could possibly be handy for use in email and usenet postings.

Note that the code can handle multiple lines

. o O ( like this. That is, a body of text where the number of characters )
      ( exceeds the bounds of what you might consider to be a acceptable  )
      ( line length (he says, waffling on to fill a couple of lines).     )

You also have some control over the look of the bubble.


tld.el is a package that allows you to lookup TLDs and country names.


unbind.el contains a handful of utility functions I use for unbinding symbols when mucking about in emacs.


uptimes.el provides a simple system for tracking and displaying the uptimes of your emacs sessions. Simply loading uptimes.el from your ~/.emacs file will start the tracking of any session.


webinfo.el provides a simple command that displays information about a given web server.


I'm helping develop an Xbase mode for emacs. You can find out more about xbase.el at its home page and you can download the latest version of the file from CVS.

Page last modified: 2009-05-11 18:58:47 UT
Dave Pearson <davep@davep.org>
Valid XHTML 1.1 Valid CSS