Anonymous avatar Anonymous committed d59f55b

packages: Full erc sync with upstream 1.657

-------------------- ChangeLog entries follow: --------------------

xemacs-packages/erc/ChangeLog addition:

2004-05-09 Adrian Aichner <adrian@xemacs.org>;

* CREDITS: Fulle erc sync with upstream 1.657.
* CREDITS (P.S.):
* ChangeLog.upstream:
* Makefile (AUTHOR_VERSION):
* erc-autoaway.el:
* erc-autoaway.el (erc-autoaway-version): New.
* erc-autoaway.el (erc-auto-discard-away):
* erc-autoaway.el (erc-autoaway-no-auto-discard-regexp): New.
* erc-autoaway.el (erc-autoaway-reset-idletime):
* erc-autoaway.el (erc-autoaway-set-back):
* erc-button.el:
* erc-button.el (erc-button-add-button):
* erc-button.el (erc-widget-press-button): Removed.
* erc-ezbounce.el:
* erc-ezbounce.el (erc-ezb-version):
* erc-ezbounce.el (erc-ezbounce): New.
* erc-ezbounce.el (erc-ezb-login-alist):
* erc-fill.el:
* erc-fill.el (erc-fill-version):
* erc-fill.el (erc-fill-static):
* erc-fill.el (erc-fill-variable):
* erc-fill.el (erc-count-lines): Removed.
* erc-fill.el (erc-fill-regarding-timestamp): New.
* erc-fill.el (erc-timestamp-offset): New.
* erc-fill.el (erc-restore-text-properties): New.
* erc-list.el (erc-cmd-LIST):
* erc-log.el:
* erc-log.el (erc-log-channels-directory):
* erc-log.el (log):
* erc-match.el:
* erc-match.el (erc-match-version):
* erc-match.el (erc-match):
* erc-match.el (erc-keywords):
* erc-match.el (erc-current-nick-highlight-type):
* erc-match.el (erc-log-matches-types-alist):
* erc-match.el (erc-hide-fools):
* erc-menu.el:
* erc-menu.el (erc-menu-version): New.
* erc-nets.el:
* erc-nets.el (erc-nets-version):
* erc-nets.el (erc-networks-alist):
* erc-nickserv.el:
* erc-nickserv.el (erc-nickserv-version):
* erc-nickserv.el (services):
* erc-nickserv.el (erc-nickserv-identify-mode): New.
* erc-nickserv.el (erc-prompt-for-nickserv-password):
* erc-nickserv.el (erc-nickserv-passwords):
* erc-nickserv.el (erc-nickserv-alist):
* erc-nickserv.el (erc-nickserv-identify-autodetect):
* erc-nickserv.el (erc-nickserv-identify-on-connect): New.
* erc-nickserv.el (erc-nickserv-identify-on-nick-change): New.
* erc-nickserv.el (erc-nickserv-call-identify-function): New.
* erc-page.el:
* erc-page.el (erc-page): New.
* erc-speak.el:
* erc-speak.el (erc-speak): New.
* erc-speedbar.el:
* erc-speedbar.el (erc-speedbar): New.
* erc-speedbar.el (erc-speedbar-sort-users-type): New.
* erc-speedbar.el (erc-install-speedbar-variables):
* erc-speedbar.el (erc-speedbar-buttons):
* erc-speedbar.el (erc-speedbar-expand-channel):
* erc-speedbar.el (erc-speedbar-insert-user):
* erc-speedbar.el (erc-speedbar-expand-user):
* erc-speedbar.el (erc-speedbar-goto-buffer):
* erc-stamp.el:
* erc-stamp.el (erc-stamp-version):
* erc-stamp.el (erc-away-timestamp-format):
* erc-stamp.el (erc-timestamp-intangible):
* erc-stamp.el (erc-insert-timestamp-left):
* erc-stamp.el (erc-timestamp-right-column):
* erc-track.el (erc-track-version):
* erc-track.el (erc-track):
* erc-track.el (erc-modified-channels-display):
* erc-track.el (erc-track-modified-channels):
* erc.el:
* erc.el (erc-version-string):
* erc.el (erc-server-parameters):
* erc.el (erc-join-hook): New.
* erc.el (erc-quit-hook):
* erc.el (erc-part-hook):
* erc.el (erc-kick-hook):
* erc.el (erc-nick-changed-functions): New.
* erc.el (erc-connect-pre-hook):
* erc.el (erc-channel-user-op-p):
* erc.el (erc-channel-user-voice-p):
* erc.el (erc-sort-channel-users-alphabetically): New.
* erc.el (erc-input-line-position):
* erc.el (erc-echo-notices-in-minibuffer-flag): Removed.
* erc.el (erc-echo-notices-in-current-buffer): Removed.
* erc.el (erc-echo-notice-hook): New.
* erc.el (erc-echo-notice-always-hook): New.
* erc.el (erc-interpret-controls-p):
* erc.el (erc-prompt-for-channel-key): New.
* erc.el (erc-mode-map):
* erc.el (channel-key): New.
* erc.el (erc-modules):
* erc.el (erc):
* erc.el (erc-send-command):
* erc.el (erc-send-action):
* erc.el (erc-display-message-highlight):
* erc.el (erc-cmd-OPS):
* erc.el (erc-cmd-JOIN):
* erc.el (erc-send-message):
* erc.el (erc-cmd-PART):
* erc.el (erc-cmd-QUERY):
* erc.el (erc-cmd-GQUIT):
* erc.el (erc-cmd-SV):
* erc.el (erc-cmd-BANLIST):
* erc.el (erc-join-channel):
* erc.el (erc-set-channel-limit):
* erc.el (erc-set-channel-key):
* erc.el (erc-server-vectors):
* erc.el (erc-debug-missing-hooks):
* erc.el (erc-format-query-as-channel-p): New.
* erc.el (erc-wash-quit-reason):
* erc.el (erc-nickname-in-use):
* erc.el (erc-display-server-message): New.
* erc.el (erc-server-JOIN):
* erc.el (erc-server-MODE):
* erc.el (erc-server-NICK):
* erc.el (erc-format-my-nick): New.
* erc.el (erc-echo-notice-in-default-buffer): New.
* erc.el (erc-echo-notice-in-target-buffer): New.
* erc.el (erc-echo-notice-in-minibuffer): New.
* erc.el (erc-echo-notice-in-server-buffer): New.
* erc.el (erc-echo-notice-in-active-non-server-buffer): New.
* erc.el (erc-echo-notice-in-active-buffer): New.
* erc.el (erc-echo-notice-in-user-buffers): New.
* erc.el (erc-echo-notice-in-user-and-target-buffers): New.
* erc.el (erc-echo-notice-in-first-user-buffer): New.
* erc.el (erc-server-PRIVMSG-or-NOTICE):
* erc.el (erc-server-001):
* erc.el (erc-server-004):
* erc.el (erc-server-005):
* erc.el (erc-server-252-hook): Removed.
* erc.el (erc-server-253-hook): Removed.
* erc.el (erc-server-254-hook): Removed.
* erc.el (erc-server-256-hook): Removed.
* erc.el (erc-server-257-hook): Removed.
* erc.el (erc-server-258-hook): Removed.
* erc.el (erc-server-259-hook): Removed.
* erc.el (erc-server-252): New.
* erc.el (erc-server-253): New.
* erc.el (erc-server-254): New.
* erc.el (erc-banlist-store):
* erc.el (erc-banlist-update):
* erc.el (erc-handle-login):
* erc.el (erc-connection-established):
* erc.el (erc-server-371-hook): Removed.
* erc.el (erc-server-372-hook): Removed.
* erc.el (erc-server-374-hook): Removed.
* erc.el (erc-server-375-hook): Removed.
* erc.el (erc-server-401):
* erc.el (erc-server-403):
* erc.el (erc-server-405):
* erc.el (erc-server-412-hook): Removed.
* erc.el (erc-server-412): New.
* erc.el (erc-server-421):
* erc.el (erc-server-432-hook): Removed.
* erc.el (erc-server-432): New.
* erc.el (erc-server-442-hook): Removed.
* erc.el (erc-server-442): New.
* erc.el (erc-server-474):
* erc.el (erc-server-475-hook): Removed.
* erc.el (erc-server-477-hook): Removed.
* erc.el (erc-server-475): New.
* erc.el (erc-server-477): New.
* erc.el (erc-server-481):
* erc.el (erc-ctcp-query-ACTION):
* erc.el (erc-ctcp-reply-ECHO):
* erc.el (erc-update-channel-topic):
* erc.el (erc-set-modes):
* erc.el (erc-parse-modes):
* erc.el (erc-update-modes):
* erc.el (erc-update-channel-key): New.
* erc.el (erc-find-channel-info-buffer):
* erc.el (erc-update-channel-info-buffer):
* erc.el (erc-send-current-line):
* erc.el (erc-get-channel-mode-from-keypress):
* erc.el (erc-load-irc-script-lines):
* erc.el (erc-header-line-uses-help-echo-p): New.
* erc.el (erc-show-channel-key-p): New.
* erc.el (erc-prepare-mode-line-format):
* erc.el (erc-update-mode-line-buffer):
* erc.el (erc-arrange-session-in-multiple-windows):

Comments (0)

Files changed (20)

     completion.
   * Changed ERC to use hash tables instead of the `channel-members'
     alist.
+
+Adrian Aichner <adrian@xemacs.org>
+  * Provided fixes for spelling errors in many docstrings, comments 
+    and (embarrassingly) a function name.
     
 ----
 
-P.S.: Many people contributed small bits to ERC whos names I probably
+P.S.: Many people contributed small bits to ERC whose names I probably
 forgot. If you aren't listed here, simply write a mail to mlang@delysid.org,
 I'll add you then.
+2004-05-09  Adrian Aichner  <adrian@xemacs.org>
+
+	* CREDITS: Fulle erc sync with upstream 1.657.
+	* CREDITS (P.S.):
+	* ChangeLog.upstream:
+	* Makefile (AUTHOR_VERSION):
+	* erc-autoaway.el:
+	* erc-autoaway.el (erc-autoaway-version): New.
+	* erc-autoaway.el (erc-auto-discard-away):
+	* erc-autoaway.el (erc-autoaway-no-auto-discard-regexp): New.
+	* erc-autoaway.el (erc-autoaway-reset-idletime):
+	* erc-autoaway.el (erc-autoaway-set-back):
+	* erc-button.el:
+	* erc-button.el (erc-button-add-button):
+	* erc-button.el (erc-widget-press-button): Removed.
+	* erc-ezbounce.el:
+	* erc-ezbounce.el (erc-ezb-version):
+	* erc-ezbounce.el (erc-ezbounce): New.
+	* erc-ezbounce.el (erc-ezb-login-alist):
+	* erc-fill.el:
+	* erc-fill.el (erc-fill-version):
+	* erc-fill.el (erc-fill-static):
+	* erc-fill.el (erc-fill-variable):
+	* erc-fill.el (erc-count-lines): Removed.
+	* erc-fill.el (erc-fill-regarding-timestamp): New.
+	* erc-fill.el (erc-timestamp-offset): New.
+	* erc-fill.el (erc-restore-text-properties): New.
+	* erc-list.el (erc-cmd-LIST):
+	* erc-log.el:
+	* erc-log.el (erc-log-channels-directory):
+	* erc-log.el (log):
+	* erc-match.el:
+	* erc-match.el (erc-match-version):
+	* erc-match.el (erc-match):
+	* erc-match.el (erc-keywords):
+	* erc-match.el (erc-current-nick-highlight-type):
+	* erc-match.el (erc-log-matches-types-alist):
+	* erc-match.el (erc-hide-fools):
+	* erc-menu.el:
+	* erc-menu.el (erc-menu-version): New.
+	* erc-nets.el:
+	* erc-nets.el (erc-nets-version):
+	* erc-nets.el (erc-networks-alist):
+	* erc-nickserv.el:
+	* erc-nickserv.el (erc-nickserv-version):
+	* erc-nickserv.el (services):
+	* erc-nickserv.el (erc-nickserv-identify-mode): New.
+	* erc-nickserv.el (erc-prompt-for-nickserv-password):
+	* erc-nickserv.el (erc-nickserv-passwords):
+	* erc-nickserv.el (erc-nickserv-alist):
+	* erc-nickserv.el (erc-nickserv-identify-autodetect):
+	* erc-nickserv.el (erc-nickserv-identify-on-connect): New.
+	* erc-nickserv.el (erc-nickserv-identify-on-nick-change): New.
+	* erc-nickserv.el (erc-nickserv-call-identify-function): New.
+	* erc-page.el:
+	* erc-page.el (erc-page): New.
+	* erc-speak.el:
+	* erc-speak.el (erc-speak): New.
+	* erc-speedbar.el:
+	* erc-speedbar.el (erc-speedbar): New.
+	* erc-speedbar.el (erc-speedbar-sort-users-type): New.
+	* erc-speedbar.el (erc-install-speedbar-variables):
+	* erc-speedbar.el (erc-speedbar-buttons):
+	* erc-speedbar.el (erc-speedbar-expand-channel):
+	* erc-speedbar.el (erc-speedbar-insert-user):
+	* erc-speedbar.el (erc-speedbar-expand-user):
+	* erc-speedbar.el (erc-speedbar-goto-buffer):
+	* erc-stamp.el:
+	* erc-stamp.el (erc-stamp-version):
+	* erc-stamp.el (erc-away-timestamp-format):
+	* erc-stamp.el (erc-timestamp-intangible):
+	* erc-stamp.el (erc-insert-timestamp-left):
+	* erc-stamp.el (erc-timestamp-right-column):
+	* erc-track.el (erc-track-version):
+	* erc-track.el (erc-track):
+	* erc-track.el (erc-modified-channels-display):
+	* erc-track.el (erc-track-modified-channels):
+	* erc.el:
+	* erc.el (erc-version-string):
+	* erc.el (erc-server-parameters):
+	* erc.el (erc-join-hook): New.
+	* erc.el (erc-quit-hook):
+	* erc.el (erc-part-hook):
+	* erc.el (erc-kick-hook):
+	* erc.el (erc-nick-changed-functions): New.
+	* erc.el (erc-connect-pre-hook):
+	* erc.el (erc-channel-user-op-p):
+	* erc.el (erc-channel-user-voice-p):
+	* erc.el (erc-sort-channel-users-alphabetically): New.
+	* erc.el (erc-input-line-position):
+	* erc.el (erc-echo-notices-in-minibuffer-flag): Removed.
+	* erc.el (erc-echo-notices-in-current-buffer): Removed.
+	* erc.el (erc-echo-notice-hook): New.
+	* erc.el (erc-echo-notice-always-hook): New.
+	* erc.el (erc-interpret-controls-p):
+	* erc.el (erc-prompt-for-channel-key): New.
+	* erc.el (erc-mode-map):
+	* erc.el (channel-key): New.
+	* erc.el (erc-modules):
+	* erc.el (erc):
+	* erc.el (erc-send-command):
+	* erc.el (erc-send-action):
+	* erc.el (erc-display-message-highlight):
+	* erc.el (erc-cmd-OPS):
+	* erc.el (erc-cmd-JOIN):
+	* erc.el (erc-send-message):
+	* erc.el (erc-cmd-PART):
+	* erc.el (erc-cmd-QUERY):
+	* erc.el (erc-cmd-GQUIT):
+	* erc.el (erc-cmd-SV):
+	* erc.el (erc-cmd-BANLIST):
+	* erc.el (erc-join-channel):
+	* erc.el (erc-set-channel-limit):
+	* erc.el (erc-set-channel-key):
+	* erc.el (erc-server-vectors):
+	* erc.el (erc-debug-missing-hooks):
+	* erc.el (erc-format-query-as-channel-p): New.
+	* erc.el (erc-wash-quit-reason):
+	* erc.el (erc-nickname-in-use):
+	* erc.el (erc-display-server-message): New.
+	* erc.el (erc-server-JOIN):
+	* erc.el (erc-server-MODE):
+	* erc.el (erc-server-NICK):
+	* erc.el (erc-format-my-nick): New.
+	* erc.el (erc-echo-notice-in-default-buffer): New.
+	* erc.el (erc-echo-notice-in-target-buffer): New.
+	* erc.el (erc-echo-notice-in-minibuffer): New.
+	* erc.el (erc-echo-notice-in-server-buffer): New.
+	* erc.el (erc-echo-notice-in-active-non-server-buffer): New.
+	* erc.el (erc-echo-notice-in-active-buffer): New.
+	* erc.el (erc-echo-notice-in-user-buffers): New.
+	* erc.el (erc-echo-notice-in-user-and-target-buffers): New.
+	* erc.el (erc-echo-notice-in-first-user-buffer): New.
+	* erc.el (erc-server-PRIVMSG-or-NOTICE):
+	* erc.el (erc-server-001):
+	* erc.el (erc-server-004):
+	* erc.el (erc-server-005):
+	* erc.el (erc-server-252-hook): Removed.
+	* erc.el (erc-server-253-hook): Removed.
+	* erc.el (erc-server-254-hook): Removed.
+	* erc.el (erc-server-256-hook): Removed.
+	* erc.el (erc-server-257-hook): Removed.
+	* erc.el (erc-server-258-hook): Removed.
+	* erc.el (erc-server-259-hook): Removed.
+	* erc.el (erc-server-252): New.
+	* erc.el (erc-server-253): New.
+	* erc.el (erc-server-254): New.
+	* erc.el (erc-banlist-store):
+	* erc.el (erc-banlist-update):
+	* erc.el (erc-handle-login):
+	* erc.el (erc-connection-established):
+	* erc.el (erc-server-371-hook): Removed.
+	* erc.el (erc-server-372-hook): Removed.
+	* erc.el (erc-server-374-hook): Removed.
+	* erc.el (erc-server-375-hook): Removed.
+	* erc.el (erc-server-401):
+	* erc.el (erc-server-403):
+	* erc.el (erc-server-405):
+	* erc.el (erc-server-412-hook): Removed.
+	* erc.el (erc-server-412): New.
+	* erc.el (erc-server-421):
+	* erc.el (erc-server-432-hook): Removed.
+	* erc.el (erc-server-432): New.
+	* erc.el (erc-server-442-hook): Removed.
+	* erc.el (erc-server-442): New.
+	* erc.el (erc-server-474):
+	* erc.el (erc-server-475-hook): Removed.
+	* erc.el (erc-server-477-hook): Removed.
+	* erc.el (erc-server-475): New.
+	* erc.el (erc-server-477): New.
+	* erc.el (erc-server-481):
+	* erc.el (erc-ctcp-query-ACTION):
+	* erc.el (erc-ctcp-reply-ECHO):
+	* erc.el (erc-update-channel-topic):
+	* erc.el (erc-set-modes):
+	* erc.el (erc-parse-modes):
+	* erc.el (erc-update-modes):
+	* erc.el (erc-update-channel-key): New.
+	* erc.el (erc-find-channel-info-buffer):
+	* erc.el (erc-update-channel-info-buffer):
+	* erc.el (erc-send-current-line):
+	* erc.el (erc-get-channel-mode-from-keypress):
+	* erc.el (erc-load-irc-script-lines):
+	* erc.el (erc-header-line-uses-help-echo-p): New.
+	* erc.el (erc-show-channel-key-p): New.
+	* erc.el (erc-prepare-mode-line-format):
+	* erc.el (erc-update-mode-line-buffer):
+	* erc.el (erc-arrange-session-in-multiple-windows):
+
 2004-03-23  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 0.08 released.

ChangeLog.upstream

+2004-05-09  adriana  <adriana@D5DC120J>
+
+	* erc-log.el 1.14:
+	* erc-log.el (erc-conditional-save-buffer): Fix docstring
+	reference to erc-save-queries-on-quit.
+	* erc-log.el (erc-conditional-save-queries): Ditto.
+
+2004-05-06  Diane Murray  <dsm@muenster.de>
+
+	* erc-speedbar.el 1.14: Updated copyright years.
+	Added local variables for this file; fixed indenting.
+	(erc-speedbar): New group.
+	(erc-speedbar-sort-users-type): New variable.
+	(erc-speedbar-buttons): Handle query buffers (fixes a bug where an
+	error would be thrown if the current buffer was a query).  Ignore
+	unknown buffers.
+	(erc-speedbar-expand-channel): Show limit and key with channel
+	modes. Sort users according to `erc-speedbar-sort-users-type'.
+	(erc-speedbar-insert-user): Fixed bug where only nicks with more info
+	were being listed, and those were shown twice.
+	(erc-speedbar-goto-buffer): Don't use dframe functions, as dframe
+	isn't available with the default speedbar.
+
+	* erc.el 1.657 (erc-sort-channel-users-alphabetically): New function.
+	(erc-server-412, erc-server-432, erc-server-475): New functions.
+	(erc-server-412-hook, erc-server-432-hook, erc-server-475-hook): Use
+	them.
+	(erc-server-401, erc-server-403, erc-server-405, erc-server-421,
+	 erc-server-474, erc-server-481): Use catalog messages.
+	(erc-define-catalog): Added s401, s403, s405, s412, s421, s432, s474,
+	s475, and s481.
+
+	* erc-nickserv.el 1.18: Added documentation to Commentary, Usage.
+	Removed `outline-mode' from file local variables.
+	(erc-services-mode): Use `erc-nickserv-identify-mode' to add hooks.
+	(erc-nickserv-identify-mode): New function.
+	(erc-nickserv-identify-mode): New variable.
+	(erc-prompt-for-nickserv-password, erc-nickserv-passwords): Changed
+	docstring.
+	(erc-nickserv-identify-autodetect): Use
+	`erc-nickserv-call-identify-function'. Docstring change.
+	(erc-nickserv-identify-on-connect,
+	 erc-nickserv-identify-on-nick-change,
+	 erc-nickserv-call-identify-function): New functions.
+	(erc-nickserv-identify): PASSWORD is not optional.  Autoload function.
+
+2004-05-05  Diane Murray  <dsm@muenster.de>
+
+	* erc.el 1.656 (erc-join-hook, erc-quit-hook, erc-part-hook, erc-kick-hook, 
+	   erc-connect-pre-hook):
+	Now customizable.
+	(erc-nick-changed-functions): New hook.
+	(erc-server-NICK): Run `erc-nick-changed-functions' with the arguments
+	NEW-NICK and OLD-NICK.
+	(erc-channel-user-voice-p, erc-channel-user-voice-p): Shortened
+	docstring.
+
+2004-05-05  Lawrence Mitchell  <wence@gmx.li>
+
+	* HACKING 1.2:
+	New section on function/variable naming and coding conventions.
+
+	* erc.el 1.655 (erc-wash-quit-reason):
+	Quote regexp special characters in NICK,
+	LOGIN and HOST.
+
+2004-05-05  Diane Murray  <dsm@muenster.de>
+
+	* erc.el 1.654 (erc-server-parameters): Typo fix in docstring.
+	(erc-input-line-position): `:type' is now a choice between integer
+	and nil.
+	(erc-mode-map): Bind `erc-get-channel-mode-from-keypress' to C-c C-o
+	instead of C-c RET (C-c C-m).
+	(erc-cmd-GQUIT): Use REASON as argument when calling `erc-cmd-QUIT'.
+
+2004-05-03  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc-nicklist.el 1.1: Initial version.
+
+2004-04-29  Diane Murray  <dsm@muenster.de>
+
+	* erc-menu.el 1.14: Added local variables for file, fixed indenting.
+	(erc-menu-version): New variable.
+	(erc-menu-definition): "List channels": New.  "Join channel": Use
+	`erc-connected' as test.  "Start a query": New.  "List channel
+	operators": New.  "Input action": Moved up.  "Set topic": Fixed test
+	so it's only active in channels.  "Leave this channel": Moved down.
+	"Track hidden channel buffers": Removed.  "Enable/Disable ERC
+	Modules": New.
+
+	* erc.el 1.653 (erc-mode-map):
+	Removed binding for `erc-save-buffer-in-logs' (moved
+	to erc-log.el).
+	(erc-cmd-QUERY, erc-cmd-OPS): Now interactive.
+
+	* erc-log.el 1.13: Added local variables for this file.
+	(erc-log-channels-directory): Added directory as a choice in `:type'.
+	(define-erc-module): Define and undefine key binding (C-c C-l) for
+	`erc-save-buffer-in-logs' here.
+
+	* erc-nets.el 1.13: Added local variables for this file.
+	(erc-networks-alist): Fixed `:type' to work better in customization.
+
+2004-04-28  Diane Murray  <dsm@muenster.de>
+
+	* erc-match.el 1.33: Added local variables for file.
+	(erc-keywords): Use `list' instead of `cons' in `:type'.  Fixes bug
+	where mismatch was shown in customization.
+	(erc-current-nick-highlight-type): Escape parentheses in docstring.
+	Added keyword, nick-or-keyword as options in `:type'.
+
+	* erc-stamp.el 1.36: Added local variables for file.
+	(erc-away-timestamp-format): Allow nil as a choice in `:type'.
+	(erc-timestamp-intangible):�Changed `:type' to boolean.
+	(erc-timestamp-right-column): Added `:group' and `:type'.
+
+	* erc.el 1.652 (erc-modules):
+	Added bbdb, log, match, sound, and stamp as `:type'
+	options; changed documentation for autojoin, fill, pcomplete, track.
+	(erc-prompt-for-channel-key): New variable.
+	(erc-join-channel): Only prompt for key if
+	`erc-prompt-for-channel-key' is non-nil.
+	(erc-format-my-nick): New function.
+	(erc-send-message, erc-send-current-line): Use it.
+
+2004-04-24  bojohan  <bojohan@D5DC120J>
+
+	* erc-track.el 1.63 (erc-track-modified-channels): Fix indentation.
+
+	* erc-match.el 1.32 (erc-hide-fools): Docstring fix.
+	(erc-log-matches-types-alist): Added `current-nick' to valid choices.
+
+2004-04-20  Diane Murray  <dsm@muenster.de>
+
+	* erc-track.el 1.62, erc-match.el 1.31, erc-ezbounce.el 1.7, erc-speak.el 1.26, 
+	  erc-page.el 1.5 (erc-ezbounce, erc-page, erc-speak):
+	Groups defined.
+	(erc-match, erc-track): `erc' is parent group.
+	(erc-ezb-regexp, erc-ezb-login-alist): Added `:group'.
+
+2004-04-20  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc-fill.el 1.24:
+	Fixed erc-fill-static so it breaks the lines at the right column and
+	respects timestamps. Patch by Simon Siegler <simon@trz-kril.de>
+
+	(erc-fill-static): Major rewrite and split up into some functions.
+	(erc-count-lines): Removed.
+	(erc-fill-regarding-timestamp): New function.
+	(erc-timestamp-offset): New function.
+	(erc-restore-text-properties): New function.
+	(erc-fill-variable): Respect leftbound timestamp.
+
+	This is still broken if someone has both
+	erc-timestamp-only-if-changed-flag set and
+	erc-insert-timestamp-function set to 'erc-insert-timestamp-left, but
+	otherwise it works now.
+
+2004-04-20  Diane Murray  <dsm@muenster.de>
+
+	* erc.el 1.651 (erc-cmd-SV):
+	Show features gtk, mac-carbon, multi-tty.  Fixed so that
+	arguments fit the format (build date was not being shown).
+
+2004-04-19  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.650:
+	(erc-update-channel-topic); Error if `channel-topic' is unbound.
+	Remove %-sign substitution.
+	(erc-update-mode-line-buffer): Escape %-signs in `channel-topic' here.
+
+2004-04-19  Diane Murray  <dsm@muenster.de>
+
+	* erc.el 1.649:
+	(erc-send-action, erc-ctcp-query-ACTION, erc-ctcp-reply-ECHO-hook):
+	Let `erc-display-message-highlight' propertize the message.
+	(erc-display-message-highlight): Allow for any erc-TYPE-face.
+	(erc-cmd-JOIN): Display error message instead of throwing an error if
+	there's no `invitation'.
+	(erc-cmd-PART): Allow for no reason if channel is provided.  Fixes bug
+	where user would part the current channel with the other channel's
+	name as reason when no reason was given.
+	(erc-server-vectors, erc-debug-missing-hooks): Added docstring.
+	(erc-server-JOIN): Moved `erc-join-hook' to JOIN-you section.
+	`erc-join-hook' called by `run-hook-with-args', sending the ARGS `chnl'
+	and the channel's buffer.
+	Changed an instance of if without else to when.
+	(erc-server-477): New function.
+	(erc-server-477-hook): Use `erc-server-477'.
+	(erc-define-catalog): Added `no-invitation'.
+
+2004-04-15  Diane Murray  <dsm@muenster.de>
+
+	* erc-nickserv.el 1.17: Local variables for file added.
+	(erc-nickserv-passwords): Customization:  Network symbols updated to
+	reflect `erc-nickserv-alist'.  Allow user to type in network symbol.
+	(erc-nickserv-alist): Now customizable variable.
+
+2004-04-09  Diane Murray  <dsm@muenster.de>
+
+	* erc-autoaway.el 1.18 (erc-autoaway-reset-idletime):
+	Make sure `line' is a string to avoid
+	errors upon startup.
+
+2004-04-06  Diane Murray  <dsm@muenster.de>
+
+	* erc-autoaway.el 1.17 (erc-autoaway-version): New variable.
+	(erc-auto-discard-away): Updated docstring.
+	(erc-autoaway-no-auto-back-regexp): New variable.
+	(erc-autoaway-reset-idletime): Use it.  Hopefully a better solution
+	which allows for aliases to "/away" and any other text that the user
+	wants to ignore when `erc-auto-discard-away' is non-nil.
+
+	* erc-autoaway.el 1.16 (erc-autoaway-reset-idletime):
+	Forgot /gaway in regexp.
+
+	* erc-autoaway.el 1.15 (erc-autoaway-reset-idletime):
+	If the user sends an "/away" command,
+	don't call `erc-autoaway-set-back', fixes bug where ERC would send
+	"/away" when user was already away and sent an "/away reason".
+	Changed `l' to `line' for better understanding.
+	(erc-autoaway-set-back): Changed `l' to `line' for better
+	understanding.
+
+	* erc.el 1.648 (erc-set-channel-key): Now able to remove key.
+	(erc-set-channel-limit): Now able to remove limit.
+	(erc-get-channel-mode-from-keypress): Fixed docstring.
+
+2004-04-04  Diane Murray  <dsm@muenster.de>
+
+	* erc.el 1.647 (erc-join-channel): Allow for optional channel key.
+	(erc-set-modes): Need to set `channel-key' to nil in case of mode
+	changes during split.
+	(erc-show-channel-key-p): New variable.
+	(erc-prepare-mode-line-format): Only show key if
+	`erc-show-channel-key-p' is non-nil.
+
+	* erc.el 1.646 (channel-key): New variable.
+	(erc-update-channel-key): New function.
+	(erc-set-modes, erc-parse-modes, erc-update-modes, erc,
+	erc-update-channel-info-buffer): Deal with channel keys.
+	(erc-prepare-mode-line-format): Show channel key in header-line.
+
+	(erc-server-NICK): Show nick change in server buffer as well.
+
+	(erc, erc-send-command, erc-banlist-store, erc-banlist-update,
+	 erc-load-irc-script-lines, erc-arrange-session-in-multiple-windows,
+	 erc-handle-login, erc-find-channel-info-buffer): Changed when not
+	 to unless.
+	(erc-server-MODE): Changed if without else to when.
+
+2004-03-27  adriana  <adriana@D5DC120J>
+
+	* erc.el 1.645: 2004-03-28  Adrian Aichner  <adrian@xemacs.org>
+
+		* erc.el (erc-cmd-BANLIST): Use `truncate-string-to-width' instead
+	        of `truncate-string' alias.
+		* erc.el (erc-nickname-in-use): Ditto.
+
+2004-03-27  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc-list.el 1.25 (erc-cmd-list):
+	Fixed error caused by erc-cmd-LIST passing a non-sequence to erc-chanlist.
+
+2004-03-22  Jeremy Bertram Maitin-Shepard  <jbms@gentoo.org>
+
+	* erc.el 1.644:
+	Add new hook `erc-join-hook', which is run when we join a channel.
+
+	* erc.el 1.643:
+	Replaced existing notice user notification system and the
+	configuration options, which consisted of
+	`erc-echo-notices-in-minibuffer-flag' and
+	`erc-echo-notices-in-current-buffer' with two new hooks,
+	`erc-echo-notice-hook' and `erc-echo-notice-always-hook'.
+
+	When user notification is needed, `erc-echo-notice-always-hook' is
+	first run using `run-hook-with-args', then `erc-echo-notice-hook' is
+	run using `run-hook-with-args-until-success'.
+
+	In addition to these hooks, a large number of functions, which are
+	described in the documentation strings of those hooks, were added
+	which can be used to achieve a large variety of different behaviors.
+
+	The current default behavior, which is identical to the existing
+	default behavior, is for `erc-echo-notice-always-hook' to be set to
+	`(erc-echo-notice-in-default-buffer).
+
+2004-03-22  Diane Murray  <dsm@muenster.de>
+
+	* erc-track.el 1.61 (erc-modified-channels-display):
+	Added a space before opening bracket.
+
+	* erc.el 1.642 (erc-format-query-as-channel-p): New variable.
+	(erc-server-PRIVMSG-or-NOTICE): If `erc-format-query-as-channel-p' is
+	nil, messages in the query buffer are formatted like private messages.
+
+	(erc-server-252-hook, erc-server-253-hook, erc-server-254-hook,
+	 erc-server-256-hook, erc-server-257-hook, erc-server-258-hook,
+	 erc-server-259-hook, erc-server-371-hook, erc-server-372-hook,
+	 erc-server-374-hook, erc-server-374-hook, erc-server-442-hook,
+	 erc-server-477-hook): Removed, now defined in `erc-server-hook-list'.
+	(erc-display-server-message): New function.
+	(erc-server-252, erc-server-253, erc-server-254, erc-server-442): New
+	functions.
+	(erc-server-hook-list): Added 250, 256, 257, 258, 259, 265, 266, 377,
+	378, 477 - using `erc-display-server-message'.
+	251, 255 now use `erc-display-server-message'.
+	Added 252, 253, 254, 442 - using respective erc-server-* functions.
+	371, 372, 374, 375 now defined here.
+	(erc-define-catalog): Added s252, s253, s254, s442.
+	(erc-server-001, erc-server-004, erc-server-005): Fixed documentation.
+
+2004-03-20  Diane Murray  <dsm@muenster.de>
+
+	* erc-stamp.el 1.35:
+	Commentary: Changed `erc-stamp-mode' to `erc-timestamp-mode'.
+	(erc-insert-timestamp-left): Use `erc-timestamp-face' on filler spaces
+	as well.
+
+	* erc.el 1.641 (erc-send-action): Use `erc-input-face'.
+	(erc-display-message-highlight): If the requested highlighting type
+	doesn't match, just display the string with no highlighting and warn
+	about it with `erc-log'..
+	(erc-cmd-JOIN): If user is already on the requested channel, switch to
+	that channel's buffer.
+	(erc-ctcp-query-ACTION): Use `erc-action-face' for nick as well.
+	(erc-header-line-use-help-echo-p): New variable.
+	(erc-update-mode-line-buffer): Use `help-echo' for header-line if
+	`erc-header-line-use-help-echo-p' is non-nil.
+
+2004-03-19  adriana  <adriana@D5DC120J>
+
+	* erc-nets.el 1.12:
+	Use two arguments version of `make-obsolete', if third argument is not
+	supported (for XEmacs).
+
+2004-03-18  Andreas Fuchs  <asf@void.at>
+
+	* CREDITS 1.9: added CREDITS entry for Adrian Aichner
+
+	* erc-autoaway.el 1.14, erc-autojoin.el 1.7, erc-button.el 1.51, 
+	  erc-dcc.el 1.83, erc-ezbounce.el 1.6, erc-imenu.el 1.6, erc-list.el 1.24, 
+	  erc-log.el 1.12, erc-match.el 1.30, erc-members.el 1.6, erc-menu.el 1.13, 
+	  erc-netsplit.el 1.9, erc-notify.el 1.24, erc-speedbar.el 1.13, erc-stamp.el 1.34, 
+	  erc-track.el 1.60, erc-truncate.el 1.4, erc-xdcc.el 1.7, erc.el 1.640 (erc-coding-sytem-for-target):
+	Removed.
+	(erc-coding-system-for-target): New.
+	(erc-autoaway-use-emacs-idle): Typo fix.
+	(erc-auto-set-away): Ditto.
+	(erc-auto-discard-away): Ditto.
+	(autojoin): Ditto.
+	erc-button.el: Ditto.
+	(erc-button-alist): Ditto.
+	(erc-dcc-auto-masks): Ditto.
+	(erc-dcc-chat-send-input-line): Ditto.
+	(erc-ezb-get-login): Ditto.
+	(erc-unfill-notice): Ditto.
+	erc-list.el: Ditto.
+	(erc-save-buffer-in-logs): Ditto.
+	(match): Ditto.
+	(erc-log-matches-types-alist): Ditto.
+	(erc-match-directed-at-fool-p): Ditto.
+	(erc-match-message): Ditto.
+	(erc-update-member): Ditto.
+	(erc-ignored-reply-p): Ditto.
+	(erc-menu-definition): Ditto.
+	(erc-netsplit-QUIT): Ditto.
+	(erc-notify-list): Ditto.
+	(erc-speedbar-update-channel): Ditto.
+	(erc-speedbar-item-info): Ditto.
+	(erc-stamp): Ditto.
+	(erc-timestamp-intangible): Ditto.
+	(erc-add-timestamp): Ditto.
+	(erc-timestamp-only-if-changed-flag): Ditto.
+	(erc-show-timestamps): Ditto.
+	erc-track.el: Ditto.
+	(erc-track-priority-faces-only): Ditto.
+	(erc-modified-channels-alist): Ditto.
+	(erc-unique-substrings): Ditto.
+	(erc-find-parsed-property): Ditto.
+	(erc-track-switch-direction): Ditto.
+	(erc-truncate-buffer-to-size): Ditto.
+	(erc-xdcc): Ditto.
+	(erc-auto-reconnect): Ditto.
+	(erc-startup-file-list): Ditto.
+	(erc-once-with-server-event): Ditto.
+	(erc-once-with-server-event-global): Ditto.
+	(erc-mode): Ditto.
+	(erc-generate-new-buffer-name): Ditto.
+	(erc): Ditto.
+	(erc-open-ssl-stream): Ditto.
+	(erc-default-coding-system): Ditto.
+	(erc-encode-string-for-target): Ditto.
+	(erc-decode-string-from-target): Ditto.
+	(erc-scroll-to-bottom): Ditto.
+	(erc-decode-controls): Ditto.
+	(erc-channel-members-changed-hook): Ditto.
+	(erc-put-text-property): Ditto.
+	(erc-add-default-channel): Ditto.
+
+2004-03-18  Diane Murray  <dsm@muenster.de>
+
+	* erc.el 1.639 (erc-process-sentinel):
+	Cancel ping timer upon disconnect.
+	(erc-cmd-PART): Use same regexp as `erc-cmd-QUIT' when no #channel is
+	provided.
+	(erc-nick-uniquifier, erc-manual-set-nick-on-bad-nick-p): `:group' was
+	missing, added.
+	(erc-part-reason-zippy, erc-part-reason-zippy): Removed FIXME
+	comments.  I see no problem allowing typed in reasons.
+
+2004-03-17  Diane Murray  <dsm@muenster.de>
+
+	* erc-stamp.el 1.33 (erc-insert-timestamp-left): Added support for
+	`erc-timestamp-only-if-changed-flag' and added docstring.
+	(erc-timestamp-only-if-changed-flag): Updated documentation.
+
+2004-03-13  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc-nets.el 1.11 (erc-network-name):
+	No longer marked as obsolete.  Why was this function made
+	    obsolete?  There is no other function that performs this task.  Some of us
+	    use these functions in our personal ERC configs.
+
+2004-03-12  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.638 (erc-buffer-filter): Use `with-current-buffer'.
+	(erc-process-input-line): Append newline to documentation.  Fixes a
+	bug whereby the prompt would be put on the same line as the output.
+	(erc-cmd-GQUIT): Only try and send QUIT if the process is alive.
+
+	* erc-log.el 1.11:
+	Only add top-level hooks if `erc-enable-logging' is non-nil.
+
+2004-03-11  Damien Elmes  <erc@repose.cx>
+
+	* erc-nets.el 1.10: From Adrian Aichner (adrian /at/ xemacs /dot/ org)
+	 * erc-nets.el: XEmacs make-obsolete only takes two arguments.
+
+2004-03-11  Diane Murray  <dsm@muenster.de>
+
+	* erc-nets.el 1.9 (erc-determine-network): Use `erc-session-server' if
+	`erc-announced-server' is nil to avoid error if server does not send
+	004 (RPL_MYINFO) message.
+
+2004-03-10  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc-nets.el 1.8 (erc-server-alistm erc-settings):
+	Use lowercase "freenode", as in
+	`erc-networks-alist'.
+
+	* erc-nickserv.el 1.16 (erc-nickserv-alist):
+	Use lowercase "freenode", as in
+	`erc-networks-alist'.
+
+	* erc-dcc.el 1.82 (pcomplete/erc-mode/DCC): Append "send" as a list.
+
+2004-03-10  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc-nets.el 1.7 (erc-networks-alist):
+	Changed "Freenode" to "freenode".
+
+	* erc-list.el 1.23 (erc-cmd-LIST):
+	Improved the docstring.  Made message to user more accurate
+	  depending on whether a single channel is being listed or not.
+
+2004-03-10  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc-nets.el 1.6 (erc-determine-network):
+	Make matching logic simpler (suggested by
+	Damian Elmes).
+	(erc-current-network, erc-network-name): Add `make-obsolete' form.
+	(erc-set-network-name): Indentation fix.
+	(erc-ports-list):  Add docstring.  Rework function body to use
+	`nconc'.
+
+2004-03-10  Diane Murray  <dsm@muenster.de>
+
+	* erc-list.el 1.22, erc-notify.el 1.23 (require 'erc-nets): added
+
+2004-03-09  Diane Murray  <dsm@muenster.de>
+
+	* erc.el 1.637 (erc-network-name):
+	Function definition moved to erc-nets.el.  The
+	functions `erc-determine-network' and `�rc-network' in erc-nets.el do
+	what this did before.  Deprecated.  Use (erc-network) instead.
+
+	* erc-nickserv.el 1.15: Changed copyright notice.
+	Now require erc-nets.
+	erc-nets.el now takes care of network-related functions and variables.
+	(erc-nickserv-alist): Changed network symbols to match those in
+	`erc-networks-alist' in erc-nets.el.
+	(erc-nickserv-identify-autodetect): Use `erc-network'.
+	(erc-nickserv-identify): Use `erc-network'.  Changed wording for
+	interactive use, now shows current nick.
+	(erc-networks): Removed.  Use `erc-networks-alist' as defined in
+	erc-nets.el.
+	(erc-current-network): Function definition moved to erc-nets.el.  The
+	functions `erc-determine-network' and `�rc-network' in erc-nets.el do
+	what this did before.  Deprecated.  Use (erc-network) instead.
+
+	* erc-nets.el 1.5: Added commentary, `erc-nets-version'.
+	(erc-server-alist): Changed Brasnet to BRASnet.
+	(erc-networks-alist): All networks (except EFnet and IRCnet) now have
+	a MATCHER.
+	(erc-network): New variable.
+	(erc-determine-network): New function.  Determine the network the user
+	is on.  Use the server parameter NETWORK, if provided, else parse the
+	server name and search for a match (regexp and loop by wencem) in
+	`erc-networks-alist'.  Return the name of the network or "Unknown" as
+	a symbol.
+	(erc-network): New function.  Returns value of `erc-network'.  Use
+	this when the current buffer is not the server process buffer.
+	(erc-current-network): Returns the value of `erc-network' as expected by
+	users who used the function as it was defined in erc-nickserv.el.
+	Deprecated.
+	(erc-network-name): Returns the value of `erc-network' as expected by
+	users who used the function as it was defined in erc.el.  Deprecated.
+	(erc-set-network-name): New function.  Added to
+	`erc-server-375-hook' and `erc-server-422-hook'.
+	(erc-unset-network-name): New function.  Added to
+	`erc-disconnected-hook'.
+	(erc-server-select): Small documentation word change.
+
+2004-03-08  Diane Murray  <dsm@muenster.de>
+
+	* AUTHORS 1.8, CREDITS 1.8: disumu info updated
+
+2004-03-06  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc-list.el 1.21 (erc-cmd-LIST):
+	Take &rest rather than &optional arguments.
+	(erc-chanlist): Construct correct LIST command from list of channels.
+
+	* erc.el 1.636 (erc-update-mode-line-buffer):
+	Add 'help-echo property to header-line
+	text.  This allows header lines longer than the width of the current
+	window to be seen.
+
+2004-03-06  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc-match.el 1.29 (erc-match-directed-at-fool-p):
+	Also check for "FOOL, "
+
+	* erc-match.el 1.28 (erc-match-message):
+	Only use nick-or-keyword if we're matching our
+	nick.
+
+	* erc-match.el 1.27:
+	The highlight type for the current nickname can now also be
+	'nick-or-keyword, to highlight the nick of the sender if that is
+	available, but fall back to highlighting your nickname in the whole
+	message otherwise.
+
+	erc-current-nick-highlight-type: Adapted docstring accordingly.
+	(erc-match-message): Added new condition. Also added some comments to
+	this monster of a function.
+
+	* erc.el 1.635 (erc-is-valid-nick-p):
+	Don't check for length less or equal to 9.
+
+2004-03-06  Damien Elmes  <erc@repose.cx>
+
+	* erc-nickserv.el 1.14 (erc-current-network):
+	the last change resulted in this function
+	    failing when a network identifies itself as anything other than
+	    var.netname.com, so for instance 'vic.au.austnet.org' fails. This
+	    version is only a marginal improvement over the original, but if
+	    we want to be more flexible we'll probably have to do the
+	    iteration ourselves instead of using assoc.
+
+2004-03-05  Diane Murray  <dsm@muenster.de>
+
+	* erc.el 1.634: * bugfixes:
+	  - Added erc-server-001 which runs when the server sends its welcome message.
+	    It sets the current-nick to reflect the server's settings.  This fixes a
+	    bug where nicks that were too long and got truncated by ther server were
+	    still set to the old value.
+
+	  - (nickname-in-use): If user wants to try again manually, let user know
+	    that the nick is taken.  If not, go through erc-default-nicks until
+	    none are left, and then try one last time with erc-nick-uniquifier.  If
+	    it's still a bad-nick, make the user change nick manually.  When
+	    applying uniquifier, use NICKLEN if it's in the server parameters,
+	    otherwise use what RFC 2812 says is the max nick length (9 chars).
+	    Added custom variable erc-manual-set-nick-on-bad-nick-p, which is set to nil
+	    and erc-nick-change-attempt-count.
+	    Reset erc-default-nicks and erc-nick-change-attempt-count when the nick
+	    has been changed successfully.
+	    This fixes the bug where ERC would get caught in a neverending loop of
+	    trying to set the same nick if the nick was too long and the uniquified
+	    nick was not available.
+
+	* added erc-cmd-WHOAMI
+
+	* added custom variable erc-mode-line-away-status-format, use this instead of
+	  the previous hard-coded setting
+
+	* erc-server-315|318|369-hook defvar lines removed - they're already defined
+	  in erc-server-hook-list
+
+2004-03-04  Lawrence Mitchell  <wence@gmx.li>
+
+	* HACKING 1.1: Initial commit.  Some thoughts on coding standards.
+
+2004-03-03  Diane Murray  <dsm@muenster.de>
+
+	* erc-track.el 1.59:
+	- added the variable erc-track-priority-faces-only which adds the option
+	  to ignore changes in a channel unless there are faces from the
+	  erc-track-faces-priority-list in the message
+	  options are nil, 'all, or a list of channel name strings
+
+2004-03-01  Diane Murray  <dsm@muenster.de>
+
+	* erc-ibuffer.el 1.20, erc-menu.el 1.12, erc.el 1.633:
+	- changed erc-is-channel-op and erc-is-channel-voice to
+	  erc-channel-user-op-p and erc-channel-user-voice-p
+	  to better match erc-channel-user structure (and emacs lisp usage)
+
+	* erc-ibuffer.el 1.19, erc-menu.el 1.11, erc.el 1.632:
+	erc-track-modified-channels-mode is now erc-track-mode
+
+2004-02-29  Diane Murray  <dsm@muenster.de>
+
+	* erc-match.el 1.26:
+	- added 'keyword option to erc-current-nick-highlight-type
+	  highlights all instances of current-nick in the message
+	  ('nickname option in cvs revisions 1.9 - 1.11 had same effect)
+
+2004-02-28  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc-button.el 1.50: Add Lisp: prefix for the EmacsWiki Elisp area.
+
+	erc-button-alist: Added Lisp: prefix.
+	erc-emacswiki-lisp-url: New variable.
+	(erc-browse-emacswiki-lisp): New function.
+
+2004-02-27  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.631 (erc-get-arglist):
+	Use `substitute-command-keys', rather than
+	hard-coding C-h f for `describe-function'.
+
+2004-02-26  bojohan  <bojohan@D5DC120J>
+
+	* erc-log.el 1.10 (erc-save-buffer-in-logs): bind `inhibit-read-only'
+	to t around call to `erase-buffer'.
+
+2004-02-23  emcdloc  <emcdloc@D5DC120J>
+
+	* erc-ezbounce.el 1.5, erc-list.el 1.20, erc-macs.el 1.2, erc-ring.el 1.13, 
+	  erc-stamp.el 1.32, erc.el 1.630, erc-chess.el 1.22, erc-dcc.el 1.81:
+	Normalized buffer local variable creation.
+
+2004-02-17  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.629 (erc-scroll-to-bottom, erc-add-scroll-to-bottom):
+	Mention
+	`erc-input-line-position' in docstring.
+
+2004-02-14  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc.el 1.628: erc-kick-hook: Typo fix.
+
+2004-02-14  Jeremy Bertram Maitin-Shepard  <jbms@gentoo.org>
+
+	* erc.el 1.627:
+	Added `erc-kick-hook', which is called when the local user is kicked
+	from a channel.
+
+	Fixed a bug in `erc-cmd-OPS', such that the command now works.
+
+	Added `erc-remove-channel-users', in order to fix a number of
+	significant bugs relating to channel parting.
+
+2004-02-13  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc.el 1.626 (erc-display-prompt):
+	Remove last change. This caused a lot of trouble :(
+
+	* erc.el 1.625 (erc-display-prompt):
+	Also set 'field property, so C-j works on an empty prompt.
+
+2004-02-12  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.624 (erc-update-channel-topic):
+	Ensure that `channel-topic' does not
+	contain any bare format controls.
+
+2004-02-11  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc-stamp.el 1.31:
+	erc-timestamp-intangible: New variable (user feature request)
+	(erc-format-timestamp): Use erc-timestamp-intangible.
+
+2004-02-08  Jeremy Bertram Maitin-Shepard  <jbms@gentoo.org>
+
+	* erc-button.el 1.49:
+	Fixed bug related to nickname buttonizing and text fields due to erc-stamp.
+
+	* CREDITS 1.7: Added mention of my change of ERC to use hash tables.
+
+	* AUTHORS 1.7: Added myself to the list.
+
+2004-02-05  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.623: From Jeremy Maitin-Shepard <jbms@attbi.com>:
+	(erc-remove-channel-user): Use `delq' not `delete'.
+	(erc-get-buffer): Pass PROC through to `erc-buffer-filter'.
+	(erc-process-sentinel): Use `erc' rather than `erc-reconnect' for
+	auto-reconnection.
+
+2004-02-02  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.622 (erc-buffer-list-with-nick): Apply `erc-downcase' NICK.
+
+2004-01-30  Alex Schroeder  <alex@gnu.org>
+
+	* erc.el 1.621 (erc-get-buffer): Use erc-buffer-filter.
+
+2004-01-30  bojohan  <bojohan@D5DC120J>
+
+	* erc.el 1.620: From jbms:
+	(erc-get-channel-nickname-list): New function.
+	(erc-get-server-nickname-list): New function.
+	(erc-get-server-nickname-alist): New function.
+	(erc-get-channel-nickname-alist): New function.
+
+	* erc-match.el 1.25 (erc-add-entry-to-list, erc-remove-entry-from-list):
+	Use
+	`erc-member-ignore-case' to compare entries.
+	(erc-add-pal, erc-add-fool): Fix type bug. Use
+	`erc-get-server-nickname-alist'.
+
+	* erc.el 1.619: From jbms:
+	Adds xemacs compatibility to hash table channel-members patch.
+
+2004-01-29  bojohan  <bojohan@D5DC120J>
+
+	* erc.el 1.618 (erc-update-undo-list):
+	Rewritten. Update buffer-undo-list in place.
+	Deal with XEmacsesque entries (extents) in the list.
+	(erc-channel-users): Fix unescaped open-paren in left column in
+	docstring.
+
+	* erc-ring.el 1.12 (erc-replace-current-command):
+	Exclude the prompt from the deleted
+	region and don't redisplay the prompt (because `erc-display-prompt'
+	flushes `buffer-undo-list').
+
+	* erc-match.el 1.24 (erc-add-entry-to-list):
+	Use `symbol-value' instead of `eval'.
+
+2004-01-28  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc.el 1.617 (erc-kill-buffer-function):
+	maphash was missing an argument.
+
+	* Makefile 1.20, erc-autoaway.el 1.13, erc-button.el 1.48, erc-ibuffer.el 1.18, 
+	  erc-lang.el 1.3, erc-list.el 1.19, erc-match.el 1.23, erc-menu.el 1.10, 
+	  erc-page.el 1.4, erc-pcomplete.el 1.23, erc-speedbar.el 1.12, erc.el 1.616:
+	HUGE change by jbms.
+	This makes channel-members a hash, erc-channel-users.
+
+	Modified files:
+	Makefile erc-autoaway.el erc-button.el erc-ibuffer.el
+	erc-lang.el erc-list.el erc-match.el erc-menu.el erc-page.el
+	erc-pcomplete.el erc-speedbar.el erc.el
+
+	The changes are too numerous to document properly. Have fun with the breakage.
+
+	* erc.el 1.615 (erc-send-input-line):
+	Add a space to empty lines so the server likes them.
+
+2004-01-26  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc.el 1.614: erc-send-whitespace-lines: New variable.
+	(erc-send-current-line): Use erc-send-whitespace-lines. Also, removed
+	superflous test for empty line in the mapc, since the blank line test
+	should find all. I do like to be able to send an empty line when i
+	want to!
+	(erc-send-current-line): Check for point being in input line before checking for blank lines.
+
+2004-01-21  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.613 (erc-display-line-1):
+	Move `erc-update-undo-list' outside
+	`save-restriction'.  Removing need for temporary variable.
+	(erc-send-current-line): Fix bug introduced by last change, remove
+	complement in blank line regexp.
+
+2004-01-20  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.612 (erc-update-undo-list): Add logic to catch the case when
+	`buffer-undo-list' is t, indentation cleanup.
+	(erc-send-current-line):  Reverse logic for matching blank lines.
+
+	* erc.el 1.611 (erc-input-line-position):
+	New variable.  If non-nil, specifies the
+	argument to `recenter' in `erc-scroll-to-bottom'.
+	(erc-scroll-to-bottom): Use it.
+
+	* erc.el 1.610: From Johan Bockg�rd <bojohan+news@dd.chalmers.se>:
+	(erc-update-undo-list): New function.  Update `buffer-undo-list' so
+	that calling `undo' in an ERC buffer doesn't mess up the existing
+	text.
+	(erc-display-line-1): Use it.
+
+2004-01-19  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.609 (erc-beg-of-input-line): Use `forward-line' rather than
+	`beginning-of-line'.  Docstring fix.
+	(erc-end-of-input-line): Docstring fix.
+
+2004-01-14  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc.el 1.608 (erc-display-prompt):
+	Remove the undo list after displaying the
+	prompt, so the user can't undo ERC changes, which breaks some stuff
+	anyways. This way the user can still undo his editing, but not ours.
+
+2004-01-12  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc.el 1.607 (erc-scroll-to-bottom):
+	Should recenter on the bottom line, not the
+	second-to-last one.
+
+2004-01-12  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.606 (erc-bol): Fix bug introduced in revision 1.601.
+
+	* erc.el 1.605: From Brian Palmer <bpalmer@rescomp.Stanford.EDU>
+	(erc-cmd-JOIN): Use `erc-member-ignore-case', rather than
+	`member-ignore-case'.
+
+2004-01-12  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc.el 1.604:
+	There was an inconsistency where the values of op and voice in
+	channel-names could be 'on or 'off after an update, t and nil before.
+	The intended version was to have t or nil, so i fixed it to do so.
+
+	channel-names: Updated docstring.
+	(erc-update-current-channel-member): Clarified docstring, fixed so it
+	sets t or nil on an update as well, not only on an add.
+	(erc-cmd-OPS): Updated not to check for 'on (the only function that
+	did this!)
+
+2004-01-12  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.603 (erc-part-reason-various-alist, erc-update-mode-line-buffer):
+	Fix docstring
+
+2004-01-11  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.602 (erc-update-mode-line): Fix typo.
+
+	* erc.el 1.601 (erc-prompt-interactive-input): Removed.
+	(erc-display-prompt): Removed `erc-prompt-interactive-input' option.
+	(erc-interactive-input-map): Removed.
+
+	Major docstring fixes.
+
+2004-01-08  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc.el 1.600 (erc-cmd-OPS): Added this function.
+	(erc-cmd-IDLE): Switched from using erc-display-message-highlight to erc-make-notice.
+
+	* erc-list.el 1.18 (erc-cmd-LIST):
+	Switched from using erc-display-message-highlight to erc-make-notice.
+
+2004-01-07  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc.el 1.599 (erc-once-with-server-event):
+	Added a sentence to the docstring.  Now returns the uninterned
+	   symbol that is added to the server hook.
+	(erc-cmd-IDLE): Changed to use erc-once-with-server-event instead of erc-once-with-server-event-global.
+
+2004-01-06  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc-list.el 1.17 (erc-chanlist-hide-modeline): New variable.
+	(erc-chanlist): Now displays message as a notice.  Also hides the modeline if
+	    erc-chanlist-hide-modeline is non-nil.
+
+2004-01-05  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc.el 1.598 (erc-server-PRIVMSG-or-NOTICE):
+	Now nicks appear as <nick> in query buffers, instead of as *nick*.
+
+2004-01-03  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc.el 1.597 (erc-once-with-server-event-global):
+	Changed to return the uninterned symbol that it creates.
+	(erc-cmd-LIST): Changed to clean up hooks that don't run.
+
+	* erc-pcomplete.el 1.22 (pcomplete/erc-mode/IDLE):
+	Added to support new /IDLE command.
+
+	* erc.el 1.596 (erc-once-with-server-event-global):
+	New function.  Like erc-once-with-server-event, except
+	    it modifies the global value of the event hook.
+	(erc-cmd-IDLE): New function.  Implements the new /IDLE command.  Usage: /IDLE NICK
+	(erc-seconds-to-string): New function.  Converts a number of seconds to an Engligh phrase.
+
+	* erc-list.el 1.16: Added variable erc-chanlist-mode-hook.
+
+2003-12-30  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc.el 1.595 (erc-cmd-HELP):
+	Changed to prefer giving help for erc-cmd-* functions over
+	   similarly-named Elisp functions (e.g., erc-cmd-LIST vs. list).
+
+2003-12-28  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc.el 1.594 (erc-query-buffer-p): Added this function.
+
+2003-12-28  Jorgen Schaefer  <forcer@users.sourceforge.net>
+
+	* erc.el 1.593 (erc-cmd-SV): Use erc-emacs-build-time.
+
+	* erc-compat.el 1.15: erc-emacs-build-time: New variable.
+
+	* erc.el 1.592 (erc-cmd-SAY):
+	Reintroduced the feature where the spaces between
+	"/SAY" and the rest of the line were being sent with the message.
+
+2003-12-28  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc.el 1.591 (erc-server-buffer-p):
+	Fixed a bug where this function sometimes would return
+	    nil when it should return t.
+
+2003-12-27  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc.el 1.590 (erc-generate-new-buffer-name):
+	Really fixed a bug where ERC would reuse
+	    a connected server buffer when erc-reuse-buffers is non-nil.
+	(erc-cmd-JOIN): Now we tell the user when he attempts to join the same
+	    channel twice on the same server.
+
+	* erc.el 1.589 (erc-generate-new-buffer-name):
+	Fixed a bug where ERC would reuse a connected server buffer when erc-reuse-buffers is non-nil.
+
+	* erc.el 1.588 (erc-cmd-SAY):
+	Fixed a bug where the spaces between "/SAY" and the rest of the
+	    line were being sent with the message.
+
+	* erc-list.el 1.15: Fixed another typo.
+
+	* erc-list.el 1.14: Fixed a typo.
+
+	* erc-list.el 1.13:
+	Added text to the top of the channel list buffer describing the keybinding for
+	function erc-chanlist-join-channel.
+
+	* erc-list.el 1.12: Minor appearance changes.  No functional change.
+
+	* erc-list.el 1.11:
+	Implemented function erc-chanlist-join-channel.  Added variable
+	erc-chanlist-channel-line-regexp.  Got rid of function
+	erc-chanlist-pre-command-hook.  Changed the logic for how channel lines are
+	highlighted.
+
+2003-12-26  Francis Litterio  <franl@users.sourceforge.net>
+
+	* erc-list.el 1.10:
+	Removed a bunch of unused code.  No semantic change.
+
+	* erc-list.el 1.9: Added lots of functionality.
+
+2003-12-15  Mario Lang  <mlang@delysid.org>
+
+	* erc-track.el 1.58, erc.el 1.587:
+	New custom type erc-message-type, use it in erc-hide-list and erc-track-exclude-types
+
+2003-12-14  Alex Schroeder  <alex@gnu.org>
+
+	* erc-track.el 1.57 (track-when-inactive): New module.
+	(erc-track-visibility): New option.
+	(erc-buffer-activity): New variable.
+	(erc-buffer-activity-timeout): New variable.
+	(erc-user-is-active): New function.
+	(erc-buffer-visible): New function.
+	(erc-modified-channels-update): Replace get-buffer-window call
+	with call to erc-buffer-visible.
+	(erc-track-modified-channels): Ditto.
+
+2003-12-14  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc-track.el 1.56 (erc-modified-channels-update):
+	Force update of modeline.  Makes sure
+	that the tracked channels disappear in other buffers too.
+
+2003-12-06  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc.el 1.586 (define-erc-module):
+	New optional argument LOCAL-P.  If non-nil, then
+	mode will be created as buffer-local rather than a global mode.
+	(erc-cmd-CTCP): Fix indentation from last commit.
+
+	* erc-compat.el 1.14 (erc-define-minor-mode):
+	Deal with :global and :group keywords.
+
+	* erc-nickserv.el 1.13 (erc-current-network):
+	Make server regex more permissive.
+
+	* erc.el 1.585 (erc-cmd-CTCP):
+	Don't add a space to end of command when ARGS are
+	empty.  This fixes a bug whereby requests of the form "VERSION " were
+	being sent, and ignored.
+
+2003-11-27  Lawrence Mitchell  <wence@gmx.li>
+
+	* erc-log.el 1.9: From Adrian Aichner <adrian@xemacs.org>
+	* erc-log.el (erc-log-file-coding-system): Use 'binary
+	coding-system under XEmacs (instead of 'emacs-mule).
+	* erc-log.el (erc-w32-invalid-file-characters): Removed as no
+	longer needed.
+	* erc-log.el (erc-generate-log-file-name-long): Use
+	`convert-standard-filename', which exists in XEmacs too.
+
+2003-11-16  Mario Lang  <mlang@delysid.org>
+
+	* erc-identd.el 1.1: Code provided by johnw, thanks!
+
 2003-11-09  Lawrence Mitchell  <wence@gmx.li>
 
 	* erc.el 1.584 (erc-latest-version): Clean up docstring.
 
 	* debian/rules 1.10: Use $(wildcard *.el) instead of a hardcoded list
 
-2002-07-03  disumu  <disumu@users.sourceforge.net>
+2002-07-03  Diane Murray  <dsm@muenster.de>
 
 	* erc.el 1.292:
 	erc-iswitchb now works correctly if erc-modified-channels-alist is non-nil
 
-2002-07-01  disumu  <disumu@users.sourceforge.net>
+2002-07-01  Diane Murray  <dsm@muenster.de>
 
 	* erc-menu.el 1.8:
 	* changed how we check if we should activate "Track hidden channels" and
 	Make /set anonymous-lign set erc-anonymous-login, also report
 	which var was set to which val.
 
-2002-06-28  disumu  <disumu@users.sourceforge.net>
+2002-06-28  Diane Murray  <dsm@muenster.de>
 
 	* erc-menu.el 1.6: added "Customize ERC"
 
 	  (by rw)
 	Delete (erc-display-prompt) from reconnect to avoid clutter
 
-2002-06-23  disumu  <disumu@users.sourceforge.net>
+2002-06-23  Diane Murray  <dsm@muenster.de>
 
 	* erc.el 1.288:
 	erc-get-channel-mode-from-keypress is now bound to C-c C-m
 	* erc-track.el 1.15:
 	Fixed bug where buffer-names suddenly had text-properties.
 
-2002-06-19  disumu  <disumu@users.sourceforge.net>
+2002-06-19  Diane Murray  <dsm@muenster.de>
 
 	* Makefile 1.5: changed erc-auto.el to $(SPECIAL) in make fullclean
 
 	* Makefile 1.4: remove erc-auto.el on make fullclean
 
-2002-06-18  disumu  <disumu@users.sourceforge.net>
+2002-06-18  Diane Murray  <dsm@muenster.de>
 
 	* erc-match.el 1.10: fixed spelling error
 
 	* erc-track.el:
 	  added support for erc-current-nick-face
 
-2002-06-17  disumu  <disumu@users.sourceforge.net>
+2002-06-17  Diane Murray  <dsm@muenster.de>
 
 	* erc.el 1.287: * added beginning suport for 005 numerics:
 	  - added buffer local variable erc-server-parameters
 	  - added erc-server-005, which sets erc-server-parameters if the server has
 	    used this code to show its parameters
 
-2002-06-16  disumu  <disumu@users.sourceforge.net>
+2002-06-16  Diane Murray  <dsm@muenster.de>
 
 	* erc.el 1.286:
 	* bugfix: when pasting lines with blank lines in between, remove the blank lines
 	* erc-nickserv.el 1.4 (erc-networks): Added doc string.
 	(erc-nickserv-alist): Added doc string.
 
-2002-06-14  disumu  <disumu@users.sourceforge.net>
+2002-06-14  Diane Murray  <dsm@muenster.de>
 
 	* erc-ring.el 1.4:
 	fixed bug so that the prompt and command always get put at the end of the buffer
 	Added :type for erc-nickserv-passwords custom.
 	Fixed hook usage.
 
-2002-06-07  disumu  <disumu@users.sourceforge.net>
+2002-06-07  Diane Murray  <dsm@muenster.de>
 
 	* erc-nickserv.el 1.2: * added GalaxyNet
 
 
 	* erc.el 1.284: Added /squery command
 
-2002-06-06  disumu  <disumu@users.sourceforge.net>
+2002-06-06  Diane Murray  <dsm@muenster.de>
 
 	* erc-menu.el 1.5: * made group Channel modes
 	  - moved change mode and invite only mode to here
 	* erc-match.el: Fixed a stupid mistake where
 	                "*** Your new nick is <foo>" would trigger an error.
 
-2002-06-04  disumu  <disumu@users.sourceforge.net>
+2002-06-04  Diane Murray  <dsm@muenster.de>
 
 	* erc-nickserv.el 1.1, erc.el 1.282: * added erc-nickserv.el
 	* moved nickserv identification variables and functions to the new file
 
 	* fixed bug where nil was shown if no reason was given by users on /PART
 
-2002-06-03  disumu  <disumu@users.sourceforge.net>
+2002-06-03  Diane Murray  <dsm@muenster.de>
 
 	* erc-match.el 1.7:
 	* fixed bug where erc-log-matches produced an error when the value of
 	  (erc-default-target) was not a channel
 	* use erc-format-timestamp, if it's non-nil, for %t in erc-log-match-format
 
-2002-06-01  disumu  <disumu@users.sourceforge.net>
+2002-06-01  Diane Murray  <dsm@muenster.de>
 
 	* erc-button.el 1.18:
 	* made action case insensitive in erc-nick-popup and added a more descriptive
 	erc-track.el: erc-track-exclude-types: New variable. Defaults to ("JOIN" "PART") right now for testing, it should eventually set to nil soon again.
 	(erc-track-modified-channels): Use above fun and var to optionally exclude certain message types from channel tracking.
 
-2002-05-28  disumu  <disumu@users.sourceforge.net>
+2002-05-28  Diane Murray  <dsm@muenster.de>
 
 	* CREDITS 1.5: added myself, vain as it sounds ;)
 
 	* erc-nets.el 1.3: Added some old code I once worked on.
 	Added autoload cookie
 
-2002-05-24  disumu  <disumu@users.sourceforge.net>
+2002-05-24  Diane Murray  <dsm@muenster.de>
 
 	* erc-fill.el 1.10:
 	removed reference in documentation to old variable, changed it to the new one
 	  - new function erc-set-initial-user-mode gets called from
 	    erc-connection-established
 
-2002-05-22  disumu  <disumu@users.sourceforge.net>
+2002-05-22  Diane Murray  <dsm@muenster.de>
 
 	* erc.el 1.270: fixed bug where prompt was missing after reconnect
 
-2002-05-21  disumu  <disumu@users.sourceforge.net>
+2002-05-21  Diane Murray  <dsm@muenster.de>
 
 	* erc.el 1.269:
 	in erc-nickserv-identify: if network is unknown, just use "Nickserv"
 	  require NickServ@services.dal.net
 	  now sends to all NickServ with nick@server where possible
 
-2002-05-17  disumu  <disumu@users.sourceforge.net>
+2002-05-17  Diane Murray  <dsm@muenster.de>
 
 	* erc-fill.el 1.9:
 	* filling with erc-fill-variable now works with custom defined fill width:
 
 	* erc.el 1.264: whitespace fix
 
-2002-05-15  disumu  <disumu@users.sourceforge.net>
+2002-05-15  Diane Murray  <dsm@muenster.de>
 
 	* erc.el 1.263:
 	* added explanation of empty string working in erc-quit-reason-various-alist
 	  "/ctcp nick time" and not just "/ctcp nick TIME"
 	* timestamp in front of server notices now shown in the timestamp face
 
-2002-05-13  disumu  <disumu@users.sourceforge.net>
+2002-05-13  Diane Murray  <dsm@muenster.de>
 
 	* erc.el 1.262:
 	- in erc-format-privmessage: `erc-format-timestamp' added to message after
 
 
 VERSION = 0.08
-AUTHOR_VERSION = Version 4.0 Revision: 1.640
+AUTHOR_VERSION = Version 4.0 Revision: 1.657
 MAINTAINER = Adrian Aichner <adrian@xemacs.org>
 PACKAGE = erc
 PKG_TYPE = regular
 
 (require 'erc)
 
+(defconst erc-autoaway-version "$Revision$"
+  "ERC Autoaway revision.")
+
 (defgroup erc-autoaway nil
   "Set yourself automatically away after some idletime and set
 yourself back when you type something."
 ERC autoaway mode can set you away when you idle, and set you no
 longer away when you type something.  This variable controls whether
 you will be set no longer away when you type something.  See
-`erc-auto-set-away' for the other half."
+`erc-auto-set-away' for the other half.
+See also `erc-autoaway-no-auto-discard-regexp'."
   :group 'erc-autoaway
   :type 'boolean)
 
+(defcustom erc-autoaway-no-auto-discard-regexp "^/g?away.*$"
+  "*Input that matches this will not automatically discard away status.
+See `erc-auto-discard-away'."
+  :group 'erc-autoaway
+  :type 'regexp)
+
 (defcustom erc-autoaway-idle-seconds 1800
   "*Number of seconds after which ERC will set you automatically away.
 If you are changing this variable using lisp instead of customizing it,
 (defvar erc-autoaway-last-sent-time (erc-current-time)
   "The last time the user sent something.")
 
-(defun erc-autoaway-reset-idletime (l &rest stuff)
+(defun erc-autoaway-reset-idletime (line &rest stuff)
   "Reset the stored idletime for the user.
 This is one global variable since a user talking on one net can talk
 on another net too."
-  (when erc-auto-discard-away
-    (erc-autoaway-set-back l))
+  (when (and erc-auto-discard-away
+             (stringp line)
+             (not (string-match erc-autoaway-no-auto-discard-regexp line)))
+    (erc-autoaway-set-back line))
   (setq erc-autoaway-last-sent-time (erc-current-time)))
 
 (defun erc-autoaway-reestablish-idletimer ()
 			     'erc-autoaway-set-away
 			     erc-autoaway-idle-seconds)))
 
-(defun erc-autoaway-set-back (l)
+(defun erc-autoaway-set-back (line)
   "Discard the away state globally."
   (when (erc-away-p)
     (setq erc-autoaway-last-sent-time (erc-current-time))
    (nconc (and erc-button-mouse-face
                (list 'mouse-face erc-button-mouse-face))
           (list 'erc-callback fun)
-          (list 'local-map erc-button-keymap)
+          (list 'keymap erc-button-keymap)
           (list 'rear-nonsticky t)
           (and data (list 'erc-data data))))
-  (widget-convert-button 'link from to :action 'erc-widget-press-button))
+  (widget-convert-button 'link from to :action 'erc-button-press-button
+                         ;; Make XEmacs behave with mouse-clicks, for
+                         ;; some reason, widget stuff overrides the
+                         ;; 'keymap text-property.
+                         :mouse-down-action 'erc-button-click-button))
 
 (defun erc-button-add-face (from to face)
   "Add FACE to the region between FROM and TO."
             old (erc-list (get-text-property pos 'face))
             end (next-single-property-change pos 'face nil to)))))
 
-(defun erc-button-click-button (event)
+;; widget-button-click calls with two args, we ignore the first.
+;; Since Emacs runs this directly, rather than with
+;; widget-button-click, we need to fake an extra arg in the
+;; interactive spec.
+(defun erc-button-click-button (ignore event)
   "Call `erc-button-press-button'."
-  (interactive "e")
+  (interactive "P\ne")
   (save-excursion
     (mouse-set-point event)
     (erc-button-press-button)))
 
-(defun erc-widget-press-button (elems el)
-  (goto-char (widget-get elems :from))
-  (erc-button-press-button))
-
-(defun erc-button-press-button ()
+;; XEmacs calls this via widget-button-press with a bunch of arguments
+;; which we don't care about.
+(defun erc-button-press-button (&rest ignore)
   "Check text at point for a callback function.
 If the text at point has a `erc-callback' property,
 call it with the value of the `erc-data' text property."
 (defconst erc-ezb-version "$Revision$"
   "ERC EZBouncer revision.")
 
+(defgroup erc-ezbounce nil
+  "Interface to the EZBounce IRC bouncer (a virtual IRC server)"
+  :group 'erc)
+
 (defcustom erc-ezb-regexp "^ezbounce!srv$"
   "Regexp used by the EZBouncer to identify itself to the user."
+  :group 'erc-ezbounce
   :type 'string)
 
 (defcustom erc-ezb-login-alist '()
  (((server . port) . (username . password))
   ((server . port) . (username . password))
   ...)"
+  :group 'erc-ezbounce
   :type '(repeat
 	  (cons (cons :tag "Server"
 		     string
 (defun erc-fill-static ()
   "Fills a text such that messages start at column `erc-fill-static-center'."
   (save-match-data
-    (let* ((white-space-str " \t")
-	   (white-space-lst (string-to-list white-space-str))
-	   (white-space-re  (concat "[" white-space-str "]")))
-      (goto-char (point-min))
-      (let* ((nick (when (looking-at "^\\(\\S-+\\)\\( .*\\)$")
-		     (match-string 1)))
-	     (message-text (and nick (match-string 2)))
-	     (text-start   (max 0 (- erc-fill-static-center (length nick)))))
-	(when (and nick message-text)
-	  (insert (make-string text-start ? ))
-	  (let ((fill-column erc-fill-column)
-		(erc-fill-prefix (make-string text-start ? )))
-	    (erc-fill-variable)
-	    (goto-char (point-min))
-	    (let ((lines-to-go (erc-count-lines)))
-	      (when (>= lines-to-go 1) ; we have more than one line to fill
-		(save-restriction
-		  (narrow-to-region (progn (forward-line)
-					   (point))
-				    (point-max))
-		  (let ((fill-column (- fill-column (string-width nick))))
-		    (erc-fill-variable)) ; first re-fill for
-					; "smaller" margin
-		  (goto-char (point-min)) ; now indent behind nick
-		  (while (> lines-to-go 0)
-		    (insert (make-string (1+ (length nick)) ? ))
-		    (forward-line)
-		    (setq lines-to-go (1- lines-to-go))))))
-	    (let* ((parsed-posn (text-property-not-all (point-min) (point-max) 'erc-parsed nil))
-		   (parsed-prop (when parsed-posn
-				  (get-text-property parsed-posn 'erc-parsed))))
-	      (put-text-property (point-min) (point-max) 'erc-parsed parsed-prop))))))))
-
-(defun erc-count-lines ()
-  "Count the lines that lie between (point) and the end of the buffer."
-  (let ((i 0)
-	(point-before (point)))
-    (while (not (= 1 (forward-line)))
-      (setq i (1+ i)))
-    (goto-char point-before)
-    (max 0 (1- i))))
+    (goto-char (point-min))
+    (looking-at "^\\(\\S-+\\)")
+    (let ((nick (match-string 1)))
+        (let ((fill-column (- erc-fill-column (erc-timestamp-offset)))
+              (fill-prefix (make-string erc-fill-static-center 32)))
+          (insert (make-string (max 0 (- erc-fill-static-center (length nick) 1)) 32))
+          (erc-fill-regarding-timestamp))
+        (erc-restore-text-properties))))
 
 (defun erc-fill-variable ()
   "Fill region from START to END. START and END should be markers."
   (let ((fill-prefix erc-fill-prefix)
         (fill-column (or erc-fill-column fill-column)))
-    (unless fill-prefix
-      (goto-char (point-min))
-      (when (looking-at "\\(\\S-+ \\)")
-	(let ((len (length (match-string 1))))
-      (if (and (boundp 'erc-timestamp-format)
-               erc-timestamp-format
-               (eq erc-insert-timestamp-function 'erc-insert-timestamp-left)
-               (not erc-hide-timestamps))
-          (setq len (+ len 
-                       (length (format-time-string erc-timestamp-format)))))
-	  (setq fill-prefix (make-string len ? )))))
-    (fill-region (point-min) (point-max) t t)))
+    (goto-char (point-min))
+    (if fill-prefix
+        (let ((first-line-offset (make-string (erc-timestamp-offset) 32)))
+          (insert first-line-offset)
+          (fill-region (point-min) (point-max) t t)
+          (goto-char (point-min))
+          (delete-char (length first-line-offset)))
+      (save-match-data
+        (looking-at "^\\(\\S-+\\)")
+        (let* ((nick  (match-string 1))
+               (fill-column (- erc-fill-column (erc-timestamp-offset)))
+               (fill-prefix (make-string (+ 1 (length nick)) 32)))
+          (erc-fill-regarding-timestamp))))
+    (erc-restore-text-properties)))
+
+(defun erc-fill-regarding-timestamp ()
+  "Fills a text such that messages start at column `erc-fill-static-center'."
+  (fill-region (point-min) (point-max) t t)
+  (goto-char (point-min))
+  (forward-line)
+  (indent-rigidly (point) (point-max) (erc-timestamp-offset)))
+
+(defun erc-timestamp-offset ()
+  "Get length of timestamp if inserted left."
+  (if (and (boundp 'erc-timestamp-format)
+           erc-timestamp-format
+           (eq erc-insert-timestamp-function 'erc-insert-timestamp-left)
+           (not erc-hide-timestamps))
+      (length (format-time-string erc-timestamp-format))
+    0))
+
+(defun erc-restore-text-properties ()
+  "Restore the property 'erc-parsed for the region."
+  (let* ((parsed-posn (text-property-not-all (point-min) (point-max) 'erc-parsed nil))
+         (parsed-prop (when parsed-posn
+                        (get-text-property parsed-posn 'erc-parsed))))
+    (put-text-property (point-min) (point-max) 'erc-parsed parsed-prop)))
 
 (provide 'erc-fill)
 
 					       (if channel
 						   "."
 						 "s.  This may take a while."))))
-    (erc-chanlist channel))
+    (erc-chanlist (list channel)))
   t)
 
 ;;;###autoload
 buffers are logged in separate files in that directory.  The
 directory should not end with a trailing slash."
   :group 'erc-log
-  :type '(choice (const nil)))
+  :type '(choice directory
+		 (const nil)))
 
 (defcustom erc-log-insert-log-on-open t
   "*Insert log file contents into the buffer if a log file exists."
   ((add-hook 'erc-insert-post-hook
 	     'erc-save-buffer-in-logs)
    (add-hook 'erc-send-post-hook
-	     'erc-save-buffer-in-logs))
+	     'erc-save-buffer-in-logs)
+   (define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs))
   ;; disable
   ((remove-hook 'erc-insert-post-hook
 		'erc-save-buffer-in-logs)
    (remove-hook 'erc-send-post-hook
-		'erc-save-buffer-in-logs)))
+		'erc-save-buffer-in-logs)
+    (define-key erc-mode-map "\C-c\C-l" 'undefined)))
 
 (when erc-enable-logging
   (add-hook 'erc-kill-buffer-hook
 (provide 'erc-log)
 
 ;;; erc-log.el ends here
+;;
+;; Local Variables:
+;; indent-tabs-mode: t
+;; tab-width: 8
+;; standard-indent: 4
+;; End:
 (defgroup erc-match nil
   "Keyword and Friend/Foe/... recognition.
 Group containing all things concerning pattern matching in ERC
-messages.")
+messages."
+  :group 'erc)
 
 ;;;###autoload (autoload 'erc-match-mode "erc-match")
 (define-erc-module match nil
 specified, `erc-keyword-face' is used."
   :group 'erc-match
   :type '(repeat (choice regexp
-			 (cons regexp face))))
+			 (list regexp face))))
 
 (defcustom erc-dangerous-hosts nil
   "List of regexps for hosts to highlight.
 
 (defcustom erc-current-nick-highlight-type nil
   "*Determines how to highlight text in which your current nickname appears
-(does not apply to text sent by you).
+\(does not apply to text sent by you\).
 
 The following values are allowed:
 
   :group 'erc-match
   :type '(choice (const nil)
 		 (const nick)
+		 (const keyword)
+		 (const nick-or-keyword)
 		 (const all)))
 
 (defcustom erc-pal-highlight-type 'nick
 - pal
 - dangerous-host
 - fool
+- current-nick
 
 The other element of each cons pair in this list is the buffer name to
 use for the logged message."
 			       (const keyword)
 			       (const pal)
 			       (const dangerous-host)
-			       (const fool))
+			       (const fool)
+			       (const current-nick))
 		       (string :tag "Buffer name"))))
 
 (defcustom erc-log-matches-flag 'away
 
 (defun erc-hide-fools (match-type nickuserhost message)
  "Hide foolish comments.
-This function should be called from `erc-text-matches-hook'."
+This function should be called from `erc-text-matched-hook'."
  (when (eq match-type 'fool)
    (erc-put-text-properties (point-min) (point-max)
 			    '(invisible intangible)
 (provide 'erc-match)
 
 ;;; erc-match.el ends here
+;;
+;; Local Variables:
+;; indent-tabs-mode: t
+;; tab-width: 8
+;; standard-indent: 4
+;; End:
 (require 'erc)
 (require 'easymenu)
 
+(defconst erc-menu-version "$Revision$"
+  "ERC menu revision")
+
 (defvar erc-menu-definition
   (list "IRC"
 	["Connect to server..." erc-select t]
 	["Disconnect from server..." erc-quit-server erc-connected]
 	"-"
-	["Join channel..." erc-join-channel t]
+	["List channels..." erc-cmd-LIST erc-connected]
+	["Join channel..." erc-join-channel erc-connected]
+	["Start a query..." erc-cmd-QUERY erc-connected]
+	"-"
+        ["List users in channel" erc-channel-names erc-channel-users]
+        ["List channel operators" erc-cmd-OPS erc-channel-users]
+	["Input action..." erc-input-action (erc-default-target)]
+	["Set topic..." erc-set-topic
+	 (and (and (erc-default-target) (not (erc-query-buffer-p)))
+	      (or (not (member "t" channel-modes))
+		  (erc-channel-user-op-p (erc-current-nick))))]
+	(list "Channel modes"
+	      ["Change mode..." erc-insert-mode-command
+               (erc-channel-user-op-p (erc-current-nick))]
+	      ["No external send" (erc-toggle-channel-mode "n")
+               :active (erc-channel-user-op-p (erc-current-nick))
+	       :style toggle :selected (member "n" channel-modes)]
+	      ["Topic set by channel op" (erc-toggle-channel-mode "t")
+	       :style toggle :selected (member "t" channel-modes)
+               :active (erc-channel-user-op-p (erc-current-nick))]
+	      ["Invite only" (erc-toggle-channel-mode "i")
+	       :style toggle :selected (member "i" channel-modes)
+               :active (erc-channel-user-op-p (erc-current-nick))]
+	      ["Private" (erc-toggle-channel-mode "p")
+	       :style toggle :selected (member "p" channel-modes)
+               :active (erc-channel-user-op-p (erc-current-nick))]
+	      ["Secret" (erc-toggle-channel-mode "s")
+	       :style toggle :selected (member "s" channel-modes)
+               :active (erc-channel-user-op-p (erc-current-nick))]
+	      ["Moderated" (erc-toggle-channel-mode "m")
+	       :style toggle :selected (member "m" channel-modes)
+               :active (erc-channel-user-op-p (erc-current-nick))]
+	      ["Set a limit..." erc-set-channel-limit
+               (erc-channel-user-op-p (erc-current-nick))]
+	      ["Set a key..." erc-set-channel-key
+               (erc-channel-user-op-p (erc-current-nick))])
         ["Leave this channel..." erc-part-from-channel erc-channel-users]
-        ["List users in channel" erc-channel-names erc-channel-users]
-	["Set topic..." erc-set-topic
-        (or (not (member "t" channel-modes))
-             (erc-channel-user-op-p (erc-current-nick)))]
-  (list "Channel modes"
-        ["Change mode..." erc-insert-mode-command
-               (erc-channel-user-op-p (erc-current-nick))]
-        ["No external send" (erc-toggle-channel-mode "n")
-               :active (erc-channel-user-op-p (erc-current-nick))
-         :style toggle :selected (member "n" channel-modes)]
-        ["Topic set by channel op" (erc-toggle-channel-mode "t")
-         :style toggle :selected (member "t" channel-modes)
-               :active (erc-channel-user-op-p (erc-current-nick))]
-        ["Invite only" (erc-toggle-channel-mode "i")
-         :style toggle :selected (member "i" channel-modes)
-               :active (erc-channel-user-op-p (erc-current-nick))]
-        ["Private" (erc-toggle-channel-mode "p")
-         :style toggle :selected (member "p" channel-modes)
-               :active (erc-channel-user-op-p (erc-current-nick))]
-        ["Secret" (erc-toggle-channel-mode "s")
-         :style toggle :selected (member "s" channel-modes)
-               :active (erc-channel-user-op-p (erc-current-nick))]
-        ["Moderated" (erc-toggle-channel-mode "m")
-         :style toggle :selected (member "m" channel-modes)
-               :active (erc-channel-user-op-p (erc-current-nick))]
-        ["Set a limit..." erc-set-channel-limit
-               (erc-channel-user-op-p (erc-current-nick))]
-        ["Set a key..." erc-set-channel-key
-               (erc-channel-user-op-p (erc-current-nick))])
 	"-"
-  (list "Pals, fools and other keywords"
-        ["Add pal..." erc-add-pal]
-        ["Delete pal..." erc-delete-pal]
-        ["Add fool..." erc-add-fool]
-        ["Delete fool..." erc-delete-fool]
-        ["Add keyword..." erc-add-keyword]
-        ["Delete keyword..." erc-delete-keyword]
-        ["Add dangerous host..." erc-add-dangerous-host]
-        ["Delete dangerous host..." erc-delete-dangerous-host])
+	(list "Pals, fools and other keywords"
+	      ["Add pal..." erc-add-pal]
+	      ["Delete pal..." erc-delete-pal]
+	      ["Add fool..." erc-add-fool]
+	      ["Delete fool..." erc-delete-fool]
+	      ["Add keyword..." erc-add-keyword]
+	      ["Delete keyword..." erc-delete-keyword]
+	      ["Add dangerous host..." erc-add-dangerous-host]
+	      ["Delete dangerous host..." erc-delete-dangerous-host])
 	"-"
-	["Input action..." erc-input-action (erc-default-target)]
 	(list "IRC services"
 	      ["Identify to NickServ..." erc-nickserv-identify
-         (functionp 'erc-nickserv-identify)])
-	"-"
-	["Track hidden channel buffers" erc-track-mode
-	 :style toggle :selected (and (boundp 'erc-track-mode)
-				      erc-track-mode)
-	 :active (boundp 'erc-track-mode)]
+	       (functionp 'erc-nickserv-identify)])
 	"-"
 	["Customize ERC" (customize-group 'erc) t]
-	"-"
-	["Show ERC version" erc-version t]
-	)
+	["Enable/Disable ERC Modules" (customize-variable 'erc-modules) t]
+	["Show ERC version" erc-version t])
   "ERC menu definition.")
 
 (easy-menu-define erc-menu erc-mode-map "ERC menu" erc-menu-definition)
 (provide 'erc-menu)
 
 ;;; erc-menu.el ends here
+;;
+;; Local Variables:
+;; indent-tabs-mode: t
+;; tab-width: 8
+;; standard-indent: 4
+;; End:
   It can also be a function (predicate). Then it is executed with the
   server buffer as current-buffer."
   :group 'erc
-  :type 'sexp)
+  :type '(repeat
+          (list :tag "Network"
+                (symbol :tag "Network name")
+		(choice :tag "Network's common server ending"
+		 (regexp)
+		 (const :tag "Network has no common server ending" nil)))))
 
 (defvar erc-network nil
   "The name of the network you are connected to (a symbol).")
 (provide 'erc-nets)
 
 ;;; erc-nets.el ends here
+;;
+;; Local Variables:
+;; indent-tabs-mode: t
+;; tab-width: 8
+;; standard-indent: 4
+;; End:
 ;; Put into your .emacs:
 ;;
 ;; (require 'erc-nickserv)
-;; (erc-nickserv-mode 1)
+;; (erc-services-mode 1)
+;;
+;; Add your nickname and NickServ password to `erc-nickserv-passwords'.
+;; Using the freenode network as an example:
+;;
+;; (setq erc-nickserv-passwords '((freenode (("nickname" "password")))))
+;;
+;; The default automatic identification mode is autodetection of NickServ
+;; identify requests.  Set the variable `erc-nickserv-identify-mode' if
+;; you'd like to change this behavior.  You can also change the way
+;; automatic identification is handled by using:
+;;
+;; M-x erc-nickserv-identify-mode
+;;
+;; If you'd rather not identify yourself automatically but would like access
+;; to the functions contained in this file, just load this file without
+;; enabling `erc-services-mode'.  
+;;
 
 ;;; Code:
 
 ;;;###autoload (autoload 'erc-services-mode "erc-nickserv" nil t)
 (define-erc-module services nickserv
   "This mode automates communication with services."
-  ((add-hook 'erc-server-NOTICE-hook
-	     'erc-nickserv-identify-autodetect))
+  ((erc-nickserv-identify-mode erc-nickserv-identify-mode))
   ((remove-hook 'erc-server-NOTICE-hook
-		'erc-nickserv-identify-autodetect)))
+		'erc-nickserv-identify-autodetect)
+   (remove-hook 'erc-after-connect
+		'erc-nickserv-identify-on-connect)
+   (remove-hook 'erc-nick-changed-functions
+		'erc-nickserv-identify-on-nick-change)))
+
+;;;###autoload
+(defun erc-nickserv-identify-mode (mode)
+  "Set up hooks according to which MODE the user has chosen."
+  (interactive
+   (list (intern (completing-read
+		  "Choose Nickserv identify mode (RET to disable): "
+		  '(("autodetect") ("nick-change") nil t)))))
+  (cond ((eq mode 'autodetect)
+	 (setq erc-nickserv-identify-mode 'autodetect)
+	 (add-hook 'erc-server-NOTICE-hook
+		   'erc-nickserv-identify-autodetect)
+	 (remove-hook 'erc-nick-changed-functions
+		      'erc-nickserv-identify-on-nick-change)
+	 (remove-hook 'erc-after-connect
+		      'erc-nickserv-identify-on-connect))
+	((eq mode 'nick-change)
+	 (setq erc-nickserv-identify-mode 'nick-change)
+	 (add-hook 'erc-after-connect
+		   'erc-nickserv-identify-on-connect)
+	 (add-hook 'erc-nick-changed-functions
+		   'erc-nickserv-identify-on-nick-change)
+	 (remove-hook 'erc-server-NOTICE-hook
+		      'erc-nickserv-identify-autodetect))
+	(t
+	 (setq erc-nickserv-identify-mode nil)
+	 (remove-hook 'erc-server-NOTICE-hook
+		      'erc-nickserv-identify-autodetect)
+	 (remove-hook 'erc-after-connect
+		      'erc-nickserv-identify-on-connect)
+	 (remove-hook 'erc-nick-changed-functions
+		      'erc-nickserv-identify-on-nick-change))))
+
+(defcustom erc-nickserv-identify-mode 'autodetect
+  "The mode which is used when identifying to Nickserv.
+
+Possible settings are:.
+
+'autodetect  - Identify when the real Nickserv sends an identify request.
+'nick-change - Identify when you change your nickname.
+nil          - Disables automatic Nickserv identification.
+
+You can also use M-x erc-nickserv-identify-mode to change modes."
+  :group 'erc-services
+  :type '(choice (const autodetect)
+		 (const nick-change)
+		 (const nil))
+  :set (lambda (sym val)
+	 (set-default sym val)
+	 (erc-nickserv-identify-mode val)))
 
 (defcustom erc-prompt-for-nickserv-password t
-  "Ask for the NickServ password when a NickServ identify request has been
-detected.  At this time ERC recognizes NickServ on the networks
-Open Projects, DalNet, Slashnet and GalaxyNet.
-
-If both this and `erc-nickserv-passwords' are nil, ERC will not check for
-NickServ identify requests, and you can identify yourself manually."
+  "Ask for the password when identifying to NickServ."
   :group 'erc-services
   :type 'boolean)
 
 (defcustom erc-nickserv-passwords nil
-  "Passwords used when identifying oneself to NickServ (not necessary).
+  "Passwords used when identifying to NickServ automatically.
 
 Example of use:
   (setq erc-nickserv-passwords
         '((freenode ((\"nick-one\" . \"password\")
                      (\"nick-two\" . \"password\")))
-          (dalnet ((\"nick\" . \"password\")))))
-
-If both this and `erc-prompt-for-nickserv-password' are nil, ERC will not
-check for NickServ identify requests, and you can identify yourself manually."
+          (DALnet ((\"nick\" . \"password\")))))"
   :group 'erc-services
   :type '(repeat
 	  (list :tag "Network"
-		(choice (const freenode)
-			(const dalnet)
-			(const galaxynet)
-			(const slashdot)
-                        (const brasnet)
-			(const iip))
-		(repeat (cons :tag "Identity"
+		(choice :tag "Network name"
+			(const freenode)
+			(const DALnet)
+			(const GalaxyNet)
+			(const SlashNET)
+			(const BRASnet)
+			(const iip)
+			(const Austnet)
+			(symbol :tag "Network name"))
+		(repeat :tag "Nickname and password"
+			(cons :tag "Identity"
 			      (string :tag "Nick")
 			      (string :tag "Password"))))))
 
 ;; Variables:
 
-(defvar erc-nickserv-alist
+(defcustom erc-nickserv-alist
   '((DALnet
      "NickServ!service@dal.net"
      "/msg\\s-NickServ@services.dal.net\\s-IDENTIFY\\s-<password>"
 USE-CURRENT indicates whether the current nickname must be used when
   identifying.
 ANSWER is the command to use for the answer.  The default is 'privmsg.
-  This last element is optional.")
+  This last element is optional."
+   :group 'erc-services
+   :type '(repeat
+	   (list :tag "Nickserv data"
+		 (symbol :tag "Network name")
+		 (string :tag "Nickserv's nick!user@host")
+		 (regexp :tag "Identify request sent by Nickserv")
+		 (string :tag "Identify to")
+		 (string :tag "Identify keyword")
+		 (boolean :tag "Use current-nick in identify message?")
+		 (choice :tag "Command to use (optional)"
+		  (string :tag "Command")
+		  (const :tag "No special command necessary" nil)))))
 
 ;; Functions:
 
 (defun erc-nickserv-identify-autodetect (proc parsed)
-  "Check for a NickServ identify request everytime a notice is sent to this
-user.  Make sure it is the real NickServ for this network and that it has
+  "Check for a NickServ identify request everytime a notice is received.
+Make sure it is the real NickServ for this network and that it has
 specifically asked the user to IDENTIFY.
 If `erc-prompt-for-nickserv-password' is non-nil, prompt the user for the
 password for this nickname, otherwise try to send it automatically."
       ;; and it's asked us to identify
       (when (and nickserv (equal sspec nickserv)
                  (string-match identify-regex msg))
-        (erc-log (format "NickServ IDENTIFY request detected"))
-        (if erc-prompt-for-nickserv-password
-            (call-interactively 'erc-nickserv-identify)
-          (when erc-nickserv-passwords
-            (erc-nickserv-identify
-             (cdr (assoc nick
-                         (nth 1 (assoc network
-                                       erc-nickserv-passwords)))))))
+        (erc-log "NickServ IDENTIFY request detected")
+        (erc-nickserv-call-identify-function nick)
 	nil))))
 
-(defun erc-nickserv-identify (&optional password)
-  "Send a \"identify <PASSWORD>\" to NickServ.
+(defun erc-nickserv-identify-on-connect (server nick)
+  "Identify to Nickserv after the connection to the server is established."
+  (unless (and (null erc-nickserv-passwords)
+               (null erc-prompt-for-nickserv-password))
+    (erc-nickserv-call-identify-function nick)))
+
+(defun erc-nickserv-identify-on-nick-change (nick old-nick)
+  "Identify to Nickserv whenever your nick changes."
+  (unless (and (null erc-nickserv-passwords)
+               (null erc-prompt-for-nickserv-password))
+    (erc-nickserv-call-identify-function nick)))
+
+(defun erc-nickserv-call-identify-function (nickname)
+  "Call `erc-nickserv-identify' interactively or run it with NICKNAME's password.
+The action is determined by the value of `erc-prompt-for-nickserv-password'."
+  (if erc-prompt-for-nickserv-password
+      (call-interactively 'erc-nickserv-identify)
+    (when erc-nickserv-passwords
+      (erc-nickserv-identify
+       (cdr (assoc nickname
+		   (nth 1 (assoc (erc-network)
+				 erc-nickserv-passwords))))))))
+
+;;;###autoload
+(defun erc-nickserv-identify (password)
+  "Send an \"identify <PASSWORD>\" message to NickServ.
 When called interactively, read the password using `read-passwd'."
   (interactive
    (list (read-passwd
-          (format "NickServ password for %s on %s: "
+          (format "NickServ password for %s on %s (RET to cancel): "
                   (erc-current-nick)
                   (or (and (erc-network)
                            (symbol-name (erc-network)))
                       "Unknown network")))))
-  (let* ((erc-auto-discard-away nil)
-         (network (erc-network))
-         (nickserv-info (assoc network erc-nickserv-alist))
-         (nickserv (or (nth 3 nickserv-info) "NickServ"))
-         (identify-word (or (nth 4 nickserv-info) "IDENTIFY"))
-         (nick (if (nth 5 nickserv-info)
-                   (concat (erc-current-nick) " ")
-                 ""))
-	 (msgtype (or (nth 6 nickserv-info) "PRIVMSG")))
-    (erc-message msgtype
-		 (concat nickserv " " identify-word " " nick password))))
+  (when (and password (not (string= "" password)))
+    (let* ((erc-auto-discard-away nil)
+	   (network (erc-network))
+	   (nickserv-info (assoc network erc-nickserv-alist))
+	   (nickserv (or (nth 3 nickserv-info) "NickServ"))
+	   (identify-word (or (nth 4 nickserv-info) "IDENTIFY"))
+	   (nick (if (nth 5 nickserv-info)
+		     (concat (erc-current-nick) " ")
+		   ""))
+	   (msgtype (or (nth 6 nickserv-info) "PRIVMSG")))
+      (erc-message msgtype
+		   (concat nickserv " " identify-word " " nick password)))))
 
 (provide 'erc-nickserv)
 
 ;;; erc-nickserv.el ends here
+;;
+;; Local Variables:
+;; indent-tabs-mode: t
+;; tab-width: 8
+;; standard-indent: 4
+;; End:
 
 (erc-define-catalog-entry 'english 'CTCP-PAGE "Page from %n (%u@%h): %m")
 
+(defgroup erc-page nil
+  "React to CTCP PAGE messages."
+  :group 'erc)
+
 (defcustom erc-page-function nil
   "A function to process a \"page\" request.
 If nil, this prints the page message in the minibuffer and calls