erc-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Erc-commit] [commit][emacs22] Merged from erc--main--0


From: mwolson
Subject: [Erc-commit] [commit][emacs22] Merged from erc--main--0
Date: Sun, 14 Oct 2007 00:48:55 -0400

commit c95cfefcc40d02593fb6a58b1afd72db784aa486
Author: Michael Olson <address@hidden>
Date:   Sun Apr 1 01:35:43 2007 +0000

    Merged from erc--main--0
    
    Patches applied:
    
     * address@hidden/erc--main--0--patch-116
       Docfixes
    
     * address@hidden/erc--main--0--patch-117
       Autoload erc-select; erc-auto-query => 'bury; freenode suffix.
    
     * address@hidden/erc--main--0--patch-118
       capab-identify: Added a prefix face.  Renamed two internal functions.
    
     * address@hidden/erc--main--0--patch-119
       Fixed a bug in the `erc-autoaway-idle-method' :set definition.
    
     * address@hidden/erc--main--0--patch-120
       manual: Work on FOR-RELEASE items
    
     * address@hidden/erc--main--0--patch-121
       erc-track: Assimilate two modules into one
    
     * address@hidden/erc--main--0--patch-122
       erc-track: Fix mentions of erc-track-when-inactive-mode
    
     * address@hidden/erc--main--0--patch-123
       erc-log: Add choice to have log files with network name
    
     * address@hidden/erc--main--0--patch-124
       erc-track: Make C-c C-SPC comply with Emacs devel rules
    
     * address@hidden/erc--main--0--patch-125
       erc-bbdb: Make it easier to cancel merging /whois info
    
     * address@hidden/erc--main--0--patch-126
       manual: Update sample session
    
     * address@hidden/erc--main--0--patch-127
       manual: Finish some FOR-RELEASE items and defer others to 5.3.
    
     * address@hidden/erc--main--0--patch-128
       NEWS: Update for the 5.2 release
    
     * address@hidden/erc--main--0--patch-129
       Make extras tarball
    
     * address@hidden/erc--main--0--patch-130
       NEWS: Mention renamed files
    
     * address@hidden/erc--main--0--patch-131
       erc-list: Update copyright notice
    
     * address@hidden/erc--main--0--patch-132
       Release ERC 5.2
    git-archimport-id: address@hidden/erc--rel--5.2--patch-13

diff --git a/ChangeLog b/ChangeLog
index ce56964..2ad7799 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,152 @@
+2007-04-01  Michael Olson  <address@hidden>
+
+       * erc.el (erc-version-string): Release ERC 5.2.
+
+       * erc-auto.in, erc-chess.el, erc-list.el, erc-speak.el:
+       * erc-viper.el: Update copyright notices.
+
+       * erc.texi: Make Emacs Lisp source code in this document
+       essentially public domain.  Update version to 5.2.
+       (Obtaining ERC): Mention extras tarball.
+       (Releases): Mention local GNU mirror.
+       (Sample Configuration): Remove notice.
+
+       * FOR-RELEASE (5.3): Add item for erc-nicklist.
+       Mark NEWS as done.  Mark extras tarball as done.
+
+       * Makefile (VERSION): Increment to 5.2.
+       (TESTING): Remove.
+       (EXTRAS): New variable containing the contents of our "Emacs 22
+       extras" tarball.
+       (SOURCE): Remove $(TESTING).
+       (MISC): Add COPYING and ChangeLog.2006.
+       (release): Use $(SNAPDIR) instead of erc-$(VERSION).
+       (extras): New rule which implements the building of the extras
+       tarball.
+       (upload-extras): New rule to upload the extras tarball.  It's
+       yucky to replicate upload, but oh well.
+
+       * NEWS: Mention extras tarball.  Note which files have been
+       renamed.  Note that erc-list is enabled by default, except in
+       Emacs 22.
+
+       * README.extras: New file which serves as a README for the extras
+       tarball.
+
+2007-03-31  Michael Olson  <address@hidden>
+
+       * NEWS: Update for the 5.2 release.
+
+       * FOR-RELEASE: Finish up 5.2 manual item.  Add documentation item
+       for 5.3.
+
+       * erc.texi (Sample Session): Flesh out.  Mention #erc.
+       (Modules): Defer to 5.3 release.
+       (Advanced Usage): Move Sample Configuration chapter ahead of
+       unfinished chapters.
+       (Sample Configuration): Write.
+       (Options): Mention how to see available ERC options.  Defer to 5.3
+       release.
+       (Tips and Tricks): Remove, since it seems better to just include
+       tips and tricks in the sample configuration, commented out.
+
+       * erc-bbdb.el (erc-bbdb-search-name-and-create): Make prompt more
+       informative about how to skip merging.
+       (erc-bbdb-insinuate-and-show-entry-1): Move contents of
+       erc-bbdb-insinuate-and-show-entry here.
+       (erc-bbdb-insinuate-and-show-entry): Run
+       erc-bbdb-insinuate-and-show-entry-1 "outside" of the calling
+       function, so that we can avoid triggering a process-filter error
+       if the user hits C-g.
+
+2007-03-30  Michael Olson  <address@hidden>
+
+       * FOR-RELEASE: Solve C-c C-SPC keybinding dilemma.
+
+       * erc-autoaway.el (erc-autoaway-idle-method): Use `if' rather than
+       `cond' and `set' rather than `set-default'.
+
+       * erc-log.el: Avoid compiler warning by requiring erc-network
+       during compilation.
+       (erc-generate-log-file-name-function): Add tag to each option.
+       Add erc-generate-log-file-name-network.
+       (erc-generate-log-file-name-network): New function which generates
+       a log file name that uses network name rather than server name,
+       when possible.
+
+       * erc-track.el (track): Assimilate track-when-inactive module,
+       since there's no need to have two modules in one file -- an option
+       will do.  Remove track-modified-channels alias.  Call
+       erc-track-minor-mode-maybe, and tear down the minor mode when
+       disabling.
+       (erc-track-when-inactive): New option which determines whether to
+       track visible buffers when inactive.  The default is not to do so.
+       (erc-track-visibility): Mention erc-track-when-inactive.
+       (erc-buffer-visible): Use erc-track-when-inactive.
+       (erc-track-enable-keybindings): New option which determines
+       whether to enable the global-level tracking keybindings.  The
+       default is to do so, unless they would override another binding,
+       in which case we prompt the user about it.
+       (erc-track-minor-mode-map): Move global keybindings here.
+       (erc-track-minor-mode): New minor mode which only enables the
+       keybindings and does nothing else.
+       (erc-track-minor-mode-maybe): New function which starts
+       erc-track-minor-mode, but only if it hasn't already been started,
+       an ERC buffer exists, and the user OK's it, depending on the value
+       of `erc-track-enable-keybindings'.
+       (erc-track-switch-buffer): Display a message if someone calls this
+       without first enabling erc-track-mode.
+
+2007-03-17  Michael Olson  <address@hidden>
+
+       * erc.texi (Development): Mention ErcDevelopment page on
+       emacswiki.
+       (Getting Started): Mention ~/.emacs.d/.ercrc.el and the Customize
+       interface.
+       (Sample Session): New section that has a very rough draft for a
+       sample ERC session.
+       (Special Features): New section that explains some of the special
+       features of ERC.  Taken from ErcFeatures on emacswiki, with
+       enhancements.
+
+2007-03-12  Diane Murray  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-idle-method): When setting the new
+       value, disable and re-enable `erc-autoaway-mode' only if it was
+       already enabled.  This fixes a bug where autoaway was enabled just
+       by loading the file.
+
+2007-03-10  Diane Murray  <address@hidden>
+
+       * erc-capab.el: Added more information to the Usage section.
+       (erc-capab-identify-prefix): Doc fix.
+       (erc-capab-identify-unidentified): New face.
+       (290): Removed.  Definition moved to erc-backend.el.
+       (erc-capab-identify-send-messages): Renamed from
+       `erc-capab-send-identify-messages'.
+       (erc-capab-identify-setup): Use it.
+       (erc-capab-identify-get-unidentified-nickname): Renamed from
+       `erc-capab-get-unidentified-nickname'.
+       (erc-capab-identify-add-prefix): Use it.  Use
+       `erc-capab-identify-unidentified' as the face.
+
+       * erc-backend.el (290): Moved here from erc-capab.el.
+
+       * erc.el (erc-select): Added an autoload cookie.
+       (erc-message-type-member, erc-restore-text-properties): Use
+       `erc-get-parsed-vector'.
+       (erc-auto-query): Set the default to 'bury since many new users
+       expect private messages from others to be in dedicated query
+       buffers, not the server buffer.
+       (erc-common-server-suffixes): Use "freenode" for freenode.net, not
+       "OPN".  Added oftc.net.
+
+       * NEWS: Added note about erc-auto-query's new default setting.
+
+2007-03-03  Michael Olson  <address@hidden>
+
+       * erc.el (erc-open, erc): Docfixes.
+
 2007-03-02  Michael Olson  <address@hidden>
 
        * FOR-RELEASE: Make section for 5.3 release and move erc-backend
diff --git a/FOR-RELEASE b/FOR-RELEASE
index 8d8c486..392d2e8 100644
--- a/FOR-RELEASE
+++ b/FOR-RELEASE
@@ -2,20 +2,25 @@ Tasks that need to be accomplished in order for a release to 
happen.
 
 * 5.3 release (future)
 
+** Documentation
+
+*** Finish items marked with "@c PRE5_3" in the documentation.
+
 ** Source
 
 *** Make erc-backend not need to (require) any other part of ERC.
 This will hopefully increase the chance that it will be useful for
 other IRC clients, like Circe.
 
+*** Make erc-nicklist into a proper ERC module.
+
 * 5.2 release
 
 ** Documentation
 
-*** Items with "@c PRE5_2" won't block the 5.1 release, but may block
-the release of 5.2.
+*** [DONE] Finish items marked with "@c PRE5_2" in the documentation.
 
-*** Update NEWS for changes since 5.1.4.
+*** [DONE] Update NEWS for changes since 5.1.4.
 
 ** Source
 
@@ -31,16 +36,25 @@ erc--main--0 branch.
 *** [DONE] Make M-x erc start a session.
 New users never think of using M-x erc-select.
 
-*** Change keybinding definitions for `erc-track-switch-buffer'.
+*** [DONE] Change keybinding definitions for `erc-track-switch-buffer'.
 `C-c C-SPC' / `C-c C-@' is set as a global keybinding and is known to
 conflict with rcirc, for example.  Would setting `erc-track-mode-map'
 work?  Otherwise we could encourage people to use something like
 `C-c e SPC' or `C-c c'.
 
-*** Make a tarball with the modules that weren't included with
+Solution: We went with a global minor mode which does nothing but set
+the global-level C-c C-SPC and C-c C-@ keybindings.  It defaults to
+warning the user if one of their keybindings would be overridden, so
+this solution should be OK to install in Emacs.
+
+*** [DONE] Make a tarball with the modules that weren't included with
 Emacs 22 that can be downloaded from GNU's ftp server.
 
-* 5.1 release
+This is now available as "erc-5.2-extras.(tar.gz|zip)" at
+ftp.gnu.org/gnu/erc/.  It may be built with "make extras" and uploaded
+with "make upload-extras".
+
+* 5.1 release (old)
 
 ** [DONE] Documentation
 
diff --git a/Makefile b/Makefile
index 449ff29..dbd9ab6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,19 +1,24 @@
-VERSION=5.1.4
+VERSION=5.2
 SNAPDIR=erc-$(VERSION)
-LASTUPLOAD = 5.1.3-2
+LASTUPLOAD = 5.1.4-4
 BUILDOPTS  =
 
 SPECIAL = erc-auto.el
-UNCOMPILED = erc-chess.el erc-bbdb.el erc-ibuffer.el erc-speak.el \
+UNCOMPILED = erc-bbdb.el erc-chess.el erc-ibuffer.el erc-speak.el \
                erc-speedbar.el erc-compat.el
-TESTING = erc-members.el erc-macs.el
+
+# Files to include in the extras pack for Emacs 22
+EXTRAS  = erc-bbdb.el erc-chess.el erc-list.el erc-speak.el \
+                README.extras COPYING
+
 ALLSOURCE = $(wildcard *.el)
-SOURCE = $(filter-out $(SPECIAL) $(UNCOMPILED) $(TESTING),$(ALLSOURCE))
+SOURCE = $(filter-out $(SPECIAL) $(UNCOMPILED), $(ALLSOURCE))
 TARGET = $(patsubst %.el,%.elc,$(SPECIAL) $(SOURCE))
 MANUAL  = erc
-MISC   = AUTHORS CREDITS HISTORY NEWS README Makefile ChangeLog \
-               ChangeLog.2005 ChangeLog.2004 ChangeLog.2003 ChangeLog.2002 \
-               ChangeLog.2001 servers.pl erc-auto.in erc.texi
+MISC   = AUTHORS COPYING CREDITS HISTORY NEWS README Makefile ChangeLog \
+               ChangeLog.2006 ChangeLog.2005 ChangeLog.2004 \
+               ChangeLog.2003 ChangeLog.2002 ChangeLog.2001 \
+               servers.pl erc-auto.in erc.texi
 
 EMACS       = emacs
 SITEFLAG    = --no-site-file
@@ -133,14 +138,21 @@ debrevision:
 
 release: autoloads distclean
        mkdir ../$(SNAPDIR) && chmod 0755 ../$(SNAPDIR)
-       cp $(SPECIAL) $(UNCOMPILED) $(SOURCE) $(MISC) ../erc-$(VERSION)
-       cp -r images ../erc-$(VERSION)
+       cp $(SPECIAL) $(UNCOMPILED) $(SOURCE) $(MISC) ../$(SNAPDIR)
+       cp -r images ../$(SNAPDIR)
        test -d ../$(SNAPDIR)/images/CVS && \
          rm -R ../$(SNAPDIR)/images/CVS || :
        test -d ../$(SNAPDIR)/images/.arch-ids && \
          rm -R ../$(SNAPDIR)/images/.arch-ids || :
-       (cd .. && tar czf erc-$(VERSION).tar.gz erc-$(VERSION)/*; \
-         zip -r erc-$(VERSION).zip erc-$(VERSION))
+       (cd .. && tar czf erc-$(VERSION).tar.gz $(SNAPDIR)/*; \
+         zip -r erc-$(VERSION).zip $(SNAPDIR))
+
+extras:
+       -rm -Rf ../$(SNAPDIR)-extras
+       mkdir ../$(SNAPDIR)-extras && chmod 0755 ../$(SNAPDIR)-extras
+       cp $(EXTRAS) ../$(SNAPDIR)-extras
+       (cd .. && tar czf erc-$(VERSION)-extras.tar.gz $(SNAPDIR)-extras/*; \
+         zip -r erc-$(VERSION)-extras.zip $(SNAPDIR)-extras)
 
 upload:
        (cd .. && gpg --detach erc-$(VERSION).tar.gz && \
@@ -156,3 +168,18 @@ upload:
          echo close >> upload.lftp ; \
          lftp -f upload.lftp ; \
          rm -f upload.lftp)
+
+upload-extras:
+       (cd .. && gpg --detach erc-$(VERSION)-extras.tar.gz && \
+         gpg --detach erc-$(VERSION)-extras.zip && \
+         echo "Directory: erc" | gpg --clearsign > \
+           erc-$(VERSION)-extras.tar.gz.directive.asc && \
+         cp erc-$(VERSION)-extras.tar.gz.directive.asc \
+           erc-$(VERSION)-extras.zip.directive.asc && \
+         echo open ftp://ftp-upload.gnu.org > upload.lftp ; \
+         echo cd /incoming/ftp >> upload.lftp ; \
+         echo mput erc-$(VERSION)-extras.zip* >> upload.lftp ; \
+         echo mput erc-$(VERSION)-extras.tar.gz* >> upload.lftp ; \
+         echo close >> upload.lftp ; \
+         lftp -f upload.lftp ; \
+         rm -f upload.lftp)
diff --git a/NEWS b/NEWS
index 6215c54..bce99d5 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
 ERC NEWS                                                       -*- outline -*-
 
-* Changes in ERC 5.2 (unreleased)
+* Changes in ERC 5.2
 
 ** M-x erc RET now starts ERC.
 `erc-select' has been changed to `erc'.  `erc-select' still remains as
@@ -8,39 +8,276 @@ an alias of `erc'. Likewise, `erc-select-ssl' has been 
renamed to
 `erc-ssl' with `erc-select-ssl' as its alias.  The function that was
 known as `erc' is now `erc-open'.
 
+** Open query buffers by default when private messages are received.
+The default value of `erc-auto-query' has been changed to 'bury.
+
 ** New command: /RECONNECT
 This command tries to reconnect to the current IRC server exactly
 once.  It does not work in server buffers (throws an error before the
 command is run), but works in query and channel buffers.
 
+** In MS-DOS environments, look for _ercrc.el rather than .ercrc.el.
+
+** Fix buggy interaction with multi-tty Emacs.
+
+** After running /QUIT, make sure that the IRC process is killed within
+4 seconds.  Freenode, in particular, needs this at times.
+
+** If the IRC process has not responded to our PINGs within a certain
+time, kill it and restart the connection.  See
+`erc-server-auto-reconnect', `erc-server-reconnect-attempts',
+`erc-server-reconnect-timeout', `erc-server-send-ping-interval', and
+`erc-server-send-ping-timeout' to fine-tune ERC's behavior.
+
+** Avoid getting into an infinite connection loop.
+Previously, this could happen if your nick was banned, you were using
+Tor, incorrect information was entered, or the connection was bad.
+
+** Make ban messages less confusing.
+
+** Restore the point correctly when reconnecting to an IRC server.
+
+** Make /IGNORE and /UNIGNORE prompt to determine whether their
+argument is a user or a regexp.  This results in less-confusing
+behavior when trying to ignore someone who has a bracket in their
+nick.
+
+** Make the default port "6667" rather than "ircd", because some
+operating systems don't know what port "ircd" maps to.
+
+** Fix several bugs in erc-iswitchb (C-c C-b).
+
+** Clean up internal documentation.
+Special thanks go to Juanma Barranquero for the thorough vetting of
+ERC's internal documentation.
+
+** Display a more informative message when a module is not found.
+
+** Fix a bug where paths were being colored like IRC commands.
+
+** In the customize interface for `erc-modules', add the name of the module.
+This makes it easier to find modules by name.
+
+** erc-server-send-ping-interval: Change to use a default of 30 seconds.
+
+** Some files which are included with the release of ERC 5.2 will not
+appear in the version of ERC that is bundled with Emacs 22.  These
+extras files may be found at:
+
+ o http://ftp.gnu.org/gnu/erc/erc-5.2-extras.tar.gz, or
+ o http://ftp.gnu.org/gnu/erc/erc-5.2-extras.zip.
+
+** Renamed files
+
+Several files were renamed so as to make them distinct to users of the
+MS-DOS operating system.
+
+ o erc-autojoin.el -> erc-join.el
+ o erc-complete.el -> erc-hecomplete.el
+ o erc-nickserv.el -> erc-services.el
+
+** Header line changes
+
+*** Remove "[IRC]" from the header line.
+
+*** Add the %l format character to `erc-header-line-format',
+
+*** Document how to remove the header line.
+Namely: (setq erc-header-line-format nil).
+
 ** New options
 
 *** erc-server-reconnect-attempts: Determines the number of
 reconnection attempts that ERC will make per server.
 
-*** erc-server-reconnect-timeout: New option that determines the
-amount of time, in seconds, that ERC will wait between successive
-reconnect attempts.
+*** erc-server-reconnect-timeout: Determines the amount of time,
+in seconds, that ERC will wait between successive reconnect attempts.
+
+*** erc-server-send-ping-timeout: Determines when to consider a connection
+stalled and restart it.  The default is        after 120 seconds.
+
+*** erc-system-name: Determines the system name to use when logging in.
+The default is to figure this out by calling `system-name'.
 
 ** New face: `erc-my-nick-face'
 This helps make it easier to distinguish messages sent by yourself
 from messages sent by other users when the value of the variable
 `erc-show-my-nick' is non-nil.
 
+** Namespace changes
+
+*** New macro: `erc-with-server-buffer'
+Switches to the current ERC server buffer and runs some code.  If no
+server buffer is available, return nil.  This is a useful way to
+access variables in the server buffer.
+
+*** New function: `erc-open-server-buffer-p'
+Returns non-nil if the given buffer is an ERC server buffer that has
+an open IRC process.
+
+*** New function: `erc-format-lag-time'
+Returns the estimated lag time to server, `erc-server-lag'.
+
+*** Renamed items
+
+ o `erc-server-setup-periodical-server-ping' is now
+   `erc-server-setup-periodical-ping'
+
+ o `erc-away-p' is now `erc-away-time'
+
+** Changes to the ERC manual
+
+*** New section: Sample Session.
+Describes a sample ERC session for connecting to the #emacs channel on
+Freenode.  Also mention the #erc channel.
+
+*** New section: Special Features.
+Describes some of the special features of ERC.
+
+*** Getting Started: Mention ~/.emacs.d/.ercrc.el and the Customize
+interface.
+
+*** Development: Mention ErcDevelopment page on emacswiki.org.
+
+*** Tips and Tricks: Remove empty section for now.
+
+*** Options: Mention how to see available ERC options.
+
+*** Sample Configuration: Add an example of how to configure ERC.
+
 ** New modules
 
+*** Autoaway (erc-autoaway.el)
+
+**** Make this much more reliable.
+
+**** Avoid duplicate messages when coming back from being away.
+
+**** Fix bug where autoaway was enabled just by loading the file.
+
+*** BBDB (erc-bbdb.el)
+
+**** Display information on how to cancel merging of info or how to
+create a new John Doe record.
+
+**** Make it so that information from /whois continues to come in, even
+while prompting for a record to merge.
+
+**** Make hitting C-g correctly abort merging the record.
+
 *** Capab identify (erc-capab.el)
 Mark users who haven't identified to NickServ on servers supporting
 CAPAB IDENTIFY-MSG.
 
 ** Changes and additions to modules
 
+*** Button (erc-button.el)
+
+**** Make <backtab> go to the previous button.
+
 *** Channel tracking (erc-track.el)
 
 **** Use mouse-face and help-echo for channel names in the mode-line.
 This helps people using a mouse know that they are buttons and can be
 clicked on.
 
+**** Fix issue where C-c C-SPC could conflict with user-defined keybindings.
+This is accomplished by moving these bindings to their own global
+minor mode.  Now the default is to check whether the user has bound
+something to C-c C-SPC or C-c address@hidden  If they have, prompt them about
+whether to really override that binding.  This also has the effect of
+preventing ERC from clobbering rcirc's keybinding, unless this is
+desired.  See `erc-track-enable-keybindings' for more details.
+
+**** New option: erc-track-enable-keybindings.
+Determine whether or not to enable the C-c C-SPC and C-c C-@
+keybindings.  The default is to ask whether to do this if a binding to
+these keys already exists.  It can also be set to t or nil to always
+bind or never bind, respectively.
+
+**** Remove `track-when-inactive' module.
+See `erc-track-when-inactive' for further details.
+
+**** New option: erc-track-when-inactive.
+This option replaces the track-when-inactive module.  Set it to
+non-nil to track activity even in visible buffers when inactive.  The
+default is nil.
+
+**** Remove the `track-modified-channels' alias for the `track' module.
+
+*** DCC support (erc-dcc.el)
+
+**** Add Usage section to Commentary.
+
+**** Fix a bug in the server message output.
+
+*** Filling (erc-fill.el)
+
+**** Fix bug involving messages that start with one or more blank lines.
+
+*** Identd (erc-identd.el)
+
+**** New option `erc-identd-port'
+Specifies the port to use if none is given as an argument to
+`erc-identd-start'.  This is placed in the new customization group
+`erc-identd'.
+
+**** New function: `erc-identd-quickstart'
+Ignores any arguments and calls `erc-identd-start'.
+
+*** Channel lists (erc-list.el)
+
+**** Enable by default, except in the version of ERC bundled with Emacs 22.
+
+*** Logging (erc-log.el)
+
+**** Make sure filenames are safe to use before writing to them.
+
+**** Save all log buffers when exiting Emacs.
+
+**** erc-generate-log-file-name-function: Add option for
+`erc-generate-log-file-name-network', which is a new function that
+uses the network name rather than the server name when possible.
+
+*** Menu (erc-menu.el)
+
+**** Name the menu "ERC" instead of "IRC" to avoid confusion with rcirc
+and other clients.
+
+**** Make this into a proper module and load it by default.
+
+**** Add "Current channel" submenu.
+
+*** Networks (erc-networks.el)
+
+**** Add support for Ars OpenIRC, LinuxChix, and OFTC networks.
+
+**** Escape periods in Konfido.Net and Kewl.Org.
+
+*** Internet services / Nickserv (erc-nickserv.el)
+
+**** Add new 'both method for the `erc-nickserv-identify-mode' option
+and make it the default.  This tries to do the right thing both when a
+known nickserv message exists for an IRC network, and when it does
+not.
+
+**** Support nickserv authentication on OFTC, Azzurra, Ars, and QuakeNet.
+
+**** Support authentication on BitlBee.
+
+**** Make source code easier to understand by using accessor functions.
+
+*** Sound support (erc-sound.el)
+
+**** Make this work with both Emacs 21 and Emacs 22.
+
+*** Timestamps (erc-stamp.el)
+
+**** Exclude the newline from the erc-timestamp field.
+
+**** New function: `erc-toggle-timestamps'.
+Toggles display of timestamps.
+
 * Changes in ERC 5.1.4
 
 ** Make find-function and find-variable work in Emacs 22 for
diff --git a/README.extras b/README.extras
new file mode 100644
index 0000000..a610e46
--- /dev/null
+++ b/README.extras
@@ -0,0 +1,31 @@
+
+This is the README file for the ERC extras.
+
+ERC is a powerful, modular, and extensible IRC client for Emacs.
+
+About
+-----
+
+The files included here are those which could not be distributed with
+the version of ERC that comes with Emacs 22.  The reasons might include:
+
+ - No copyright disclaimer was completed for an author of the file.
+ - Depends on files which are not distibuted with Emacs.
+
+Installation
+------------
+
+There are several ways to tell Emacs where to find these files.  The
+easiest may perhaps be to copy them to "~/elisp/erc-extras", and then
+to add the line
+
+  (add-to-list 'load-path "~/elisp/erc-extras" t)
+
+to your ~/.emacs (or ~/.emacs/init.el) file.  Compiling them would be
+overkill.
+
+License information
+-------------------
+
+These extras for ERC are available under the terms of the GNU General
+Public License.  See the file `COPYING' for details.
diff --git a/erc-auto.in b/erc-auto.in
index adf4909..8ba706b 100644
--- a/erc-auto.in
+++ b/erc-auto.in
@@ -1,6 +1,6 @@
 ;;; -*-emacs-lisp-*-
 
-;; Copyright (C) 2002 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2007 Free Software Foundation, Inc.
 
 (defvar generated-autoload-file)
 (defvar command-line-args-left)
diff --git a/erc-autoaway.el b/erc-autoaway.el
index 22636a9..91a1150 100644
--- a/erc-autoaway.el
+++ b/erc-autoaway.el
@@ -154,9 +154,12 @@ definitions of being idle."
                 (const :tag "Emacs idle time" emacs)
                 (const :tag "Last IRC action" irc))
   :set (lambda (sym val)
-        (erc-autoaway-disable)
-        (set-default sym val)
-        (erc-autoaway-enable)))
+        (if erc-autoaway-mode
+            (progn
+              (erc-autoaway-disable)
+              (set sym val)
+              (erc-autoaway-enable))
+          (set sym val))))
 
 (defcustom erc-auto-set-away t
   "*If non-nil, set away after `erc-autoaway-idle-seconds' seconds of idling.
diff --git a/erc-backend.el b/erc-backend.el
index e2b7914..08cb738 100644
--- a/erc-backend.el
+++ b/erc-backend.el
@@ -1513,6 +1513,9 @@ A server may send more than one 005 message."
 See `erc-display-server-message'." nil
   (erc-display-server-message proc parsed))
 
+(define-erc-response-handler (290)
+  "Handle dancer-ircd CAPAB messages." nil nil)
+
 (define-erc-response-handler (301)
   "AWAY notice." nil
   (erc-display-message parsed 'notice 'active 's301
diff --git a/erc-bbdb.el b/erc-bbdb.el
index dd8f8b5..fd5535b 100644
--- a/erc-bbdb.el
+++ b/erc-bbdb.el
@@ -130,7 +130,7 @@ their \"displayed name\"."
                     (bbdb-search (bbdb-records) nil nil nil finger)
                     (unless silent
                       (bbdb-completing-read-one-record
-                       "Merge using record of: "))
+                       "Merge using record of (C-g to skip, RET for new): "))
                     (when create-p
                       (bbdb-create-internal (or name
                                                 "John Doe")
@@ -152,7 +152,7 @@ their \"displayed name\"."
                                                           'visible))))))
       (bbdb-display-records (list record)))))
 
-(defun erc-bbdb-insinuate-and-show-entry (create-p proc nick name finger-host 
silent &optional chan new-nick)
+(defun erc-bbdb-insinuate-and-show-entry-1 (create-p proc nick name 
finger-host silent &optional chan new-nick)
   (let ((record (erc-bbdb-search-name-and-create
                 create-p nil nick finger-host silent))) ;; don't search for a 
name
     (when record
@@ -166,6 +166,13 @@ their \"displayed name\"."
       (erc-bbdb-highlight-record record)
       (erc-bbdb-show-entry record chan proc))))
 
+(defun erc-bbdb-insinuate-and-show-entry (create-p proc nick name finger-host 
silent &optional chan new-nick)
+  ;; run this outside of the IRC filter process, to avoid an annoying
+  ;; error when the user hits C-g
+  (run-at-time nil nil
+              #'erc-bbdb-insinuate-and-show-entry-1
+              create-p proc nick name finger-host silent chan new-nick))
+
 (defun erc-bbdb-whois (proc parsed)
   (let (; We could use server name too, probably
        (nick (second (erc-response.command-args parsed)))
diff --git a/erc-capab.el b/erc-capab.el
index 268c4bf..b7ccade 100644
--- a/erc-capab.el
+++ b/erc-capab.el
@@ -56,8 +56,10 @@
 ;; (erc-capab-identify-mode 1)
 
 ;; `erc-capab-identify-prefix' will now be added to the beginning of
-;; unidentified users' nicknames.  The default is an asterisk, "*".  If
-;; the value of this variable is nil or you disable this module (see
+;; unidentified users' nicknames.  The default is an asterisk, "*".
+;; You can customize the prefix and the face used to display it,
+;; `erc-capab-identify-unidentified'.  If the value of
+;; `erc-capab-identify-prefix' is nil or you disable this module (see
 ;; `erc-capab-identify-disable'), no prefix will be inserted, but the
 ;; flag sent by the server will still be stripped.
 
@@ -73,14 +75,19 @@
   :group 'erc)
 
 (defcustom erc-capab-identify-prefix "*"
-  "The prefix used for unidentified users."
+  "The prefix used for unidentified users.
+
+If you change this from the default \"*\", be sure to use a
+character not found in IRC nicknames to avoid confusion."
   :group 'erc-capab
   :type '(choice string (const nil)))
 
-;;; Define module:
+(defface erc-capab-identify-unidentified '((t)) ; same as `erc-default-face'
+  "Face to use for `erc-capab-identify-prefix'."
+  :group 'erc-capab
+  :group 'erc-faces)
 
-(define-erc-response-handler (290)
-  "Handle dancer-ircd CAPAB messages." nil nil)
+;;; Define module:
 
 ;;;###autoload (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 (define-erc-module capab-identify nil
@@ -124,9 +131,9 @@ Optional argument PARSED is the current message, a response 
struct.
 These arguments are sent to this function when called as a hook in
 `erc-server-005-functions'."
   (unless erc-capab-identify-sent
-    (erc-capab-send-identify-messages)))
+    (erc-capab-identify-send-messages)))
 
-(defun erc-capab-send-identify-messages ()
+(defun erc-capab-identify-send-messages ()
   "Send CAPAB IDENTIFY messages if the server supports it."
   (when (and (stringp erc-server-version)
              (string-match "^\\(dancer-ircd\\|hyperion\\)" erc-server-version)
@@ -175,7 +182,7 @@ PARSED is an `erc-parsed' response struct."
   (when (and erc-capab-identify-prefix
              (erc-with-server-buffer erc-capab-identify-activated))
     (goto-char (or (erc-find-parsed-property) (point-min)))
-    (let ((nickname (erc-capab-get-unidentified-nickname
+    (let ((nickname (erc-capab-identify-get-unidentified-nickname
                      (erc-get-parsed-vector (point)))))
       (when (and nickname
                  (goto-char (point-min))
@@ -183,10 +190,9 @@ PARSED is an `erc-parsed' response struct."
                  (re-search-forward (regexp-quote nickname) nil t))
         (goto-char (match-beginning 0))
         (insert (erc-propertize erc-capab-identify-prefix
-                                'face (get-char-property (- (point) 1)
-                                                         'face)))))))
+                                'face 'erc-capab-identify-unidentified))))))
 
-(defun erc-capab-get-unidentified-nickname (parsed)
+(defun erc-capab-identify-get-unidentified-nickname (parsed)
   "Return the nickname of the user if unidentified.
 PARSED is an `erc-parsed' response struct."
   (when (and (erc-response-p parsed)
diff --git a/erc-chess.el b/erc-chess.el
index fc61bdc..876b55e 100644
--- a/erc-chess.el
+++ b/erc-chess.el
@@ -1,6 +1,6 @@
 ;;; erc-chess.el --- CTCP chess playing support for ERC
 
-;; Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2004, 2007 Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <address@hidden>
 ;; Keywords: games, comm
diff --git a/erc-list.el b/erc-list.el
index a574d6e..5f1ed05 100644
--- a/erc-list.el
+++ b/erc-list.el
@@ -1,6 +1,7 @@
 ;;; erc-list.el --- Provide a faster channel listing mechanism
 
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
+;;   2007 Free Software Foundation, Inc.
 ;; Copyright (C) 2004 Brian Palmer
 
 ;; Author: Mario Lang <address@hidden>
diff --git a/erc-log.el b/erc-log.el
index 053bb37..9801192 100644
--- a/erc-log.el
+++ b/erc-log.el
@@ -85,7 +85,9 @@
 ;;; Code:
 
 (require 'erc)
-(eval-when-compile (require 'cl))
+(eval-when-compile
+  (require 'erc-networks)
+  (require 'cl))
 
 (defgroup erc-log nil
   "Logging facilities for ERC."
@@ -100,10 +102,12 @@ NICK is the current nick,
 SERVER and PORT are the parameters used to connect BUFFERs
 `erc-server-process'."
   :group 'erc-log
-  :type '(choice (const erc-generate-log-file-name-long)
-                (const erc-generate-log-file-name-short)
-                (const erc-generate-log-file-name-with-date)
-                (symbol)))
+  :type '(choice (const :tag "Long style" erc-generate-log-file-name-long)
+                (const :tag "Long, but with network name rather than server"
+                       erc-generate-log-file-name-network)
+                (const :tag "Short" erc-generate-log-file-name-short)
+                (const :tag "With date" erc-generate-log-file-name-with-date)
+                (symbol :tag "Other function")))
 
 (defcustom erc-truncate-buffer-on-save nil
   "Truncate any ERC (channel, query, server) buffer when it is saved."
@@ -347,6 +351,19 @@ This function is a possible value for 
`erc-generate-log-file-name-function'."
     ;; we need a make-safe-file-name function.
     (convert-standard-filename file)))
 
+(defun erc-generate-log-file-name-network (buffer target nick server port)
+  "Generates a log-file name using the network name rather than server name.
+This results in a file name of the form address@hidden
+This function is a possible value for `erc-generate-log-file-name-function'."
+  (require 'erc-networks)
+  (let ((file (concat
+              (if target (concat target "!"))
+              nick "@"
+              (or (with-current-buffer buffer (erc-network-name)) server)
+              ".txt")))
+    ;; we need a make-safe-file-name function.
+    (convert-standard-filename file)))
+
 ;;;###autoload
 (defun erc-save-buffer-in-logs (&optional buffer)
   "Append BUFFER contents to the log file, if logging is enabled.
diff --git a/erc-speak.el b/erc-speak.el
index 8080a52..306580b 100644
--- a/erc-speak.el
+++ b/erc-speak.el
@@ -1,6 +1,6 @@
 ;;; erc-speak.el --- Speech-enable the ERC chat client
 
-;; Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright 2001, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
 
 ;; This file is part of GNU Emacs.
 
diff --git a/erc-track.el b/erc-track.el
index 188e8ee..4a8b673 100644
--- a/erc-track.el
+++ b/erc-track.el
@@ -47,12 +47,33 @@
   "Track active buffers and show activity in the modeline."
   :group 'erc)
 
+(defcustom erc-track-enable-keybindings 'ask
+  "Whether to enable the ERC track keybindings, namely:
+`C-c C-SPC' and `C-c C-@', which both do the same thing.
+
+The default is to check to see whether these keys are used
+already: if not, then enable the ERC track minor mode, which
+provides these keys.  Otherwise, do not touch the keys.
+
+This can alternatively be set to either t or nil, which indicate
+respectively always to enable ERC track minor mode or never to
+enable ERC track minor mode.
+
+The reason for using this default value is to both (1) adhere to
+the Emacs development guidelines which say not to touch keys of
+the form C-c C-<something> and also (2) to meet the expectations
+of long-time ERC users, many of whom rely on these keybindings."
+  :group 'erc-track
+  :type '(choice (const :tag "Ask, if used already" ask)
+                (const :tag "Enable" t)
+                (const :tag "Disable" nil)))
+
 (defcustom erc-track-visibility t
   "Where do we look for buffers to determine their visibility?
 The value of this variable determines, when a buffer is considered
 visible or invisible.  New messages in invisible buffers are tracked,
 while switching to visible buffers when they are tracked removes them
-from the list.  See also `erc-track-when-inactive-mode'.
+from the list.  See also `erc-track-when-inactive'.
 
 Possible values are:
 
@@ -489,45 +510,124 @@ START is the minimum length of the name used."
         (equal (erc-unique-substrings '("abc" "abcdefg"))
                '("abc" "abcd"))))))
 
+;;; Minor mode
+
+;; Play nice with other IRC clients (and Emacs development rules) by
+;; making this a minor mode
+
+(defvar erc-track-minor-mode-map (make-sparse-keymap)
+  "Keymap for rcirc track minor mode.")
+
+(define-key erc-track-minor-mode-map (kbd "C-c C-@") 'erc-track-switch-buffer)
+(define-key erc-track-minor-mode-map (kbd "C-c C-SPC")
+  'erc-track-switch-buffer)
+
+;;;###autoload
+(define-minor-mode erc-track-minor-mode
+  "Global minor mode for tracking ERC buffers and showing activity in the
+mode line.
+
+This exists for the sole purpose of providing the C-c C-SPC and
+C-c C-@ keybindings.  Make sure that you have enabled the track
+module, otherwise the keybindings will not do anything useful."
+  :init-value nil
+  :lighter ""
+  :keymap erc-track-minor-mode-map
+  :global t
+  :group 'erc-track)
+
+(defun erc-track-minor-mode-maybe ()
+  "Enable `erc-track-minor-mode', depending on `erc-track-enable-keybindings'."
+  (unless (or erc-track-minor-mode
+             ;; don't start the minor mode until we have an ERC
+             ;; process running, because we don't want to prompt the
+             ;; user while starting Emacs
+             (null (erc-buffer-list)))
+    (cond ((eq erc-track-enable-keybindings 'ask)
+          (let ((key (or (and (key-binding (kbd "C-c C-SPC")) "C-SPC")
+                         (and (key-binding (kbd "C-c C-@")) "C-@"))))
+            (if key
+                (if (y-or-n-p
+                     (concat "The C-c " key " binding is in use;"
+                             " override it for tracking? "))
+                    (progn
+                      (message (concat "Will change it; set"
+                                       " `erc-track-enable-keybindings'"
+                                       " to disable this message"))
+                      (sleep-for 3)
+                      (erc-track-minor-mode 1))
+                  (message (concat "Not changing it; set"
+                                   " `erc-track-enable-keybindings'"
+                                   " to disable this message"))
+                  (sleep-for 3))
+              (erc-track-minor-mode 1))))
+         ((eq erc-track-enable-keybindings t)
+          (erc-track-minor-mode 1))
+         (t nil))))
+
 ;;; Module
 
 ;;;###autoload (autoload 'erc-track-mode "erc-track" nil t)
-(define-erc-module track track-modified-channels
+(define-erc-module track nil
   "This mode tracks ERC channel buffers with activity."
-  ((erc-track-add-to-mode-line erc-track-position-in-mode-line)
-   (setq erc-modified-channels-object (erc-modified-channels-object nil))
-   (erc-update-mode-line)
-   (if (featurep 'xemacs)
-       (defadvice switch-to-buffer (after erc-update (&rest args) activate)
-        (erc-modified-channels-update))
-     (add-hook 'window-configuration-change-hook 
'erc-modified-channels-update))
-   (add-hook 'erc-insert-post-hook 'erc-track-modified-channels)
-   (add-hook 'erc-disconnected-hook 'erc-modified-channels-update))
-  ((erc-track-remove-from-mode-line)
-   (if (featurep 'xemacs)
-       (ad-disable-advice 'switch-to-buffer 'after 'erc-update)
-     (remove-hook 'window-configuration-change-hook
-                 'erc-modified-channels-update))
-   (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update)
-   (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels)))
-
-;;;###autoload (autoload 'erc-track-when-inactive-mode "erc-track" nil t)
-(define-erc-module track-when-inactive nil
-  "This mode enables channel tracking even for visible buffers,
-if you are inactivity."
-  ((if (featurep 'xemacs)
-       (defadvice switch-to-buffer (after erc-update-when-inactive (&rest 
args) activate)
-        (erc-user-is-active))
-     (add-hook 'window-configuration-change-hook 'erc-user-is-active))
-   (add-hook 'erc-send-completed-hook 'erc-user-is-active)
-   (add-hook 'erc-server-001-functions 'erc-user-is-active))
-  ((erc-track-remove-from-mode-line)
-   (if (featurep 'xemacs)
-       (ad-disable-advice 'switch-to-buffer 'after 'erc-update-when-inactive)
-     (remove-hook 'window-configuration-change-hook 'erc-user-is-active))
-   (remove-hook 'erc-send-completed-hook 'erc-user-is-active)
-   (remove-hook 'erc-server-001-functions 'erc-user-is-active)
-   (remove-hook 'erc-timer-hook 'erc-user-is-active)))
+  ;; Enable:
+  ((when (boundp 'erc-track-when-inactive)
+     (if erc-track-when-inactive
+        (progn
+          (if (featurep 'xemacs)
+              (defadvice switch-to-buffer (after erc-update-when-inactive
+                                                 (&rest args) activate)
+                (erc-user-is-active))
+            (add-hook 'window-configuration-change-hook 'erc-user-is-active))
+          (add-hook 'erc-send-completed-hook 'erc-user-is-active)
+          (add-hook 'erc-server-001-functions 'erc-user-is-active))
+       (erc-track-add-to-mode-line erc-track-position-in-mode-line)
+       (setq erc-modified-channels-object (erc-modified-channels-object nil))
+       (erc-update-mode-line)
+       (if (featurep 'xemacs)
+          (defadvice switch-to-buffer (after erc-update (&rest args) activate)
+            (erc-modified-channels-update))
+        (add-hook 'window-configuration-change-hook
+                  'erc-modified-channels-update))
+       (add-hook 'erc-insert-post-hook 'erc-track-modified-channels)
+       (add-hook 'erc-disconnected-hook 'erc-modified-channels-update))
+     ;; enable the tracking keybindings
+     (erc-track-minor-mode-maybe)))
+  ;; Disable:
+  ((when (boundp 'erc-track-when-inactive)
+     (erc-track-remove-from-mode-line)
+     (if erc-track-when-inactive
+        (progn
+          (if (featurep 'xemacs)
+              (ad-disable-advice 'switch-to-buffer 'after
+                                 'erc-update-when-inactive)
+            (remove-hook 'window-configuration-change-hook
+                         'erc-user-is-active))
+          (remove-hook 'erc-send-completed-hook 'erc-user-is-active)
+          (remove-hook 'erc-server-001-functions 'erc-user-is-active)
+          (remove-hook 'erc-timer-hook 'erc-user-is-active))
+       (if (featurep 'xemacs)
+          (ad-disable-advice 'switch-to-buffer 'after 'erc-update)
+        (remove-hook 'window-configuration-change-hook
+                     'erc-modified-channels-update))
+       (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update)
+       (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels))
+     ;; disable the tracking keybindings
+     (when erc-track-minor-mode
+       (erc-track-minor-mode -1)))))
+
+(defcustom erc-track-when-inactive nil
+  "Enable channel tracking even for visible buffers, if you are
+inactive."
+  :group 'erc-track
+  :type 'boolean
+  :set (lambda (sym val)
+        (if erc-track-mode
+            (progn
+              (erc-track-disable)
+              (set sym val)
+              (erc-track-enable))
+          (set sym val))))
 
 ;;; Visibility
 
@@ -546,7 +646,7 @@ only consider active buffers visible.")
 
 (defun erc-buffer-visible (buffer)
   "Return non-nil when the buffer is visible."
-  (if erc-track-when-inactive-mode
+  (if erc-track-when-inactive
       (when erc-buffer-activity; could be nil
        (and (get-buffer-window buffer erc-track-visibility)
             (<= (erc-time-diff erc-buffer-activity (erc-current-time))
@@ -816,7 +916,9 @@ relative to `erc-track-switch-direction'"
 switch back to the last non-ERC buffer visited.  Next is defined by
 `erc-track-switch-direction', a negative argument will reverse this."
   (interactive "p")
-  (when erc-track-mode
+  (if (not erc-track-mode)
+      (message (concat "Enable the ERC track module if you want to use the"
+                      " tracking minor mode"))
     (cond (erc-modified-channels-alist
           ;; if we're not in erc-mode, set this buffer to return to
           (unless (eq major-mode 'erc-mode)
@@ -829,12 +931,6 @@ switch back to the last non-ERC buffer visited.  Next is 
defined by
                (buffer-live-p erc-track-last-non-erc-buffer))
           (switch-to-buffer erc-track-last-non-erc-buffer)))))
 
-;; These bindings are global, because they pop us from any other
-;; buffer to an active ERC buffer!
-
-(global-set-key (kbd "C-c C-@") 'erc-track-switch-buffer)
-(global-set-key (kbd "C-c C-SPC") 'erc-track-switch-buffer)
-
 (provide 'erc-track)
 
 ;;; erc-track.el ends here
diff --git a/erc-viper.el b/erc-viper.el
index 4318bbe..da83f44 100644
--- a/erc-viper.el
+++ b/erc-viper.el
@@ -1,6 +1,6 @@
 ;;; erc-viper.el --- Viper compatibility hacks for ERC
 
-;; Copyright (C) 2005 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2007 Free Software Foundation, Inc.
 
 ;; Author: Edward O'Connor <address@hidden>
 ;; Keywords: emulation
diff --git a/erc.el b/erc.el
index 2d07a6d..83b23b4 100644
--- a/erc.el
+++ b/erc.el
@@ -66,7 +66,7 @@
 
 ;;; Code:
 
-(defconst erc-version-string "Version 5.2 (pre-release)"
+(defconst erc-version-string "Version 5.2"
   "ERC version.  This is used by function `erc-version'.")
 
 (eval-when-compile (require 'cl))
@@ -1905,9 +1905,7 @@ removed from the list will be disabled."
 
 (defun erc-open (&optional server port nick full-name
                           connect passwd tgt-list channel process)
-  "ERC is a powerful, modular, and extensible IRC client.
-
-Connect to SERVER on PORT as NICK with FULL-NAME.
+  "Connect to SERVER on PORT as NICK with FULL-NAME.
 
 If CONNECT is non-nil, connect to the server.  Otherwise assume
 already connected and just create a separate buffer for the new
@@ -2121,8 +2119,12 @@ functions in here get called with the parameters SERVER 
and NICK."
                  (nick   (erc-compute-nick))
                  password
                  (full-name (erc-compute-full-name)))
-  "Select connection parameters and run ERC.
-Non-interactively, it takes keyword arguments
+  "ERC is a powerful, modular, and extensible IRC client.
+This function is the main entry point for ERC.
+
+It permits you to select connection parameters, and then starts ERC.
+
+Non-interactively, it takes the keyword arguments
    (server (erc-compute-server))
    (port   (erc-compute-port))
    (nick   (erc-compute-nick))
@@ -2133,12 +2135,13 @@ That is, if called with
 
    (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
 
-server and full-name will be set to those values, whereas
+then the server and full-name will be set to those values, whereas
 `erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
 be invoked for the values of the other parameters."
   (interactive (erc-select-read-args))
   (erc-open server port nick full-name t password))
 
+;;;###autoload
 (defalias 'erc-select 'erc)
 
 (defun erc-ssl (&rest r)
@@ -2428,7 +2431,7 @@ See also `erc-format-message' and `erc-display-line'."
 
 This function relies on the erc-parsed text-property being
 present."
-  (let ((prop-val (get-text-property position 'erc-parsed)))
+  (let ((prop-val (erc-get-parsed-vector position)))
     (and prop-val (member (erc-response.command prop-val) list))))
 
 (defvar erc-send-input-line-function 'erc-send-input-line)
@@ -3751,7 +3754,7 @@ To change how this query window is displayed, use `let' 
to bind
     (erc-update-mode-line)
     buf))
 
-(defcustom erc-auto-query nil
+(defcustom erc-auto-query 'bury
   "If non-nil, create a query buffer each time you receive a private message.
 
 If the buffer doesn't already exist it is created.  This can be
@@ -5760,7 +5763,8 @@ Otherwise, use the `erc-header-line' face."
 
 (defcustom erc-common-server-suffixes
   '(("openprojects.net$" . "OPN")
-    ("freenode.net$" . "OPN"))
+    ("freenode.net$" . "freenode")
+    ("oftc.net$" . "OFTC"))
   "Alist of common server name suffixes.
 This variable is used in mode-line display to save screen
 real estate.  Set it to nil if you want to avoid changing
@@ -6260,8 +6264,7 @@ This function should be on `erc-kill-channel-hook'."
   (let ((parsed-posn (erc-find-parsed-property)))
     (put-text-property
      (point-min) (point-max)
-     'erc-parsed (when parsed-posn
-                   (get-text-property parsed-posn 'erc-parsed)))))
+     'erc-parsed (when parsed-posn (erc-get-parsed-vector parsed-posn)))))
 
 (defun erc-get-parsed-vector (point)
   "Return the whole parsed vector on POINT."
diff --git a/erc.texi b/erc.texi
index e99cbc8..9a03e07 100644
--- a/erc.texi
+++ b/erc.texi
@@ -12,7 +12,7 @@
 @syncodeindex fn cp
 
 @copying
-This manual is for ERC version 5.2 (pre-release).
+This manual is for ERC version 5.2.
 
 Copyright @copyright{} 2005, 2006, 2007 Free Software Foundation, Inc.
 
@@ -21,6 +21,9 @@ Permission is granted to copy, distribute and/or modify this 
document
 under the terms of the GNU Free Documentation License, Version 1.2 or
 any later version published by the Free Software Foundation; with no
 Invariant Sections, Front-Cover texts, or Back-Cover Texts.
+
+All Emacs Lisp code contained in this document may be used, distributed,
+and modified without restriction.
 @end quotation
 @end copying
 
@@ -73,12 +76,16 @@ Obtaining ERC
 * Releases::                    Released versions of ERC.
 * Development::                 Latest unreleased development changes.
 
+Getting Started
+
+* Sample Session::              Example of connecting to the #emacs channel
+* Special Features::            Differences from standalone IRC clients
+
 Advanced Usage
 
 * Connecting::                  Ways of connecting to an IRC server.
-* Options::                     Options that are available for ERC.
-* Tips and Tricks::             Ways of enhancing your ERC experience.
 * Sample Configuration::        An example configuration file.
+* Options::                     Options that are available for ERC.
 
 @end detailmenu
 @end menu
@@ -116,8 +123,17 @@ It comes with the following capabilities enabled by 
default.
 * Development::                 Latest unreleased development changes.
 @end menu
 
-These sections may be skipped if you are using the version of ERC that
-comes with Emacs.
+Note that some ERC files are not included with Emacs due to copyright or
+dependency issues.  If desired, they may be found at the following
+locations, or from your local GNU mirror.
+
address@hidden @bullet
address@hidden @uref{http://ftp.gnu.org/gnu/erc/erc-5.2-extras.tar.gz}
address@hidden @uref{http://ftp.gnu.org/gnu/erc/erc-5.2-extras.zip}
address@hidden itemize
+
+The rest of this chapter may be skipped if you are using the version of
+ERC that comes with Emacs.
 
 @node Releases, Development, Obtaining ERC, Obtaining ERC
 @comment  node-name,  next,  previous,  up
@@ -136,7 +152,7 @@ available in the official Debian repository.
 
 @cindex releases, from source
 Alternatively, you can download the latest release from
address@hidden://ftp.gnu.org/gnu/erc}.
address@hidden://ftp.gnu.org/gnu/erc}, or your local GNU mirror.
 
 @node Development,  , Releases, Obtaining ERC
 @comment  node-name,  next,  previous,  up
@@ -193,9 +209,9 @@ tla update
 
 @end enumerate
 
-If you are new to Arch and want to learn more about developing with it,
-you might find this tutorial helpful:
address@hidden://www.mwolson.org/projects/ArchTutorial.html}.
+If you are new to Arch and want to learn more about developing ERC with
+it, visit @uref{http://emacswiki.org/cgi-bin/wiki/ErcDevelopment} for
+full instructions.
 
 @subheading Development snapshots
 
@@ -266,8 +282,6 @@ locations that require this.
 @chapter Getting Started
 @cindex settings
 
address@hidden PRE5_2: Mention .ercrc.el
-
 To use ERC, add the directory containing its files to your
 @code{load-path} variable, in your @file{.emacs} file.  Then, load ERC
 itself.  An example follows.
@@ -279,20 +293,151 @@ itself.  An example follows.
 Once ERC is loaded, the command @kbd{M-x erc} will start ERC and
 prompt for the server to connect to.
 
+If you want to place ERC settings in their own file, you can place them
+in @file{~/.emacs.d/.ercrc.el}, creating it if necessary.
+
+If you would rather use the Customize interface to change how ERC works,
+do @kbd{M-x customize-group RET erc RET}.  In particular, ERC comes with
+lots of modules that may be enabled or disabled; to select which ones
+you want, do @kbd{M-x customize-variable RET erc-modules RET}.
+
address@hidden
+* Sample Session::              Example of connecting to the #emacs channel
+* Special Features::            Differences from standalone IRC clients
address@hidden menu
+
address@hidden Sample Session, Special Features, Getting Started, Getting 
Started
address@hidden  node-name,  next,  previous,  up
address@hidden Sample Session
+
+This is an example ERC session which shows how to connect to the #emacs
+channel on Freenode.  Another IRC channel on Freenode that may be of
+interest is #erc, which is a channel where ERC users and developers hang
+out.
+
address@hidden @bullet
+
address@hidden Connect to Freenode
+
+Run @kbd{M-x erc}.  Use ``irc.freenode.net'' as the IRC server, ``6667''
+as the port, and choose a nickname.
+
address@hidden Get used to the interface
+
+Switch to the ``irc.freenode.net:6667'' buffer, if you're not already
+there.  You will see first some messages about checking for ident, and
+then a bunch of other messages that describe the current IRC server.
+
address@hidden Join the #emacs channel
+
+In that buffer, type ``/join SPC #emacs'' and hit @kbd{RET}.  Depending
+on how you've set up ERC, either a new buffer for ``#emacs'' will be
+displayed, or a new buffer called ``#emacs'' will be created in the
+background.  If the latter, switch to the ``#emacs'' buffer.  You will
+see the channel topic and a list of the people who are currently on the
+channel.
+
address@hidden Register your nickname with Freenode
+
+If you would like to be able to talk with people privately on the
+Freenode network, you will have to ``register'' your nickname.  To do
+so, switch to the ``irc.freenode.net:6667'' buffer and type ``/msg
+NickServ register <password>'', replacing ``<password>'' with your
+desired password.  It should tell you that the operation was successful.
+
address@hidden Talk to people in the channel
+
+If you switch back to the ``#emacs'' buffer, you can type a message, and
+everyone on the channel will see it.
+
address@hidden Open a query buffer to talk to someone
+
+If you want to talk with someone in private (this should usually not be
+done for technical help, only for personal questions), type ``/query
+<nick>'', replacing ``<nick>'' with the nickname of the person you would
+like to talk to.  Depending on how ERC is set up, you will either see a
+new buffer with the name of the person, or such a buffer will be created
+in the background and you will have to switch to it.  Begin typing
+messages, and you will be able to have a conversation.
+
+Note that if the other person is not registered, you will not be able to
+talk with them.
+
address@hidden itemize
+
address@hidden Special Features, , Sample Session, Getting Started
address@hidden  node-name,  next,  previous,  up
address@hidden Special Features
+
+ERC has some features that distinguish it from some IRC clients.
+
address@hidden @bullet
+
address@hidden multiple channels and multiple servers
+
+Every channel is put in a separate buffer.  Several IRC servers may be
+connected to at the same time.
+
address@hidden query buffers
address@hidden private message separation
+
+Private conversations are treated as channels, and are put into separate
+buffers in Emacs.  We call these ``query buffers''.
+
address@hidden highlighting
+
+Some occurences of words can be highlighted, which makes it easier to
+track different kinds of conversations.
+
address@hidden notification
+
+ERC can notify you that certain users are online.
+
address@hidden channel tracking
+
+Channels can be hidden and conversation continue in the background.  You
+are notified when something is said in such a channel that is not
+currently visible.  This makes it easy to get Real Work done while still
+maintaining an IRC presence.
+
address@hidden nick completion
+
+ERC can complete words upon hitting @kbd{TAB}, which eases the writing
+of nicknames in messages.
+
address@hidden history ring
address@hidden history
+
+Past actions are kept in history rings for future use.  To navigate a
+history ring, hit @kbd{M-p} to go backwards and @kbd{M-n} to go
+forwards.
+
address@hidden multiple languages
+
+Different channels and servers may have different language encodings.
+
+In addition, it is possible to translate the messages that ERC uses into
+multiple languages.  Please contact the developers of ERC at
address@hidden@@gnu.org} if you are interested in helping with the
+translation effort.
+
address@hidden user scripting
+
+Users can load scripts (e.g. auto greeting scripts) when ERC starts up.
+
+It is also possible to make custom IRC commands, if you know a little
+Emacs Lisp.  Just make an Emacs Lisp function and call it
address@hidden, where @code{NEWCOMMAND} is the name of the
+new command in capital letters.
+
address@hidden auto reconnect
+
 If the connection goes away at some point, ERC will try to reconnect
 automatically.  If it fails to reconnect, and you want to try to
 manually reestablish the connection at some later point, switch to an
-ERC buffer and run the /RECONNECT command.
+ERC  buffer and run the @code{/RECONNECT} command.
 
address@hidden PRE5_2: Sample session, including:
address@hidden - connect to Freenode
address@hidden - /join #emacs
address@hidden - see messages flying past, point out topic lines, messages, 
channel
address@hidden   members
address@hidden - identifying your nick with NickServ (most IRC servers have 
this)
address@hidden - talking to the channel
address@hidden - open a /query buffer to talk to someone (must identify first in
address@hidden   FreeNode)
address@hidden itemize
 
 
 @node Keystroke Summary, Modules, Getting Started, Top
@@ -518,7 +663,7 @@ Translate morse code in messages
 
 @end table
 
address@hidden PRE5_2: Document every option of every module in its own subnode
address@hidden PRE5_3: Document every option of every module in its own subnode
 
 
 @node Advanced Usage, Getting Help and Reporting Bugs, Modules, Top
@@ -528,12 +673,11 @@ Translate morse code in messages
 
 @menu
 * Connecting::                  Ways of connecting to an IRC server.
-* Options::                     Options that are available for ERC.
-* Tips and Tricks::             Ways of enhancing your ERC experience.
 * Sample Configuration::        An example configuration file.
+* Options::                     Options that are available for ERC.
 @end menu
 
address@hidden Connecting, Options, Advanced Usage, Advanced Usage
address@hidden Connecting, Sample Configuration, Advanced Usage, Advanced Usage
 @comment  node-name,  next,  previous,  up
 @section Connecting to an IRC Server
 @cindex connecting
@@ -667,33 +811,97 @@ User full name.
 This can be either a string or a function to call.
 @end defopt
 
address@hidden Options, Tips and Tricks, Connecting, Advanced Usage
address@hidden Sample Configuration, Options, Connecting, Advanced Usage
 @comment  node-name,  next,  previous,  up
address@hidden Options
address@hidden options
address@hidden Sample Configuration
address@hidden configuration, sample
 
address@hidden PRE5_2: (Node) Document every ERC option (module options go in
address@hidden previous chapter)
+Here is an example of configuration settings for ERC.  This can go into
+your Emacs configuration file.  Everything after the @code{(require
+'erc)} command can optionally go into @file{~/.emacs.d/.ercrc.el}.
 
-This section has not yet been written.
address@hidden
+;;; Sample ERC configuration
 
address@hidden Tips and Tricks, Sample Configuration, Options, Advanced Usage
address@hidden  node-name,  next,  previous,  up
address@hidden Tips and Tricks
address@hidden tips and tricks
+;; Add the ERC directory to load path -- you don't need this if you are
+;; using the version of ERC that comes with Emacs
+(add-to-list 'load-path "~/elisp/erc")
 
address@hidden PRE5_2: (Node) Tips and tricks
+;; Load ERC
+(require 'erc)
 
-This section has not yet been written.
+;; Load authentication info from an external source.  Put sensitive
+;; passwords and the like in here.
+(load "~/.emacs.d/.erc-auth")
+
+;; This is an example of how to make a new command.  Type "/uptime" to
+;; use it.
+(defun erc-cmd-UPTIME (&rest ignore)
+  "Display the uptime of the system, as well as some load-related
+stuff, to the current ERC buffer."
+  (let ((uname-output
+         (replace-regexp-in-string
+          ", load average: " "] @{Load address@hidden ["
+          ;; Collapse spaces, remove
+          (replace-regexp-in-string
+           " +" " "
+           ;; Remove beginning and trailing whitespace
+           (replace-regexp-in-string
+            "^ +\\|[ \n]+$" ""
+            (shell-command-to-string "uptime"))))))
+    (erc-send-message
+     (concat "@address@hidden [" uname-output "]"))))
+
+;; This causes ERC to connect to the Freenode network upon hitting
+;; C-c e f.  Replace MYNICK with your IRC nick.
+(global-set-key "\C-cef" (lambda () (interactive)
+                           (erc :server "irc.freenode.net" :port "6667"
+                                :nick "MYNICK")))
+
+;; This causes ERC to connect to the IRC server on your own machine (if
+;; you have one) upon hitting C-c e b.  Replace MYNICK with your IRC
+;; nick.  Often, people like to run bitlbee (http://bitlbee.org/) as an
+;; AIM/Jabber/MSN to IRC gateway, so that they can use ERC to chat with
+;; people on those networks.
+(global-set-key "\C-ceb" (lambda () (interactive)
+                           (erc :server "localhost" :port "6667"
+                                :nick "MYNICK")))
+
+;; Make C-c RET (or C-c C-RET) send messages instead of RET. This has
+;; been commented out to avoid confusing new users.
+;; (define-key erc-mode-map (kbd "RET") nil)
+;; (define-key erc-mode-map (kbd "C-c RET") 'erc-send-current-line)
+;; (define-key erc-mode-map (kbd "C-c C-RET") 'erc-send-current-line)
+
+;;; Options
+
+;; Join the #emacs and #erc channels whenever connecting to Freenode.
+(setq erc-autojoin-channels-alist '(("freenode.net" "#emacs" "#erc")))
+
+;; Interpret mIRC-style color commands in IRC chats
+(setq erc-interpret-mirc-color t)
+
+;; The following are commented out by default, but users of other
+;; non-Emacs IRC clients might find them useful.
+;; Kill buffers for channels after /part
+;; (setq erc-kill-buffer-on-part t)
+;; Kill buffers for private queries after quitting the server
+;; (setq erc-kill-queries-on-quit t)
+;; Kill buffers for server messages after quitting the server
+;; (setq erc-kill-server-buffer-on-quit t)
address@hidden lisp
 
address@hidden Sample Configuration, , Tips and Tricks, Advanced Usage
address@hidden Options, , Sample Configuration, Advanced Usage
 @comment  node-name,  next,  previous,  up
address@hidden Sample Configuration
address@hidden configuration, sample
address@hidden Options
address@hidden options
 
address@hidden PRE5_2: (Node) Sample configs
address@hidden PRE5_3: (Node) Document every ERC option (module options go in
address@hidden previous chapter)
 
-This section has not yet been written.
+This section has not yet been written.  For now, the easiest way to
+check out the available option for ERC is to do
address@hidden customize-group erc RET}.
 
 
 @node Getting Help and Reporting Bugs, History, Advanced Usage, Top




reply via email to

[Prev in Thread] Current Thread [Next in Thread]