I started using Emacs sometime in 1997. Before that I was a strong Vim proponent (mainly because of its extended undo feature). I changed over after I saw my PhD supervisor make light work of indenting a C program in Emacs by simply riding his TAB key (I was just learning C at the time). Since then I’ve learned a number of new programming languages (being drawn inexplicably from pure mathematics into computer science) and have found Emacs to be a great help in wrestling with each one of them.

At some stage a friend introduced me to Emacs Lisp and I’ve never looked back. Below is a collection Emacs Lisp packages that I’ve produced and which you may find useful. They’ve been moved here because my old homepage and its server are a little flaky and some people were having trouble downloading. I would add my dot emacs file but its way too big – some 4582 lines to date:-).

(All packages contain detailed usage and installation instructions).


Provides a tool for developing Emacs ColorTheme’s
Designing a good (or even good enough) color theme for Emacs can be extremely time consuming, since we typically have to consider hundreds of colors, hundreds of faces, and a number variations in weight, slant and size. The ‘color-theme’ package takes a community based approach to this problem: investing lots of time and effort is worthwhile if everybody gets to share the results. Unfortunately, good quality color themes are still a little thin on the ground.
This package provides a tool that can (hopefully) aid in the production of quality color themes. Basically it allows the user to
1. Develop sets of colors (palettes) that work well together;
2. Use those palettes to quickly select and set the properties of key face groups, and hence develop themes;
3. Save and manipulate themes and palettes under development.


Provides a major mode PlsqlMode for writing PL/SQL code. This ‘plsql-mode’ is an extension of ‘sql-mode’ and uses that mode to provide keyword fontification, symbol-tables, and interaction with the database. In addition to fixing some bugs this mode provides the following:
1. Fast and sophisticated indentation function ‘plsql-indent’ (normally bound to TAB) which can help to present (and maintain) complex code in a readable form.
2. Imenu support which allows you to jump to specific modules using either the “Contents” menu or speedbar.
3. Align support which allows you to automatically “beautify” code as you write by aligning certain constructs e.g. ‘align-current’ will align all =, :=, and ⇒ tokens in the current paragraph. XEmacs users may have to get a copy of the align package to use this feature.


Provides a simple interface to the HTML Tidy program – a free utility that can fix common errors in your mark-up and clean up sloppy editing automatically. Includes facillity to clean markup on demand and sophisticated menu and configuration file support for Tidy’s many options.


Provides a facility to update a (possibly remote) copy of the current buffer either automatically (by setting mirror-update-on-save) or on demand (via the function mirror-update-this-file). Just how this happens is determined by a series of buffer local variables. Since it is very lightweight and makes few assumptions about remote files and hosts it can handle certain pathological situations that AngeFtp or TrampMode struggle with.


Automatically generate a menu of available fonts (normally bound to S-mouse-1) constrained by personal preferences. Requires at least GNU Emacs 21.1 and probably wont work on XEmacs.


A real fast way to track down library files in your load-path (i.e. with completion). Basically I found NSFs fff.el a little buggy and TMs find-library.el way to slow. This is a quick hack that uses Gareth Rees’s read-library.el package. This all of course assumes you are only interested in files in your load-path:-)


Fixes bugs/anomalies in the mouse-drag-drag function that occur whenever mouse leaves the frame or window during a drag. Somewhat less usefully since the advent of the wheel mouse:-)


Just like display-time except that time, date, mail and appointment notification are presented in the title-bar rather than the mode-line. This is useful if your mode-line gets a bit crowded. Implemented by simply moving the string generated by display-time from the model-line to the title-bar. (This should really be a code snippet – Kal)


A few modifications to David Ponce’s most excellent swbuff package. See the code for details.


A number of extensions and modifications to JohnWiegley’s most excellent timeclock.el package. See code for details.

Welcome to the wiki! – AlexSchroeder
While there’s a preference for taking out nifty things from your configuration files and putting them on different pages, I’m sure many of us would still like to see your mammoth .emacs! – DamienElmes
Gosh where would I put it? :-) I’m working on a page to describe how I go about splitting up a large .emacs file so that it loads quickly – KahlilHodgson