ZenIRC 1.49 - Thu Oct  7 22:03:54 MDT 1993 -

changes since 1.45

fancy zenirc-format-usernickhost defun was moved from zenirc to a script file,
zenirc-format-usernickhost.el. Also zenirc-user-format var was removed from
the client and added to zenirc-format-usernickhost.

Hooks now work properly, ie, if you define a zenirc-server-JOIN-hook function
before running zenirc, it will override the internal definition, you don't
have to change the zenirc source anymore to do this.

many small bugfixes, and a few speedups.

zenirc now untars to zenirc/* instead of current dir.

scripts/zenirc-example.el - example zenirc customization script
scripts/zenirc-ctcp-flood.el - bane of #wicca script

ZenIRC 1.45 ALPHA1 release - Tue Sep 28 19:28:12 MDT 1993 -
ben@piglet.cr.usgs.gov

This is the first alpha release of the ZenIRC client.  There are a lot
of rough edges, but it's usuable. I am planning a major rewrite of how
it handles server messages internally, which will likely break the
client for a while, so I wanted to release something we could use.

KNOWN BUGS:

The MODE server message loses totally.

The input stuff is primitive, and occasionally generates messages about
"wrong side of point".

Not all server messages are parsed (but most of them are).

The code for WALLOPS loses totally.

The client does not have a /notify feature, help, or a manual.

You cannot have more than one instance of zenirc running in your emacs
at a time.

KNOWN FEATURES AND INSTRUCTIONS:

There are two cases handled in the input parser

(1) The command you type starts with a `/' character. If this is the case,
    the command is passed uninterpreted by the client to the irc server.

(2) The command does not start with a `/' character. In this case, the
    client sends it to the channel or user specified in the variable
    `zenirc-current-victim'. When you /join a channel for the first time,
    `zenirc-current-victim' is set to the channel name. Thereafter, you
    must frob this variable manually with:
	 M-M-(setq zenirc-current-victim "whatever")
    or you might be able to do something with M-x set-variable, I dunno.

Here is a list of variables you might want to frobnicate in your .emacs or
on the fly:

zenirc-buffer-name, change the buffer name to something besides "*zenirc*"
zenirc-hostname, change the default IRC server to use. This might be correctly
	read from the IRCSERVER environment variable.
zenirc-port, the port number to connect to on the irc server.
zenirc-nick, the nickname to use on irc.
zenirc-name, the ircname to use on irc.
zenirc-userinfo, random user settable data accessed with CTCP USERINFO
zenirc-user-format, the format to show user, nick, host data as. If you
	want zenirc to look like ircII, set this to "%s".
zenirc-mode-map, keymap for zenirc-mode.
zenirc-ignorance-list, a list of regexps of things to be ignored. These are
	matched against raw server messages, so ignoring things like "ping",
	for instance, would be stunningly stupid.
zenirc-signal-list, a list of regexps of things for zenirc to signal you about.
zenirc-beep-on-signal, set to t if you want signals to cause a beep in addition
	to notifying you in the modeline.
zenirc-ctcp-errmsg-on-unknown, set to t if you want to aggressively boze at
	people who send you ctcp queries you do not understand.
zenirc-ctcp-errmsg-on-unbalanced, set to t if you want to aggressively boze
	at people who send you messages with an odd number of control-a's in
	them.
zenirc-verbose-ctcp, set to t if you want to know when your client 
	automatically responds to a ctcp query.
zenirc-fingerdata, what you want people to see when they finger you.
zenirc-source, where you can get the client from (once it's closer to being
	finished).
zenirc-text-list, an association list of all the messages the client displays,
	so you can easily modify or translate them to urdu or whatever.
zenirc-clientinfo-list, an association list of help for all the ctcp commands
	the client knows. This is user-settable so that you can add your own
	ctcp commands transparently.
zenirc-clientinfo-string, a list of all the ctcp commands the client knows.
	This is user settable for the same reason as above
zenirc-debug-mainloop, this enables printing of debug messages in the main
	client loop if set to t.
zenirc-debug-ignore, this enables printing of debug messages in the ignore 
	code if set to t.
zenirc-debug-signal, this enables printing of debug messages in the signal
	code if set to t.
zenirc-debug-ctcp, this enables printing of debug messages in the ctcp code
	if set to t.

The client is designed to be extensible and customizable, in the
spirit of ircII. Currently there is an unfinished, but useable,
mechanism for customizing ctcp and server message handling.

All server message handling subroutines have names of the form:

zenirc-server-MESSAGE, and take two arguments, the zenirc filter procedure,
and a parsed message, which is a list that looks like (MESSAGE sender (arg1 
arg2 ...)). If you want to create a handler for a message that does not
currently have a handler, write your own subroutine with a name of this
form that accepts these arguments. then do a:

(fset 'zenirc-server-WHATEVER-hook 'zenirc-server-WHATEVER) 

and ZenIRC will call your subroutine whenever it gets that server
message.  If you want to modify an existing message handler, you will
have to change the fset of the hook on the last page of zenirc.el to
point to your subroutine instead of the built in one. For instance, if
I wanted to replace the handler for the TOPIC server message, I would
change the line that read (fset 'zenirc-server-TOPIC-hook 'zenirc-server-TOPIC)
to (fset 'zenirc-server-TOPIC-hook 'whatever-my-subroutine-is-called).
In the future, you will be able to do this in a config file, so you will
not have to modify the last page of zenirc.el

CTCP is similarly extensible, only the format of the subroutine names are
zenirc-ctcp-query-WHATEVER-hook and zenirc-ctcp-reply-WHATEVER-hook. The
existing hooks are set on the last page of zenirc.el. These subroutines
are called with four arguments, the zenirc filter process, a parsed ctcp
message of the form ("CTCP_COMMAND" . "ARGUMENTS"), the sender of the
ctcp, and the reciever of the ctcp.

Some documents that may prove helpful in extending the client are the
RFC protocol specification for IRC and ctcp.doc. these are both included
in this archive.

Please send any comments, questions, ideas, bugfixes or whatever to
ben@piglet.cr.usgs.gov.

I will be working on a major rewrite of how zenirc handles server messages
internally that should make the client smaller and simpler. Noah is apparently
working on an improved emacs process filter, which I should be able to 
transplant into zenirc.
