remove old crap
authorJoerg Jaspert <joerg@debian.org>
Thu, 29 Sep 2016 20:57:26 +0000 (22:57 +0200)
committerJoerg Jaspert <joerg@debian.org>
Thu, 29 Sep 2016 20:57:26 +0000 (22:57 +0200)
139 files changed:
.emacs.d/elisp/elpy/LICENSE [deleted file]
.emacs.d/elisp/elpy/README [deleted file]
.emacs.d/elisp/elpy/elpy-autoloads.el [deleted file]
.emacs.d/elisp/elpy/elpy-pkg.el [deleted file]
.emacs.d/elisp/elpy/elpy-refactor.el [deleted file]
.emacs.d/elisp/elpy/elpy.el [deleted file]
.emacs.d/elisp/elpy/snippets/python-mode/__enter__ [deleted file]
.emacs.d/elisp/elpy/snippets/python-mode/__exit__ [deleted file]
.emacs.d/elisp/elpy/snippets/python-mode/super [deleted file]
.emacs.d/elisp/local/ace-jump-mode.el [deleted file]
.emacs.d/elisp/local/bbdb-pgp.el [deleted file]
.emacs.d/elisp/local/beamer.el [deleted file]
.emacs.d/elisp/local/buildd-gnus.el [deleted file]
.emacs.d/elisp/local/color-theme.el [deleted file]
.emacs.d/elisp/local/crontab-mode.el [deleted file]
.emacs.d/elisp/local/crypt++.el [deleted file]
.emacs.d/elisp/local/diminish.el [deleted file]
.emacs.d/elisp/local/dired+.el [deleted file]
.emacs.d/elisp/local/dired-single.el [deleted file]
.emacs.d/elisp/local/filladapt.el [deleted file]
.emacs.d/elisp/local/flycheck.el [deleted file]
.emacs.d/elisp/local/flymake-css.el [deleted file]
.emacs.d/elisp/local/flymake-easy.el [deleted file]
.emacs.d/elisp/local/gnus-alias.el [deleted file]
.emacs.d/elisp/local/help-fns+.el [deleted file]
.emacs.d/elisp/local/highlight-indentation.el [deleted file]
.emacs.d/elisp/local/highline.el [deleted file]
.emacs.d/elisp/local/ido-better-flex.el [deleted file]
.emacs.d/elisp/local/inf-ruby.el [deleted file]
.emacs.d/elisp/local/json-mode.el [deleted file]
.emacs.d/elisp/local/keyboard-cat-mode.el [deleted file]
.emacs.d/elisp/local/keyfreq.el [deleted file]
.emacs.d/elisp/local/ldap-mode.el [deleted file]
.emacs.d/elisp/local/libmpdee.el [deleted file]
.emacs.d/elisp/local/linum-old.el [deleted file]
.emacs.d/elisp/local/linum.el [deleted file]
.emacs.d/elisp/local/lua-mode.el [deleted file]
.emacs.d/elisp/local/magit-filenotify.el [deleted file]
.emacs.d/elisp/local/magit-find-file.el [deleted file]
.emacs.d/elisp/local/markdown-mode+.el [deleted file]
.emacs.d/elisp/local/markdown-mode.el [deleted file]
.emacs.d/elisp/local/message-utils.el [deleted file]
.emacs.d/elisp/local/mgp-mode-cd.el [deleted file]
.emacs.d/elisp/local/mingus.el [deleted file]
.emacs.d/elisp/local/miniedit.el [deleted file]
.emacs.d/elisp/local/modeline-posn.el [deleted file]
.emacs.d/elisp/local/moinmoin-mode.el [deleted file]
.emacs.d/elisp/local/nnir.el [deleted file]
.emacs.d/elisp/local/nntodo.el [deleted file]
.emacs.d/elisp/local/org-google-weather.el [deleted file]
.emacs.d/elisp/local/ox-reveal.el [deleted file]
.emacs.d/elisp/local/paredit.el [deleted file]
.emacs.d/elisp/local/rainbow-delimiters.el [deleted file]
.emacs.d/elisp/local/rainbow-mode.el [deleted file]
.emacs.d/elisp/local/randomsig.el [deleted file]
.emacs.d/elisp/local/region-bindings-mode.el [deleted file]
.emacs.d/elisp/local/register-list.el [deleted file]
.emacs.d/elisp/local/ruby-hash-syntax.el [deleted file]
.emacs.d/elisp/local/s.el [deleted file]
.emacs.d/elisp/local/screen-lines.el [deleted file]
.emacs.d/elisp/local/smartscan.el [deleted file]
.emacs.d/elisp/local/tidy.el [deleted file]
.emacs.d/elisp/local/typing.el [deleted file]
.emacs.d/elisp/local/undo-tree.el [deleted file]
.emacs.d/elisp/local/update-autoloads.el [deleted file]
.emacs.d/elisp/local/uptimes.el [deleted file]
.emacs.d/elisp/local/volatile-highlights.el [deleted file]
.emacs.d/elisp/local/wdired.el [deleted file]
.emacs.d/elisp/local/worklog.el [deleted file]
.emacs.d/elisp/local/writegood-mode.el [deleted file]
.emacs.d/elisp/local/yafolding.el [deleted file]
.emacs.d/elisp/local/yaml-mode.el [deleted file]
.emacs.d/elisp/mo-git-blame/ChangeLog [deleted file]
.emacs.d/elisp/mo-git-blame/README [deleted file]
.emacs.d/elisp/mo-git-blame/mo-git-blame.el [deleted file]
.emacs.d/elisp/multiple-cursors/.travis.yml [deleted file]
.emacs.d/elisp/multiple-cursors/README.md [deleted file]
.emacs.d/elisp/multiple-cursors/features/edit-lines.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/insert-numbers.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/mark-all-dwim-html.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/mark-all-dwim.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/mark-more.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/mark-things.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/multiple-cursors-core.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/rectangular-region.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/sort-and-reverse.feature [deleted file]
.emacs.d/elisp/multiple-cursors/features/step-definitions/multiple-cursors-steps.el [deleted file]
.emacs.d/elisp/multiple-cursors/features/support/env.el [deleted file]
.emacs.d/elisp/multiple-cursors/mc-cycle-cursors.el [deleted file]
.emacs.d/elisp/multiple-cursors/mc-edit-lines.el [deleted file]
.emacs.d/elisp/multiple-cursors/mc-mark-more.el [deleted file]
.emacs.d/elisp/multiple-cursors/mc-mark-pop.el [deleted file]
.emacs.d/elisp/multiple-cursors/mc-separate-operations.el [deleted file]
.emacs.d/elisp/multiple-cursors/multiple-cursors-autoloads.el [deleted file]
.emacs.d/elisp/multiple-cursors/multiple-cursors-core.el [deleted file]
.emacs.d/elisp/multiple-cursors/multiple-cursors-pkg.el [deleted file]
.emacs.d/elisp/multiple-cursors/multiple-cursors.el [deleted file]
.emacs.d/elisp/multiple-cursors/rectangular-region-mode.el [deleted file]
.emacs.d/elisp/multiple-cursors/run-travis-ci.sh [deleted file]
.emacs.d/elisp/multiple-cursors/util/vendor/.nosearch [deleted file]
.emacs.d/elisp/multiple-cursors/util/vendor/ert.el [deleted file]
.emacs.d/elisp/multiple-cursors/util/vendor/wrap-region.el [deleted file]
.emacs.d/elisp/multiple-cursors/watch-tests.watchr [deleted file]
.emacs.d/elisp/neotree/README.md [deleted file]
.emacs.d/elisp/neotree/icons/close.xpm [deleted file]
.emacs.d/elisp/neotree/icons/leaf.xpm [deleted file]
.emacs.d/elisp/neotree/icons/open.xpm [deleted file]
.emacs.d/elisp/neotree/neotree.el [deleted file]
.emacs.d/elisp/popup/popup-autoloads.el [deleted file]
.emacs.d/elisp/popup/popup.el [deleted file]
.emacs.d/elisp/solarized-emacs/.bumpversion.cfg [deleted file]
.emacs.d/elisp/solarized-emacs/DEV-GUIDE.md [deleted file]
.emacs.d/elisp/solarized-emacs/README.md [deleted file]
.emacs.d/elisp/solarized-emacs/solarized-dark-theme.el [deleted file]
.emacs.d/elisp/solarized-emacs/solarized-light-theme.el [deleted file]
.emacs.d/elisp/solarized-emacs/solarized-theme-pkg.el [deleted file]
.emacs.d/elisp/solarized-emacs/solarized-theme-utils.el [deleted file]
.emacs.d/elisp/solarized-emacs/solarized-theme.el [deleted file]
.emacs.d/elisp/solarized-emacs/solarized.el [deleted file]
.emacs.d/elisp/solarized-emacs/tests/.gitignore [deleted file]
.emacs.d/elisp/solarized-emacs/tests/README.org [deleted file]
.emacs.d/elisp/solarized-emacs/tests/emacs-visual-test.el [deleted file]
.emacs.d/elisp/solarized-emacs/tests/emacs-visual-test.sh [deleted file]
.emacs.d/elisp/solarized-emacs/tests/init.el [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/README-django-fsm.md [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/README-fzf.md [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/c.c [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/django-template.html [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/haskell.hs [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/html.html [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/java.java [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/javascript.js [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/pandoc.md [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/perl.pl [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/php.php [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/python.py [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/ruby.rb [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/shell.sh [deleted file]
.emacs.d/elisp/solarized-emacs/tests/test-files/tex.tex [deleted file]

diff --git a/.emacs.d/elisp/elpy/LICENSE b/.emacs.d/elisp/elpy/LICENSE
deleted file mode 100644 (file)
index 94a9ed0..0000000
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  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
-them 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 prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  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.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey 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;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If 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 convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU 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 that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  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.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-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.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     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
-state 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 3 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, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program 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, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU 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 Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/.emacs.d/elisp/elpy/README b/.emacs.d/elisp/elpy/README
deleted file mode 100644 (file)
index 550f9c7..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-=======================================
-Elpy, the Emacs Lisp Python Environment
-=======================================
-
-Elpy is an Emacs package to bring powerful Python editing to Emacs. It
-combines a number of other packages, both written in Emacs Lisp as
-well as Python.
-
-.. image:: https://secure.travis-ci.org/jorgenschaefer/elpy.png
-   :alt: Build Status
-   :target: http://travis-ci.org/jorgenschaefer/elpy
-   :width: 77px
-   :height: 19px
-
-Documentation
-=============
-
-You can find the documentation `on the wiki`__.
-
-.. __: https://github.com/jorgenschaefer/elpy/wiki
-
-Quick Installation
-==================
-
-You can also read the `detailed installation instructions`__.
-
-.. __: https://github.com/jorgenschaefer/elpy/wiki/Installation
-
-First, install the required Python packages:::
-
-  pip install elpy rope
-
-(Note: If you are installing the development version of elpy, do not
-install the elpy Python package, but simply put the repository in your
-``PYTHONPATH``.)
-
-Evaluate this in your ``*scratch*`` buffer:
-
-.. code-block:: lisp
-
-  (require 'package)
-  (add-to-list 'package-archives
-               '("elpy" . "http://jorgenschaefer.github.io/packages/"))
-
-
-Then run ``M-x package-refresh-contents`` to load the contents of the
-new repository, and ``M-x package-install RET elpy RET`` to install
-elpy.
-
-Finally, add the following to your ``.emacs``:
-
-.. code-block:: lisp
-
-  (package-initialize)
-  (elpy-enable)
-
-Done.
diff --git a/.emacs.d/elisp/elpy/elpy-autoloads.el b/.emacs.d/elisp/elpy/elpy-autoloads.el
deleted file mode 100644 (file)
index f9d4d77..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-;;; elpy-autoloads.el --- automatically extracted autoloads
-;;
-;;; Code:
-(add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
-\f
-;;;### (autoloads nil "elpy" "elpy.el" (21379 40866 309854 780000))
-;;; Generated autoloads from elpy.el
-
-(autoload 'elpy-enable "elpy" "\
-Enable Elpy in all future Python buffers.
-
-When SKIP-INITIALIZE-VARIABLES is non-nil, this will NOT call
-`elpy-initialize-variables' to configure various modes in a way
-that the Elpy author considers sensible. If you'd rather
-configure those modes yourself, pass t here.
-
-\(fn &optional SKIP-INITIALIZE-VARIABLES)" t nil)
-
-(autoload 'elpy-disable "elpy" "\
-Disable Elpy in all future Python buffers.
-
-\(fn)" t nil)
-
-(autoload 'elpy-mode "elpy" "\
-Minor mode in Python buffers for the Emacs Lisp Python Environment.
-
-This mode fully supports virtualenvs. Once you switch a
-virtualenv using \\[pyvenv-workon], you can use
-\\[elpy-rpc-restart] to make the elpy Python process use your
-virtualenv.
-
-See https://github.com/jorgenschaefer/elpy/wiki/Keybindings for a
-more structured list.
-
-\\{elpy-mode-map}
-
-\(fn &optional ARG)" t nil)
-
-;;;***
-\f
-;;;### (autoloads nil nil ("elpy-pkg.el" "elpy-refactor.el") (21379
-;;;;;;  40866 448170 825000))
-
-;;;***
-\f
-;; Local Variables:
-;; version-control: never
-;; no-byte-compile: t
-;; no-update-autoloads: t
-;; End:
-;;; elpy-autoloads.el ends here
diff --git a/.emacs.d/elisp/elpy/elpy-pkg.el b/.emacs.d/elisp/elpy/elpy-pkg.el
deleted file mode 100644 (file)
index e35c9bf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(define-package "elpy" "1.4.1" "Emacs Python Development Environment" '((auto-complete "1.4") (find-file-in-project "3.2") (fuzzy "0.1") (highlight-indentation "0.5.0") (idomenu "0.1") (iedit "0.97") (nose "0.1.1") (pyvenv "1.1") (yasnippet "0.8.0")))
diff --git a/.emacs.d/elisp/elpy/elpy-refactor.el b/.emacs.d/elisp/elpy/elpy-refactor.el
deleted file mode 100644 (file)
index 27f9842..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-;;; elpy-refactor.el --- Refactoring mode for Elpy
-
-;; Copyright (C) 2013  Jorgen Schaefer
-
-;; Author: Jorgen Schaefer <contact@jorgenschaefer.de>
-;; URL: https://github.com/jorgenschaefer/elpy
-
-;; 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 3
-;; 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, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This file provides an interface, including a major mode, to use
-;; refactoring options provided by the Rope library.
-
-;;; Code:
-
-;; We require elpy, but elpy loads us, so we shouldn't load it back.
-;; (require 'elpy)
-
-(defvar elpy-refactor-changes nil
-  "Changes that will be commited on \\[elpy-refactor-commit].")
-(make-variable-buffer-local 'elpy-refactor-current-changes)
-
-(defvar elpy-refactor-window-configuration nil
-  "The old window configuration. Will be restored after commit.")
-(make-variable-buffer-local 'elpy-refactor-window-configuration)
-
-(defun elpy-refactor ()
-  "Run the Elpy refactoring interface for Python code."
-  (interactive)
-  (save-some-buffers)
-  (let* ((selection (elpy-refactor-select
-                     (elpy-refactor-rpc-get-options)))
-         (method (car selection))
-         (args (cdr selection)))
-    (when method
-      (elpy-refactor-create-change-buffer
-       (elpy-refactor-rpc-get-changes method args)))))
-
-(defun elpy-refactor-select (options)
-  "Show the user the refactoring options and let her choose one.
-
-Depending on the chosen option, ask the user for further
-arguments and build the argument.
-
-Return a cons cell of the name of the option and the arg list
-created."
-  (let ((buf (get-buffer-create "*Elpy Refactor*"))
-        (pos (vector (1- (point))
-                     (ignore-errors
-                       (1- (region-beginning)))
-                     (ignore-errors
-                       (1- (region-end)))))
-        (inhibit-read-only t)
-        (options (sort options
-                       (lambda (a b)
-                         (let ((cata (cdr (assq 'category a)))
-                               (catb (cdr (assq 'category b))))
-                           (if (equal cata catb)
-                               (string< (cdr (assq 'description a))
-                                        (cdr (assq 'description b)))
-                             (string< cata catb))))))
-        (key ?a)
-        last-category
-        option-alist)
-    (with-current-buffer buf
-      (erase-buffer)
-      (dolist (option options)
-        (let ((category (cdr (assq 'category option)))
-              (description (cdr (assq 'description option)))
-              (name (cdr (assq 'name option)))
-              (args (cdr (assq 'args option))))
-          (when (not (equal category last-category))
-            (when last-category
-              (insert "\n"))
-            (insert (propertize category 'face 'bold) "\n")
-            (setq last-category category))
-          (insert " (" key ") " description "\n")
-          (setq option-alist (cons (list key name args)
-                                   option-alist))
-          (setq key (1+ key))))
-      (let ((window-conf (current-window-configuration)))
-        (unwind-protect
-            (progn
-              (with-selected-window (display-buffer buf)
-                (goto-char (point-min)))
-              (fit-window-to-buffer (get-buffer-window buf))
-              (let* ((key (read-key "Refactoring action? "))
-                     (entry (cdr (assoc key option-alist))))
-                (kill-buffer buf)
-                (cons (car entry)       ; name
-                      (elpy-refactor-build-arguments (cadr entry)
-                                                     pos))))
-          (set-window-configuration window-conf))))))
-
-(defun elpy-refactor-build-arguments (args pos)
-  "Translate an argument list specification to an argument list.
-
-POS is a vector of three elements, the current offset, the offset
-of the beginning of the region, and the offset of the end of the
-region.
-
-ARGS is a list of triples, each triple containing the name of an
-argument (ignored), the type of the argument, and a possible
-prompt string.
-
-Available types:
-
-  offset       - The offset in the buffer, (1- (point))
-  start_offset - Offset of the beginning of the region
-  end_offset   - Offset of the end of the region
-  string       - A free-form string
-  filename     - A non-existing file name
-  directory    - An existing directory name
-  boolean      - A boolean question"
-  (mapcar (lambda (arg)
-            (let ((type (cadr arg))
-                  (prompt (caddr arg)))
-              (cond
-               ((equal type "offset")
-                (aref pos 0))
-               ((equal type "start_offset")
-                (aref pos 1))
-               ((equal type "end_offset")
-                (aref pos 2))
-               ((equal type "string")
-                (read-from-minibuffer prompt))
-               ((equal type "filename")
-                (expand-file-name
-                 (read-file-name prompt)))
-               ((equal type "directory")
-                (expand-file-name
-                 (read-directory-name prompt)))
-               ((equal type "boolean")
-                (y-or-n-p prompt)))))
-          args))
-
-(defun elpy-refactor-create-change-buffer (changes)
-  "Show the user a buffer of changes.
-
-The user can review the changes and confirm them with
-\\[elpy-refactor-commit]."
-  (when (not changes)
-    (error "No changes for this refactoring action."))
-  (with-current-buffer (get-buffer-create "*Elpy Refactor*")
-    (elpy-refactor-mode)
-    (setq elpy-refactor-changes changes
-          elpy-refactor-window-configuration (current-window-configuration))
-    (let ((inhibit-read-only t))
-      (erase-buffer)
-      (elpy-refactor-insert-changes changes))
-    (select-window (display-buffer (current-buffer)))
-    (goto-char (point-min))))
-
-(defun elpy-refactor-insert-changes (changes)
-  "Format and display the changes described in CHANGES."
-  (insert (propertize "Use C-c C-c to apply the following changes."
-                      'face 'bold)
-          "\n\n")
-  (dolist (change changes)
-    (let ((action (cdr (assq 'action change))))
-      (cond
-       ((equal action "change")
-        (insert (cdr (assq 'diff change))
-                "\n"))
-       ((equal action "create")
-        (let ((type (cdr (assq 'type change))))
-          (if (equal type "file")
-              (insert "+++ " (cdr (assq 'file change)) "\n"
-                      "Create file " (cdr (assq 'file change)) "\n"
-                      "\n")
-            (insert "+++ " (cdr (assq 'path change)) "\n"
-                    "Create directory " (cdr (assq 'path change)) "\n"
-                    "\n"))))
-       ((equal action "move")
-        (insert "--- " (cdr (assq 'source change)) "\n"
-                "+++ " (cdr (assq 'destination change)) "\n"
-                "Rename " (cdr (assq 'type change)) "\n"
-                "\n"))
-       ((equal action "delete")
-        (let ((type (cdr (assq 'type change))))
-          (if (equal type "file")
-              (insert "--- " (cdr (assq 'file change)) "\n"
-                      "Delete file " (cdr (assq 'file change)) "\n"
-                      "\n")
-            (insert "--- " (cdr (assq 'path change)) "\n"
-                    "Delete directory " (cdr (assq 'path change)) "\n"
-                    "\n"))))))))
-
-(defvar elpy-refactor-mode-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map (kbd "C-c C-c") 'elpy-refactor-commit)
-    (define-key map (kbd "q") 'bury-buffer)
-    (define-key map (kbd "h") 'describe-mode)
-    (define-key map (kbd "?") 'describe-mode)
-    map)
-  "The key map for `elpy-refactor-mode'.")
-
-(define-derived-mode elpy-refactor-mode diff-mode "Elpy Refactor"
-  "Mode to display refactoring actions and ask confirmation from the user.
-
-\\{elpy-refactor-mode-map}"
-  :group 'elpy
-  (view-mode 1))
-
-(defun elpy-refactor-commit ()
-  "Commit the changes in the current buffer."
-  (interactive)
-  (when (not elpy-refactor-changes)
-    (error "No changes to commit."))
-  ;; Restore the window configuration as the first thing so that
-  ;; changes below are visible to the user. Especially the point
-  ;; change in possible buffer changes.
-  (set-window-configuration elpy-refactor-window-configuration)
-  (dolist (change elpy-refactor-changes)
-    (let ((action (cdr (assq 'action change))))
-      (cond
-       ((equal action "change")
-        (with-current-buffer (find-file-noselect (cdr (assq 'file change)))
-          ;; This would break for save-excursion as the buffer is
-          ;; truncated, so all markets now point to position 1.
-          (let ((old-point (point)))
-            (undo-boundary)
-            (erase-buffer)
-            (insert (cdr (assq 'contents change)))
-            (undo-boundary)
-            (goto-char old-point))))
-       ((equal action "create")
-        (if (equal (cdr (assq 'type change))
-                   "file")
-            (find-file-noselect (cdr (assq 'file change)))
-          (make-directory (cdr (assq 'path change)))))
-       ((equal action "move")
-        (let* ((source (cdr (assq 'source change)))
-               (dest (cdr (assq 'destination change)))
-               (buf (get-file-buffer source)))
-          (when buf
-            (with-current-buffer buf
-              (setq buffer-file-name dest)
-              (rename-buffer (file-name-nondirectory dest) t)))
-          (rename-file source dest)))
-       ((equal action "delete")
-        (if (equal (cdr (assq 'type change)) "file")
-            (let ((name (cdr (assq 'file change))))
-              (when (y-or-n-p (format "Really delete %s? " name))
-                (delete-file name t)))
-          (let ((name (cdr (assq 'directory change))))
-            (when (y-or-n-p (format "Really delete %s? " name))
-              (delete-directory name nil t))))))))
-  (kill-buffer (current-buffer)))
-
-(defun elpy-refactor-rpc-get-options ()
-  "Get a list of refactoring options from the Elpy RPC."
-  (if (use-region-p)
-      (elpy-rpc "get_refactor_options"
-                (list (elpy-project-root)
-                      (buffer-file-name)
-                      (1- (region-beginning))
-                      (1- (region-end))))
-    (elpy-rpc "get_refactor_options"
-              (list (elpy-project-root)
-                    (buffer-file-name)
-                    (1- (point))))))
-
-(defun elpy-refactor-rpc-get-changes (method args)
-  "Get a list of changes from the Elpy RPC after applying METHOD with ARGS."
-  (elpy-rpc "refactor"
-            (list (elpy-project-root)
-                  (buffer-file-name)
-                  method args)))
-
-(provide 'elpy-refactor)
-;;; elpy-refactor.el ends here
diff --git a/.emacs.d/elisp/elpy/elpy.el b/.emacs.d/elisp/elpy/elpy.el
deleted file mode 100644 (file)
index c4cd807..0000000
+++ /dev/null
@@ -1,1634 +0,0 @@
-;;; elpy.el --- Emacs Lisp Python Environment -*- lexical-binding: t -*-
-
-;; Copyright (C) 2012, 2013  Jorgen Schaefer
-
-;; Author: Jorgen Schaefer <contact@jorgenschaefer.de>
-;; URL: https://github.com/jorgenschaefer/elpy
-;; Version: 1.4.1
-
-;; 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 3
-;; 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, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; The Emacs Lisp Python Environment in Emacs
-
-;; Elpy is an Emacs package to bring powerful Python editing to Emacs.
-;; It combines a number of existing Emacs packages, and uses one of a
-;; selection of Python packages for code introspection.
-
-;; To use, you need to install not only this package, but a few Python
-;; packages as well. See the installation instructions on the wiki.
-
-;; Documentation is available there as well.
-
-;; https://github.com/jorgenschaefer/elpy/wiki
-
-;;; Code:
-
-;; Bad hack. nose.el from MELPA uses defvar-local, which breaks with
-;; older Emacsen. Of course, users use MELPA, so elpy gets blamed.
-(when (not (fboundp 'defvar-local))
-  (defmacro defvar-local (var val &optional docstring)
-    "Compatibility declaration, backported from Emacs 24.4."
-    (list 'progn (list 'defvar var val docstring)
-          (list 'make-variable-buffer-local (list 'quote var)))))
-
-(require 'auto-complete-config)
-(require 'elpy-refactor)
-(require 'etags)
-(require 'find-file-in-project)
-(require 'flymake)
-(require 'highlight-indentation)
-(require 'idomenu)
-(require 'json)
-(require 'nose)
-(require 'python)
-(require 'grep)
-(require 'thingatpt)
-(require 'pyvenv)
-(require 'yasnippet)
-
-
-;;;;;;;;;;;;;;;
-;;; Elpy itself
-
-(defgroup elpy nil
-  "The Emacs Lisp Python Environment."
-  :prefix "elpy-"
-  :group 'languages)
-
-(defcustom elpy-rpc-python-command (if (eq window-system 'w32)
-                                       "pythonw"
-                                     "python")
-  "The command to be used for the RPC backend."
-  :type 'string
-  :group 'elpy)
-
-(defcustom elpy-show-installation-instructions t
-  "Whether Elpy should display installation instructions in a
-help buffer.  If nil, displays a message in the echo area
-instead."
-  :type 'boolean
-  :group 'elpy)
-
-(defcustom elpy-rpc-project-specific nil
-  "Whether Elpy should use a separate process for each project."
-  :type 'boolean
-  :group 'elpy)
-
-(defcustom elpy-rpc-backend nil
-  "Your preferred backend.
-
-Either nil, or a string.
-
-nil    - Select a backend automatically.
-rope   - Use the Rope refactoring library. This will create
-         .ropeproject directories in your project roots.
-jedi   - Use the Jedi completion library.
-native - Do not use any backend, use native Python methods only."
-  :type '(choice (const "rope")
-                 (const "jedi")
-                 (const "native")
-                 (const nil))
-  :group 'elpy)
-
-(defcustom elpy-default-minor-modes '(eldoc-mode
-                                      flymake-mode
-                                      highlight-indentation-mode
-                                      yas-minor-mode
-                                      auto-complete-mode)
-  "Minor modes enabled when `elpy-mode' is enabled."
-  :group 'elpy)
-
-(defcustom elpy-rgrep-ignored-directories '(".tox" "build" "dist")
-  "Directories ignored by `elpy-rgrep-symbol'.
-
-These are prepended to `grep-find-ignored-directories'."
-  :group 'elpy)
-
-(defcustom elpy-mode-hook nil
-  "Hook run when `elpy-mode' is enabled."
-  :group 'elpy)
-
-(defconst elpy-version "1.4.1"
-  "The version of the Elpy lisp code.")
-
-(defun elpy-version ()
-  "Echo the version of Elpy."
-  (interactive)
-  (let ((version elpy-version)
-        (rpc-version (when elpy-rpc--buffer
-                       (or (ignore-errors
-                             (elpy-rpc "version" nil))
-                           "1.1"))))
-    (if (equal version "devel")
-        (setq version "development version")
-      (setq version (format "version %s" version)))
-    (when rpc-version
-      (if (equal rpc-version "devel")
-          (setq rpc-version "development version")
-        (setq rpc-version (format "version %s" rpc-version))))
-    (if rpc-version
-        (message "Elpy %s using the Python backend %s"
-               version rpc-version)
-      (message "Elpy %s" version))))
-
-(defvar elpy-mode-map
-  (let ((map (make-sparse-keymap)))
-    ;; Alphabetical order to make it easier to find free C-c C-X
-    ;; bindings in the future. Heh.
-
-    ;; (define-key map (kbd "<backspace>") 'python-indent-dedent-line-backspace)
-    ;; (define-key map (kbd "<backtab>")   'python-indent-dedent-line)
-    ;; (define-key map (kbd "<tab>")       'ac-trigger-key)
-
-    ;; (define-key map (kbd "C-M-x")   'python-shell-send-defun)
-    ;; (define-key map (kbd "C-c <")   'python-indent-shift-left)
-    ;; (define-key map (kbd "C-c >")   'python-indent-shift-right)
-    (define-key map (kbd "C-c C-c") 'elpy-shell-send-region-or-buffer)
-    (define-key map (kbd "C-c C-z") 'elpy-shell-switch-to-shell)
-    (define-key map (kbd "C-c C-d") 'elpy-doc)
-    (define-key map (kbd "C-c C-f") 'find-file-in-project)
-    ;; (define-key map (kbd "C-c C-i") 'yasnippet-expand)
-    (define-key map (kbd "C-c C-j") 'idomenu)
-    (define-key map (kbd "C-c C-n") 'elpy-flymake-forward-error)
-    (define-key map (kbd "C-c C-o") 'elpy-occur-definitions)
-    (define-key map (kbd "C-c C-p") 'elpy-flymake-backward-error)
-    (define-key map (kbd "C-c C-q") 'elpy-show-defun)
-    (define-key map (kbd "C-c C-r") 'elpy-refactor)
-    (define-key map (kbd "C-c C-s") 'elpy-rgrep-symbol)
-    (define-key map (kbd "C-c C-t") 'elpy-test)
-    (define-key map (kbd "C-c C-v") 'elpy-check)
-    (define-key map (kbd "C-c C-w") 'elpy-doc-websearch)
-    ;; (define-key map (kbd "C-c C-z") 'python-shell-switch-to-shell)
-
-    (define-key map (kbd "<C-down>") 'elpy-nav-forward-definition)
-    (define-key map (kbd "<C-up>")  'elpy-nav-backward-definition)
-    ;; (define-key map (kbd "M-,")     'iedit-mode
-    (define-key map (kbd "M-.")     'elpy-goto-definition)
-    (define-key map (kbd "M-a")     'elpy-nav-backward-statement)
-    (define-key map (kbd "M-e")     'elpy-nav-forward-statement)
-    (define-key map (kbd "M-n")     'elpy-nav-forward-definition)
-    (define-key map (kbd "M-p")     'elpy-nav-backward-definition)
-
-    map)
-  "Key map for the Emacs Lisp Python Environment.")
-
-;;;###autoload
-(defun elpy-enable (&optional skip-initialize-variables)
-  "Enable Elpy in all future Python buffers.
-
-When SKIP-INITIALIZE-VARIABLES is non-nil, this will NOT call
-`elpy-initialize-variables' to configure various modes in a way
-that the Elpy author considers sensible. If you'd rather
-configure those modes yourself, pass t here."
-  (interactive)
-  (when (< emacs-major-version 24)
-    (error "Elpy requires Emacs 24 or newer"))
-  (let ((filename (find-lisp-object-file-name 'python-mode
-                                              'symbol-function)))
-    (when (and filename
-               (string-match "/python-mode\\.el\\'"
-                             filename))
-      (error (concat "You are using python-mode.el. "
-                     "Elpy only works with python.el from "
-                     "Emacs 24 and above"))))
-  (add-hook 'python-mode-hook 'elpy-mode)
-  (when (not skip-initialize-variables)
-    (elpy-initialize-variables)))
-
-;;;###autoload
-(defun elpy-disable ()
-  "Disable Elpy in all future Python buffers."
-  (interactive)
-  (remove-hook 'python-mode-hook 'elpy-mode))
-
-;;;###autoload
-(define-minor-mode elpy-mode
-  "Minor mode in Python buffers for the Emacs Lisp Python Environment.
-
-This mode fully supports virtualenvs. Once you switch a
-virtualenv using \\[pyvenv-workon], you can use
-\\[elpy-rpc-restart] to make the elpy Python process use your
-virtualenv.
-
-See https://github.com/jorgenschaefer/elpy/wiki/Keybindings for a
-more structured list.
-
-\\{elpy-mode-map}"
-  :lighter " Elpy"
-  (when (not (eq major-mode 'python-mode))
-    (error "Elpy only works with `python-mode'"))
-  (cond
-   (elpy-mode
-    (when buffer-file-name
-      (set (make-local-variable 'ffip-project-root) (elpy-project-root)))
-    (set (make-local-variable 'eldoc-documentation-function)
-         'elpy-eldoc-documentation)
-    (add-to-list 'ac-sources 'ac-source-elpy)
-    (add-to-list 'ac-sources 'ac-source-elpy-dot)
-    ;; Enable modes, hence the 1.
-    (run-hook-with-args 'elpy-default-minor-modes 1))
-   (t
-    (kill-local-variable 'ffip-project-root)
-    (kill-local-variable 'eldoc-documentation-function)
-    (setq ac-sources
-          (delq 'ac-source-elpy
-                (delq 'ac-source-elpy-dot
-                      ac-sources))))))
-
-(defun elpy-installation-instructions (message &optional show-elpy-module)
-  "Display a window with installation instructions for the Python
-side of elpy.
-
-MESSAGE is shown as the first paragraph.
-
-If SHOW-ELPY-MODULE is non-nil, the help buffer will first
-explain how to install the elpy module."
-  (if elpy-show-installation-instructions
-      (with-help-window "*Elpy Installation*"
-        (with-current-buffer "*Elpy Installation*"
-          (let ((inhibit-read-only t))
-            (erase-buffer)
-            (insert "Elpy Installation Instructions\n")
-            (insert "\n")
-            (insert message)
-            (when (not (bolp))
-              (insert "\n"))
-            (insert "\n")
-            (when show-elpy-module
-              (insert "Elpy requires the Python module \"elpy\". The module "
-                      "is available from pypi, so you can install it using "
-                      "the following command:\n")
-              (insert "\n")
-              (elpy-installation-command "elpy")
-              (insert "\n"))
-            (insert "To find possible completions, Elpy uses one of two "
-                    "Python modules. Either \"rope\" or \"jedi\". To use "
-                    "Elpy to its fullest potential, you should install "
-                    "either one of them. Which one is a matter of taste. "
-                    "You can try both and even switch at runtime using "
-                    "M-x elpy-set-backend.\n")
-            (insert "\n")
-            (insert "Elpy also uses the Rope module for refactoring options, "
-                    "so you likely want to install it even if you use jedi "
-                    "for completion.\n")
-            (insert "\n")
-            (if (string-match "Python 3" (shell-command-to-string
-                                          "python --version"))
-                (elpy-installation-command "rope_py3k")
-              (elpy-installation-command "rope"))
-            (insert "\n")
-            (elpy-installation-command "jedi")
-            (insert "\n")
-            (insert "If you are using virtualenvs, you can use the "
-                    "M-x pyvenv-workon command to switch to a virtualenv "
-                    "of your choice. Afterwards, running the command "
-                    "M-x elpy-rpc-restart will use the packages in "
-                    "that virtualenv.")
-            (fill-region (point-min) (point-max)))))
-    (message "%s" (substitute-command-keys "You don't have elpy properly installed.  Set `elpy-show-installation-instructions' to t to see the help buffer."))))
-
-(defun elpy-installation-command (python-module)
-  "Insert an installation command description for PYTHON-MODULE."
-  (let* ((do-user-install (not (or (getenv "VIRTUAL_ENV")
-                                   pyvenv-virtual-env)))
-         (user-option (if do-user-install
-                          "--user "
-                        ""))
-         (command (cond
-                   ((executable-find "pip")
-                    (format "pip install %s%s" user-option python-module))
-                   ((executable-find "easy_install")
-                    (format "easy_install %s%s" user-option python-module))
-                   (t
-                    nil))))
-    (if (not command)
-        (insert "... hm. It appears you have neither pip nor easy_install "
-                "available. You might want to get the python-pip or "
-                "or python-setuptools package.\n")
-      (insert-text-button "[run]"
-                          'action (lambda (button)
-                                    (async-shell-command
-                                     (button-get button 'command)))
-                          'command command)
-      (insert " " command "\n"))))
-
-(defun elpy-initialize-variables ()
-  "This sets some variables in other modes we like to set.
-
-If you want to configure your own keys, do so after this function
-is called (usually from `elpy-enable'), or override this function
-using (defalias 'elpy-initialize-variables 'identity)"
-  ;; Local variables in `python-mode'. This is not removed when Elpy
-  ;; is disabled, which can cause some confusion.
-  (add-hook 'python-mode-hook 'elpy-initialize-local-variables)
-
-  ;; Flymake support using flake8, including warning faces.
-  (when (and (executable-find "flake8")
-             (not (executable-find python-check-command)))
-    (setq python-check-command "flake8"))
-
-  ;; `flymake-no-changes-timeout': The original value of 0.5 is too
-  ;; short for Python code, as that will result in the current line to
-  ;; be highlighted most of the time, and that's annoying. This value
-  ;; might be on the long side, but at least it does not, in general,
-  ;; interfere with normal interaction.
-  (setq flymake-no-changes-timeout 60)
-
-  ;; `flymake-start-syntax-check-on-newline': This should be nil for
-  ;; Python, as;; most lines with a colon at the end will mean the next
-  ;; line is always highlighted as error, which is not helpful and
-  ;; mostly annoying.
-  (setq flymake-start-syntax-check-on-newline nil)
-
-  ;; `ac-trigger-key': TAB is a great trigger key. We also need to
-  ;; tell auto-complete about the new trigger key. This is a bad
-  ;; interface to set the trigger key. Don't do this. Just let the
-  ;; user set the key in the keymap. Stop second-guessing the user, or
-  ;; Emacs.
-  (setq ac-trigger-key "TAB")
-  (when (fboundp 'ac-set-trigger-key)
-    (ac-set-trigger-key ac-trigger-key))
-
-  ;; `ac-auto-show-menu': Short timeout because the menu is great.
-  (setq ac-auto-show-menu 0.4)
-
-  ;; `ac-quick-help-delay': I'd like to show the menu right with the
-  ;; completions, but this value should be greater than
-  ;; `ac-auto-show-menu' to show help for the first entry as well.
-  (setq ac-quick-help-delay 0.5)
-
-  ;; Fix some key bindings in ac completions. Using RET when a
-  ;; completion is offered is not usually intended to complete (use
-  ;; TAB for that), but done while typing and the inputer is considere
-  ;; complete, with the intent to simply leave it as is and go to the
-  ;; next line. Much like space will not complete, but leave it as is
-  ;; and insert a space.
-  (define-key ac-completing-map (kbd "RET") nil)
-  (define-key ac-completing-map (kbd "<return>") nil)
-
-  ;; `yas-trigger-key': TAB, as is the default, conflicts with the
-  ;; autocompletion. We also need to tell yasnippet about the new
-  ;; binding. This is a bad interface to set the trigger key. Stop
-  ;; doing this.
-  (let ((old (when (boundp 'yas-trigger-key)
-               yas-trigger-key)))
-    (setq yas-trigger-key "C-c C-i")
-    (when (fboundp 'yas--trigger-key-reload)
-      (yas--trigger-key-reload old)))
-
-  ;; We provide some YASnippet snippets. Add them.
-
-  ;; yas-snippet-dirs can be a string for a single directory. Make
-  ;; sure it's a list in that case so we can add our own entry.
-  (when (not (listp yas-snippet-dirs))
-    (setq yas-snippet-dirs (list yas-snippet-dirs)))
-  (add-to-list 'yas-snippet-dirs
-               (concat (file-name-directory (locate-library "elpy"))
-                       "snippets/")
-               t)
-
-  ;; Now load yasnippets.
-  (yas-reload-all))
-
-(defun elpy-initialize-local-variables ()
-  "Initialize local variables in python-mode.
-
-This should be run from `python-mode-hook'."
-  ;; Set `forward-sexp-function' to nil in python-mode. See
-  ;; http://debbugs.gnu.org/db/13/13642.html
-  (setq forward-sexp-function nil)
-  ;; Enable warning faces for flake8 output.
-  (when (string-match "flake8" python-check-command)
-    ;; COMPAT: Obsolete variable as of 24.4
-    (if (boundp 'flymake-warning-predicate)
-        (set (make-local-variable 'flymake-warning-predicate) "^W[0-9]")
-      (set (make-local-variable 'flymake-warning-re) "^W[0-9]"))))
-
-(defvar elpy-project-root nil
-  "The root of the project the current buffer is in.")
-(make-variable-buffer-local 'elpy-project-root)
-(put 'elpy-project-root 'safe-local-variable 'file-directory-p)
-
-(defun elpy-project-root ()
-  "Return the root of the current buffer's project.
-
-You can set the variable `elpy-project-root' in, for example,
-.dir-locals.el to configure this."
-  (when (not elpy-project-root)
-    (setq elpy-project-root (elpy-project--find-root))
-    (when (equal (directory-file-name (expand-file-name default-directory))
-                 (directory-file-name (expand-file-name "~")))
-      (display-warning 'elpy
-                       (concat "Project root set to your home directory; "
-                               "this can slow down operation considerably")
-                       :warning)))
-  elpy-project-root)
-
-(defun elpy-project--find-root ()
-  "Find the first directory in the tree not containing an __init__.py
-
-If there is no __init__.py in the current directory, return the
-current directory."
-  (cond
-   ((and (functionp 'projectile-project-root)
-         (projectile-project-root))
-    (projectile-project-root))
-   ((file-exists-p (format "%s/__init__.py" default-directory))
-    (locate-dominating-file default-directory
-                            (lambda (dir)
-                              (not (file-exists-p
-                                    (format "%s/__init__.py" dir))))))
-   (t
-    default-directory)))
-
-(defun elpy-set-project-root (new-root)
-  "Set the Elpy project root to NEW-ROOT."
-  (interactive "DNew project root: ")
-  (setq elpy-project-root new-root))
-
-(defun elpy-use-ipython (&optional ipython)
-  "Set defaults to use IPython instead of the standard interpreter.
-
-With prefix arg, prompt for the command to use."
-  (interactive (list (when current-prefix-arg
-                       (read-file-name "IPython command: "))))
-  (when (not ipython)
-    (setq ipython "ipython"))
-  (if (boundp 'python-python-command)
-      ;; Emacs 24 until 24.3
-      (setq python-python-command ipython)
-    ;; Emacs 24.3 and onwards.
-
-    ;; This is from the python.el commentary.
-    ;; Settings for IPython 0.11:
-    (setq python-shell-interpreter ipython
-          python-shell-interpreter-args ""
-          python-shell-prompt-regexp "In \\[[0-9]+\\]: "
-          python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: "
-          python-shell-completion-setup-code
-          "from IPython.core.completerlib import module_completion"
-          python-shell-completion-module-string-code
-          "';'.join(module_completion('''%s'''))\n"
-          python-shell-completion-string-code
-          "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")))
-
-(defun elpy-use-cpython (&optional cpython)
-  "Set defaults to use the standard interpreter instead of IPython.
-
-With prefix arg, prompt for the command to use."
-  (interactive (list (when current-prefix-arg
-                       (read-file-name "Python command: "))))
-  (when (not cpython)
-    (setq cpython "python"))
-  (if (boundp 'python-python-command)
-      ;; Emacs 24 until 24.3
-      (setq python-python-command cpython)
-    ;; Emacs 24.3 and onwards.
-    (setq python-shell-interpreter cpython
-          python-shell-interpreter-args "-i"
-          python-shell-prompt-regexp ">>> "
-          python-shell-prompt-output-regexp ""
-          python-shell-completion-setup-code
-"try:
-    import readline
-except ImportError:
-    def __COMPLETER_all_completions(text): []
-else:
-    import rlcompleter
-    readline.set_completer(rlcompleter.Completer().complete)
-    def __COMPLETER_all_completions(text):
-        import sys
-        completions = []
-        try:
-            i = 0
-            while True:
-                res = readline.get_completer()(text, i)
-                if not res: break
-                i += 1
-                completions.append(res)
-        except NameError:
-            pass
-        return completions"
-          python-shell-completion-module-string-code ""
-          python-shell-completion-string-code
-          "';'.join(__COMPLETER_all_completions('''%s'''))\n")))
-
-(defun elpy-clean-modeline ()
-  "Clean up the mode line by removing some lighters.
-
-It's not necessary to see (Python Elpy yas AC ElDoc) all the
-time. Honestly."
-  (interactive)
-  (setq eldoc-minor-mode-string nil)
-  (dolist (mode '(elpy-mode yas-minor-mode auto-complete-mode
-                            flymake-mode))
-    (setcdr (assq mode minor-mode-alist)
-            (list ""))))
-
-(defun elpy-shell-send-region-or-buffer (&optional arg)
-  "Send the active region or the buffer to the Python shell.
-
-If there is an active region, send that. Otherwise, send the
-whole buffer.
-
-In Emacs 24.3 and later, without prefix argument, this will
-escape the Python idiom of if __name__ == '__main__' to be false
-to avoid accidental execution of code. With prefix argument, this
-code is executed."
-  (interactive "P")
-  ;; Ensure process exists
-  (elpy-shell-get-or-create-process)
-  (if (region-active-p)
-      (python-shell-send-string (elpy--region-without-indentation
-                                 (region-beginning) (region-end)))
-    (python-shell-send-buffer arg))
-  (elpy-shell-switch-to-shell))
-
-(defun elpy--region-without-indentation (beg end)
-  "Return the current region as a string, but without indentation."
-  (let ((region (buffer-substring beg end))
-        (indent-level nil))
-    (catch 'return
-      (with-temp-buffer
-        (insert region)
-        (goto-char (point-min))
-        (while (< (point) (point-max))
-          (cond
-           ((and (not indent-level)
-                 (not (looking-at "[ \t]*$")))
-            (setq indent-level (current-indentation)))
-           ((and indent-level
-                 (not (looking-at "[ \t]*$"))
-                 (< (current-indentation)
-                    indent-level))
-            (error "Can't adjust indentation, consecutive lines indented less than starting line")))
-          (forward-line))
-        (indent-rigidly (point-min)
-                        (point-max)
-                        (- indent-level))
-        (buffer-string)))))
-
-(defun elpy-shell-switch-to-shell ()
-  "Switch to inferior Python process buffer."
-  (interactive)
-  (pop-to-buffer (process-buffer (elpy-shell-get-or-create-process)) t))
-
-(defun elpy-shell-get-or-create-process ()
-  "Get or create an inferior Python process for current buffer and return it."
-  (let* ((bufname (format "*%s*" (python-shell-get-process-name nil)))
-         (proc (get-buffer-process bufname)))
-    (if proc
-        proc
-      (run-python (python-shell-parse-command))
-      (get-buffer-process bufname))))
-
-(defun elpy-check (&optional whole-project-p)
-  "Run `python-check-command' on the current buffer's file,
-
-or the project root if WHOLE-PROJECT-P is non-nil (interactively,
-with a prefix argument)."
-  (interactive "P")
-  (when (not (buffer-file-name))
-    (error "Can't check a buffer without a file."))
-  (save-some-buffers (not compilation-ask-about-save) nil)
-  (let ((process-environment (python-shell-calculate-process-environment))
-        (exec-path (python-shell-calculate-exec-path))
-        (file-name-or-directory (expand-file-name
-                                 (if whole-project-p
-                                     (elpy-project-root)
-                                   (buffer-file-name))))
-        (extra-args (if whole-project-p
-                        " --exclude=.svn,CVS,.bzr,.hg,.git,.tox,build,dist"
-                      "")))
-    (compilation-start (concat python-check-command
-                               " "
-                               (shell-quote-argument file-name-or-directory)
-                               extra-args)
-                       nil
-                       (lambda (mode-name)
-                         "*Python Check*"))))
-
-(defun elpy-show-defun ()
-  "Show the current class and method, in case they are not on
-screen."
-  (interactive)
-  (let ((function (python-info-current-defun)))
-    (if function
-        (message "%s()" function)
-      (message "Not in a function"))))
-
-(defun elpy-goto-definition ()
-  "Go to the definition of the symbol at point, if found."
-  (interactive)
-  (let ((location (elpy-rpc-get-definition)))
-    (if location
-        (elpy-goto-location (car location) (cadr location))
-      (error "No definition found"))))
-
-(defun elpy-goto-location (filename offset)
-  "Show FILENAME at OFFSET to the user."
-  (ring-insert find-tag-marker-ring (point-marker))
-  (let ((buffer (find-file filename)))
-    (with-current-buffer buffer
-      (with-selected-window (get-buffer-window buffer)
-        (goto-char (1+ offset))))))
-
-(defun elpy-nav-forward-statement ()
-  "Move forward one statement.
-
-This will go to the end of the current statement, or the end of
-the next one if already at the end."
-  (interactive)
-  (let ((old (point)))
-    (python-nav-end-of-statement)
-    (when (= old (point))
-      (python-nav-forward-statement)
-      (python-nav-end-of-statement))))
-
-(defun elpy-nav-backward-statement ()
-  "Move backward one statement.
-
-This will go to the beginning of the current statement, or the
-beginning of the previous one if already at the beginning."
-  (interactive)
-  (let ((old (point)))
-    (python-nav-beginning-of-statement)
-    (when (= old (point))
-      (python-nav-backward-statement))))
-
-(defun elpy-nav-forward-definition ()
-  "Move forward to the next definition (class or function)."
-  (interactive)
-  (if (save-excursion
-        (forward-char 1)
-        (re-search-forward "^ *\\(def\\|class\\) " nil t))
-      (goto-char (match-beginning 1))
-    (goto-char (point-max))))
-
-(defun elpy-nav-backward-definition ()
-  "Move backward to the previous definition (class or function)."
-  (interactive)
-  (if (save-excursion
-        (forward-char -1)
-        (re-search-backward "^ *\\(def\\|class\\) " nil t))
-      (goto-char (match-beginning 1))
-    (goto-char (point-min))))
-
-(defun elpy-occur-definitions ()
-  "Display an occur buffer of all definitions in the current buffer.
-
-Also, switch to that buffer."
-  (interactive)
-  (let ((list-matching-lines-face nil))
-    (occur "^ *\\(def\\|class\\) "))
-  (let ((window (get-buffer-window "*Occur*")))
-    (if window
-        (select-window window)
-      (switch-to-buffer "*Occur*"))))
-
-(defun elpy-rgrep-symbol (symbol)
-  "Search for SYMBOL in the current project.
-
-SYMBOL defaults to the symbol at point, or the current region if
-active.
-
-With a prefix argument, prompt for a string to search for."
-  (interactive
-   (list
-    (cond
-     (current-prefix-arg
-      (read-from-minibuffer "Search for symbol: "))
-     ((use-region-p)
-      (buffer-substring-no-properties (region-beginning)
-                                      (region-end)))
-     (t
-      (or (thing-at-point 'symbol)
-          (read-from-minibuffer "Search for symbol: "))))))
-  (grep-compute-defaults)
-  (let ((grep-find-ignored-directories (append elpy-rgrep-ignored-directories
-                                               grep-find-ignored-directories)))
-    (rgrep (format "\\b%s\\b" symbol)
-           "*.py"
-           (elpy-project-root)))
-  (with-current-buffer next-error-last-buffer
-    (let ((inhibit-read-only t))
-      (save-excursion
-        (goto-char (point-min))
-        (when (re-search-forward "^find .*" nil t)
-          (replace-match (format "\\1\nSearching for symbol %s\n"
-                                 symbol)))))))
-
-(defun elpy-test (&optional arg)
-  "Run nosetests on the current project.
-
-With no prefix arg, all tests are run.
-With one prefix arg, only the current test is run.
-With two prefix args, only the current module is run."
-  (interactive "p")
-  (save-some-buffers)
-  (cond
-   ((>= arg 16) (nosetests-module))
-   ((>= arg  4) (nosetests-one))
-   (t           (nosetests-all))))
-
-
-;;;;;;;;;;;;;;;;;
-;;; Documentation
-
-(defvar elpy-doc-history nil
-  "History for the `elpy-doc' command.")
-
-(defun elpy-doc-websearch (what)
-  "Search the Python web documentation for the string WHAT."
-  (interactive
-   (list (read-from-minibuffer "Search Python.org for: "
-                               (symbol-name (symbol-at-point)))))
-  (browse-url
-   (format "https://www.google.com/search?q=site:docs.python.org%%20%s"
-           what)))
-
-(defun elpy-doc (&optional use-pydoc-p symbol)
-  "Show documentation on the thing at point.
-
-If USE-PYDOC is non-nil (interactively, when a prefix argument is
-given), use pydoc on the symbol SYMBOL (interactively, the symbol
-at point). With a single prefix argument, the user gets a
-completion interface for possible symbols. With two prefix
-arguments,  the interface simply asks for a string."
-  (interactive
-   (list current-prefix-arg
-         (let ((initial (with-syntax-table python-dotty-syntax-table
-                          (let ((symbol (symbol-at-point)))
-                            (if symbol
-                                (symbol-name symbol)
-                              nil)))))
-           (cond
-            ((and initial (not current-prefix-arg))
-             initial)
-            ((equal current-prefix-arg '(16))
-             ;; C-u C-u
-             (read-from-minibuffer "Pydoc: " initial nil nil
-                                   'elpy-doc-history))
-            (t
-             (elpy-ido-recursive-completing-read "Pydoc: "
-                                                 'elpy-pydoc--completions
-                                                 "."
-                                                 t
-                                                 initial
-                                                 'elpy-doc-history))))))
-  (let ((doc (if use-pydoc-p
-                 (elpy-rpc-get-pydoc-documentation symbol)
-               (or (elpy-rpc-get-docstring)
-                   ;; This will get the right position for
-                   ;; multiprocessing.Queue(quxqux_|_)
-                   (ignore-errors
-                     (save-excursion
-                       (elpy-nav-backward-statement)
-                       (with-syntax-table python-dotty-syntax-table
-                         (forward-symbol 1)
-                         (backward-char 1))
-                       (elpy-rpc-get-docstring)))))))
-    (if doc
-        (with-help-window "*Python Doc*"
-          (with-current-buffer "*Python Doc*"
-            (erase-buffer)
-            (insert doc)
-            (goto-char (point-min))
-            (while (re-search-forward "\\(.\\)\b\\1" nil t)
-              (replace-match (propertize (match-string 1)
-                                         'face 'bold)
-                             t t))))
-      (message "No documentation available."))))
-
-(defun elpy-pydoc--completions (rcr-prefix)
-  "Return a list of modules available in pydoc starting with RCR-PREFIX."
-  (sort (if (or (not rcr-prefix)
-                (equal rcr-prefix ""))
-            (elpy-rpc "get_pydoc_completions" nil)
-          (elpy-rpc "get_pydoc_completions" (list rcr-prefix)))
-        (lambda (a b)
-          (if (and (string-prefix-p "_" b)
-                   (not (string-prefix-p "_" a)))
-              t
-            (string< (downcase a)
-                     (downcase b))))))
-
-
-;;;;;;;;;;;;
-;;; elpy-ido
-
-;; This is a wrapper around ido-completing-read, which does not
-;; provide for recursive reads by default.
-
-(defvar elpy-ido-rcr-choice-function nil
-  "Internal variable for `elpy-ido-recursive-completing-read'.
-
-Don't touch. Won't help.")
-
-(defvar elpy-ido-rcr-selection nil
-  "Internal variable for `elpy-ido-recursive-completing-read'.
-
-Don't touch. Won't help.")
-
-(defvar elpy-ido-rcr-separator nil
-  "Internal variable for `elpy-ido-recursive-completing-read'.
-
-Don't touch. Won't help.")
-
-(defvar elpy-ido-rcr-choices nil
-  "Internal variable for `elpy-ido-recursive-completing-read'.
-
-Don't touch. Won't help.")
-
-(defun elpy-ido--rcr-selected ()
-  "Return the currently selected compound."
-  (mapconcat #'identity
-             (reverse elpy-ido-rcr-selection)
-             elpy-ido-rcr-separator))
-
-(defun elpy-ido--rcr-setup-keymap ()
-  "Set up the ido keymap for `elpy-ido-recursive-completing-read'."
-  (define-key ido-completion-map (read-kbd-macro elpy-ido-rcr-separator)
-    'elpy-ido-rcr-complete)
-  (define-key ido-completion-map (kbd "DEL") 'elpy-ido-rcr-backspace))
-
-(defun elpy-ido-rcr-complete ()
-  "Complete the current ido completion and attempt an extension."
-  (interactive)
-  (let* ((new (car ido-matches))
-         (full (concat (elpy-ido--rcr-selected)
-                       elpy-ido-rcr-separator
-                       new))
-         (choices (funcall elpy-ido-rcr-choice-function full)))
-    (when choices
-      (setq elpy-ido-rcr-choices choices
-            elpy-ido-rcr-selection (cons new elpy-ido-rcr-selection))
-      (throw 'continue t))))
-
-(defun elpy-ido-rcr-backspace (&optional n)
-  "Delete the last character in the minibuffer.
-
-If the minibuffer is empty, recurse to the last completion."
-  (interactive "p")
-  (if (= (minibuffer-prompt-end) (point))
-      (progn
-        (setq elpy-ido-rcr-selection (cdr elpy-ido-rcr-selection)
-              elpy-ido-rcr-choices (funcall elpy-ido-rcr-choice-function
-                                            (elpy-ido--rcr-selected)))
-        (throw 'continue t))
-    (delete-char (- n))))
-
-(defun elpy-ido-recursive-completing-read (prompt choice-function
-                                                  separator
-                                                  &optional
-                                                  require-match
-                                                  initial-input
-                                                  hist def)
-  "An alternative to `ido-completing-read' supporting recursive selection.
-
-The CHOICE-FUNCTION is called with a prefix string and should
-find all possible selections with this prefix. The user is then
-prompted with those options. When the user hits RET, the
-currently selected option is returned. When the user hits the
-SEPARATOR key, though, the currently selected option is appended,
-with the separator, to the selected prefix, and the user is
-prompted for further completions returned by CHOICE-FUNCTION.
-
-For REQUIRE-MATCH, INITIAL-INPUT, HIST and DEF, see
-`completing-read'."
-  (let ((ido-setup-hook (cons 'elpy-ido--rcr-setup-keymap
-                              ido-setup-hook))
-        (elpy-ido-rcr-choice-function choice-function)
-        (elpy-ido-rcr-separator separator)
-        elpy-ido-rcr-choices
-        elpy-ido-rcr-selection)
-    (when initial-input
-      (let ((parts (reverse (split-string initial-input
-                                          (regexp-quote separator)))))
-        (setq initial-input (car parts)
-              elpy-ido-rcr-selection (cdr parts))))
-    (setq elpy-ido-rcr-choices (funcall choice-function
-                                        (elpy-ido--rcr-selected)))
-    (catch 'return
-      (while t
-        (catch 'continue
-          (throw 'return
-                 (let ((completion (ido-completing-read
-                                    (concat prompt
-                                            (elpy-ido--rcr-selected)
-                                            (if elpy-ido-rcr-selection
-                                                elpy-ido-rcr-separator
-                                              ""))
-                                    elpy-ido-rcr-choices
-                                    nil require-match
-                                    initial-input hist def)))
-                   (concat
-                    (mapconcat (lambda (element)
-                                 (concat element elpy-ido-rcr-separator))
-                               (reverse elpy-ido-rcr-selection)
-                               "")
-                    completion))))
-        ;; after the first run, we don't want initial and default
-        ;; anymore.
-        (setq initial-input nil
-              def nil)))))
-
-
-;;;;;;;;;;;;;;;;;;;;;
-;;; elpy-rpc backends
-
-;; elpy-rpc is a simple JSON-based RPC protocol. It's mostly JSON-RPC
-;; 1.0, except we do not implement the full protocol as we do not need
-;; all the features. Emacs starts a Python subprocess which runs a
-;; special module. The module reads JSON-RPC requests and responds
-;; with JSON-RPC responses.
-
-(defvar elpy-rpc--call-id 0
-  "Call id of the last elpy-rpc call.
-
-Used to associate responses to callbacks.")
-(make-variable-buffer-local 'elpy-rpc--call-id)
-
-(defvar elpy-rpc--buffer-p nil
-  "True iff the current buffer is an elpy-rpc buffer.")
-(make-variable-buffer-local 'elpy-rpc--buffer-p)
-
-(defvar elpy-rpc--buffer nil
-  "The elpy-rpc buffer associated with this buffer.")
-(make-variable-buffer-local 'elpy-rpc--buffer)
-
-(defvar elpy-rpc--backend-project-root nil
-  "The project root used by this backend.")
-(make-variable-buffer-local 'elpy-rpc--backend-project-root)
-
-(defvar elpy-rpc--backend-python-command nil
-  "The Python interpreter used by this backend.")
-(make-variable-buffer-local 'elpy-rpc--backend-python-command)
-
-(defvar elpy-rpc--backend-callbacks nil
-  "The callbacks registered for calls to the current backend.
-
-This maps call IDs to functions.")
-(make-variable-buffer-local 'elpy-rpc--backend-callbacks)
-
-(defvar elpy-rpc--timeout 1
-  "Number of seconds to wait for a response.
-
-You can dynamically bind this to a higher value if you want to
-wait longer.")
-
-(defun elpy-rpc--process-buffer-p (buffer)
-  "Return non-nil when BUFFER is an elpy-rpc buffer."
-  (buffer-local-value 'elpy-rpc--buffer-p buffer))
-
-(defun elpy-rpc--live-p (buffer)
-  "Return non-nil when BUFFER is a live elpy-rpc process."
-  (and buffer
-       (get-buffer-process buffer)
-       (process-live-p (get-buffer-process buffer))))
-
-(defun elpy-rpc--get-rpc-buffer ()
-  "Return the RPC buffer associated with the current buffer,
-creating one if necessary."
-  (cond
-   (elpy-rpc--buffer-p
-    (current-buffer))
-   ((not elpy-mode)
-    (error "Not an Elpy buffer"))
-   ((elpy-rpc--live-p elpy-rpc--buffer)
-    elpy-rpc--buffer)
-   (t
-    (when elpy-rpc--buffer
-      (kill-buffer elpy-rpc--buffer))
-    (setq elpy-rpc--buffer
-          (or (elpy-rpc--find-buffer (elpy-project-root)
-                                     elpy-rpc-python-command)
-              (elpy-rpc--open (elpy-project-root)
-                              elpy-rpc-python-command)))
-    elpy-rpc--buffer)))
-
-(defun elpy-rpc--get-rpc-process ()
-  "Return the RPC process associated with the current buffer,
-creating one if necessary."
-  (get-buffer-process (elpy-rpc--get-rpc-buffer)))
-
-(defun elpy-rpc--find-buffer (project-root python-command)
-  "Return an existing RPC buffer for this project root and command."
-  (let ((result nil))
-    (dolist (buf (buffer-list))
-      (when (elpy-rpc--process-buffer-p buf)
-        (if (not (elpy-rpc--live-p buf))
-            (kill-buffer buf)
-          (with-current-buffer buf
-            (when (and (equal elpy-rpc--backend-project-root
-                              project-root)
-                       (equal elpy-rpc--backend-python-command
-                              python-command))
-              (when result
-                (kill-buffer result))
-              (setq result buf))))))
-    result))
-
-(defun elpy-rpc--open (project-root python-command)
-  "Start a new RPC process and return the associated buffer."
-  (when (and elpy-rpc-backend
-             (not (stringp elpy-rpc-backend)))
-    (error "`elpy-rpc-backend' should be nil or a string."))
-  (let ((new-elpy-rpc-buffer (generate-new-buffer "*elpy-rpc*")))
-    (with-current-buffer new-elpy-rpc-buffer
-      (setq elpy-rpc--buffer-p t
-            elpy-rpc--backend-project-root project-root
-            elpy-rpc--backend-python-command python-command
-            default-directory project-root))
-    (let ((proc (condition-case err
-                    (let ((process-connection-type nil))
-                      (start-process "elpy-rpc"
-                                     new-elpy-rpc-buffer
-                                     python-command
-                                     "-W" "ignore"
-                                     "-m" "elpy.__main__"))
-                  (error
-                   (elpy-installation-instructions
-                    (format "Could not start the Python subprocess: %s"
-                            (cadr err))
-                    t)
-                   (error (cadr err))))))
-      (set-process-query-on-exit-flag proc nil)
-      (set-process-sentinel proc #'elpy-rpc--sentinel)
-      (set-process-filter proc #'elpy-rpc--filter))
-    (cond
-     ;; User requested a specific backend
-     (elpy-rpc-backend
-      (elpy-rpc-set-backend
-       elpy-rpc-backend
-       (lambda (result)
-         ;; Requested backend successfully set
-         t)
-       (lambda (err)
-         (elpy-installation-instructions
-          (format (concat "The %s backend is unavailable. "
-                          "Please install appropriate Python library,\n"
-                          "or change the value of `elpy-rpc-backend'")
-                  elpy-rpc-backend)))))
-     ;; User did not specify a backend, make sure we are not using the
-     ;; native one.
-     (t
-      (elpy-rpc-get-backend
-       (lambda (current-backend)
-         (when (equal current-backend "native")
-           (elpy-installation-instructions
-            (concat "Only the basic native backend is available. "
-                    "You might want to install an appropriate "
-                    "Python library. If you are happy with the native "
-                    "backend, please add the following to your .emacs:"
-                    "\n\n(setq elpy-rpc-backend \"native\")")))))))
-    new-elpy-rpc-buffer))
-
-(defun elpy-rpc--sentinel (process event)
-  "The sentinel for the RPC process."
-  (when event
-    ;; Process sentinels are only ever called when the process
-    ;; finishes.
-    (when elpy-rpc--backend-callbacks
-      (maphash (lambda (call-id callbacks)
-                 (ignore-errors
-                   (funcall (nth 1 callbacks)
-                            (substring event 0 -1))))
-               elpy-rpc--backend-callbacks)
-      (setq elpy-rpc--backend-callbacks nil))))
-
-(defun elpy-rpc--filter (process output)
-  "The filter for the RPC process."
-  (with-current-buffer (process-buffer process)
-    (goto-char (point-max))
-    (insert output)
-    (catch 'return
-      (while (progn
-               (goto-char (point-min))
-               (search-forward "\n" nil t))
-        (goto-char (point-min))
-        (let (json did-read-json)
-          (condition-case err
-              (setq json (let ((json-array-type 'list))
-                           (json-read))
-                    did-read-json t)
-            (error
-             (goto-char (point-min))
-             (cond
-              ((looking-at "elpy-rpc ready\n")
-               (replace-match "")
-               (elpy-rpc--backend-version "1.1"))
-              ((looking-at "elpy-rpc ready (\\([^ ]*\\))\n")
-               (let ((rpc-version (match-string 1)))
-                 (replace-match "")
-                 (elpy-rpc--backend-version rpc-version)))
-              (t
-               (elpy-rpc--handle-unexpected-line)
-               (throw 'return nil)))))
-          (when did-read-json
-            (delete-region (point-min) (1+ (point)))
-            (elpy-rpc--handle-json json)))))))
-
-(defun elpy-rpc--backend-version (rpc-version)
-  "Check that we are using the right version."
-  (when (not (equal rpc-version elpy-version))
-    (with-help-window "*Elpy Version Mismatch*"
-      (with-current-buffer "*Elpy Version Mismatch*"
-        (insert
-         "You are not using the same version of Elpy in Emacs Lisp\n"
-         "compared to Python. This can cause random problems. Please\n"
-         "do make sure to use compatible versions.\n"
-         "\n"
-         "Elpy Emacs Lisp version: " elpy-version "\n"
-         "Elpy Python version....: " rpc-version "\n")))))
-
-(defun elpy-rpc--handle-json (json)
-  "Handle a single JSON object from the RPC backend."
-  (let ((call-id (cdr (assq 'id json)))
-        (error-string (cdr (assq 'error json)))
-        (result (cdr (assq 'result json)))
-        success-callback error-callback)
-    (let ((callbacks (gethash call-id elpy-rpc--backend-callbacks)))
-      (when (not callbacks)
-        (error "Received a response for unknown call-id %s" call-id))
-      (setq success-callback (nth 0 callbacks)
-            error-callback (nth 1 callbacks)
-            orig-buf (nth 2 callbacks))
-      (remhash call-id elpy-rpc--backend-callbacks)
-      (with-current-buffer orig-buf
-        (if error-string
-            (if error-callback
-                (funcall error-callback error-string)
-              (error "Error from RPC: %S" error-string))
-          (funcall success-callback result))))))
-
-(defun elpy-rpc--handle-unexpected-line ()
-  "Handle an unexpected line from the backend.
-
-This is usually an error or backtrace."
-  (let ((missing-module (when (re-search-forward "No module named \\(.*\\)"
-                                                 nil t)
-                          (match-string 1))))
-    (cond
-     ((member missing-module '("elpy" "rope" "jedi"))
-      (elpy-installation-instructions
-       (format "The %s Python module was not found." missing-module)
-       (equal missing-module "elpy")))
-     (missing-module
-      (with-help-window "*Elpy Error*"
-        (with-current-buffer "*Elpy Error*"
-          (view-mode 1)
-          (let ((inhibit-read-only t))
-            (erase-buffer)
-            (insert "There was an error initializing the Elpy backend,\n"
-                    "as the " missing-module " Python module was not found.\n"
-                    "\n"
-                    "Please install this module to use elpy.\n"))
-          (pop-to-buffer (current-buffer)))))
-     (t
-      (let ((data (buffer-string)))
-        (with-help-window "*Elpy Error*"
-          (with-current-buffer "*Elpy Error*"
-            (view-mode 1)
-            (let ((inhibit-read-only t))
-              (erase-buffer)
-              (insert "There was an error in the Elpy backend.\n"
-                      "The following lines were received from Python, and "
-                      "might help identifying\n"
-                      "the problem.\n"
-                      "\n"
-                      data))
-            (pop-to-buffer (current-buffer)))))))))
-
-(defun elpy-rpc--call (method-name params success &optional error)
-  "Call METHOD-NAME with PARAMS in the current RPC backend.
-
-Returns immediately. When a result is available, SUCCESS will be
-called with that value as its sole argument. If an error occurs,
-ERROR is called, if set."
-  (let ((orig-buf (current-buffer)))
-    (with-current-buffer (elpy-rpc--get-rpc-buffer)
-      (setq elpy-rpc--call-id (1+ elpy-rpc--call-id))
-      (elpy-rpc--register-callback elpy-rpc--call-id success error orig-buf)
-      (process-send-string
-       (get-buffer-process (current-buffer))
-       (concat (json-encode `((id . ,elpy-rpc--call-id)
-                              (method . ,method-name)
-                              (params . ,params)))
-               "\n")))))
-
-(defun elpy-rpc--register-callback (call-id success error buffer)
-  "Register for SUCCESS and ERROR to be called when CALL-ID returns.
-
-Must be called in an elpy-rpc buffer."
-  (assert elpy-rpc--buffer-p)
-  (when (not elpy-rpc--backend-callbacks)
-    (setq elpy-rpc--backend-callbacks (make-hash-table :test #'equal)))
-  (puthash call-id (list success error buffer) elpy-rpc--backend-callbacks))
-
-(defun elpy-rpc--call-blocking (method-name params)
-  "Call METHOD-NAME with PARAMS in the current RPC backend.
-
-Returns the result, blocking until this arrived."
-  (let ((result-arrived nil)
-        (error-occured nil)
-        (result-value nil)
-        (error-string nil))
-    (elpy-rpc--call method-name params
-                    (lambda (result)
-                      (setq result-value result
-                            result-arrived t))
-                    (lambda (err)
-                      (setq error-string err
-                            error-occured t)))
-    (let ((end-time (time-add (current-time)
-                              (seconds-to-time elpy-rpc--timeout))))
-      (while (and (time-less-p (current-time)
-                               end-time)
-                  (not (or result-arrived
-                           error-occured)))
-        (accept-process-output (elpy-rpc--get-rpc-process)
-                               elpy-rpc--timeout)))
-    (cond
-     (error-occured
-      (error error-string))
-     (result-arrived
-      result-value)
-     (t
-      (error "Timeout in RPC call from backend")))))
-
-(defun elpy-rpc (method params &optional success error)
-  "Call METHOD with PARAMS in the backend.
-
-If SUCCESS and optionally ERROR is given, return immediately and
-call those when a result is available. Otherwise, wait for a
-result and return that."
-  (if success
-      (elpy-rpc--call method params success error)
-    (elpy-rpc--call-blocking method params)))
-
-(defun elpy-rpc-restart ()
-  "Restart the current RPC process."
-  (interactive)
-  (dolist (b (buffer-list))
-    (when (buffer-local-value 'elpy-rpc--buffer-p b)
-      (kill-buffer b))))
-
-(defun elpy-rpc-traceback ()
-  "Print the last traceback from the backend."
-  (interactive)
-  (let ((traceback (elpy-rpc "get_traceback" nil)))
-    (with-current-buffer (get-buffer-create "*Elpy Traceback*")
-      (with-help-window "*Elpy Traceback*"
-        (let ((inhibit-read-only t))
-          (erase-buffer)
-          (if traceback
-              (insert traceback)
-            (insert "No traceback")))))))
-
-(defun elpy-rpc-get-completions (&optional success error)
-  "Call the find_completions API function.
-
-Returns a list of possible completions for the Python symbol at
-point."
-  (elpy-rpc "get_completions"
-            (list (expand-file-name (elpy-project-root))
-                  buffer-file-name
-                  (buffer-string)
-                  (- (point)
-                     (point-min)))
-            success error))
-
-(defun elpy-rpc-get-calltip (&optional success error)
-  "Call the get_calltip API function.
-
-Returns a calltip string for the function call at point."
-  (elpy-rpc "get_calltip"
-            (list (expand-file-name (elpy-project-root))
-                  buffer-file-name
-                  (buffer-string)
-                  (- (point)
-                     (point-min)))
-            success error))
-
-(defun elpy-rpc-get-docstring (&optional success error)
-  "Call the get_docstring API function.
-
-Returns a possible multi-line docstring for the symbol at point."
-  (elpy-rpc "get_docstring"
-            (list (expand-file-name (elpy-project-root))
-                  buffer-file-name
-                  (buffer-string)
-                  (- (point)
-                     (point-min)))
-            success error))
-
-(defun elpy-rpc-get-pydoc-documentation (symbol &optional success error)
-  "Get the Pydoc documentation for SYMBOL.
-
-Returns a possible multi-line docstring."
-    (elpy-rpc "get_pydoc_documentation" (list symbol)
-              success error))
-
-(defun elpy-rpc-get-definition (&optional success error)
-  "Call the find_definition API function.
-
-Returns nil or a list of (filename, point)."
-  (elpy-rpc "get_definition"
-            (list (expand-file-name (elpy-project-root))
-                  buffer-file-name
-                  (buffer-string)
-                  (- (point)
-                     (point-min)))
-            success error))
-
-(defun elpy-rpc-get-backend (&optional success error)
-  "Call the get_backend API function.
-
-Returns the name of the backend currently in use."
-  (elpy-rpc "get_backend" nil success error))
-
-(defun elpy-rpc-get-available-backends (&optional success  error)
-  "Call the get_available_backends API function.
-
-Returns a list of names of available backends, depending on which
-Python libraries are installed."
-  (elpy-rpc "get_available_backends" nil success error))
-
-(defun elpy-rpc-set-backend (backend &optional success error)
-  "Call the set_backend API function.
-
-This changes the current backend to the named backend. Raises an
-error if the backend is not supported."
-  (interactive
-   (list (completing-read
-          (format "Switch elpy backend (currently %s): "
-                  (elpy-rpc-get-backend))
-          (elpy-rpc-get-available-backends)
-          nil t)))
-  (elpy-rpc "set_backend" (list backend) success error))
-
-(defalias 'elpy-set-backend 'elpy-rpc-set-backend)
-
-
-;;;;;;;;;
-;;; Eldoc
-
-(defun elpy-eldoc-documentation ()
-  "Return a call tip for the python call at point."
-  (elpy-rpc-get-calltip
-   (lambda (calltip)
-     (eldoc-message
-      (when calltip
-        (with-temp-buffer
-          ;; multiprocessing.queues.Queue.cancel_join_thread(self)
-          (insert calltip)
-          (goto-char (point-min))
-          ;; First, remove the whole path up to the second-to-last dot. We
-          ;; retain the class just to make it nicer.
-          (while (search-forward "." nil t)
-            nil)
-          (when (search-backward "." nil t 2)
-            (delete-region (point-min) (1+ (point))))
-          ;; Then remove the occurrence of "self", that's not passed by
-          ;; the user.
-          (when (re-search-forward "(self\\(, \\)?" nil t)
-            (replace-match "("))
-          (goto-char (point-min))
-          ;; Lastly, we'd like to highlight the argument are on.
-
-          ;; This is tricky with keyword vs. positions arguments, and
-          ;; possibly quite complex argument values.
-
-          ;; Hence, we don't do anything for now.
-          (buffer-string))))))
-  ;; Return the last message until we're done
-  eldoc-last-message)
-
-
-;;;;;;;;;;;
-;;; Flymake
-
-(eval-after-load "flymake"
-  '(add-to-list 'flymake-allowed-file-name-masks
-                '("\\.py\\'" elpy-flymake-python-init)))
-
-(defun elpy-flymake-python-init ()
-  ;; Make sure it's not a remote buffer as flymake would not work
-  (when (not (file-remote-p buffer-file-name))
-    (let* ((temp-file (flymake-init-create-temp-buffer-copy
-                       'flymake-create-temp-inplace)))
-      (list python-check-command
-            (list temp-file)
-            ;; Run flake8 from / to avoid import problems (#169)
-            "/"))))
-
-(defun elpy-flymake-forward-error ()
-  "Move forward to the next Flymake error and show a
-description."
-  (interactive)
-  (flymake-goto-next-error)
-  (elpy-flymake-show-error))
-
-(defun elpy-flymake-backward-error ()
-  "Move backward to the previous Flymake error and show a
-description."
-  (interactive)
-  (flymake-goto-prev-error)
-  (elpy-flymake-show-error))
-
-(defun elpy-flymake-show-error ()
-  "Show the flymake error message at point."
-  (let* ((lineno (line-number-at-pos))
-         (err-info (car (flymake-find-err-info flymake-err-info
-                                               lineno)))
-         (text (mapconcat #'flymake-ler-text
-                          err-info
-                          ", ")))
-    (message "%s" text)))
-
-
-;;;;;;;;;;;;;
-;;; Yasnippet
-
-;; No added configuration needed. Nice mode. :o)
-
-
-;;;;;;;;;;;;;;;;;
-;;; Auto-Complete
-
-(defvar elpy--ac-cache nil
-  "List of current expansions and docstrings.")
-
-(defun elpy--ac-init ()
-  "Initialize a completion.
-
-This will call Python in the background and initialize
-`elpy--ac-cache' when it returns."
-  (when (not (eq (python-syntax-context-type)
-                 'comment))
-    (elpy-rpc-get-completions
-     (lambda (result)
-       (setq elpy--ac-cache nil)
-       (dolist (completion result)
-         (let ((name (car completion))
-               (doc (cadr completion)))
-           (when (not (string-prefix-p "_" name))
-             (push (cons (concat ac-prefix name)
-                         doc)
-                   elpy--ac-cache))))
-       (ac-start))
-     (lambda (err)
-       (message "Can't get completions: %s" err)))))
-
-(defun elpy--ac-candidates ()
-  "Return a list of possible expansions at points.
-
-This uses `elpy--ac-cache'."
-  (mapcar (lambda (info)
-            (popup-make-item
-             (car info)
-             :symbol "p"
-             :summary (when (and (cdr info)
-                                 (not (equal (cdr info) "")))
-                        "->")))
-          elpy--ac-cache))
-
-(defun elpy--ac-document (name)
-  "Return the documentation for the symbol NAME."
-  (let ((doc (assoc-default name elpy--ac-cache)))
-    ;; popup.el has a bug when the docstring is the empty string. See
-    ;; elpy tickets #182 and #154 as well as pull request #183 for
-    ;; details.
-    (if (equal doc "")
-        nil
-      doc)))
-
-(ac-define-source elpy
-  '((init       . elpy--ac-init)
-    (candidates . elpy--ac-candidates)
-    (document   . elpy--ac-document)
-    (symbol     . "p")))
-
-(ac-define-source elpy-dot
-  '((init       . elpy--ac-init)
-    (candidates . elpy--ac-candidates)
-    (document   . elpy--ac-document)
-    (symbol     . "p")
-    (prefix     . c-dot)
-    (requires   . 0)))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Backwards compatibility
-
-;; Functions for Emacs 24 before 24.3
-(when (not (fboundp 'python-shell-send-string))
-  (defalias 'python-shell-send-string 'python-send-string))
-(when (not (fboundp 'python-shell-send-buffer))
-  (defun python-shell-send-buffer (&optional arg)
-    (python-send-buffer)))
-(when (not (fboundp 'python-info-current-defun))
-  (defalias 'python-info-current-defun 'python-current-defun))
-(when (not (fboundp 'python-nav-end-of-statement))
-  (defalias 'python-nav-end-of-statement 'python-end-of-statement))
-(when (not (fboundp 'python-nav-beginning-of-statement))
-  (require 'thingatpt)
-  (defalias 'python-nav-beginning-of-statement 'beginning-of-sexp))
-(when (not (fboundp 'python-nav-forward-statement))
-  (defalias 'python-nav-forward-statement 'forward-sexp))
-(when (not (fboundp 'python-nav-backward-statement))
-  (defalias 'python-nav-backward-statement 'backward-sexp))
-
-(when (not (fboundp 'python-shell-get-process-name))
-  (defun python-shell-get-process-name (dedicated)
-    "Compatibility function for older Emacsen."
-    "Python"))
-(when (not (fboundp 'python-shell-parse-command))
-  (defun python-shell-parse-command ()
-    "Compatibility function for older Emacsen."
-    python-python-command))
-(when (not (fboundp 'python-shell-calculate-process-environment))
-  (defun python-shell-calculate-process-environment ()
-    "Compatibility function for older Emacsen."
-    process-environment))
-(when (not (fboundp 'python-shell-calculate-exec-path))
-  (defun python-shell-calculate-exec-path ()
-    "Compatibility function for older Emacsen."
-    exec-path))
-
-;; Emacs 24.2 made `locate-dominating-file' accept a predicate instead
-;; of a string. Simply overwrite the current one, it's
-;; backwards-compatible. The code below is taken from Emacs 24.3.
-(when (or (< emacs-major-version 24)
-          (and (= emacs-major-version 24)
-               (<= emacs-minor-version 2)))
-  (defun locate-dominating-file (file name)
-    "Look up the directory hierarchy from FILE for a directory containing NAME.
-Stop at the first parent directory containing a file NAME,
-and return the directory.  Return nil if not found.
-Instead of a string, NAME can also be a predicate taking one argument
-\(a directory) and returning a non-nil value if that directory is the one for
-which we're looking."
-    ;; We used to use the above locate-dominating-files code, but the
-    ;; directory-files call is very costly, so we're much better off doing
-    ;; multiple calls using the code in here.
-    ;;
-    ;; Represent /home/luser/foo as ~/foo so that we don't try to look for
-    ;; `name' in /home or in /.
-    (setq file (abbreviate-file-name file))
-    (let ((root nil)
-          ;; `user' is not initialized outside the loop because
-          ;; `file' may not exist, so we may have to walk up part of the
-          ;; hierarchy before we find the "initial UID".  Note: currently unused
-          ;; (user nil)
-          try)
-      (while (not (or root
-                      (null file)
-                      ;; FIXME: Disabled this heuristic because it is sometimes
-                      ;; inappropriate.
-                      ;; As a heuristic, we stop looking up the hierarchy of
-                      ;; directories as soon as we find a directory belonging
-                      ;; to another user.  This should save us from looking in
-                      ;; things like /net and /afs.  This assumes that all the
-                      ;; files inside a project belong to the same user.
-                      ;; (let ((prev-user user))
-                      ;;   (setq user (nth 2 (file-attributes file)))
-                      ;;   (and prev-user (not (equal user prev-user))))
-                      (string-match locate-dominating-stop-dir-regexp file)))
-        (setq try (if (stringp name)
-                      (file-exists-p (expand-file-name name file))
-                    (funcall name file)))
-        (cond (try (setq root file))
-              ((equal file (setq file (file-name-directory
-                                       (directory-file-name file))))
-               (setq file nil))))
-      (if root (file-name-as-directory root))))
-  )
-
-;; highlight-indentation 0.5 does not use modes yet
-(when (not (fboundp 'highlight-indentation-mode))
-  (defun highlight-indentation-mode (on-or-off)
-    (cond
-     ((and (= on-or-off 1)
-           (not highlight-indent-active))
-      (highlight-indentation))
-     ((and (= on-or-off 0)
-           highlight-indent-active)
-      (highlight-indentation)))))
-
-(provide 'elpy)
-;;; elpy.el ends here
diff --git a/.emacs.d/elisp/elpy/snippets/python-mode/__enter__ b/.emacs.d/elisp/elpy/snippets/python-mode/__enter__
deleted file mode 100644 (file)
index 4c74b66..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- mode: snippet -*-
-# name: __enter__
-# key: __enter__
-# expand-env: ((yas-indent-line nil))
-# --
-__enter__(self):
-        $1
-
-    def __exit__(self, exc_type, exc_value, traceback):
-        $2
diff --git a/.emacs.d/elisp/elpy/snippets/python-mode/__exit__ b/.emacs.d/elisp/elpy/snippets/python-mode/__exit__
deleted file mode 100644 (file)
index e04a433..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- mode: snippet -*-
-# name: __exit__
-# key: __exit__
-# --
-__exit__(self, exc_type, exc_value, traceback):
-    $0
diff --git a/.emacs.d/elisp/elpy/snippets/python-mode/super b/.emacs.d/elisp/elpy/snippets/python-mode/super
deleted file mode 100644 (file)
index 6361b45..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: snippet -*-
-# name: super
-# key: super
-# expand-env: ((class (lambda () (let ((info (python-info-current-defun))) (if info (car (split-string info "\\.")) "class")))) (method (lambda () (let ((info (python-info-current-defun))) (if info (cadr (split-string info "\\.")) "method")))) (object (lambda () (if (and (python-nav-beginning-of-defun) (re-search-forward "(\\([^),=]*\\)" nil t)) (match-string-no-properties 1) "self"))))
-# --
-super(`(funcall class)`, `(funcall object)`).`(funcall method)`($1)
-        $0
\ No newline at end of file
diff --git a/.emacs.d/elisp/local/ace-jump-mode.el b/.emacs.d/elisp/local/ace-jump-mode.el
deleted file mode 100644 (file)
index b1914d4..0000000
+++ /dev/null
@@ -1,1082 +0,0 @@
-;;; ace-jump-mode.el --- a quick cursor location minor mode for emacs -*- coding: utf-8-unix -*-
-
-;; Copyright (C) 2012 Free Software Foundation, Inc.
-
-;; Author   : winterTTr <winterTTr@gmail.com>
-;; URL      : https://github.com/winterTTr/ace-jump-mode/
-;; Version  : 2.0.RC
-;; Keywords : motion, location, cursor
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;;; INTRODUCTION
-;;
-
-;; What's this?
-;;
-;; It is a minor mode for Emacs. It can help you to move your cursor
-;; to ANY position in emacs by using only 3 times key press. 
-
-;; Where does ace jump mode come from ?
-;;
-;; I firstly see such kind of moving style is in a vim plugin called
-;; EasyMotion. It really attract me a lot. So I decide to write
-;; one for Emacs and MAKE IT BETTER.
-;;
-;; So I want to thank to :
-;;         Bartlomiej P.   for his PreciseJump
-;;         Kim Silkeb√¶kken for his EasyMotion
-
-
-;; What's ace-jump-mode ?
-;;
-;; ace-jump-mode is an fast/direct cursor location minor mode. It will
-;; create the N-Branch search tree internal and marks all the possible
-;; position with predefined keys in within the whole emacs view.
-;; Allowing you to move to the character/word/line almost directly.
-;;
-
-;;; Usage
-;;
-;; Add the following code to your init file, of course you can select
-;; the key that you prefer to.
-;; ----------------------------------------------------------
-;; ;;
-;; ;; ace jump mode major function
-;; ;; 
-;; (add-to-list 'load-path "/full/path/where/ace-jump-mode.el/in/")
-;; (autoload
-;;   'ace-jump-mode
-;;   "ace-jump-mode"
-;;   "Emacs quick move minor mode"
-;;   t)
-;; ;; you can select the key you prefer to
-;; (define-key global-map (kbd "C-c SPC") 'ace-jump-mode)
-;;
-;; ;; 
-;; ;; enable a more powerful jump back function from ace jump mode
-;; ;;
-;; (autoload
-;;   'ace-jump-mode-pop-mark
-;;   "ace-jump-mode"
-;;   "Ace jump back:-)"
-;;   t)
-;; (eval-after-load "ace-jump-mode"
-;;   '(ace-jump-mode-enable-mark-sync))
-;; (define-key global-map (kbd "C-x SPC") 'ace-jump-mode-pop-mark)
-;; 
-;; ;;If you use viper mode :
-;; (define-key viper-vi-global-user-map (kbd "SPC") 'ace-jump-mode)
-;; ;;If you use evil
-;; (define-key evil-normal-state-map (kbd "SPC") 'ace-jump-mode)
-;; ----------------------------------------------------------
-
-;;; For more information
-;; Intro Doc: https://github.com/winterTTr/ace-jump-mode/wiki
-;; FAQ      : https://github.com/winterTTr/ace-jump-mode/wiki/AceJump-FAQ
-
-;;; Code:
-
-(eval-when-compile
-  (require 'cl))
-
-;;;; ============================================
-;;;; Utilities for ace-jump-mode
-;;;; ============================================
-
-;; ---------------------
-;; aj-position
-;; ---------------------
-
-;; make a position in a visual area
-(defstruct aj-position offset visual-area)
-
-(defmacro aj-position-buffer (aj-pos)
-  "Get the buffer object from `aj-position'."
-  `(aj-visual-area-buffer (aj-position-visual-area ,aj-pos)))
-
-(defmacro aj-position-window (aj-pos)
-  "Get the window object from `aj-position'."
-  `(aj-visual-area-window (aj-position-visual-area ,aj-pos)))
-
-(defmacro aj-position-frame (aj-pos)
-  "Get the frame object from `aj-position'."
-  `(aj-visual-area-frame (aj-position-visual-area ,aj-pos)))
-
-(defmacro aj-position-recover-buffer (aj-pos)
-  "Get the recover-buffer object from `aj-position'."
-  `(aj-visual-area-recover-buffer (aj-position-visual-area ,aj-pos)))
-
-
-
-;; ---------------------
-;; aj-visual-area
-;; ---------------------
-
-;; a record for all the possible visual area
-;; a visual area is a window that showing some buffer in some frame.
-(defstruct aj-visual-area buffer window frame recover-buffer)
-
-
-;; ---------------------
-;; a FIFO queue implementation
-;; ---------------------
-(defstruct aj-queue head tail)
-
-(defun aj-queue-push (item q)
-  "enqueue"
-  (let ( (head (aj-queue-head q) )
-         (tail (aj-queue-tail q) )
-         (c (list item) ) )
-    (cond
-     ((null (aj-queue-head q))
-      (setf (aj-queue-head q) c)
-      (setf (aj-queue-tail q) c))
-     (t
-      (setf (cdr (aj-queue-tail q)) c)
-      (setf (aj-queue-tail q) c)))))
-
-(defun aj-queue-pop (q)
-  "dequeue"
-  (if (null (aj-queue-head q))
-      (error "[AceJump] Interal Error: Empty queue"))
-
-  (let ((ret (aj-queue-head q)))
-    (if (eq ret (aj-queue-tail q))
-        ;; only one item left
-        (progn
-          (setf (aj-queue-head q) nil)
-          (setf (aj-queue-tail q) nil))
-      ;; multi item left, move forward the head
-      (setf (aj-queue-head q) (cdr ret)))
-    (car ret)))
-
-
-
-;;; main code start here
-
-;; register as a minor mode
-(or (assq 'ace-jump-mode minor-mode-alist)
-    (nconc minor-mode-alist
-           (list '(ace-jump-mode ace-jump-mode))))
-
-;; custoize variable
-(defvar ace-jump-word-mode-use-query-char t
-  "If we need to ask for the query char before enter `ace-jump-word-mode'")
-
-(defvar ace-jump-mode-case-fold case-fold-search
-  "If non-nil, the ace-jump mode will ignore case.
-
-The default value is set to the same as `case-fold-search'.")
-
-(defvar ace-jump-mode-mark-ring nil
-  "The list that is used to store the history for jump back.")
-
-(defvar ace-jump-mode-mark-ring-max 100
-  "The max length of `ace-jump-mode-mark-ring'")
-
-
-(defvar ace-jump-mode-gray-background t
-  "By default, when there is more than one candidate, the ace
-jump mode will gray the background and then mark the possible
-candidate position. Set this to nil means do not gray
-background.")
-
-(defvar ace-jump-mode-scope 'global
-  "Define what is the scope that ace-jump-mode works.
-
-Now, there three kind of values for this:
-1. 'global : ace jump can work across any window and frame, this is also the default.
-2. 'frame  : ace jump will work for the all windows in current frame.
-3. 'window : ace jump will only work on current window only.
-            This is the same behavior for 1.0 version.")
-
-(defvar ace-jump-mode-detect-punc t
-  "When this is non-nil, the ace jump word mode will detect the
-char that is not alpha or number. Then, if the query char is a
-printable punctuaction, we will use char mode to start the ace
-jump mode. If it is nil, an error will come up when
-non-alpha-number is given under word mode.")
-
-
-(defvar ace-jump-mode-submode-list
-  '(ace-jump-word-mode
-    ace-jump-char-mode
-    ace-jump-line-mode)
-  "*The mode list when start ace jump mode.
-The sequence is the calling sequence when give prefix argument.
-
-Such as:
-  If you use the default sequence, which is
-      '(ace-jump-word-mode
-        ace-jump-char-mode
-        ace-jump-line-mode)
-and using key to start up ace jump mode, such as 'C-c SPC',
-then the usage to start each mode is as below:
-
-   C-c SPC           ==> ace-jump-word-mode
-   C-u C-c SPC       ==> ace-jump-char-mode
-   C-u C-u C-c SPC   ==> ace-jump-line-mode
-
-Currently, the valid submode is:
-   `ace-jump-word-mode'
-   `ace-jump-char-mode'
-   `ace-jump-line-mode'
-
-")
-
-(defvar ace-jump-mode-move-keys
-  (nconc (loop for i from ?a to ?z collect i)
-         (loop for i from ?A to ?Z collect i))
-  "*The keys that used to move when enter AceJump mode.
-Each key should only an printable character, whose name will
-fill each possible location.
-
-If you want your own moving keys, you can custom that as follow,
-for example, you only want to use lower case character:
-\(setq ace-jump-mode-move-keys (loop for i from ?a to ?z collect i)) ")
-
-
-;;; some internal variable for ace jump
-(defvar ace-jump-mode nil
-  "AceJump minor mode.")
-(defvar ace-jump-background-overlay-list nil
-  "Background overlay which will grey all the display.")
-(defvar ace-jump-search-tree nil
-  "N-branch Search tree. Every leaf node holds the overlay that
-is used to highlight the target positions.")
-(defvar ace-jump-query-char nil
-  "Save the query char used between internal mode.")
-(defvar ace-jump-current-mode nil
-  "Save the current mode.
-See `ace-jump-mode-submode-list' for possible value.")
-
-(defvar ace-jump-recover-visual-area-list nil
-  "Save the ace jump aj-visual-area structure list.
-
-Sometimes, the different window may display the same buffer.  For
-this case, we need to create a indirect buffer for them to make
-ace jump overlay can work across the differnt window with the
-same buffer. When ace jump ends, we need to recover the window to
-its original buffer.")
-(defvar ace-jump-sync-emacs-mark-ring nil
-  "When this variable is not-nil, everytime `ace-jump-mode-pop-mark' is called,
-ace jump will try to remove the same mark from buffer local mark
-ring and global-mark-ring, which help you to sync the mark
-information between emacs and ace jump.
-
-Note, never try to set this variable manually, this is for ace
-jump internal use.  If you want to change it, use
-`ace-jump-mode-enable-mark-sync' or
-`ace-jump-mode-disable-mark-sync'.")
-
-(defgroup ace-jump nil
-  "ace jump group"
-  :group 'convenience)
-
-;;; define the face
-(defface ace-jump-face-background
-  '((t (:foreground "gray40")))
-  "Face for background of AceJump motion"
-  :group 'ace-jump)
-
-
-(defface ace-jump-face-foreground
-  '((((class color)) (:foreground "red"))
-    (((background dark)) (:foreground "gray100"))
-    (((background light)) (:foreground "gray0"))
-    (t (:foreground "gray100")))
-  "Face for foreground of AceJump motion"
-  :group 'ace-jump)
-
-
-(defvar ace-jump-mode-before-jump-hook nil
-  "Function(s) to call just before moving the cursor to a selected match")
-
-(defvar ace-jump-mode-end-hook nil
-  "Function(s) to call when ace-jump-mode is going to end up")
-
-(defvar ace-jump-allow-invisible nil
-  "Control if ace-jump should select the invisible char as candidate.
-Normally, the ace jump mark cannot be seen if the target character is invisible.
-So default to be nil, which will not include those invisible character as candidate.")
-
-
-(defun ace-jump-char-category ( query-char )
-  "Detect the type of the char.
-For the ascii table, refer to http://www.asciitable.com/
-
-There is four possible return value:
-1. 'digit: the number character
-2. 'alpha: A-Z and a-z
-3. 'punc : all the printable punctuaiton
-4. 'other: all the others"
-  (cond
-   ;; digit
-   ((and (>= query-char #x30) (<= query-char #x39))
-    'digit)
-   ((or
-     ;; capital letter
-     (and (>= query-char #x41) (<= query-char #x5A))
-     ;; lowercase letter
-     (and (>= query-char #x61) (<= query-char #x7A)))
-    'alpha)
-   ((or
-     ;; tab
-     (equal query-char #x9)
-     ;; punc before digit
-     (and (>= query-char #x20) (<= query-char #x2F))
-     ;; punc after digit before capital letter
-     (and (>= query-char #x3A) (<= query-char #x40))
-     ;; punc after capital letter before lowercase letter
-     (and (>= query-char #x5B) (<= query-char #x60))
-     ;; punc after lowercase letter
-     (and (>= query-char #x7B) (<= query-char #x7E)))
-    'punc)
-   (t
-    'other)))
-
-
-(defun ace-jump-search-candidate (re-query-string visual-area-list)
-  "Search the RE-QUERY-STRING in current view, and return the candidate position list.
-RE-QUERY-STRING should be an valid regex used for `search-forward-regexp'.
-
-You can control whether use the case sensitive or not by `ace-jump-mode-case-fold'.
-
-Every possible `match-beginning' will be collected.
-The returned value is a list of `aj-position' record."
-  (loop for va in visual-area-list
-        append (let* ((current-window (aj-visual-area-window va))
-                      (start-point (window-start current-window))
-                      (end-point   (window-end   current-window t)))
-                 (with-selected-window current-window
-                   (save-excursion
-                     (goto-char start-point)
-                     (let ((case-fold-search ace-jump-mode-case-fold))
-                       (loop while (re-search-forward re-query-string nil t)
-                             until (or
-                                    (> (point) end-point)
-                                    (eobp))
-                             if (or ace-jump-allow-invisible (not (invisible-p (match-beginning 0))))
-                             collect (make-aj-position :offset (match-beginning 0)
-                                                       :visual-area va)
-                             ;; when we use "^" to search line mode,
-                             ;; re-search-backward will not move one
-                             ;; char after search success, as line
-                             ;; begin is not a valid visible char.
-                             ;; We need to help it to move forward.
-                             do (if (string-equal re-query-string "^")
-                                    (goto-char (1+ (match-beginning 0)))))))))))
-
-(defun ace-jump-tree-breadth-first-construct (total-leaf-node max-child-node)
-  "Constrct the search tree, each item in the tree is a cons cell.
-The (car tree-node) is the type, which should be only 'branch or 'leaf.
-The (cdr tree-node) is data stored in a leaf when type is 'leaf,
-while a child node list when type is 'branch"
-  (let ((left-leaf-node (- total-leaf-node 1))
-        (q (make-aj-queue))
-        (node nil)
-        (root (cons 'leaf nil)) )
-    ;; we push the node into queue and make candidate-sum -1, so
-    ;; create the start condition for the while loop
-    (aj-queue-push root q)
-    (while (> left-leaf-node 0)
-      (setq node (aj-queue-pop q))
-      ;; when a node is picked up from stack, it will be changed to a
-      ;; branch node, we lose a leaft node
-      (setf (car node) 'branch)
-      ;; so we need to add the sum of leaf nodes that we wish to create
-      (setq left-leaf-node (1+ left-leaf-node))
-      (if (<= left-leaf-node max-child-node)
-          ;; current child can fill the left leaf
-          (progn
-            (setf (cdr node)
-                  (loop for i from 1 to left-leaf-node
-                        collect (cons 'leaf nil)))
-            ;; so this should be the last action for while
-            (setq left-leaf-node 0))
-        ;; the child can not cover the left leaf
-        (progn
-          ;; fill as much as possible. Push them to queue, so it have
-          ;; the oppotunity to become 'branch node if necessary
-          (setf (cdr node)
-                (loop for i from 1 to max-child-node
-                      collect (let ((n (cons 'leaf nil)))
-                                (aj-queue-push n q)
-                                n)))
-          (setq left-leaf-node (- left-leaf-node max-child-node)))))
-    ;; return the root node
-    root))
-
-(defun ace-jump-tree-preorder-traverse (tree &optional leaf-func branch-func)
-  "we move over tree via preorder, and call BRANCH-FUNC on each branch
-node and call LEAF-FUNC on each leaf node"
-  ;; use stack to do preorder traverse
-  (let ((s (list tree)))
-    (while (not (null s))
-      ;; pick up one from stack
-      (let ((node (car s)))
-        ;; update stack
-        (setq s (cdr s))
-        (cond
-         ((eq (car node) 'branch)
-          ;; a branch node
-          (when branch-func
-            (funcall branch-func node))
-          ;; push all child node into stack
-          (setq s (append (cdr node) s)))
-         ((eq (car node) 'leaf)
-          (when leaf-func
-            (funcall leaf-func node)))
-         (t
-          (message "[AceJump] Internal Error: invalid tree node type")))))))
-
-
-(defun ace-jump-populate-overlay-to-search-tree (tree candidate-list)
-  "Populate the overlay to search tree, every leaf will give one overlay"
-  
-  (lexical-let* (;; create the locally dynamic variable for the following function
-                 (position-list candidate-list)
-                 
-                 ;; make the function to create overlay for each leaf node,
-                 ;; here we only create each overlay for each candidate
-                 ;; position, , but leave the 'display property to be empty,
-                 ;; which will be fill in "update-overlay" function
-                 (func-create-overlay (lambda (node)
-                                        (let* ((p (car position-list))
-                                               (offset (aj-position-offset p))
-                                               (va (aj-position-visual-area p))
-                                               (w (aj-visual-area-window va))
-                                               (b (aj-visual-area-buffer va))
-                                               ;; create one char overlay
-                                               (ol (make-overlay offset (1+ offset) b)))
-                                          ;; update leaf node to remember the ol
-                                          (setf (cdr node) ol)
-                                          (overlay-put ol 'face 'ace-jump-face-foreground)
-                                          ;; associate the aj-position data with overlay
-                                          ;; so that we can use it to do the final jump
-                                          (overlay-put ol 'aj-data p)
-                                          ;; next candidate node
-                                          (setq position-list (cdr position-list))))))
-    (ace-jump-tree-preorder-traverse tree func-create-overlay)
-    tree))
-
-
-(defun ace-jump-delete-overlay-in-search-tree (tree)
-  "Delete all the overlay in search tree leaf node"
-  (let ((func-delete-overlay (lambda (node)
-                               (delete-overlay (cdr node))
-                               (setf (cdr node) nil))))
-    (ace-jump-tree-preorder-traverse tree func-delete-overlay)))
-
-(defun ace-jump-buffer-substring (pos)
-  "Get the char under the POS, which is aj-position structure."
-  (let* ((w (aj-position-window pos))
-         (offset (aj-position-offset pos)))
-    (with-selected-window w
-      (buffer-substring offset (1+ offset)))))
-
-(defun ace-jump-update-overlay-in-search-tree (tree keys)
-  "Update overlay 'display property using each name in keys"
-  (lexical-let* (;; create dynamic variable for following function
-                 (key ?\0)
-                 ;; populdate each leaf node to be the specific key,
-                 ;; this only update 'display' property of overlay,
-                 ;; so that user can see the key from screen and select
-                 (func-update-overlay
-                  (lambda (node)
-                    (let ((ol (cdr node)))
-                      (overlay-put
-                       ol
-                       'display
-                       (concat (make-string 1 key)
-                               (let* ((pos (overlay-get ol 'aj-data))
-                                      (subs (ace-jump-buffer-substring pos)))
-                                 (cond
-                                  ;; when tab, we use more space to prevent screen
-                                  ;; from messing up
-                                  ((string-equal subs "\t")
-                                   (make-string (1- tab-width) ? ))
-                                  ;; when enter, we need to add one more enter
-                                  ;; to make the screen not change
-                                  ((string-equal subs "\n")
-                                   "\n")
-                                  (t
-                                   "")))))))))
-    (loop for k in keys
-          for n in (cdr tree)
-          do (progn
-               ;; update "key" variable so that the function can use
-               ;; the correct context
-               (setq key k)
-               (if (eq (car n) 'branch)
-                   (ace-jump-tree-preorder-traverse n
-                                                    func-update-overlay)
-                 (funcall func-update-overlay n))))))
-
-
-
-(defun ace-jump-list-visual-area()
-  "Based on `ace-jump-mode-scope', search the possible buffers that is showing now."
-  (cond
-   ((eq ace-jump-mode-scope 'global)
-    (loop for f in (frame-list)
-          append (loop for w in (window-list f)
-                       collect (make-aj-visual-area :buffer (window-buffer w)
-                                                    :window w
-                                                    :frame f))))
-   ((eq ace-jump-mode-scope 'frame)
-    (loop for w in (window-list (selected-frame))
-          collect (make-aj-visual-area :buffer (window-buffer w)
-                                       :window w
-                                       :frame (selected-frame))))
-   ((eq ace-jump-mode-scope 'window)
-    (list 
-     (make-aj-visual-area :buffer (current-buffer)
-                          :window (selected-window)
-                          :frame  (selected-frame))))
-   (t
-    (error "[AceJump] Invalid ace-jump-mode-scope, please check your configuration"))))
-
-
-(defun ace-jump-mode-make-indirect-buffer (visual-area-list)
-  "When the differnt window show the same buffer. The overlay
-cannot work for same buffer at the same time. So the indirect
-buffer need to create to make overlay can work correctly.
-
-VISUAL-AREA-LIST is aj-visual-area list. This function will
-return the structure list for those make a indirect buffer.
-
-Side affect: All the created indirect buffer will show in its
-relevant window."
-  (loop for va in visual-area-list
-        ;; check if the current visual-area (va) has the same buffer with
-        ;; the previous ones (vai)
-        if (loop for vai in visual-area-list
-                 ;; stop at itself, don't need to find the ones behind it (va)
-                 until (eq vai va)
-                 ;; if the buffer is same, return those(vai) before
-                 ;; it(va) so that we know the some visual area has
-                 ;; the same buffer with current one (va)
-                 if (eq (aj-visual-area-buffer va)
-                        (aj-visual-area-buffer vai))
-                 collect vai)
-        ;; if indeed the same one find, we need create an indirect buffer
-        ;; to current visual area(va)
-        collect (with-selected-window (aj-visual-area-window va)
-                  ;; store the orignal buffer
-                  (setf (aj-visual-area-recover-buffer va)
-                        (aj-visual-area-buffer va))
-                  ;; create indirect buffer to use as working buffer
-                  (setf (aj-visual-area-buffer va)
-                        (clone-indirect-buffer nil nil))
-                  ;; update window to the indirect buffer
-                  (let ((ws (window-start)))
-                    (set-window-buffer (aj-visual-area-window va)
-                                       (aj-visual-area-buffer va))
-                    (set-window-start
-                     (aj-visual-area-window va)
-                     ws))
-                  va)))
-
-
-(defun ace-jump-do( re-query-string )
-  "The main function to start the AceJump mode.
-QUERY-STRING should be a valid regexp string, which finally pass to `search-forward-regexp'.
-
-You can constrol whether use the case sensitive via `ace-jump-mode-case-fold'.
-"
-  ;; we check the move key to make it valid, cause it can be customized by user
-  (if (or (null ace-jump-mode-move-keys)
-          (< (length ace-jump-mode-move-keys) 2)
-          (not (every #'characterp ace-jump-mode-move-keys)))
-      (error "[AceJump] Invalid move keys: check ace-jump-mode-move-keys"))
-  ;; search candidate position
-  (let* ((visual-area-list (ace-jump-list-visual-area))
-         (candidate-list (ace-jump-search-candidate re-query-string visual-area-list)))
-    (cond
-     ;; cannot find any one
-     ((null candidate-list)
-      (setq ace-jump-current-mode nil)
-      (error "[AceJump] No one found"))
-     ;; we only find one, so move to it directly
-     ((eq (cdr candidate-list) nil)
-      (ace-jump-push-mark)
-      (run-hooks 'ace-jump-mode-before-jump-hook)
-      (ace-jump-jump-to (car candidate-list))
-      (message "[AceJump] One candidate, move to it directly")
-      (run-hooks 'ace-jump-mode-end-hook))
-     ;; more than one, we need to enter AceJump mode
-     (t
-      ;; make indirect buffer for those windows that show the same buffer
-      (setq ace-jump-recover-visual-area-list
-            (ace-jump-mode-make-indirect-buffer visual-area-list))
-      ;; create background for each visual area
-      (if ace-jump-mode-gray-background
-          (setq ace-jump-background-overlay-list
-                (loop for va in visual-area-list
-                      collect (let* ((w (aj-visual-area-window va))
-                                     (b (aj-visual-area-buffer va))
-                                     (ol (make-overlay (window-start w)
-                                                       (window-end w)
-                                                       b)))
-                                (overlay-put ol 'face 'ace-jump-face-background)
-                                ol))))
-
-      ;; construct search tree and populate overlay into tree
-      (setq ace-jump-search-tree
-            (ace-jump-tree-breadth-first-construct (length candidate-list)
-                                                   (length ace-jump-mode-move-keys)))
-      (ace-jump-populate-overlay-to-search-tree ace-jump-search-tree
-                                                candidate-list)
-      (ace-jump-update-overlay-in-search-tree ace-jump-search-tree
-                                              ace-jump-mode-move-keys)
-
-      ;; do minor mode configuration
-      (cond
-       ((eq ace-jump-current-mode 'ace-jump-char-mode)
-        (setq ace-jump-mode " AceJump - Char"))
-       ((eq ace-jump-current-mode 'ace-jump-word-mode)
-        (setq ace-jump-mode " AceJump - Word"))
-       ((eq ace-jump-current-mode 'ace-jump-line-mode)
-        (setq ace-jump-mode " AceJump - Line"))
-       (t
-        (setq ace-jump-mode " AceJump")))
-      (force-mode-line-update)
-
-
-      ;; override the local key map
-      (setq overriding-local-map
-            (let ( (map (make-keymap)) )
-              (dolist (key-code ace-jump-mode-move-keys)
-                (define-key map (make-string 1 key-code) 'ace-jump-move))
-              (define-key map (kbd "C-c C-c") 'ace-jump-quick-exchange)
-              (define-key map [t] 'ace-jump-done)
-              map))
-
-      (add-hook 'mouse-leave-buffer-hook 'ace-jump-done)
-      (add-hook 'kbd-macro-termination-hook 'ace-jump-done)))))
-
-
-(defun ace-jump-jump-to (position)
-  "Jump to the POSITION, which is a `aj-position' structure storing the position information"
-  (let ((offset (aj-position-offset position))
-        (frame (aj-position-frame position))
-        (window (aj-position-window position))
-        (buffer (aj-position-buffer position)))
-        ;; focus to the frame
-        (if (and (frame-live-p frame)
-                 (not (eq frame (selected-frame))))
-            (select-frame-set-input-focus (window-frame window)))
-        
-        ;; select the correct window
-        (if (and (window-live-p window)
-                 (not (eq window (selected-window))))
-            (select-window window))
-        
-        ;; swith to buffer
-        (if (and (buffer-live-p buffer)
-                 (not (eq buffer (window-buffer window))))
-            (switch-to-buffer buffer))
-        ;; move to correct position
-
-        (if (and (buffer-live-p buffer)
-                 (eq (current-buffer) buffer))
-            (goto-char offset))))
-
-(defun ace-jump-push-mark ()
-  "Push the current position information onto the `ace-jump-mode-mark-ring'."
-  ;; add mark to the emacs basic push mark
-  (push-mark (point) t)
-  ;; we also push the mark on the `ace-jump-mode-mark-ring', which has
-  ;; more information for better jump back
-  (let ((pos (make-aj-position :offset (point)
-                               :visual-area (make-aj-visual-area :buffer (current-buffer)
-                                                                 :window (selected-window)
-                                                                 :frame  (selected-frame)))))
-    (setq ace-jump-mode-mark-ring (cons pos ace-jump-mode-mark-ring)))
-  ;; when exeed the max count, discard the last one
-  (if (> (length ace-jump-mode-mark-ring) ace-jump-mode-mark-ring-max)
-      (setcdr (nthcdr (1- ace-jump-mode-mark-ring-max) ace-jump-mode-mark-ring) nil)))
-
-
-;;;###autoload
-(defun ace-jump-mode-pop-mark ()
-  "Pop up a postion from `ace-jump-mode-mark-ring', and jump back to that position"
-  (interactive)
-  ;; we jump over the killed buffer position
-  (while (and ace-jump-mode-mark-ring
-              (not (buffer-live-p (aj-position-buffer
-                                   (car ace-jump-mode-mark-ring)))))
-    (setq ace-jump-mode-mark-ring (cdr ace-jump-mode-mark-ring)))
-    
-  (if (null ace-jump-mode-mark-ring)
-      ;; no valid history exist
-      (error "[AceJump] No more history"))
-
-  (if ace-jump-sync-emacs-mark-ring
-      (let ((p (car ace-jump-mode-mark-ring)))
-        ;; if we are jump back in the current buffer, that means we
-        ;; only need to sync the buffer local mark-ring
-        (if (eq (current-buffer) (aj-position-buffer p))
-            (if (equal (aj-position-offset p) (marker-position (mark-marker)))
-                ;; if the current marker is the same as where we need
-                ;; to jump back, we do the same as pop-mark actually,
-                ;; copy implementation from pop-mark, cannot use it
-                ;; directly, as there is advice on it
-                (when mark-ring
-                  (setq mark-ring (nconc mark-ring (list (copy-marker (mark-marker)))))
-                  (set-marker (mark-marker) (+ 0 (car mark-ring)) (current-buffer))
-                  (move-marker (car mark-ring) nil)
-                  (setq mark-ring (cdr mark-ring))
-                  (deactivate-mark))
-              
-              ;;  But if there is other marker put before the wanted destination, the following scenario
-              ;;                                                           
-              ;;             +---+---+---+---+                                   +---+---+---+---+
-              ;;   Mark Ring | 2 | 3 | 4 | 5 |                                   | 2 | 4 | 5 | 3 |
-              ;;             +---+---+---+---+                                   +---+---+---+---+
-              ;;             +---+                                               +---+
-              ;;   Marker    | 1 |                                               | 1 | <-- Maker (not changed)
-              ;;             +---+                                               +---+
-              ;;             +---+                                               +---+
-              ;;   Cursor    | X |                     Pop up AJ mark 3          | 3 | <-- Cursor position
-              ;;             +---+                                               +---+
-              ;;             +---+---+---+                                       +---+---+---+ 
-              ;;   AJ Ring   | 3 | 4 | 5 |                                       | 4 | 5 | 3 |
-              ;;             +---+---+---+                                       +---+---+---+
-              ;;   
-              ;; So what we need to do, is put the found mark in mark-ring to the end
-              (lexical-let ((po (aj-position-offset p)))
-                (setq mark-ring
-                      (ace-jump-move-first-to-end-if mark-ring
-                                                     (lambda (x)
-                                                       (equal (marker-position x) po))))))
-              
-
-          ;; when we jump back to another buffer, do as the
-          ;; pop-global-mark does. But we move the marker with the
-          ;; same target buffer to the end, not always the first one
-          (lexical-let ((pb (aj-position-buffer p)))
-            (setq global-mark-ring
-                  (ace-jump-move-first-to-end-if global-mark-ring
-                                                 (lambda (x)
-                                                   (eq (marker-buffer x) pb))))))))
-          
-  
-  ;; move the first element to the end of the ring
-  (ace-jump-jump-to (car ace-jump-mode-mark-ring))
-  (setq ace-jump-mode-mark-ring (nconc (cdr ace-jump-mode-mark-ring)
-                                       (list (car ace-jump-mode-mark-ring)))))
-
-(defun ace-jump-quick-exchange ()
-  "The function that we can use to quick exhange the current mode between
-word-mode and char-mode"
-  (interactive)
-  (cond
-   ((eq ace-jump-current-mode 'ace-jump-char-mode)
-    (if ace-jump-query-char
-        ;; ace-jump-done will clean the query char, so we need to save it
-        (let ((query-char ace-jump-query-char))
-          (ace-jump-done)
-          (ace-jump-word-mode query-char))))
-   ((eq ace-jump-current-mode 'ace-jump-word-mode)
-    (if ace-jump-query-char
-        ;; ace-jump-done will clean the query char, so we need to save it
-        (let ((query-char ace-jump-query-char))
-          (ace-jump-done)
-          ;; restore the flag
-          (ace-jump-char-mode query-char))))
-   ((eq ace-jump-current-mode 'ace-jump-line-mode)
-    nil)
-   (t
-    nil)))
-
-
-
-
-;;;###autoload
-(defun ace-jump-char-mode (query-char)
-  "AceJump char mode"
-  (interactive (list (read-char "Query Char:")))
-  
-  (if (eq (ace-jump-char-category query-char) 'other)
-    (error "[AceJump] Non-printable character"))
-
-  ;; others : digit , alpha, punc
-  (setq ace-jump-query-char query-char)
-  (setq ace-jump-current-mode 'ace-jump-char-mode)
-  (ace-jump-do (regexp-quote (make-string 1 query-char))))
-
-
-;;;###autoload
-(defun ace-jump-word-mode (head-char)
-  "AceJump word mode.
-You can set `ace-jump-word-mode-use-query-char' to nil to prevent
-asking for a head char, that will mark all the word in current
-buffer."
-  (interactive (list (if ace-jump-word-mode-use-query-char
-                         (read-char "Head Char:")
-                       nil)))
-  (cond
-   ((null head-char)
-    ;; \<  - start of word
-    ;; \sw - word constituent
-    (ace-jump-do "\\<\\sw"))
-   ((memq (ace-jump-char-category head-char)
-          '(digit alpha))
-    (setq ace-jump-query-char head-char)
-    (setq ace-jump-current-mode 'ace-jump-word-mode)
-    (ace-jump-do (concat "\\<" (make-string 1 head-char))))
-   ((eq (ace-jump-char-category head-char)
-        'punc)
-    ;; we do not query punctuation under word mode
-    (if (null ace-jump-mode-detect-punc)
-        (error "[AceJump] Not a valid word constituent"))
-    ;; we will use char mode to continue search
-    (setq ace-jump-query-char head-char)
-    (setq ace-jump-current-mode 'ace-jump-char-mode)
-    (ace-jump-do (regexp-quote (make-string 1 head-char))))
-   (t
-    (error "[AceJump] Non-printable character"))))
-
-
-;;;###autoload
-(defun ace-jump-line-mode ()
-  "AceJump line mode.
-Marked each no empty line and move there"
-  (interactive)
-  (setq ace-jump-current-mode 'ace-jump-line-mode)
-  (ace-jump-do "^"))
-
-;;;###autoload
-(defun ace-jump-mode(&optional prefix)
-  "AceJump mode is a minor mode for you to quick jump to a
-position in the curret view.
-   There is three submode now:
-     `ace-jump-char-mode'
-     `ace-jump-word-mode'
-     `ace-jump-line-mode'
-
-You can specify the sequence about which mode should enter
-by customize `ace-jump-mode-submode-list'.
-
-If you do not want to query char for word mode, you can change
-`ace-jump-word-mode-use-query-char' to nil.
-
-If you don't like the default move keys, you can change it by
-setting `ace-jump-mode-move-keys'.
-
-You can constrol whether use the case sensitive via
-`ace-jump-mode-case-fold'.
-"
-  (interactive "p")
-  (let ((index (/ prefix 4))
-        (submode-list-length (length ace-jump-mode-submode-list)))
-    (if (< index 0)
-        (error "[AceJump] Invalid prefix command"))
-    (if (>= index submode-list-length)
-        (setq index (1- submode-list-length)))
-    (call-interactively (nth index ace-jump-mode-submode-list))))
-
-(defun ace-jump-move ()
-  "move cursor based on user input"
-  (interactive)
-  (let* ((index (let ((ret (position (aref (this-command-keys) 0)
-                                     ace-jump-mode-move-keys)))
-                  (if ret ret (length ace-jump-mode-move-keys))))
-         (node (nth index (cdr ace-jump-search-tree))))
-    (cond
-     ;; we do not find key in search tree. This can happen, for
-     ;; example, when there is only three selections in screen
-     ;; (totally five move-keys), but user press the forth move key
-     ((null node)
-      (message "No such position candidate.")
-      (ace-jump-done))
-     ;; this is a branch node, which means there need further
-     ;; selection
-     ((eq (car node) 'branch)
-      (let ((old-tree ace-jump-search-tree))
-        ;; we use sub tree in next move, create a new root node
-        ;; whose child is the sub tree nodes
-        (setq ace-jump-search-tree (cons 'branch (cdr node)))
-        (ace-jump-update-overlay-in-search-tree ace-jump-search-tree
-                                                ace-jump-mode-move-keys)
-
-        ;; this is important, we need remove the subtree first before
-        ;; do delete, we set the child nodes to nil
-        (setf (cdr node) nil)
-        (ace-jump-delete-overlay-in-search-tree old-tree)))
-     ;; if the node is leaf node, this is the final one
-     ((eq (car node) 'leaf)
-      ;; need to save aj data, as `ace-jump-done' will clean it
-      (let ((aj-data (overlay-get (cdr node) 'aj-data)))
-        (ace-jump-done)
-        (ace-jump-push-mark)
-        (run-hooks 'ace-jump-mode-before-jump-hook)
-        (ace-jump-jump-to aj-data))
-      (run-hooks 'ace-jump-mode-end-hook))
-     (t
-      (ace-jump-done)
-      (error "[AceJump] Internal error: tree node type is invalid")))))
-
-
-
-(defun ace-jump-done()
-  "stop AceJump motion"
-  (interactive)
-  ;; clear the status flag
-  (setq ace-jump-query-char nil)
-  (setq ace-jump-current-mode nil)
-
-  ;; clean the status line
-  (setq ace-jump-mode nil)
-  (force-mode-line-update)
-
-  ;; delete background overlay
-  (loop for ol in ace-jump-background-overlay-list
-        do (delete-overlay ol))
-  (setq ace-jump-background-overlay-list nil)
-
-
-  ;; we clean the indirect buffer
-  (loop for va in ace-jump-recover-visual-area-list
-        do (with-selected-window (aj-visual-area-window va)
-             (let ((fake-buffer (aj-visual-area-buffer va))
-                   (original-buffer (aj-visual-area-recover-buffer va)))
-               ;; recover display buffer
-               (set-window-buffer (aj-visual-area-window va)
-                                  original-buffer)
-               ;; update visual area, which we need to use it to do the
-               ;; final jump, and as well, save in history
-               (setf (aj-visual-area-buffer va) original-buffer)
-               (setf (aj-visual-area-recover-buffer va) nil)
-               ;; kill indirect buffer
-               (kill-buffer fake-buffer))))
-
-  ;; delete overlays in search tree
-  (ace-jump-delete-overlay-in-search-tree ace-jump-search-tree)
-  (setq ace-jump-search-tree nil)
-
-  (setq overriding-local-map nil)
-
-  (remove-hook 'mouse-leave-buffer-hook 'ace-jump-done)
-  (remove-hook 'kbd-macro-termination-hook 'ace-jump-done))
-
-;;;; ============================================
-;;;; advice to sync emacs mark ring
-;;;; ============================================
-
-(defun ace-jump-move-to-end-if ( l pred )
-  "Move all the element in a list to the end of list if it make
-the PRED to return non-nil.
-
-PRED is a function object which can pass to funcall and accept
-one argument, which will be every element in the list.
-Such as : (lambda (x) (equal x 1)) "
-  (let (true-list false-list)
-    (loop for e in l
-          do (if (funcall pred e)
-                 (setq true-list (cons e true-list))
-               (setq false-list (cons e false-list))))
-    (nconc (nreverse false-list)
-           (and true-list (nreverse true-list)))))
-
-(defun ace-jump-move-first-to-end-if (l pred)
-  "Only move the first found one to the end of list"
-  (lexical-let ((pred pred)
-                found)
-    (ace-jump-move-to-end-if l
-                             (lambda (x)
-                               (if found
-                                   nil
-                                 (setq found (funcall pred x)))))))
-
-  
-
-(defadvice pop-mark (before ace-jump-pop-mark-advice)
-  "When `pop-mark' is called to jump back, this advice will sync the mark ring.
-Move the same position to the end of `ace-jump-mode-mark-ring'."
-  (lexical-let ((mp (mark t))
-                (cb (current-buffer)))
-    (if mp
-        (setq ace-jump-mode-mark-ring
-              (ace-jump-move-first-to-end-if ace-jump-mode-mark-ring
-                                             (lambda (x)
-                                               (and (equal (aj-position-offset x) mp)
-                                                    (eq (aj-position-buffer x) cb))))))))
-            
-
-(defadvice pop-global-mark (before ace-jump-pop-global-mark-advice)
-  "When `pop-global-mark' is called to jump back, this advice will sync the mark ring.
-Move the aj-position with the same buffer to the end of `ace-jump-mode-mark-ring'."
-  (interactive)
-  ;; find the one that will be jump to
-  (let ((index global-mark-ring))
-    ;; refer to the implementation of `pop-global-mark'
-    (while (and index (not (marker-buffer (car index))))
-      (setq index (cdr index)))
-    (if index
-        ;; find the mark
-        (lexical-let ((mb (marker-buffer (car index))))
-          (setq ace-jump-mode-mark-ring
-                (ace-jump-move-to-end-if ace-jump-mode-mark-ring
-                                         (lambda (x)
-                                           (eq (aj-position-buffer x) mb))))))))
-                                              
-
-(defun ace-jump-mode-enable-mark-sync ()
-  "Enable the sync funciton between ace jump mode mark ring and emacs mark ring.
-
-1. This function will enable the advice which activate on
-`pop-mark' and `pop-global-mark'. These advice will remove the
-same marker from `ace-jump-mode-mark-ring' when user use
-`pop-mark' or `global-pop-mark' to jump back. 
-
-2. Set variable `ace-jump-sync-emacs-mark-ring' to t, which will
-sync mark information with emacs mark ring. "
-  (ad-enable-advice 'pop-mark 'before 'ace-jump-pop-mark-advice)
-  (ad-activate 'pop-mark)
-  (ad-enable-advice 'pop-global-mark 'before 'ace-jump-pop-global-mark-advice)
-  (ad-activate 'pop-global-mark)
-  (setq ace-jump-sync-emacs-mark-ring t))
-
-(defun ace-jump-mode-disable-mark-sync ()
-  "Disable the sync funciton between ace jump mode mark ring and emacs mark ring.
-
-1. This function will diable the advice which activate on
-`pop-mark' and `pop-global-mark'. These advice will remove the
-same marker from `ace-jump-mode-mark-ring' when user use
-`pop-mark' or `global-pop-mark' to jump back. 
-
-2. Set variable `ace-jump-sync-emacs-mark-ring' to nil, which
-will stop synchronizing mark information with emacs mark ring. "
-  (ad-disable-advice 'pop-mark 'before 'ace-jump-pop-mark-advice)
-  (ad-activate 'pop-mark)
-  (ad-disable-advice 'pop-global-mark 'before 'ace-jump-pop-global-mark-advice)
-  (ad-activate 'pop-global-mark)
-  (setq ace-jump-sync-emacs-mark-ring nil))
-
-
-(provide 'ace-jump-mode)
-
-;;; ace-jump-mode.el ends here
-
-;; Local Variables: 
-;; byte-compile-warnings: (not cl-functions) 
-;; End: 
diff --git a/.emacs.d/elisp/local/bbdb-pgp.el b/.emacs.d/elisp/local/bbdb-pgp.el
deleted file mode 100644 (file)
index 25c6a97..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-;;; BBDB-PGP.EL --- use BBDB to store PGP preferences
-
-;; Copyright (C) 1997,1999 Kevin Davidson
-
-;; Author: Kevin Davidson tkld@quadstone.com
-;; Maintainer: Kevin Davidson tkld@quadstone.com
-;; Created: 10 Nov 1997
-;; Version: $Revision: 1.3 $
-;; Keywords: PGP BBDB message mailcrypt
-
-;; 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, 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.
-
-;; A copy of the GNU General Public License can be obtained from this
-;; program's author (send electronic mail to tkld@quadstone.com) or
-;; from the Free Software Foundation, Inc.,59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;; LCD Archive Entry:
-;; bbdb-pgp|Kevin Davidson|tkld@quadstone.com
-;; |Use BBDB to store PGP preferences
-;; |$Date: 2002/10/20 18:03:42 $|$Revision: 1.3 $|~/packages/bbdb-pgp.el
-
-;;; Commentary:
-;;
-;; It is believed that encrypted mail works best if all mail between
-;; individuals is encrypted - even concerning matters that are not
-;; confidential. The reasoning is that confidential messages cannot
-;; then be easily spotted and decryption efforts concentrated on them.
-;; Some people therefore prefer to have all their email encrypted.
-;; This package allows you to mark the BBDB entries for those
-;; individuals so that messages will be encrypted when they are sent.
-;;
-;; These packages are required: BBDB, mailcrypt, message
-;;
-;; message.el is included with recent versions of Emacs.
-;; You can use mail-mode as well as message-mode to send mail.
-
-;;; Usage:
-;; (require 'bbdb-pgp)
-;;
-;; Then for all users who you want to send encrypted mail to, add the field
-;; pgp-mail with the value `encrypt'. Alternatively you can add the value
-;; `sign' if you just want to send signed messages.
-;;
-;; and possibly (if you do not want the PGP field printed out)
-;; (add-hook 'bbdb-print-elide bbdb-pgp-field)
-;; 
-;; The variable bbdb/pgp-default-action defines what to do if the recipient
-;; is not in the BBDB.
-
-;;; TODO
-;; Spot incoming PGP mail by hooking into mc-verify/decrypt and adding pgp-mail
-;; field to BBDB entry (creating one if necessary); like bbdb-sc.el maintains
-;; attribution prefs.
-
-;;; PGP Public Key
-;; The author's public key is available from any public PGP keyserver
-;; eg http://www.pgp.net/pgpnet/
-;; Fingerprint: 1F A9 3F 3E 90 F7 85 64  55 35 32 C8 75 91 3A E3
-
-;;; Change log:
-;; $Log: bbdb-pgp.el,v $
-;; Revision 1.3  2002/10/20 18:03:42  waider
-;; *** empty log message ***
-;;
-;; Revision 1.2  2002/10/18 10:54:34  waider
-;; allows bbdb-pgp.el to be configured to use message.el MML tags to perform
-;; the signing and encryption, instead of only plain Mailcrypt which is not
-;; MIME-aware. (Michael Shields)
-;;
-;; Revision 1.1  2001/01/24 21:19:08  waider
-;; Add-ons that didn't make it to the current release.
-;;
-;; Revision 1.4  1999/01/05 13:17:00  tkld
-;; Update GPL version number and FSF snail mail address.
-;;
-;; Revision 1.3  1997/11/10 15:20:29  tkld
-;; Expand commentary. Support encrypt/sign. Support mail-mode
-;; (sendmail.el).
-;;
-;; Revision 1.3  1997/11/10 15:10:19  tkld
-;; Update commentary. Support sendmail.el. Support signing or encrypting.
-;;
-;; Revision 1.2  1997/11/10 14:27:07  tkld
-;; Remembered to widen buffer before encrypting.
-;;
-;; Revision 1.1  1997/11/10 14:22:06  tkld
-;; Initial revision
-;;
-
-;;; Code:
-
-(require 'message)
-(require 'bbdb)
-(require 'mailcrypt)
-
-(defconst bbdb/pgp-version (substring "$Revision: 1.3 $" 11 -2)
-  "$Id: bbdb-pgp.el,v 1.3 2002/10/20 18:03:42 waider Exp $
-
-Report bugs to: Kevin Davidson tkld@quadstone.com")
-
-;;;###autoload
-(defgroup bbdb-utilities-pgp nil
-  "Automatically sign and/or encrypt outgoing messages."
-  :link '(emacs-library-link :tag "Lisp Source File" "bbdb-pgp.el")
-  :group 'bbdb-utilities)
-
-
-(defcustom bbdb/pgp-field 'pgp-mail
-  "*Field to use in BBDB to store PGP preferences.
-
-If this field's value in a record is \"encrypt\" then messages are
-encrypted. If it is \"sign\" then messages are signed."
-  :type 'symbol
-  :tag "BBDB Field"
-  :require 'bbdb
-  :group 'bbdb-utilities-pgp)
-
-(defcustom bbdb/pgp-method 'mailcrypt
-  "*How to sign or encrypt messages.
-
-'mailcrypt     means use Mailcrypt.
-'mml-pgp       means add MML tags for Message to use old PGP format
-'mml-pgpmime   means add MML tags for Message to use PGP/MIME
-'mml-smime     means add MML tags for Message to use S/MIME"
-  :type '(choice
-         (const :tag "Mailcrypt" mailcrypt :require 'mailcrypt)
-         (const :tag "MML PGP" mml-pgp :require 'mml)
-         (const :tag "MML PGP/MIME" mml-pgpmime :require 'mml)
-         (const :tag "MML S/MIME" mml-smime :require 'mml))
-  :tag "Signing/Encryption Method"
-  :group 'bbdb-utilities-pgp)
-
-(defcustom bbdb/pgp-default-action nil
-  "*Default action when sending a message and the recipient is not in BBDB.
-
-nil         means do nothing.
-'encrypt    means encrypt message.
-'sign       means sign message."
-  :type '(choice
-         (const :tag "Do Nothing")
-         (const :tag "Encrypt" encrypt)
-         (const :tag "Sign" sign))
-  :tag "Default Action"
-  :group 'bbdb-utilities-pgp)
-
-(defun bbdb/pgp-get-pgp (name address)
-  "Look up user NAME and ADDRESS in BBDB and return the PGP preference."
-  (let* ((record (bbdb-search-simple name address))
-        (pgp (and record
-                  (bbdb-record-getprop record bbdb/pgp-field))))
-    pgp))
-
-(defun bbdb/pgp-sign ()
-  "Sign a message.
-bbdb/pgp-method controls the method used."
-  (cond
-   ((eq bbdb/pgp-method 'mailcrypt)
-    (mc-sign 0))
-   ((eq bbdb/pgp-method 'mml-pgp)
-    (mml-secure-message-sign-pgp))
-   ((eq bbdb/pgp-method 'mml-pgpmime)
-    (mml-secure-message-sign-pgpmime))
-   ((eq bbdb/pgp-method 'mml-smime)
-    (mml-secure-message-sign-smime))
-   (t
-    (error 'invalid-state "bbdb/pgp-method"))))
-
-(defun bbdb/pgp-encrypt ()
-  "Encrypt and sign a message.
-bbdb/pgp-method controls the method used."
-  (cond
-   ((eq bbdb/pgp-method 'mailcrypt)
-    (mc-encrypt 0))
-   ((eq bbdb/pgp-method 'mml-pgp)
-    (mml-secure-message-encrypt-pgp))
-   ((eq bbdb/pgp-method 'mml-pgpmime)
-    (mml-secure-message-encrypt-pgpmime))
-   ((eq bbdb/pgp-method 'mml-smime)
-    (mml-secure-message-encrypt-smime))
-   (t
-    (error 'invalid-state "bbdb/pgp-method"))))
-
-(defun bbdb/pgp-hook-fun ()
-  "Function to be added to message-send-hook
-Uses PGP to encrypt messages to users marked in the BBDB with the
-field `bbdb/pgp-field'.
-The user is prompted before encryption or signing."
-  (save-restriction
-    (save-excursion
-      (message-narrow-to-headers)
-      (and (featurep 'mailalias)
-          (not (featurep 'mailabbrev))
-          mail-aliases
-          (expand-mail-aliases (point-min) (point-max)))
-      (let* ((to-field (mail-fetch-field "To" nil t))
-            (address (mail-extract-address-components (or to-field ""))))
-       (widen)
-       (if (not (equal address '(nil nil)))
-           (let ((pgp-p (bbdb/pgp-get-pgp (car address) (car (cdr address)))))
-             (cond
-              ((string= "encrypt" pgp-p) 
-               (and (y-or-n-p "Encrypt message? ")
-                    (bbdb/pgp-encrypt)))
-              ((string= "sign" pgp-p)
-               (and (y-or-n-p "Sign message? ")
-                    (bbdb/pgp-sign)))
-              (t
-               (cond
-                ((eq bbdb/pgp-default-action 'encrypt)
-                 (and (y-or-n-p "Encrypt message? ")
-                      (bbdb/pgp-encrypt)))
-                ((eq bbdb/pgp-default-action 'sign)
-                 (and (y-or-n-p "Sign message? ")
-                      (bbdb/pgp-sign)))
-                (t
-                 nil))))))))))
-
-(add-hook 'message-send-hook 'bbdb/pgp-hook-fun)
-(add-hook 'mail-send-hook 'bbdb/pgp-hook-fun)
-
-(provide 'bbdb-pgp)
-
-;;; BBDB-PGP.EL ends here
diff --git a/.emacs.d/elisp/local/beamer.el b/.emacs.d/elisp/local/beamer.el
deleted file mode 100644 (file)
index 6a12d4b..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-;;; beamer.el --- AUCTeX style for the latex-beamer class
-
-;; Copyright (C) 2004 Thomas Baumann
-;; License: GPL, see the file COPYING in the base directory of AUCTeX
-
-;; Author: Thomas Baumann <thomas.baumann@ch.tum.de>
-;; Created: 2003-12-20
-;; Version: $Id: beamer.el,v 1.3 2004/04/29 05:07:22 tantau Exp $
-;; Keywords: tex
-
-;;; Commentary:
-
-;; This file adds support for the latex-beamer class.
-;;
-;; This file is intended to be used with the AUCTeX-Package.
-;; Put this File into your TeX-style-path. You may also
-;; byte-compile this file.
-
-;;; Code:
-(TeX-add-style-hook "beamer"
- (function
-  (lambda ()
-    (defvar beamer-use-section-labels-flag nil
-      "Controls whether section labels are added")
-    (unless beamer-use-section-labels-flag
-      (make-local-variable 'LaTeX-section-hook)
-      (setq LaTeX-section-hook
-             '(LaTeX-section-heading
-               LaTeX-section-title
-               LaTeX-section-section)))
-
-    (setq LaTeX-item-list
-          (append '(("itemize" . LaTeX-item-beamer)
-                    ("enumerate" . LaTeX-item-beamer))
-                  LaTeX-item-list))
-
-    (TeX-add-symbols
-     '("alert" 1)
-     '("alt" TeX-arg-beamer-overlay-spec 2)
-     '("beamerbutton" 1)
-     '("beamergotobutton" 1)
-     '("beamerreturnbutton" 1)
-     '("beamerskipbutton" 1)
-     '("frame" TeX-arg-beamer-frametitle)
-     '("frametitle" 1)
-     '("hyperlink" TeX-arg-beamer-overlay-spec 2)
-     '("hyperlinkslideprev" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkslidenext" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkframestart" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkframeend" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkframestartnext" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkframeendprev" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkpresentationstart" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkpresentationend" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkappendixstart" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkappendixend" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkdocumentstart" TeX-arg-beamer-overlay-spec 1)
-     '("hyperlinkdocumentend" TeX-arg-beamer-overlay-spec 1)
-     '("hypertarget" TeX-arg-beamer-overlay-spec 2)
-     '("institute" 1)
-     '("invisible" TeX-arg-beamer-overlay-spec 1)
-     '("label" TeX-arg-beamer-overlay-spec 1)
-     '("logo" 1)
-     '("note" TeX-arg-beamer-note 1)
-     '("only" TeX-arg-beamer-overlay-spec 1)
-     '("onslide" TeX-arg-beamer-overlay-spec)
-     '("partpage")
-     '("pause")
-     '("structure" TeX-arg-beamer-overlay-spec 1)
-     '("temporal" TeX-arg-beamer-overlay-spec 3)
-     '("titlepage")
-     '("titlegraphic" 1)
-     '("uncover" TeX-arg-beamer-overlay-spec 1)
-     '("visible" TeX-arg-beamer-overlay-spec 1)
-     )
-    
-    (LaTeX-add-environments
-     '("actionenv")
-     '("alertblock" 1)
-     '("beamerboxesrounded" 1)
-     '("block" 1)
-     '("column" "Width")
-     "columns"
-     "columnsonlytextwidth"
-     '("exampleblock" 1)
-     '("onlyenv" (lambda (env &rest ignore)
-                   (LaTeX-insert-environment
-                    env
-                    (let ((overlay (read-input "Overlay: ")))
-                      (if (not (zerop (length overlay)))
-                          (format "<%s>" overlay))))))
-     '("overlayarea" "Area width" "Area height")
-     '("overprint"  (lambda (env &rest ignore)
-                      (LaTeX-insert-environment
-                       env
-                       (let ((overlay (read-input "Overlay: ")))
-                         (if (not (zerop (length overlay)))
-                             (format "{%s}" overlay)))))))
-
-    )))
-
-(defun TeX-arg-beamer-overlay-spec (optional &optional prompt)
-  "Prompt for overlay specification." 
-  (let ((overlay (read-input "Overlay: ")))
-    (if (not (zerop (length overlay)))
-        (progn (insert "<" overlay ">")))
-    (indent-according-to-mode)))
-
-(defun TeX-arg-beamer-frametitle (optional &optional prompt)
-  "Prompt for the frametitle."
-  (let ((title (read-input "What title: ")))
-    (if (not (zerop (length title)))
-        (progn (insert TeX-grop TeX-esc "frametitle" TeX-grop 
-                       title TeX-grcl TeX-grcl))
-      (progn (insert TeX-grop TeX-grcl)))))
-
-(defun LaTeX-item-beamer ()
-  "Insert a new item with an optional overlay argument."
-  (TeX-insert-macro "item")
-  (delete-horizontal-space)
-  (TeX-arg-beamer-overlay-spec 0)
-  (insert " ")
-  (indent-according-to-mode))
-  
-(defun TeX-arg-beamer-note (optional &optional prompt)
-  "Prompt for overlay specification and optional argument."
-  (let ((overlay (read-input "Overlay: "))
-        (options (read-input "Options: ")))
-    (if (not (zerop (length overlay)))
-        (progn (insert "<" overlay ">")))
-    (if (not (zerop (length options)))
-        (progn (insert "[" options "]")))
-    (indent-according-to-mode)))
-
diff --git a/.emacs.d/elisp/local/buildd-gnus.el b/.emacs.d/elisp/local/buildd-gnus.el
deleted file mode 100644 (file)
index 69a909c..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Buildd handling
-
-;; User controllable variables
-
-(defvar buildd-log-base-addr "http://amd64.ftbfs.de/build.php?"
-  "The base URL for build logs; used in bug report templates.")
-; (defvar buildd-mail-addr-alist '(("sparc" . "buildd@vore.debian.org")
-;                             ("hppa" . "buildd@sarti.debian.org")
-;                             ("ia64" . "buildd@caballero.debian.org")
-;                             ("arm" . "buildd@europa.armlinux.org")
-;                             ("alpha" . "buildd@escher.debian.org")
-;                             ("i386" . "buildd@gluck.debian.org"))
-;   "Map an architecture (from a bug report acknowledgement) to buildd email address.")
-
-(defvar buildd-mail-addr-alist '(("amd64" . "buildd@bester.farm.ftbfs.de")
-                                ("netwinder" . "buildd@netwinder.gag.com"))
-  "Map a hostname (from a bug report acknowledgement) to a buildd email address.")
-
-(defvar manual-source-deps-file "~/debian/srcdep/madd-sd_unstable"
-  "The filename of the manually added source deps.")
-
-;;;; Functions for dealing with mail from the build daemon.
-;;;; Adapted from Roman Hodek's rmail originals.
-
-;; Basic reply wrapper used by most other functions
-(defun buildd-prepare-mail (label send-now &rest ins)
-  "Generate a reply to the buildd.
-LABEL is an rmail label to set.
-If SEND-NOW is true send the mail before returning.
-INS is what to put in the body of the reply."
-  (gnus-summary-reply)
-  (goto-char (point-max))
-  (while ins
-       (insert (car ins))
-       (setq ins (cdr ins)))
-  (if send-now
-      (message-send-and-exit)))
-;;
-
-(defun buildd-reply-ok ()
-  "Tell the buildd to upload the package."
-  (interactive)
-  (save-excursion
-    (let (beg end str (message-inhibit-body-encoding t))
-      (set-buffer "*Article*")
-      (goto-char (point-max))
-      (if (not (re-search-backward "^[^        ]*\\.changes:$"))
-         (error "Can't find .changes: line"))
-      (forward-line 1)
-      (beginning-of-line)
-      (setq beg (point))
-      (if (not (re-search-forward "^Files: $"))
-         (error "Can't find Files: line"))
-      (beginning-of-line)
-      (forward-line 1)
-      (while (looking-at "^ ")
-       (forward-line 1))
-      (setq end (point))
-      (setq str (buffer-substring beg end))
-
-      (gnus-summary-reply)
-      (goto-char (point-max))
-      (setq beg (point))
-      (insert str)
-      (goto-char (point-max))
-      (setq end (point))
-      (pgg-sign-region 0 beg end)
-      (message-send-and-exit))))
-
-(defun buildd-reply-newversion ()
-  "Tell the buildd to build the new version of the package."
-  (interactive)
-  (save-excursion
-    (let (str)
-      (set-buffer "*Article*")
-      (goto-char (point-min))
-      (if (not (re-search-forward "only different version(s) \\([^     ]*\\) found"))
-         (error "Can't find version"))
-      (setq str (buffer-substring (match-beginning 1) (match-end 1)))
-
-      (buildd-prepare-mail "newv" t "newvers " str "\n"))))
-
-(defun buildd-reply-depretry ()
-  "Tell the buildd to retry the package when a dependency becomes available."
-  (interactive)
-  (save-excursion
-    (let ((deps ""))
-      (set-buffer "*Article*")
-      (goto-char (point-min))
-      (while (re-search-forward
-             "^E: Package \\([^ ]*\\) has no installation candidate$"
-             (point-max) t)
-       (if (> (length deps) 0) (setq deps (concat deps ", ")))
-       (setq deps (concat deps (buffer-substring (match-beginning 1)
-                                                 (match-end 1)))))
-      (goto-char (point-min))
-      (while (re-search-forward
-             "^E: Couldn't find package \\([^ ]*\\)$" (point-max) t)
-       (if (> (length deps) 0) (setq deps (concat deps ", ")))
-       (setq deps (concat deps (buffer-substring (match-beginning 1)
-                                                 (match-end 1)))))
-      (goto-char (point-min))
-      (if (re-search-forward
-          "^After installing, the following source dependencies"
-          (point-max) t)
-         (progn
-           (forward-line 1)
-           (while (re-search-forward
-                   "\\([^ (]*\\)(inst [^ ]* ! \\([<>=]*\\) wanted \\([^ ]*\\))"
-                   (point-max) t)
-             (if (> (length deps) 0) (setq deps (concat deps ", ")))
-             (setq deps (concat deps
-                                (buffer-substring (match-beginning 1)
-                                                  (match-end 1))
-                                " ("
-                                (buffer-substring (match-beginning 2)
-                                                  (match-end 2))
-                                " "
-                                (buffer-substring (match-beginning 3)
-                                                  (match-end 3))
-                                ")")))))
-      (buildd-prepare-mail "dretry" nil "dep-retry " deps "\n")
-      (forward-line -1)
-      (end-of-line))))
-
-(defun buildd-reply-retry ()
-  "Tell the buildd to retry the build."
-  (interactive)
-  (save-excursion
-       (buildd-prepare-mail "retry" t "retry\n")))
-
-(defun buildd-reply-giveback ()
-  "Tell the buildd to give the build back."
-  (interactive)
-  (save-excursion
-       (buildd-prepare-mail "giveback" t "giveback\n")))
-
-(defun buildd-reply-notforus ()
-  "Tell the buildd that this package is not for us."
-  (interactive)
-  (save-excursion
-       (buildd-prepare-mail "not-for-us" t "not-for-us\n")))
-
-(defun buildd-reply-manual ()
-  "Tell the buildd that this package will be finished manually."
-  (interactive)
-  (save-excursion
-       (buildd-prepare-mail "manual" t "manual\n")))
-
-(defun buildd-reply-purge ()
-  "Tell the buildd to purge the package's build tree."
-  (interactive)
-  (save-excursion
-       (buildd-prepare-mail "purge" t "purge\n")))
-
-(defun buildd-reply-fail ()
-  "Tell the buildd the build failed (and why)."
-  (interactive)
-  (save-excursion
-       (buildd-prepare-mail "failed" nil "fail\n")))
-
-(defun buildd-bug ()
-  "Generate a bug report based on a build log from a buildd."
-  (interactive)
-  (save-excursion
-    (let (pkgv pkg vers dist time)
-      (set-buffer "*Article*")
-      (goto-char (point-min))
-      (if (not (re-search-forward "^Subject: Log for .* build of \\([^      ][^     ]*\\)_\\([^     ][^     ]*\\) (dist=\\([a-z]*\\))"))
-         (error "Can't find package+version in subject"))
-      (setq pkg (buffer-substring (match-beginning 1) (match-end 1))
-           vers (buffer-substring (match-beginning 2) (match-end 2))
-           dist (buffer-substring (match-beginning 3) (match-end 3)))
-      (if (not (re-search-forward "^Automatic build of .* on \\(.*\\) by sbuild/\\([^  ]*\\).*"))
-         (error "Can't find sbuild header in body"))
-      (setq host (buffer-substring (match-beginning 1) (match-end 1)))
-      (setq arch (buffer-substring (match-beginning 2) (match-end 2)))
-      (setq pkgv (concat pkg "_" vers))
-      (if (not (re-search-forward "^Build started at \\([0-9-]*\\)"))
-         (error "Can't find package+version in subject"))
-      (setq time (buffer-substring (match-beginning 1) (match-end 1)))
-
-      ; Copy the build-log
-      (goto-char (point-min))
-      (re-search-forward "^Automatic build of .* on .* by sbuild/")
-      (beginning-of-line)
-      (let ((beg (point)))
-       (goto-char (re-search-forward "^Build needed .* disk space$"))
-       (copy-region-as-kill beg (point)))
-      (setq build-log (car kill-ring-yank-pointer))
-
-      ; Generate the bug report mail
-      (message-mail "submit@bugs.debian.org"
-                   (concat pkgv "(" dist "/" arch "/" host "): "))
-      (message-goto-body)
-      (insert
-       (concat "Package: " pkg "\nVersion: " vers
-              "\nSeverity: serious\n\n"))
-      ;; Insert the build log and prefix it
-      (let ((beg (point)))
-       (insert build-log)
-       (forward-line 1)
-       (prefix-region "| " beg (point)))
-      ;; Insert the footer
-      (insert
-       (concat "\n"
-              "A complete build log can be found at\n"
-              buildd-log-base-addr "arch=" arch "&pkg=" pkg "&ver=" vers "\n\n"))
-      ;; Remove some obviously unnecessary stuff
-      (goto-char (point-min))
-      (re-search-forward "^| Checking available source versions...$")
-      (beginning-of-line)
-      (let ((beg (point)))
-       (goto-char (re-search-forward "^| \\*\\* Using build dependencies supplied by package:$"))
-       (beginning-of-line)
-       (message-elide-region beg (point)))
-      (save-excursion
-       (if (re-search-forward "^| \\*\\* Filtered missing central deps that are dependencies of or provide build-deps:$" nil 1)
-           (progn
-             (beginning-of-line)
-             (let ((beg (point)))
-               (forward-line 2)
-               (delete-region beg (point))))))
-      ; Clear everything else
-      (delete-other-windows)
-      (recenter)
-      )))
-
-(defun buildd-bug-ack-append (edit-addr)
-  "Tell a buildd to fail a package based on a bug report acknowledgement."
-  (interactive "P")
-  (save-excursion
-        (let (bugno pkgv pkg vers dist beg end (message-signature nil))
-         (set-buffer "*Article*")
-          (goto-char (point-min))
-          (if (not (re-search-forward "^Subject: Bug#\\([0-9]*\\): Acknowledgement (\\([^       ][^     ]*\\)_\\([^     ][^     ]*\\)(\\([a-z]+\\)/\\([a-z]+\\)/\\([a-z]+\\)): "))
-                  (error "Can't find bug#, package+version, and/or dist in subject"))
-          (setq bugno (buffer-substring (match-beginning 1) (match-end 1))
-                        pkg (buffer-substring (match-beginning 2) (match-end 2))
-                        vers (buffer-substring (match-beginning 3) (match-end 3))
-                        dist (buffer-substring (match-beginning 4) (match-end 4))
-                       arch (buffer-substring (match-beginning 5) (match-end 5))
-                       host (buffer-substring (match-beginning 6) (match-end 6)))
-          (setq pkgv (concat pkg "_" vers))
-         ; Find the right buildd to mail
-         (loop for (this-host . this-addr) in buildd-mail-addr-alist
-               when (string= host this-host)
-               do (setq buildd-mail-addr this-addr))
-         ; Finally compose the mail
-         (message-mail buildd-mail-addr
-                       (concat "Re: Log for failed build of " pkgv " (dist=" dist ")"))
-         (message-goto-body)
-         (insert (concat "fail\nsee #" bugno "\n"))
-         (message-send-and-exit))))
-
-(defun buildd-reopen-bug (bugno)
-  "Generate a template mail to reopen a bug report."
-  (interactive "nBug Number: ")
-  (save-excursion
-        (message-mail (concat "control@bugs.debian.org, " bugno "@bugs.debian.org")
-                     (concat "Re: Bug#" bugno ": "))
-       (message-goto-body)
-       (insert (concat "reopen " bugno "\nthanks\n"))
-       (message-goto-subject)))
-
-(defun buildd-find-place-for-new-source-dep (package)
-  "Finds a place for a new source dependency"
-  (let ((this-package "")
-       (found-place nil))
-    (goto-char (point-min))
-    ; Skip the comments and jump to the source deps
-    (re-search-forward "^[a-zA-Z0-9]*:")
-    (beginning-of-line)
-    (forward-line -1)
-    ; Find the first higher (alphabetically later) package name
-    (while (and (< (point) (point-max)) (not found-place))
-      (progn
-       (re-search-forward "^\\([a-zA-Z0-9\\-]*\\):")
-       (setq this-package (buffer-substring (match-beginning 1) (match-end 1)))
-       (if (string-lessp package this-package)
-           (setq found-place t))))
-    ; Should never happen (assuming no source package is > `zephyr')
-    (if (not found-place)
-       (error "Couldn't find place for package %s" package))
-    ; Insert the package name, ready for the user to add the first source dep
-    (beginning-of-line)
-    (insert (format "%s: \n" package))
-    (forward-char -1)
-    ))
-
-;; Brings up a buffer with source-dependencies.manual file in it and
-;; jumps to the right place.
-
-(defun buildd-edit-manual-source-deps ()
-  "Opens the manually added source dependencies file and jumps to the
-right place in the file."
-  (interactive)
-  (save-excursion
-    (set-buffer "*Article*")
-    (goto-char (point-min))
-    (if (not (re-search-forward "Subject: Log for \\(failed\\|successful\\) build of \\([a-zA-z0-9\\-]*\\)_"))
-       (error "Can't find valid subject"))
-    (setq package (buffer-substring (match-beginning 2) (match-end 2)))
-    (find-file manual-source-deps-file)
-    (goto-char (point-min))
-    (if (re-search-forward (format "^%s:" package) nil t)
-       (progn
-         (end-of-line)
-         (insert ", "))
-      (buildd-find-place-for-new-source-dep package))
-    ))
-(provide 'buildd-gnus)
diff --git a/.emacs.d/elisp/local/color-theme.el b/.emacs.d/elisp/local/color-theme.el
deleted file mode 100755 (executable)
index 36baf67..0000000
+++ /dev/null
@@ -1,1671 +0,0 @@
-;;; color-theme.el --- install color themes
-
-;; Copyright (C) 1999, 2000  Jonadab the Unsightly One <jonadab@bright.net>
-;; Copyright (C) 2000, 2001, 2002, 2003  Alex Schroeder <alex@gnu.org>
-;; Copyright (C) 2003, 2004, 2005, 2006  Xavier Maillard <zedek@gnu.org>
-
-;; Version: 6.6.0
-;; Keywords: faces
-;; Author: Jonadab the Unsightly One <jonadab@bright.net>
-;; Maintainer: Xavier Maillard <zedek@gnu.org>
-;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ColorTheme
-
-;; This file is not (YET) part of GNU Emacs.
-
-;; This 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, or (at your option) any later
-;; version.
-;;
-;; This 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 GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-;; MA 02111-1307, USA.
-
-;;; Commentary:
-
-;; Please read README and BUGS files for any relevant help.
-;; Contributors (not themers) should also read HACKING file.
-
-;;; Thanks
-
-;; Deepak Goel  <deego@glue.umd.edu>
-;; S. Pokrovsky <pok@nbsp.nsk.su> for ideas and discussion.
-;; Gordon Messmer <gordon@dragonsdawn.net> for ideas and discussion.
-;; Sriram Karra <karra@cs.utah.edu> for the color-theme-submit stuff.
-;; Olgierd `Kingsajz' Ziolko <kingsajz@rpg.pl> for the spec-filter idea.
-;; Brian Palmer for color-theme-library ideas and code
-;; All the users that contributed their color themes.
-
-\f
-
-;;; Code:
-(eval-when-compile
-  (require 'easymenu)
-  (require 'reporter)
-  (require 'sendmail))
-
-(require 'cl); set-difference is a function...
-
-;; for custom-face-attributes-get or face-custom-attributes-get
-(require 'cus-face)
-(require 'wid-edit); for widget-apply stuff in cus-face.el
-
-(defconst color-theme-maintainer-address "zedek@gnu.org"
-  "Address used by `submit-color-theme'.")
-
-;; Emacs / XEmacs compatibility and workaround layer
-
-(cond ((and (facep 'tool-bar)
-           (not (facep 'toolbar)))
-       (put 'toolbar 'face-alias 'tool-bar))
-      ((and (facep 'toolbar)
-           (not (facep 'tool-bar)))
-       (put 'tool-bar 'face-alias 'toolbar)))
-
-(defvar color-theme-xemacs-p (and (featurep 'xemacs) 
-                                  (string-match "XEmacs" emacs-version))
-  "Non-nil if running XEmacs.")
-
-;; Add this since it appears to miss in emacs-2x
-(if (fboundp 'replace-in-string)
-    (defalias 'color-theme-replace-in-string 'replace-in-string)
-  (defsubst color-theme-replace-in-string (target old new &optional literal)
-    (replace-regexp-in-string old new target nil literal)))
-
-;; face-attr-construct has a problem in Emacs 20.7 and older when
-;; dealing with inverse-video faces.  Here is a short test to check
-;; wether you are affected.
-
-;; (set-background-color "wheat")
-;; (set-foreground-color "black")
-;; (setq a (make-face 'a-face))
-;; (face-spec-set a '((t (:background "white" :foreground "black" :inverse-video t))))
-;; (face-attr-construct a)
-;;     => (:background "black" :inverse-video t)
-
-;; The expected response is the original specification:
-;;     => (:background "white" :foreground "black" :inverse-video t)
-
-;; That's why we depend on cus-face.el functionality.
-
-(cond ((fboundp 'custom-face-attributes-get)
-       (defun color-theme-face-attr-construct (face frame)
-         (if (atom face)
-             (custom-face-attributes-get face frame)
-             (if (and (consp face) (eq (car face) 'quote))
-                 (custom-face-attributes-get (cadr face) frame)
-                 (custom-face-attributes-get (car face) frame)))))
-      ((fboundp 'face-custom-attributes-get)
-       (defalias 'color-theme-face-attr-construct
-        'face-custom-attributes-get))
-      (t
-       (defun color-theme-face-attr-construct (&rest ignore)
-        (error "Unable to construct face attributes"))))
-
-(defun color-theme-alist (plist)
-  "Transform PLIST into an alist if it is a plist and return it.
-If the first element of PLIST is a cons cell, we just return PLIST,
-assuming PLIST to be an alist.  If the first element of plist is not a
-symbol, this is an error: We cannot distinguish a plist from an ordinary
-list, but a list that doesn't start with a symbol is certainly no plist
-and no alist.
-
-This is used to make sure `default-frame-alist' really is an alist and not
-a plist.  In XEmacs, the alist is deprecated; a plist is used instead."
-  (cond ((consp (car plist))
-        plist)
-       ((not (symbolp (car plist)))
-        (error "Wrong type argument: plist, %S" plist))
-       ((featurep 'xemacs)
-        (plist-to-alist plist)))); XEmacs only
-
-;; Customization
-
-(defgroup color-theme nil
-  "Color Themes for Emacs.
-A color theme consists of frame parameter settings, variable settings,
-and face definitions."
-  :version "20.6"
-  :group 'faces)
-
-(defcustom color-theme-legal-frame-parameters "\\(color\\|mode\\)$"
-  "Regexp that matches frame parameter names.
-Only frame parameter names that match this regexp can be changed as part
-of a color theme."
-  :type '(choice (const :tag "Colors only" "\\(color\\|mode\\)$")
-                (const :tag "Colors, fonts, and size"
-                       "\\(color\\|mode\\|font\\|height\\|width\\)$")
-                (regexp :tag "Custom regexp"))
-  :group 'color-theme
-  :link '(info-link "(elisp)Window Frame Parameters"))
-
-(defcustom color-theme-legal-variables "\\(color\\|face\\)$"
-  "Regexp that matches variable names.
-Only variables that match this regexp can be changed as part of a color
-theme.  In addition to matching this name, the variables have to be user
-variables (see function `user-variable-p')."
-  :type 'regexp
-  :group 'color-theme)
-
-(defcustom color-theme-illegal-faces "^w3-"
-  "Regexp that matches face names forbidden in themes.
-The default setting \"^w3-\" excludes w3 faces since these
-are created dynamically."
-  :type 'regexp
-  :group 'color-theme
-  :link '(info-link "(elisp)Faces for Font Lock")
-  :link '(info-link "(elisp)Standard Faces"))
-
-(defcustom color-theme-illegal-default-attributes '(:family :height :width)
-  "A list of face properties to be ignored when installing faces.
-This prevents Emacs from doing terrible things to your display just because
-a theme author likes weird fonts."
-  :type '(repeat symbol)
-  :group 'color-theme)
-
-(defcustom color-theme-is-global t
-  "*Determines wether a color theme is installed on all frames or not.
-If non-nil, color themes will be installed for all frames.
-If nil, color themes will be installed for the selected frame only.
-
-A possible use for this variable is dynamic binding. Here is a larger
-example to put in your ~/.emacs; it will make the Blue Sea color theme
-the default used for the first frame, and it will create two additional
-frames with different color themes.
-
-setup:
-    \(require 'color-theme)
-    ;; set default color theme
-    \(color-theme-blue-sea)
-    ;; create some frames with different color themes
-    \(let ((color-theme-is-global nil))
-      \(select-frame (make-frame))
-      \(color-theme-gnome2)
-      \(select-frame (make-frame))
-      \(color-theme-standard))
-
-Please note that using XEmacs and and a nil value for
-color-theme-is-global will ignore any variable settings for the color
-theme, since XEmacs doesn't have frame-local variable bindings.
-
-Also note that using Emacs and a non-nil value for color-theme-is-global
-will install a new color theme for all frames.  Using XEmacs and a
-non-nil value for color-theme-is-global will install a new color theme
-only on those frames that are not using a local color theme."
-  :type 'boolean
-  :group 'color-theme)
-
-(defcustom color-theme-is-cumulative t
-  "*Determines wether new color themes are installed on top of each other.
-If non-nil, installing a color theme will undo all settings made by
-previous color themes."
-  :type 'boolean
-  :group 'color-theme)
-
-(defcustom color-theme-directory nil
-  "Directory where we can find additionnal themes (personnal).
-Note that there is at least one directory shipped with the official
-color-theme distribution where all contributed themes are located.
-This official selection can't be changed with that variable. 
-However, you still can decide to turn it on or off and thus,
-not be shown with all themes but yours."
-  :type '(repeat string)
-  :group 'color-theme)
-
-(defcustom color-theme-libraries (directory-files 
-                                  (file-name-as-directory 
-                                  (expand-file-name 
-                                    "themes" 
-                                    (file-name-directory (locate-library "color-theme")))) 
-                                  t "^color-theme")
-  "A list of files, which will be loaded in color-theme-initialize depending
-on `color-theme-load-all-themes' value. 
-This allows a user to prune the default color-themes (which can take a while
-to load)."
-  :type '(repeat string)
-  :group 'color-theme)
-
-(defcustom color-theme-load-all-themes t
-  "When t, load all color-theme theme files
-as presented by `color-theme-libraries'. Else
-do not load any of this themes."
-  :type 'boolean
-  :group 'color-theme)
-
-(defcustom color-theme-mode-hook nil
-  "Hook for color-theme-mode."
-  :type 'hook
-  :group 'color-theme)
-
-(defvar color-theme-mode-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map (kbd "RET") 'color-theme-install-at-point)
-    (define-key map (kbd "c") 'list-colors-display)
-    (define-key map (kbd "d") 'color-theme-describe)
-    (define-key map (kbd "f") 'list-faces-display)
-    (define-key map (kbd "i") 'color-theme-install-at-point)
-    (define-key map (kbd "l") 'color-theme-install-at-point-for-current-frame)
-    (define-key map (kbd "p") 'color-theme-print)
-    (define-key map (kbd "q") 'bury-buffer)
-    (define-key map (kbd "?") 'color-theme-describe)
-    (if color-theme-xemacs-p
-       (define-key map (kbd "<button2>") 'color-theme-install-at-mouse)
-      (define-key map (kbd "<mouse-2>") 'color-theme-install-at-mouse))
-    map)
-  "Mode map used for the buffer created by `color-theme-select'.")
-
-(defvar color-theme-initialized nil
-  "Internal variable determining whether color-theme-initialize has been invoked yet")
-
-(defvar color-theme-buffer-name "*Color Theme Selection*"
-  "Name of the color theme selection buffer.")
-
-(defvar color-theme-original-frame-alist nil
-  "nil until one of the color themes has been installed.")
-
-(defvar color-theme-history nil
-  "List of color-themes called, in reverse order")
-
-(defcustom color-theme-history-max-length nil
-  "Max length of history to maintain.
-Two other values are acceptable: t means no limit, and
-nil means that no history is maintained."
-  :type '(choice (const :tag "No history" nil)
-                (const :tag "Unlimited length" t)
-                integer)
-  :group 'color-theme)
-
-(defvar color-theme-counter 0
-  "Counter for every addition to `color-theme-history'.
-This counts how many themes were installed, regardless
-of `color-theme-history-max-length'.")
-
-(defvar color-theme-entry-path (cond
-                                ;; Emacs 22.x and later
-                                ((lookup-key global-map [menu-bar tools])
-                                 '("tools"))
-                                ;; XEmacs
-                                ((featurep 'xemacs)
-                                 (setq tool-entry '("Tools")))
-                                ;; Emacs < 22
-                                (t
-                                 '("Tools")))
-  "Menu tool entry path.")
-
-(defun color-theme-add-to-history (name)
-  "Add color-theme NAME to `color-theme-history'."
-  (setq color-theme-history
-       (cons (list name color-theme-is-cumulative)
-             color-theme-history)
-       color-theme-counter (+ 1 color-theme-counter))
-  ;; Truncate the list if necessary.
-  (when (and (integerp color-theme-history-max-length)
-            (>= (length color-theme-history)
-                color-theme-history-max-length))
-    (setcdr (nthcdr (1- color-theme-history-max-length)
-                   color-theme-history)
-           nil)))
-
-;; (let ((l '(1 2 3 4 5)))
-;;   (setcdr (nthcdr 2 l) nil)
-;;   l)
-
-\f
-
-;; List of color themes used to create the *Color Theme Selection*
-;; buffer.
-
-(defvar color-themes
-  '((color-theme-aalto-dark "Aalto Dark" "Jari Aalto <jari.aalto@poboxes.com>")
-    (color-theme-aalto-light "Aalto Light" "Jari Aalto <jari.aalto@poboxes.com>")
-    (color-theme-aliceblue "Alice Blue" "Girish Bharadwaj <girishb@gbvsoft.com>")
-    (color-theme-andreas "Andreas" "Andreas Busch <Andreas.Busch@politics.ox.ac.uk>")
-    (color-theme-arjen "Arjen" "Arjen Wiersma <arjen@wiersma.org>")
-    (color-theme-beige-diff "Beige Diff" "Alex Schroeder <alex@gnu.org>" t)
-    (color-theme-bharadwaj "Bharadwaj" "Girish Bharadwaj <girishb@gbvsoft.com>")
-    (color-theme-bharadwaj-slate "Bharadwaj Slate" "Girish Bharadwaj <girishb@gbvsoft.com>")
-    (color-theme-billw "Billw" "Bill White <billw@wolfram.com>")
-    (color-theme-black-on-gray "BlackOnGray" "Sudhir Bhojwani <sbhojwani@altoweb.com>")
-    (color-theme-blippblopp "Blipp Blopp" "Thomas Sicheritz-Ponten<thomas@biopython.org>")
-    (color-theme-simple-1 "Black" "Jonadab <jonadab@bright.net>")
-    (color-theme-blue-erc "Blue ERC" "Alex Schroeder <alex@gnu.org>" t)
-    (color-theme-blue-gnus "Blue Gnus" "Alex Schroeder <alex@gnu.org>" t)
-    (color-theme-blue-mood "Blue Mood" "Nelson Loyola <nloyola@yahoo.com>")
-    (color-theme-blue-sea "Blue Sea" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-calm-forest "Calm Forest" "Artur Hefczyc <kobit@plusnet.pl>")
-    (color-theme-charcoal-black "Charcoal Black" "Lars Chr. Hausmann <jazz@zqz.dk>")
-    (color-theme-goldenrod "Cheap Goldenrod" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-clarity "Clarity and Beauty" "Richard Wellum <rwellum@cisco.com>")
-    (color-theme-classic "Classic" "Frederic Giroud <postcard@worldonline.fr>")
-    (color-theme-comidia "Comidia" "Marcelo Dias de Toledo <mtole@ig.com.br>")
-    (color-theme-jsc-dark "Cooper Dark" "John S Cooper <John.Cooper@eu.citrix.com>")
-    (color-theme-jsc-light "Cooper Light" "John S Cooper <John.Cooper@eu.citrix.com>")
-    (color-theme-jsc-light2 "Cooper Light 2" "John S Cooper <John.Cooper@eu.citrix.com>")
-    (color-theme-dark-blue "Dark Blue" "Chris McMahan <cmcmahan@one.net>")
-    (color-theme-dark-blue2 "Dark Blue 2" "Chris McMahan <cmcmahan@one.net>")
-    (color-theme-dark-green "Dark Green" "eddy_woody@hotmail.com")
-    (color-theme-dark-laptop "Dark Laptop" "Laurent Michel <ldm@cs.brown.edu>")
-    (color-theme-deep-blue "Deep Blue" "Tomas Cerha <cerha@brailcom.org>")
-    (color-theme-digital-ofs1 "Digital OFS1" "Gareth Owen <gowen@gwowen.freeserve.co.uk>")
-    (color-theme-euphoria "Euphoria" "oGLOWo@oGLOWo.cjb.net")
-    (color-theme-feng-shui "Feng Shui" "Walter Higgins <walterh@rocketmail.com>")
-    (color-theme-fischmeister "Fischmeister"
-                             "Sebastian Fischmeister <sfischme@nexus.lzk.tuwien.ac.at>")
-    (color-theme-gnome "Gnome" "Jonadab <jonadab@bright.net>")
-    (color-theme-gnome2 "Gnome 2" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-gray1 "Gray1" "Paul Pulli <P.Pulli@motorola.com>")
-    (color-theme-gray30 "Gray30" "Girish Bharadwaj <girishb@gbvsoft.com>")
-    (color-theme-kingsajz "Green Kingsajz" "Olgierd `Kingsajz' Ziolko <kingsajz@rpg.pl>")
-    (color-theme-greiner "Greiner" "Kevin Greiner <kgreiner@mapquest.com>")
-    (color-theme-gtk-ide "GTK IDE" "Gordon Messmer <gordon@dragonsdawn.net>")
-    (color-theme-high-contrast "High Contrast" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-hober "Hober" "Edward O'Connor <ted@oconnor.cx>")
-    (color-theme-infodoc "Infodoc" "Frederic Giroud <postcard@worldonline.fr>")
-    (color-theme-jb-simple "JB Simple" "jeff@dvns.com")
-    (color-theme-jedit-grey "Jedit Grey" "Gordon Messmer <gordon@dragonsdawn.net>")
-    (color-theme-jonadabian "Jonadab" "Jonadab <jonadab@bright.net>")
-    (color-theme-jonadabian-slate "Jonadabian Slate" "Jonadab <jonadab@bright.net>")
-    (color-theme-katester "Katester" "Higgins_Walter@emc.com")
-    (color-theme-late-night "Late Night" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-lawrence "Lawrence" "lawrence mitchell <wence@gmx.li>")
-    (color-theme-lethe "Lethe" "Ivica Loncar <ivica.loncar@srk.fer.hr>")
-    (color-theme-ld-dark "Linh Dang Dark" "Linh Dang <linhd@nortelnetworks.com>")
-    (color-theme-marine "Marine" "Girish Bharadwaj <girishb@gbvsoft.com>")
-    (color-theme-matrix "Matrix" "Walter Higgins <walterh@rocketmail.com>")
-    (color-theme-marquardt "Marquardt" "Colin Marquardt <colin@marquardt-home.de>")
-    (color-theme-midnight "Midnight" "Gordon Messmer <gordon@dragonsdawn.net>")
-    (color-theme-mistyday "Misty Day" "Hari Kumar <Hari.Kumar@mtm.kuleuven.ac.be>")
-    (color-theme-montz "Montz" "Brady Montz <bradym@becomm.com>")
-    (color-theme-oswald "Oswald" "Tom Oswald <toswald@sharplabs.com>")
-    (color-theme-parus "Parus" "Jon K Hellan <hellan@acm.org>")
-    (color-theme-pierson "Pierson" "Dan L. Pierson <dan@sol.control.com>")
-    (color-theme-ramangalahy "Ramangalahy" "Solofo Ramangalahy <solofo@irisa.fr>")
-    (color-theme-raspopovic "Raspopovic" "Pedja Raspopovic <pedja@lsil.com>")
-    (color-theme-renegade "Renegade" "Dave Benjamin <ramen@ramenfest.com>")
-    (color-theme-resolve "Resolve" "Damien Elmes <resolve@repose.cx>")
-    (color-theme-retro-green "Retro Green" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-retro-orange "Retro Orange" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-robin-hood "Robin Hood" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-rotor "Rotor" "Jinwei Shen <shenjw@wam.umd.edu>")
-    (color-theme-ryerson "Ryerson" "Luis Fernandes <elf@ee.ryerson.ca>")
-    (color-theme-salmon-diff "Salmon Diff" "Alex Schroeder <alex@gnu.org>" t)
-    (color-theme-salmon-font-lock "Salmon Font-Lock" "Alex Schroeder <alex@gnu.org>" t)
-    (color-theme-scintilla "Scintilla" "Gordon Messmer <gordon@dragonsdawn.net>")
-    (color-theme-shaman "Shaman" "shaman@interdon.net")
-    (color-theme-sitaramv-nt "Sitaram NT"
-                            "Sitaram Venkatraman <sitaramv@loc251.tandem.com>")
-    (color-theme-sitaramv-solaris "Sitaram Solaris"
-                                 "Sitaram Venkatraman <sitaramv@loc251.tandem.com>")
-    (color-theme-snow "Snow" "Nicolas Rist <Nicolas.Rist@alcatel.de>")
-    (color-theme-snowish "Snowish" "Girish Bharadwaj <girishb@gbvsoft.com>")
-    (color-theme-standard-ediff "Standard Ediff" "Emacs Team, added by Alex Schroeder <alex@gnu.org>" t)
-    (color-theme-standard "Standard Emacs 20" "Emacs Team, added by Alex Schroeder <alex@gnu.org>")
-    (color-theme-emacs-21 "Standard Emacs 21" "Emacs Team, added by Alex Schroeder <alex@gnu.org>")
-    (color-theme-emacs-nw "Standard Emacs 21 No Window" "Emacs Team, added by D. Goel <deego@gnufans.org>")
-    (color-theme-xemacs "Standard XEmacs" "XEmacs Team, added by Alex Schroeder <alex@gnu.org>")
-    (color-theme-subtle-blue "Subtle Blue" "Chris McMahan <cmcmahan@one.net>")
-    (color-theme-subtle-hacker "Subtle Hacker" "Colin Walters <levanti@verbum.org>")
-    (color-theme-taming-mr-arneson "Taming Mr Arneson" "Erik Arneson <erik@aarg.net>")
-    (color-theme-taylor "Taylor" "Art Taylor <reeses@hemisphere.org>")
-    (color-theme-tty-dark "TTY Dark" "O Polite <m2@plusseven.com>")
-    (color-theme-vim-colors "Vim Colors" "Michael Soulier <msoulier@biryani.nssg.mitel.com>")
-    (color-theme-whateveryouwant "Whateveryouwant" "Fabien Penso <penso@linuxfr.org>, color by Scott Jaderholm <scott@jaderholm.com>")
-    (color-theme-wheat "Wheat" "Alex Schroeder <alex@gnu.org>")
-    (color-theme-pok-wob "White On Black" "S. Pokrovsky <pok@nbsp.nsk.su>")
-    (color-theme-pok-wog "White On Grey" "S. Pokrovsky <pok@nbsp.nsk.su>")
-    (color-theme-word-perfect "WordPerfect" "Thomas Gehrlein <Thomas.Gehrlein@t-online.de>")
-    (color-theme-xp "XP" "Girish Bharadwaj <girishb@gbvsoft.com>"))
-  "List of color themes.
-
-Each THEME is itself a three element list (FUNC NAME MAINTAINER &optional LIBRARY).
-
-FUNC is a color theme function which does the setup.  The function
-FUNC may call `color-theme-install'.  The color theme function may be
-interactive.
-
-NAME is the name of the theme and MAINTAINER is the name and/or email of
-the maintainer of the theme.
-
-If LIBRARY is non-nil, the color theme will be considered a library and
-may not be shown in the default menu.
-
-If you defined your own color theme and want to add it to this list,
-use something like this:
-
-  (add-to-list 'color-themes '(color-theme-gnome2 \"Gnome2\" \"Alex\"))")
-
-;;; Functions
-
-(defun color-theme-backup-original-values ()
-  "Back up the original `default-frame-alist'.
-The values are stored in `color-theme-original-frame-alist' on
-startup."
-  (if (null color-theme-original-frame-alist)
-      (setq color-theme-original-frame-alist
-           (color-theme-filter (frame-parameters (selected-frame))
-                               color-theme-legal-frame-parameters))))
-(add-hook 'after-init-hook 'color-theme-backup-original-values)
-
-;;;###autoload
-(defun color-theme-select (&optional arg)
-  "Displays a special buffer for selecting and installing a color theme.
-With optional prefix ARG, this buffer will include color theme libraries
-as well.  A color theme library is in itself not complete, it must be
-used as part of another color theme to be useful.  Thus, color theme
-libraries are mainly useful for color theme authors."
-  (interactive "P")
-  (unless color-theme-initialized (color-theme-initialize))
-  (switch-to-buffer (get-buffer-create color-theme-buffer-name))
-  (setq buffer-read-only nil)
-  (erase-buffer)
-  ;; recreate the snapshot if necessary
-  (when (or (not (assq 'color-theme-snapshot color-themes))
-           (not (commandp 'color-theme-snapshot)))
-    (fset 'color-theme-snapshot (color-theme-make-snapshot))
-    (setq color-themes (delq (assq 'color-theme-snapshot color-themes)
-                            color-themes)
-         color-themes (delq (assq 'bury-buffer color-themes)
-                            color-themes)
-         color-themes (append '((color-theme-snapshot
-                                 "[Reset]" "Undo changes, if possible.")
-                                (bury-buffer
-                                 "[Quit]" "Bury this buffer."))
-                            color-themes)))
-  (dolist (theme color-themes)
-    (let ((func (nth 0 theme))
-         (name (nth 1 theme))
-         (author (nth 2 theme))
-         (library (nth 3 theme))
-         (desc))
-      (when (or (not library) arg)
-       (setq desc (format "%-23s %s" 
-                          (if library (concat name " [lib]") name)
-                          author))
-       (put-text-property 0 (length desc) 'color-theme func desc)
-       (put-text-property 0 (length name) 'face 'bold desc)
-       (put-text-property 0 (length name) 'mouse-face 'highlight desc)
-       (insert desc)
-       (newline))))
-  (goto-char (point-min))
-  (setq buffer-read-only t)
-  (set-buffer-modified-p nil)
-  (color-theme-mode))
-
-(when (require 'easymenu)
-  (easy-menu-add-item nil color-theme-entry-path "--")
-  (easy-menu-add-item  nil color-theme-entry-path
-                       ["Color Themes" color-theme-select t]))
-
-(defun color-theme-mode ()
-  "Major mode to select and install color themes.
-
-Use \\[color-theme-install-at-point] to install a color theme on all frames.
-Use \\[color-theme-install-at-point-for-current-frame] to install a color theme for the current frame only.
-
-The changes are applied on top of your current setup.  This is a
-feature.
-
-Some of the themes should be considered extensions to the standard color
-theme: they modify only a limited number of faces and variables.  To
-verify the final look of a color theme, install the standard color
-theme, then install the other color theme.  This is a feature. It allows
-you to mix several color themes.
-
-Use \\[color-theme-describe] to read more about the color theme function at point.
-If you want to install the color theme permanently, put the call to the
-color theme function into your ~/.emacs:
-
-    \(require 'color-theme)
-    \(color-theme-gnome2)
-
-If you worry about the size of color-theme.el: You are right.  Use
-\\[color-theme-print] to print the current color theme and save the resulting buffer
-as ~/.emacs-color-theme.  Now you can install only this specific color
-theme in your .emacs:
-
-    \(load-file \"~/.emacs-color-theme\")
-    \(my-color-theme)
-
-The Emacs menu is not affected by color themes within Emacs.  Depending
-on the toolkit you used to compile Emacs, you might have to set specific
-X ressources.  See the info manual for more information.  Here is an
-example ~/.Xdefaults fragment:
-
-    emacs*Background: DarkSlateGray
-    emacs*Foreground: wheat
-
-\\{color-theme-mode-map}
-
-The color themes are listed in `color-themes', which see."
-  (kill-all-local-variables)
-  (setq major-mode 'color-theme-mode)
-  (setq mode-name "Color Themes")
-  (use-local-map color-theme-mode-map)
-  (when (functionp 'goto-address); Emacs
-    (goto-address))
-  (run-hooks 'color-theme-mode-hook))
-
-;;; Commands in Color Theme Selection mode
-
-;;;###autoload
-(defun color-theme-describe ()
-  "Describe color theme listed at point.
-This shows the documentation of the value of text-property color-theme
-at point.  The text-property color-theme should be a color theme
-function.  See `color-themes'."
-  (interactive)
-  (describe-function (get-text-property (point) 'color-theme)))
-
-;;;###autoload
-(defun color-theme-install-at-mouse (event)
-  "Install color theme clicked upon using the mouse.
-First argument EVENT is used to set point.  Then
-`color-theme-install-at-point' is called."
-  (interactive "e")
-  (save-excursion
-    (mouse-set-point event)
-    (color-theme-install-at-point)))
-
-;;;autoload
-(defun color-theme-install-at-point ()
-  "Install color theme at point.
-This calls the value of the text-property `color-theme' at point.
-The text-property `color-theme' should be a color theme function.
-See `color-themes'."
-  (interactive)
-  (let ((func (get-text-property (point) 'color-theme)))
-    ;; install theme
-    (if func
-       (funcall func))
-    ;; If goto-address is being used, remove all overlays in the current
-    ;; buffer and run it again.  The face used for the mail addresses in
-    ;; the the color theme selection buffer is based on the variable
-    ;; goto-address-mail-face.  Changes in that variable will not affect
-    ;; existing overlays, however, thereby confusing users.
-    (when (functionp 'goto-address); Emacs
-      (dolist (o (overlays-in (point-min) (point-max)))
-       (delete-overlay o))
-      (goto-address))))
-
-;;;###autoload
-(defun color-theme-install-at-point-for-current-frame ()
-  "Install color theme at point for current frame only.
-Binds `color-theme-is-global' to nil and calls
-`color-theme-install-at-point'."
-  (interactive)
-  (let ((color-theme-is-global nil))
-    (color-theme-install-at-point)))
-
-\f
-
-;; Taking a snapshot of the current color theme and pretty printing it.
-
-(defun color-theme-filter (old-list regexp &optional exclude)
-  "Filter OLD-LIST.
-The resulting list will be newly allocated and contains only elements
-with names matching REGEXP.  OLD-LIST may be a list or an alist.  If you
-want to filter a plist, use `color-theme-alist' to convert your plist to
-an alist, first.
-
-If the optional argument EXCLUDE is non-nil, then the sense is
-reversed: only non-matching elements will be retained."
-  (let (elem new-list)
-    (dolist (elem old-list)
-      (setq name (symbol-name (if (listp elem) (car elem) elem)))
-      (when (or (and (not exclude)
-                    (string-match regexp name))
-               (and exclude
-                    (not (string-match regexp name))))
-       ;; Now make sure that if elem is a cons cell, and the cdr of
-       ;; that cons cell is a string, then we need a *new* string in
-       ;; the new list.  Having a new cons cell is of no use because
-       ;; modify-frame-parameters will modify this string, thus
-       ;; modifying our color theme functions!
-       (when (and (consp elem)
-                  (stringp (cdr elem)))
-         (setq elem (cons (car elem)
-                          (copy-sequence (cdr elem)))))
-       ;; Now store elem
-       (setq new-list (cons elem new-list))))
-    new-list))
-
-(defun color-theme-spec-filter (spec)
-  "Filter the attributes in SPEC.
-This makes sure that SPEC has the form ((t (PLIST ...))).
-Only properties not in `color-theme-illegal-default-attributes'
-are included in the SPEC returned."
-  (let ((props (cadar spec))
-       result prop val)
-    (while props
-      (setq prop (nth 0 props)
-           val (nth 1 props)
-           props (nthcdr 2 props))
-      (unless (memq prop color-theme-illegal-default-attributes)
-       (setq result (cons val (cons prop result)))))
-    `((t ,(nreverse result)))))
-
-;; (color-theme-spec-filter '((t (:background "blue3"))))
-;; (color-theme-spec-filter '((t (:stipple nil :background "Black" :foreground "SteelBlue" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width semi-condensed :family "misc-fixed"))))
-
-(defun color-theme-plist-delete (plist prop)
-  "Delete property PROP from property list PLIST by side effect.
-This modifies PLIST."
-  ;; deal with prop at the start
-  (while (eq (car plist) prop)
-    (setq plist (cddr plist)))
-  ;; deal with empty plist
-  (when plist
-    (let ((lastcell (cdr plist))
-         (l (cddr plist)))
-      (while l
-       (if (eq (car l) prop)
-           (progn
-             (setq l (cddr l))
-             (setcdr lastcell l))
-         (setq lastcell (cdr l)
-               l (cddr l))))))
-  plist)
-
-;; (color-theme-plist-delete '(a b c d e f g h) 'a)
-;; (color-theme-plist-delete '(a b c d e f g h) 'b)
-;; (color-theme-plist-delete '(a b c d e f g h) 'c)
-;; (color-theme-plist-delete '(a b c d e f g h) 'g)
-;; (color-theme-plist-delete '(a b c d c d e f g h) 'c)
-;; (color-theme-plist-delete '(a b c d e f c d g h) 'c)
-
-(if (or (featurep 'xemacs)
-       (< emacs-major-version 21))
-    (defalias 'color-theme-spec-compat 'identity)
-  (defun color-theme-spec-compat (spec)
-    "Filter the attributes in SPEC such that is is never invalid.
-Example: Eventhough :bold works in Emacs, it is not recognized by
-`customize-face' -- and then the face is uncustomizable.  This
-function replaces a :bold attribute with the corresponding :weight
-attribute, if there is no :weight, or deletes it.  This undoes the
-doings of `color-theme-spec-canonical-font', more or less."
-    (let ((props (cadar spec)))
-      (when (plist-member props :bold)
-       (setq props (color-theme-plist-delete props :bold))
-       (unless (plist-member props :weight)
-         (setq props (plist-put props :weight 'bold))))
-      (when (plist-member props :italic)
-       (setq props (color-theme-plist-delete props :italic))
-       (unless (plist-member props :slant)
-         (setq props (plist-put props :slant 'italic))))
-      `((t ,props)))))
-
-;; (color-theme-spec-compat '((t (:foreground "blue" :bold t))))
-;; (color-theme-spec-compat '((t (:bold t :foreground "blue" :weight extra-bold))))
-;; (color-theme-spec-compat '((t (:italic t :foreground "blue"))))
-;; (color-theme-spec-compat '((t (:slant oblique :italic t :foreground "blue"))))
-
-(defun color-theme-spec-canonical-font (atts)
-  "Add :bold and :italic attributes if necessary."
-  ;; add these to the front of atts -- this will keept the old value for
-  ;; customize-face in Emacs 21.
-  (when (and (memq (plist-get atts :weight)
-                  '(ultra-bold extra-bold bold semi-bold))
-            (not (plist-get atts :bold)))
-    (setq atts (cons :bold (cons t atts))))
-  (when (and (not (memq (plist-get atts :slant)
-                       '(normal nil)))
-            (not (plist-get atts :italic)))
-    (setq atts (cons :italic (cons t atts))))
-  atts)
-;; (color-theme-spec-canonical-font (color-theme-face-attr-construct 'bold (selected-frame)))
-;; (defface foo '((t (:weight extra-bold))) "foo")
-;; (color-theme-spec-canonical-font (color-theme-face-attr-construct 'foo (selected-frame)))
-;; (face-spec-set 'foo '((t (:weight extra-bold))) nil)
-;; (face-spec-set 'foo '((t (:bold t))) nil)
-;; (face-spec-set 'foo '((t (:bold t :weight extra-bold))) nil)
-
-;; Handle :height according to NEWS file for Emacs 21
-(defun color-theme-spec-resolve-height (old new)
-  "Return the new height given OLD and NEW height.
-OLD is the current setting, NEW is the setting inherited from."
-  (cond ((not old)
-        new)
-       ((integerp old)
-        old)
-       ((and (floatp old)
-             (integerp new))
-        (round (* old new)))
-       ((and (floatp old)
-             (floatp new))
-        (* old new))
-       ((and (functionp old)
-             (integerp new))
-        (round (funcall old new)))
-       ((and (functionp old)
-             (float new))
-        `(lambda (f) (* (funcall ,old f) ,new)))
-       ((and (functionp old)
-             (functionp new))
-        `(lambda (f) (* (funcall ,old (funcall ,new f)))))
-       (t
-        (error "Illegal :height attributes: %S or %S" old new))))
-;; (color-theme-spec-resolve-height 12 1.2)
-;; (color-theme-spec-resolve-height 1.2 1.2)
-;; (color-theme-spec-resolve-height 1.2 12)
-;; (color-theme-spec-resolve-height 1.2 'foo)
-;; (color-theme-spec-resolve-height (lambda (f) (* 2 f)) 5)
-;; (color-theme-spec-resolve-height (lambda (f) (* 2 f)) 2.0)
-;; the following lambda is the result from the above calculation
-;; (color-theme-spec-resolve-height (lambda (f) (* (funcall (lambda (f) (* 2 f)) f) 2.0)) 5)
-
-(defun color-theme-spec-resolve-inheritance (atts)
-  "Resolve all occurences of the :inherit attribute."
-  (let ((face (plist-get atts :inherit)))
-    ;; From the Emacs 21 NEWS file: "Attributes from inherited faces are
-    ;; merged into the face like an underlying face would be." --
-    ;; therefore properties of the inherited face only add missing
-    ;; attributes.
-    (when face
-      ;; remove :inherit face from atts -- this assumes only one
-      ;; :inherit attribute.
-      (setq atts (delq ':inherit (delq face atts)))
-      (let ((more-atts (color-theme-spec-resolve-inheritance
-                       (color-theme-face-attr-construct
-                        face (selected-frame))))
-           att val)
-       (while more-atts
-         (setq att (car more-atts)
-               val (cadr more-atts)
-               more-atts (cddr more-atts))
-         ;; Color-theme assumes that no value is ever 'unspecified.
-         (cond ((eq att ':height); cumulative effect!
-                (setq atts (plist-put atts 
-                                      ':height 
-                                      (color-theme-spec-resolve-height
-                                       (plist-get atts att) 
-                                       val))))
-               ;; Default: Only put if it has not been specified before.
-               ((not (plist-get atts att))
-                (setq atts (cons att (cons val atts))))
-                 
-))))
-    atts))
-;; (color-theme-spec-resolve-inheritance '(:bold t))
-;; (color-theme-spec-resolve-inheritance '(:bold t :foreground "blue"))
-;; (color-theme-face-attr-construct 'font-lock-comment-face (selected-frame))
-;; (color-theme-spec-resolve-inheritance '(:bold t :inherit font-lock-comment-face))
-;; (color-theme-spec-resolve-inheritance '(:bold t :foreground "red" :inherit font-lock-comment-face))
-;; (color-theme-face-attr-construct 'Info-title-2-face (selected-frame))
-;; (color-theme-face-attr-construct 'Info-title-3-face (selected-frame))
-;; (color-theme-face-attr-construct 'Info-title-4-face (selected-frame))
-;; (color-theme-spec-resolve-inheritance '(:inherit Info-title-2-face))
-
-;; The :inverse-video attribute causes Emacs to swap foreground and
-;; background colors, XEmacs does not.  Therefore, if anybody chooses
-;; the inverse-video attribute, we 1. swap the colors ourselves in Emacs
-;; and 2. we remove the inverse-video attribute in Emacs and XEmacs.
-;; Inverse-video is only useful on a monochrome tty.
-(defun color-theme-spec-maybe-invert (atts)
-  "Remove the :inverse-video attribute from ATTS.
-If ATTS contains :inverse-video t, remove it and swap foreground and
-background color.  Return ATTS."
-  (let ((inv (plist-get atts ':inverse-video)))
-    (if inv
-       (let (result att)
-         (while atts
-           (setq att (car atts)
-                 atts (cdr atts))
-           (cond ((and (eq att :foreground) (not color-theme-xemacs-p))
-                  (setq result (cons :background result)))
-                 ((and (eq att :background) (not color-theme-xemacs-p))
-                  (setq result (cons :foreground result)))
-                 ((eq att :inverse-video)
-                  (setq atts (cdr atts))); this prevents using dolist
-                 (t
-                  (setq result (cons att result)))))
-         (nreverse result))
-      ;; else
-      atts)))
-;; (color-theme-spec-maybe-invert '(:bold t))
-;; (color-theme-spec-maybe-invert '(:foreground "blue"))
-;; (color-theme-spec-maybe-invert '(:background "red"))
-;; (color-theme-spec-maybe-invert '(:inverse-video t))
-;; (color-theme-spec-maybe-invert '(:inverse-video t :foreground "red"))
-;; (color-theme-spec-maybe-invert '(:inverse-video t :background "red"))
-;; (color-theme-spec-maybe-invert '(:inverse-video t :background "red" :foreground "blue" :bold t))
-;; (color-theme-spec-maybe-invert '(:inverse-video nil :background "red" :foreground "blue" :bold t))
-
-(defun color-theme-spec (face)
-  "Return a list for FACE which has the form (FACE SPEC).
-See `defface' for the format of SPEC.  In this case we use only one
-DISPLAY, t, and determine ATTS using `color-theme-face-attr-construct'.
-If ATTS is nil, (nil) is used  instead.
-
-If ATTS contains :inverse-video t, we remove it and swap foreground and
-background color using `color-theme-spec-maybe-invert'.  We do this
-because :inverse-video is handled differently in Emacs and XEmacs.  We
-will loose on a tty without colors, because in that situation,
-:inverse-video means something."
-  (let ((atts
-        (color-theme-spec-canonical-font
-         (color-theme-spec-maybe-invert
-          (color-theme-spec-resolve-inheritance
-           (color-theme-face-attr-construct face (selected-frame)))))))
-    (if atts
-       `(,face ((t ,atts)))
-      `(,face ((t (nil)))))))
-
-(defun color-theme-get-params ()
-  "Return a list of frame parameter settings usable in a color theme.
-Such an alist may be installed by `color-theme-install-frame-params'.  The
-frame parameters returned must match `color-theme-legal-frame-parameters'."
-  (let ((params (color-theme-filter (frame-parameters (selected-frame))
-                                   color-theme-legal-frame-parameters)))
-    (sort params (lambda (a b) (string< (symbol-name (car a))
-                                       (symbol-name (car b)))))))
-
-(defun color-theme-get-vars ()
-  "Return a list of variable settings usable in a color theme.
-Such an alist may be installed by `color-theme-install-variables'.
-The variable names must match `color-theme-legal-variables', and the
-variable must be a user variable according to `user-variable-p'."
-  (let ((vars)
-       (val))
-    (mapatoms (lambda (v)
-               (and (boundp v)
-                    (user-variable-p v)
-                    (string-match color-theme-legal-variables
-                                  (symbol-name v))
-                    (setq val (eval v))
-                    (add-to-list 'vars (cons v val)))))
-    (sort vars (lambda (a b) (string< (car a) (car b))))))
-
-(defun color-theme-print-alist (alist)
-  "Print ALIST."
-  (insert "\n     " (if alist "(" "nil"))
-  (dolist (elem alist)
-    (when (= (preceding-char) ?\))
-      (insert "\n      "))
-    (prin1 elem (current-buffer)))
-  (when (= (preceding-char) ?\)) (insert ")")))
-
-(defun color-theme-get-faces ()
-  "Return a list of faces usable in a color theme.
-Such an alist may be installed by `color-theme-install-faces'.  The
-faces returned must not match `color-theme-illegal-faces'."
-  (let ((faces (color-theme-filter (face-list) color-theme-illegal-faces t)))
-    ;; default face must come first according to comments in
-    ;; custom-save-faces, the rest is to be sorted by name
-    (cons 'default (sort (delq 'default faces) 'string-lessp))))
-
-(defun color-theme-get-face-definitions ()
-  "Return face settings usable in a color-theme."
-  (let ((faces (color-theme-get-faces)))
-    (mapcar 'color-theme-spec faces)))
-
-(defun color-theme-print-faces (faces)
-  "Print face settings for all faces returned by `color-theme-get-faces'."
-  (when faces
-    (insert "\n     "))
-  (dolist (face faces)
-    (when (= (preceding-char) ?\))
-      (insert "\n     "))
-    (prin1 face (current-buffer))))
-
-(defun color-theme-reset-faces ()
-  "Reset face settings for all faces returned by `color-theme-get-faces'."
-  (let ((faces (color-theme-get-faces))
-       (face) (spec) (entry)
-       (frame (if color-theme-is-global nil (selected-frame))))
-    (while faces
-      (setq entry (color-theme-spec (car faces)))
-      (setq face (nth 0 entry))
-      (setq spec '((t (nil))))
-      (setq faces (cdr faces))
-      (if (functionp 'face-spec-reset-face)
-         (face-spec-reset-face face frame)
-       (face-spec-set face spec frame)
-       (if color-theme-is-global
-           (put face 'face-defface-spec spec))))))
-
-(defun color-theme-print-theme (func doc params vars faces)
-  "Print a theme into the current buffer.
-FUNC is the function name, DOC the doc string, PARAMS the
-frame parameters, VARS the variable bindings, and FACES
-the list of faces and their specs."
-  (insert "(defun " (symbol-name func) " ()\n"
-         "  \"" doc "\"\n"
-         "  (interactive)\n"
-         "  (color-theme-install\n"
-         "   '(" (symbol-name func))
-  ;; alist of frame parameters
-  (color-theme-print-alist params)
-  ;; alist of variables
-  (color-theme-print-alist vars)
-  ;; remaining elements of snapshot: face specs
-  (color-theme-print-faces faces)
-  (insert ")))\n")
-  (insert "(add-to-list 'color-themes '(" (symbol-name func) " "
-          " \"THEME NAME\" \"YOUR NAME\"))")
-  (goto-char (point-min)))
-
-;;;###autoload
-(defun color-theme-print (&optional buf)
-  "Print the current color theme function.
-
-You can contribute this function to <URL:news:gnu.emacs.sources> or
-paste it into your .emacs file and call it.  That should recreate all
-the settings necessary for your color theme.
-
-Example:
-
-    \(require 'color-theme)
-    \(defun my-color-theme ()
-      \"Color theme by Alex Schroeder, created 2000-05-17.\"
-      \(interactive)
-      \(color-theme-install
-       '(...
-        ...
-        ...)))
-    \(my-color-theme)
-
-If you want to use a specific color theme function, you can call the
-color theme function in your .emacs directly.
-
-Example:
-
-    \(require 'color-theme)
-    \(color-theme-gnome2)"
-  (interactive)
-  (message "Pretty printing current color theme function...")
-  (switch-to-buffer (if buf
-                       buf
-                     (get-buffer-create "*Color Theme*")))
-  (unless buf
-    (setq buffer-read-only nil)
-    (erase-buffer))
-  ;; insert defun
-  (insert "(eval-when-compile"
-          "    (require 'color-theme))\n")
-  (color-theme-print-theme 'my-color-theme
-                          (concat "Color theme by "
-                                  (if (string= "" user-full-name)
-                                      (user-login-name)
-                                    user-full-name)
-                                  ", created " (format-time-string "%Y-%m-%d") ".")
-                          (color-theme-get-params)
-                          (color-theme-get-vars)
-                          (mapcar 'color-theme-spec (color-theme-get-faces)))
-  (unless buf
-    (emacs-lisp-mode))
-  (goto-char (point-min))
-  (message "Pretty printing current color theme function... done"))
-
-(defun color-theme-analyze-find-theme (code)
-  "Find the sexpr that calls `color-theme-install'."
-  (let (theme)
-    (while (and (not theme) code)
-      (when (eq (car code) 'color-theme-install)
-       (setq theme code))
-      (when (listp (car code))
-       (setq theme (color-theme-analyze-find-theme (car code))))
-      (setq code (cdr code)))
-    theme))
-
-;; (equal (color-theme-analyze-find-theme
-;;     '(defun color-theme-blue-eshell ()
-;;        "Color theme for eshell faces only."
-;;        (color-theme-install
-;;         '(color-theme-blue-eshell
-;;           nil
-;;           (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
-;;           (eshell-ls-backup-face ((t (:foreground "Grey"))))))))
-;;        '(color-theme-install
-;;      (quote
-;;       (color-theme-blue-eshell
-;;        nil
-;;        (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
-;;        (eshell-ls-backup-face ((t (:foreground "Grey")))))))))
-
-(defun color-theme-analyze-add-face (a b regexp faces)
-  "If only one of A or B are in FACES, the other is added, and FACES is returned.
-If REGEXP is given, this is only done if faces contains a match for regexps."
-  (when (or (not regexp)
-           (catch 'found
-             (dolist (face faces)
-               (when (string-match regexp (symbol-name (car face)))
-                 (throw 'found t)))))
-    (let ((face-a (assoc a faces))
-         (face-b (assoc b faces)))
-      (if (and face-a (not face-b))
-         (setq faces (cons (list b (nth 1 face-a))
-                           faces))
-       (if (and (not face-a) face-b)
-           (setq faces (cons (list a (nth 1 face-b))
-                             faces))))))
-  faces)
-
-;; (equal (color-theme-analyze-add-face
-;;     'blue 'violet nil
-;;     '((blue ((t (:foreground "blue"))))
-;;       (bold ((t (:bold t))))))
-;;        '((violet ((t (:foreground "blue"))))
-;;      (blue ((t (:foreground "blue"))))
-;;      (bold ((t (:bold t))))))
-;; (equal (color-theme-analyze-add-face
-;;     'violet 'blue nil
-;;     '((blue ((t (:foreground "blue"))))
-;;       (bold ((t (:bold t))))))
-;;        '((violet ((t (:foreground "blue"))))
-;;      (blue ((t (:foreground "blue"))))
-;;      (bold ((t (:bold t))))))
-;; (equal (color-theme-analyze-add-face
-;;     'violet 'blue "foo"
-;;     '((blue ((t (:foreground "blue"))))
-;;       (bold ((t (:bold t))))))
-;;        '((blue ((t (:foreground "blue"))))
-;;      (bold ((t (:bold t))))))
-;; (equal (color-theme-analyze-add-face
-;;     'violet 'blue "blue"
-;;     '((blue ((t (:foreground "blue"))))
-;;       (bold ((t (:bold t))))))
-;;        '((violet ((t (:foreground "blue"))))
-;;      (blue ((t (:foreground "blue"))))
-;;      (bold ((t (:bold t))))))
-
-(defun color-theme-analyze-add-faces (faces)
-  "Add missing faces to FACES and return it."
-  ;; The most important thing is to add missing faces for the other
-  ;; editor.  These are the most important faces to check.  The
-  ;; following rules list two faces, A and B.  If either of the two is
-  ;; part of the theme, the other must be, too.  The optional third
-  ;; argument specifies a regexp.  Only if an existing face name
-  ;; matches this regexp, is the rule applied.
-  (let ((rules '((font-lock-builtin-face font-lock-reference-face)
-                (font-lock-doc-face font-lock-doc-string-face)
-                (font-lock-constant-face font-lock-preprocessor-face)
-                ;; In Emacs 21 `modeline' is just an alias for
-                ;; `mode-line'.  I recommend the use of
-                ;; `modeline' until further notice.
-                (modeline mode-line)
-                (modeline modeline-buffer-id)
-                (modeline modeline-mousable)
-                (modeline modeline-mousable-minor-mode)
-                (region primary-selection)
-                (region zmacs-region)
-                (font-lock-string-face dired-face-boring "^dired")
-                (font-lock-function-name-face dired-face-directory "^dired")
-                (default dired-face-executable "^dired")
-                (font-lock-warning-face dired-face-flagged "^dired")
-                (font-lock-warning-face dired-face-marked "^dired")
-                (default dired-face-permissions "^dired")
-                (default dired-face-setuid "^dired")
-                (default dired-face-socket "^dired")
-                (font-lock-keyword-face dired-face-symlink "^dired")
-                (tool-bar menu))))
-    (dolist (rule rules)
-      (setq faces (color-theme-analyze-add-face
-                  (nth 0 rule) (nth 1 rule) (nth 2 rule) faces))))
-  ;; The `fringe' face defines what the left and right borders of the
-  ;; frame look like in Emacs 21.  To give them default fore- and
-  ;; background colors, use (fringe ((t (nil)))) in your color theme.
-  ;; Usually it makes more sense to choose a color slightly lighter or
-  ;; darker from the default background.
-  (unless (assoc 'fringe faces)
-    (setq faces (cons '(fringe ((t (nil)))) faces)))
-  ;; The tool-bar should not be part of the frame-parameters, since it
-  ;; should not appear or disappear depending on the color theme.  The
-  ;; apppearance of the toolbar, however, can be changed by the color
-  ;; theme.  For Emacs 21, use the `tool-bar' face.  The easiest way
-  ;; to do this is to give it the default fore- and background colors.
-  ;; This can be achieved using (tool-bar ((t (nil)))) in the theme.
-  ;; Usually it makes more sense, however, to provide the same colors
-  ;; as used in the `menu' face, and to specify a :box attribute.  In
-  ;; order to alleviate potential Emacs/XEmacs incompatibilities,
-  ;; `toolbar' will be defined as an alias for `tool-bar' if it does
-  ;; not exist, and vice-versa.  This is done eventhough the face
-  ;; `toolbar' seems to have no effect on XEmacs.  If you look at
-  ;; XEmacs lisp/faces.el, however, you will find that it is in fact
-  ;; referenced for XPM stuff.
-  (unless (assoc 'tool-bar faces)
-    (setq faces (cons '(tool-bar ((t (nil)))) faces)))
-  ;; Move the default face back to the front, and sort the rest.
-  (unless (eq (caar faces) 'default)
-    (let ((face (assoc 'default faces)))
-      (setq faces (cons face
-                       (sort (delete face faces)
-                             (lambda (a b)
-                               (string-lessp (car a) (car b))))))))
-  faces)
-
-(defun color-theme-analyze-remove-heights (faces)
-  "Remove :height property where it is an integer and return FACES."
-  ;; I don't recommend making font sizes part of a color theme.  Most
-  ;; users would be surprised to see their font sizes change when they
-  ;; install a color-theme.  Therefore, remove all :height attributes
-  ;; if the value is an integer.  If the value is a float, this is ok
-  ;; -- the value is relative to the default height.  One notable
-  ;; exceptions is for a color-theme created for visually impaired
-  ;; people.  These *must* use a larger font in order to be usable.
-  (let (result)
-    (dolist (face faces)
-      (let ((props (cadar (nth 1 face))))
-       (if (and (plist-member props :height)
-                (integerp (plist-get props :height)))
-           (setq props (color-theme-plist-delete props :height)
-                 result (cons (list (car face) `((t ,props)))
-                              result))
-         (setq result (cons face result)))))
-    (nreverse result)))
-
-;; (equal (color-theme-analyze-remove-heights
-;;     '((blue ((t (:foreground "blue" :height 2))))
-;;       (bold ((t (:bold t :height 1.0))))))
-;;        '((blue ((t (:foreground "blue"))))
-;;      (bold ((t (:bold t :height 1.0))))))
-
-;;;###autoload
-(defun color-theme-analyze-defun ()
-  "Once you have a color-theme printed, check for missing faces.
-This is used by maintainers who receive a color-theme submission
-and want to make sure it follows the guidelines by the color-theme
-author."
-  ;; The support for :foreground and :background attributes works for
-  ;; Emacs 20 and 21 as well as for XEmacs.  :inverse-video is taken
-  ;; care of while printing color themes.
-  (interactive)
-  ;; Parse the stuff and find the call to color-theme-install
-  (save-excursion
-    (save-restriction
-      (narrow-to-defun)
-      ;; define the function
-      (eval-defun nil)
-      (goto-char (point-min))
-      (let* ((code (read (current-buffer)))
-            (theme (color-theme-canonic
-                    (eval
-                     (cadr
-                      (color-theme-analyze-find-theme
-                       code)))))
-            (func (color-theme-function theme))
-            (doc (documentation func t))
-            (variables (color-theme-variables theme))
-            (faces (color-theme-faces theme))
-            (params (color-theme-frame-params theme)))
-       (setq faces (color-theme-analyze-remove-heights
-                    (color-theme-analyze-add-faces faces)))
-       ;; Remove any variable bindings of faces that point to their
-       ;; symbol?  Perhaps not, because another theme might want to
-       ;; change this, so it is important to be able to reset them.
-       ;;      (let (result)
-       ;;        (dolist (var variables)
-       ;;          (unless (eq (car var) (cdr var))
-       ;;            (setq result (cons var result))))
-       ;;        (setq variables (nreverse result)))
-       ;; Now modify the theme directly.
-       (setq theme (color-theme-analyze-find-theme code))
-       (setcdr (cadadr theme) (list params variables faces))
-       (message "Pretty printing analysed color theme function...")
-       (with-current-buffer (get-buffer-create "*Color Theme*")
-         (setq buffer-read-only nil)
-         (erase-buffer)
-         ;; insert defun
-         (color-theme-print-theme func doc params variables faces)
-         (emacs-lisp-mode))
-       (message "Pretty printing analysed color theme function... done")
-       (ediff-buffers (current-buffer)
-                      (get-buffer "*Color Theme*"))))))
-
-;;; Creating a snapshot of the current color theme
-
-(defun color-theme-snapshot nil)
-
-;;;###autoload
-(defun color-theme-make-snapshot ()
-  "Return the definition of the current color-theme.
-The function returned will recreate the color-theme in use at the moment."
-  (eval `(lambda ()
-          "The color theme in use when the selection buffer was created.
-\\[color-theme-select] creates the color theme selection buffer.  At the
-same time, this snapshot is created as a very simple undo mechanism.
-The snapshot is created via `color-theme-snapshot'."
-          (interactive)
-          (color-theme-install
-           '(color-theme-snapshot
-             ;; alist of frame parameters
-             ,(color-theme-get-params)
-             ;; alist of variables
-             ,(color-theme-get-vars)
-             ;; remaining elements of snapshot: face specs
-             ,@(color-theme-get-face-definitions))))))
-
-\f
-
-;;; Handling the various parts of a color theme install
-
-(defvar color-theme-frame-param-frobbing-rules
-  '((foreground-color default foreground)
-    (background-color default background))
-  "List of rules to use when frobbing faces based on frame parameters.
-This is only necessary for XEmacs, because in Emacs 21 changing the
-frame paramters automatically affects the relevant faces.")
-
-;; fixme: silent the bytecompiler with set-face-property
-(defun color-theme-frob-faces (params)
-  "Change certain faces according to PARAMS.
-This uses `color-theme-frame-param-frobbing-rules'."
-  (dolist (rule color-theme-frame-param-frobbing-rules)
-    (let* ((param (nth 0 rule))
-          (face (nth 1 rule))
-          (prop (nth 2 rule))
-          (val (cdr (assq param params)))
-          (frame (if color-theme-is-global nil (selected-frame))))
-      (when val
-       (set-face-property face prop val frame)))))
-
-(defun color-theme-alist-reduce (old-list)
-  "Reduce OLD-LIST.
-The resulting list will be newly allocated and will not contain any elements
-with duplicate cars.  This will speed the installation of new themes by
-only installing unique attributes."
-  (let (new-list)
-    (dolist (elem old-list)
-      (when (not (assq (car elem) new-list))
-       (setq new-list (cons elem new-list))))
-    new-list))
-
-(defun color-theme-install-frame-params (params)
-  "Change frame parameters using alist PARAMETERS.
-
-If `color-theme-is-global' is non-nil, all frames are modified using
-`modify-frame-parameters' and the PARAMETERS are prepended to
-`default-frame-alist'.  The value of `initial-frame-alist' is not
-modified.  If `color-theme-is-global' is nil, only the selected frame is
-modified.  If `color-theme-is-cumulative' is nil, the frame parameters
-are restored from `color-theme-original-frame-alist'.
-
-If the current frame parameters have a parameter `minibuffer' with
-value `only', then the frame parameters are not installed, since this
-indicates a dedicated minibuffer frame.
-
-Called from `color-theme-install'."
-  (setq params (color-theme-filter
-               params color-theme-legal-frame-parameters))
-  ;; We have a new list in params now, therefore we may use
-  ;; destructive nconc.
-  (if color-theme-is-global
-      (let ((frames (frame-list)))
-       (if (or color-theme-is-cumulative
-               (null color-theme-original-frame-alist))
-           (setq default-frame-alist
-                 (append params (color-theme-alist default-frame-alist))
-                 minibuffer-frame-alist
-                 (append params (color-theme-alist minibuffer-frame-alist)))
-         (setq default-frame-alist
-               (append params color-theme-original-frame-alist)
-               minibuffer-frame-alist
-               (append params (color-theme-alist minibuffer-frame-alist))))
-       (setq default-frame-alist
-             (color-theme-alist-reduce default-frame-alist)
-             minibuffer-frame-alist
-             (color-theme-alist-reduce minibuffer-frame-alist))
-       (dolist (frame frames)
-         (let ((params (if (eq 'only (cdr (assq 'minibuffer (frame-parameters frame))))
-                           minibuffer-frame-alist
-                         default-frame-alist)))
-           (condition-case var
-               (modify-frame-parameters frame params)
-             (error (message "Error using params %S: %S" params var))))))
-    (condition-case var
-       (modify-frame-parameters (selected-frame) params)
-      (error (message "Error using params %S: %S" params var))))
-  (when color-theme-xemacs-p
-    (color-theme-frob-faces params)))
-
-;; (setq default-frame-alist (cons '(height . 30) default-frame-alist))
-
-(defun color-theme-install-variables (vars)
-  "Change variables using alist VARS.
-All variables matching `color-theme-legal-variables' are set.
-
-If `color-theme-is-global' and `color-theme-xemacs-p' are nil, variables
-are made frame-local before setting them.  Variables are set using `set'
-in either case.  This may lead to problems if changing the variable
-requires the usage of the function specified with the :set tag in
-defcustom declarations.
-
-Called from `color-theme-install'."
-  (let ((vars (color-theme-filter vars color-theme-legal-variables)))
-    (dolist (var vars)
-      (if (or color-theme-is-global color-theme-xemacs-p)
-         (set (car var) (cdr var))
-       (make-variable-frame-local (car var))
-       (modify-frame-parameters (selected-frame) (list var))))))
-
-(defun color-theme-install-faces (faces)
-  "Change faces using FACES.
-
-Change faces for all frames and create any faces listed in FACES which
-don't exist.  The modified faces will be marked as \"unchanged from
-its standard setting\".  This is OK, since the changes made by
-installing a color theme should never by saved in .emacs by
-customization code.
-
-FACES should be a list where each entry has the form:
-
-  (FACE SPEC)
-
-See `defface' for the format of SPEC.
-
-If `color-theme-is-global' is non-nil, faces are modified on all frames
-using `face-spec-set'.  If `color-theme-is-global' is nil, faces are
-only modified on the selected frame.  Non-existing faces are created
-using `make-empty-face' in either case.  If `color-theme-is-cumulative'
-is nil, all faces are reset before installing the new faces.
-
-Called from `color-theme-install'."
-  ;; clear all previous faces
-  (when (not color-theme-is-cumulative)
-    (color-theme-reset-faces))
-  ;; install new faces
-  (let ((faces (color-theme-filter faces color-theme-illegal-faces t))
-       (frame (if color-theme-is-global nil (selected-frame))))
-    (dolist (entry faces)
-      (let ((face (nth 0 entry))
-           (spec (nth 1 entry)))
-       (or (facep face)
-           (make-empty-face face))
-       ;; remove weird properties from the default face only
-       (when (eq face 'default)
-         (setq spec (color-theme-spec-filter spec)))
-       ;; Emacs/XEmacs customization issues: filter out :bold when
-       ;; the spec contains :weight, etc, such that the spec remains
-       ;; "valid" for custom.
-       (setq spec (color-theme-spec-compat spec))
-       ;; using a spec of ((t (nil))) to reset a face doesn't work
-       ;; in Emacs 21, we use the new function face-spec-reset-face
-       ;; instead
-       (if (and (functionp 'face-spec-reset-face)
-                (equal spec '((t (nil)))))
-           (face-spec-reset-face face frame)
-         (condition-case var
-             (progn
-               (face-spec-set face spec frame)
-               (if color-theme-is-global
-                   (put face 'face-defface-spec spec)))
-           (error (message "Error using spec %S: %S" spec var))))))))
-
-;; `custom-set-faces' is unusable here because it doesn't allow to set
-;; the faces for one frame only.
-
-;; Emacs `face-spec-set': If FRAME is nil, the face is created and
-;; marked as a customized face.  This is achieved by setting the
-;; `face-defface-spec' property.  If we don't, new frames will not be
-;; created using the face we installed because `face-spec-set' is
-;; broken: If given a FRAME of nil, it will not set the default faces;
-;; instead it will walk through all the frames and set modify the faces.
-;; If we do set a property (`saved-face' or `face-defface-spec'),
-;; `make-frame' will correctly use the faces we defined with our color
-;; theme.  If we used the property `saved-face',
-;; `customize-save-customized' will save all the faces installed as part
-;; of a color-theme in .emacs.  That's why we use the
-;; `face-defface-spec' property.
-
-\f
-
-;;; Theme accessor functions, canonicalization, merging, comparing
-
-(defun color-theme-canonic (theme)
-  "Return the canonic form of THEME.
-This deals with all the backwards compatibility stuff."
-  (let (function frame-params variables faces)
-    (when (functionp (car theme))
-      (setq function (car theme)
-           theme (cdr theme)))
-    (setq frame-params (car theme)
-         theme (cdr theme))
-    ;; optional variable defintions (for backwards compatibility)
-    (when (listp (caar theme))
-      (setq variables (car theme)
-           theme (cdr theme)))
-    ;; face definitions
-    (setq faces theme)
-    (list function frame-params variables faces)))
-
-(defun color-theme-function (theme)
-  "Return function used to create THEME."
-  (nth 0 theme))
-
-(defun color-theme-frame-params (theme)
-  "Return frame-parameters defined by THEME."
-  (nth 1 theme))
-
-(defun color-theme-variables (theme)
-  "Return variables set by THEME."
-  (nth 2 theme))
-
-(defun color-theme-faces (theme)
-  "Return faces defined by THEME."
-  (nth 3 theme))
-
-(defun color-theme-merge-alists (&rest alists)
-  "Merges all the alist arguments into one alist.
-Only the first instance of every key will be part of the resulting
-alist.  Membership will be tested using `assq'."
-  (let (result)
-    (dolist (l alists)
-      (dolist (entry l)
-       (unless (assq (car entry) result)
-         (setq result (cons entry result)))))
-    (nreverse result)))
-;; (color-theme-merge-alists '((a . 1) (b . 2)))
-;; (color-theme-merge-alists '((a . 1) (b . 2) (a . 3)))
-;; (color-theme-merge-alists '((a . 1) (b . 2)) '((a . 3)))
-;; (color-theme-merge-alists '((a . 1) (b . 2)) '((c . 3)))
-;; (color-theme-merge-alists '((a . 1) (b . 2)) '((c . 3) (d . 4)))
-;; (color-theme-merge-alists '((a . 1) (b . 2)) '((c . 3) (d . 4) (b . 5)))
-
-;;;###autoload
-(defun color-theme-compare (theme-a theme-b)
-  "Compare two color themes.
-This will print the differences between installing THEME-A and
-installing THEME-B.  Note that the order is important: If a face is
-defined in THEME-A and not in THEME-B, then this will not show up as a
-difference, because there is no reset before installing THEME-B.  If a
-face is defined in THEME-B and not in THEME-A, then this will show up as
-a difference."
-  (interactive
-   (list
-    (intern
-     (completing-read "Theme A: "
-                     (mapcar (lambda (i) (list (symbol-name (car i))))
-                             color-themes)
-                     (lambda (i) (string-match "color-theme" (car i)))))
-    (intern
-     (completing-read "Theme B: "
-                     (mapcar (lambda (i) (list (symbol-name (car i))))
-                             color-themes)
-                     (lambda (i) (string-match "color-theme" (car i)))))))
-  ;; install the themes in a new frame and get the definitions
-  (let ((color-theme-is-global nil))
-    (select-frame (make-frame))
-    (funcall theme-a)
-    (setq theme-a (list theme-a
-                       (color-theme-get-params)
-                       (color-theme-get-vars)
-                       (color-theme-get-face-definitions)))
-    (funcall theme-b)
-    (setq theme-b (list theme-b
-                       (color-theme-get-params)
-                       (color-theme-get-vars)
-                       (color-theme-get-face-definitions)))
-    (delete-frame))
-  (let ((params (set-difference
-                (color-theme-frame-params theme-b)
-                (color-theme-frame-params theme-a)
-                :test 'equal))
-       (vars (set-difference
-              (color-theme-variables theme-b)
-              (color-theme-variables theme-a)
-              :test 'equal))
-       (faces (set-difference
-               (color-theme-faces theme-b)
-               (color-theme-faces theme-a)
-               :test 'equal)))
-    (list 'diff
-         params
-         vars
-         faces)))
-
-\f
-
-;;; Installing a color theme
-;;;###autoload
-(defun color-theme-install (theme)
-  "Install a color theme defined by frame parameters, variables and faces.
-
-The theme is installed for all present and future frames; any missing
-faces are created.  See `color-theme-install-faces'.
-
-THEME is a color theme definition.  See below for more information.
-
-If you want to install a color theme from your .emacs, use the output
-generated by `color-theme-print'.  This produces color theme function
-which you can copy to your .emacs.
-
-A color theme definition is a list:
-\([FUNCTION] FRAME-PARAMETERS VARIABLE-SETTINGS FACE-DEFINITIONS)
-
-FUNCTION is the color theme function which called `color-theme-install'.
-This is no longer used.  There was a time when this package supported
-automatic factoring of color themes.  This has been abandoned.
-
-FRAME-PARAMETERS is an alist of frame parameters.  These are installed
-with `color-theme-install-frame-params'.  These are installed last such
-that any changes to the default face can be changed by the frame
-parameters.
-
-VARIABLE-DEFINITIONS is an alist of variable settings.  These are
-installed with `color-theme-install-variables'.
-
-FACE-DEFINITIONS is an alist of face definitions.  These are installed
-with `color-theme-install-faces'.
-
-If `color-theme-is-cumulative' is nil, a color theme will undo face and
-frame-parameter settings of previous color themes."
-  (setq theme (color-theme-canonic theme))
-  (color-theme-install-variables (color-theme-variables theme))
-  (color-theme-install-faces (color-theme-faces theme))
-  ;; frame parameters override faces
-  (color-theme-install-frame-params (color-theme-frame-params theme))
-  (when color-theme-history-max-length
-    (color-theme-add-to-history
-     (car theme))))
-
-\f
-
-;; Sharing your stuff
-;;;###autoload
-(defun color-theme-submit ()
-  "Submit your color-theme to the maintainer."
-  (interactive)
-  (require 'reporter)
-  (let ((reporter-eval-buffer (current-buffer))
-       final-resting-place
-       after-sep-pos
-       (reporter-status-message "Formatting buffer...")
-       (reporter-status-count 0)
-       (problem "Yet another color-theme")
-       (agent (reporter-compose-outgoing))
-       (mailbuf (current-buffer))
-       hookvar)
-    ;; do the work
-    (require 'sendmail)
-    ;; If mailbuf did not get made visible before, make it visible now.
-    (let (same-window-buffer-names same-window-regexps)
-      (pop-to-buffer mailbuf)
-      ;; Just in case the original buffer is not visible now, bring it
-      ;; back somewhere
-      (and pop-up-windows (display-buffer reporter-eval-buffer)))
-    (goto-char (point-min))
-    (mail-position-on-field "to")
-    (insert color-theme-maintainer-address)
-    (mail-position-on-field "subject")
-    (insert problem)
-    ;; move point to the body of the message
-    (mail-text)
-    (setq after-sep-pos (point))
-    (unwind-protect
-       (progn
-         (setq final-resting-place (point-marker))
-         (goto-char final-resting-place))
-      (color-theme-print (current-buffer))
-      (goto-char final-resting-place)
-      (insert "\n\n")
-      (goto-char final-resting-place)
-      (insert "Hello there!\n\nHere's my color theme named: ")
-      (set-marker final-resting-place nil))
-    ;; compose the minibuf message and display this.
-    (let* ((sendkey-whereis (where-is-internal
-                            (get agent 'sendfunc) nil t))
-          (abortkey-whereis (where-is-internal
-                             (get agent 'abortfunc) nil t))
-          (sendkey (if sendkey-whereis
-                       (key-description sendkey-whereis)
-                     "C-c C-c")); TBD: BOGUS hardcode
-          (abortkey (if abortkey-whereis
-                        (key-description abortkey-whereis)
-                      "M-x kill-buffer"))); TBD: BOGUS hardcode
-      (message "Enter a message and type %s to send or %s to abort."
-              sendkey abortkey))))
-
-\f
-
-;; Use this to define themes
-(defmacro define-color-theme (name author description &rest forms)
-  (let ((n name))
-    `(progn 
-       (add-to-list 'color-themes
-                    (list ',n
-                          (upcase-initials
-                           (color-theme-replace-in-string
-                            (color-theme-replace-in-string 
-                             (symbol-name ',n) "^color-theme-" "") "-" " "))
-                          ,author))
-       (defun ,n ()
-        ,description
-        (interactive)
-         ,@forms))))
-
-
-;;; FIXME: is this useful ??
-;;;###autoload
-(defun color-theme-initialize ()
-  "Initialize the color theme package by loading color-theme-libraries."
-  (interactive)
-
-  (cond ((and (not color-theme-load-all-themes)
-              color-theme-directory)
-         (setq color-theme-libraries 
-               (directory-files color-theme-directory t "^color-theme")))
-        (color-theme-directory
-         (push (cdr (directory-files color-theme-directory t "^color-theme")) 
-               color-theme-libraries)))
-  (dolist (library color-theme-libraries)
-    (load library)))
-
-(when nil
-  (setq color-theme-directory "themes/"
-        color-theme-load-all-themes nil)
-  (color-theme-initialize)
-)
-;; TODO: I don't like all those function names cluttering up my namespace.
-;; Instead, a hashtable for the color-themes should be created. Now that 
-;; define-color-theme is around, it should be easy to change in just the
-;; one place. 
-
-
-(provide 'color-theme)
-
-;;; color-theme.el ends here
diff --git a/.emacs.d/elisp/local/crontab-mode.el b/.emacs.d/elisp/local/crontab-mode.el
deleted file mode 100644 (file)
index 6ba6b93..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-;;; crontab-mode.el --- Mode for editing crontab files
-;; Version: 20090510.2255
-;;
-;; ~/share/emacs/pkg/crontab/crontab-mode.el ---
-;;
-;; $Id: crontab-mode.el,v 1.20 2005/10/04 03:58:52 harley Exp $
-;;
-
-;; Author:    Harley Gorrell <harley@mahalito.net>
-;; URL:       http://www.mahalito.net/~harley/elisp/crontab-mode.el
-;; License:   GPL v2
-;; Keywords: cron, crontab, emacs
-
-;;; Commentary:
-;; * I want to keep my crontabs under rcs to keep a history of
-;;   the file.  Editing them with 'crontab -e' is rather
-;;   cumbersome.  My method is to keep the crontab as a file,
-;;   under rcs, and check in the changes with 'C-c C-c' after
-;;   editing.
-;; 
-;; * The remote systems are expected to share a filesystem.
-;;   If they dont, modify crontab-shell or crontab-apply to
-;;   suit your needs.
-;;
-;; * You may want to add one of these to your startup:
-;;   (add-to-list 'auto-mode-alist '("\\.cron\\(tab\\)?\\'" . crontab-mode))
-;;   (add-to-list 'auto-mode-alist '("cron\\(tab\\)?\\."    . crontab-mode))
-
-;;; History:
-;;  2003-03-16: Updated URL and contact info
-;;  2004-02-26: Use ssh to apply crontabs to remote hosts.
-
-;;; Code:
-
-(defvar crontab-suffix ".crontab"
-  "*Suffix for crontab buffers.")
-
-(defvar crontab-apply-after-save nil
-  "*Non-nil to apply the crontab after a save.")
-(make-variable-buffer-local 'crontab-apply-after-save)
-
-(defvar crontab-host nil
-  "*Hostname to use when saving the crontab to a remote host.")
-(make-variable-buffer-local 'crontab-host)
-
-(defvar crontab-user nil
-  "*Username to use when saving the crontab to a remote host.")
-(make-variable-buffer-local 'crontab-user)
-
-;; Would be better to have "\\([0-9]\\([-,][0-9]+\\)+\\|...
-(defvar crontab-unit-regexp "\\(\\(?:[-,0-9]+\\|\\*\\)\\(?:/[0-9]+\\)?\\)"
-  "A regexp which matches a cron time unit.")
-
-(defvar crontab-sep-regexp "[ \t]+"
-  "A regexp to match whitespace seperating cron time units.")
-
-(defvar crontab-ruler "
-# min   hour    day     month   day-of-week command
-#(0-59) (0-23)  (1-31)  (1-12)  (0-6)
-#------------------------------------------------------------
-"
-  "*The ruler `crontab-insert-ruler' inserts.")
-
-;;
-(defvar crontab-mode-hook nil
-  "*Hook for customising `crontab-mode'.")
-
-(defvar crontab-load-hook nil
-  "*Hook run when the `crontab-mode' is loaded.")
-
-;;
-(defvar crontab-font-lock-keywords
-  (list
-   ;; Comments
-   '("^#.*$" . font-lock-comment-face)
-   ;; Blank lines are bad!
-   '("^[ \t]+$" . highlight)
-   ;; Variable defs
-   '("^\\([A-Z_]+\\)=\\(.*\\)$" .
-     ((1 font-lock-keyword-face)
-      (2 font-lock-string-face)) )
-   ;; Cron lines
-   ;; 50 * * * * /usr/gnu/bin/bash
-   (cons
-    (concat "^"
-           crontab-unit-regexp crontab-sep-regexp
-           crontab-unit-regexp crontab-sep-regexp
-           crontab-unit-regexp crontab-sep-regexp
-           crontab-unit-regexp crontab-sep-regexp
-           crontab-unit-regexp crontab-sep-regexp
-           "\\(.*\\)$")
-    '((1 font-lock-keyword-face)
-      (2 font-lock-keyword-face)
-      (3 font-lock-keyword-face)
-      (4 font-lock-keyword-face)
-      (5 font-lock-keyword-face)
-      (6 font-lock-string-face))) )
-  "Info for function `font-lock-mode'.")
-
-(defvar crontab-mode-map nil
-  "Keymap used in `crontab-mode'.")
-
-(if crontab-mode-map
-  ()
-  (setq crontab-mode-map (make-sparse-keymap))
-  (define-key crontab-mode-map "\C-c\C-c" 'crontab-save-and-apply)
-  (define-key crontab-mode-map "\C-cc" 'crontab-save-and-apply)
-  (define-key crontab-mode-map "\C-ca" 'crontab-save-and-apply-to)
-  (define-key crontab-mode-map "\C-ci" 'crontab-insert-local-var)
-  (define-key crontab-mode-map "\C-cr" 'crontab-insert-ruler))
-
-;; This will barf without the correct agent or key setup.
-(defvar crontab-rsh-cmd "ssh" ;; "rsh"
-  "Program to use for remote shells.")
-
-(defun crontab-rsh-cmd ()
-  "Generate the rsh command.  Redefine as needed."
-  (if crontab-user
-    (concat crontab-rsh-cmd " -l " (format "%s" crontab-user)) ;; str-ify
-    crontab-rsh-cmd) )
-
-(defun crontab-localhost-p (&optional host)
-  "True if this is the same HOST Emacs is on."
-  (or (null host)
-      (string= host "")
-      (string= host "localhost")
-      (string= host (system-name))) )
-
-(defun crontab-shell (host cmd out-buffer)
-  "On a possibly remote HOST, run CMD  Output to OUT-BUFFER."
-  (when (not (crontab-localhost-p host))
-    (setq cmd (concat (crontab-rsh-cmd) " " host " " cmd)))
-  (shell-command cmd out-buffer) )
-
-;;;###autoload
-(defun crontab-mode ()
-  "Major mode for editing crontabs.
-Defines commands for getting and applying crontabs for hosts.
-Sets up command `font-lock-mode'.
-
-\\{crontab-mode-map}"
-  (interactive)
-  ;;
-  (kill-all-local-variables)
-  (setq mode-name "crontab")
-  (setq major-mode 'crontab-mode)
-  (use-local-map crontab-mode-map)
-  ;;
-  (setq comment-start "#")
-  (setq comment-start-skip "#+ *")
-  ;;
-  (make-local-variable 'font-lock-defaults)
-  (setq font-lock-defaults '(crontab-font-lock-keywords))
-  ;; Add to the end of the buffers save hooks.
-  (add-hook 'after-save-hook 'crontab-after-save t t)
-  ;;
-  (run-hooks 'crontab-mode-hook) )
-
-
-;;;###autoload
-(defun crontab-get (host)
-  "Get the crontab for the HOST into a buffer."
-  (interactive "sCrontab for host:")
-  (let ((cbn (generate-new-buffer-name (concat host crontab-suffix))))
-    (switch-to-buffer-other-window cbn)
-    (erase-buffer)
-    (crontab-mode)
-    (crontab-insert host)
-    (not-modified)
-    (setq crontab-host host)) )
-
-(defun crontab-insert (&optional host)
-  "Insert the crontab for the HOST into the current buffer."
-  (crontab-shell host "crontab -l" t) )
-
-(defun crontab-apply (&optional host)
-  "Apply the crontab to a HOST.  The filesystem must be common."
-  (if (buffer-file-name)
-    (crontab-shell host (concat "crontab " (buffer-file-name)) nil)
-    (error "No filename  for this buffer")))
-
-(defun crontab-save-and-apply ()
-  "Save and apply the buffer to the HOST."
-  (interactive)
-  (save-buffer)
-  (if (not crontab-apply-after-save) ;; Dont apply it twice.
-    (crontab-apply (crontab-host))) )
-
-(defun crontab-save-and-apply-to (host)
-  "Prompt for the HOST and apply the file."
-  (interactive "sApply to host:")
-  (setq crontab-host host) ;; remember the change
-  (crontab-save-and-apply) )
-
-(defun crontab-insert-ruler ()
-  "Insert a ruler with comments into the crontab."
-  (interactive)
-  (end-of-line)
-  (insert crontab-ruler) )
-
-(defun crontab-insert-local-var ()
-  "Insert the current values of buffer local variables."
-  (interactive)
-  (goto-char (point-max))
-  (insert "
-" comment-start " Local " "Variables:
-" comment-start " mode: " (format "%s" (or mode-name "crontab")) "
-" comment-start " crontab-host: " (crontab-host) "
-" comment-start " crontab-apply-after-save: "
-(format "%s" crontab-apply-after-save) "
-" comment-start " End:
-") )
-
-(defun crontab-host ()
-  "Return the hostname as a string, defaulting to the local host.
-The variable `crontab-host' could be a symbol or a string."
-  (format "%s" (or crontab-host system-name)) )
-
-;;
-(defun crontab-after-save ()
-  "If `crontab-apply-after-save' is set, apply the crontab after a save."
-  (if crontab-apply-after-save (crontab-apply (crontab-host))) )
-
-(provide 'crontab-mode)
-(run-hooks 'crontab-load-hook)
-
-;;; crontab-mode.el ends here
diff --git a/.emacs.d/elisp/local/crypt++.el b/.emacs.d/elisp/local/crypt++.el
deleted file mode 100644 (file)
index eb4a3f1..0000000
+++ /dev/null
@@ -1,2933 +0,0 @@
-;;; crypt++.el -- handle all sorts of compressed and encrypted files
-;;; (may also be installed as crypt.el)
-
-;; Authors: Lawrence R. Dodd <dodd@roebling.poly.edu>
-;;     Rod Whitby <rwhitby@research.canon.oz.au>
-;;     Kyle E. Jones <kyle@uunet.uu.net>
-;; Maintainer: <karl@gnu.org>
-;; Created: crypt.el in 1988, crypt++.el on 18 Jan 1993.
-;; Version: 2.92
-;; Keywords: extensions
-;; $Id: crypt++.el,v 1.31 2003/01/17 18:52:17 karl Exp $
-
-;;; Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
-;;; Copyright (C) 1994 Lawrence R. Dodd
-;;; Copyright (C) 1993 Lawrence R. Dodd and Rod Whitby
-;;; Copyright (C) 1988, 1989, 1990 Kyle E. Jones
-;;;
-;;; 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;;; Please see notes on INSTALLATION and USAGE on the pages below.
-
-;;; LCD Archive Entry:
-;;; crypt++|Rod Whitby and Lawrence R. Dodd|karl@gnu.org|
-;;; Handle compressed and encrypted files.|
-;;; 2003-01-17|2.92|~/misc/crypt++.el.Z|
-
-;;; AVAILABLE:
-;;; http://www.cs.umb.edu/~karl/crypt++/
-;;; news:gnu.emacs.sources
-
-;;; BUG REPORTS:
-;;; Type M-x crypt-submit-report to generate a bug report template or put your
-;;; cursor at the end of this line and type C-x C-e: (crypt-submit-report)
-;;;
-;;; Please note that this bug-report facility (crypt-submit-report) uses
-;;; Barry Warsaw's reporter.el which is part of GNU Emacs v19 and
-;;; bundled with many other packages.  If needed, you can obtain a copy
-;;; of reporter.el at the elisp-archive.  In fact, crypt-submit-report
-;;; will attempt to ange-ftp a copy for you if you do not
-;;; have one accessible.
-;;;
-;;; Main author:
-;;; Lawrence R. Dodd
-;;; Polytechnic University
-;;; Brooklyn, New York USA
-
-\f
-;;; INSTALLATION:
-;;;
-;;; To use this package, simply put it in a file called "crypt++.el" in a Lisp
-;;; directory known to Emacs (see `load-path'), byte-compile it (ignore
-;;; warnings about undefined functions), and put the line:
-;;;
-;;;    (require 'crypt++)
-;;;
-;;; in your ~/.emacs file or in the file default.el in the ../lisp directory
-;;; of the Emacs distribution.
-;;; 
-;;; For reliable operation with Emacs versions with coding system
-;;; support, you also need:
-;;; 
-;;;    (modify-coding-system-alist 'file "\\.bz\\'" 'no-conversion)
-;;;    (modify-coding-system-alist 'file "\\.bz2\\'" 'no-conversion)
-;;;    (modify-coding-system-alist 'file "\\.gpg\\'" 'no-conversion)
-;;;    (modify-coding-system-alist 'file "\\.gz\\'" 'no-conversion)
-;;;    (modify-coding-system-alist 'file "\\.Z\\'" 'no-conversion)
-;;; 
-;;; With XEmacs, you need 'no-conversion-unix instead of 'no-conversion.
-;;; (Thanks to Jose M. Vidal <vidal@sc.edu>.)
-;;; 
-;;; Otherwise, Emacs tampers with the bytes before crypt++ gets them.
-;;; The above won't help for files without those extensions.  You just
-;;; have to specify the no-conversion coding system manually when
-;;; visiting those files, or set no-conversion for all files if that suits you.
-;;; 
-;;; Do not bother trying to autoload this package; it uses find-file and
-;;; write-file hooks and thus should be loaded the first time you visit
-;;; any sort of file.  Any package loaded after this one that appends
-;;; something to `write-file-hooks' will not be executed because this
-;;; package writes out the file.  Other packages that append to
-;;; `write-file-hooks' should either be modified to prepend to that hook
-;;; or be loaded before this one (preferably the former).
-;;;
-;;; An alternative is to stick (require 'crypt) in your ~/.emacs, if it is not
-;;; already there, and then make a symbolic link from crypt++.el to crypt.el
-;;; with "ln -s crypt++.el crypt.el".  This will make crypt++ act like a
-;;; drop-in replacement for the original crypt since any package requiring
-;;; crypt will find crypt++ instead.
-
-;;; NOTE: encryption users should set `crypt-encryption-type' to one of the
-;;; values in `crypt-encryption-alist' (see USAGE below).
-
-;;; SPECIAL NOTES:
-;;;
-;;; If crypt++ is dumped with the emacs executable, or if it has already been
-;;; loaded in an emacs session, then modifying the variables used in building
-;;; the encryption and encoding tables will have no effect until these tables
-;;; are rebuilt.  This may be done with `M-x crypt-rebuild-tables'.  See USAGE
-;;; below to determine variables for which this is needed.  For example,
-;;; post-load changes to `crypt-encryption-file-extension' or
-;;; `crypt-freeze-vs-fortran' can be incorporated into the encryption table
-;;; via `M-x crypt-rebuild-tables'.  Similarly, post-load changes to
-;;; `crypt-bind-insert-file' are handled with `M-x crypt-bind-insert-file'.
-
-;;; DUMPING CRYPT++ WITH GNU EMACS 18:
-;;;
-;;; If crypt++ has been dumped with emacs then calls to `crypt-rebuild-tables'
-;;; and `crypt-bind-insert-file' will be needed in the user's ~/.emacs or
-;;; ../lisp/default.el file in order to assure the changes take effect.  For
-;;; example,
-;;;
-;;;           ;; Set my own preferences...
-;;;           (setq crypt-encryption-type 'des
-;;;                 crypt-encryption-file-extension "\\(\\.e\\)$"
-;;;                 crypt-bind-insert-file nil
-;;;                 crypt-freeze-vs-fortran nil)
-;;;
-;;;           ;; Has crypt++ been loaded already?
-;;;           (if (featurep 'crypt++)
-;;;
-;;;               ;; Yes.  Just rebuild the encryption and encoding tables
-;;;               ;; and key binding.
-;;;               (progn
-;;;                 (crypt-rebuild-tables)
-;;;                 (crypt-bind-insert-file))
-;;;
-;;;             ;; No.  Load the whole thing.
-;;;             (require 'crypt++))
-;;;
-;;; This guarantees that the users preferences will be incorporated into
-;;; crypt++ without having to reload all of crypt++.el to do it.
-;;;
-;;; In GNU Emacs 19 and Lucid Emacs 19.8 the execution of
-;;; `crypt-rebuild-tables' and `crypt-bind-insert-file' is done automatically
-;;; through `after-init-hook'.  So, for the above example, all that is needed
-;;; is
-;;;
-;;;           ;; Set my own preferences...
-;;;           (setq crypt-encryption-type 'des
-;;;                 crypt-encryption-file-extension "\\(\\.e\\)$"
-;;;                 crypt-bind-insert-file nil
-;;;                 crypt-freeze-vs-fortran nil)
-;;;
-;;;           (require 'crypt++)
-;;;
-;;; There is an `after-init-hook' in Lucid Emacs v 19.8 but in early versions
-;;; of Lucid Emacs it will use `term-setup-hook' instead.
-
-\f
-;;; USAGE:
-;;;
-;;; By default, intended to be transparent.  User-defined variables
-;;;
-;;;     controlling ENCRYPTION are:
-;;;        crypt-encryption-type
-;;;        crypt-encryption-file-extension
-;;;        crypt-never-ever-decrypt
-;;;        crypt-auto-write-buffer-encrypted
-;;;        crypt-confirm-password
-;;;        crypt-encrypted-disable-auto-save
-;;;        crypt-encryption-alist
-;;;        crypt-pgp-pub-multirecipients
-;;;
-;;;     controlling ENCODING are:
-;;;        crypt-auto-decode-buffer
-;;;        crypt-auto-write-buffer
-;;;        crypt-query-if-interactive
-;;;        crypt-no-extension-implies-plain
-;;;        crypt-freeze-vs-fortran
-;;;        crypt-compact-vs-C++
-;;;        crypt-ignored-filenames
-;;;        crypt-default-encoding
-;;;        crypt-encoded-disable-auto-save
-;;;        crypt-encoding-alist
-;;;
-;;;     controlling file insertion are:
-;;;        crypt-bind-insert-file
-;;;        crypt-auto-decode-insert
-;;;
-;;; To find out more about these variables, load this file, put your cursor at
-;;; the end of any of the variable names, and hit C-h v [RET].
-;;;
-;;; NOTE: encryption users should set `crypt-encryption-type' to one of the
-;;; values in `crypt-encryption-alist'.
-;;;
-;;; Although rarely needed, the following may be called interactively:
-;;;        (crypt-encoded-mode)
-;;;        (crypt-encode-region)
-;;;        (crypt-encrypted-mode)
-;;;        (crypt-encrypt-region)
-;;;        (crypt-set-encryption-key)
-;;;        (crypt-rebuild-tables)
-;;;        (crypt-insert-file)
-;;;        (crypt-bind-insert-file)
-;;;        (crypt-submit-report)
-;;;        (crypt-pgp-pub-clear-recipients)
-;;;
-;;; To find out more about these functions, load this file, put your cursor
-;;; inside any of the `()' of the above lines, and hit C-h f [RET].
-;;; 
-;;; You may wish to use mailcrypt in conjunction with crypt++.
-;;; http://mailcrypt.sourceforge.net/
-
-\f
-;;; NOTES ON INTERFACES WITH OTHER PROGRAMS AND PACKAGES:
-;;;
-;;; GZIP: the environment variable GZIP of gzip can cause an error if it
-;;; contains `--verbose' because standard output messages will be appended to
-;;; gzip'ed files.  This corrupts the files.  The cleanest solution is to pass
-;;; the `--quiet' switch in `crypt-encoding-alist' to override this.  Use gzip
-;;; version 1.0.4 or higher from ftp://ftp.gnu.org/pub/gnu/gzip-*.tar.gz.
-;;;
-;;; TAR-MODE: works properly with version 1.28 (or higher) with v19 emacs.
-;;;
-;;; RMAIL and CHANGING MAJOR MODE (for v18 ONLY): in v18 emacs
-;;; crypt++.el's buffer local variables are smashed whenever the major
-;;; mode is changed of a buffer or whenever RMAIL is run on an encrypted
-;;; and/or compressed file.  This screws things up.  No smashing occurs
-;;; with v19 Emacs.  for v18 emacs Joe Wells' "kill-fix.el" is needed to
-;;; prevent this.  Get a copy of kill-fix.el from
-;;; archive.cis.ohio-state.edu, store it where emacs can find it, stick
-;;; a "(require 'kill-fix)" anywhere in your ~/.emacs, and the problem
-;;; will be fixed.
-;;;
-;;; LISPDIR: if you save this file as crypt++.el then the "(require 'crypt)"
-;;; in lispdir.el needs to be replaced with "(require 'crypt++)"
-;;; or the symbolic link suggested above can be used.
-
-\f
-;;; DESCRIPTION:
-;;;
-;;; The basic purpose of this package of Lisp functions is to recognize
-;;; automatically encrypted and encoded (i.e., compressed) files when they are
-;;; first visited or written.  The BUFFER corresponding to the file is decoded
-;;; and/or decrypted before it is presented to the user.  The file itself is
-;;; unchanged on the disk.  When the buffer is subsequently saved to disk, a
-;;; hook function re-encodes the buffer before the actual disk write takes
-;;; place.
-;;;
-;;; This package recognizes all sorts of compressed files by a magic number at
-;;; the beginning of these files but uses a heuristic to detect encrypted
-;;; files.  If you are asked for an encryption key for a file that is in fact
-;;; not encrypted, just hit RET and the file will be accepted as is, and the
-;;; crypt minor mode will not be entered.
-;;;
-;;; Other types of encoding programs may be added to this package by using the
-;;; variable `crypt-encoding-alist' which contains a table of encoding
-;;; programs such as compress, gzip (GNU zip), freeze, and compact.
-;;;
-;;; This new extended version of crypt now monitors the filename extensions of
-;;; buffers that are written out using write-file (C-x C-w).  If the filename
-;;; extension matches one of the extensions listed in `crypt-encoding-alist,'
-;;; then this package will write the file out using the corresponding encoding
-;;; (compression) method. This is done whether or not the buffer originated
-;;; from a previously encoded (compressed) file.
-;;;
-;;; Thus, if the user is editing a file that may or may not have been encoded
-;;; originally (e.g., foobar.Z or foobar) and decides to write it to a
-;;; different file (e.g., barfoo or barfoo.z or barfoo.C).  This package will
-;;; examine the filename extension and write the buffer in plain format or an
-;;; alternate encoding (compression) format by searching through the entries
-;;; in the table of encoding methods `crypt-encoding-alist.'  This change in
-;;; encoding state is done automatically if the variable
-;;; `crypt-auto-write-buffer' is t otherwise the user is asked.
-
-\f
-;;; TO DO/KNOWN BUGS/HELP WANTED/APPLY WITHIN:
-;;;
-;;; All users/hackers out there are strongly encouraged to pursue any of these
-;;; matters further (especially those that concern encryption and decryption!).
-;;; It is important to future programmers and modifiers of crypt++.el to know
-;;; about its perceived limitations.  Since necessity drives invention, users
-;;; who find any of the following features of crypt++.el annoying are asked to
-;;; make suggestions and send patches (again, especially those that concern
-;;; encryption and decryption!).
-;;;
-;;; * currently crypt++ assumes that if a file is both encrypted and encoded
-;;;   (i.e., compressed) that the order in which it was done was encryption
-;;;   first _then_ compression.  As has been pointed by many people compression
-;;;   following encryption is useless since the encrypted file is basically
-;;;   random.  On the other hand, many agree that doing encryption _following_
-;;;   compression is better since it makes it harder to crack the encryption.
-;;;   We would like to make the ordering of these two user-configurable or if
-;;;   nothing else change the order.
-;;;
-;;;   Having read the above however, Francois Pinard <pinard@iro.umontreal.ca>
-;;;   writes that encryption following compression may not be harder to crack
-;;;   since "the fact that the first few uncrypted bytes are expected (the
-;;;   compress signature) facilitates a serious attempt at uncrypting."
-;;;   jwz agrees with Francois.
-;;;
-;;; * get write-region and append-to-file to handle encoded and encrypted
-;;;   files.  There is an interesting low-level encoding package by Jay Adams
-;;;   <jka@ece.cmu.edu> called jka-compr.el that might address some of these
-;;;   issues.  We encourage hackers out there to come up with crypt++ versions
-;;;   of write-region and append-to-file.  The difficulty is creating versions
-;;;   that mimic the originals as closely as possible.
-;;;
-;;; * instead of using call-process-region (which can fail badly if the region
-;;;   is large and there's not much room in /tmp), write the region to a temp
-;;;   file (with a customisable location) and use call-process directly.
-;;;
-;;; * users have mentioned trouble using crypt++ and hilit simultaneously since
-;;;   the functions in write-file-hook for both write the file to disk and
-;;;   return t.  A possible solution is to have one of them write to a
-;;;   scratch buffer instead of to disk and return nil and then allow the
-;;;   other to do its work on the scratch buffer and write it to disk.  Thanks
-;;;   to Wayne Folta <folta@cs.UMD.EDU> and Amir J Katz <amir@matis.ingr.com>.
-;;;   It would be nice to have another way in emacs to have an
-;;;   after-write-file-hook and a before-write-file-hook of some sort.
-;;;   Lucid Emacs has an after-write-file-hook.  Recent versions of hilit19.el
-;;;   do not automatically attach to `write-file-hooks' and return t.
-;;;   However, the general problem of multiple packages returning t still
-;;;   remains.  dos-mode.el and crypt++.el also conflict.
-;;;
-;;; * another possible source of trouble is with encryption (and encoding)
-;;;   programs sticking verbose output into buffers prior to being written to
-;;;   disk.  This was definitely occurring with gzip because of --verbose in
-;;;   the GZIP environment variable and is solved/hidden with the --quiet
-;;;   switch.  However, I suspect that some encryption problems out there are
-;;;   capable of similar things so the user should be careful.
-;;;
-;;; * integrating crypt++ with a backgrounding package such as Olin Shivers'
-;;;   `background.el' might be useful too.  thanks to Mark Borges
-;;;   <mdb@noaacrd.Colorado.EDU> for suggesting this.
-;;;
-;;; * Performing M-x crypt-encode-buffer or M-x crypt-encrypt-buffer and then
-;;;   saving the file would possibly cause errors.  It is better to toggle
-;;;   `crypt-encoded-mode' (or `crypt-encrypted-mode') and simply save the
-;;;   file.  It is for this reason that `crypt-encode-buffer' and
-;;;   `crypt-encrypt-buffer' are not interactive.
-;;;
-;;; * use plists instead of alists replacing calls to `nth' with `get'
-;;;
-;;; * merge encryption code completely into encoding code making encryption
-;;;   just a special case of encoding.
-
-\f
-;;; Change log:
-;;;
-;;; 1.1 - original version of crypt.el
-;;; 1.2 -
-;;;   jwz: works with tar-mode.el
-;;;   jwz: applied patch from piet, merged with Lawrence Dodd's gzip version
-;;; 1.3 -
-;;;   lrd: fixed compress-magic-regexp
-;;; 1.4, 1.5, 1.6 -
-;;;   lrd: write-file compresses or gzips based on file extension
-;;; 2.1 -
-;;;   lrd: merged with Rod Whitby's table-driven version (major upgrade)
-;;; 2.2 -
-;;;   rjw: Changed file name to crypt++.el, so archie and lispdir can find it.
-;;; 2.3 -
-;;;   rjw: Separated the hook additions and minor mode alist additions.
-;;; 2.4 -
-;;;   rjw: Fixed the interactive form for crypt-buffer.
-;;; 2.5 -
-;;;   lrd: doc mods, changed GNU free software notice (was out of date), added
-;;;   anonymous ftp information
-;;; 2.6 -
-;;;   lrd: added back in definition of `buffer' in defun crypt-buffer caused
-;;;   an error when trying to read encrypted file; modified check for minor
-;;;   mode alist addition; added gzip magic number warning
-;;; 2.7 - [posted to gnu.emacs.sources]
-;;;   lrd: added `TO DO' and `KNOW BUGS' section to header
-;;; 2.8 -
-;;;   lrd: added note about updating to v 1.24 of tar-mode.el
-;;;   Thanks to Mark Borges <mdb@noaacrd.Colorado.EDU>
-;;; 2.9 -
-;;;   lrd: moved query about `crypt-freeze-vs-fortran' out of defvar for
-;;;   `crypt-encoding-alist,' an erroneous value of nil was being stuck into
-;;;   alist when user set `crypt-freeze-vs-fortran' was nil, doc mod.
-;;;   Thanks to Mark Borges <mdb@noaacrd.Colorado.EDU>
-;;; 2.10 -
-;;;   rjw: moved query about `crypt-freeze-vs-fortran' back into defvar for
-;;;   `crypt-encoding-alist,' - used append to ignore the erroneous nil.
-;;; 2.11 -
-;;;   rjw: fixed a bug in my fix :-(
-;;; 2.12 -
-;;;   rjw: Defvar crypt-magic-regexp and crypt-magic-regexp-inverse and
-;;;   allow either a regexp or an elisp expression.
-;;;   Suggested by Franc,ois Pinard <pinard@iro.umontreal.ca>.
-;;; 2.13 -
-;;;   lrd: added in info on lispdir.el, doc mods and some puttering while
-;;;   looking over rjw's v 2.12 mods.
-;;; 2.14 -
-;;;   lrd: doc mod - trivial huh? switched `compact' and  `gzip' in
-;;;   `crypt-encoding-alist' - want gzip near top
-;;; 2.15 -
-;;;   lrd: added in LCD Archive Entry and modified comments on tar-mode.el
-;;;   since the version at the elisp-archive now works with crypt++.el
-;;; 2.16 -
-;;;   lrd: provide `crypt' as well as `crypt++' allowing something like `ln -s
-;;;   crypt++.el crypt.el' to be meaningful
-;;;   Suggested (by|as) Per Abrahamsen <amanda@iesd.auc.dk>
-;;; 2.17 -
-;;;   lrd: clarified bug report procedure, added fancy pseudo-graphics, added
-;;;   to the `TO DO' list, put RCS tags in LCD Archive entry
-;;; 2.18 - [posted to gnu.emacs.sources]
-;;;   lrd: included pointer to elisp archive in crypt-version description,
-;;;   changed "Decode buffer %s? " to "Decode %s? " in crypt-find-file-hook
-;;;   to be more general (mainly for crypt-insert-file)
-;;; 2.19 -
-;;;   rjw: Added the crypt-compact-vs-C++ switch to distinguish compacted and
-;;;   C++ files.
-;;; 2.20 -
-;;;   lrd: (1) modified interactive form of crypt-buffer. (2) made search
-;;;   case-insensitive in crypt-submit-report. (3) modified encoded-mode and
-;;;   crypt-mode so that buffer-modified is not unconditionally set to nil
-;;;   when the mode is not changed. Thanks to Gerd Hillebrand
-;;;   <ggh@cs.brown.edu> for suggesting (2) and (3).
-;;; 2.21 -
-;;;   rjw: Added an entry to the TODO list about the hazards of using
-;;;   call-process-region on a large region and not much room in /tmp
-;;;   (David Carlisle <carlisle@computer-science.manchester.ac.uk>).
-;;; 2.22 -
-;;;   lrd: allow write-file-hooks to contain functions as well as lists.
-;;;   Contributed by Ken Laprade <laprade@trantor.harris-atd.com>.
-;;; 2.23 -
-;;;   lrd: made crypt-submit-report list values of more user-defined variables
-;;; 2.24 -
-;;;   lrd: pass the -q switch to gzip to thwart the possibility of a --verbose
-;;;   in the GZIP environment variable
-;;; 2.25 -
-;;;   lrd: added some more to the TO DO list, clarified some things, also
-;;;   untabified the entire file (I got tired of the control I's)
-;;; 2.26 -
-;;;   lrd: use the long-named options for GNU zip (self-documenting)
-;;; 2.27 -
-;;;   lrd: included observation by Francois Pinard <pinard@iro.umontreal.ca>
-;;;   and worked on text in TO DO/KNOWN BUGS list
-;;; 2.28 -
-;;;   lrd: added two new variables in (crypt-submit-report) to the list stuck
-;;;   at the bottom of the mail message; changed the comments regarding the
-;;;   user-defined variables.  added in default values in user defined
-;;;   variables.  added to and removed stuff to the `TO DO' list.
-;;;
-;;;   (encoded-mode):
-;;;   added in code to remove any auto-save-files that may have been formed
-;;;   before becoming an encoded buffer (for example a plain file saved to
-;;;   disk encoded had orphan auto-save-files left behind).  turning off
-;;;   auto-save-mode disables the creation of auto-save-files, but it also
-;;;   disables the possibility of these being removed when the buffer is
-;;;   saved.
-;;;
-;;;   (crypt-region):
-;;;   now call the encryption and decryption program directly instead of
-;;;   through the shell.  this is more secure since the shell will expose the
-;;;   password (key).  thanks to Jon Cargille <jcargill@cs.wisc.edu>.  defined
-;;;   two new variables `crypt-decryption-args' and `crypt-encryption-args' to
-;;;   take the arguments separately.  removed (let ((opoint)...)) construct
-;;;   this was a throw back to some old dead code and was not being used.
-;;; 2.29 -
-;;;   lrd: added three new variables in (crypt-submit-report); added to the
-;;;   `TO DO' list.
-;;;
-;;;   (encode-region,encode-buffer,encoded-mode): fixed interactive forms -
-;;;   the conversion to table version had eliminated some of the interactive
-;;;   features of these.  thanks to Kimball Collins <kpc@ptolemy.arc.nasa.gov>
-;;;   for point this out.  new interactive form uses functions
-;;;   `crypt-get-encoding-type' and `crypt-symbol-alist-to-table' and variable
-;;;   `crypt-default-encoding' to generate completion list of encoding types.
-;;;
-;;;   (crypt-write-file-hook): two new user-defined variables
-;;;   `crypt-query-if-interactive' and `crypt-no-extension-implies-plain' and
-;;;   the buffer-local variable `buffer-interactive-mode' are used to help
-;;;   determined whether or not plain output is really desired for files
-;;;   without a compression file-name extension.  the default behavior is the
-;;;   same as before.
-;;; 2.30 -
-;;;   lrd: added test for user-defined variable `crypt-never-ever-decrypt'
-;;;   when finding a file.  some users may never wish to decrypt files
-;;;   and like to edit binary files.  thanks to Nelson Minar
-;;;   <nelson@reed.edu>.  added to doc-strings of
-;;;   `crypt-magic-regexp[-inverse]' -- these can be set to nil[t] and
-;;;   accomplish the same thing as setting `crypt-never-ever-decrypt' to t
-;;; 2.31 -
-;;;   rjw: Updated the comments in the encryption check section.
-;;; 2.32 - [posted to gnu.emacs.sources]
-;;;   lrd: added warning about `crypt-(de|en)cryption-program'; doc mod.
-;;; 2.33 -
-;;;   lrd: if `crypt-(de|en)cryption-args' are nil then don't pass any
-;;;   arguments to (de|en)cryption program, nil is the default instead of
-;;;   "".  Thanks to Joe Ilacqua <spike@world.std.com>, David J. Schur
-;;;   <djs@idm.com>, Peter Nuth <nuth@ai.mit.edu>, and Greg Larson
-;;;   <glarson@bnr.ca>.  `-q' exists in gzip 1.0.3 but not `--quiet' changed
-;;;   GZIP NOTE.  Thanks to Chris Moore <moore@src.bae.co.uk>.
-;;; 2.34 -
-;;;   lrd: allow `crypt-(de|en)cryption-args' to be a list of strings -- more
-;;;   robust.  query for password (key), if none is set, when writing out file
-;;;   for which `buffer-save-encrypted' is t.  Thanks to John Interrante
-;;;   <interran@uluru.Stanford.EDU>.  (crypt-write-file-hook): check filename
-;;;   extension against regexp `crypt-encryption-file-extension' and query for
-;;;   encryption, unless `crypt-auto-write-buffer-encrypted' is t (don't
-;;;   bother doing reverse check, encrypted to plain, not a common request).
-;;;   (crypt-mode): delete auto-save files (cf., encoded-mode), may exist now.
-;;;   (read-string-no-echo): applied patch from Piet van Oostrum
-;;;   <piet@cs.ruu.nl> -- set `cursor-in-echo-area' _after_ setting buffer
-;;;   (this was screwing up gnews).
-;;; 2.35 -
-;;;   lrd: doc mod
-;;; 2.36 -
-;;;   lrd: fixed typo, added RMAIL note.
-;;; 2.37 - [posted to gnu.emacs.sources]
-;;;   lrd:
-;;;   (crypt-write-file-hook): search user-defined list
-;;;   `crypt-ignored-filenames' for possible match with `buffer-filename'
-;;;   before attempting conversion from compressed to plain format; useful for
-;;;   compressed incoming mail files (e.g., RMAIL, INBOX).
-;;;
-;;;   (crypt-mode): query for key if not set already; need to switch order of
-;;;   recovering key and toggling crypt-mode in crypt-find-file-hook (thanks
-;;;   to Piet van Oostrum <piet@cs.ruu.nl>).
-;;;
-;;;   (crypt-buffer) and (encode-buffer): remove interactive form; use
-;;;   (crypt-mode) and (encoded-mode) instead so encryption and compression
-;;;   are done at the very end; leave interactive form in (crypt-region) and
-;;;   (encode-region) may still be used.
-;;;
-;;;   (set-encryption-key): remove from `command-history' if called
-;;;   interactively - thanks to George M. Georgiou
-;;;   <georgiou@silicon.csci.csusb.edu>.
-;;; 2.38 -
-;;;   lrd: added `crypt-' prefix to `(read-string-no-echo)' and `(save-point)'
-;;;   changed file extension for gzip files to `.z' _or_ `.gz' (future release
-;;;   of gzip with use later extension by default and so this should be
-;;;   changed to just `.gz' someday).
-;;; 2.39 -
-;;;   lrd: doc mod. added in patch from jwz - `(crypt-read-string-no-echo)' is
-;;;   more secure, put property 'permanent-local on buffer-locals works for
-;;;   Lucid Emacs and doesn't harm v18 emacs, change `buffer-interactive-mode'
-;;;   to `buffer-interactive-encoded-mode.'
-;;; 2.40 -
-;;;   lrd: put property 'preserved in case kill-fix.el is being used.
-;;; 2.41 -
-;;;   lrd: all functions and variables now start with `crypt-', moved REVISION
-;;;   HISTORY to bottom of header, interactive version of
-;;;   `(crypt-encrypt-region)' clearer, `(crypt-read-string-no-echo)' now
-;;;   echos `.'
-;;; 2.42 -
-;;;   lrd: (crypt-check-extension-for-encoding): broke out of
-;;;   `(crypt-write-file-hook)'.  setting user variables
-;;;   `crypt-compact-vs-C++' and `crypt-freeze-vs-fortran' to nil no longer
-;;;   completely disables the reading compact'ed and frozen files but just
-;;;   disables the use of the file-extension tricks of
-;;;   `(crypt-check-extension-for-encoding).'  (crypt-encode-region): allow
-;;;   for a single line message from encoding program at top of region; if it
-;;;   is there, then remove it; kludge for `compact' program.
-;;; 2.43 -
-;;;   lrd: (crypt-encode-region): generalize the clean up procedure; add
-;;;   element to `crypt-encoding-alist' and introduce new function
-;;;   `(crypt-encoding-cleanup-regexp)' to extract a compression specific
-;;;   regexp for erroneous message or lisp expression for cleanup.
-;;; 2.44 -
-;;;   lrd: new element for `crypt-encoding-alist' handles whether or not
-;;;   file-name extension tricks may be play with encoding method; compact and
-;;;   freeze values default to `crypt-compact-vs-C++' and
-;;;   `crypt-freeze-vs-fortran' (thanks to rjw);
-;;;   (crypt-encoding-extension-tricks): new defun to handle this;
-;;;   (crypt-check-extension-for-encoding): monitors "tricks" entry of
-;;;   `crypt-encoding-alist' and adjust the bag of tricks it can apply.
-;;; 2.45 -
-;;;   lrd: (crypt-encode-region): delete entire match of cleanup regexp by
-;;;   requiring newlines in GARBAGE-REGEXP-OR-LISPEXP.  (crypt-submit-report):
-;;;   use Warsaw's reporter.el.
-;;; 2.46 -
-;;;   lrd: (crypt-find-file-hook, crypt-write-file-hook): cleaned, documented,
-;;;   and replaced occurrences of `(cond (C BODY))' with `(if C BODY)';
-;;;   changed `crypt-magic-regexp' to `crypt-encryption-magic-regexp' and
-;;;   `crypt-magic-regexp-inverse' to `crypt-encryption-magic-regexp-inverse'
-;;;   for consistency with other variable names. new user-defined variable
-;;;   `crypt-encryption-minor-mode-name' instead of always "Crypt".  grouped
-;;;   all encryption variables together.
-;;; 2.47 -
-;;;   lrd: somewhat major change - put program-specific encryption variables
-;;;   into a single table `crypt-encryption-alist' and let the variable
-;;;   `crypt-encryption-type' define the appropriate entry to use; new
-;;;   user-defined variable `crypt-confirm-password,' thanks to Jeff Clark
-;;;   <jclark@src.honeywell.com>. (crypt-submit-report): improved error
-;;;   handling, thanks to baw. (crypt-write-file-hook): fixed bug with
-;;;   `crypt-encoding-extension-tricks'
-;;; 2.48 -
-;;;   lrd: added dummy argument to `crypt-encoding-alist' and
-;;;   `crypt-encryption-alist' and merged all defuns that work on their
-;;;   elements into defuns that all start with `crypt-get-' and look through
-;;;   both lists.  simplifies some of code and closer to treating encryption
-;;;   as a special case of encoding; crypt-minor-mode-alist: replaced (nth *)
-;;;   with `(crypt-get-minor-mode)' call; (crypt-encode-region): allow
-;;;   arguments to be list of strings; renamed (crypt-get-encoding-type) to
-;;;   (crypt-read-encoding-type) for clarity.
-;;; 2.49 - [posted to gnu.emacs.sources]
-;;;   lrd: (crypt-encode-region): ignore `args' if set to t
-;;; 2.50 -
-;;;   lrd: (crypt-write-file-hook): in v19 we need to call `backup-buffer'
-;;;   ourselves -- we write out the file and return t so `basic-save-buffer'
-;;;   does not do it; also call `set-file-modes'
-;;; 2.51 -
-;;;   lrd: some `defvar's are now `defconst's and tar-mode note was changed.
-;;; 2.52 -
-;;;   lrd: make doc strings conform to GNU standards.
-;;; 2.53 -
-;;;   lrd: made header conform to GNU Conventional Headers standard.
-;;; 2.54 -
-;;;   lrd: `crypt-encryption-file-extension', `crypt-freeze-vs-fortran',
-;;;   `crypt-compact-vs-C++', `crypt-encryption-magic-regexp', and
-;;;   `crypt-encryption-magic-regexp-inverse' are used in defining the tables
-;;;   `crypt-encoding-alist' and `crypt-encryption-alist' and so need to be set
-;;;   _before_ loading crypt++.  use `add-hook' if it is available.
-;;; 2.55 -
-;;;   lrd: new interactive function `crypt-insert-file' mimics `insert-file'
-;;;   but attempts to decode or decrypt before insertion; bound `C-x i' if
-;;;   `crypt-bind-insert-file' is non-nil.  comment out doc-strings from
-;;;   internal subroutines, saves space.
-;;; 2.56 -
-;;;   tfb: change the definitions of crypt-{encoding,encryption}-alist, to
-;;;   call the functions crypt-make-{encoding,encryption}-alist resp.
-;;;   Added crypt-reinit which regenerates these variables from their
-;;;   functions, thus allowing this stuff to be preloaded even if people
-;;;   set things in their init files.
-;;;   Tim Bradshaw <tim.bradshaw@mid-heidelberg.de>
-;;; 2.57 -
-;;;   lrd: untabify; remove duplicate entry in `crypt-make-encoding-alist';
-;;;   change name of `crypt-make-*-alist' to `crypt-build-*-alist' and
-;;;   `crypt-reinit' to `crypt-rebuild-tables'; (crypt-read-string-no-echo):
-;;;   change local variable `form' to `help-form' so it is defined;
-;;;   `crypt-encryption-alist' and `crypt-encoding-alist' must be defined with
-;;;   `defconst' since we wish crypt++ to initialize these variables
-;;;   unconditionally; modify INSTALLATION section to reflect these changes.
-;;; 2.58 -
-;;;   lrd: doc mod.
-;;; 2.59 - [posted to gnu.emacs.sources]
-;;;   lrd: (crypt-bind-insert-file): new function for changing "C-x i" in
-;;;   initialization file or interactively.
-;;; 2.60 -
-;;;   lrd: add `crypt-rebuild-tables' and `crypt-bind-insert-file' to
-;;;   `after-init-hook' in GNU emacs v19 and to `term-setup-hook' in Lucid
-;;;   emacs.  Change INSTALLATION notes.
-;;; 2.61 - [posted to gnu.emacs.sources]
-;;;   lrd: Doc mod.  Clean up the installation of minor mode indicators.
-;;; 2.62 - [posted to gnu.emacs.sources]
-;;;   lrd: installed patch from stig@hackvan.com to simplify crypt-get-* defuns
-;;;   (now defmacros).  Don't add to `term-setup-hook' unless no
-;;;   `after-init-hook' _and_ definitely running v19, otherwise Rod gets an
-;;;   error at home :-<.  Don't assume C-x i had `insert-file' bound to it:
-;;;   store old binding in `crypt-old-binding' before overwriting and use in
-;;;   function `crypt-bind-insert-file.'
-;;; 2.63 -
-;;;   lrd: (crypt-encode-buffer, crypt-encode-region, crypt-encrypt-buffer,
-;;;   crypt-encrypt-region): changed argument list putting optional buffer
-;;;   last and making default action to encode or encrypt. (crypt-encoded-p,
-;;;   crypt-encrypted-p): new functions that do the actual testing of file
-;;;   contents.  (crypt-find-file): uses these new functions.
-;;;   (crypt-rebuild-minor-modes-alist): new function to rebuild
-;;;   `minor-mode-alist' called by function crypt-rebuild-tables.
-;;;   (crypt-build-minor-mode-alist): new function called by
-;;;   `crypt-minor-mode-alist' to create itself.  `crypt-minor-mode-encrypted'
-;;;   removed because defined in function crypt-build-minor-mode-alist.
-;;; 2.64 -
-;;;   lrd: (crypt-find-file-hook): temporarily remove the encrytion file
-;;;   extension to help determine the major mode, just like is done with the
-;;;   encoding file extension.  In order for this to work properly the file
-;;;   extension in `crypt-encryption-file-extension' and
-;;;   `crypt-encryption-alist' needs to be inside a pair of \\( \\).
-;;; 2.65 -
-;;;   lrd: (crypt-find-file-hook): move determination of key, password, into
-;;;   (crypt-encrypted-p).
-;;; 2.66 -
-;;;   lrd: (crypt-set-encryption-key): improve prompt string for encryption
-;;;   key.
-;;; 2.67 -
-;;;   lrd: (crypt-write-file-hook): make check for encryption file-name
-;;;   extension case-sensitive.
-;;; 2.68 -
-;;;   lrd: fixed check for previous addition to `minor-mode-alist' -- was not
-;;;   working. Check for an `add-hook' function; if one does not exist then
-;;;   use a copy of one from GNU Emacs 19.  When using `add-hook' to append to
-;;;   the `write-file-hooks' make sure that the version accepts the optional
-;;;   APPEND argument -- v19's does but the one in the elisp archive by Dan
-;;;   LaLiberte <liberte@cs.uiuc.edu> does not append.  This causes problems.
-;;;   Thanks to Francesco Potorti` <pot@fly.CNUCE.CNR.IT> for pointing this
-;;;   out.
-;;; 2.69 - [posted to gnu.emacs.sources]
-;;;   lrd: doc mod with regards `after-init-hook' and Lucid Emacs.  Add
-;;;   pointer to crypt++-fnf.el for people who might be interested.
-;;; 2.70 -
-;;;   lrd: narrow conditions under which crypt-encryption-magic-regexp
-;;;   matches.  Thanks to Philippe Michel <michel@thomson-lcr.fr> and Francois
-;;;   Pinard <pinard@iro.umontreal.ca> for helping explain this with regards
-;;;   to ISO/Latin-1.
-;;; 2.71 -
-;;;   lrd: applied patches from Darrin Jewell <jewell@bdi.com> for DOS to UNIX
-;;;   support.  DOS entry added to crypt-build-encoding-alist.
-;;;   (crypt-dos-to-unix-region, crypt-unix-to-dos-region): New
-;;;   functions. (crypt-dos-has-ctrl-z): New buffer-local variable.
-;;;   (crypt-encode-region): allow for encoding and decoding programs to be
-;;;   elisp expressions.  If they are then apply them directly to region.
-;;;   Point out that crypt++.el conflicts with dos-mode.el.
-;;; 2.72 -
-;;;   lrd: The limit for the regular expression search done by
-;;;   `crypt-encrypted-p' is extended to 100 by default.  The enlargement of
-;;;   search field is needed because of previous reduction in size of regexp
-;;;   being searched for.  (crypt-magic-search-limit): New variable defining
-;;;   this new limit.  (crypt-encrypted-p): Uses it and cleaned up.  Doc mod.
-;;;   Thanks to Philippe Michel <michel@thomson-lcr.fr>, Francois Pinard
-;;;   <pinard@iro.umontreal.ca>, and Dave Goldberg <dsg@blackbird.mitre.org>.
-;;; 2.73 - [posted to gnu.emacs.sources]
-;;;   lrd: Apply patch from Kevin Rodgers <kevin@traffic.den.mmc.com> that
-;;;   uses more verbose messages and capitals.  Doc mod.
-;;; 2.74 -
-;;;   lrd: Untabify.  (crypt-encrypted-p): Check value of
-;;;   `crypt-never-ever-decrypt' before anything else.
-;;; 2.75 -
-;;;   lrd: (crypt-version): Remove call to `substring'.
-;;; 2.76 -
-;;;   lrd: (crypt-encryption-magic-regexp-inverse): Add in regexp that will
-;;;   match ksh `.sh_history' files so that they are not interpreted as
-;;;   encrypted files.  Thanks to Francesco Potorti` <pot@fly.CNUCE.CNR.IT>.
-;;; 2.77 - [posted to gnu.emacs.sources]
-;;;   lrd: (crypt-bind-insert-file): Use substitute-key-definition to bind
-;;;   crypt-insert-file to whatever key insert-file is bound to (not
-;;;   necessarily C-x i).  Call crypt-bind-insert-file directly in
-;;;   file. Variable crypt-bind-insert-file: Doc mod.  Remove
-;;;   crypt-old-binding.  Replace `M-x foobar' in doc strings with
-;;;   `\\[foobar]'.
-;;; 2.78 -
-;;;   lrd: (crypt-auto-write-answer-local): New internal variable.  Holds
-;;;   answer to query about file-extension tricks question per buffer.  Thanks
-;;;   to George Forman <forman@cs.washington.edu>.  Remove Rod from list of
-;;;   maintainers...he's busy enough.  Merge multiple setq forms into single
-;;;   setq forms.
-;;; 2.79 -
-;;;   lrd: (crypt-y-or-n-p): New internal function for querying.  Tests the
-;;;   internal variable crypt-auto-write-answer-local to ensure single query.
-;;;   (crypt-check-extension-for-encoding): Replace all occurrences of queries
-;;;   involving y-or-no-p constructs with crypt-y-or-n-p.
-;;; 2.80 - [posted to gnu.emacs.sources]
-;;;   lrd: (crypt-set-encryption-key): Shorten interactive prompt.  Change
-;;;   documentation.
-;;; 2.81 -
-;;;   lrd: (crypt-variable-list): Add shell and path variables.
-;;;   (crypt-confirm-password): Fix spelling error in doc.
-;;; 2.82 -
-;;;   lrd: Applied patch from Noah Friedman <friedman@prep.ai.mit.edu>.
-;;;   (crypt-encoded-disable-auto-save, crypt-encrypted-disable-auto-save):
-;;;   New user-defined variables. (crypt-encoded-mode, crypt-encrypted-mode):
-;;;   Use them.
-;;; 2.83 - 2feb98
-;;;   kb: Changed occurrences of roebling.  Do (set-visited-file-name).
-;;;   Incorporate patches from David Rosinger <dsrosing@ingr.com> for win32.
-;;; 2.84 - 20mar98
-;;;   kb: Applied XEmacs 2.83 patch by hniksic to add custom support.
-;;;   Support .tgz as .tar.gz.
-;;;   Add bzip support.
-;;;   Merge pgp support from John Heidemann <johnh@isi.edu>,
-;;;    http://www.isi.edu/~johnh/SOFTWARE/index.html.
-;;;    Requires either mailcrypt or "PEM - PGP Enhanced Messaging for
-;;;    GNU Emacs" from Roy Frederick Busdiecker, III (Rick).
-;;;   Merge Mac support from Daniel M. German <dmg@csg.uwaterloo.ca>.
-;;; 2.85 - 5jun98
-;;;    cro@nca.asu.edu: Add support in pgp-pub for encrypting files with
-;;;     multiple user's keys.  New variables: crypt-pgp-pub-multirecipients,
-;;;     crypt-pgp-pub-recipients, crypt-pgp-pub-recipients-history.
-;;;     This support is on by default.
-;;;    nosuzuki@e-mail.ne.jp: defvar shell-command-switch.
-;;;    knabe@cs.virginia.edu: crypt-pgp variable names.
-;;; 2.86 - 17jan99
-;;;    nmg97r@ecs.soton.ac.uk: Discard stderr from subprocesses instead
-;;;    of inserting into the current buffer.
-;;; 2.87 - 21apr99
-;;;    add crypt-decode-{dos,mac}-p.
-;;; 2.88 - 2jun00
-;;;    kifer@cs.sunysb.edu: (coding-system-for-write 'no-conversion)
-;;;    ryk@coho.net: (buffer-file-coding-system 'no-conversion)
-;;;    johnh@isi.edu: mailcrypt & pgp/pgp5.0/gpg.
-;;; 2.89 - 11may01
-;;;    joerg@plate.cx (Joerg Plate): bzip != bzip2.
-;;;    plord@hgmp.mrc.ac.uk (Phillip Lord) (crypt-file-write-hook):
-;;;      (let inhibit-read-only t) so we can save with read-only properties.
-;;;    cro@nca.asu.edu (Charles R. Oldham) (crypt-pgp-pub-encrypt-region):
-;;;      typo, pgp used in gpg block.
-;;;    hull@paracel.com (David Hull): gpg file support, also
-;;;      set coding-system-for-read to 'no-conversion, fixes decryption
-;;;      bug with files beginning with a blank line.
-;;;    kb (crypt-encode-region): set coding-system-for-*.  This
-;;;      backwards incompatibility sure has been painful.
-;;; 2.90 - 19may01
-;;;    kb: pattern for .elc files.
-;;; 2.91 - 15nov01
-;;;    forcer@debian.org (Jorgen Schaefer): mcrypt entry.
-;;;    doc fixes from dmagda@magda.ca (David Magda)
-;;;      and vidal@sc.edu (Jose Vidal).
-;;; 2.92 - 17jan03
-;;;     kb: no more ftp.cs.umb.edu.
-;;;    mernst@alum.mit.edu (Michael Ernst): rc4 encoding.
-
-\f
-;;; Code:
-
-;;;; User definable variables.
-(defvar shell-command-switch "-c") ; in case it isn't defined yet.
-
-(defvar crypt-encryption-type 'crypt
-  "*Method of encryption.  Must be an element of `crypt-encryption-alist.'
-If you change this after crypt++ is loaded then do \\[crypt-rebuild-tables].")
-
-(defvar crypt-encryption-file-extension nil
-  "*Regexp for extension of files encrypted with `crypt-encryption-type.'
-Should be of the form \"\\\\(\\\\.foo\\\\)$\".  nil says use default values in
-`crypt-encryption-alist.'  If you change this after crypt++ is loaded then do
-\\[crypt-rebuild-tables].")
-
-(defvar crypt-never-ever-decrypt nil
-  "*t says never attempt to decrypt a buffer.")
-
-(defvar crypt-auto-write-buffer-encrypted nil
-  "*t says files with `crypt-encryption-alist' file extension auto-encrypted.
-nil says query.  See `crypt-auto-write-buffer.'")
-
-(defvar crypt-confirm-password nil
-  "*t says confirm new passwords and when writing a newly encrypted buffer.")
-
-(defvar crypt-encoded-disable-auto-save t
-  "*If t, turn off auto-save-mode for buffers which are encoded.
-If non-nil but not t, then no message is displayed.
-
-The default is t is because there isn't any way to tell emacs to encode the
-autosave file, so the autosave would be in a different format from the
-original.  The disadvantage of turning off autosaves is that any work you
-do in that buffer will be completely lost if the changes are not explicitly
-saved.
-
-It is probably best to set this variable to nil and use buffer-local
-variables in files for which you don't actually care about autosaves.
-Unencoded recovery data is better than none at all.")
-
-(defvar crypt-encrypted-disable-auto-save t
-  "*If t, turn off auto-save-mode for buffers which are encrypted.
-If non-nil but not t, then no message is displayed.
-
-The default is t is because there isn't any way to tell emacs to encrypt
-the autosave file, so the autosave would be in cleartext form.  The
-disadvantage of turning off autosaves is that any work you do in that
-buffer will be completely lost if the changes are not explicitly saved.
-
-You might consider setting this variable to nil and use buffer-local
-variables in files for which security is more important than data
-recovery.")
-
-;;; ENCRYPTION
-
-;;; Encrypted files have no magic number, so we have to hack a way of
-;;; determining when a buffer should be decrypted.  we do this only buffers
-;;; that match a MAGIC-REGEXP very close to beginning of buffer and that do
-;;; _NOT_ match a MAGIC-REGEXP-INVERSE.
-;;;
-;;; Currently MAGIC-REGEXP matches non-ASCII characters and
-;;; MAGIC-REGEXP-INVERSE will match Sun OS, 4.x BSD, and Ultrix executable
-;;; magic numbers, so binaries can still be edited (heh) without headaches.
-
-(defconst crypt-encryption-magic-regexp "[\000\200-\237]\\|^-----BEGIN PGP MESSAGE\\|^Salted__"
-  "Regexp that must be found very close to beginning of encrypted buffer.
-This is intended to be an internal variable \(not user-visible\).  If you
-change this after crypt++ is loaded then do \\[crypt-rebuild-tables].")
-
-(defconst crypt-encryption-magic-regexp-inverse
-  "\\`\201\001\\|^\\(..\\)?\\([\007\010\013]\001\\|\001[\007\010\013]\\)\\|^From \\|^;ELC"
-  "Regexp that must *not* be found very close to beginning of encrypted buffer.
-This is intended to be an internal variable \(not user-visible\).  If you
-change this after crypt++ is loaded then do \\[crypt-rebuild-tables].")
-
-(defconst crypt-magic-search-limit 100
-  "Limit of regular expression search used to recognize encrypted files.
-Maximum position in file for presence of `crypt-encryption-magic-regexp' and
-absence of `crypt-encryption-magic-regexp-inverse'.")
-
-(defun crypt-build-encryption-alist ()
-  ;; Returns the encryption alist
-  (list
-   ;; crypt
-   (list 'crypt
-         crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse
-         (or crypt-encryption-file-extension "\\(\\.e\\)$")
-         "crypt" "crypt"
-         nil
-         nil
-         "Crypt"
-         nil
-         t
-        nil
-         )
-   ;; DES (Cipher Block Chaining - CBC) [DES' default]
-   (list 'des
-         crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse
-         (or crypt-encryption-file-extension "\\(\\.des\\)$")
-         "des" "des"
-         '("-e" "-k")
-         '("-d" "-k")
-         "DES-CBC"
-         nil
-         t
-        nil
-         )
-   ;; DES (Electronic Code Book - ECB)
-   (list 'des-ecb
-         crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse
-         (or crypt-encryption-file-extension "\\(\\.des\\)$")
-         "des" "des"
-         '("-e" "-b" "-k")
-         '("-d" "-b" "-k")
-         "DES-ECB"
-         nil
-         t
-        nil
-         )
-   ;; PGP
-   (list 'pgp
-         crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse
-         (or crypt-encryption-file-extension "\\(\\.pgp\\)$")
-         "pgp" "pgp"
-         '("+batchmode" "+verbose=0" "-c" "-f" "-z")
-         '("+batchmode" "+verbose=0" "-f" "-z")
-         "PGP"
-         nil
-         t
-        nil
-         )
-   ;; PGP with public-key encryption
-   (list 'pgp-pub
-         crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse
-         (or crypt-encryption-file-extension "\\(\\.pgp\\)$")
-         "pgp" "pgp"
-         nil
-         nil
-         "PGP-PUB"
-         nil
-         t
-        nil
-         )
-   ;; GPG
-   (list 'gpg
-         crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse
-         (or crypt-encryption-file-extension "\\(\\.gpg\\)$")
-         "gpg" "gpg"
-         '("--batch" "--quiet" "-c" "-o" "-" "--passphrase-fd" "0")
-         '("--batch" "--quiet" "-o" "-" "--passphrase-fd" "0")
-         "GPG"
-         nil
-         t
-        t
-         )
-  (list 'mcrypt
-        crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse
-        (or crypt-encryption-file-extension "\\(\\.nc\\)$")
-        "mcrypt" "mcrypt"
-        '("-k")
-        '("-d" "-k")
-        "Rijndael-128"
-        nil
-        t
-       nil
-        )
-  (list 'rc4
-        crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse
-        (or crypt-encryption-file-extension "\\(\\.rc4\\)$")
-        "openssl" "openssl"
-        '("enc" "-rc4" "-e" "-k")
-        '("enc" "-rc4" "-d" "-k")
-        "RC4"
-       nil
-        t
-        nil
-        )
-   ;; Add new elements here ...
-   ))
-
-(defconst crypt-encryption-alist (crypt-build-encryption-alist)
-  "List of elements describing the encryption methods available.
-each element looks like
-        \(ENCRYPTION-TYPE
-          MAGIC-REGEXP MAGIC-REGEXP-INVERSE
-          FILE-EXTENSION
-          ENCRYPT-PROGRAM DECRYPT-PROGRAM
-          ENCRYPT-ARGS
-          DECRYPT-ARGS
-          MINOR-MODE
-          GARBAGE-REGEXP-OR-LISPEXP
-          FILE-EXTENSION-TRICKS
-          ENCRYPTION-KEY-STDIN
-         \)
-ENCRYPTION-TYPE is a symbol denoting the encryption type.
-
-MAGIC-REGEXP regexp that must match very close to the beginning of an
-encrypted buffer.  This may also be some elisp expression to be evaluated at
-\(point-min\) that will return t for an encrypted buffer.  If this is set to
-nil then crypt++ will never try to decrypt a buffer.  Currently set to the
-internal variable `crypt-encryption-magic-regexp' which will match non-ASCII
-characters.
-
-MAGIC-REGEXP-INVERSE regexp that must _NOT_ match very close to the beginning
-of an encrypted buffer.  This may also be some elisp expression to be
-evaluated at \(point-min\) that will return t for a NON-encrypted buffer.
-If this is set to t then crypt++ will never try to decrypt a buffer.
-Currently set to the internal variable `crypt-encryption-magic-regexp-inverse'
-which will match Sun OS, 4.x BSD, and Ultrix executable magic numbers, so
-binaries can still be edited (heh) without headaches.
-
-FILE-EXTENSION regexp denoting the file extension usually appended the
-filename of files encrypted with ENCRYPT-PROGRAM.  The variable
-`crypt-encryption-file-extension' will over ride the default.
-
-ENCRYPT-PROGRAM name of executable file to be used for encryption.
-
-DECRYPT-PROGRAM name of executable file to be used for decryption.
-
-ENCRYPT-ARGS arguments to be passed to ENCRYPT-PROGRAM may be a string or a
-list of strings or nil.
-
-DECRYPT-ARGS arguments to be passed to DECRYPT-PROGRAM may be a string or a
-list of strings or nil.
-
-MINOR-MODE string denoting the name for the encrypted minor mode as it will
-appear in the mode line.
-
-GARBAGE-REGEXP-OR-LISPEXP dummy variable for compatibility with encoding.
-
-FILE-EXTENSION-TRICKS is t or nil depending on whether or not tricks
-converting between different encryption types can be done based on
-FILE-EXTENSION; typically t.
-
-ENCRYPTION-KEY-STDIN is t if the encryption key should be passed to the
-encryption program on stdin, or nil if it should be appended to the end
-of the command line.  It is more secure to pass it on stdin.
-")
-
-\f
-;;; ENCODING
-
-(defvar crypt-auto-decode-buffer t
-  "*t says buffers visiting encoded files will be decoded automatically.
-nil means to ask before doing the decoding.")
-
-(defvar crypt-auto-write-buffer nil
-  "*t says save files with `crypt-encoding-alist' file extensions as encoded.
-nil says to ask before doing this encoding.  Similarly, buffers originating
-from encoded files to be written to files not ending in `crypt-encoding-alist'
-file extensions will be written in plain format automatically.  nil says to
-ask before doing this decoding.")
-
-;; This is an internal variable documented here and not in a DOCSTRING in
-;; order to save memory.  If this variable's value has been changed from its
-;; default, then it contains the answer to the question "Write out buffer
-;; foobar using `compression-type'?".  This question is asked only if *plain*
-;; buffer foobar is being written to disk *and* it has a provocative
-;; `compression-type' file-name extension (see DOCSTRING for variable
-;; crypt-auto-write-buffer).  The variable is local to all buffers with a
-;; default value of 'ask so if the situation described above arises, then the
-;; question is asked at least once, unless the user-defined variable
-;; crypt-auto-write-buffer is non-nil.
-(defvar crypt-auto-write-answer-local 'ask)
-(make-variable-buffer-local 'crypt-auto-write-answer-local)
-(setq-default crypt-auto-write-answer-local 'ask)
-(put 'crypt-auto-write-answer-local 'permanent-local t) ; for v19 Emacs
-(put 'crypt-auto-write-answer-local 'preserved t)       ; for kill-fix.el
-
-(defvar crypt-query-if-interactive t
-  "*t says ask when saving buffers where `crypt-encoded-mode' was toggled.
-nil says that even if filename extension is plain (i.e., not listed in
-`crypt-encoding-alist') buffer will be written in an encoded format without
-asking.
-
-This variable is designed for users that edit a plain file (with plain
-extension) and then toggle `(crypt-encoded-mode)' and do not wish to be
-queried every time that they save the buffer.
-
-NOTE: if `(crypt-encoded-mode)' was not called interactively (the usual
-scenario) then the value of this variable has no effect on how the buffer is
-written to disk.  In such a case `crypt-no-extension-implies-plain' is then
-the relevant variable.")
-
-(defvar crypt-no-extension-implies-plain t
-  "*t says file extensions not in `crypt-encoding-alist' may be written plain.
-if `crypt-auto-write-buffer' is also t then any file ending in a plain
-extension is written in plain format automatically, otherwise query user.
-
-nil says user works with encoded (compressed) files without file extensions
-and will not be queried each time they save these files.
-
-NOTE: (1) this does not affect find-file (C-x C-f) since that works with a
-magic regexp.  (2) there is no way to distinguish between write-file and
-save-buffer so nil will mean that neither will query.")
-
-(defvar crypt-freeze-vs-fortran t
-  "*t says `.F' file extension denotes a frozen file not a Fortran file.
-If you change this variable after crypt++ has been loaded then do
-\\[crypt-rebuild-tables].")
-
-(defvar crypt-compact-vs-C++ nil
-  "*t says `.C' file extension denotes a compacted file not a C++ file.
-If you change this variable after crypt++ has been loaded then do
-\\[crypt-rebuild-tables].")
-
-(defvar crypt-ignored-filenames nil
-  "*List of regexp filenames for which encoded to plain conversion is not done.
-A filename with a plain extension, in encoded format, that is matched by one of
-these elements will be saved in encoded format without a query for conversion to
-plain format.
-
-This variable is provided for users that want to compress their incoming mail
-for RMAIL and VM which look for files `RMAIL' and `INBOX,' respectively, to
-store incoming mail.  For example, the gzip extensions on `RMAIL.gz' and
-`INBOX.gz' can be removed, this variable set to '\(\"INBOX$\" \"RMAIL$\"\) and
-no query about conversion to plain format will be made.")
-
-(defvar crypt-default-encoding "gzip"
-  "*Default encoding type as string used when `crypt-encoded-mode' is toggled.
-Must match one of the elements of `crypt-encoding-alist'.")
-
-(defvar crypt-dos-has-ctrl-z nil
-  "t if this buffer had a ctrl-z stripped from end, otherwise, nil.
-Buffer local and set by `crypt-dos-to-unix-region'")
-(make-variable-buffer-local 'crypt-dos-has-ctrl-z)
-(setq-default crypt-dos-has-ctrl-z nil)
-(put 'crypt-dos-has-ctrl-z 'permanent-local t) ; for v19 Emacs
-(put 'crypt-dos-has-ctrl-z 'preserved t)       ; for kill-fix.el
-
-(defvar crypt-decode-dos-p t "Says whether to decode DOS (\r\n) files.")
-(defvar crypt-decode-mac-p t "Says whether to decode Mac (\r) files.")
-
-(defun crypt-build-encoding-alist ()
-  ;; Returns the encoding alist
-  (list
-   ;; compress
-   (list 'compress
-         "\037\235" nil
-         "\\(\\.Z\\)$"
-         "compress" "uncompress"
-         nil nil
-         "Compress"
-         nil
-         t
-         nil)
-   ;; gzip (GNU zip, http://www.gzip.org)
-   (list 'gzip
-         "\037\213" nil
-         "\\(\\.g?z\\)$"
-         "gzip" "gzip"
-         "--quiet" "--decompress --quiet"
-         "Gzip"
-         nil
-         t
-         nil)
-   ;; bzip
-   (list 'bzip
-         "BZ0" nil
-         "\\(\\.bz\\)$"
-         "bzip" "bzip"
-         "" "--decompress"
-         "Bzip"
-         nil
-         t
-         nil)
-   ;; bzip2 (block-sorting, http://www.digistar.com/bzip2/)
-   (list 'bzip2
-         "BZh" nil
-         "\\(\\.bz2\\)$"
-         "bzip2" "bzip2"
-         "" "--decompress"
-         "Bzip2"
-         nil
-         t
-        nil)
-   ;; freeze
-   (list 'freeze
-         "\037\236\\|\037\237" nil
-         "\\(\\.F\\)$"
-         "freeze" "freeze"
-         "" "-d"
-         "Freeze"
-         nil
-         crypt-freeze-vs-fortran
-        nil)
-   ;; compact
-   (list 'compact
-         "\377\037" nil
-         "\\(\\.C\\)$"
-         "compact" "uncompact"
-         nil nil
-         "Compact"
-         "^Compression *:.*\n"
-         crypt-compact-vs-C++
-        nil)
-   ;; DOS (crlf)
-   (and crypt-decode-dos-p (list 'dos
-         "[^\n\r]*\r\n" nil
-         "\\(\\.DOS\\)$"
-         'crypt-unix-to-dos-region 'crypt-dos-to-unix-region
-         nil nil
-         "Dos"
-         nil
-         nil
-         nil))
-    ;; Mac (cr)
-    (and crypt-decode-mac-p (list 'mac
-          "[ -~]*\r[ -~]" nil
-          "\\(\\.MAC\\)$"
-          'crypt-unix-to-mac-region 'crypt-mac-to-unix-region
-          nil nil
-          "Mac"
-          nil
-          nil
-          nil))
-   )
-)
-
-(defconst crypt-encoding-alist (crypt-build-encoding-alist)
-  "List of elements describing the encoding methods available.
-each element looks like
-        \(ENCODING-TYPE
-          MAGIC-REGEXP MAGIC-REGEXP-INVERSE
-          FILE-EXTENSION
-          ENCODE-PROGRAM DECODE-PROGRAM
-          ENCODE-ARGS DECODE-ARGS
-          MINOR-MODE
-          GARBAGE-REGEXP-OR-LISPEXP
-          FILE-EXTENSION-TRICKS
-          ENCRYPTION-KEY-STDIN
-         \)
-ENCODING-TYPE is a symbol denoting the encoding type.  Currently known
-encodings are (compress compact freeze gzip).
-
-MAGIC-REGEXP is a regexp that matches the magic number at the
-beginning of files encoded with ENCODING-TYPE.
-
-MAGIC-REGEXP-INVERSE dummy variable for compatibility with encryption.
-
-FILE-EXTENSION is a string denoting the file extension usually
-appended the filename of files encoded with ENCODING-TYPE.
-
-ENCODE-PROGRAM is a string denoting the name of the executable used to
-encode files.
-
-DECODE-PROGRAM is a string denoting the name of the executable used to
-decode files.
-
-ENCODE-ARGS arguments to be passed to ENCODE-PROGRAM may be a string or a
-list of strings or nil.
-
-DECODE-ARGS arguments to be passed to DECODE-PROGRAM may be a string or a
-list of strings or nil.
-
-MINOR-MODE is a string denoting the name for the encoded minor mode as
-it will appear in the mode line.
-
-GARBAGE-REGEXP-OR-LISPEXP is (1) a regexp that matches any extraneous text
-that is produced by the ENCODE-COMMAND including any newlines and will be
-removed from the buffer before saving to disk; (2) a lisp expression that will
-clean up extraneous material in the buffer or nil.  This is normally not
-needed but can be derived for any ENCODE-COMMAND by checking the standard
-error that results from `sh -c \"cat foo | ENCODE-COMMAND > bar\"'.
-
-FILE-EXTENSION-TRICKS is t or nil depending on whether or not tricks
-converting between different encoding types can be done based on
-FILE-EXTENSION; typically t.
-
-ENCRYPTION-KEY-STDIN is a dummy variable for compatibility with encryption.
-")
-
-\f
-;;; This allows the user to alter contents of the encoding and encryption
-;;; table variables without having to reload all of crypt++.
-(defun crypt-rebuild-tables ()
-  "Rebuilds the encryption and encoding tables and `minor-mode-alist'.
-Allows user to alter variables used in building these tables.  May be called
-interactively or in an initialization file.  Part of `after-init-hook'."
-  (interactive)
-  (setq crypt-encryption-alist (crypt-build-encryption-alist)
-        crypt-encoding-alist (crypt-build-encoding-alist))
-  (crypt-rebuild-minor-modes-alist))
-
-\f
-;;; Buffer locals.
-
-(defvar crypt-buffer-save-encrypted nil
-  "*non-nil says save buffer encrypted with `crypt-encryption-type.'
-local to all buffers.")
-(make-variable-buffer-local 'crypt-buffer-save-encrypted)
-(put 'crypt-buffer-save-encrypted 'permanent-local t) ; for v19 Emacs
-(put 'crypt-buffer-save-encrypted 'preserved t)       ; for kill-fix.el
-
-(defvar crypt-buffer-encryption-key nil
-  "*Key used for encryption of current buffer.  Local to all buffers.")
-(make-variable-buffer-local 'crypt-buffer-encryption-key)
-(put 'crypt-buffer-encryption-key 'permanent-local t) ; for v19 Emacs
-(put 'crypt-buffer-encryption-key 'preserved t)       ; for kill-fix.el
-
-(defvar crypt-buffer-save-encoded nil
-  "*non-nil says buffer will be saved encoded.  Local to all buffers.")
-(make-variable-buffer-local 'crypt-buffer-save-encoded)
-(put 'crypt-buffer-save-encoded 'permanent-local t)   ; for v19 Emacs
-(put 'crypt-buffer-save-encoded 'preserved t)         ; for kill-fix.el
-
-(defvar crypt-buffer-encoding-type nil
-  "*non-nil says buffer is encoded with ENCODING-TYPE.  Local to all buffers.")
-(make-variable-buffer-local 'crypt-buffer-encoding-type)
-(put 'crypt-buffer-encoding-type 'permanent-local t)  ; for v19 Emacs
-(put 'crypt-buffer-encoding-type 'preserved t)        ; for kill-fix.el
-
-(defvar crypt-buffer-interactive-encoded-mode nil
-  "t says `crypt-encoded-mode' was toggled interactively, almost always nil.
-Local to all buffers.")
-(make-variable-buffer-local 'crypt-buffer-interactive-encoded-mode)
-(put 'crypt-buffer-interactive-encoded-mode 'permanent-local t) ; v19 Emacs
-(put 'crypt-buffer-interactive-encoded-mode 'preserved t)       ; kill-fix.el
-
-\f
-;;; Functions and macros that search `crypt-encryption-alist' and
-;;; `crypt-encoding-alist'.
-
-(defun crypt-get-alist-member (type n)
-  ;; Returns TYPE's Nth element
-  (nth n (or (assoc type crypt-encryption-alist)
-             (assoc type crypt-encoding-alist))))
-
-(defmacro crypt-get-magic-regexp (type)
-  ;; Returns regexp found at top of files encoded/encrypted with TYPE.
-  (list 'crypt-get-alist-member type 1))
-
-(defmacro crypt-get-magic-regexp-inverse (type)
-  ;; Returns regexp *not* found at top of files encoded/encrypted with TYPE.
-  (list 'crypt-get-alist-member type 2))
-
-(defmacro crypt-get-file-extension (type)
-  ;; Returns regexp matching extension of files encoded/encrypted with TYPE.
-  (list 'crypt-get-alist-member type 3))
-
-(defmacro crypt-get-encoding-program (type)
-  ;; Returns name of program, as string, used to encode/encrypt with TYPE.
-  (list 'crypt-get-alist-member type 4))
-
-(defmacro crypt-get-decoding-program (type)
-  ;; Returns name of program, as string, used to decode/decrypt with TYPE.
-  (list 'crypt-get-alist-member type 5))
-
-(defmacro crypt-get-encoding-args (type)
-  ;; Returns arguments passed to program used to encode/encrypt with TYPE.
-  (list 'crypt-get-alist-member type 6))
-
-(defmacro crypt-get-decoding-args (type)
-  ;; Returns arguments passed to program used to decode/decrypt with TYPE.
-  (list 'crypt-get-alist-member type 7))
-
-(defmacro crypt-get-minor-mode-name (type)
-  ;; Returns minor mode name, as string, for encoding/encrypting with TYPE.
-  (list 'crypt-get-alist-member type 8))
-
-(defmacro crypt-get-cleanup-regexp (type)
-  ;; Returns regexp or lisp-exp for cleaning up encoding/encrypting with TYPE.
-  (list 'crypt-get-alist-member type 9))
-
-(defmacro crypt-get-extension-tricks (type)
-  ;; Returns t if file extension tricks doable for encoding/encrypting with
-  ;; TYPE.
-  (list 'crypt-get-alist-member type 10))
-
-(defmacro crypt-get-encryption-key-stdin (type)
-  ;; Returns t if encryption program takes passphrase on stdin, or nil
-  ;; if at end of command line.
-  (list 'crypt-get-alist-member type 11))
-
-(defun crypt-buffer-save-name (type)
-  ;; Returns variable `crypt-buffer-save-TYPE', set to t if encoding with TYPE.
-  ;; local to all buffers.
-  (intern (concat "crypt-buffer-save-" (symbol-name type))))
-
-\f
-;;; Create a buffer-local variable for each type of encoding.
-;;; These variables are used to trigger the minor mode names.
-
-(defun crypt-build-minor-mode-alist ()
-  ;; Returns minor mode alist entries for encoded and encrypted buffers.
-  (append
-   ;; First the encrypted minor mode -- only one.
-   (list (list 'crypt-buffer-save-encrypted
-               (concat " " (crypt-get-minor-mode-name crypt-encryption-type))))
-   ;; Now the encoding minor modes.
-   (mapcar
-    (function
-     (lambda (element)
-       (let ((variable (crypt-buffer-save-name (car element))))
-         (make-variable-buffer-local variable)
-         (put variable 'permanent-local t) ; for v19 Emacs
-         (put variable 'preserved t)       ; for kill-fix.el
-         (list variable
-               (concat " " (crypt-get-minor-mode-name (car element)))))))
-    crypt-encoding-alist)))
-
-(defconst crypt-minor-mode-alist (crypt-build-minor-mode-alist)
-  "Alist containing encoded and encrypted minor modes.
-Derived from variable `crypt-encoding-alist' and function
-`crypt-build-minor-mode-encrypted'")
-
-(defun crypt-rebuild-minor-modes-alist ()
-  ;; Rebuilds the encryption and encoding minor modes and `minor-mode-alist.'
-  ;; Allows user to alter variables used in building this alist. Called by
-  ;; `crypt-rebuild-tables' and so part of `after-init-hook'."
-
-  ;; First remove old crypt minor mode entries from `minor-mode-alist'.
-  (if (memq (car crypt-minor-mode-alist) minor-mode-alist)
-      (let ((alist crypt-minor-mode-alist) elt)
-        (while (and alist (setq elt (car alist)))
-          (setq minor-mode-alist (delq elt minor-mode-alist)
-                alist (cdr alist)))))
-
-  ;; Get new crypt minor mode entries and add to minor-mode-alist.
-  (setq crypt-minor-mode-alist (crypt-build-minor-mode-alist)
-        minor-mode-alist&