Commits

Eugene Morozov  committed f42d7a7

Added circe package.
Minor changes in javascript and yasnippet setup.

  • Participants
  • Parent commits 5208649

Comments (0)

Files changed (36)

 (define-key global-map "\C-x4t" 'transpose-buffers)
 
 ;;; Load additional settings
-;(load "~/emacs/rc/erc.el")
+(load "~/emacs/rc/irc.el")
 ;; Abbrevs and completion
 (load "~/emacs/rc/intellisense.el")
 ;; Python specific bindings and functions

File packages/circe/COPYING

+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

File packages/circe/COPYING.FDL

+		GNU Free Documentation License
+		  Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The "Document", below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as "you".  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject.  (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification.  Examples of
+transparent image formats include PNG, XCF and JPG.  Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has fewer than five),
+   unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+   to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section Entitled "History" in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the "History" section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements".  Such a section
+   may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+   or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications".  You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License.  However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+    Copyright (c)  YEAR  YOUR NAME.
+    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, no Front-Cover Texts, and no Back-Cover Texts.
+    A copy of the license is included in the section entitled "GNU
+    Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+    with the Invariant Sections being LIST THEIR TITLES, with the
+    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.

File packages/circe/CVS/Entries

+/COPYING/1.1/Wed Aug 10 04:51:16 2005//
+/COPYING.FDL/1.1/Mon Aug 15 15:39:33 2005//
+/FAQ/1.14/Mon Aug 14 01:11:12 2006//
+/Makefile/1.4/Tue Aug 15 16:55:40 2006//
+/Makefile.defs/1.2/Mon Aug 15 22:48:17 2005//
+/README/1.5/Wed Aug 17 00:50:41 2005//
+/circe-auto.el.in/1.1/Tue Aug 15 16:55:40 2006//
+/circe-chanop.el/1.1/Thu Apr 20 20:57:34 2006//
+/circe-e21.el/1.2/Wed Aug 17 04:28:05 2005//
+/circe-highlight-all-nicks.el/1.3/Sun Sep 18 20:33:14 2005//
+/circe-log.el/1.4/Fri Jul 20 17:44:27 2007//
+/circe-xemacs.el/1.4/Thu Dec 29 14:43:55 2005//
+/circe.el/1.97/Sun Apr 26 08:31:02 2009//
+/circe.texi/1.6/Sat Mar  3 14:20:38 2007//
+/incomplete.el/1.3/Thu Dec 29 14:41:47 2005//
+/lcs.el/1.1/Mon May 15 19:40:13 2006//
+/lui-format.el/1.3/Sun Jun 11 18:37:12 2006//
+/lui-irc-colors.el/1.9/Wed Jul 25 17:01:15 2007//
+/lui-logging.el/1.1/Sun Jun 11 18:37:12 2006//
+/lui-xemacs.el/1.5/Sun Apr 26 08:31:02 2009//
+/lui.el/1.63/Sun Apr 26 08:33:44 2009//
+/tracking.el/1.1/Thu Jun 29 22:57:44 2006//
+D

File packages/circe/CVS/Entries.Log

+A D/scripts////

File packages/circe/CVS/Repository

+circe

File packages/circe/CVS/Root

+:pserver:anonymous@cvs.savannah.nongnu.org:/sources/circe

File packages/circe/FAQ

+Frequently Asked Questions about Circe, a Client for IRC on Emacs -*-outline-*-
+
+* General
+Q: Where can I get button.el?
+A: It's included in CVS Emacs. If you use 21.4, you can get it from
+   http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/button.el?rev=1.21&root=emacs&view=auto
+
+Q: Why doesn't Circe re-use old channel buffers after the server
+   buffer got killed?
+A: It is not possible to find out whether we can use that channel
+   buffer or not. Doing heuristics will lead to severe confusion when
+   the user connects to the same server twice. So we don't do this.
+   Use the `circe-reconnect' command in any Circe buffer to reconnect
+   to this server.
+
+Q: Can Circe do logging?
+A: Yes. Set `lui-logging-file-format' and `lui-logging-format' to
+   values of your preference; Circe adds the two format strings
+   {target} and {network} to the possibilities for
+   `lui-logging-file-format'. To actually enable logging, to
+   `enable-lui-logging' on `circe-chat-mode-hook'.
+
+Q: Why does switching to some Circe buffers hang Emacs for a moment?
+A: That's because you enabled flyspell for Circe, and ispell.el is so
+   intelligent as to start a new spelling process each time the
+   dictionary changes. Aspell takes much longer to start than ispell,
+   so you could just use ispell...
+
+Q: How can I avoid to tell Lui twice about my friends, both when
+   setting the dictionary and when adding them to
+   `lui-highlight-keywords'?
+A: Use the following function (thanks to paolo on Freenode for the
+   idea):
+
+   (defun lui-add-pals (&rest pals)
+     "Add PALS to highlighting and correct dictionary.
+   Every PAL is a cons cell of the dictionary to use, and a list of
+   nick names."
+     (add-to-list 'lui-highlight-keywords
+                  (regexp-opt (apply #'append (mapcar #'cdr pals))
+                              'words))
+     (mapc (lambda (dictnicks)
+             (add-to-list 'lui-flyspell-alist
+                          (list (regexp-opt (cdr dictnicks)
+                                            'words)
+                                (car dictnicks))))
+           pals))
+
+   (lui-add-pals '("american" "leary" "wilson")
+                 '("italian" "tonio" "paolo" "pablo"))
+
+
+* XEmacs
+Q: Does Circe run on XEmacs?
+A: Yes, she does. Grudgingly, but she does.
+
+Q: Why can't I use the (circe "irc.freenode.net" "6667") on XEmacs?
+A: XEmacs doesn't like a port number as a string argument there. Please use
+   an integer for this in that environment: 
+	(circe "irc.freenode.net" 6667)
+

File packages/circe/Makefile

+.PHONY: compile doc install clean uninstall dist
+
+include Makefile.defs
+
+EL  = $(wildcard *.el) $(PACKAGE)-auto.el
+ELC = $(patsubst %.el,%.elc,$(EL))
+
+TEXI = $(PACKAGE).texi
+INFO = $(patsubst %.texi,%.info,$(TEXI))
+HTML = $(patsubst %.texi,%.html,$(TEXI))
+PDF  = $(patsubst %.texi,%.pdf,$(TEXI))
+
+all: compile doc
+
+### Compiling
+compile: $(ELC)
+
+%.elc: %.el
+	$(EMACS) -q $(SITEFLAG) -batch -l ./scripts/build-helper.el \
+		-f batch-byte-compile $<
+
+$(PACKAGE)-auto.el:
+	cp $(PACKAGE)-auto.el.in $(PACKAGE)-auto.el
+	$(EMACS) -q $(SITEFLAG) -batch -l ./scripts/build-helper.el \
+		-f bh-generate-autoloads `pwd`/$(PACKAGE)-auto.el .
+
+### Documentation
+doc: $(INFO) $(HTML) $(PDF)
+
+%.info: %.texi
+	$(MAKEINFO) --no-split $<
+
+%.html: %.texi
+	$(MAKEINFO) --html --no-split $<
+
+%.pdf: %.texi
+	$(TEXI2DVI) -p -c -b $<
+
+### Installation
+install: compile doc
+	$(INSTALL) -d $(ELCDIR) $(ELDIR) $(DOCDIR)
+	$(INSTALL) -m 644 *.elc $(ELCDIR)
+	$(INSTALL) -m 644 *.el $(ELDIR)
+	$(INSTALL) -m 644 $(AUXDOC) $(HTML) $(PDF) $(DOCDIR)
+	$(INSTALLINFO) $(INFO)
+
+uninstall:
+	rm -rf $(ELCDIR) $(ELDIR) $(DOCDIR)
+	$(INSTALLINFO) --remove $(INFO)
+
+### Cleaning the directory
+clean:
+	rm -f $(ELC) $(PACKAGE)-auto.el $(INFO) $(HTML) $(PDF)
+
+### Creating a release
+dist: $(PACKAGE)-auto.el
+	$(MKDIR) ../$(PACKAGE)-$(VERSION)
+	$(MKDIR) ../$(PACKAGE)-$(VERSION)/scripts
+	$(CP) $(EL) $(TEXI) $(AUXDOC) ../$(PACKAGE)-$(VERSION)
+	$(CP) scripts/build-helper.el ../$(PACKAGE)-$(VERSION)/scripts
+	$(TEST) -d debian/ && cp -r debian/ ../$(PACKAGE)-$(VERSION)/ || true
+	$(TAR) -C ../ -c $(PACKAGE)-$(VERSION) | gzip -9 > ../$(PACKAGE)-$(VERSION).tar.gz
+	test -d debian && (cd ../$(PACKAGE)-$(VERSION) ; dpkg-buildpackage -rfakeroot) || true
+	test -d debian && linitian ../$(PACKAGE)*_$(VERSION)*.deb || true

File packages/circe/Makefile.defs

+### Package configuration   -*-makefile-gmake-mode-*-
+
+PACKAGE = circe
+VERSION = 0.0
+
+### Which Emacs to use
+EMACS = emacs
+SITEFLAG = --no-site-file
+
+# Or maybe XEmacs
+#EMACS = xemacs
+#SITEFLAG = -no-site-file 
+
+### Directories
+DESTDIR = /tmp/test/install
+PREFIX = $(DESTDIR)
+
+EMACSVERSION = `$(EMACS) -q $(SITEFLAG) -batch -l ./scripts/build-helper.el -f bh-emacs-install-version 2>&1`
+
+ELCDIR = $(PREFIX)/share/emacs/$(EMACSVERSION)/site-lisp/$(PACKAGE)/
+ELDIR = $(PREFIX)/share/emacs/site-lisp/$(PACKAGE)/
+DOCDIR = $(PREFIX)/share/doc/$(PACKAGE)/
+AUXDOC = README FAQ NEWS COPYING COPYING.FDL Makefile Makefile.defs
+
+### Programs
+MAKEINFO = makeinfo
+TEXI2DVI = texi2dvi
+INSTALL = install
+INSTALLINFO = install-info
+MKDIR = mkdir
+CP = cp
+TEST = test
+TAR = tar

File packages/circe/README

+Circe is a Client for IRC in Emacs                                -*-outline-*-
+
+Project homepage: http://www.nongnu.org/circe/
+
+Mailing list: Mail to circe-help-request@lists.nongnu.org
+              Subject: subscribe
+              Also: http://lists.nongnu.org/mailman/listinfo/circe-help
+
+
+* Overview
+Circe was initially written in three or four days because the author
+got terribly annoyed at bugs in ERC. Nontheless, many ideas are taken
+directly from ERC, and that client has served the author well for a
+long time. Thanks to all the people who worked on ERC!
+
+
+* Lui
+Circe uses Lui, the Linewise User Interface. This provides many
+features with a clean interface so that Circe doesn't have to worry
+about the whole displaying stuff. Lui can also be used by other
+clients, so that for example the tracking feature is extensible.
+
+
+* Installation
+To install Circe, put all files in a directory, say, ~/.elisp/circe/
+Then add the following code to your .emacs:
+
+  (add-to-list 'load-path "~/.elisp/circe/")
+  (autoload 'circe "circe" "Connect to an IRC server" t)
+
+Now you can run M-x circe and connect to an IRC server of your choice.
+
+
+* Sample Configuration
+Circe is extensively configurable, and quite well extensible. What
+follows is the configuration of the author.
+
+
+(autoload 'circe "circe" "Connect to an IRC server" t)
+
+(when (file-directory-p "~/.elisp/circe")
+  (add-to-list 'load-path "~/.elisp/circe"))
+
+;; This defines the password variables below
+(when (file-exists-p "~/.private.el")
+  (load-file "~/.private.el"))
+
+(setq circe-default-realname "http://www.forcix.cx/"
+      circe-ignore-list nil
+      circe-server-coding-system '(latin-1 . undecided)
+      circe-server-auto-join-channels
+      '(("^freenode$" "#emacs" "#scheme" "#scsh" "#darcs" "#wiki" "#css"
+                      "#latex" "#ideologies" "##linguistics")
+        ("^IRCnet" "#StarWars" "+linux.de"))
+      circe-nickserv-passwords `(("freenode" ,freenode-passwd)))
+
+(setq lui-max-buffer-size 30000
+      lui-flyspell-p t
+      lui-flyspell-alist '(("+linux.de" "german8")
+                           ("." "american")))
+
+(eval-after-load "circe"
+  '(progn
+     (require 'lui-irc-colors)
+     (add-to-list 'lui-pre-output-hook 'lui-irc-colors)
+     (add-to-list 'circe-receive-message-functions
+                  'fc-bitlbee-auth)))
+
+(defun fc-bitlbee-auth (nick user host command args)
+  "Authenticate to a bitlbee server."
+  (when (and (string= command "JOIN")
+             (circe-server-my-nick-p nick))
+    (with-circe-server-buffer
+      (when (string= circe-server-network "bitlbee")
+        (circe-server-send (format "PRIVMSG #bitlbee :identify %s"
+                                   bitlbee-passwd))))))
+
+(defun irc ()
+  "Connect to IRC."
+  (interactive)
+  (circe "irc.freenode.net" "6667" "freenode")
+  (circe "sarg" "23523" "IRCnet" muh-passwd)
+  (circe "localhost" "6668" "bitlbee"))

File packages/circe/circe-auto.el.in

+;;; -*-emacs-lisp-*-
+
+(defvar generated-autoload-file)
+(defvar command-line-args-left)
+(defun generate-autoloads ()
+  (interactive)
+  (require 'autoload)
+  (setq generated-autoload-file (car command-line-args-left))
+  (setq command-line-args-left (cdr command-line-args-left))
+  (batch-update-autoloads))
+
+(provide 'circe-auto)
+;;; Generated autoloads follow (made by autoload.el).

File packages/circe/circe-chanop.el

+;;; circe-chanop.el --- Provide common channel operator commands
+
+;; Copyright (C) 2006  Jorgen Schaefer
+
+;; Version: 1.0
+;; Keywords: Circe, IRC
+;; Author: Jorgen Schaefer <forcer@forcix.cx>
+;; URL: http://www.nongnu.org/circe/
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 2
+;; of the License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301  USA
+
+;;; Commentary:
+
+;; This Circe module provides some often-used chanop commands. I was
+;; very reluctant to add this. None of these commands will make it in
+;; the core, or even be provided by default. You should have to go to
+;; great lengths to use them.
+
+;; Always remember the Tao of IRC:
+;;
+;;     IGNORE is the weapon of an IRC knight. Not as clumsy or as
+;;     random as a kickban.
+
+;;; Code:
+
+(defun circe-command-MODE (mode)
+  "Set MODE in the current channel."
+  (interactive "sMode change: ")
+  (cond
+   ((not (string-match "^[+-]" mode))
+    (circe-server-send (format "MODE %s" mode)))
+   ((eq major-mode 'circe-channel-mode)
+    (circe-server-send (format "MODE %s %s" circe-chat-target mode)))
+   (t
+    (circe-server-message "Not in a channel buffer."))))
+
+(defun circe-command-KICK (nick &optional reason)
+  "Remove NICK from the current channel.
+REASON should be a short explanation on why you repress this poor
+soul."
+  (interactive "sKick who: \nsWhy: ")
+  (if (not (eq major-mode 'circe-channel-mode))
+      (circe-server-message "Not in a channel buffer.")
+    (when (not reason)
+      (if (string-match "^\\([^ ]*\\) \\(..*\\)" nick)
+          (setq reason (match-string 2 nick)
+                nick (match-string 1 nick))
+        (setq reason "Did you see me repress you?")))
+    (circe-server-send (format "KICK %s %s :%s"
+                               circe-chat-target nick reason))))
+
+(defun circe-command-GETOP (&optional ignored)
+  "Ask chanserv for op on the current channel."
+  (interactive)
+  (if (not (eq major-mode 'circe-channel-mode))
+      (circe-server-message "Not in a channel buffer.")
+    (circe-server-send (format "PRIVMSG chanserv :op %s" circe-chat-target))))
+
+(defun circe-command-DROPOP (&optional ignored)
+  "Lose op mode on the current channel."
+  (interactive)
+  (if (not (eq major-mode 'circe-channel-mode))
+      (circe-server-message "Not in a channel buffer.")
+    (circe-server-send (format "MODE %s -o %s"
+                               circe-chat-target
+                               (circe-server-nick)))))
+
+;; For KICKBAN (requested by Riastradh), we'd need a callback on a
+;; USERHOST command.
+
+(provide 'circe-chanop)
+;;; circe-chanop.el ends here

File packages/circe/circe-e21.el

+;;; Emacs 21 backward compatibility defines
+
+(when (not (boundp 'seconds-to-time))
+  (defun seconds-to-time (seconds)
+    "Convert SECONDS (a floating point number) to a time value."
+    (list (floor seconds 65536)
+          (floor (mod seconds 65536))
+          (floor (* (- seconds (ffloor seconds)) 1000000)))))
+
+(provide 'circe-e21)

File packages/circe/circe-highlight-all-nicks.el

+;;; circe-highlight-all-nicks.el --- Highlight all nicks in the current channel
+
+;; Copyright (C) 2005  Jorgen Schaefer
+
+;; Version: 1.0
+;; Keywords: Circe, IRC
+;; Author: Jorgen Schaefer <forcer@forcix.cx>
+;; URL: http://www.nongnu.org/circe/
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 2
+;; of the License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301  USA
+
+;;; Commentary:
+
+;; This Circe module adds the ability to highlight every occurance of
+;; a nick in the current channel in a message by other people.
+
+;; To use it, put the following into your .emacs:
+
+;; (require 'circe-highlight-all-nicks)
+;; (enable-circe-highlight-all-nicks)
+
+;;; Code:
+
+(require 'circe)
+
+(defface circe-highlight-all-nicks-face
+  '((t (:foreground "green")))
+  "The face used for nicks from the current channel.
+See `enable-circe-highlight-all-nicks'."
+  :group 'circe)
+
+;;;###autoload
+(defun enable-circe-highlight-all-nicks ()
+  "Enable the Highlight Nicks module for Circe.
+This module highlights all occurances of nicks in the current
+channel in messages of other people."
+  (interactive)
+  (mapc (lambda (buf)
+          (with-current-buffer buf
+            (when (eq major-mode 'circe-channel-mode)
+              (add-circe-highlight-all-nicks))))
+        (buffer-list))
+  (add-hook 'circe-channel-mode-hook
+            'add-circe-highlight-all-nicks))
+
+(defun disable-circe-highlight-all-nicks ()
+  "Disable the Highlight Nicks module for Circe.
+See `enable-circe-highlight-all-nicks'."
+  (interactive)
+  (mapc (lambda (buf)
+          (with-current-buffer buf
+            (when (eq major-mode 'circe-channel-mode)
+              (remove-circe-highlight-all-nicks))))
+        (buffer-list))
+  (remove-hook 'circe-channel-mode-hook
+               'add-circe-highlight-all-nicks))
+
+(defun add-circe-highlight-all-nicks ()
+  "Add `circe-highlight-all-nicks' to `lui-pre-output-hook'."
+  (add-hook 'lui-pre-output-hook 'circe-highlight-all-nicks))
+
+(defun remove-circe-highlight-all-nicks ()
+  "Remove `circe-highlight-all-nicks' from `lui-pre-output-hook'."
+  (remove-hook 'lui-pre-output-hook 'circe-highlight-all-nicks))
+
+(defun circe-highlight-all-nicks ()
+  "Highlight all occurances of nicks of the current channel in the message."
+  (when (eq major-mode 'circe-channel-mode)
+    (let ((body (text-property-any (point-min) (point-max)
+                                   'lui-format-argument 'body))
+          (nicks '())
+          (regex nil))
+      (when body
+        (when circe-channel-users
+          (maphash (lambda (_ nick)
+                     (when (not (circe-server-my-nick-p nick))
+                       (setq nicks (cons nick nicks))))
+                   circe-channel-users))
+        (setq regex (regexp-opt nicks 'words))
+        (goto-char body)
+        (while (re-search-forward regex nil t)
+          (add-text-properties (match-beginning 0)
+                               (match-end 0)
+                               '(face circe-highlight-all-nicks-face)))))))
+
+(provide 'circe-highlight-all-nicks)
+;;; circe-highlight-all-nicks.el ends here

File packages/circe/circe-log.el

+;;; circe-log.el --- Logging for circe
+
+;; Copyright (C) 2007 Tassilo Horn <tassilo@member.fsf.org>
+
+;; Version: 1.0
+;; Keywords: Circe, IRC
+;; Author: Tassilo Horn <tassilo@member.fsf.org>
+;; URL: http://www.nongnu.org/circe/
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 2
+;; of the License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301  USA
+
+;;; Commentary:
+
+;; Logs all irc buffers matching `circe-log-buffer-regexp' and not matching
+;; `circe-log-exlude-buffer-regexp' when they are killed.
+
+;; To use it, put the following into your .emacs:
+
+;; (require 'circe-log)
+;; (enable-circe-log)
+
+;;; Code:
+
+(require 'circe)
+
+(defcustom circe-log-buffer-regexp ".*"
+  "Only buffers matching this regexp and not matching
+`circe-log-exlude-buffer-regexp' will be logged."
+ :type  'string
+ :group 'circe)
+
+(defcustom circe-log-exlude-buffer-regexp
+  "^\\([Cc][Hh][Aa][Nn]\\|[Nn][Ii][Cc][Kk]\\)[Ss][Ee][Rr][Vv]"
+  "Only buffers not matching this regexp and matching
+`circe-log-buffer-regexp' will be logged. By default query
+buffers for ChanServ and NickServ will be ignored."
+ :type  'string
+ :group 'circe)
+
+(defcustom circe-log-directory "~/.circe-logs"
+  "The directory in which circe's log files should reside."
+ :type  'string
+ :group 'circe)
+
+;;;###autoload
+(defun enable-circe-log ()
+  "Enables automatic logging for all buffers matching
+`circe-log-buffer-regexp' and not matching
+`circe-log-exlude-buffer-regexp'."
+  (interactive)
+  (mapc (lambda (buf)
+          (with-current-buffer buf
+            (when (eq major-mode 'circe-chat-mode)
+              (add-circe-log-buffer))))
+        (buffer-list))
+  (add-hook 'circe-chat-mode-hook
+            'add-circe-log-buffer)
+  (add-hook 'circe-chat-mode-hook
+            'circe-log-insert))
+
+(defun disable-circe-log ()
+  "Disables automatic logging."
+  (interactive)
+  (mapc (lambda (buf)
+          (with-current-buffer buf
+            (when (eq major-mode 'circe-chat-mode)
+              (remove-circe-log-buffer))))
+        (buffer-list))
+  (remove-hook 'circe-chat-mode-hook
+               'add-circe-log-buffer)
+  (remove-hook 'circe-chat-mode-hook
+               'circe-log-insert))
+
+(defun add-circe-log-buffer ()
+  "Enables logging for the current buffer."
+  (let ((buf-name (buffer-name (current-buffer))))
+    (when (and (string-match circe-log-buffer-regexp buf-name)
+               (not (string-match circe-log-exlude-buffer-regexp buf-name))) 
+      (add-hook 'kill-buffer-hook 'circe-log-save-buffer t t))))
+
+(defun remove-circe-log-buffer ()
+  "Disables logging for the current buffer."
+  (remove-hook 'kill-buffer-hook 'circe-log-save-buffer t))
+
+(defun circe-log-file-name ()
+  "Returns the file name of the logfile associated with the
+current buffer."
+  (let ((circe-buffer (buffer-name)))
+    (concat circe-log-directory
+            "/" circe-buffer
+            "@" (with-circe-server-buffer circe-server-network))))
+
+(defun circe-log-save-buffer ()
+  "Saves the current buffer in a log file."
+  (interactive)
+  (let ((buf (buffer-name)))
+    (when (not (file-exists-p circe-log-directory))
+      (make-directory circe-log-directory))
+    (write-file (circe-log-file-name))
+    (rename-buffer buf)))
+
+(define-key circe-channel-mode-map (kbd "C-x C-s") ' circe-log-save-buffer)
+(define-key circe-query-mode-map (kbd "C-x C-s") ' circe-log-save-buffer)
+
+(defun circe-log-insert ()
+  "Inserts the log file's content into the current buffer."
+  (let ((log-buffer   " *circe log*")
+        (logfile-name (circe-log-file-name))
+        (circe-buffer (buffer-name)))
+    (when (file-exists-p logfile-name)
+      (set-buffer (get-buffer-create log-buffer))
+      (insert-file-contents logfile-name)
+      (goto-char (point-max))
+      (insert (concat "\n\n;;\n"
+                      ";; " (format-time-string "%c")
+                      "\n;;\n"))
+      (let ((str (buffer-string)))
+        (set-buffer circe-buffer)
+        (let ((buffer-read-only nil))
+          (lui-insert str)))
+      (kill-buffer log-buffer))))
+
+(provide 'circe-log)
+;;; circe-log.el ends here

File packages/circe/circe-xemacs.el

+;; XEmacs compatibility for CIRCE
+;; Writte by Brian Palmer
+
+(unless (fboundp 'compare-strings)
+  (defun compare-strings (str1 start1 end1 str2 start2 end2 &optional ignore-case)
+    (let ((translate (if ignore-case #'upcase #'identity)))
+      (equal (funcall translate (subseq str1 (or start1 0) end1))
+             (funcall translate (subseq str2 (or start2 0) end2))))))
+
+;; This adds user-defined hashtables to XEmacs
+(defvar my-defined-tests nil)
+(defun define-hash-table-test (name test hash)
+  (add-to-list 'my-defined-tests (list name test hash)))
+(defstruct my-user-defined-hashtable test equal-func hash-func values)
+
+(defadvice make-hash-table (around my-ugly-hack activate)
+  (let ((args (ad-get-args 0))
+	test)
+    (if (setq test (assoc (plist-get args ':test)
+                          my-defined-tests))
+	(setq ad-return-value
+              (make-my-user-defined-hashtable :test (first test)
+                                              :equal-func (second test)
+                                              :hash-func (third test)))
+      ad-do-it)))
+
+(defadvice puthash (around my-ugly-puthash-hack activate)
+  (if (my-user-defined-hashtable-p hash-table)
+      (let ((values (my-user-defined-hashtable-values hash-table)))
+	(loop for keypair in values
+	      as (existing-key . existing-value) = keypair
+	      if (funcall (my-user-defined-hashtable-equal-func hash-table)
+                          key
+                          existing-key)
+	      do (setcdr keypair value) (return)
+	      finally (setf (my-user-defined-hashtable-values hash-table)
+                            (cons (cons key value)
+                                  values))))
+    ad-do-it))
+(defadvice gethash (around my-ugly-gethash-hack activate)
+  (if (my-user-defined-hashtable-p hash-table)
+      (let ((values (my-user-defined-hashtable-values hash-table)))
+	(loop for keypair in values
+	      as (existing-key . existing-value) = keypair
+	      if (funcall (my-user-defined-hashtable-equal-func hash-table)
+                          key
+                          existing-key)
+	      do (return (setq ad-return-value existing-value))
+	      finally (setq ad-return-value nil)))
+    ad-do-it))
+(defadvice remhash (around my-ugly-remhash-hack activate)
+  (if (my-user-defined-hashtable-p hash-table)
+      (let ((values (my-user-defined-hashtable-values hash-table)))
+	(loop for keypair in values
+	  as (existing-key . existing-value) = keypair
+	  if (funcall (my-user-defined-hashtable-equal-func hash-table)
+                      key
+                      existing-key)
+	  do (setq ad-return-value
+                   (setf (my-user-defined-hashtable-values hash-table)
+                         (remassoc existing-key values)))))
+    ad-do-it))
+(defadvice maphash (around my-ugly-maphash-hack activate)
+  (if (my-user-defined-hashtable-p hash-table)
+      (loop for (key . value) in (my-user-defined-hashtable-values hash-table)
+            do (funcall function key value))
+    ad-do-it))
+
+(defadvice hash-table-count (around my-ugly-hash-table-count-hack activate)
+  (if (my-user-defined-hashtable-p hash-table)
+      (setq ad-return-value (length
+                             (my-user-defined-hashtable-values hash-table)))
+    ad-do-it))
+
+(provide 'circe-xemacs)

File packages/circe/circe.el

+;;; circe.el --- Client for IRC in Emacs
+
+;; Copyright (C) 2005  Jorgen Schaefer
+
+;; Version: 0
+;; Keywords: IRC, chat
+;; Author: Jorgen Schaefer <forcer@forcix.cx>
+;; URL: http://www.nongnu.org/circe/
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 2
+;; of the License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301  USA
+
+;;; Commentary:
+
+;; This is yet another IRC client for Emacs. It is not as small as
+;; rcirc, and not as bulky as ERC.
+
+;; It owns a lot to both clients (primarily ERC, which I used for a
+;; long time, and helped to develop). Thanks to the authors of both.
+
+;; To use, run M-x circe
+
+;;; Code:
+
+(defvar circe-time-stamp "2009-04-26 10:29:34"
+  "The modification date of Circe source file.")
+
+(defvar circe-version (format "from CVS (%s)" circe-time-stamp)
+  "Circe version string.")
+
+(require 'lui)
+(require 'lui-format)
+(require 'ring)
+(require 'timer)
+(require 'lcs)
+
+(when (featurep 'xemacs)
+  (require 'circe-xemacs))
+
+(when (and (not (featurep 'xemacs))
+           (< emacs-major-version 22))
+  (require 'circe-e21))
+
+
+(defgroup circe nil
+  "Yet Another Emacs IRC Client."
+  :prefix "circe-"
+  :group 'applications)
+
+;;;;;;;;;;;;;
+;;; Faces ;;;
+;;;;;;;;;;;;;
+
+;; These come before the `defcustom's since they are used for some of
+;; the default values.
+
+(defvar circe-prompt-face 'circe-prompt-face
+  "The face for the Circe prompt.")
+(defface circe-prompt-face
+  '((t (:weight bold :foreground "Black" :background "LightSeaGreen")))
+  "The face for the Circe prompt."
+  :group 'circe)
+
+(defvar circe-server-face 'circe-server-face
+  "The face used to highlight server messages.")
+(defface circe-server-face
+  '((((type tty)) :foreground "blue" :weight bold)
+    (t (:foreground "SteelBlue")))
+  "The face used to highlight server messages."
+  :group 'circe)
+
+(defvar circe-highlight-nick-face 'circe-highlight-nick-face
+  "The face used to highlight messages directed to us.")
+(defface circe-highlight-nick-face
+  '((((type tty)) (:foreground "cyan" :weight bold))
+    (t (:foreground "CadetBlue3" :weight bold)))
+  "The face used to highlight messages directed to us."
+  :group 'circe)
+
+(defvar circe-my-message-face 'circe-my-message-face
+  "The face used to highlight our own messages.")
+(defface circe-my-message-face '((t))
+  "The face used to highlight our own messages."
+  :group 'circe)
+
+(defvar circe-originator-face 'circe-originator-face
+  "The face used to highlight the originator of a message.")
+(defface circe-originator-face '((t))
+  "The face used to highlight the originator of a message."
+  :group 'circe)
+
+(defface circe-topic-diff-new-face '((t (:background "DarkGreen")))
+  "The face used for text added to a topic.
+See the {topic-diff} parameter to `circe-format-server-topic'."
+  :group 'circe)
+
+(defface circe-topic-diff-removed-face '((t (:background "DarkRed")))
+  "The face used for text removed from a topic.
+See the {topic-diff} parameter to `circe-format-server-topic'."
+  :group 'circe)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Customization Variables ;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defcustom circe-default-nick (user-login-name)
+  "*The default nick for circe."
+  :type 'string
+  :group 'circe)
+
+(defcustom circe-default-user circe-default-nick
+  "*The default user name for circe."
+  :type 'string
+  :group 'circe)
+
+(defcustom circe-default-realname (if (string= (user-full-name) "")
+                                      circe-default-nick
+                                    (user-full-name))
+  "*The default real name for circe."
+  :type 'string
+  :group 'circe)
+
+(defcustom circe-new-buffer-behavior 'display
+  "*How new buffers should be treated.
+
+  'display  - Show them, but don't select them
+  'switch   - Switch to that buffer
+  'ignore   - Just open it"
+  :type '(choice (const :tag "Display" display)
+                 (const :tag "Switch" switch)
+                 (const :tag "Ignore" ignore))
+  :group 'circe)
+
+(defcustom circe-auto-query-p t
+  "*Non-nil if queries should be opened automatically."
+  :type 'boolean
+  :group 'circe)
+
+(defcustom circe-auto-query-max 23
+  "*The maximum number of queries which are opened automatically.
+If more messages arrive - typically in a flood situation - they
+are displayed as if `circe-auto-query-p' was nil."
+  :type 'integer
+  :group 'circe)
+
+(defcustom circe-prompt-string (concat (propertize ">"
+                                                   'face 'circe-prompt-face)
+                                       " ")
+  "*The string to initialize the prompt with.
+To change the prompt dynamically or just in specific buffers, use
+`lui-set-prompt' in the appropriate hooks."
+  :type 'string
+  :group 'circe)
+
+(defcustom circe-highlight-nick-type 'sender
+  "*How to highlight occurrences of our own nick.
+
+  'sender     - Highlight the nick of the sender
+  'occurrence - Highlight the occurrences of the nick
+  'message    - Highlight the message without the sender
+  'all        - Highlight the whole line"
+  :type '(choice (const :tag "Sender" sender)
+                 (const :tag "Occurrences" occurrence)
+                 (const :tag "Message" message)
+                 (const :tag "Whole line" all))
+  :group 'circe)
+
+(defcustom circe-completion-suffix ": "
+  "*A suffix for completed nicks at the beginning of a line."
+  :type '(choice (const :tag "The standard suffix" ": "))
+  :group 'circe)
+
+(defcustom circe-ignore-list nil
+  "*List of regular expressions to ignore."
+;; - This will be true again some time in the future.
+;; "Messages from such people are still inserted, but not shown. They
+;; can be displayed using \\[lui-toggle-ignored].
+;;
+;; If this ever poses a problem in combination with buffer
+;; truncation, please notify the author."
+  :type '(repeat regexp)
+  :group 'circe)
+
+(defcustom circe-ignore-functions nil
+  "*A list of functions to check whether we should ignore a message.
+These functions get five arguments: NICK, USER, HOST, COMMAND, and ARGS.
+If one of them returns a non-nil value, the message is ignored."
+  :type 'hook
+  :group 'circe)
+
+(defcustom circe-split-line-length 440
+  "*The maximum length of a single message.
+If a message exceeds this size, it is broken into multiple ones.
+
+IRC allows for lines up to 512 bytes. Two of them are CR LF.
+And a typical message looks like this:
+
+  :nicky!uhuser@host212223.dialin.fnordisp.net PRIVMSG #lazybastards :Hello!
+
+You can limit here the maximum length of the \"Hello!\" part.
+Good luck."
+  :type 'integer
+  :group 'circe)
+
+(defcustom circe-server-flood-margin 10
+  "*A margin on how much excess data we send.
+The flood protection algorithm of Circe works like the one
+detailed in RFC 2813, section 5.8 \"Flood control of clients\".
+
+  * If `circe-server-flood-last-message' is less than the current
+    time, set it equal.
+  * While `circe-server-flood-last-message' is less than
+    `circe-server-flood-margin' seconds ahead of the current
+    time, send a message, and increase
+    `circe-server-flood-last-message' by
+    `circe-server-flood-penalty' for each message."
+  :type 'integer
+  :group 'circe)
+
+(defcustom circe-server-flood-penalty 3
+  "How much we penalize a message.
+See `circe-server-flood-margin' for an explanation of the flood
+protection algorithm."
+  :type 'integer
+  :group 'circe)
+
+(defcustom circe-show-server-modes-p nil
+  "Whether Circe should show server modes.
+This is disabled by default, since server mode changes are almost
+always channel modes after a split."
+  :type 'boolean
+  :group 'circe)
+
+(defcustom circe-server-max-reconnect-attempts 5
+  "How often Circe should attempt to reconnect to the server.
+If this is 0, Circe will not reconnect at all. If this is nil,
+it will try to reconnect forever (not recommended)."
+  :type 'integer
+  :group 'circe)
+
+(defcustom circe-server-coding-system (if (and (fboundp 'coding-system-p)
+                                               (coding-system-p 'undecided)
+                                               (coding-system-p 'utf-8))
+                                          '(utf-8 . undecided)
+                                        nil)
+  "*Coding systems to use for IRC.
+This is either a coding system, which is then used both for
+encoding and decoding, or a cons cell with the encoding in the
+car and the decoding coding system in the cdr."
+  :type '(cons (coding-system :tag "Encoding")
+               (coding-system :tag "Decoding"))
+  :group 'circe)
+
+(defcustom circe-netsplit-delay 60
+  "*The number of seconds a netsplit may be dormant.
+If anything happens with a netsplit after this amount of time,
+the user is re-notified."
+  :type 'number
+  :group 'circe)
+
+(defcustom circe-server-killed-confirmation 'ask
+  "*How to ask for confirmation when a server buffer is killed.
+This can be one of the following values:
+  ask - Ask the user for confirmation
+  ask-and-kill-all - Ask the user, and kill all associated buffers
+  nil - Kill first, ask never"
+  :type '(choice (const :tag "Ask before killing" ask)
+                 (const :tag "Ask, then kill all associated buffers"
+                        ask-and-kill-all)
+                 (const :tag "Don't ask" nil))
+  :group 'circe)
+
+(defcustom circe-channel-killed-confirmation 'ask
+  "*How to ask for confirmation when a channel buffer is killed.
+This can be one of the following values:
+  ask - Ask the user for confirmation
+  nil - Don't ask, just kill"
+  :type '(choid (const :tag "Ask before killing" ask)
+                (const :tag "Don't ask" nil))
+  :group 'circe)
+
+(defcustom circe-track-faces-priorities '(circe-highlight-nick-face
+                                          lui-highlight-face
+                                          circe-my-message-face
+                                          circe-server-face)
+  "A list of faces which should show up in the tracking.
+The first face is kept if the new message has only lower faces,
+or faces that don't show up at all."
+  :type '(repeat face)
+  :group 'circe)
+
+(defcustom circe-server-send-unknown-command-p nil
+  "Non-nil when Circe should just pass on commands it doesn't know.
+E.g. /fnord foo bar would then just send \"fnord foo bar\" to the
+server."
+  :type 'boolean
+  :group 'circe)
+
+(defcustom circe-nick-next-function 'circe-nick-next
+  "*A function that maps a nick to a new nick.
+This is used when the initial nicks are not used. The default
+just appends dashes as long as possible, and then generates
+random nicks."
+  :type 'function
+  :group 'circe)
+
+(defcustom circe-receive-message-functions nil
+  "*Functions called when a message from the IRC server arrives.
+Each function is called with 5 arguments: NICK, USER, HOST,
+COMMAND, and ARGS."
+  :type 'hook
+  :group 'circe)
+
+(defcustom circe-server-connected-hook nil
+  "*Hook run when we successfully connected to a server.
+This is run from a 001 (RPL_WELCOME) message handler."
+  :type 'hook
+  :group 'circe)
+
+(defcustom circe-server-mode-hook nil
+  "*Hook run when circe connects to a server."
+  :type 'hook
+  :group 'circe)
+
+;;;;;;;;;;;;;;;
+;;; Formats ;;;
+;;;;;;;;;;;;;;;
+
+(defgroup circe-format nil
+  "Format strings for Circe.
+All these formats always allow the {mynick} and {target} format
+strings."
+  :prefix "circe-format-"
+  :group 'circe)
+
+(defcustom circe-format-not-tracked '(circe-format-server-message
+                                      circe-format-server-notice
+                                      circe-format-server-numeric
+                                      circe-format-server-topic)
+  "*A list of formats that should not trigger tracking."
+  :type '(repeat symbol)
+  :group 'circe-format)
+
+(defcustom circe-format-server-message "*** {body}"
+  "*The format for generic server messages.
+{body} - The body of the message."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-self-say "> {body}"
+  "*The format for messages to queries or channels.
+{nick} - Your nick.
+{body} - The body of the message."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-self-action "* {mynick} {body}"
+  "*The format for actions to queries or channels.
+{body} - The body of the action."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-self-message "-> *{target}* {body}"
+  "*The format for messages sent to other people outside of queries.
+{target} - The target nick.
+{body} - The body of the message."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-action "* {nick} {body}"
+  "*The format for actions in queries or channels.
+{nick} - The nick doing the action.
+{body} - The body of the action."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-message-action "* *{nick}* {body}"
+  "*The format for actions in messages outside of queries.
+{nick} - The nick doing the action.
+{body} - The body of the action."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-say "<{nick}> {body}"
+  "*The format for normal channel or query talk.
+{nick} - The nick talking.
+{body} - The message."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-message "*{nick}* {body}"
+  "*The format for a message outside of a query.
+{nick} - The originator.
+{body} - The message."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-notice "-{nick}- {body}"
+  "*The format for a notice.
+{nick} - The originator.
+{body} - The notice."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-server-notice "-Server Notice- {body}"
+  "*The format for a server notice.
+{body} - The notice."
+  :type 'string
+  :group 'circe-format)
+
+(defcustom circe-format-server-topic "*** Topic change by {origin}: {new-topic}"
+  "*The format for topic changes.
+{channel} - Where the topic change happened.
+{new-topic} - The new topic.
+{old-topic} - The previous topic.
+{topic-diff} - A colorized diff of the topics."
+  :type 'string
+  :group 'circe-format)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Private variables ;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar circe-server-name nil
+  "The name of the server we're currently connected to.")
+(make-variable-buffer-local 'circe-server-name)
+
+(defvar circe-server-service nil
+  "The service name or port of the server we're currently connected to.")
+(make-variable-buffer-local 'circe-server-service)
+
+(defvar circe-server-network nil
+  "The network name of the server we're currently connected to.")
+(make-variable-buffer-local 'circe-server-network)
+
+(defvar circe-server-nick nil
+  "Our current nick.")
+(make-variable-buffer-local 'circe-server-nick)
+
+(defvar circe-server-user nil
+  "The current user name.")
+(make-variable-buffer-local 'circe-server-user)
+
+(defvar circe-server-realname nil
+  "The current real name.")
+(make-variable-buffer-local 'circe-server-realname)
+
+(defvar circe-server-pass nil
+  "The password for the current server.
+This is required for reconnecting.")
+(make-variable-buffer-local 'circe-server-pass)
+
+(defvar circe-server-process nil
+  "The process of the server connection.")
+(make-variable-buffer-local 'circe-server-process)
+
+(defvar circe-server-registered-p nil
+  "Non-nil when we have registered with the server.")
+(make-variable-buffer-local 'circe-server-registered-p)
+
+(defvar circe-server-last-active-buffer nil
+  "The last active circe buffer.")
+(make-variable-buffer-local 'circe-server-last-active-buffer)
+
+(defvar circe-server-chat-buffers nil
+  "A hash of chat buffers associated with this server.")
+(make-variable-buffer-local 'circe-server-chat-buffers)
+
+(defvar circe-server-filter-data nil
+  "The data that arrived from the server
+but has not been processed yet.")
+(make-variable-buffer-local 'circe-server-filter-data)
+
+(defvar circe-server-processing-p nil
+  "Non-nil when we're currently processing a message.
+Yep, this is a mutex. Why would one need a mutex in Emacs, a
+single-threaded application, you ask? Easy!
+
+When Circe receives a private message, it sets up a new buffer
+for this query. This involves calling the LUI setup functions.
+These in turn, though, do start flyspell. This involves starting
+an external process, in which case Emacs will wait - and when it
+waits, it does accept other stuff from, say, network exceptions.
+So, if someone sends you two messages quickly after each other,
+ispell is started for the first, but might take long enough for
+the second message to be processed first. Nice, isn't it.")
+(make-variable-buffer-local 'circe-server-processing-p)
+
+(defvar circe-display-table nil
+  "A hash table mapping commands to their display functions.")
+
+(defvar circe-server-quitting-p nil
+  "Non-nil when quitting from the server.
+This is only non-nil when the user is quitting the current
+server. See `circe-command-QUIT'.")
+
+(defvar circe-chat-target nil
+  "The current target for the buffer.
+This is either a channel or a nick name.")
+(make-variable-buffer-local 'circe-chat-target)
+
+;;;;;;;;;;;;;;;;;;;
+;;; Server Mode ;;;
+;;;;;;;;;;;;;;;;;;;
+
+(defun circe-server-mode ()
+  "The mode for circe server buffers.
+This buffer represents a server connection. When you kill it, the
+server connection is closed. This will make all associated
+buffers unusable. Be sure to use \\[circe-reconnect] if you want
+to reconnect to the server.
+
+\\{lui-mode-map}"
+  (lui-mode)
+  (make-local-variable 'lui-pre-output-hook)
+  (add-hook 'lui-pre-output-hook 'circe-highlight-nick)
+  (setq major-mode 'circe-server-mode
+        mode-name "Circe Server"
+        lui-input-function 'circe-chat-input)
+  (set (make-local-variable 'lui-possible-completions-function)
+       'circe-server-completions)
+  (lui-set-prompt circe-prompt-string)
+  (goto-char (point-max))
+  (setq circe-server-last-active-buffer (current-buffer))
+  ;; Tab completion should be case-insensitive
+  (set (make-local-variable 'completion-ignore-case)
+       t)
+  (add-hook 'kill-buffer-hook
+            'circe-buffer-killed)
+  (run-hooks 'circe-server-mode-hook))