With a few exceptions, I either wrote or coauthored all these programs. I haven't bothered making other people's programs available here unless I made modifications that I felt were noteworthy.
You can read descriptions below, or simply browse the source directory. There are probably some programs there which I have not documented here.
For a description of recent changes, please see the ChangeLog.
Major | Minor | UI | Editing | Mail | Processes | Network | Lib | Fun | Misc
| 
 
 | |||||||
| listbuf.el
 | My hyperactive replacement for the standard buffer menu.
      You can define the fields you want to appear in the buffer
      (by default it shows some that do not normally appear, such as the
      version control number and process status, if any);
      determine which buffer names to show or hide;
      sort the entries by any criteria you want, e.g.
      major mode or buffer size; and so on.
      Field alignment is generally better than that in the standard command
      as well (and more adjustable), so it's easier to read. 
 | ||||||
| 
 
 | |||||||
| eldoc.el
 | This is a minor mode for Emacs Lisp and Lisp Interaction Mode
      buffers which shows you the parameter list for functions as you type
      or move over s-expressions.
      It also shows you the meaning of documented global variables.
      The inspiration for this mode came from a similar feature
      on some lisp machines. This package comes standard in XEmacs 19.15 and later, and Emacs 20.1 and later, but you should always be able to find the latest version here. 
 | ||||||
| flash-paren.el
 | Make matching parentheses, brackets, etc. blink in Emacs.
      Works even on ASCII terminals;
      it brought new life to my Ann Arbor Ambassador, I tell you! 
      Don't use this in XEmacs.
      XEmacs has  
 | ||||||
| rsz-mini.el
 | Dynamically resize the minibuffer when you're typing in it, so that
      you can always see everything you type.  To enable it, just use
      the resize-minibuffer-modecommand.
      This program has been part of Emacs 19 for a long time.
      An older version was included in XEmacs starting with version 19.12;
      the file name is  
      Some history: Roland McGrath
      wrote the first version of this program for Emacs 18,
      inspired by an even earlier hack by
      Skip Montanaro
      called
       This package has been obsolesced in Emacs 21. It took 10 years, but the minibuffer and echo area have finally been integrated and automatic resizing of this window region is built into the editor now. 
 | ||||||
| suggbind.el
 | This program helps you learn shortcuts for commands.
      That is, when you type the full name of a command using
      M-x some-extended-command notation, the command is run and
      then a messsage appears with a list of shorter keybindings (if any)
      for that command. 
      Starting with Emacs 19.30, a feature like this is already built in,
      and controlled with the variable  
      I prefer the behavior of my mode better, which shows you
      the keybindings after the command has completed.
      (Note: Emacs 20.1 and later adopts my behavior of showing the
      keybindings after finishing the command.)
      I also noticed that both Emacs and XEmacs 19 get it wrong for commands
      that read input from the user, because they depend on the value of
       
      I'm not 100% sure where the idea for this feature originated.  For
      years I had a wrapper around the  
 | ||||||
| type-break.el
 | This is a monitor for Emacs which schedules typing breaks and reminds
      you to take them.
      Aside from using a simple timer, it has various heuristics for
      guessing if you're typing unusually heavily and may pre-empt the timer
      and make you take typing breaks sooner.
      If you don't take the typing breaks when it suggests them, it gets in
      your face about it (but it won't lock up the keyboard since that would
      prevent you from saving critical buffers and so forth).
      It has a couple of display hacks it can run while you're taking your
      break. The objective is to make you stop working and take a break by getting up and walking around once in a while, like various ergonomics studies suggest you should do. It may help prevent you from getting Tendinitis or Carpal Tunnel Syndrome, as I had for many years. Of course, it's only really useful if you live entirely in Emacs like I do. If you switch betwen windows a lot, the keystroke monitor will be useless. 
 | ||||||
| 
 
 | |||||||
| disptime.el
 | A complete replacement for time.el, which implements the
      standarddisplay-timecommand.
      This package defines a new command,disptime-enable, which
      has a different customization interface.One advantage of this package over older versions of the standard one is the ease with which you can enable/disable parts of the modeline display, or write your own extensions. One extension I wrote actually queries a POP server to determine how many unread messages you have incoming, and displays that. 
 | ||||||
| eval-expr.el
 | This file replaces the standard eval-expressioncommand.
      A complete list of improvements is described in the comments at the
      beginning of the file.
      This program is inspired by an earlier implemention written by
      Joe Wells called
       
 | ||||||
| escreen.el
 | This is a sort of session manager for emacs, inspired by the unix screenprogram.
      This version works in every emacs version and variant I've ever gotten
      my hands on, in both X and ASCII terminal mode, so it's pretty
      portable and gives you a fairly consistent interface for
      switching back and forth between different session configurations,
      even though some if its functionality has been duplicated by standard
      facilities in some newer versions of Emacs.You can save and restore arbitrary data when switching configurations. Among some of the default things saved are the window sizes and layout, buffer marks, the state of narrowed regions (so you can create two narrowed views of the same buffer simply by switching screens), menu bars, buffer order, etc. I have not yet implemented persistent storage of this data across invocations of emacs. 
 | ||||||
| fff.el
 | This package provides you with a bunch of shortcuts for visiting or
      inserting many different kinds of files without having to know their
      full path name in the file sytem.
      For example, you can quickly locate
      shell scripts in your executable path,
      search for TeX input files,
      use the locatecommand
      (part of the GNU findutils package)
      to find files anywhere on the
      system without a predetermined search path, etc.Included is a documented set of library routines for writing your own extensions. 
 | ||||||
| fff-elisp.el
 | Extensions to fff to provide support for
      locating emacs lisp libraries and function definitions.
      You can visit the source code for any lisp function you've loaded
      from libraries or your own .emacs startup files; this package figures
      out where it was loaded from and just takes you there.
      Just like the lisp machines used to do! 
      This package may be redundant with  
 | ||||||
| fff-rfc.el
 | Extensions to fff to provide support for
      locating IETF Request For Comments (RFC) documents.  You can search
      for local copies of the documents or fall back to locating remote
      documents via transparent ftp. 
 | ||||||
| infobook.el
 | A quick hack for keeping bookmarks of visited nodes in Info trees.
      This is probably completely obsolesced by
      Karl Fogel's bookmark.el, which is standard in Emacs 19.
 | ||||||
| lude.el
 | Some quick hacks for working with
      LUDE depots.
      See also ludeconf. 
 | ||||||
| win-disp-util.el
 | Library routines and interactive commands for optimizing redisplay
      when creating or closing windows.  There are also some scrolling
      and line-wrap toggling commands. 
 | ||||||
| xterm-frobs.el
 | Commands for manipulating xtermterminals when running
      emacs under them.
      You can select fonts, foreground and background colors
      (in versions of xterm which support this),
      set icon and window titles, etc.
 | ||||||
| xterm-256color.el
 | Recent versions of
      xterm
      from the XFree86 4.0
      distribution, or as distributed by
      Thomas Dickey,
      can be compiled to support 8, 16, 88, or 256 colors.
      This file enables Emacs 21 running under xterm to take advantage of
      256-color mode.  (It will not work with earlier versions of Emacs
      because they do not support faces in tty frames.) Emacs 21.3 implements native 256 color terminal support. At the time of this writing (2002-06-21) I have not yet verified whether this package interfaces properly with that builtin support or not. 
 | ||||||
| 
 
 | |||||||
| comment.el
 | This package lets you quickly comment out sections of code in various
      different languages, or use it to quote attributed text in mail and
      news messages.
      You can customize the comment style somewhat. 
 | ||||||
| hack-locals.el
 | This may be obsolesced by recent versions of emacs;
      I haven't checked. 
      It allows you to set  
 | ||||||
| kill-a-lawyer.el
 | Damnit, Jim.  I'm a hacker, not a lawyer! Narrow buffers to hide the godforsaken multi-page copyright notices that appear at the beginning of most source files. 
      Unknown to me or to Ben Mesander (the primary author of this mode)
      at the time,
      Jamie Zawinski
      wrote a similar thing for Lucid Emacs (now XEmacs),
      called  
 | ||||||
| killbuf.el
 | This implements kill-buffer-hookandkill-buffer-query-functionsfor Emacs 18.
 | ||||||
| lat1conv.el
 | Perform conversion of some Latin-1 (same as iso8859-1) to equivalent
      7-bit ascii sequences when possible. 
      I wrote this for converting mail and news article reply buffers so
      they would not contain 8-bit characters needlessly.
      Otherwise, the buffer has to be converted to
       
 | ||||||
| linuxproc.el
 | Prior to version 21.1, Emacs cannot visit pseudofiles in the linux /procfilesystem because they are all reported as
      zero-length files and emacs believes there is nothing to read.  This
      package installs a special handler which enables emacs to visit these
      files normally.This package is not needed in Emacs 21, which has addressed the problem internally. It does not work at all in XEmacs. 
 | ||||||
| whitespace.el
 | Nukes trailing whitespace from the ends of lines, and deletes
      excess newlines from the ends of buffers, every time you save.
      It's mode-sensitive, so for some modes it will ask you before doing
      anything; in some cases it will clean up whitespace unconditionally;
      and in other cases it will never do so. There is a whitespace.el included with Emacs since 1999, but that is not the same as this version. My version predates that one, but I declined to have mine bundled with Emacs for vague technical reasons. 
 | ||||||
| 
 
 | |||||||
| bbdb-pilot-jwz.el
 | This program is for use with the
      Insidious Big Brother
      Database.
      This program's main entry point, bbdb-to-pilot-file,
      will write out all BBDB records into a CSV-format text file
      containing records suitable for loading into the PalmOS address book
      with thepilot-addressescommand.Currently, synchronization is one-way; you cannot sync records back to BBDB yet. Jamie Zawinski wrote this program originally (hence the name), but he doesn't use a PDA very much anymore, so I'm maintaining it for now. 
 | ||||||
| fmailutils.el
 | My library of general-purpose mail header parsing routines and mail
      mode extensions.  This is required by many of the other packages in
      this category. 
 | ||||||
| ns-browse.el
 | View mail or news buffers by dispatching a copy off to a running
      Mozilla (Netscape) browser.
      This is particularly useful for decoding S/MIME encrypted or signed
      messages, or even for viewing HTML-enriched messages quickly. 
      Presently this program is integrated with
      GNUS,
      VM, and RMAIL,
      but it needs to interface better with the  
 | ||||||
| order-head.el
 | This is a mail mode extension that sorts your outgoing message headers.
      As the comments in the source file say, only an anal retentive pedant
      would actually use this.
      (And just think: I not only use this, but I wrote it.) 
 | ||||||
| qpdecode.el
 | I wrote this before
      VM
      supported MIME, to help make quoted-printablemessages a
      little easier to read.
      VM 6.0 and later have much better (and more general) support
      for this kind of thing already, although RMAIL users might still find
      this useful.Even though this package is obsolete, I still provide it in case it would be a useful base of code for anything else. 
 | ||||||
| sendmail-alias.el
 | Mail mode normally looks for mail aliases defined in your ~/.mailrcfile, which is also used by the
      BerkeleyMailcommand (also known asmailxin some versions of unix).
      This package lets you use a Sendmail style aliases file instead.
      It even supports the  Roland McGrath wrote this program originally, but later stopped using it in favor of Jamie Zawinski's Insidious Big Brother Database (BBDB). I still use this program, however, so I'm maintaining it now. 
 | ||||||
| silly-mail.el
 | I'll probably regret telling other people about this hack.
      It generates random silly mail headers to put in your outgoing
      messages.
      For example, it can add scathing remarks about the X Window System
      or Emacs, Zippy quotes, Tom Swifties, flames, shopping lists, and
      other inanities. This program contains a number of databases of amusing texts. I am not the author of many of those texts, but I did write all the code from scratch. 
 | ||||||
| spookmime.el
 | This package provides a routine for generating MIME multipart boundary
      separator strings which contain subversive words and phrases. Spookmime insinuates itself into VM when loaded so that VM uses these generated boundaries when sending or forwarding multipart MIME messages. A hook for using it with GNUS is also provided, but must be enabled manually. 
 | ||||||
| vcard.el
 | This is a library of low-level routines for parsing vcardrecords, as well as for formatting them for display.
      Vcards are a standardized, 7bit
      address book format that is in popular use with some mail agents,
      including (but not limited to) Mozilla.
      Typically they are included astext/x-vcardMIME attachments.
      I've written an interface to these routines for
      VM,
      one emacs-based mail reader.  Those stubs are in a separate file,
       If you write stubs for other mail user agents, please send them to me! 
 | ||||||
| vm-vcard.el
 | This is my vcardinterface for
      VM.
 | ||||||
| vm-addons.el
 | Various commands and customization routines I've written for working
      with VM.
      In addition to some new interactive user commands, there are routines
      for manipulating the auto-folder-alist, automatic
      deletion of messages based on virtual folder selectors, etc.
 | ||||||
| vm-advices.el
 | These are some additional enhancments like those provided by
      vm-addons.el, but they modify existing VM
      functions via the emacs advicemechanism and thus cannot
      be autoloaded.
 | ||||||
| vm-multdom.el
 | This package lets you reply or forward messages from within
      VM,
      setting your return address to match whatever address was used to
      reach you in the first place. 
      For example, my regular address is
      friedman@splode.com.
      However, I still sometimes use the address
      friedman@prep.ai.mit.edu
      when I'm sending email that's related to the
      GNU Project.
      Using this package, if someone sends email to the latter address,
      my  In order for this to work, all you have to set a lisp variable to contain a list of all your known email addresses and load this file as part of your emacs initialization. 
 | ||||||
| 
 
 | |||||||
| comint-popup.el
 | This is an extension of pb-popup.elwhich is tailored for optimal behavior inshell,telnet,
      and most other kinds of interactive process buffers.
 | ||||||
| fshell.el
 | This is pretty trivial.
      It defines a new shell command, fshell,
      which can launch multiple shell sessions when you use a prefix argument.This package exists because I lobbied Richard Stallman to make this the standard behavior for shell mode, but he thought it was too complicated. 
 | ||||||
| pb-popup.el
 | If you run processes under emacs (e.g. telnet sessions),
      this package notifies you when new output arrives in buried buffers by
      popping up a new window for them.
      You can control where new windows will appear, and what counts as a
      ``presently displayed'' buffer.  For example, you can
      specify a dedicated frame for a particular process buffer, select
      whether to look for buffer windows in iconified frames, etc.
      There are several other user preferences you can set. 
      This package implements general-purpose behavior.
      For most interactive processes, you will want to use the higher-level
      interface  
 | ||||||
| proc-filters.el
 | This package implements some useful process filters, especially for
      unix shell process buffers.  While this package does not implement any
      kind of general terminal emulation, it does make it possible to run
      programs which attempt to updating the screen in place and be
      readable inside an emacs buffer. 
      As an example, recent versions of the  
      The aforementioned filter presently handles the display of other
      program output as well, including
       
 | ||||||
| protbuf.el
 | The commands defined in this package allow you to create buffers which
      cannot be killed accidentally.  You can mark ``precious'' buffers,
      then gleefully kill all the rest of your buffers in the buffer menu. 
      There are two minor modes defined.
      The first mode protects a buffer only so long as a process
      is still associated with it.
      You can use this to keep from killing your  The second mode unconditionally prevents a buffer from being killed. Turning off the minor mode makes the buffer killable again. 
 | ||||||
| viewtex.el
 | This lets you preview regions of TeX sources using xdvi.
      It's supposed to notice\inputsequences and include
      them to satisfy macro dependencies, but I've never thoroughly tested
      this.
 | ||||||
| vkill.el
 | This is a kind of ``dired'' mode, but for unix processes.
      It displays a list of all your processes, or of all the processes on
      the system, in a buffer where you can mark them and send them signals. This is a mode written originally by Kyle Jones, but I've made several trivial modifications over the years. 
 | ||||||
| 
 
 | |||||||
| agchat.el
 | This is an interface for
      silverchat,
      a local-area chat system in Austin, TX. 
 | ||||||
| ftcp.el
 | This package lets you use your own network stream implementation
      (via external processes), rather than using the built-in one.
      Some people choose to use an external process to avoid wedging
      emacs while waiting for client connections to establish. 
      There is one caveat for emacs lisp programs which expect that their
      network streams are really internal streams and not inferior process
      objects:
      The value returned by  
 | ||||||
| ftelnet.el
 | My telnet mode.
      It features remote directory tracking and other features
      I stole from myself after writing rlogin.el.
      See alsossh.el.
 | ||||||
| meditate.el
 | Interface to
      ZenMOO,
      and optionally make emacs auto-meditate.
      Remember, your keyboard is not the path to enlightenment. Historical note: the code for this program was the starting point for ZenIRC. 
 | ||||||
| rlogin.el
 | This is a comint-based interface for connecting to remote
      hosts via rlogin.
      It features remote directory tracking via transparent ftp.
      Seeftelnet.elandssh.elfor some other remote shell interfaces with similar functionality.
       
 | ||||||
| ssh.el
 | This is a comint-based interface for connecting to remote
      hosts via ssh.
      It features remote directory tracking via transparent ftp, a feature I
      stole from myself after writingrlogin.el.
      See alsoftelnet.el.
 | ||||||
| webster.el
 | An interface to some kinds of dictionary servers.
      This is my own implementation; it's not the same as either of the two
      different interfaces that are provided with XEmacs. 
 | ||||||
| ysq.el
 | Fetch stock quote information from
      Yahoo. 
 | ||||||
| ZenIRC 
 | ZenIRC is an IRC client written in Emacs Lisp.
      Please see the ZenIRC home page
      for more information. 
 | ||||||
| 
 
 | |||||||
| buffer-fns.el
 | Some routines for modifying buffer contents or display. 
 | ||||||
| bytecomp-fns.el
 | Bytecode maintenance functions.  In particular is a method for
      allowing you to specify that the compiled file corresponding to a
      given source file lives in a different directory.  This makes it
      easier to have one source tree but different bytecode directories for
      different variants of emacs. 
 | ||||||
| cust-stub.el
 | Emacs 19.34 and earlier, and XEmacs 19.14 and earlier,
      do not have the defcustomordefgroupsyntax used for declaring user options.As of May 1997, many of my own programs use these forms, so I provide a stub for backward-compatibility with earlier versions of emacs. 
 | ||||||
| dbfrobs.el
 | These are some emacs-lisp level debugger enhancements which I find
      useful for customizing the kinds of exceptions which should trigger
      the debugger.
      This may only be interesting to hackers. 
 | ||||||
| dirtree.el
 | Functions for building directory-tree lists. 
      I use the function  
 | ||||||
| emacs-variants.el
 | Various routines for determining the variant of emacs running
      (e.g. Emacs, XEmacs, MULE) and version number information. 
 | ||||||
| file-fns.el
 | Functions for querying about or acting on files.
      One command, load-offer-compile, will offer to compile an
      emacs lisp library if it is out of date.
 | ||||||
| frame-fns.el
 | Assorted frame manipulation commands. 
 | ||||||
| host-fns.el
 | Functions for querying host name information. 
 | ||||||
| kbd-fns.el
 | Keyboard input and keymap utility functions.
      Most of these are just syntactic sugar for creating keymaps, keyboard
      translation tables, etc. as well as making completely buffer-local
      instances of them. 
 | ||||||
| list-fns.el
 | Routines I frequently use for searching or manipulating different
      kinds of lists.
      In addition to some general-purpose routines like set-alist-slot,
      there are also routines for manipulating special
      Emacs data structures such as theauto-mode-alist,minor-mode-alist,load-path,after-load-alist,
      etc. in a convenient manner.
 | ||||||
| map-win.el
 | A library routine for traversing all the windows in an emacs frame (or
      in all frames) and evaluating s-expressions.
      It's similar to the walk-windowsfunction in Emacs 19.
 | ||||||
| math-fns.el
 | Some trivial arithmetic routines for computing greatest common
      divisors, least common multiples, powers of two, etc. 
 | ||||||
| motion-fns.el
 | Various motion commands for e.g. moving to the longest line in a
      buffer.  This package mostly contains various buffer-narrowing
      commands at present. 
 | ||||||
| obarray-fns.el
 | Some routines for manipulating obarrays. 
 | ||||||
| save-undo.el
 | This is a useful macro for preserving undo boundaries when
      implementing interactive commands which modify buffer contents.
      Exactly what this macro does and why requires a complicated
      explanation which is given in the comments of this
      copiously-documented file.  If you are not concerned with emacs
      arcana, this will not interest you. 
 | ||||||
| string-fns.el
 | General-purpose routines for searching strings or converting them to
      other data types. 
 | ||||||
| what-domain.el
 | Commands for resolving top-level domain letters into country names and
      vice-versa. 
      This library was inspired by the  
 | ||||||
| 
 
 | |||||||
| diacriticalize.el
 | Constructive diacriticism for GNU Emacs. Let's face it: languages are more fun when they are peppered with excessive diacritical marks. I've always appreciated how the French really outdid themselves with Vietnamese, surpassing their own older written alphabet. It's probably too late to enhance English in this manner, but there's no reason you can't sprinkle random, gratuitous diacritical marks in your text anyway. This program provides commands to do just that. 
 | ||||||
| doh.el
 | Play an audio file instead of signalling a normal bell.
      This only works on unix systems that support some kind of audio
      device like /dev/audio, e.g. Linux or Solaris.You'll have to get your own sound files to use with this. As some people might have guessed from the package name, I use an interjection frequently used by Homer J. Simpson. 
 | ||||||
| emacs-name.el
 | Ever wondered what the acronym EMACS actually stands for? 
 | ||||||
| flame.el
 | ``This program has a chequered past.'' Generate random flames and insults. Richard Stallman removed it from the Emacs 19 distribution for copyright reasons (neither of us could locate Ian Batten, the original author of the emacs lisp version, at the time). That version is still distributed with XEmacs as of version 21.4. My version is a complete rewrite. 
 | ||||||
| geek.el
 | A complete waste of time to hack off the sort of pinheads who think
      geek code is cool. Over the years I think people have written automatic ``geek code decoders'' so you can translate what this ridiculous babble actually means. It is my sincere hope that the pseudocode generated by my program will crash those decoders. Well, I can dream, can't I? 
 | ||||||
| horoscope.el
 | Originally written by
      Bob Manson
      in ksh,
      this program generates random horoscopes.
      Fun for hours.
      And just as accurate as the readings you can get from those
      $4.99/minute phone services!
      Here's a small sample:
      Tomorrow your wonderful pet piglet will adjust your girdle.  Beware of
      someone you know bearing a deadly disease.  Days from now wearing
      clothes may seem expensive.  You will meet a wallflower this week.
      You'll later be a Borg.  12 is your lucky number.
      
 | ||||||
| kibologize.el
 | I don't think I can really explain what this is.
      You'd better just read
      alt.religion.kibology
      and figure it out for yourself. 
      Kibo (James Parry) wrote this
      program, basing it on the Emacs 18 implementation of
       
 | ||||||
| shop.el
 | This program is a reimplementation of a brilliantly-conceived
      hack written by Brian Rice in C while he was a student at
      Oberlin College, c. 1989.
      It generates random shopping lists.  Here is a small sample: 
      Here is your shopping list:
      (1) Idiotic frivolity confirmers
      (2) Claustrophobic chowder
      (3) Bicentennial travesty
      (4) Chaotic ecclesiastical Garden Weasel selectors
      
 | ||||||
| twiddle.el
 | This is a cute mode line display hack.
      This was originally written by
      Jim Blandy
      and further hacked on by
      Roland McGrath.
      That version used a separate process to provide inputs and act as a
      kind of timer.
      With the advent of built-in timers in Emacs and XEmacs, this seemed
      unnecessary to me so I rewrote the whole thing from scratch. 
 | ||||||
| uboat.el
 | Generate U-Boat death messages, patterned after Iron Coffins.
      This is another hack written originally by
      Bob Manson
      in ksh.
      Here's some sample output:
      ATTACKED BY DESTROYER 12W 23N. SINKING. U-471.
      TORPEDOED BY TINY GNATS. SINKING. U-469.
      BOMBED BY SPACE-TIME VORTEX. LEAVE BOAT. U-158.
      TORPEDOED BY NETSCAPE. CREW UNMOTIVATED. SINKING. U-719.
      
 | ||||||
| warlord.el
 | This is an annoying signature generator I wrote in 1993 to demonstrate
      how unimaginative some people's signatures were.
      If you don't know already, making fun of someone's idiotic and/or
      oversized signature is known as
      warlording, hence the name of this
      program. Note that vcards have rendered some signatures so boring, they're not even worth warlording. Ah, for the good old days. 
 | ||||||
| youwill.el
 | Generates advertisements in the style of AT&T's ``You Will''
      campaign, c. 1992.  Here's an example: 
      Have you ever thought it was unhealthy to have three Ann Arbor
      Ambassador terminals to defend against spinach?  Or tasted brussel
      sprouts and thought it was tasty roadkill?  Or been assaulted by
      crazed Korean traffic cops in a garbage dump?  You will.  And the
      company that will bring it to you: AT&T.
      
 | ||||||
| yow-fns.el
 | Extensions to yow.el.  You probably do not need this
      because I already added these functions to the standard Emacs
      distribution years ago; it's just here for the sake of users of older
      Emacs versions.  Are we OBSOLETE yet?
 | ||||||
| 
 
 | |||||||
| czscm.el
 | ``Cheezy Scheme'' This is the start of a Scheme interpreter for Emacs, written entirely in elisp. (Scheme is a lexically-scoped dialect of lisp with tail recursion elimination, first-class procedures, and first class continuations a standard part of the language definition.) There are some major pieces missing in this implementation including continuations, a reader, and a great many R4RS procedures. I think most of the required syntax (except for low-level macros) is there, the implementation has general tail call elimination, and even has a few extras like first class environments. But I wouldn't call it even halfway complete. I doubt it's worth taking this implementation ``all the way''. It was fun to write, but it's not practical for anything. 
 | ||||||
Major | Minor | UI | Editing | Mail | Processes | Network | Lib | Fun | Misc