Last change
on this file was
88,
checked in by Erik Huelsmann, 20 years ago
|
Implement MODE tracking.
- TODO: Remove MODE updating item.
- doc/user-guide.txt: Add section about modes.
- package.lisp: Export new symbols.
- variable.lisp (*default-isupport-CHANMODES*,
*default-isupport-PREFIX*): New.
(*default-isupport-values*): Add modes described by the RFC and declare
them the default (minimal set).
(mode-description): New. Structure to describe characteristics of mode
arguments sent by the server.
(*default-char-to-channel-modes-map*,
*char-to-user-modes-map*): New. Assoc lists to map characters to names.
- utility.lisp (parse-isupport-prefix-argument): New. Returns the prefix
and mode argument parts of the PREFIX RPL_ISUPPORT parameter.
(nick-prefixes-from-isupport): New. Returns a plist associating mode
prefixes with mode character designations.
(chanmode-descs-from-isupport): New. Returns a list of mode-description
structures for use with auto-creation of mode objects.
(do-property-list): New. Macro to walk a property list like dolist.
(parse-mode-arguments): New. Parses mode arguments given a connection
object and target and translates those into a list of mode change
instructions.
- protocol.lisp (irc-mode): New. Abstract super class. Derivatives used
to store mode values.
(set-mode-value, unset-mode-value, reset-mode-value, has-value-p): New.
Methods for irc-mode and its derivatives.
(single-value-mode, list-value-mode): New. Classes implementing two
types of value-holding mode-storage.
(connection:channel-mode-descriptions): New. Slot in which the channel
mode descriptions for the connection get stored.
(connection:nick-prefixes): New. Slot which stores a plist associating
RPL_NAMREPLY prefixes with mode characters.
(connection:user-mode-descriptions): New. Slot which stores user modes
like channel-mode-descriptions does for channels.
(add-default-hooks): Add hook for irc-mode-message.
(channel:modes): Change initialization to signal the value held will
be of LIST type.
(mode-name-from-char): New. Translates a mode character into an internal
'name': symbol.
(mode-description): New. Retrieves a mode-description record from the
given connection of a given mode name.
(get-mode, set-mode, unset-mode, remove-mode): New. These provide
operations on both channel and user modes.
(has-mode-p, has-mode-value-p): New. This must be obvious.
(remove-users): Also remove references to all users from any properties
which carry the :user value-type.
(make-mode): New. Automatically create mode object for the given mode
to be added to the given target (user/channel).
(user:modes): New. Slot to hold modes just like there is one on the
channel class.
(remove-user): Same as remove-user, but for the given user only.
- event.lisp (default-hook [irc-rpl_isupport-message]): Set new
channel-mode-descriptions and nick-prefixes slots.
(default-hook [irc-rpl_namreply-message]): Set mode fields based on
prefixes passed in the reply.
(default-hook [irc-mode-message]): Set or unset channel and user modes
upon reception of server notification.
|
-
Property svn:eol-style set to
native
-
Property svn:keywords set to
Author Date Id Revision
|
File size:
658 bytes
|
Line | |
---|
1 | 2005-03-21 Erik Huelsmann <ehuelsmann@common-lisp.net> |
---|
2 | |
---|
3 | Add MODE tracking support. |
---|
4 | |
---|
5 | 2004-03-18 Erik Huelsmann <ehuelsmann@common-lisp.net> |
---|
6 | |
---|
7 | * protocol.lisp: Add defgenerics. Remove duplicates |
---|
8 | from *reply-names* before passing to create-irc-message-classes. |
---|
9 | |
---|
10 | * command.lisp, event.lisp: Add defgenerics. |
---|
11 | |
---|
12 | * protocol.lisp (remove-channel): Change order of arguments |
---|
13 | to (remove-channel <user-object> <channel-object>) |
---|
14 | |
---|
15 | * package.lisp (export): Export symbols needed for manipulation |
---|
16 | of the different objects |
---|
17 | |
---|
18 | 2004-03-08: |
---|
19 | Started tracking changes committed to the repository in this log. |
---|
20 | |
---|
21 | Ordering of events in this file is last-commited-at-top. |
---|
Note: See
TracBrowser
for help on using the repository browser.