Mud Your Emacs!
Version 2.6 released March 3 1999
Releases are infrequent, usually whenever I get sufficiently
bored with the other stuff I'm playing with, sufficiently
embarrassed about not having released something, or when
the wind's blowing in the right direction.
Click over there -> to download mud.el. There's also a development version of the mud code
here, but it's got more bugs in it than is useful, and I won't
listen to any complaints about it.
This page hosts a mud client written in elisp which is designed
to talk to Tom
Boutell's PerlMUD. Although
originally a solitary gneework of Waider Destructions, Inc.,
the latest releases contain some significant contributions from
Here's the mud.el I
used use, more or less.
There's not much point in writing a new mud client unless it's
got something going for it, right? Well, this client has the
- Split-window input. You type in
one window, output appears in another. This was my principle
reason for dropping the other
mud.el. Subfeatures of this are:
- Automatically bounce input to the input window if you
try to type in the output window.
- Automatically bring the output window into view when
there's activity on it (can be switched off).
- Multiple muds, simultaneously. Each gets its own pair of
windows to play in. Or not. You can have multiple output
windows and a single input window. mud.el supports
the notion of a default mud where undirected typing goes,
and tf/IRC-style '/mudname' stuff for the rest.
- / commands, a la IRC or tf. /join, /list, /input
(change default mud).
- Hilighting. Pages, Whispers, URLs and NEW! topics are
hilighted. You can set the faces for hilighting yourself, if
you grok faces in emacs. There's some help for that in the
pipeline, as soon as I find out which pipeline.
- Point-and-shoot URLs. Middle-mouse on a URL in the output
window will send your browser off looking for that URL if
you have browse-url installed.
- PING support. Ask Rocco about
- Firewall support. This is fairly primitive. Currently only
supports the type of firewall where you telnet to a gateway
host and get a shell of some sort to telnet out from, a la
- Log to file, with a customisable logfile-naming
function. Can be toggled on-the-fly.
- Audible paging, i.e. if someone pages you, emacs
will beep. Switchable.
- Automatic login, complete with configurable default/specific
- Idle timer. If you're on a connection that times out without
traffic, you can set this to run at a suitable
interval. Comes in two varieties: silent, which sends a
space/backspace down the line, and verbose, which has you do
silly things on the mud you're connected to while you're
- Hooks. Most of the internal hookage runs off a single regexp
matcher that uses a list of vectors of regexps and functions
and blah blah blah blah...
sorry, I geeked out there. The hooks stuff was rewritten
for version 2.5, but there's some more work to do to make
- A cutesy internal reporting function that makes it look like
mud.el is talking to you. How sweet.
- Dump a file into the mud, using either "say" or
"emote" or your local equivalent.
- A menu for the input buffer. Why? Why not?
- You can override the defaults using emacs
properties; for example, you can set Nerdsholm to not ping
you on pages by doing (put 'Nerdsholm 'mud-page-beep
nil) in your .emacs. Previously you'd have had
to run up the mud connection before doing this, as the
connection init code overrode any existing properties.
Coming as soon as I get around to coding it: (or rather,
releasing what I've coded)
- Better firewall support, including telnet options
handling. In elisp. Oh baby. Actually, since we changed the
firewalling here at work I've lost interest in this. I
really need to get back at it, at some point.
- .mud file or similar support.
- MUD-specific mode. Dunno what this will do over the
exisiting use of *Fundamental* other than look
- Completion for logged-on usernames, topics, other stuff. Maybe.
- I need to do something about documentation.
- Proper customisation interface, using customize.el.
- Timestamps, so you can see how long ago
someone called you a berk and whether it's worth still being
upset at them. (discretion not included)
- Browse the source for FIXME and
I originally wrote this under FSF emacs-19.3, mostly on a Win95
box. It should run under any FSF emacs-19.3
regardless of platform; the only thing liable to cause any
trouble is the log filename, which you can patch around if
necessary. I've used convert-standard-filename but
it's not always implemented to actually do the job for your
platform. Still, NT/Emacs finally has an implementation.
I digress. Apparently mud.el will run under some earlier
versions of emacs, but with some problems like broken
hooks. I've started adding in some support for this sort of
thing, and I've finally got an aged emacs running that I can
do fixups under. To add to the fun, it's running on a
Macintosh, so I get to be cross-platform as well. Corprew was
running it under XEmacs, but I don't know if he still is. I
use XEmacs infrequently myself.
I've also run it on emacs-20.3+ on a Linux box with no
problems, and 20.something on Win95 with some minor stupidity
related to multibyte characters, but nothing fatal. I've a fix
for the latter in the development
version of the mud code.
Server-side, this has been designed to talk to Tom's PerlMUD, but it
doesn't use a whole lot of stuff specific to PerlMUD that I'm
aware of. It'll probably work after a fashion on stuff like
TinyMUD, I imagine, but since PerlMUD is the only thing I log on
I maintain a list of people who use the mud code, so I can let them
know when a new version has been released. Nothing so smart as a
mailing list. Email me if you want to be added, or if you've
patched something, or if you want a new feature added. I'm very
malleable with respect to features. Actually, I'm very malleable -
it comes from not having a decent exoskeleton. Failings of the species, I guess.
Back to the hacks | Take it from the top
||The Ferret hits! --more--
You feel woozy!