Tue Feb  6 01:14:20 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-noglob: new variable to optionally disable nickname
          expansion.  Can be toggled with irc-toggle-glob.

Mon Feb  5 14:26:56 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-pop-ratio: renamed from irc-pop-on-signal.

        * irc-parse-RPL, irc-parse-ERR: modified regexp to allow for
          messages that come back without the nickname of the client.
          These happen when the nickname is not yet set.

Sun Feb  4 01:00:53 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-parse-RPL: band-aids for server bugs with RPL_MOTD,
          RPL_AWAY, and RPL_TIME.

        * irc-do-finger: new command.

        * irc-do-connect: new operator command.

        * irc-do-unalias: completion-ignore-case.

        * irc-do-topic: make argument optional.

Sat Feb  3 01:15:14 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-parse-priv: semi-private messages don't set irc-last-private.

        * irc-parse-RPL: fixed a really stupid bug in RPL_WHOISSERVER.
          tmp2 was being found exactly the same way as tmp1 so they were
          always being set to the same thing.

        * irc-do-send: mis-reference variable "to" in ambiguous recipient
          case.  Changed to "arg".

Wed Jan 31 00:02:59 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-alias-alist: took out the /IDLE alias.

        * irc-kill-input: reset irc-command-index too.

Tue Jan 30 01:58:59 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-parse-kill: set irc-wanted-exit to t so it won't restart
          automatically.  Normally the restart will happen way too fast
          for the propogating kill message to get out of the system so the
          kill-and-restart process would continue indefinitely.

Mon Jan 29 01:12:24 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-do-kill: fixed it to work again.  It was only attempting to
          do a KILL if the argument was an empty string.  Oops.  Changed
          the ``if'' to an ``or''.

        * irc-mode: irc-server and irc-port are made buffer local, so that
          automatically restarting in the buffer will use the old value.
          Most people shouldn't even notice this; very few have multiple
          servers available to them.

        * irc: made the condition-case encompass more of the start-up
          code.  Diddled the start-up message slightly.

Sun Jan 28 01:40:04 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-parse-RPL: moved the irc-maintain-list call in RPL_WHOISUSER
          after the irc-insert, because it can potentially screw with the
          match-data. 

        * irc-sentinel: send channel change command only if channel /= 0.

        * irc-alias-alist: add /m for /msg.  I don't think people should
          ever use the /msg command.

        * irc-do-oops: should work interactively now.

        * most non-interactive functions: removed docstrings; most have
          the important programmer parts as comments where the doc string
          was.  This is to lower unnecessary use of space; nearly everyone
          who uses the client doesn't care what the documentation for
          "irc-parse-invite" is, for example.  5k savings in .el space,
          13k in .elc.

        * irc-sentinel: save history rings across restart.  Move point to
          end of buffer when restarted.

        * irc-display: new function.  This should handle all of the
          scrolling and popping up of the IRC buffers.

Sat Jan 27 01:01:35 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-silent-bell: new variable used in irc-filter and
          irc-sentinel to disable audible bell but still leave the
          features of signal.  

        * irc: select next-window if in minibuffer-window so
          switch-to-buffer stops whining.

Fri Jan 26 00:40:25 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-parse-priv: make prublic messages not show up as "apparently to".

        * irc-parse-whoreply: cope with the very long hostnames that are
          in use at some German sites.  This was breaking when the real
          name field and the address field would have overlapped.

Wed Jan 24 13:23:00 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-insert: made the fix for the whitespace-in-continuation-prefix
          problem better.  The prefix is now three spaces.

        * irc-raw-mode: function to toggle irc-raw-mode variable, which
          is now represented in mode-line-format.

Tue Jan 23 15:40:19 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-do-version: accepts a server argument, though this is
          currently useless.  EB005.

        * irc-do-operwho: new command, using variable irc-operwho in
          irc-parse-whoreply to decide whether to insert information about
          non-operators.  EB003.

        * irc-no-motd: new variable which is used in irc at start-up;
          non-nil means don't ask for the message of the day.  EB004.
          [?B### in this file will now refer to items on the BugList kept
          by mikeb@salmon.ee.ubc.ca]

        * irc-do-redirect: Break up messages longer than 250 characters as
          is normally done when they are originally sent.

        * irc: add quit to the condition-case so the "Sorry ..." message
          is inserted if C-g interrupts the connexion attempt.

        * irc-mode: initialise irc-last-time so irc-check-time won't
          signal and error when the connexion wasn't made but enter was
          pressed.

Mon Jan 22 01:59:56 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-no-auto-restart: new variable which is used by irc-sentinel
          when session terminaties abnormally.  A KILL is considered
          abnormal but mainly only because of the random server kills that
          happend and because I have so much faith in the people using the
          client that they aren't being dorques and getting killed by FOFH.
          Current channel, away status, last private and last invitation
          are the only variables carried over to the restarted session.

        * irc-do-msg: test for null string before doing aref test for
          space after : or ; to prevent args out of range error.

Sun Jan 21 00:59:59 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * irc-read-user: prompt once if handed a "" user argument.

        * Found a bug in irc-parse-RPL with RPL_INVITING.  The substrings
          were working on txt when they should have been using str.

        * Indicate when a message was sent to the channel using PRIVMSG,
          either by "-> Semi-private message from user" or "(user)".  A
          religious argument about this will probably appear within the
          manual. 

        * Converted all uses of irc-channel to be as a string rather than
          as an int.  This is because Emacs only has 24 bit integers but
          the servers allow a full 32 bits to be used for channels.

        * Finally figured out how come cursor-in-echo-area wasn't working
          for putting the cursor in the minibuffer while reading password
          on my workstation.  It's a bug in Emacs and its X support.

        * Will ding and print minibuffer message when session terminates
          abnormally. 

        * Added variable irc-raw-mode to aid in debugging when necessary.

        * Broke out the irc-last-stamp initialiser from irc and made 
          irc-do-stamp also call the new irc-normalise-time-stamp.

        * Modified irc-check-time to retain hourly subdivision even when a
          stamp gets posted late.  This will end up falling very far
          behind if this function is called less frequently than the stamp
          interval.  This will only (?) happen if the stamp is 1 and user
          is idle.  It will lead to multiple messages stating the same
          time being inserted when the user becomes active again, as
          irc-last-stamp tries to catch up to irc-total-time.  It is done
          this way to keep the proper interval in the vast majority of
          cases where the stamp interval is longer than the function call
          period.  That is, to get 8:10 -> 8:21 -> 8:30 rather than 8:10
          -> 8:21 -> 8:31.  The old behavior can be regained by changing
          the last addition expression to just ``irc-total-time''.

Sat Jan 20 22:27:28 1990  David C Lawrence  (tale at turing.cs.rpi.edu)

        * Added a README.

        * Took out irc-news in (pre-mature) anticipation of A Real Manual.

        * Converted to ChangeLog.

        * Fixed typo with RPL_KILLDONE in irc-parse-RPL.  0s, not 1s.

        * Made irc-parse-{ERR,RPL} do irc-wholist maintenance where they
          could.

        * Check RPL_WHOISSERVER to see whether both args returned are
          the same.

        * Changed all irc-execute-* to irc-do-*.

        * Server argument isn't always present in numeric replies; ie
          ": 301 tale out to lunch".  Changed regexps in irc-parse-server-msg.

        * Exchanged bindings for irc-do-leave and irc-do-quote. (Kimmo
          Suominen)

        * Documented topic event for /notify.  (Nate Hess)

        * irc-parse-priv was implicitly saying to signal when a private message
          was received from someone being ignored; it now explicitly
          returns nil.

        * /SEND and irc-read-user will allow non-matching names; cruddy hidden
          channel crap.

        * irc-read-passwd will put cursor in minibuffer. (Deven Corzine)

        * ERR_NOOPERHOST was being tested for wrong value.

        * Also do LFD => SPC mapping in irc-do-msg.  Previously only done
          by irc-process-input.  This fixes a bug that would send faulty
          input to the server when a /OOPS or /REDIRECT was done for
          a multiline message.

        * irc-parse-whoreply has new format; curious about the reaction
          to it.

        * Spruced irc-do-nick for "" exit and prompting about long
          names.

        * Misreferenced txt for str in ERR_NICKNAMEINUSE.

        * /JOIN . will join the channel last invited to.

        * Made command-history longer than one; this included generalizing
          the history mechanism and renaming a few symbols.

        * condition-case'd part of irc-parse-server-msg in case any of the
          irc-parse-* functions it calls bomb out on a string-match.  The
          only reports I have on this are from Nate when using garfield.

        * Let a nil value for irc-maximum-size mean roughly "however big
          it can safely get".  This is currently 8M - 1k characters.

        * Moved called to irc-truncate-buffer from the process-filter to
          irc-insert.

        * If the string handed to irc-insert has a continuous run of
          more than 75 (or so, dependent on screen-width) non-whitespace
          characters after the initial line, the following would happen:
          irc-insert called irc-fix-wordwrap to handle the break it made
          at the last screen column.  Then it prepended 4 spaces to the
          start of the wrapped text as a continuation line.  The next
          time through the loop, the prepended whitespace was the only
          whitespace, so irc-fix-wordwrap dutifully nuked it and
          proceded -- just to have it happen all over again.  The
          infinite loop just kept inserting empty lines; this was
          uncovered when a KILL message with a lengthy path came in.
          Simple fix: make the continuation string not contain
          whitespace.  It is currently ">".

        * Adapted irc-parse-ERR to deal with broken use of ERR_NOSUCHNICK
          generated for an operator who does a KILL, even of a valid
          nick.

        * MOTD on entry.

        * Check IRCNAME and NAME environment variables, in that order, for
          user-full-name.  (Nate)

        * Added irc-do-motd.

        * Added pattern argument for LINKS.

        * /KILL will no longer do nickname expansion on its argument. (Nate)

        * Changed irc-version to irc-do-version; it now inserts IRC-mode
          version info in *IRC* buffer and queries server for ircd version.

Wed Sep 27 18:56:19 1989  Gnu Maint Acct    (gnu at life.pawl.rpi.edu)

        * Fixed a misreferenced variable in irc-parse-server-msg so that
          lines which can't be parsed insert only that unparsable line.

        * Added irc-parse-topic and changed irc-signals and irc-notifies
          appropriately.

        * Moved setting of irc-channel to irc-parse-channel from
          irc-execute-join because a channel change isn't guaranteed
          (ie, trying to change to a channel not in 0-10 which has ten
          users on it).

        * Made irc-message-stamp 'private by default. (Geoff)

        * Made irc-time-stamp 0 by default.  (Also Geoff) This tickled
          an unseen bug in the start-up function which incremented
          irc-last-stamp.  It's fixed now.

        * Fixed a bug with interactive irc-execute-names -- prefix arg
          was being (list ...)ed.

        * Fixed a bug in irc-parse-namreply that dropped a name in the
          output when a line got wrapped.

        * Added /lusers.  I really dislike the name.

        * Added irc-parse-kill.

        * Made irc-execute-msg strip one space after the colon in
          messages; ie, "tale: hi" will send "hi" as a message not " hi".

        * Took out hardcoded width numbers for word-wrapping.  Uses
          (window-width) instead.

        * Added to the regexp for failed nickname changes in irc-parse-error;
          the sentences got changed in the newer servers.

        * Wrapped irc-check-time around display-time-filter for better
          accuracy if a display-time process is running.

        * Made the "IRC Session finished" message include the time.

        * Added irc-conserve-space to imitate the C client message
          style.  I really dislike it aesthetically, but it is handy for
          people running on 24 line screens or at slow baud rates.
          (Kimmo & others)

        * Support IRCNICK and IRCSERVER environment variables at load
          time.  (Kimmo)

        * Made /WHO call /WHOIS if given a non-numeric argument.  (Nate)

        * Fixed a bug where an alias would be executed before an exactly
          matching command; ie, alias /WHOALIAS whould execute when /WHO
          was entered.

        * Runs things in auto-fill-mode with a fill-column of 75 by default.

        * Processes the whole input region as one line instead of
          line-at-a-time.

        * Made irc-change-alias for non-interactive setting/removing of
          aliases; ie, via irc-mode-hook.  No frills.  (Chris & Nate)

        * _Finally_ got around to adding parsing of numeric notices for
          new servers.

Thu Aug 10 15:24:39 1989  Gnu Maint Acct    (gnu at life.pawl.rpi.edu)

        * A couple of more typos found.

          o Had a brain-damaged (list ...) in the * channel conversion
            in irc-execute-whois.  The Conspiracy is thought to be
            responsible.

          o Forgot an argument for string-match in irc-execute-unignore.

          o irc-send should have been irc-send in irc-execute-msg for a
            message to a channel the user is not on.

          o Wrong variable name (should have been "from" not "user") in
            the ignore message reply of irc-parse-private.  Noticed that
            it needed at least a meager test for infinite looping.

        * Geoff Goodfellow dislikes the blank line entered by some
          commands.  I agree in the case of a function that was typed
          (ie, "/who") but think it is very good for when the command
          gets called interactively.  Solution: the line will only be
          inserted if interactive.

Wed Aug  2 21:36:08 1989  David C Lawrence  (tale at imagine.pawl.rpi.edu)

        * ARGH!!  Typos.  Fixed one stupid missing backslash in a regexp
          in irc-execute-nick.  Had to transpose two arguments in
          irc-parse-wall.

        * Fixed a really stupid brain slip in irc-execute-confirm

        * Fixed a minor bug in splitting lines that have an implicit sendlist.

        * Fixed a strange bug in setting the point when *IRC* buffer was
          visible but not selected.

        * Cleaned up the command parsing section to better identify commands

        * Added some more status symbols to who lines.

        * Added aliasing for commands.

        * Added /names, /alias, /unalias and /stamp

        * Added operator status.  Suggested by scanner@itsgw.rpi.edu

        * Added time stamping for both messages and a general sentinel.

        * Changed how ':' works as the first character on a line.  It
          now expands to user who last sent you a private message.
          Suggested indirectly by Geoff Goodfellow
          <geoff@fernwood.mpk.ca.us>

        * Ignored users get a message to that effect when they send a PRIVMSG
          or INVITE to the client.

        * Changed what happens when a recipients name is not found.
          Rather than printing a warning message it will instead attempt
          to send it to exactly the name specified and add it to
          irc-wholist.  Bourne shell programmers will recognize this as
          resembling the way globbing is done.  Came up in conversation
          with Chris Davis <ckd@bass.bu.edu>.

        * M-x irc either returns to buffer if process is running or just
          reuses *IRC* (without erasing) if no irc-porcess by default.
          (Suggested by someone whose name escapes me.  Fred Douglis?)

        * Some general tidying of code, especially interactive calling.
          Might have broken some things with typos though.

        * Added more bindings, some more useful than others.  C-h m
          looks messy.

Thu Jun 22 23:55:01 1989  David C Lawrence  (tale at imagine.pawl.rpi.edu)

        * First public release.
