git-subtree-dir: emacs.d/use-package
git-subtree-split: a7422fb8ab
master
| @ -0,0 +1,5 @@ | |||
| /use-package.info | |||
| *~ | |||
| *.elc | |||
| /dir | |||
| /doc/content/* | |||
| @ -0,0 +1,47 @@ | |||
| language: generic | |||
| sudo: false | |||
| env: | |||
| global: | |||
| - CURL="curl -fsSkL --retry 9 --retry-delay 9" | |||
| matrix: | |||
| - EMACS_VERSION=26 | |||
| - EMACS_VERSION=25.3 | |||
| - EMACS_VERSION=24.5 | |||
| - EMACS_VERSION=24.4 | |||
| - EMACS_VERSION=24.3 | |||
| - EMACS_VERSION=master | |||
| install: | |||
| - $CURL -O https://github.com/npostavs/emacs-travis/releases/download/bins/emacs-bin-${EMACS_VERSION}.tar.gz | |||
| - tar xf emacs-bin-${EMACS_VERSION}.tar.gz -C / | |||
| - export EMACS=/tmp/emacs/bin/emacs | |||
| - $EMACS --version | |||
| dist: bionic | |||
| addons: | |||
| apt: | |||
| packages: | |||
| - texinfo | |||
| - libgnutls30 | |||
| script: | |||
| - make | |||
| - make test | |||
| - make info | |||
| before_deploy: cd doc && make doc | |||
| deploy: | |||
| provider: pages | |||
| skip_cleanup: true | |||
| github_token: $GITHUB_TOKEN | |||
| local_dir: doc/public | |||
| on: | |||
| branch: master | |||
| condition: $EMACS_VERSION = 26 | |||
| notifications: | |||
| webhooks: | |||
| urls: | |||
| - https://webhooks.gitter.im/e/848b93e13f8e6ab0cc86 | |||
| on_success: always | |||
| on_failure: always | |||
| on_start: always | |||
| email: | |||
| on_success: change | |||
| on_failure: always | |||
| on_start: never | |||
| @ -0,0 +1,674 @@ | |||
| GNU GENERAL PUBLIC LICENSE | |||
| Version 3, 29 June 2007 | |||
| Copyright (C) 2007 Free Software Foundation, Inc. <https://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 <https://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 | |||
| <https://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 | |||
| <https://www.gnu.org/licenses/why-not-lgpl.html>. | |||
| @ -0,0 +1,200 @@ | |||
| -include config.mk | |||
| include default.mk | |||
| ## ################################################################### | |||
| .PHONY: install install-lisp install-docs install-info \ | |||
| test test-interactive use-package \ | |||
| clean clean-lisp clean-docs clean-archives \ | |||
| stats bump-version melpa-post-release \ | |||
| dist use-package-$(VERSION).tar.gz | |||
| all: elc docs | |||
| help: | |||
| $(info ) | |||
| $(info Current version: use-package-$(VERSION)) | |||
| $(info ) | |||
| $(info See default.mk for variables you might want to set.) | |||
| $(info ) | |||
| $(info Build) | |||
| $(info =====) | |||
| $(info ) | |||
| $(info make [all] - compile elisp and documentation) | |||
| $(info make elc - compile elisp) | |||
| $(info make docs - generate info manuals) | |||
| $(info make info - generate info manuals) | |||
| $(info make html - generate html manual files) | |||
| $(info make html-dir - generate html manual directories) | |||
| $(info make pdf - generate pdf manuals) | |||
| $(info ) | |||
| $(info Install) | |||
| $(info =======) | |||
| $(info ) | |||
| $(info make install - install elisp and documentation) | |||
| $(info make install-lisp - install elisp) | |||
| $(info make install-docs - install all documentation) | |||
| $(info make install-info - install info manuals only) | |||
| $(info ) | |||
| $(info Clean) | |||
| $(info ====) | |||
| $(info ) | |||
| $(info make clean - clean elisp, documentation and tarball) | |||
| $(info make clean-lisp - clean elisp) | |||
| $(info make clean-docs - clean docs) | |||
| $(info make clean-archives - clean release tarball) | |||
| $(info make clean-all - clean everything except tracked texi) | |||
| $(info make clean-stats - clean stats) | |||
| $(info ) | |||
| $(info Test) | |||
| $(info ====) | |||
| $(info ) | |||
| $(info make test - run tests) | |||
| $(info make test-interactive - run tests interactively) | |||
| $(info make emacs-Q - run emacs -Q plus Use-Package) | |||
| $(info ) | |||
| $(info Release Management) | |||
| $(info ==================) | |||
| $(info ) | |||
| $(info make texi - regenerate texi from org) | |||
| $(info make stats - regenerate statistics) | |||
| $(info make authors - regenerate AUTHORS.md) | |||
| $(info make preview-stats - preview statistics) | |||
| $(info make publish-stats - publish statistics) | |||
| $(info make preview-manuals - preview manuals) | |||
| $(info make publish-manuals - publish manuals) | |||
| $(info make dist - create tarballs) | |||
| $(info make bump-versions - bump versions for release) | |||
| $(info make bump-snapshots - bump versions after release) | |||
| @printf "\n" | |||
| ## Build ############################################################# | |||
| elc: | |||
| @$(MAKE) -f Makefile.lisp lisp | |||
| docs: | |||
| @$(MAKE) -f Makefile.doc all | |||
| info: | |||
| @$(MAKE) -f Makefile.doc info | |||
| html: | |||
| @$(MAKE) -f Makefile.doc html | |||
| html-dir: | |||
| @$(MAKE) -f Makefile.doc html-dir | |||
| pdf: | |||
| @$(MAKE) -f Makefile.doc pdf | |||
| ## Install ########################################################### | |||
| install: install-lisp install-docs | |||
| install-lisp: | |||
| @$(MAKE) -f Makefile.lisp install | |||
| install-docs: docs | |||
| @$(MAKE) -f Makefile.doc install-docs | |||
| install-info: info | |||
| @$(MAKE) -f Makefile.doc install-info | |||
| ## Test ############################################################## | |||
| test: | |||
| @$(BATCH) --eval "(progn\ | |||
| (load-file \"use-package-tests.el\")\ | |||
| (ert-run-tests-batch-and-exit))" | |||
| test-interactive: | |||
| @$(EMACSBIN) -Q $(LOAD_PATH) --eval "(progn\ | |||
| (load-file \"use-package-tests.el\")\ | |||
| (ert t))" | |||
| emacs-Q: clean-lisp | |||
| @$(EMACSBIN) -Q $(LOAD_PATH) --debug-init --eval "(progn\ | |||
| (setq debug-on-error t)\ | |||
| (require 'use-package))" | |||
| ## Clean ############################################################# | |||
| clean: clean-lisp clean-docs clean-archives | |||
| @printf "Cleaning...\n" | |||
| @$(RM) *.elc $(ELGS) # temporary cleanup kludge | |||
| @$(RM) *.texi~ *.info* | |||
| clean-lisp: | |||
| @$(MAKE) -f Makefile.lisp clean | |||
| clean-docs: | |||
| @$(MAKE) -f Makefile.doc clean | |||
| clean-archives: | |||
| @$(RM) *.tar.gz *.tar | |||
| @$(RMDIR) use-package-$(VERSION) | |||
| clean-all: clean clean-stats | |||
| clean-stats: | |||
| @$(RMDIR) $(statsdir) | |||
| ## Release management ################################################ | |||
| texi: | |||
| @$(MAKE) -f Makefile.doc texi | |||
| stats: | |||
| @$(MAKE) -f Makefile.doc stats | |||
| authors: | |||
| @$(MAKE) -f Makefile.doc authors | |||
| preview-stats: | |||
| @$(MAKE) -f Makefile.doc preview-stats | |||
| publish-stats: | |||
| @$(MAKE) -f Makefile.doc publish-stats | |||
| preview-manuals: | |||
| @$(MAKE) -f Makefile.doc preview-manuals | |||
| publish-manuals: | |||
| @$(MAKE) -f Makefile.doc publish-manuals | |||
| dist: use-package-$(VERSION).tar.gz | |||
| DIST_ROOT_FILES = COPYING default.mk Makefile README.md | |||
| DIST_LISP_FILES = $(ELS) Makefile.lisp | |||
| DIST_DOCS_FILES = $(TEXIPAGES) AUTHORS.md Makefile.doc | |||
| use-package-$(VERSION).tar.gz: lisp info | |||
| @printf "Packing $@\n" | |||
| @$(MKDIR) use-package-$(VERSION) | |||
| @$(CP) $(DIST_ROOT_FILES) use-package-$(VERSION) | |||
| @$(TAR) cz --mtime=./use-package-$(VERSION) -f use-package-$(VERSION).tar.gz use-package-$(VERSION) | |||
| @$(RMDIR) use-package-$(VERSION) | |||
| define set_manual_version | |||
| (let ((version (split-string "$(USE_PACKAGE_VERSION)" "\\."))) | |||
| (setq version (concat (car version) "." (cadr version))) | |||
| (dolist (file (list "use-package")) | |||
| (with-current-buffer (find-file-noselect (format "%s.org" file)) | |||
| (goto-char (point-min)) | |||
| (re-search-forward "^#\\+SUBTITLE: for version ") | |||
| (delete-region (point) (line-end-position)) | |||
| (insert version) | |||
| (save-buffer)))) | |||
| endef | |||
| export set_manual_version | |||
| bump-versions: bump-versions-1 texi | |||
| bump-versions-1: | |||
| @$(BATCH) --eval "(progn\ | |||
| $$set_manual_version)" | |||
| bump-snapshots: | |||
| @$(BATCH) --eval "(progn\ | |||
| $$set_package_requires)" | |||
| git commit -a -m "Reset Package-Requires for Melpa" | |||
| @ -0,0 +1,167 @@ | |||
| # -*- Makefile -*- | |||
| -include config.mk | |||
| include default.mk | |||
| ## ################################################################### | |||
| .PHONY: texi install clean AUTHORS.md stats | |||
| all: info | |||
| ## Build ############################################################# | |||
| info: $(INFOPAGES) dir | |||
| html: $(HTMLFILES) | |||
| pdf: $(PDFFILES) | |||
| %.info: %.texi | |||
| @printf "Generating $@\n" | |||
| @$(MAKEINFO) --no-split $< -o $@ | |||
| dir: use-package.info | |||
| @printf "Generating dir\n" | |||
| @echo $^ | xargs -n 1 $(INSTALL_INFO) --dir=$@ | |||
| %.html: %.texi | |||
| @printf "Generating $@\n" | |||
| @$(MAKEINFO) --html --no-split $(MANUAL_HTML_ARGS) $< | |||
| html-dir: $(TEXIFILES) | |||
| @printf "Generating use-package/*.html\n" | |||
| @$(MAKEINFO) --html $(MANUAL_HTML_ARGS) use-package.texi | |||
| %.pdf: %.texi | |||
| @printf "Generating $@\n" | |||
| @texi2pdf --clean $< > /dev/null | |||
| ## Install ########################################################### | |||
| install: install-info install-docs | |||
| install-docs: install-info | |||
| @$(MKDIR) $(DESTDIR)$(docdir) | |||
| $(CP) AUTHORS.md $(DESTDIR)$(docdir) | |||
| install-info: info | |||
| @$(MKDIR) $(DESTDIR)$(infodir) | |||
| $(CP) $(INFOPAGES) $(DESTDIR)$(infodir) | |||
| ## Clean ############################################################# | |||
| clean: | |||
| @printf "Cleaning Documentation/*...\n" | |||
| @$(RMDIR) dir $(INFOPAGES) $(HTMLFILES) $(HTMLDIRS) $(PDFFILES) | |||
| ## Release management ################################################ | |||
| # Because most users don't have the necessary tools we cannot | |||
| # use "%.texi: %.org". Instead we have to hardcode each file | |||
| # using a shared target. | |||
| DOC_ARGS = --batch -Q $(DOC_LOAD_PATH) | |||
| DOC_ARGS += -l ox-extra -l org-man -l ox-texinfo+.el | |||
| DOC_EVAL = --eval "(ox-extras-activate '(ignore-headlines))" | |||
| DOC_EVAL += -f org-texinfo-export-to-texinfo | |||
| texi: | |||
| @printf "Generating use-package.texi\n" | |||
| @$(EMACSBIN) $(DOC_ARGS) use-package.org $(DOC_EVAL) | |||
| @echo >> use-package.texi | |||
| stats: | |||
| @printf "Generating statistics\n" | |||
| @gitstats -c style=/assets/stats.css -c max_authors=999 $(TOP) $(statsdir) | |||
| authors: AUTHORS.md | |||
| AUTHORS.md: | |||
| @printf "Generating AUTHORS.md..." | |||
| @test -e $(TOP).git \ | |||
| && (printf "$$AUTHORS_HEADER\n" > $@ \ | |||
| && git log --pretty=format:'- %aN <%aE>' | sort -u >> $@ \ | |||
| && printf "done\n" ; ) \ | |||
| || printf "FAILED (non-fatal)\n" | |||
| DOMAIN ?= use-package.vc | |||
| CFRONT_DIST ?= E2LUHBKU1FBV02 | |||
| PUBLISH_BUCKET ?= s3://$(DOMAIN) | |||
| PREVIEW_BUCKET ?= s3://preview.$(DOMAIN) | |||
| PUBLISH_URL ?= http://$(DOMAIN).s3-website.eu-central-1.amazonaws.com | |||
| PREVIEW_URL ?= http://preview.$(DOMAIN).s3-website.eu-central-1.amazonaws.com | |||
| preview-stats: stats | |||
| @printf "Uploading statistics...\n" | |||
| @aws s3 sync $(statsdir) $(PREVIEW_BUCKET)/stats/ | |||
| @aws cloudfront create-invalidation \ | |||
| --distribution-id $(CFRONT_DIST) --paths "/stats/*" | |||
| @printf "Uploaded to $(PREVIEW_URL)/stats/\n" | |||
| publish-stats: stats | |||
| @printf "Uploading statistics...\n" | |||
| @aws s3 sync $(statsdir) $(PUBLISH_BUCKET)/stats/ | |||
| @aws cloudfront create-invalidation \ | |||
| --distribution-id $(CFRONT_DIST) --paths "/stats/*" | |||
| @printf "Uploaded to $(PUBLISH_URL)/stats/\n" | |||
| preview-manuals: html html-dir pdf | |||
| @printf "Uploading manuals...\n" | |||
| @aws s3 sync use-package $(PREVIEW_BUCKET)/manual/use-package/ | |||
| @aws s3 cp use-package.html $(PREVIEW_BUCKET)/manual/ | |||
| @aws s3 cp use-package.pdf $(PREVIEW_BUCKET)/manual/ | |||
| @aws cloudfront create-invalidation \ | |||
| --distribution-id $(CFRONT_DIST) --paths "/manual/*" | |||
| @printf "Uploaded to $(PREVIEW_URL)/manual/\n" | |||
| publish-manuals: html html-dir pdf | |||
| @printf "Uploading manuals...\n" | |||
| @aws s3 sync use-package $(PUBLISH_BUCKET)/manual/use-package/ | |||
| @aws s3 cp use-package.html $(PUBLISH_BUCKET)/manual/ | |||
| @aws s3 cp use-package.pdf $(PUBLISH_BUCKET)/manual/ | |||
| @aws cloudfront create-invalidation \ | |||
| --distribution-id $(CFRONT_DIST) --paths "/manual/*" | |||
| @printf "Uploaded to $(PUBLISH_URL)/manual/\n" | |||
| # Templates ########################################################## | |||
| define AUTHORS_HEADER | |||
| Authors | |||
| ======= | |||
| The following people have contributed to Use-Package. | |||
| For statistics see https://magit.vc/stats/authors.html. | |||
| Names below are sorted alphabetically. | |||
| Author | |||
| ------ | |||
| - Marius Vollmer <marius.vollmer@gmail.com> | |||
| Maintainer | |||
| ---------- | |||
| - Jonas Bernoulli <jonas@bernoul.li> | |||
| Developers | |||
| ---------- | |||
| - Kyle Meyer <kyle@kyleam.com> | |||
| - Noam Postavsky <npostavs@users.sourceforge.net> | |||
| Retired Maintainers and Developers | |||
| ---------------------------------- | |||
| - Nicolas Dudebout <nicolas.dudebout@gatech.edu> | |||
| - Peter J. Weisberg <pj@irregularexpressions.net> | |||
| - Pieter Praet <pieter@praet.org> | |||
| - Phil Jackson <phil@shellarchive.co.uk> | |||
| - Rémi Vanicat <vanicat@debian.org> | |||
| - Yann Hodique <yann.hodique@gmail.com> | |||
| Contributors | |||
| ------------ | |||
| endef | |||
| export AUTHORS_HEADER | |||
| @ -0,0 +1,41 @@ | |||
| # -*- Makefile -*- | |||
| -include config.mk | |||
| include default.mk | |||
| ## ################################################################### | |||
| .PHONY: install | |||
| all: lisp | |||
| ## Build order ####################################################### | |||
| use-package.elc: bind-key.elc | |||
| ## Build ############################################################# | |||
| lisp: $(ELCS) | |||
| %.elc: %.el | |||
| @printf "Compiling $<\n" | |||
| -@$(BATCH) --eval "(progn\ | |||
| (when (file-exists-p \"$@\")\ | |||
| (delete-file \"$@\"))\ | |||
| (fset 'message* (symbol-function 'message))\ | |||
| (fset 'message (lambda (f &rest a)\ | |||
| (unless (equal f \"Wrote %s\")\ | |||
| (apply 'message* f a)))))" \ | |||
| -f batch-byte-compile $< | |||
| ## Install ########################################################### | |||
| install: lisp | |||
| @$(MKDIR) $(DESTDIR)$(lispdir) | |||
| $(CP) $(ELS) $(ELCS) $(DESTDIR)$(lispdir) | |||
| ## Clean ############################################################# | |||
| clean: | |||
| @printf "Cleaning lisp...\n" | |||
| $(RM) *.elc $(ELGS) | |||
| @ -0,0 +1,273 @@ | |||
| # Changes | |||
| ## 2.4.1 | |||
| This is mostly a bug-fix release: | |||
| - Update the documentation for :custom as per #850 | |||
| - Fix broken test due to #850 | |||
| - better tests | |||
| - add test for #845 | |||
| - Support keymap symbol in bind-key. Fix #845 | |||
| - use-package-core.el: use the Emacs set-default function to avoid saving :custom vars twice | |||
| - Fix Travis | |||
| - typo, should be a vector, not a bytecode object | |||
| Solves https://github.com/jwiegley/use-package/issues/842 | |||
| - Add special value back again, in case needed for backwards compat | |||
| I don't know why this special value exists, but perhaps old client code uses it. | |||
| The additional `t' in the macro expansion is accidental but not harmful I guess. | |||
| - Even when there's no :config, run any pre/post config hooks | |||
| i.e., following the existing docs for use-package-inject-hooks, these hooks are | |||
| run: | |||
| use-package--foo--pre-config-hook | |||
| use-package--foo--post-config-hook | |||
| This should make config customisations more predictable (for example, spacemacs | |||
| uses these hooks extensively to allow 'layers' to be customised). | |||
| I got rid of the "special" default value for :config, because it doesn't seem to | |||
| be treated any differently than nil. | |||
| Fixes #785 | |||
| - Clarify the documentation for :after | |||
| - add table of contents to README | |||
| - Fix typos | |||
| Typos found with codespell. | |||
| - Fix typos | |||
| - Attempt to explain omit "-hook" better | |||
| - Update tests | |||
| - Switch from `require' to `load' + `featurep' | |||
| - Use `require', not `load', when byte-compiling | |||
| - Make custom-face evaluate elisp. | |||
| Fix #696. | |||
| - Add a line of documentation for (use-pacakage ... :hook). | |||
| - Fix typo in README | |||
| - Fix documentation for defer | |||
| - Add no-query option for pdf-tools-install | |||
| - Fix typo in README | |||
| - Fix all notes in README | |||
| - Mention use-package-ensure in README | |||
| Without requiring `use-package-ensure`, setting `use-package-always-ensure` | |||
| did not actually work for me. | |||
| ## 2.4 | |||
| ### Breaking changes | |||
| - `use-package` no longer requires `diminish` as a dependency, allowing people | |||
| to decide whether they want to use diminish or delight. This means that if | |||
| you do use diminish, you'll now need to pull it into your configuration | |||
| before any use of the `:diminish` kewyord. For example: | |||
| ``` elisp | |||
| (use-package diminish :ensure t) | |||
| ``` | |||
| - Emacs 24.3 or higher is now a requirement. | |||
| - The `:defer-install` keyword has been removed. It may reappear as an add-on | |||
| module for use-package in a future release. See issue #442 for more details. | |||
| - There is no longer a `use-package-debug` option, since `use-package-verbose` | |||
| already has the possible value of `debug`. | |||
| - The ordering of several elements of `use-package-keywords` have changed; if | |||
| you had previously customized this (or were an extension author adding to | |||
| this list), you may need to rework your changes. | |||
| - For extension authors, `:commands` should no longer be propagated down for | |||
| autoloading. See more below. | |||
| ### Other changes | |||
| - Upgrade license to GPL 3. | |||
| - If `use-package-verbose` is set to the symbol `debug`, any evaluation errors | |||
| during package configuration will cause a complete report to be written to a | |||
| `*use-package*` buffer, including: the text of the error, the `use-package` | |||
| declaration that caused the error, the post-normalized form of this | |||
| declaration, and the macro-expanded version (without verbosity-related | |||
| code). Note that this still does not help if there are parsing errors, which | |||
| cause Emacs to register a Lisp error at startup time. | |||
| - New customization variable `use-package-deferring-keywords`, mainly intended | |||
| for use by extension packages, indicates keywords that, if used without | |||
| `:demand`, cause deferred loading (as if `:defer t` had been specified). | |||
| - The `:ensure` keyword now accepts a specific pinning sub-keyword. For | |||
| example: | |||
| ``` elisp | |||
| (use-package foo | |||
| :pin "elpa") | |||
| ``` | |||
| This ensure the package `foo` is installed from `"elpa"`. | |||
| ``` elisp | |||
| (use-package foo | |||
| :ensure bar | |||
| :ensure (quux :pin "melpa")) | |||
| ``` | |||
| This says that `foo` ensures that `bar` is installed, as well as `quux` from | |||
| `"melpa"`. It does *not* ensure that `foo` is installed, because explicit | |||
| `:ensure` keywords were given. | |||
| - New `:hook` keyword. | |||
| - New `:catch` keyword. If `t` or `nil`, it enables (the default, see | |||
| `use-package-defaults`) or disables catching errors at load time in | |||
| use-package expansions. It can also be a function taking two arguments: the | |||
| keyword being processed at the time the error was encountered, and the error | |||
| object (as generated by `condition-case`). | |||
| - New keywords `:custom (foo1 bar1) (foo2 bar2)` etc., and `:custom-face`. | |||
| NOTE: These are only for people who wish to keep customizations with their | |||
| accompanying use-package declarations. Functionally, the only benefit over | |||
| using `setq` in a `:config` block is that customizations might execute code | |||
| when values are assigned. If you currently use `M-x customize-option` and | |||
| save to a settings file, you do not want to use this option. | |||
| - New `:magic` and `:magic-fallback` keywords. | |||
| - New `:defer-install` keyword. | |||
| - New customization variable `use-package-enable-imenu-support`. | |||
| - New customization variable `use-package-hook-name-suffix`. Any symbols named | |||
| in `:hook`, or in the CAR of cons cells passed to `:hook`, have this text | |||
| appended to them as a convenience. If you find yourself using this keyword | |||
| to add to hooks of different names, or just don't want such appending done, | |||
| you can change the text to an empty string. | |||
| - New customization variable `use-package-compute-statistics`, and an | |||
| accompanying command `M-x use-package-report`. See the README for more | |||
| details. | |||
| - Allow `:diminish` to take no arguments. | |||
| - Support multiple symbols passed to `:after`, and a mini-DSL using `:all` and | |||
| `:any`. | |||
| - `:mode` and `:interpreter` can now accept `(rx ...)` forms. | |||
| - Using `:load-path` without also using `:ensure` now implies `:ensure nil`. | |||
| - `:bind (:map foo-map ...)` now defers binding in the map until the package | |||
| has been loaded. | |||
| - Print key bindings for keymaps in `describe-personal-keybindings`. | |||
| - When `use-package-inject-hooks` is non-nil, always fire `:init` and | |||
| `:config` hooks. | |||
| - Documentation added for the `:after`, `:defer-install`, `:delight`, | |||
| `:requires`, `:when` and `:unless` keywords. | |||
| - `:requires SYM` is subtly different from `:if (featurep SYM)`, in that it | |||
| happens before the `:preface`. This means that using `:requires` will cause | |||
| definitions in the `:preface` to not be visible to the byte-compiler, | |||
| leading to possible warnings about unknown functions, or functions that may | |||
| not be available at run-time (which can generally be ignored, since | |||
| `:requires` is intended as a check for basic system functionality; `:after` | |||
| should be used to check for the presence of other modules). | |||
| - New undocumented (and currently experimental) keyword `:load` may be used to | |||
| change the name of the actual package loaded, rather than the package name, | |||
| and may even add other names. For example: `(use-package auctex :load | |||
| tex-site)`. This keyword is used internally to generate the `require` for a | |||
| package, so that deferral is simply a matter of not generating this keyword. | |||
| - The source code is now broken into several files, so that certain optional | |||
| features (diminish, delight, ensure) may be maintained separately from the | |||
| core functionality. | |||
| - When using the `:after` keyword, now even autoloadeds keybinding are | |||
| deferred until after that other package has loaded, in order to allow | |||
| convenient `:bind` to maps only present in that other package. Consider the | |||
| following: | |||
| ``` elisp | |||
| (use-package helm-descbinds | |||
| :load-path "site-lisp/helm-descbinds" | |||
| :after helm | |||
| :bind ("C-h b" . helm-descbinds) | |||
| :init | |||
| (fset 'describe-bindings 'helm-descbinds)) | |||
| ``` | |||
| The binding of `C-h b` here will not occur until helm is loaded; and after | |||
| it is loaded, `helm-descbinds` itself is not loaded until the user presses | |||
| `C-h b`. | |||
| - For extension authors, if you add a keyword to `use-package-keywords` whose | |||
| presence should indicate deferred loading, please also add it to | |||
| `use-package-deferring-keywords`. Note that this is a bit of a sledgehammer, | |||
| in that the mere presence of these keywords implies deferred loading. For a | |||
| more subtle approach, see the new `use-package-autoloads/<KEYWORD>` support | |||
| mentioned in the next bullet. | |||
| - For extension authors, if you wish deferred loading to possibly occur, | |||
| create functions named `use-package-autoloads/<KEYWORD>` for each keyword | |||
| that you define, returning an alist of the form `(SYMBOL . TYPE)` of symbols | |||
| to be autoloaded. `SYMBOL` should be an interactive function, and `TYPE` the | |||
| smybol `command`, but this functionality may be extended in future. These | |||
| autoloads are established if deferred loading is to happen. | |||
| - If you specify a lambda form rather than a function symbol in any of the | |||
| constructs that *might* introduce autoloads: `:bind`, `:bind*`, | |||
| `:interpreter`, `:mode`, `:magic`, `:magic-fallback`, and `:hook`: then | |||
| deferred loading will no longer be implied, since there's nothing to | |||
| associate an autoload with that could later load the module. In these cases, | |||
| it will be as if you'd specified `:demand t`, in order to ensure the lambda | |||
| form is able to execute in the context of the loaded package. | |||
| - For extension authors, there is a new customization variable | |||
| `use-package-merge-key-alist` that specifies how values passed to multiple | |||
| occurrences of the same key should be merged into a single value, during | |||
| normalization of the `use-package` declaration into a proper plist. The | |||
| default behavior is to simply append the values together (since they are | |||
| always normalized to lists). | |||
| ### Bug fixes | |||
| - Repeating a bind no longer causes duplicates in personal-keybindings. | |||
| - When byte-compiling, correctly output declare-function directives. | |||
| - Append to *use-package* when debugging, don't clear it. | |||
| - Don't allow :commands, :bind, etc., to be given an empty list. | |||
| - Explicit :defer t should override use-package-always-demand. | |||
| @ -0,0 +1,62 @@ | |||
| ;;; bind-chord.el --- key-chord binding helper for use-package-chords | |||
| ;; Copyright (C) 2015-2017 Justin Talbott | |||
| ;; Author: Justin Talbott <justin@waymondo.com> | |||
| ;; Keywords: convenience, tools, extensions | |||
| ;; URL: https://github.com/waymondo/use-package-chords | |||
| ;; Version: 0.2 | |||
| ;; Package-Requires: ((bind-key "1.0") (key-chord "0.6")) | |||
| ;; Filename: bind-chord.el | |||
| ;; License: GNU General Public License version 3, or (at your option) any later version | |||
| ;; | |||
| ;;; Commentary: | |||
| ;; | |||
| ;;; Code: | |||
| (require 'bind-key) | |||
| (require 'key-chord nil t) | |||
| ;;;###autoload | |||
| (defmacro bind-chord (chord command &optional keymap) | |||
| "Bind CHORD to COMMAND in KEYMAP (`global-map' if not passed)." | |||
| (let ((key1 (logand 255 (aref chord 0))) | |||
| (key2 (logand 255 (aref chord 1)))) | |||
| (if (eq key1 key2) | |||
| `(bind-key (vector 'key-chord ,key1 ,key2) ,command ,keymap) | |||
| `(progn | |||
| (bind-key (vector 'key-chord ,key1 ,key2) ,command ,keymap) | |||
| (bind-key (vector 'key-chord ,key2 ,key1) ,command ,keymap))))) | |||
| ;;;###autoload | |||
| (defmacro bind-chords (&rest args) | |||
| "Bind multiple chords at once. | |||
| Accepts keyword argument: | |||
| :map - a keymap into which the keybindings should be added | |||
| The rest of the arguments are conses of keybinding string and a | |||
| function symbol (unquoted)." | |||
| (let* ((map (plist-get args :map)) | |||
| (maps (if (listp map) map (list map))) | |||
| (key-bindings (progn | |||
| (while (keywordp (car args)) | |||
| (pop args) | |||
| (pop args)) | |||
| args))) | |||
| (macroexp-progn | |||
| (apply | |||
| #'nconc | |||
| (mapcar (lambda (form) | |||
| (if maps | |||
| (mapcar | |||
| #'(lambda (m) | |||
| `(bind-chord ,(car form) ',(cdr form) ,m)) maps) | |||
| `((bind-chord ,(car form) ',(cdr form))))) | |||
| key-bindings))))) | |||
| (provide 'bind-chord) | |||
| ;;; bind-chord.el ends here | |||
| @ -0,0 +1,490 @@ | |||
| ;;; bind-key.el --- A simple way to manage personal keybindings | |||
| ;; Copyright (c) 2012-2017 John Wiegley | |||
| ;; Author: John Wiegley <johnw@newartisans.com> | |||
| ;; Maintainer: John Wiegley <johnw@newartisans.com> | |||
| ;; Created: 16 Jun 2012 | |||
| ;; Modified: 29 Nov 2017 | |||
| ;; Version: 2.4 | |||
| ;; Keywords: keys keybinding config dotemacs | |||
| ;; URL: https://github.com/jwiegley/use-package | |||
| ;; 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, 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 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: | |||
| ;; If you have lots of keybindings set in your .emacs file, it can be hard to | |||
| ;; know which ones you haven't set yet, and which may now be overriding some | |||
| ;; new default in a new emacs version. This module aims to solve that | |||
| ;; problem. | |||
| ;; | |||
| ;; Bind keys as follows in your .emacs: | |||
| ;; | |||
| ;; (require 'bind-key) | |||
| ;; | |||
| ;; (bind-key "C-c x" 'my-ctrl-c-x-command) | |||
| ;; | |||
| ;; If the keybinding argument is a vector, it is passed straight to | |||
| ;; `define-key', so remapping a key with `[remap COMMAND]' works as | |||
| ;; expected: | |||
| ;; | |||
| ;; (bind-key [remap original-ctrl-c-x-command] 'my-ctrl-c-x-command) | |||
| ;; | |||
| ;; If you want the keybinding to override all minor modes that may also bind | |||
| ;; the same key, use the `bind-key*' form: | |||
| ;; | |||
| ;; (bind-key* "<C-return>" 'other-window) | |||
| ;; | |||
| ;; If you want to rebind a key only in a particular keymap, use: | |||
| ;; | |||
| ;; (bind-key "C-c x" 'my-ctrl-c-x-command some-other-mode-map) | |||
| ;; | |||
| ;; To unbind a key within a keymap (for example, to stop your favorite major | |||
| ;; mode from changing a binding that you don't want to override everywhere), | |||
| ;; use `unbind-key': | |||
| ;; | |||
| ;; (unbind-key "C-c x" some-other-mode-map) | |||
| ;; | |||
| ;; To bind multiple keys at once, or set up a prefix map, a `bind-keys' macro | |||
| ;; is provided. It accepts keyword arguments, please see its documentation | |||
| ;; for a detailed description. | |||
| ;; | |||
| ;; To add keys into a specific map, use :map argument | |||
| ;; | |||
| ;; (bind-keys :map dired-mode-map | |||
| ;; ("o" . dired-omit-mode) | |||
| ;; ("a" . some-custom-dired-function)) | |||
| ;; | |||
| ;; To set up a prefix map, use `:prefix-map' and `:prefix' arguments (both are | |||
| ;; required) | |||
| ;; | |||
| ;; (bind-keys :prefix-map my-customize-prefix-map | |||
| ;; :prefix "C-c c" | |||
| ;; ("f" . customize-face) | |||
| ;; ("v" . customize-variable)) | |||
| ;; | |||
| ;; You can combine all the keywords together. Additionally, | |||
| ;; `:prefix-docstring' can be specified to set documentation of created | |||
| ;; `:prefix-map' variable. | |||
| ;; | |||
| ;; To bind multiple keys in a `bind-key*' way (to be sure that your bindings | |||
| ;; will not be overridden by other modes), you may use `bind-keys*' macro: | |||
| ;; | |||
| ;; (bind-keys* | |||
| ;; ("C-o" . other-window) | |||
| ;; ("C-M-n" . forward-page) | |||
| ;; ("C-M-p" . backward-page)) | |||
| ;; | |||
| ;; After Emacs loads, you can see a summary of all your personal keybindings | |||
| ;; currently in effect with this command: | |||
| ;; | |||
| ;; M-x describe-personal-keybindings | |||
| ;; | |||
| ;; This display will tell you if you've overridden a default keybinding, and | |||
| ;; what the default was. Also, it will tell you if the key was rebound after | |||
| ;; your binding it with `bind-key', and what it was rebound it to. | |||
| ;;; Code: | |||
| (require 'cl-lib) | |||
| (require 'easy-mmode) | |||
| (defgroup bind-key nil | |||
| "A simple way to manage personal keybindings" | |||
| :group 'emacs) | |||
| (defcustom bind-key-column-widths '(18 . 40) | |||
| "Width of columns in `describe-personal-keybindings'." | |||
| :type '(cons integer integer) | |||
| :group 'bind-key) | |||
| (defcustom bind-key-segregation-regexp | |||
| "\\`\\(\\(C-[chx] \\|M-[gso] \\)\\([CM]-\\)?\\|.+-\\)" | |||
| "Regular expression used to divide key sets in the output from | |||
| \\[describe-personal-keybindings]." | |||
| :type 'regexp | |||
| :group 'bind-key) | |||
| (defcustom bind-key-describe-special-forms nil | |||
| "If non-nil, extract docstrings from lambdas, closures and keymaps if possible." | |||
| :type 'boolean | |||
| :group 'bind-key) | |||
| ;; Create override-global-mode to force key remappings | |||
| (defvar override-global-map (make-keymap) | |||
| "override-global-mode keymap") | |||
| (define-minor-mode override-global-mode | |||
| "A minor mode so that keymap settings override other modes." | |||
| t "") | |||
| ;; the keymaps in `emulation-mode-map-alists' take precedence over | |||
| ;; `minor-mode-map-alist' | |||
| (add-to-list 'emulation-mode-map-alists | |||
| `((override-global-mode . ,override-global-map))) | |||
| (defvar personal-keybindings nil | |||
| "List of bindings performed by `bind-key'. | |||
| Elements have the form ((KEY . [MAP]) CMD ORIGINAL-CMD)") | |||
| ;;;###autoload | |||
| (defmacro bind-key (key-name command &optional keymap predicate) | |||
| "Bind KEY-NAME to COMMAND in KEYMAP (`global-map' if not passed). | |||
| KEY-NAME may be a vector, in which case it is passed straight to | |||
| `define-key'. Or it may be a string to be interpreted as | |||
| spelled-out keystrokes, e.g., \"C-c C-z\". See documentation of | |||
| `edmacro-mode' for details. | |||
| COMMAND must be an interactive function or lambda form. | |||
| KEYMAP, if present, should be a keymap variable or symbol. | |||
| For example: | |||
| (bind-key \"M-h\" #'some-interactive-function my-mode-map) | |||
| (bind-key \"M-h\" #'some-interactive-function 'my-mode-map) | |||
| If PREDICATE is non-nil, it is a form evaluated to determine when | |||
| a key should be bound. It must return non-nil in such cases. | |||
| Emacs can evaluate this form at any time that it does redisplay | |||
| or operates on menu data structures, so you should write it so it | |||
| can safely be called at any time." | |||
| (let ((namevar (make-symbol "name")) | |||
| (keyvar (make-symbol "key")) | |||
| (kmapvar (make-symbol "kmap")) | |||
| (kdescvar (make-symbol "kdesc")) | |||
| (bindingvar (make-symbol "binding"))) | |||
| `(let* ((,namevar ,key-name) | |||
| (,keyvar (if (vectorp ,namevar) ,namevar | |||
| (read-kbd-macro ,namevar))) | |||
| (,kmapvar (or (if (and ,keymap (symbolp ,keymap)) | |||
| (symbol-value ,keymap) ,keymap) | |||
| global-map)) | |||
| (,kdescvar (cons (if (stringp ,namevar) ,namevar | |||
| (key-description ,namevar)) | |||
| (if (symbolp ,keymap) ,keymap (quote ,keymap)))) | |||
| (,bindingvar (lookup-key ,kmapvar ,keyvar))) | |||
| (let ((entry (assoc ,kdescvar personal-keybindings)) | |||
| (details (list ,command | |||
| (unless (numberp ,bindingvar) | |||
| ,bindingvar)))) | |||
| (if entry | |||
| (setcdr entry details) | |||
| (add-to-list 'personal-keybindings (cons ,kdescvar details)))) | |||
| ,(if predicate | |||
| `(define-key ,kmapvar ,keyvar | |||
| '(menu-item "" nil :filter (lambda (&optional _) | |||
| (when ,predicate | |||
| ,command)))) | |||
| `(define-key ,kmapvar ,keyvar ,command))))) | |||
| ;;;###autoload | |||
| (defmacro unbind-key (key-name &optional keymap) | |||
| "Unbind the given KEY-NAME, within the KEYMAP (if specified). | |||
| See `bind-key' for more details." | |||
| (let ((namevar (make-symbol "name")) | |||
| (kdescvar (make-symbol "kdesc"))) | |||
| `(let* ((,namevar ,key-name) | |||
| (,kdescvar (cons (if (stringp ,namevar) ,namevar | |||
| (key-description ,namevar)) | |||
| (if (symbolp ,keymap) ,keymap (quote ,keymap))))) | |||
| (bind-key--remove (if (vectorp ,namevar) ,namevar | |||
| (read-kbd-macro ,namevar)) | |||
| (or (if (and ,keymap (symbolp ,keymap)) | |||
| (symbol-value ,keymap) ,keymap) | |||
| global-map)) | |||
| (setq personal-keybindings | |||
| (cl-delete-if (lambda (k) (equal (car k) ,kdescvar)) | |||
| personal-keybindings)) | |||
| nil))) | |||
| (defun bind-key--remove (key keymap) | |||
| "Remove KEY from KEYMAP. | |||
| In contrast to `define-key', this function removes the binding from the keymap." | |||
| (define-key keymap key nil) | |||
| ;; Split M-key in ESC key | |||
| (setq key (mapcan (lambda (k) | |||
| (if (and (integerp k) (/= (logand k ?\M-\0) 0)) | |||
| (list ?\e (logxor k ?\M-\0)) | |||
| (list k))) | |||
| key)) | |||
| ;; Delete single keys directly | |||
| (if (= (length key) 1) | |||
| (delete key keymap) | |||
| ;; Lookup submap and delete key from there | |||
| (let* ((prefix (vconcat (butlast key))) | |||
| (submap (lookup-key keymap prefix))) | |||
| (unless (keymapp submap) | |||
| (error "Not a keymap for %s" key)) | |||
| (when (symbolp submap) | |||
| (setq submap (symbol-function submap))) | |||
| (delete (last key) submap) | |||
| ;; Delete submap if it is empty | |||
| (when (= 1 (length submap)) | |||
| (bind-key--remove prefix keymap))))) | |||
| ;;;###autoload | |||
| (defmacro bind-key* (key-name command &optional predicate) | |||
| "Similar to `bind-key', but overrides any mode-specific bindings." | |||
| `(bind-key ,key-name ,command override-global-map ,predicate)) | |||
| (defun bind-keys-form (args keymap) | |||
| "Bind multiple keys at once. | |||
| Accepts keyword arguments: | |||
| :map MAP - a keymap into which the keybindings should be | |||
| added | |||
| :prefix KEY - prefix key for these bindings | |||
| :prefix-map MAP - name of the prefix map that should be created | |||
| for these bindings | |||
| :prefix-docstring STR - docstring for the prefix-map variable | |||
| :menu-name NAME - optional menu string for prefix map | |||
| :filter FORM - optional form to determine when bindings apply | |||
| The rest of the arguments are conses of keybinding string and a | |||
| function symbol (unquoted)." | |||
| (let (map | |||
| doc | |||
| prefix-map | |||
| prefix | |||
| filter | |||
| menu-name | |||
| pkg) | |||
| ;; Process any initial keyword arguments | |||
| (let ((cont t)) | |||
| (while (and cont args) | |||
| (if (cond ((and (eq :map (car args)) | |||
| (not prefix-map)) | |||
| (setq map (cadr args))) | |||
| ((eq :prefix-docstring (car args)) | |||
| (setq doc (cadr args))) | |||
| ((and (eq :prefix-map (car args)) | |||
| (not (memq map '(global-map | |||
| override-global-map)))) | |||
| (setq prefix-map (cadr args))) | |||
| ((eq :prefix (car args)) | |||
| (setq prefix (cadr args))) | |||
| ((eq :filter (car args)) | |||
| (setq filter (cadr args)) t) | |||
| ((eq :menu-name (car args)) | |||
| (setq menu-name (cadr args))) | |||
| ((eq :package (car args)) | |||
| (setq pkg (cadr args)))) | |||
| (setq args (cddr args)) | |||
| (setq cont nil)))) | |||
| (when (or (and prefix-map (not prefix)) | |||
| (and prefix (not prefix-map))) | |||
| (error "Both :prefix-map and :prefix must be supplied")) | |||
| (when (and menu-name (not prefix)) | |||
| (error "If :menu-name is supplied, :prefix must be too")) | |||
| (unless map (setq map keymap)) | |||
| ;; Process key binding arguments | |||
| (let (first next) | |||
| (while args | |||
| (if (keywordp (car args)) | |||
| (progn | |||
| (setq next args) | |||
| (setq args nil)) | |||
| (if first | |||
| (nconc first (list (car args))) | |||
| (setq first (list (car args)))) | |||
| (setq args (cdr args)))) | |||
| (cl-flet | |||
| ((wrap (map bindings) | |||
| (if (and map pkg (not (memq map '(global-map | |||
| override-global-map)))) | |||
| `((if (boundp ',map) | |||
| ,(macroexp-progn bindings) | |||
| (eval-after-load | |||
| ,(if (symbolp pkg) `',pkg pkg) | |||
| ',(macroexp-progn bindings)))) | |||
| bindings))) | |||
| (append | |||
| (when prefix-map | |||
| `((defvar ,prefix-map) | |||
| ,@(when doc `((put ',prefix-map 'variable-documentation ,doc))) | |||
| ,@(if menu-name | |||
| `((define-prefix-command ',prefix-map nil ,menu-name)) | |||
| `((define-prefix-command ',prefix-map))) | |||
| ,@(if (and map (not (eq map 'global-map))) | |||
| (wrap map `((bind-key ,prefix ',prefix-map ,map ,filter))) | |||
| `((bind-key ,prefix ',prefix-map nil ,filter))))) | |||
| (wrap map | |||
| (cl-mapcan | |||
| (lambda (form) | |||
| (let ((fun (and (cdr form) (list 'function (cdr form))))) | |||
| (if prefix-map | |||
| `((bind-key ,(car form) ,fun ,prefix-map ,filter)) | |||
| (if (and map (not (eq map 'global-map))) | |||
| `((bind-key ,(car form) ,fun ,map ,filter)) | |||
| `((bind-key ,(car form) ,fun nil ,filter)))))) | |||
| first)) | |||
| (when next | |||
| (bind-keys-form (if pkg | |||
| (cons :package (cons pkg next)) | |||
| next) map))))))) | |||
| ;;;###autoload | |||
| (defmacro bind-keys (&rest args) | |||
| "Bind multiple keys at once. | |||
| Accepts keyword arguments: | |||
| :map MAP - a keymap into which the keybindings should be | |||
| added | |||
| :prefix KEY - prefix key for these bindings | |||
| :prefix-map MAP - name of the prefix map that should be created | |||
| for these bindings | |||
| :prefix-docstring STR - docstring for the prefix-map variable | |||
| :menu-name NAME - optional menu string for prefix map | |||
| :filter FORM - optional form to determine when bindings apply | |||
| The rest of the arguments are conses of keybinding string and a | |||
| function symbol (unquoted)." | |||
| (macroexp-progn (bind-keys-form args nil))) | |||
| ;;;###autoload | |||
| (defmacro bind-keys* (&rest args) | |||
| (macroexp-progn (bind-keys-form args 'override-global-map))) | |||
| (defun get-binding-description (elem) | |||
| (cond | |||
| ((listp elem) | |||
| (cond | |||
| ((memq (car elem) '(lambda function)) | |||
| (if (and bind-key-describe-special-forms | |||
| (stringp (nth 2 elem))) | |||
| (nth 2 elem) | |||
| "#<lambda>")) | |||
| ((eq 'closure (car elem)) | |||
| (if (and bind-key-describe-special-forms | |||
| (stringp (nth 3 elem))) | |||
| (nth 3 elem) | |||
| "#<closure>")) | |||
| ((eq 'keymap (car elem)) | |||
| "#<keymap>") | |||
| (t | |||
| elem))) | |||
| ;; must be a symbol, non-symbol keymap case covered above | |||
| ((and bind-key-describe-special-forms (keymapp elem)) | |||
| (let ((doc (get elem 'variable-documentation))) | |||
| (if (stringp doc) doc elem))) | |||
| ((symbolp elem) | |||
| elem) | |||
| (t | |||
| "#<byte-compiled lambda>"))) | |||
| (defun compare-keybindings (l r) | |||
| (let* ((regex bind-key-segregation-regexp) | |||
| (lgroup (and (string-match regex (caar l)) | |||
| (match-string 0 (caar l)))) | |||
| (rgroup (and (string-match regex (caar r)) | |||
| (match-string 0 (caar r)))) | |||
| (lkeymap (cdar l)) | |||
| (rkeymap (cdar r))) | |||
| (cond | |||
| ((and (null lkeymap) rkeymap) | |||
| (cons t t)) | |||
| ((and lkeymap (null rkeymap)) | |||
| (cons nil t)) | |||
| ((and lkeymap rkeymap | |||
| (not (string= (symbol-name lkeymap) (symbol-name rkeymap)))) | |||
| (cons (string< (symbol-name lkeymap) (symbol-name rkeymap)) t)) | |||
| ((and (null lgroup) rgroup) | |||
| (cons t t)) | |||
| ((and lgroup (null rgroup)) | |||
| (cons nil t)) | |||
| ((and lgroup rgroup) | |||
| (if (string= lgroup rgroup) | |||
| (cons (string< (caar l) (caar r)) nil) | |||
| (cons (string< lgroup rgroup) t))) | |||
| (t | |||
| (cons (string< (caar l) (caar r)) nil))))) | |||
| ;;;###autoload | |||
| (defun describe-personal-keybindings () | |||
| "Display all the personal keybindings defined by `bind-key'." | |||
| (interactive) | |||
| (with-output-to-temp-buffer "*Personal Keybindings*" | |||
| (princ (format (concat "Key name%s Command%s Comments\n%s %s " | |||
| "---------------------\n") | |||
| (make-string (- (car bind-key-column-widths) 9) ? ) | |||
| (make-string (- (cdr bind-key-column-widths) 8) ? ) | |||
| (make-string (1- (car bind-key-column-widths)) ?-) | |||
| (make-string (1- (cdr bind-key-column-widths)) ?-))) | |||
| (let (last-binding) | |||
| (dolist (binding | |||
| (setq personal-keybindings | |||
| (sort personal-keybindings | |||
| (lambda (l r) | |||
| (car (compare-keybindings l r)))))) | |||
| (if (not (eq (cdar last-binding) (cdar binding))) | |||
| (princ (format "\n\n%s: %s\n%s\n\n" | |||
| (cdar binding) (caar binding) | |||
| (make-string (+ 21 (car bind-key-column-widths) | |||
| (cdr bind-key-column-widths)) ?-))) | |||
| (if (and last-binding | |||
| (cdr (compare-keybindings last-binding binding))) | |||
| (princ "\n"))) | |||
| (let* ((key-name (caar binding)) | |||
| (at-present (lookup-key (or (symbol-value (cdar binding)) | |||
| (current-global-map)) | |||
| (read-kbd-macro key-name))) | |||
| (command (nth 1 binding)) | |||
| (was-command (nth 2 binding)) | |||
| (command-desc (get-binding-description command)) | |||
| (was-command-desc (and was-command | |||
| (get-binding-description was-command))) | |||
| (at-present-desc (get-binding-description at-present)) | |||
| ) | |||
| (let ((line | |||
| (format | |||
| (format "%%-%ds%%-%ds%%s\n" (car bind-key-column-widths) | |||
| (cdr bind-key-column-widths)) | |||
| key-name (format "`%s\'" command-desc) | |||
| (if (string= command-desc at-present-desc) | |||
| (if (or (null was-command) | |||
| (string= command-desc was-command-desc)) | |||
| "" | |||
| (format "was `%s\'" was-command-desc)) | |||
| (format "[now: `%s\']" at-present))))) | |||
| (princ (if (string-match "[ \t]+\n" line) | |||
| (replace-match "\n" t t line) | |||
| line)))) | |||
| (setq last-binding binding))))) | |||
| (provide 'bind-key) | |||
| ;; Local Variables: | |||
| ;; outline-regexp: ";;;\\(;* [^\s\t\n]\\|###autoload\\)\\|(" | |||
| ;; indent-tabs-mode: nil | |||
| ;; End: | |||
| ;;; bind-key.el ends here | |||
| @ -0,0 +1,96 @@ | |||
| TOP := $(dir $(lastword $(MAKEFILE_LIST))) | |||
| ## User options ###################################################### | |||
| # | |||
| # You can override these settings in "config.mk" or on the command | |||
| # line. | |||
| # | |||
| # You might also want to set LOAD_PATH. If you do, then it must | |||
| # contain "-L .". | |||
| # | |||
| # If you don't do so, then the default is set in the "Load-Path" | |||
| # section below. The default assumes that all dependencies are | |||
| # installed either at "../<DEPENDENCY>", or when using package.el | |||
| # at "ELPA_DIR/<DEPENDENCY>-<HIGHEST-VERSION>". | |||
| PREFIX ?= /usr/local | |||
| sharedir ?= $(PREFIX)/share | |||
| lispdir ?= $(sharedir)/emacs/site-lisp/use-package | |||
| infodir ?= $(sharedir)/info | |||
| docdir ?= $(sharedir)/doc/use-package | |||
| statsdir ?= $(TOP)/stats | |||
| CP ?= install -p -m 644 | |||
| MKDIR ?= install -p -m 755 -d | |||
| RMDIR ?= rm -rf | |||
| TAR ?= tar | |||
| SED ?= sed | |||
| EMACS ?= emacs | |||
| EMACSBIN ?= $(EMACS) | |||
| BATCH = $(EMACSBIN) -Q --batch $(LOAD_PATH) | |||
| INSTALL_INFO ?= $(shell command -v ginstall-info || printf install-info) | |||
| MAKEINFO ?= makeinfo | |||
| MANUAL_HTML_ARGS ?= --css-ref /assets/page.css | |||
| ## Files ############################################################# | |||
| PKG = use-package | |||
| PACKAGES = use-package | |||
| TEXIPAGES = $(addsuffix .texi,$(filter-out git-commit,$(PACKAGES))) | |||
| INFOPAGES = $(addsuffix .info,$(filter-out git-commit,$(PACKAGES))) | |||
| HTMLFILES = $(addsuffix .html,$(filter-out git-commit,$(PACKAGES))) | |||
| HTMLDIRS = $(filter-out git-commit,$(PACKAGES)) | |||
| PDFFILES = $(addsuffix .pdf,$(filter-out git-commit,$(PACKAGES))) | |||
| ELS = use-package.el | |||
| ELS += bind-key.el | |||
| ELS += bind-chord.el | |||
| ELS += use-package-bind-key.el | |||
| ELS += use-package-core.el | |||
| ELS += use-package-delight.el | |||
| ELS += use-package-diminish.el | |||
| ELS += use-package-ensure.el | |||
| ELS += use-package-jump.el | |||
| ELS += use-package-tests.el | |||
| ELS += use-package-chords.el | |||
| ELS += use-package-ensure-system-package.el | |||
| ELCS = $(ELS:.el=.elc) | |||
| ELMS = use-package.el $(filter-out $(addsuffix .el,$(PACKAGES)),$(ELS)) | |||
| ELGS = | |||
| ## Versions ########################################################## | |||
| VERSION = 2.4.1 | |||
| USE_PACKAGE_VERSION = 2.4.1 | |||
| EMACS_VERSION = 24.3 | |||
| EMACSOLD := $(shell $(BATCH) --eval \ | |||
| "(and (version< emacs-version \"$(EMACS_VERSION)\") (princ \"true\"))") | |||
| ifeq "$(EMACSOLD)" "true" | |||
| $(error At least version $(EMACS_VERSION) of Emacs is required) | |||
| endif | |||
| ## Load-Path ######################################################### | |||
| ifndef LOAD_PATH | |||
| ELPA_DIR ?= $(HOME)/.emacs.d/elpa | |||
| SYSTYPE := $(shell $(EMACSBIN) -Q --batch --eval "(princ system-type)") | |||
| ifeq ($(SYSTYPE), windows-nt) | |||
| CYGPATH := $(shell cygpath --version 2>/dev/null) | |||
| endif | |||
| LOAD_PATH = -L $(TOP) | |||
| endif # ifndef LOAD_PATH | |||
| DOC_LOAD_PATH ?= $(LOAD_PATH) \ | |||
| -L $(HOME)/emacs/site-lisp \ | |||
| -L $(HOME)/emacs/site-lisp/ox-texinfo-plus \ | |||
| -L $(HOME)/emacs/site-lisp/org-mode/contrib/lisp | |||
| @ -0,0 +1,169 @@ | |||
| # Time-stamp: <2018-01-27 22:11:28 kmodi> | |||
| # Makefile to generate use-package doc site | |||
| EMACS ?= emacs | |||
| EMACS_exists := $(shell command -v $(EMACS) 2> /dev/null) | |||
| ifeq ("$(EMACS_exists)","") | |||
| EMACS := /tmp/emacs/bin/emacs | |||
| endif | |||
| # EMACS_BIN_SOURCE and EMACS_VERSION are used later in the vcheck rule | |||
| # only if EMACS_exists has evaluated to "". | |||
| EMACS_BIN_SOURCE ?= https://github.com/npostavs/emacs-travis/releases/download/bins | |||
| EMACS_VERSION ?= 25.3 | |||
| # Directory where the required elisp packages are auto-installed | |||
| TMPDIR ?= /tmp | |||
| OX_HUGO_ELPA=$(TMPDIR)/$(USER)/ox-hugo-dev/ | |||
| HUGO ?= hugo | |||
| HUGO_exists := $(shell command -v $(HUGO) 2> /dev/null) | |||
| ifeq ("$(HUGO_exists)","") | |||
| HUGO := $(OX_HUGO_ELPA)hugo | |||
| endif | |||
| # HUGO_VERSION and HUGO_OS are used later in the vcheck rule only if | |||
| # HUGO_exists has evaluated to "". | |||
| HUGO_VERSION ?= 0.34 | |||
| # |--------------------| | |||
| # | HUGO_OS | | |||
| # |--------------------| | |||
| # | DragonFlyBSD-64bit | | |||
| # | FreeBSD-32bit | | |||
| # | FreeBSD-64bit | | |||
| # | FreeBSD-ARM | | |||
| # | Linux-32bit | | |||
| # | Linux-64bit | | |||
| # | Linux-ARM | | |||
| # | Linux-ARM64 | | |||
| # | NetBSD-32bit | | |||
| # | NetBSD-64bit | | |||
| # | NetBSD-ARM | | |||
| # | OpenBSD-32bit | | |||
| # | OpenBSD-64bit | | |||
| # | macOS-32bit | | |||
| # | macOS-64bit | | |||
| # |--------------------| | |||
| HUGO_OS ?= Linux-64bit | |||
| # Directory containing the Hugo site's config.toml | |||
| HUGO_BASE_DIR=./ | |||
| # Value to be passed to hugo's --baseURL argument | |||
| HUGO_BASE_URL ?= http://localhost | |||
| # Other hugo arguments | |||
| HUGO_ARGS= | |||
| # Set TIMEZONE to the TZ environment variable. If TZ is unset, Emacs | |||
| # uses system wall clock time, which is a platform-dependent default | |||
| # time zone -- | |||
| # https://www.gnu.org/software/emacs/manual/html_node/elisp/Time-Zone-Rules.html | |||
| TIMEZONE=${TZ} | |||
| # Port for hugo server | |||
| PORT=1337 | |||
| USE_PACKAGE_DOC_DIR=$(shell pwd) | |||
| USE_PACKAGE_DOC_SITE_DIR=$(shell pwd) | |||
| # https://stackoverflow.com/a/3774731/1219634 | |||
| # Note that the use of immediate assignment := rather than recursive | |||
| # assignment = is important here: you do not want to be running the | |||
| # shell escape every time SOURCES is inspected by make. | |||
| org_files := $(shell find ../ -type f -name '*.org') | |||
| # Path to the Org file (relative to pwd, or absolute) | |||
| # ORG_FILE= | |||
| # # Function to be run in emacs --batch | |||
| # FUNC= | |||
| .PHONY: emacs-batch md1 vcheck hugo doc_site | |||
| md $(org_files) \ | |||
| doc_md doc_gh doc \ | |||
| ctemp clean | |||
| # Note: The Org file from $(ORG_FILE) is loaded *after* the --eval | |||
| # section gets evaluated i.e. --eval '(progn ..)' $(ORG_FILE) If the | |||
| # order is reversed i.e. i.e.$(ORG_FILE) --eval '(progn ..)', the act | |||
| # of loading the $(ORG_FILE) file first will load the older Org | |||
| # version that ships with Emacs and then run the stuff in --eval that | |||
| # loads the new Org version.. and thus we'll end up with mixed Org in | |||
| # the load-path. | |||
| emacs-batch: | |||
| @echo "" | |||
| @echo "$(ORG_FILE) ::" | |||
| @$(EMACS) --batch --eval "(progn\ | |||
| (setenv \"OX_HUGO_ELPA\" \"$(OX_HUGO_ELPA)\")\ | |||
| (when (> (length \"$(TIMEZONE)\") 0) (setenv \"TZ\" \"$(TIMEZONE)\"))\ | |||
| (setq-default make-backup-files nil)\ | |||
| (load-file (expand-file-name \"setup-ox-hugo.el\" \"$(USE_PACKAGE_DOC_DIR)\"))\ | |||
| )" $(ORG_FILE) \ | |||
| -f $(FUNC) \ | |||
| --kill | |||
| md1: | |||
| @$(MAKE) emacs-batch FUNC=org-hugo-export-all-wim-to-md | |||
| vcheck: | |||
| ifeq ("$(EMACS_exists)","") | |||
| @curl -fsSkL --retry 9 --retry-delay 9 -O $(EMACS_BIN_SOURCE)/emacs-bin-$(EMACS_VERSION).tar.gz | |||
| @tar xf emacs-bin-$(EMACS_VERSION).tar.gz -C / | |||
| endif | |||
| @echo "Emacs binary used: $(EMACS)" | |||
| @$(EMACS) --batch --eval "(progn\ | |||
| (setenv \"OX_HUGO_ELPA\" \"$(OX_HUGO_ELPA)\")\ | |||
| (load-file (expand-file-name \"setup-ox-hugo.el\" \"$(USE_PACKAGE_DOC_DIR)\"))\ | |||
| (message \"[Version check] Emacs %s\" emacs-version)\ | |||
| (message \"[Version check] %s\" (org-version nil :full))\ | |||
| )" \ | |||
| --kill | |||
| ifeq ("$(HUGO_exists)","") | |||
| @curl https://github.com/gohugoio/hugo/releases/download/v$(HUGO_VERSION)/hugo_$(HUGO_VERSION)_$(HUGO_OS).tar.gz -L --create-dirs -o $(OX_HUGO_ELPA)hugo.tar.gz | |||
| @tar xf $(OX_HUGO_ELPA)hugo.tar.gz -C $(OX_HUGO_ELPA) | |||
| @rm -f $(OX_HUGO_ELPA)hugo.tar.gz | |||
| endif | |||
| @$(HUGO) version | |||
| hugo: vcheck | |||
| @cd $(HUGO_BASE_DIR) && $(HUGO) --baseURL=$(HUGO_BASE_URL) $(HUGO_ARGS) | |||
| doc_site: | |||
| @$(MAKE) hugo HUGO_BASE_DIR=. | |||
| serve server: vcheck | |||
| @echo "Serving the site on $(HUGO_BASE_URL):$(PORT) .." | |||
| @cd $(HUGO_BASE_DIR) && $(HUGO) server --baseURL=$(HUGO_BASE_URL) --port $(PORT) --buildDrafts --buildFuture --navigateToChanged | |||
| # Run the md1 rules in loop on all of $(org_files) | |||
| # https://stackoverflow.com/a/37748952/1219634 | |||
| md: $(org_files) | |||
| $(org_files): | |||
| @$(MAKE) md1 ORG_FILE=$@ TIMEZONE=UTC # Use UTC/Universal time zone for tests | |||
| doc_md: | |||
| @echo "[Doc Site] Generating use-package Documentation Site content .." | |||
| @$(MAKE) md1 ORG_FILE=../use-package.org | |||
| @echo "[Doc Site] Done" | |||
| # doc_gh: | |||
| # @echo "[GitHub Docs] Generating README.org and CONTRIBUTING.org for GitHub .." | |||
| # @$(MAKE) emacs-batch FUNC=use-package-export-gh-doc ORG_FILE=./doc/github-files.org | |||
| # @echo "[GitHub Docs] Done" | |||
| doc: doc_md doc_site | |||
| ctemp: | |||
| @find $(USE_PACKAGE_DOC_SITE_DIR)/content -name "*.*~" -delete | |||
| clean: ctemp | |||
| @find ./content -name "*.md" -delete | |||
| @find ./content -name "issues" -delete | |||
| @rm -rf $(USE_PACKAGE_DOC_SITE_DIR)/public | |||
| @rm -rf $(OX_HUGO_ELPA) | |||
| # Set a make variable during rule execution | |||
| # https://stackoverflow.com/a/1909390/1219634 | |||
| # Check if an executable exists | |||
| # https://stackoverflow.com/a/34756868/1219634 | |||
| @ -0,0 +1,90 @@ | |||
| baseURL = "http://example.org/" | |||
| Title = "use-package" | |||
| theme = "hugo-alabaster-theme" | |||
| contentdir = "content" | |||
| layoutdir = "layouts" | |||
| publishdir = "public" | |||
| # Remove files from destination not found in static directories | |||
| cleandestinationdir = true | |||
| # Needed for relative references like in the below image link | |||
| #  | |||
| canonifyURLs = true | |||
| enableGitInfo = true | |||
| # https://gohugo.io/extras/highlighting/ | |||
| # Syntax highlighting using Pygments | |||
| # $ python | |||
| # >>> from pygments.styles import STYLE_MAP | |||
| # >>> STYLE_MAP.keys() | |||
| # ['manni', 'igor', 'lovelace', 'xcode', 'vim', 'autumn', 'vs', 'rrt', 'native', | |||
| # 'perldoc', 'borland', 'tango', 'emacs', 'friendly', 'monokai', 'paraiso-dark', | |||
| # 'colorful', 'murphy', 'bw', 'pastie', 'algol_nu', 'paraiso-light', 'trac', | |||
| # 'default', 'algol', 'fruity'] | |||
| # pygmentsStyle = "native" | |||
| # pygmentsStyle = "trac" # This is not needed as the theme is set using external CSS -- Tue Sep 26 13:26:59 EDT 2017 - kmodi | |||
| pygmentsCodeFences = true # This applies to Chroma too. | |||
| # Use pygmentize generated CSS file instead of inlining the code codes in the HTML. | |||
| # See https://gohugo.io/tools/syntax-highlighting/#pygments and | |||
| # https://github.com/richleland/pygments-css | |||
| pygmentsUseClasses = true # This applies to Chroma too. | |||
| pygmentsUseClassic = false # Needs Hugo 0.28+, default=false => Use Chroma for syntax highlighting | |||
| enableEmoji = true | |||
| LanguageCode = "en-us" # Used in RSS generation | |||
| disableFastRender = true # Hugo 0.30 | |||
| # [Permalinks] | |||
| # # post = "/:year/:month/:title/" | |||
| # # Below, we have | |||
| # # foo = "bar" | |||
| # # where foo = section name without double quotes for which we want to have | |||
| # # the custom permalinks. If foo is 'posts', it will apply to content in | |||
| # # content/posts/ dir. The "bar" portion is how you want the links to look. | |||
| # # https://gohugo.io/content-management/urls/#permalink-configuration-values | |||
| # doc = "/doc/:filename/" | |||
| # test = "/test/:slug/" | |||
| [params] | |||
| name = "use-package" | |||
| description = "A use-package declaration for simplifying your .emacs" | |||
| # Go date formats: https://golang.org/pkg/time/#pkg-constants | |||
| dateform = "Mon Jan 2, 2006" | |||
| github_user = "jwiegley" | |||
| github_repo = "use-package" | |||
| github_banner = true | |||
| custom_css = [ # Chroma GitHub theme | |||
| "css/github_chroma.css" # Needs pygmentsUseClasses to be true | |||
| , "css/style.css" | |||
| ] | |||
| custom_css_absolute = [ # Iosevka fonts | |||
| "https://cdn.rawgit.com/kaushalmodi/iosevka-mirror/v1.13.2/iosevka.css" | |||
| ] | |||
| custom_js = [] | |||
| favicon = "favicon.ico?v=1" | |||
| [params.sidebar] | |||
| logo = "img/use-package-logo-96x96-v1.svg" | |||
| github_button = true | |||
| travis_button = true | |||
| codecov_button = false | |||
| [params.footer] | |||
| copyright = "" | |||
| show_powered_by = true | |||
| # Blackfriday is Hugo's markdown engine. | |||
| # https://gohugo.io/overview/configuration/#configure-blackfriday-rendering | |||
| [blackfriday] | |||
| hrefTargetBlank = true # open external links in a new window or tab | |||
| @ -0,0 +1,7 @@ | |||
| <!doctype html> | |||
| <html lang="en"> | |||
| <head> | |||
| <title>use-package Issues</title> | |||
| <meta http-equiv="refresh" content="0; URL='https://github.com/jwiegley/use-package/issues'" /> | |||
| </head> | |||
| </html> | |||
| @ -0,0 +1,217 @@ | |||
| ;; Time-stamp: <2017-12-19 16:49:24 kmodi> | |||
| ;; Setup to export Org files to Hugo-compatible Markdown using | |||
| ;; `ox-hugo' in an "emacs -Q" environment. | |||
| ;; Some sane settings | |||
| (setq-default require-final-newline t) | |||
| (setq-default indent-tabs-mode nil) | |||
| (defvar ox-hugo-test-setup-verbose nil | |||
| "When non-nil, enable printing more messages from setup-ox-hugo.el.") | |||
| (defvar ox-hugo-install-org-from-elpa (version< emacs-version "26.0") | |||
| "When non-nil, install Org from Org Elpa. | |||
| The default value of this variable is non-nil if emacs version is | |||
| older than 26, and nil otherwise. | |||
| Emacs 26 onwards comes with at least Org 9.1.4. So there is no | |||
| need to install Org from Elpa as that Org version meets the | |||
| minimum requirement for `ox-hugo', and thus the doc site | |||
| generation.") | |||
| (defvar ox-hugo-elpa (let ((dir (getenv "OX_HUGO_ELPA"))) | |||
| (unless dir | |||
| (setq dir (concat (file-name-as-directory | |||
| (concat temporary-file-directory (getenv "USER"))) | |||
| "ox-hugo-site/"))) | |||
| (setq dir (file-name-as-directory dir)) | |||
| (make-directory dir :parents) | |||
| dir)) | |||
| (when ox-hugo-test-setup-verbose | |||
| (message "ox-hugo-elpa: %s" ox-hugo-elpa)) | |||
| (defvar ox-hugo-packages '(;; toc-org ;No need to install toc-org yet, needed only if exporting to README.org | |||
| ox-hugo)) | |||
| (when ox-hugo-install-org-from-elpa | |||
| ;; `org' will always be detected as installed, so use | |||
| ;; `org-plus-contrib'. | |||
| ;; Fri Sep 22 18:24:19 EDT 2017 - kmodi | |||
| ;; Install the packages in the specified order. We do not want | |||
| ;; `toc-org' to be installed first. If that happens, `org' will be | |||
| ;; required before the newer version of Org gets installed and we | |||
| ;; will end up with mixed Org version. So put `org-plus-contrib' at | |||
| ;; the beginning of `ox-hugo-packages'. | |||
| (add-to-list 'ox-hugo-packages 'org-plus-contrib)) | |||
| (defvar ox-hugo-site-git-root (progn | |||
| (require 'vc-git) | |||
| (file-truename (vc-git-root default-directory))) | |||
| "Absolute path of the git root of the current project.") | |||
| (when ox-hugo-test-setup-verbose | |||
| (message "ox-hugo-site-git-root: %S" ox-hugo-site-git-root)) | |||
| ;; Below will prevent installation of `org' package as a dependency | |||
| ;; when installing `ox-hugo' from Melpa. | |||
| (defun ox-hugo-package-dependency-check-ignore (orig-ret) | |||
| "Remove the `black listed packages' from ORIG-RET. | |||
| Packages listed in the let-bound `pkg-black-list' will not be auto-installed | |||
| even if they are found as dependencies." | |||
| (let ((pkg-black-list '(org)) | |||
| new-ret | |||
| pkg-name) | |||
| (dolist (pkg-struct orig-ret) | |||
| (setq pkg-name (package-desc-name pkg-struct)) | |||
| (if (member pkg-name pkg-black-list) | |||
| (message (concat "Package `%s' will not be installed. " | |||
| "See `ox-hugo-package-dependency-check-ignore'.") | |||
| pkg-name) | |||
| ;; (message "Package to be installed: %s" pkg-name) | |||
| (push pkg-struct new-ret))) | |||
| (setq new-ret (reverse new-ret)) | |||
| ;; (message "after %S" new-ret) | |||
| new-ret)) | |||
| (advice-add 'package-compute-transaction :filter-return #'ox-hugo-package-dependency-check-ignore) | |||
| ;; (advice-remove 'package-compute-transaction #'ox-hugo-package-dependency-check-ignore) | |||
| (if (and (stringp ox-hugo-elpa) | |||
| (file-exists-p ox-hugo-elpa)) | |||
| (progn | |||
| ;; Load newer version of .el and .elc if both are available | |||
| (setq load-prefer-newer t) | |||
| (setq package-user-dir (format "%selpa_%s/" ox-hugo-elpa emacs-major-version)) | |||
| ;; Below require will auto-create `package-user-dir' it doesn't exist. | |||
| (require 'package) | |||
| (let* ((no-ssl (and (memq system-type '(windows-nt ms-dos)) | |||
| (not (gnutls-available-p)))) | |||
| (url (concat (if no-ssl "http" "https") "://melpa.org/packages/"))) | |||
| (add-to-list 'package-archives (cons "melpa" url))) | |||
| ;; Even if we don't need to install Org from Elpa, we need to | |||
| ;; add Org Elpa in `package-archives' to prevent the "Package | |||
| ;; ‘org-9.0’ is unavailable" error. | |||
| (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) ;For latest stable `org' | |||
| ;; Load emacs packages and activate them. | |||
| ;; Don't delete this line. | |||
| (package-initialize) | |||
| ;; `package-initialize' call is required before any of the below | |||
| ;; can happen. | |||
| ;; (add-to-list 'load-path (concat ox-hugo-site-git-root "doc/")) ;For ox-hugo-export-gh-doc.el | |||
| (defvar ox-hugo-missing-packages '() | |||
| "List populated at each startup that contains the list of packages that need | |||
| to be installed.") | |||
| (dolist (p ox-hugo-packages) | |||
| ;; (message "Is %S installed? %s" p (package-installed-p p)) | |||
| (unless (package-installed-p p) | |||
| (add-to-list 'ox-hugo-missing-packages p :append))) | |||
| (when ox-hugo-missing-packages | |||
| (message "Emacs is now refreshing its package database...") | |||
| (package-refresh-contents) | |||
| ;; Install the missing packages | |||
| (dolist (p ox-hugo-missing-packages) | |||
| (message "Installing `%s' .." p) | |||
| (package-install p)) | |||
| (setq ox-hugo-missing-packages '()))) | |||
| (error "The environment variable OX_HUGO_ELPA needs to be set")) | |||
| ;; Remove Org that ships with Emacs from the `load-path' if installing | |||
| ;; it from Elpa. | |||
| (when ox-hugo-install-org-from-elpa | |||
| (let* ((bin-dir (when (and invocation-directory | |||
| (file-exists-p invocation-directory)) | |||
| (file-truename invocation-directory))) | |||
| (prefix-dir (when bin-dir | |||
| (replace-regexp-in-string "bin/\\'" "" bin-dir))) | |||
| (share-dir (when prefix-dir | |||
| (concat prefix-dir "share/"))) | |||
| (lisp-dir-1 (when share-dir ;Possibility where the lisp dir is something like ../emacs/26.0.50/lisp/ | |||
| (concat share-dir "emacs/" | |||
| ;; If `emacs-version' is x.y.z.w, remove the ".w" portion | |||
| ;; Though, this is not needed and also will do nothing in emacs 26+ | |||
| ;; http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=22b2207471807bda86534b4faf1a29b3a6447536 | |||
| (replace-regexp-in-string "\\([0-9]+\\.[0-9]+\\.[0-9]+\\).*" "\\1" emacs-version) | |||
| "/lisp/"))) | |||
| (lisp-dir-2 (when share-dir ;Possibility where the lisp dir is something like ../emacs/25.2/lisp/ | |||
| (concat share-dir "emacs/" | |||
| (replace-regexp-in-string "\\([0-9]+\\.[0-9]+\\).*" "\\1" emacs-version) | |||
| "/lisp/")))) | |||
| (when ox-hugo-test-setup-verbose | |||
| (message "emacs bin-dir: %s" bin-dir) | |||
| (message "emacs prefix-dir: %s" prefix-dir) | |||
| (message "emacs share-dir: %s" share-dir) | |||
| (message "emacs lisp-dir-1: %s" lisp-dir-1) | |||
| (message "emacs lisp-dir-2: %s" lisp-dir-2)) | |||
| (defvar ox-hugo-default-lisp-directory (cond | |||
| ((file-exists-p lisp-dir-1) | |||
| lisp-dir-1) | |||
| ((file-exists-p lisp-dir-2) | |||
| lisp-dir-2) | |||
| (t | |||
| nil)) | |||
| "Directory containing lisp files for the Emacs installation. | |||
| This value must match the path to the lisp/ directory of the | |||
| Emacs installation. If Emacs is installed using | |||
| --prefix=\"${PREFIX_DIR}\" this value would typically be | |||
| \"${PREFIX_DIR}/share/emacs/<VERSION>/lisp/\".")) | |||
| (when ox-hugo-test-setup-verbose | |||
| (message "ox-hugo-default-lisp-directory: %S" ox-hugo-default-lisp-directory)) | |||
| (with-eval-after-load 'package | |||
| ;; Remove Org that ships with Emacs from the `load-path'. | |||
| (when (stringp ox-hugo-default-lisp-directory) | |||
| (dolist (path load-path) | |||
| (when (string-match-p (expand-file-name "org" ox-hugo-default-lisp-directory) path) | |||
| (setq load-path (delete path load-path)))))) | |||
| ;; (message "`load-path': %S" load-path) | |||
| ;; (message "`load-path' Shadows:") | |||
| ;; (message (list-load-path-shadows :stringp)) | |||
| ) | |||
| (require 'ox-hugo) | |||
| (defun org-hugo-export-all-wim-to-md () | |||
| (org-hugo-export-wim-to-md :all-subtrees nil nil :noerror)) | |||
| ;; (require 'ox-hugo-export-gh-doc) ;For `ox-hugo-export-gh-doc' | |||
| (with-eval-after-load 'org | |||
| ;; Allow multiple line Org emphasis markup | |||
| ;; http://emacs.stackexchange.com/a/13828/115 | |||
| (setcar (nthcdr 4 org-emphasis-regexp-components) 20) ;Up to 20 lines, default is just 1 | |||
| ;; Below is needed to apply the modified `org-emphasis-regexp-components' | |||
| ;; settings from above. | |||
| (org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components) | |||
| ;; Prevent prompts like: | |||
| ;; Non-existent agenda file | |||
| (defun org-check-agenda-file (file)) | |||
| (let (ob-lang-alist) | |||
| (add-to-list 'ob-lang-alist '(emacs-lisp . t)) | |||
| (add-to-list 'ob-lang-alist '(org . t)) | |||
| (org-babel-do-load-languages 'org-babel-load-languages ob-lang-alist)) | |||
| (with-eval-after-load 'ob-core | |||
| (defun ox-hugo-org-confirm-babel-evaluate-fn (lang body) | |||
| "Mark `org' as a safe language for ox-hugo tests and docs." | |||
| (let* ((ob-enabled-langs '("org")) | |||
| (ob-enabled-langs-re (regexp-opt ob-enabled-langs 'words)) | |||
| (unsafe t)) ;Set the return value `unsafe' to t by default | |||
| (when (string-match-p ob-enabled-langs-re lang) | |||
| (setq unsafe nil)) | |||
| unsafe)) | |||
| (setq org-confirm-babel-evaluate #'ox-hugo-org-confirm-babel-evaluate-fn)) | |||
| (with-eval-after-load 'ox | |||
| (setq org-export-headline-levels 4) ;default is 3 | |||
| (add-to-list 'org-export-exclude-tags "ignore"))) | |||
| @ -0,0 +1,71 @@ | |||
| /* Background */ .chroma { background-color: #ffffff } | |||
| /* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 } | |||
| /* LineTableTD */ .chroma .lntd { ; vertical-align: top; padding: 0; margin: 0; border: 0; } | |||
| /* LineTable */ .chroma .lntable { ; border-spacing: 0; padding: 0; margin: 0; border: 0; width: 100%; overflow: auto; display: block; } | |||
| /* LineHighlight */ .chroma .hl { background-color: #ffffcc; display: block; width: 100% } | |||
| /* LineNumbersTable */ .chroma .lnt { ; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; display: block; } | |||
| /* LineNumbers */ .chroma .ln { ; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } | |||
| /* Keyword */ .chroma .k { color: #000000; font-weight: bold } | |||
| /* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold } | |||
| /* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold } | |||
| /* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold } | |||
| /* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold } | |||
| /* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold } | |||
| /* KeywordType */ .chroma .kt { color: #445588; font-weight: bold } | |||
| /* NameAttribute */ .chroma .na { color: #008080 } | |||
| /* NameBuiltin */ .chroma .nb { color: #0086b3 } | |||
| /* NameBuiltinPseudo */ .chroma .bp { color: #999999 } | |||
| /* NameClass */ .chroma .nc { color: #445588; font-weight: bold } | |||
| /* NameConstant */ .chroma .no { color: #008080 } | |||
| /* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold } | |||
| /* NameEntity */ .chroma .ni { color: #800080 } | |||
| /* NameException */ .chroma .ne { color: #990000; font-weight: bold } | |||
| /* NameFunction */ .chroma .nf { color: #990000; font-weight: bold } | |||
| /* NameLabel */ .chroma .nl { color: #990000; font-weight: bold } | |||
| /* NameNamespace */ .chroma .nn { color: #555555 } | |||
| /* NameTag */ .chroma .nt { color: #000080 } | |||
| /* NameVariable */ .chroma .nv { color: #008080 } | |||
| /* NameVariableClass */ .chroma .vc { color: #008080 } | |||
| /* NameVariableGlobal */ .chroma .vg { color: #008080 } | |||
| /* NameVariableInstance */ .chroma .vi { color: #008080 } | |||
| /* LiteralString */ .chroma .s { color: #dd1144 } | |||
| /* LiteralStringAffix */ .chroma .sa { color: #dd1144 } | |||
| /* LiteralStringBacktick */ .chroma .sb { color: #dd1144 } | |||
| /* LiteralStringChar */ .chroma .sc { color: #dd1144 } | |||
| /* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 } | |||
| /* LiteralStringDoc */ .chroma .sd { color: #dd1144 } | |||
| /* LiteralStringDouble */ .chroma .s2 { color: #dd1144 } | |||
| /* LiteralStringEscape */ .chroma .se { color: #dd1144 } | |||
| /* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 } | |||
| /* LiteralStringInterpol */ .chroma .si { color: #dd1144 } | |||
| /* LiteralStringOther */ .chroma .sx { color: #dd1144 } | |||
| /* LiteralStringRegex */ .chroma .sr { color: #009926 } | |||
| /* LiteralStringSingle */ .chroma .s1 { color: #dd1144 } | |||
| /* LiteralStringSymbol */ .chroma .ss { color: #990073 } | |||
| /* LiteralNumber */ .chroma .m { color: #009999 } | |||
| /* LiteralNumberBin */ .chroma .mb { color: #009999 } | |||
| /* LiteralNumberFloat */ .chroma .mf { color: #009999 } | |||
| /* LiteralNumberHex */ .chroma .mh { color: #009999 } | |||
| /* LiteralNumberInteger */ .chroma .mi { color: #009999 } | |||
| /* LiteralNumberIntegerLong */ .chroma .il { color: #009999 } | |||
| /* LiteralNumberOct */ .chroma .mo { color: #009999 } | |||
| /* Operator */ .chroma .o { color: #000000; font-weight: bold } | |||
| /* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold } | |||
| /* Comment */ .chroma .c { color: #999988; font-style: italic } | |||
| /* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic } | |||
| /* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic } | |||
| /* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic } | |||
| /* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic } | |||
| /* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic } | |||
| /* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic } | |||
| /* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd } | |||
| /* GenericEmph */ .chroma .ge { color: #000000; font-style: italic } | |||
| /* GenericError */ .chroma .gr { color: #aa0000 } | |||
| /* GenericHeading */ .chroma .gh { color: #999999 } | |||
| /* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd } | |||
| /* GenericOutput */ .chroma .go { color: #888888 } | |||
| /* GenericPrompt */ .chroma .gp { color: #555555 } | |||
| /* GenericStrong */ .chroma .gs { font-weight: bold } | |||
| /* GenericSubheading */ .chroma .gu { color: #aaaaaa } | |||
| /* GenericTraceback */ .chroma .gt { color: #aa0000 } | |||
| /* TextWhitespace */ .chroma .w { color: #bbbbbb } | |||
| @ -0,0 +1,142 @@ | |||
| .post-date { | |||
| /* display: block; */ | |||
| float: right; | |||
| /* Italicize the date stamp */ | |||
| font-style: italic; | |||
| margin-top: -0.5em; | |||
| margin-bottom: 0.3em; | |||
| color: #9a9a9a; | |||
| } | |||
| /* Show actual underline under "underline" class spanned text. */ | |||
| .underline { | |||
| text-decoration: underline; | |||
| } | |||
| /* Iosevka font is awesome! */ | |||
| pre, tt, code { | |||
| font-family: 'Iosevka', 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; | |||
| font-size: 0.9em; | |||
| } | |||
| /* Tue Sep 26 12:32:04 EDT 2017 - kmodi*/ | |||
| /* Override the background-color for pre blocks.. overrides the Hugo theme, and Pygments/Chroma CSS. */ | |||
| pre, pre code, .chroma { | |||
| /* background-color: inherit; */ | |||
| background-color: #EEE; | |||
| } | |||
| /* Very little padding on the left and right margins of code blocks */ | |||
| li pre, pre { | |||
| padding-left: 5px; | |||
| padding-right: 5px; | |||
| } | |||
| /* Do not show list bullets for checkbox list items */ | |||
| ul.task-list { | |||
| list-style-type: none; | |||
| } | |||
| /* Org timestamps */ | |||
| /* Example: In Changelog */ | |||
| .timestamp { | |||
| color: #BEBEBE; | |||
| font-family: monospace; | |||
| font-weight: bold; | |||
| font-size: 0.7em; | |||
| } | |||
| /* * Table of Contents on side */ | |||
| .toc { | |||
| font-family: 'Source Sans Pro', sans-serif; | |||
| display: none; | |||
| position: fixed; | |||
| left: 50%; | |||
| top: 110px; | |||
| width: 260px; | |||
| margin-left: 500px; | |||
| overflow-y: auto; | |||
| max-height: 85%; | |||
| padding: 0; | |||
| } | |||
| .toc li { | |||
| list-style: none; | |||
| } | |||
| .toc ul>li { | |||
| font-size: 0.9rem; | |||
| margin-bottom: 0.4rem; | |||
| } | |||
| .toc ul>li>ul>li { | |||
| font-size: 0.8rem; | |||
| margin-bottom: 0.4rem; | |||
| } | |||
| .toc ul>li>ul>li>ul>li { | |||
| font-size: 0.7rem; | |||
| margin-bottom: 0.3rem; | |||
| } | |||
| .toc ul { /* Add left padding for headings in TOC */ | |||
| padding-left: 1rem; | |||
| margin: 0; | |||
| } | |||
| .toc nav>ul { /* The highest level heading in a blog post is level-2 */ | |||
| padding-left: 0; /* The level-1 heading is reserved for the blog title. */ | |||
| /* So do not add any padding for level-1 heading, as that will never show*/ | |||
| /* up in the TOC. */ | |||
| } | |||
| .toc a { | |||
| text-decoration: none; | |||
| } | |||
| .toc a:hover { | |||
| color: gray; | |||
| } | |||
| .toc a.current { | |||
| color: gray; | |||
| font-weight: bold; | |||
| } | |||
| /* Override the bullets customization done above, just for list items*/ | |||
| /* in .toc class */ | |||
| .toc ul:not(.catlist):not(.navbar):not(.post-list) li:before { | |||
| content: ''; | |||
| } | |||
| .toc .back-to-top { /* Back to top link */ | |||
| font-size: 0.7rem; | |||
| padding-left: 1rem; | |||
| } | |||
| /* Don't display section numbers */ | |||
| .section-num { | |||
| display: none; | |||
| } | |||
| @media screen and (min-width: 1400px) { | |||
| .toc { | |||
| display: block; | |||
| } | |||
| } | |||
| /* Captions */ | |||
| figcaption, | |||
| .src-block-caption, | |||
| .table-caption { | |||
| font-style: italic; | |||
| text-align: center; | |||
| } | |||
| /* Don't underline captions in hyperlinked images */ | |||
| figure a, | |||
| figure a:hover { | |||
| text-decoration: none; | |||
| } | |||
| /* Sane Table */ | |||
| /* https://css-tricks.com/complete-guide-table-element/#article-header-id-17 */ | |||
| .sane-table table { | |||
| border-collapse: collapse; | |||
| width: 100%; | |||
| } | |||
| .sane-table th, | |||
| .sane-table td { | |||
| padding: 0.25rem; | |||
| text-align: left; | |||
| border: 1px solid #ccc; | |||
| } | |||
| @ -0,0 +1,11 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |||
| width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve"> | |||
| <g> | |||
| <path fill="#FFFFFF" d="M16,13c0,1.65-1.35,3-3,3H3c-1.65,0-3-1.35-3-3V3c0-1.65,1.35-3,3-3h10c1.65,0,3,1.35,3,3V13z"/> | |||
| </g> | |||
| <polygon id="u" fill="#5F29C6" points="13,4.29 13,10.55 8,13.16 3,10.55 3,4.29 3,4.29 5.77,2.84 5.77,8.98 8,10.15 10.23,8.98 | |||
| 10.23,2.84 13,4.29 "/> | |||
| </svg> | |||
| @ -0,0 +1,168 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |||
| width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> | |||
| <g opacity="0.4"> | |||
| <path id="shadow_2_" fill="#FFFFFF" fill-opacity="0" d="M24.28,21.99c-1.06-0.56-2.8-0.56-3.87,0l-1.97,1.04 | |||
| c-1.06,0.56-2.81,0.56-3.87,0l-1.97-1.04c-1.06-0.56-2.8-0.56-3.87,0L5.7,23.58c-1.06,0.56-1.06,1.48,0,2.04l8.86,4.67 | |||
| c1.06,0.56,2.81,0.56,3.87,0l8.86-4.67c1.06-0.56,1.06-1.48,0-2.04L24.28,21.99z"/> | |||
| <path opacity="0.0118" fill="#FBFBFC" enable-background="new " d="M24.22,22.01c-1.05-0.55-2.78-0.55-3.84,0l-1.96,1.03 | |||
| c-1.06,0.56-2.78,0.56-3.84,0l-1.96-1.03c-1.06-0.55-2.78-0.55-3.84,0l-3,1.58c-1.06,0.56-1.06,1.47,0,2.02l8.79,4.63 | |||
| c1.06,0.55,2.78,0.55,3.84,0l8.79-4.63c1.05-0.55,1.05-1.46,0-2.02L24.22,22.01z"/> | |||
| <path opacity="0.0235" fill="#F7F6F9" enable-background="new " d="M24.15,22.03c-1.05-0.55-2.76-0.55-3.81,0l-1.94,1.02 | |||
| c-1.05,0.55-2.76,0.55-3.81,0l-1.94-1.02c-1.05-0.55-2.76-0.55-3.81,0L5.87,23.6c-1.05,0.55-1.05,1.46,0,2l8.72,4.6 | |||
| c1.05,0.55,2.76,0.55,3.81,0l8.72-4.6c1.05-0.55,1.05-1.45,0-2L24.15,22.03z"/> | |||
| <path opacity="0.0353" fill="#F4F2F6" enable-background="new " d="M24.09,22.06c-1.04-0.54-2.74-0.54-3.78,0l-1.93,1.01 | |||
| c-1.04,0.55-2.74,0.55-3.78,0l-1.93-1.01c-1.04-0.54-2.74-0.54-3.78,0l-2.95,1.55c-1.04,0.55-1.04,1.45,0,1.99l8.65,4.56 | |||
| c1.04,0.54,2.74,0.54,3.78,0l8.66-4.56c1.04-0.54,1.04-1.44,0-1.99L24.09,22.06z"/> | |||
| <path opacity="0.0471" fill="#F0EEF3" enable-background="new " d="M24.03,22.08c-1.03-0.54-2.72-0.54-3.75,0l-1.91,1 | |||
| c-1.03,0.54-2.72,0.54-3.75,0l-1.91-1c-1.03-0.54-2.72-0.54-3.75,0l-2.93,1.54C5,24.16,5,25.05,6.03,25.59l8.58,4.52 | |||
| c1.03,0.54,2.72,0.54,3.75,0l8.58-4.52c1.03-0.54,1.03-1.43,0-1.97L24.03,22.08z"/> | |||
| <path opacity="0.0588" fill="#ECEAF0" enable-background="new " d="M23.97,22.11c-1.02-0.54-2.7-0.54-3.72,0l-1.9,1 | |||
| c-1.02,0.54-2.7,0.54-3.72,0l-1.9-1c-1.02-0.54-2.69-0.54-3.72,0l-2.9,1.53c-1.02,0.54-1.02,1.42,0,1.96l8.52,4.49 | |||
| c1.02,0.54,2.7,0.54,3.72,0l8.52-4.49c1.02-0.54,1.02-1.42,0-1.96L23.97,22.11z"/> | |||
| <path opacity="0.0706" fill="#E8E5EE" enable-background="new " d="M23.91,22.13c-1.01-0.53-2.67-0.53-3.68,0l-1.88,0.99 | |||
| c-1.01,0.54-2.67,0.54-3.69,0l-1.88-0.99c-1.01-0.53-2.67-0.53-3.69,0l-2.88,1.52c-1.01,0.53-1.01,1.41,0,1.94l8.45,4.45 | |||
| c1.01,0.53,2.67,0.53,3.69,0l8.45-4.45c1.01-0.53,1.01-1.41,0-1.94L23.91,22.13z"/> | |||
| <path opacity="0.0824" fill="#E4E1EB" enable-background="new " d="M23.85,22.15c-1-0.53-2.65-0.53-3.66,0l-1.87,0.98 | |||
| c-1.01,0.53-2.65,0.53-3.66,0l-1.87-0.98c-1.01-0.53-2.65-0.53-3.66,0l-2.85,1.5c-1.01,0.53-1.01,1.4,0,1.93L14.67,30 | |||
| c1.01,0.53,2.65,0.53,3.66,0l8.38-4.41c1-0.53,1-1.4,0-1.93L23.85,22.15z"/> | |||
| <path opacity="0.0941" fill="#E0DDE8" enable-background="new " d="M23.79,22.18c-1-0.52-2.63-0.52-3.62,0l-1.85,0.97 | |||
| c-1,0.53-2.63,0.53-3.63,0l-1.85-0.97c-1-0.52-2.63-0.52-3.63,0l-2.83,1.49c-1,0.53-1,1.39,0,1.91l8.31,4.38 | |||
| c1,0.52,2.63,0.52,3.63,0l8.31-4.38c1-0.52,1-1.38,0-1.91L23.79,22.18z"/> | |||
| <path opacity="0.1059" fill="#DDD8E5" enable-background="new " d="M23.73,22.2c-0.99-0.52-2.61-0.52-3.59,0l-1.83,0.96 | |||
| c-0.99,0.52-2.61,0.52-3.6,0l-1.83-0.96c-0.99-0.52-2.61-0.52-3.6,0l-2.81,1.48c-0.99,0.52-0.99,1.38,0,1.89l8.24,4.34 | |||
| c0.99,0.52,2.61,0.52,3.6,0l8.24-4.34c0.99-0.52,0.99-1.37,0-1.89L23.73,22.2z"/> | |||
| <path opacity="0.1176" fill="#D9D4E2" enable-background="new " d="M23.67,22.23c-0.98-0.51-2.58-0.51-3.56,0l-1.82,0.96 | |||
| c-0.98,0.52-2.59,0.52-3.57,0l-1.82-0.96c-0.98-0.51-2.58-0.51-3.57,0L6.55,23.7c-0.98,0.52-0.98,1.36,0,1.88l8.17,4.3 | |||
| c0.98,0.52,2.59,0.52,3.57,0l8.17-4.3c0.98-0.51,0.98-1.36,0-1.88L23.67,22.23z"/> | |||
| <path opacity="0.1294" fill="#D5D0DF" enable-background="new " d="M23.61,22.25c-0.97-0.51-2.56-0.51-3.53,0l-1.8,0.95 | |||
| c-0.97,0.51-2.56,0.51-3.54,0l-1.8-0.95c-0.97-0.51-2.56-0.51-3.54,0L6.63,23.7c-0.97,0.51-0.97,1.35,0,1.86l8.1,4.27 | |||
| c0.97,0.51,2.56,0.51,3.54,0l8.1-4.27c0.97-0.51,0.97-1.35,0-1.86L23.61,22.25z"/> | |||
| <path opacity="0.1412" fill="#D1CBDC" enable-background="new " d="M23.54,22.27c-0.96-0.51-2.54-0.51-3.5,0l-1.79,0.94 | |||
| c-0.96,0.51-2.54,0.51-3.51,0l-1.79-0.94c-0.96-0.51-2.54-0.51-3.5,0l-2.74,1.44c-0.96,0.51-0.96,1.34,0,1.85l8.03,4.23 | |||
| c0.96,0.51,2.54,0.51,3.51,0l8.03-4.23c0.96-0.5,0.96-1.34,0-1.85L23.54,22.27z"/> | |||
| <path opacity="0.1529" fill="#CDC7D9" enable-background="new " d="M23.48,22.3c-0.95-0.5-2.52-0.5-3.47,0l-1.77,0.93 | |||
| c-0.96,0.5-2.52,0.5-3.48,0l-1.77-0.93c-0.96-0.5-2.52-0.5-3.47,0L6.8,23.73c-0.96,0.5-0.96,1.33,0,1.83l7.96,4.19 | |||
| c0.96,0.5,2.52,0.5,3.48,0l7.96-4.19c0.95-0.5,0.95-1.33,0-1.83L23.48,22.3z"/> | |||
| <path opacity="0.1647" fill="#C9C3D6" enable-background="new " d="M23.42,22.32c-0.95-0.5-2.5-0.5-3.44,0l-1.76,0.92 | |||
| c-0.95,0.5-2.5,0.5-3.44,0l-1.76-0.92c-0.95-0.5-2.5-0.5-3.44,0l-2.69,1.42c-0.95,0.5-0.95,1.32,0,1.81l7.89,4.16 | |||
| c0.95,0.5,2.5,0.5,3.44,0l7.89-4.16c0.95-0.5,0.95-1.32,0-1.81L23.42,22.32z"/> | |||
| <path opacity="0.1765" fill="#C6BFD3" enable-background="new " d="M23.36,22.35c-0.94-0.49-2.47-0.49-3.41,0l-1.74,0.92 | |||
| c-0.94,0.5-2.48,0.5-3.42,0l-1.74-0.92c-0.94-0.49-2.47-0.49-3.41,0l-2.67,1.4c-0.94,0.49-0.94,1.31,0,1.8l7.82,4.12 | |||
| c0.94,0.49,2.48,0.49,3.42,0l7.82-4.12c0.94-0.49,0.94-1.3,0-1.8L23.36,22.35z"/> | |||
| <path opacity="0.1882" fill="#C2BAD1" enable-background="new " d="M23.3,22.37c-0.93-0.49-2.45-0.49-3.38,0l-1.73,0.91 | |||
| c-0.93,0.49-2.45,0.49-3.39,0l-1.73-0.91c-0.93-0.49-2.45-0.49-3.38,0l-2.64,1.39c-0.93,0.49-0.93,1.29,0,1.78l7.75,4.08 | |||
| c0.93,0.49,2.45,0.49,3.39,0l7.75-4.08c0.93-0.49,0.93-1.29,0-1.78L23.3,22.37z"/> | |||
| <path opacity="0.2" fill="#BEB6CE" enable-background="new " d="M23.24,22.39c-0.92-0.49-2.43-0.49-3.35,0l-1.71,0.9 | |||
| c-0.92,0.49-2.43,0.49-3.35,0l-1.71-0.9c-0.92-0.49-2.43-0.49-3.35,0l-2.62,1.38c-0.92,0.49-0.92,1.28,0,1.77l7.68,4.05 | |||
| c0.92,0.48,2.43,0.48,3.35,0l7.68-4.05c0.92-0.48,0.92-1.28,0-1.77L23.24,22.39z"/> | |||
| <path opacity="0.2118" fill="#BAB2CB" enable-background="new " d="M23.18,22.42c-0.91-0.48-2.41-0.48-3.32,0l-1.7,0.89 | |||
| c-0.91,0.48-2.41,0.48-3.32,0l-1.7-0.89c-0.91-0.48-2.41-0.48-3.32,0l-2.59,1.37c-0.91,0.48-0.91,1.27,0,1.75l7.61,4.01 | |||
| c0.91,0.48,2.41,0.48,3.32,0l7.61-4.01c0.91-0.48,0.91-1.27,0-1.75L23.18,22.42z"/> | |||
| <path opacity="0.2235" fill="#B6ADC8" enable-background="new " d="M23.12,22.44c-0.91-0.48-2.39-0.48-3.29,0l-1.68,0.88 | |||
| c-0.91,0.48-2.39,0.48-3.29,0l-1.68-0.88c-0.91-0.48-2.39-0.48-3.29,0L7.31,23.8c-0.91,0.48-0.91,1.26,0,1.73l7.54,3.97 | |||
| c0.91,0.48,2.39,0.48,3.29,0l7.54-3.97c0.9-0.48,0.9-1.26,0-1.73L23.12,22.44z"/> | |||
| <path opacity="0.2353" fill="#B3A9C5" enable-background="new " d="M23.06,22.46c-0.9-0.47-2.36-0.47-3.26,0l-1.66,0.88 | |||
| c-0.9,0.47-2.37,0.47-3.26,0l-1.66-0.88c-0.9-0.47-2.36-0.47-3.26,0L7.4,23.81c-0.9,0.47-0.9,1.25,0,1.72l7.47,3.94 | |||
| c0.9,0.47,2.37,0.47,3.26,0l7.47-3.94c0.9-0.47,0.9-1.25,0-1.72L23.06,22.46z"/> | |||
| <path opacity="0.2471" fill="#AFA5C2" enable-background="new " d="M23,22.49c-0.89-0.47-2.34-0.47-3.23,0l-1.65,0.87 | |||
| c-0.89,0.47-2.34,0.47-3.23,0l-1.65-0.87c-0.89-0.47-2.34-0.47-3.23,0l-2.52,1.33c-0.89,0.47-0.89,1.24,0,1.7l7.4,3.9 | |||
| c0.89,0.47,2.34,0.47,3.23,0l7.4-3.9c0.89-0.47,0.89-1.23,0-1.7L23,22.49z"/> | |||
| <path opacity="0.2588" fill="#ABA1BF" enable-background="new " d="M22.94,22.51c-0.88-0.46-2.32-0.46-3.2,0l-1.63,0.86 | |||
| c-0.88,0.46-2.32,0.46-3.2,0l-1.63-0.86c-0.88-0.46-2.32-0.46-3.2,0l-2.5,1.32c-0.88,0.46-0.88,1.22,0,1.69l7.33,3.86 | |||
| c0.88,0.46,2.32,0.46,3.2,0l7.33-3.86c0.88-0.46,0.88-1.22,0-1.69L22.94,22.51z"/> | |||
| <path opacity="0.2706" fill="#A79CBC" enable-background="new " d="M22.87,22.54c-0.87-0.46-2.3-0.46-3.17,0l-1.62,0.85 | |||
| c-0.87,0.46-2.3,0.46-3.17,0l-1.62-0.85c-0.87-0.46-2.3-0.46-3.17,0l-2.48,1.3c-0.87,0.46-0.87,1.21,0,1.67l7.26,3.83 | |||
| c0.87,0.46,2.3,0.46,3.17,0l7.26-3.83c0.87-0.46,0.87-1.21,0-1.67L22.87,22.54z"/> | |||
| <path opacity="0.2824" fill="#A398B9" enable-background="new " d="M22.81,22.56c-0.86-0.45-2.28-0.45-3.14,0l-1.6,0.84 | |||
| c-0.86,0.45-2.28,0.45-3.14,0l-1.6-0.84c-0.86-0.45-2.28-0.45-3.14,0l-2.45,1.29c-0.86,0.46-0.86,1.2,0,1.66l7.19,3.79 | |||
| c0.86,0.46,2.28,0.46,3.14,0l7.2-3.79c0.86-0.45,0.86-1.2,0-1.66L22.81,22.56z"/> | |||
| <path opacity="0.2941" fill="#9F94B6" enable-background="new " d="M22.75,22.58c-0.85-0.45-2.25-0.45-3.11,0l-1.59,0.84 | |||
| c-0.86,0.45-2.26,0.45-3.11,0l-1.59-0.84c-0.85-0.45-2.25-0.45-3.11,0l-2.43,1.28c-0.86,0.45-0.86,1.19,0,1.64l7.13,3.75 | |||
| c0.86,0.45,2.26,0.45,3.11,0l7.13-3.75c0.85-0.45,0.85-1.19,0-1.64L22.75,22.58z"/> | |||
| <path opacity="0.3059" fill="#9C8FB4" enable-background="new " d="M22.69,22.61c-0.85-0.45-2.23-0.45-3.08,0l-1.57,0.83 | |||
| c-0.85,0.45-2.23,0.45-3.08,0l-1.57-0.83c-0.85-0.45-2.23-0.45-3.08,0l-2.4,1.27c-0.85,0.45-0.85,1.18,0,1.62l7.06,3.72 | |||
| c0.85,0.45,2.23,0.45,3.08,0l7.06-3.72c0.85-0.44,0.85-1.18,0-1.62L22.69,22.61z"/> | |||
| <path opacity="0.3176" fill="#988BB1" enable-background="new " d="M22.63,22.63c-0.84-0.44-2.21-0.44-3.05,0l-1.55,0.82 | |||
| c-0.84,0.44-2.21,0.44-3.05,0l-1.55-0.82c-0.84-0.44-2.21-0.44-3.05,0L8,23.88c-0.84,0.44-0.84,1.17,0,1.61l6.99,3.68 | |||
| c0.84,0.44,2.21,0.44,3.05,0l6.99-3.68c0.84-0.44,0.84-1.17,0-1.61L22.63,22.63z"/> | |||
| <path opacity="0.3294" fill="#9487AE" enable-background="new " d="M22.57,22.66c-0.83-0.44-2.19-0.44-3.02,0l-1.54,0.81 | |||
| c-0.83,0.44-2.19,0.44-3.02,0l-1.54-0.81c-0.83-0.44-2.19-0.44-3.02,0L8.07,23.9c-0.83,0.44-0.83,1.15,0,1.59l6.92,3.64 | |||
| c0.83,0.44,2.19,0.44,3.02,0l6.92-3.64c0.83-0.44,0.83-1.15,0-1.59L22.57,22.66z"/> | |||
| <path opacity="0.3412" fill="#9082AB" enable-background="new " d="M22.51,22.68c-0.82-0.43-2.17-0.43-2.99,0L18,23.48 | |||
| c-0.82,0.43-2.17,0.43-2.99,0l-1.52-0.8c-0.82-0.43-2.17-0.43-2.99,0l-2.33,1.23c-0.82,0.43-0.82,1.14,0,1.58l6.85,3.61 | |||
| c0.82,0.43,2.17,0.43,2.99,0l6.85-3.61c0.82-0.43,0.82-1.14,0-1.58L22.51,22.68z"/> | |||
| <path opacity="0.3529" fill="#8C7EA8" enable-background="new " d="M22.45,22.71c-0.81-0.43-2.14-0.43-2.96,0l-1.51,0.79 | |||
| c-0.81,0.43-2.15,0.43-2.96,0l-1.51-0.79c-0.81-0.43-2.14-0.43-2.96,0l-2.31,1.22c-0.81,0.43-0.81,1.13,0,1.56l6.78,3.57 | |||
| c0.81,0.43,2.15,0.43,2.96,0l6.78-3.57c0.81-0.43,0.81-1.13,0-1.56L22.45,22.71z"/> | |||
| <path opacity="0.3647" fill="#887AA5" enable-background="new " d="M22.39,22.73c-0.81-0.42-2.12-0.42-2.93,0l-1.49,0.79 | |||
| c-0.81,0.42-2.12,0.42-2.93,0l-1.49-0.79c-0.81-0.42-2.12-0.42-2.93,0l-2.29,1.21c-0.8,0.42-0.8,1.12,0,1.54l6.71,3.53 | |||
| c0.81,0.43,2.12,0.43,2.93,0l6.71-3.53c0.8-0.42,0.8-1.12,0-1.54L22.39,22.73z"/> | |||
| <path opacity="0.3765" fill="#8576A2" enable-background="new " d="M22.33,22.75c-0.8-0.42-2.1-0.42-2.9,0l-1.48,0.78 | |||
| c-0.8,0.42-2.1,0.42-2.9,0l-1.48-0.78c-0.8-0.42-2.1-0.42-2.9,0l-2.26,1.19c-0.8,0.42-0.8,1.11,0,1.53l6.64,3.5 | |||
| c0.8,0.42,2.1,0.42,2.9,0l6.64-3.5c0.79-0.42,0.79-1.11,0-1.53L22.33,22.75z"/> | |||
| <path opacity="0.3882" fill="#81719F" enable-background="new " d="M22.26,22.78c-0.79-0.41-2.08-0.41-2.87,0l-1.46,0.77 | |||
| c-0.79,0.42-2.08,0.42-2.87,0l-1.46-0.77c-0.79-0.41-2.08-0.41-2.87,0L8.5,23.96c-0.79,0.42-0.79,1.1,0,1.51l6.57,3.46 | |||
| c0.79,0.42,2.08,0.42,2.87,0l6.57-3.46c0.79-0.42,0.79-1.1,0-1.51L22.26,22.78z"/> | |||
| <path opacity="0.4" fill="#7D6D9C" enable-background="new " d="M22.2,22.8c-0.78-0.41-2.06-0.41-2.84,0l-1.45,0.76 | |||
| c-0.78,0.41-2.06,0.41-2.84,0l-1.45-0.76c-0.78-0.41-2.06-0.41-2.84,0l-2.21,1.17c-0.78,0.41-0.78,1.08,0,1.5l6.5,3.42 | |||
| c0.78,0.41,2.06,0.41,2.84,0l6.5-3.42c0.78-0.41,0.78-1.08,0-1.5L22.2,22.8z"/> | |||
| <path opacity="0.4118" fill="#796999" enable-background="new " d="M22.14,22.82c-0.77-0.41-2.04-0.41-2.81,0l-1.43,0.76 | |||
| c-0.77,0.41-2.04,0.41-2.81,0l-1.43-0.76c-0.77-0.41-2.04-0.41-2.81,0l-2.19,1.15c-0.77,0.41-0.77,1.07,0,1.48l6.43,3.39 | |||
| c0.77,0.41,2.04,0.41,2.81,0l6.43-3.39c0.77-0.41,0.77-1.07,0-1.48L22.14,22.82z"/> | |||
| <path opacity="0.4235" fill="#756497" enable-background="new " d="M22.08,22.85c-0.76-0.4-2.01-0.4-2.78,0l-1.42,0.75 | |||
| c-0.76,0.4-2.01,0.4-2.78,0l-1.42-0.75c-0.76-0.4-2.01-0.4-2.78,0l-2.17,1.14c-0.76,0.4-0.76,1.06,0,1.46l6.36,3.35 | |||
| c0.76,0.4,2.01,0.4,2.78,0l6.36-3.35c0.76-0.4,0.76-1.06,0-1.46L22.08,22.85z"/> | |||
| <path opacity="0.4353" fill="#726094" enable-background="new " d="M22.02,22.87c-0.75-0.4-1.99-0.4-2.75,0l-1.4,0.74 | |||
| c-0.76,0.4-1.99,0.4-2.75,0l-1.4-0.74c-0.75-0.4-1.99-0.4-2.75,0L8.84,24c-0.76,0.4-0.76,1.05,0,1.45l6.29,3.31 | |||
| c0.76,0.4,1.99,0.4,2.75,0l6.29-3.31c0.75-0.4,0.75-1.05,0-1.45L22.02,22.87z"/> | |||
| <path opacity="0.4471" fill="#6E5C91" enable-background="new " d="M21.96,22.9c-0.75-0.39-1.97-0.39-2.72,0l-1.38,0.73 | |||
| c-0.75,0.39-1.97,0.39-2.72,0l-1.39-0.73c-0.75-0.39-1.97-0.39-2.72,0l-2.12,1.12c-0.75,0.39-0.75,1.04,0,1.43l6.22,3.28 | |||
| c0.75,0.4,1.97,0.4,2.72,0l6.22-3.28c0.75-0.39,0.75-1.04,0-1.43L21.96,22.9z"/> | |||
| <path opacity="0.4588" fill="#6A588E" enable-background="new " d="M21.9,22.92c-0.74-0.39-1.95-0.39-2.68,0l-1.37,0.72 | |||
| c-0.74,0.39-1.95,0.39-2.69,0l-1.37-0.72c-0.74-0.39-1.95-0.39-2.69,0L9,24.03c-0.74,0.39-0.74,1.03,0,1.42l6.15,3.24 | |||
| c0.74,0.39,1.95,0.39,2.69,0L24,25.44c0.74-0.39,0.74-1.03,0-1.42L21.9,22.92z"/> | |||
| <path opacity="0.4706" fill="#66538B" enable-background="new " d="M21.84,22.94c-0.73-0.38-1.92-0.38-2.65,0l-1.35,0.72 | |||
| c-0.73,0.38-1.93,0.38-2.66,0l-1.35-0.72c-0.73-0.38-1.92-0.38-2.66,0L9.1,24.03c-0.73,0.38-0.73,1.01,0,1.4l6.08,3.2 | |||
| c0.73,0.39,1.92,0.39,2.66,0l6.08-3.2c0.73-0.38,0.73-1.01,0-1.4L21.84,22.94z"/> | |||
| <path opacity="0.4824" fill="#624F88" enable-background="new " d="M21.78,22.97c-0.72-0.38-1.9-0.38-2.63,0l-1.34,0.71 | |||
| c-0.72,0.38-1.9,0.38-2.63,0l-1.34-0.71c-0.72-0.38-1.9-0.38-2.63,0l-2.05,1.08c-0.72,0.38-0.72,1,0,1.38l6.01,3.17 | |||
| c0.72,0.38,1.9,0.38,2.63,0l6.01-3.17c0.72-0.38,0.72-1,0-1.38L21.78,22.97z"/> | |||
| <path opacity="0.4941" fill="#5E4B85" enable-background="new " d="M21.72,22.99c-0.71-0.38-1.88-0.38-2.59,0l-1.32,0.7 | |||
| c-0.71,0.37-1.88,0.37-2.6,0l-1.32-0.7c-0.71-0.38-1.88-0.38-2.6,0l-2.03,1.07c-0.71,0.38-0.71,0.99,0,1.37l5.94,3.13 | |||
| c0.71,0.38,1.88,0.38,2.6,0l5.94-3.13c0.71-0.38,0.71-0.99,0-1.37L21.72,22.99z"/> | |||
| <path opacity="0.5059" fill="#5B4682" enable-background="new " d="M21.65,23.02c-0.7-0.37-1.86-0.37-2.56,0l-1.31,0.69 | |||
| c-0.71,0.37-1.86,0.37-2.57,0l-1.31-0.69c-0.71-0.37-1.86-0.37-2.56,0l-2,1.05c-0.71,0.37-0.71,0.98,0,1.35l5.87,3.09 | |||
| c0.71,0.37,1.86,0.37,2.57,0l5.88-3.09c0.7-0.37,0.7-0.98,0-1.35L21.65,23.02z"/> | |||
| <path opacity="0.5176" fill="#57427F" enable-background="new " d="M21.59,23.04c-0.7-0.37-1.84-0.37-2.53,0l-1.29,0.68 | |||
| c-0.7,0.37-1.84,0.37-2.54,0l-1.29-0.68c-0.7-0.37-1.84-0.37-2.53,0l-1.98,1.04c-0.7,0.37-0.7,0.97,0,1.34l5.81,3.06 | |||
| c0.7,0.37,1.84,0.37,2.54,0l5.8-3.06c0.7-0.37,0.7-0.97,0-1.34L21.59,23.04z"/> | |||
| <path opacity="0.5294" fill="#533E7C" enable-background="new " d="M21.53,23.06c-0.69-0.36-1.82-0.36-2.5,0l-1.28,0.67 | |||
| c-0.69,0.36-1.82,0.36-2.5,0l-1.28-0.67c-0.69-0.36-1.81-0.36-2.5,0l-1.95,1.03c-0.69,0.36-0.69,0.96,0,1.32l5.73,3.02 | |||
| c0.69,0.37,1.82,0.37,2.5,0l5.74-3.02c0.69-0.36,0.69-0.96,0-1.32L21.53,23.06z"/> | |||
| <path opacity="0.5412" fill="#4F397A" enable-background="new " d="M21.47,23.09c-0.68-0.36-1.79-0.36-2.47,0l-1.26,0.67 | |||
| c-0.68,0.36-1.79,0.36-2.48,0L14,23.09c-0.68-0.36-1.79-0.36-2.47,0L9.6,24.1c-0.68,0.36-0.68,0.95,0,1.3l5.67,2.98 | |||
| c0.68,0.36,1.79,0.36,2.48,0l5.67-2.98c0.68-0.36,0.68-0.95,0-1.3L21.47,23.09z"/> | |||
| <path opacity="0.5529" fill="#4B3577" enable-background="new " d="M21.41,23.11c-0.67-0.35-1.77-0.35-2.44,0l-1.25,0.66 | |||
| c-0.67,0.35-1.77,0.35-2.44,0l-1.25-0.66c-0.67-0.35-1.77-0.35-2.44,0l-1.91,1c-0.67,0.35-0.67,0.93,0,1.29l5.6,2.95 | |||
| c0.67,0.36,1.77,0.36,2.44,0l5.6-2.95c0.67-0.35,0.67-0.93,0-1.29L21.41,23.11z"/> | |||
| <path opacity="0.5647" fill="#473174" enable-background="new " d="M21.35,23.13c-0.66-0.35-1.75-0.35-2.41,0l-1.23,0.65 | |||
| c-0.66,0.35-1.75,0.35-2.41,0l-1.23-0.65c-0.66-0.35-1.75-0.35-2.41,0l-1.88,0.99c-0.66,0.35-0.66,0.92,0,1.27l5.53,2.91 | |||
| c0.66,0.35,1.75,0.35,2.41,0l5.53-2.91c0.66-0.35,0.66-0.92,0-1.27L21.35,23.13z"/> | |||
| <path opacity="0.5765" fill="#442D71" enable-background="new " d="M21.29,23.16c-0.66-0.34-1.73-0.34-2.38,0L17.7,23.8 | |||
| c-0.66,0.34-1.73,0.34-2.38,0l-1.21-0.64c-0.65-0.34-1.73-0.34-2.38,0l-1.86,0.98c-0.66,0.34-0.66,0.91,0,1.26l5.46,2.87 | |||
| c0.66,0.35,1.73,0.35,2.38,0l5.46-2.87c0.65-0.35,0.65-0.91,0-1.26L21.29,23.16z"/> | |||
| <path opacity="0.5882" fill="#40286E" enable-background="new " d="M21.23,23.18c-0.65-0.34-1.71-0.34-2.35,0l-1.2,0.63 | |||
| c-0.65,0.34-1.71,0.34-2.35,0l-1.2-0.63c-0.65-0.34-1.7-0.34-2.35,0l-1.84,0.97c-0.65,0.34-0.65,0.9,0,1.24l5.39,2.84 | |||
| c0.65,0.34,1.71,0.34,2.35,0l5.39-2.84c0.64-0.34,0.64-0.9,0-1.24L21.23,23.18z"/> | |||
| <path id="shadow_1_" opacity="0.6" fill="#3C246B" enable-background="new " d="M21.17,23.21c-0.64-0.34-1.68-0.34-2.32,0 | |||
| l-1.18,0.63c-0.64,0.33-1.68,0.33-2.32,0l-1.18-0.63c-0.64-0.34-1.68-0.34-2.32,0l-1.81,0.96c-0.64,0.34-0.64,0.89,0,1.22l5.32,2.8 | |||
| c0.64,0.34,1.68,0.34,2.32,0l5.32-2.8c0.64-0.34,0.64-0.89,0-1.22L21.17,23.21z"/> | |||
| </g> | |||
| <polygon id="u" fill="#5F29C6" points="29,6.91 29,22.57 16.5,29.09 4,22.57 4,6.91 4,6.91 10.93,3.3 10.93,18.66 16.5,21.56 | |||
| 22.07,18.66 22.07,3.3 "/> | |||
| <polygon id="line" fill="#EAE3F9" points="29,6.91 29,7.92 22.07,11.54 16.95,14.21 16.95,28.86 16.5,29.09 16.05,28.86 | |||
| 16.05,14.21 10.93,11.54 4,7.92 4,6.91 4,6.91 10.93,10.52 16.5,13.43 22.07,10.52 "/> | |||
| </svg> | |||
| @ -0,0 +1,168 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |||
| width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"> | |||
| <g opacity="0.4"> | |||
| <path id="shadow_2_" fill="#FFFFFF" fill-opacity="0" d="M35.82,34.58c-1.62-0.85-4.26-0.85-5.88,0l-3,1.58 | |||
| c-1.62,0.86-4.27,0.86-5.88,0l-3-1.58c-1.62-0.85-4.26-0.85-5.88,0L7.59,37c-1.62,0.85-1.62,2.25,0,3.09l13.47,7.1 | |||
| c1.62,0.85,4.27,0.85,5.88,0l13.47-7.1c1.62-0.85,1.62-2.25,0-3.09L35.82,34.58z"/> | |||
| <path opacity="0.0118" fill="#FBFBFC" enable-background="new " d="M35.73,34.62c-1.6-0.84-4.23-0.84-5.83,0l-2.98,1.56 | |||
| c-1.61,0.85-4.23,0.85-5.84,0l-2.98-1.56c-1.6-0.84-4.23-0.84-5.83,0l-4.55,2.4c-1.61,0.84-1.61,2.23,0,3.07l13.37,7.04 | |||
| c1.6,0.84,4.23,0.84,5.84,0l13.37-7.04c1.6-0.84,1.6-2.23,0-3.07L35.73,34.62z"/> | |||
| <path opacity="0.0235" fill="#F7F6F9" enable-background="new " d="M35.63,34.65c-1.59-0.84-4.2-0.84-5.79,0L26.9,36.2 | |||
| c-1.59,0.84-4.2,0.84-5.79,0l-2.95-1.55c-1.59-0.84-4.2-0.84-5.79,0l-4.52,2.38c-1.59,0.84-1.59,2.21,0,3.05l13.26,6.99 | |||
| c1.59,0.83,4.2,0.83,5.79,0l13.26-6.99c1.59-0.83,1.59-2.21,0-3.05L35.63,34.65z"/> | |||
| <path opacity="0.0353" fill="#F4F2F6" enable-background="new " d="M35.54,34.69c-1.58-0.83-4.16-0.83-5.74,0l-2.93,1.54 | |||
| c-1.58,0.83-4.17,0.83-5.74,0l-2.93-1.54c-1.58-0.83-4.16-0.83-5.74,0l-4.48,2.36c-1.58,0.83-1.58,2.19,0,3.02L21.13,47 | |||
| c1.58,0.83,4.16,0.83,5.74,0l13.16-6.93c1.58-0.83,1.58-2.19,0-3.02L35.54,34.69z"/> | |||
| <path opacity="0.0471" fill="#F0EEF3" enable-background="new " d="M35.45,34.73c-1.56-0.82-4.13-0.82-5.69,0l-2.91,1.53 | |||
| c-1.57,0.83-4.13,0.83-5.7,0l-2.91-1.53c-1.57-0.82-4.13-0.82-5.7,0L8.1,37.07c-1.57,0.82-1.57,2.18,0,3l13.05,6.88 | |||
| c1.57,0.82,4.13,0.82,5.7,0l13.05-6.88c1.56-0.82,1.56-2.17,0-3L35.45,34.73z"/> | |||
| <path opacity="0.0588" fill="#ECEAF0" enable-background="new " d="M35.36,34.76c-1.55-0.82-4.1-0.82-5.65,0l-2.88,1.51 | |||
| c-1.55,0.82-4.1,0.82-5.65,0l-2.88-1.51c-1.55-0.82-4.1-0.82-5.65,0l-4.41,2.33c-1.55,0.82-1.55,2.16,0,2.97l12.94,6.82 | |||
| c1.55,0.81,4.1,0.81,5.65,0l12.95-6.82c1.55-0.82,1.55-2.16,0-2.97L35.36,34.76z"/> | |||
| <path opacity="0.0706" fill="#E8E5EE" enable-background="new " d="M35.26,34.8c-1.54-0.81-4.06-0.81-5.6,0l-2.86,1.5 | |||
| c-1.54,0.81-4.06,0.81-5.61,0l-2.86-1.5c-1.54-0.81-4.06-0.81-5.6,0l-4.37,2.31c-1.54,0.81-1.54,2.14,0,2.95l12.84,6.76 | |||
| c1.54,0.81,4.06,0.81,5.61,0l12.84-6.76c1.54-0.81,1.54-2.14,0-2.95L35.26,34.8z"/> | |||
| <path opacity="0.0824" fill="#E4E1EB" enable-background="new " d="M35.17,34.83c-1.53-0.8-4.03-0.8-5.56,0l-2.83,1.49 | |||
| c-1.53,0.81-4.03,0.81-5.56,0l-2.84-1.49c-1.53-0.8-4.03-0.8-5.56,0l-4.34,2.29c-1.53,0.8-1.53,2.12,0,2.92l12.73,6.71 | |||
| c1.53,0.8,4.03,0.8,5.56,0l12.73-6.71c1.53-0.8,1.53-2.12,0-2.92L35.17,34.83z"/> | |||
| <path opacity="0.0941" fill="#E0DDE8" enable-background="new " d="M35.08,34.87c-1.51-0.8-4-0.8-5.51,0l-2.81,1.48 | |||
| c-1.52,0.8-4,0.8-5.51,0l-2.81-1.48c-1.52-0.8-4-0.8-5.51,0l-4.3,2.27c-1.52,0.8-1.52,2.1,0,2.9l12.63,6.65c1.52,0.8,4,0.8,5.51,0 | |||
| l12.63-6.65c1.51-0.8,1.51-2.1,0-2.9L35.08,34.87z"/> | |||
| <path opacity="0.1059" fill="#DDD8E5" enable-background="new " d="M34.99,34.91c-1.5-0.79-3.96-0.79-5.46,0l-2.79,1.46 | |||
| c-1.5,0.79-3.96,0.79-5.47,0l-2.79-1.46c-1.5-0.79-3.96-0.79-5.47,0l-4.27,2.25c-1.5,0.79-1.5,2.09,0,2.88l12.52,6.6 | |||
| c1.5,0.79,3.96,0.79,5.47,0l12.52-6.6c1.5-0.79,1.5-2.09,0-2.88L34.99,34.91z"/> | |||
| <path opacity="0.1176" fill="#D9D4E2" enable-background="new " d="M34.89,34.94c-1.49-0.78-3.93-0.78-5.42,0l-2.76,1.45 | |||
| c-1.49,0.79-3.93,0.79-5.42,0l-2.77-1.45c-1.49-0.78-3.93-0.78-5.42,0l-4.23,2.23c-1.49,0.78-1.49,2.07,0,2.85l12.41,6.54 | |||
| c1.49,0.78,3.93,0.78,5.42,0l12.42-6.54c1.49-0.78,1.49-2.07,0-2.85L34.89,34.94z"/> | |||
| <path opacity="0.1294" fill="#D5D0DF" enable-background="new " d="M34.8,34.98c-1.48-0.78-3.9-0.78-5.37,0l-2.74,1.44 | |||
| c-1.48,0.78-3.9,0.78-5.38,0l-2.74-1.44c-1.48-0.78-3.9-0.78-5.37,0L9,37.19c-1.48,0.78-1.48,2.05,0,2.83l12.31,6.49 | |||
| c1.48,0.78,3.9,0.78,5.38,0L39,40.02c1.48-0.78,1.48-2.05,0-2.83L34.8,34.98z"/> | |||
| <path opacity="0.1412" fill="#D1CBDC" enable-background="new " d="M34.71,35.02c-1.46-0.77-3.86-0.77-5.32,0l-2.72,1.43 | |||
| c-1.47,0.77-3.86,0.77-5.33,0l-2.72-1.43c-1.47-0.77-3.86-0.77-5.33,0l-4.16,2.19c-1.47,0.77-1.47,2.03,0,2.8l12.2,6.43 | |||
| c1.47,0.77,3.86,0.77,5.33,0l12.21-6.43c1.46-0.77,1.46-2.03,0-2.8L34.71,35.02z"/> | |||
| <path opacity="0.1529" fill="#CDC7D9" enable-background="new " d="M34.62,35.05c-1.45-0.76-3.83-0.76-5.28,0l-2.69,1.42 | |||
| c-1.45,0.77-3.83,0.77-5.28,0l-2.69-1.42c-1.45-0.76-3.83-0.76-5.28,0l-4.12,2.17c-1.45,0.76-1.45,2.02,0,2.78l12.1,6.38 | |||
| c1.45,0.76,3.83,0.76,5.28,0L38.76,40c1.45-0.76,1.45-2.02,0-2.78L34.62,35.05z"/> | |||
| <path opacity="0.1647" fill="#C9C3D6" enable-background="new " d="M34.52,35.09c-1.44-0.76-3.79-0.76-5.23,0l-2.67,1.4 | |||
| c-1.44,0.76-3.8,0.76-5.24,0l-2.67-1.4c-1.44-0.76-3.79-0.76-5.23,0l-4.09,2.15c-1.44,0.76-1.44,2,0,2.76l11.99,6.32 | |||
| c1.44,0.76,3.8,0.76,5.24,0L38.61,40c1.44-0.76,1.44-2,0-2.76L34.52,35.09z"/> | |||
| <path opacity="0.1765" fill="#C6BFD3" enable-background="new " d="M34.43,35.13c-1.43-0.75-3.76-0.75-5.19,0l-2.65,1.39 | |||
| c-1.43,0.75-3.76,0.75-5.19,0l-2.65-1.39c-1.43-0.75-3.76-0.75-5.19,0l-4.05,2.14c-1.43,0.75-1.43,1.98,0,2.73l11.89,6.26 | |||
| c1.43,0.75,3.76,0.75,5.19,0L38.48,40c1.42-0.75,1.42-1.98,0-2.73L34.43,35.13z"/> | |||
| <path opacity="0.1882" fill="#C2BAD1" enable-background="new " d="M34.34,35.16c-1.41-0.74-3.73-0.74-5.14,0l-2.62,1.38 | |||
| c-1.42,0.75-3.73,0.75-5.14,0l-2.62-1.38c-1.41-0.74-3.73-0.74-5.14,0l-4.01,2.12c-1.42,0.74-1.42,1.96,0,2.71l11.78,6.21 | |||
| c1.41,0.74,3.73,0.74,5.14,0l11.78-6.21c1.41-0.74,1.41-1.96,0-2.71L34.34,35.16z"/> | |||
| <path opacity="0.2" fill="#BEB6CE" enable-background="new " d="M34.24,35.2c-1.4-0.74-3.69-0.74-5.09,0l-2.6,1.37 | |||
| c-1.4,0.74-3.7,0.74-5.1,0l-2.6-1.37c-1.4-0.74-3.69-0.74-5.1,0l-3.98,2.1c-1.4,0.74-1.4,1.95,0,2.68l11.67,6.15 | |||
| c1.4,0.74,3.7,0.74,5.1,0l11.68-6.15c1.4-0.74,1.4-1.95,0-2.68L34.24,35.2z"/> | |||
| <path opacity="0.2118" fill="#BAB2CB" enable-background="new " d="M34.15,35.24c-1.39-0.73-3.66-0.73-5.05,0l-2.58,1.35 | |||
| c-1.39,0.73-3.66,0.73-5.05,0l-2.58-1.35c-1.39-0.73-3.66-0.73-5.05,0L9.9,37.32c-1.39,0.73-1.39,1.93,0,2.66l11.57,6.1 | |||
| c1.39,0.73,3.66,0.73,5.05,0l11.57-6.1c1.39-0.73,1.39-1.93,0-2.66L34.15,35.24z"/> | |||
| <path opacity="0.2235" fill="#B6ADC8" enable-background="new " d="M34.06,35.27c-1.38-0.72-3.63-0.72-5,0l-2.55,1.34 | |||
| c-1.38,0.73-3.63,0.73-5.01,0l-2.55-1.34c-1.38-0.72-3.63-0.72-5.01,0l-3.91,2.06c-1.38,0.72-1.38,1.91,0,2.63L21.49,46 | |||
| c1.38,0.72,3.63,0.72,5.01,0l11.47-6.04c1.37-0.72,1.37-1.91,0-2.63L34.06,35.27z"/> | |||
| <path opacity="0.2353" fill="#B3A9C5" enable-background="new " d="M33.97,35.31c-1.36-0.72-3.6-0.72-4.96,0l-2.53,1.33 | |||
| c-1.36,0.72-3.6,0.72-4.96,0l-2.53-1.33c-1.36-0.72-3.59-0.72-4.96,0l-3.87,2.04c-1.36,0.71-1.36,1.89,0,2.61l11.36,5.98 | |||
| c1.36,0.72,3.6,0.72,4.96,0l11.36-5.98c1.36-0.72,1.36-1.89,0-2.61L33.97,35.31z"/> | |||
| <path opacity="0.2471" fill="#AFA5C2" enable-background="new " d="M33.87,35.34c-1.35-0.71-3.56-0.71-4.91,0l-2.5,1.32 | |||
| c-1.35,0.71-3.56,0.71-4.91,0l-2.51-1.32c-1.35-0.71-3.56-0.71-4.91,0l-3.83,2.02c-1.35,0.71-1.35,1.87,0,2.58l11.25,5.93 | |||
| c1.35,0.71,3.56,0.71,4.91,0l11.25-5.93c1.35-0.71,1.35-1.88,0-2.58L33.87,35.34z"/> | |||
| <path opacity="0.2588" fill="#ABA1BF" enable-background="new " d="M33.78,35.38c-1.34-0.7-3.53-0.7-4.86,0l-2.48,1.3 | |||
| c-1.34,0.71-3.53,0.71-4.87,0l-2.48-1.3c-1.34-0.7-3.53-0.7-4.87,0l-3.8,2c-1.34,0.7-1.34,1.86,0,2.56l11.15,5.87 | |||
| c1.34,0.7,3.53,0.7,4.87,0l11.15-5.87c1.34-0.71,1.34-1.86,0-2.56L33.78,35.38z"/> | |||
| <path opacity="0.2706" fill="#A79CBC" enable-background="new " d="M33.69,35.42c-1.32-0.7-3.5-0.7-4.82,0l-2.46,1.29 | |||
| c-1.33,0.7-3.5,0.7-4.82,0l-2.46-1.29c-1.33-0.7-3.49-0.7-4.82,0l-3.76,1.98c-1.33,0.7-1.33,1.84,0,2.54l11.04,5.82 | |||
| c1.33,0.7,3.5,0.7,4.82,0l11.04-5.82c1.32-0.7,1.32-1.84,0-2.54L33.69,35.42z"/> | |||
| <path opacity="0.2824" fill="#A398B9" enable-background="new " d="M33.6,35.45c-1.31-0.69-3.46-0.69-4.77,0l-2.44,1.28 | |||
| c-1.31,0.69-3.46,0.69-4.78,0l-2.44-1.28c-1.31-0.69-3.46-0.69-4.77,0l-3.73,1.97c-1.31,0.69-1.31,1.82,0,2.51l10.94,5.76 | |||
| c1.31,0.69,3.46,0.69,4.78,0l10.94-5.76c1.31-0.69,1.31-1.82,0-2.51L33.6,35.45z"/> | |||
| <path opacity="0.2941" fill="#9F94B6" enable-background="new " d="M33.5,35.49c-1.3-0.68-3.43-0.68-4.73,0l-2.41,1.27 | |||
| c-1.3,0.68-3.43,0.68-4.73,0l-2.41-1.27c-1.3-0.68-3.43-0.68-4.73,0l-3.69,1.95c-1.3,0.68-1.3,1.8,0,2.49l10.83,5.71 | |||
| c1.3,0.68,3.43,0.68,4.73,0l10.83-5.71c1.3-0.68,1.3-1.81,0-2.49L33.5,35.49z"/> | |||
| <path opacity="0.3059" fill="#9C8FB4" enable-background="new " d="M33.41,35.53c-1.29-0.68-3.39-0.68-4.68,0l-2.39,1.26 | |||
| c-1.29,0.68-3.4,0.68-4.68,0l-2.39-1.26c-1.29-0.68-3.39-0.68-4.68,0l-3.65,1.93c-1.29,0.68-1.29,1.79,0,2.46l10.72,5.65 | |||
| c1.29,0.68,3.39,0.68,4.68,0l10.73-5.65c1.28-0.68,1.28-1.79,0-2.46L33.41,35.53z"/> | |||
| <path opacity="0.3176" fill="#988BB1" enable-background="new " d="M33.32,35.56c-1.27-0.67-3.36-0.67-4.63,0l-2.37,1.24 | |||
| c-1.28,0.67-3.36,0.67-4.64,0l-2.37-1.24c-1.27-0.67-3.36-0.67-4.64,0l-3.62,1.91c-1.28,0.67-1.28,1.77,0,2.44l10.62,5.59 | |||
| c1.27,0.67,3.36,0.67,4.64,0l10.62-5.59c1.27-0.67,1.27-1.77,0-2.44L33.32,35.56z"/> | |||
| <path opacity="0.3294" fill="#9487AE" enable-background="new " d="M33.23,35.6c-1.26-0.66-3.33-0.66-4.59,0l-2.34,1.23 | |||
| c-1.26,0.67-3.33,0.67-4.59,0l-2.34-1.23c-1.26-0.66-3.33-0.66-4.59,0l-3.58,1.89c-1.26,0.66-1.26,1.75,0,2.42l10.51,5.54 | |||
| c1.26,0.66,3.33,0.66,4.59,0l10.51-5.54c1.26-0.67,1.26-1.75,0-2.42L33.23,35.6z"/> | |||
| <path opacity="0.3412" fill="#9082AB" enable-background="new " d="M33.13,35.64c-1.25-0.66-3.29-0.66-4.54,0l-2.32,1.22 | |||
| c-1.25,0.66-3.3,0.66-4.54,0l-2.32-1.22c-1.25-0.66-3.29-0.66-4.54,0l-3.55,1.87c-1.25,0.66-1.25,1.73,0,2.39l10.41,5.48 | |||
| c1.25,0.66,3.29,0.66,4.54,0l10.41-5.48c1.25-0.66,1.25-1.74,0-2.39L33.13,35.64z"/> | |||
| <path opacity="0.3529" fill="#8C7EA8" enable-background="new " d="M33.04,35.67c-1.24-0.65-3.26-0.65-4.5,0l-2.29,1.21 | |||
| c-1.24,0.65-3.26,0.65-4.5,0l-2.29-1.21c-1.24-0.65-3.26-0.65-4.5,0l-3.51,1.85c-1.24,0.65-1.24,1.71,0,2.37l10.3,5.43 | |||
| c1.24,0.65,3.26,0.65,4.5,0l10.3-5.43c1.23-0.65,1.23-1.72,0-2.37L33.04,35.67z"/> | |||
| <path opacity="0.3647" fill="#887AA5" enable-background="new " d="M32.95,35.71c-1.22-0.64-3.23-0.64-4.45,0l-2.27,1.19 | |||
| c-1.22,0.64-3.23,0.64-4.45,0l-2.27-1.19c-1.22-0.64-3.23-0.64-4.45,0l-3.47,1.83c-1.22,0.64-1.22,1.7,0,2.34l10.2,5.37 | |||
| c1.22,0.65,3.23,0.65,4.45,0l10.2-5.37c1.22-0.65,1.22-1.7,0-2.34L32.95,35.71z"/> | |||
| <path opacity="0.3765" fill="#8576A2" enable-background="new " d="M32.86,35.75c-1.21-0.64-3.19-0.64-4.4,0l-2.25,1.18 | |||
| c-1.21,0.64-3.2,0.64-4.41,0l-2.25-1.18c-1.21-0.64-3.19-0.64-4.41,0l-3.44,1.81c-1.21,0.64-1.21,1.68,0,2.32l10.09,5.32 | |||
| c1.21,0.64,3.19,0.64,4.41,0l10.09-5.32c1.21-0.64,1.21-1.68,0-2.32L32.86,35.75z"/> | |||
| <path opacity="0.3882" fill="#81719F" enable-background="new " d="M32.76,35.78c-1.2-0.63-3.16-0.63-4.36,0l-2.22,1.17 | |||
| c-1.2,0.63-3.16,0.63-4.36,0l-2.22-1.17c-1.2-0.63-3.16-0.63-4.36,0l-3.4,1.79c-1.2,0.63-1.2,1.66,0,2.29l9.99,5.26 | |||
| c1.2,0.63,3.16,0.63,4.36,0l9.99-5.26c1.2-0.63,1.2-1.67,0-2.29L32.76,35.78z"/> | |||
| <path opacity="0.4" fill="#7D6D9C" enable-background="new " d="M32.67,35.82c-1.19-0.63-3.13-0.63-4.31,0l-2.2,1.16 | |||
| c-1.19,0.62-3.13,0.62-4.31,0l-2.2-1.16c-1.19-0.63-3.13-0.63-4.31,0l-3.37,1.77c-1.19,0.62-1.19,1.64,0,2.27l9.88,5.2 | |||
| c1.19,0.63,3.13,0.63,4.31,0l9.88-5.2c1.18-0.63,1.18-1.65,0-2.27L32.67,35.82z"/> | |||
| <path opacity="0.4118" fill="#796999" enable-background="new " d="M32.58,35.85c-1.17-0.62-3.09-0.62-4.27,0L26.13,37 | |||
| c-1.17,0.62-3.09,0.62-4.27,0l-2.18-1.15c-1.17-0.62-3.09-0.62-4.27,0l-3.33,1.76c-1.17,0.62-1.17,1.63,0,2.25L21.87,45 | |||
| c1.17,0.62,3.09,0.62,4.27,0l9.78-5.15c1.17-0.62,1.17-1.63,0-2.25L32.58,35.85z"/> | |||
| <path opacity="0.4235" fill="#756497" enable-background="new " d="M32.48,35.89c-1.16-0.61-3.06-0.61-4.22,0l-2.15,1.13 | |||
| c-1.16,0.61-3.06,0.61-4.22,0l-2.15-1.13c-1.16-0.61-3.06-0.61-4.22,0l-3.29,1.74c-1.16,0.61-1.16,1.61,0,2.22l9.67,5.09 | |||
| c1.16,0.61,3.06,0.61,4.22,0l9.67-5.09c1.16-0.61,1.16-1.61,0-2.22L32.48,35.89z"/> | |||
| <path opacity="0.4353" fill="#726094" enable-background="new " d="M32.39,35.93c-1.15-0.6-3.03-0.6-4.17,0l-2.13,1.12 | |||
| c-1.15,0.6-3.03,0.6-4.18,0l-2.13-1.12c-1.15-0.6-3.03-0.6-4.18,0l-3.26,1.72c-1.15,0.6-1.15,1.59,0,2.2l9.56,5.04 | |||
| c1.15,0.61,3.03,0.61,4.18,0l9.56-5.04c1.15-0.61,1.15-1.6,0-2.2L32.39,35.93z"/> | |||
| <path opacity="0.4471" fill="#6E5C91" enable-background="new " d="M32.3,35.96c-1.13-0.6-2.99-0.6-4.13,0l-2.11,1.11 | |||
| c-1.14,0.6-2.99,0.6-4.13,0l-2.11-1.11c-1.14-0.6-2.99-0.6-4.13,0l-3.22,1.7c-1.14,0.6-1.14,1.57,0,2.17l9.46,4.98 | |||
| c1.13,0.6,2.99,0.6,4.13,0l9.46-4.98c1.13-0.6,1.13-1.58,0-2.17L32.3,35.96z"/> | |||
| <path opacity="0.4588" fill="#6A588E" enable-background="new " d="M32.21,36c-1.12-0.59-2.96-0.59-4.08,0l-2.08,1.1 | |||
| c-1.12,0.59-2.96,0.59-4.08,0L19.88,36c-1.12-0.59-2.96-0.59-4.08,0l-3.19,1.68c-1.12,0.59-1.12,1.56,0,2.15l9.35,4.92 | |||
| c1.12,0.59,2.96,0.59,4.08,0l9.35-4.92c1.12-0.59,1.12-1.56,0-2.15L32.21,36z"/> | |||
| <path opacity="0.4706" fill="#66538B" enable-background="new " d="M32.11,36.04c-1.11-0.58-2.93-0.58-4.04,0l-2.06,1.08 | |||
| c-1.11,0.58-2.93,0.58-4.04,0l-2.06-1.08c-1.11-0.58-2.93-0.58-4.04,0l-3.15,1.66c-1.11,0.58-1.11,1.54,0,2.13l9.25,4.87 | |||
| c1.11,0.59,2.93,0.59,4.04,0l9.25-4.87c1.11-0.59,1.11-1.54,0-2.13L32.11,36.04z"/> | |||
| <path opacity="0.4824" fill="#624F88" enable-background="new " d="M32.02,36.07c-1.1-0.58-2.89-0.58-3.99,0L26,37.14 | |||
| c-1.1,0.58-2.89,0.58-3.99,0l-2.04-1.07c-1.1-0.58-2.89-0.58-3.99,0l-3.11,1.64c-1.1,0.58-1.1,1.52,0,2.1l9.14,4.81 | |||
| c1.1,0.58,2.89,0.58,3.99,0l9.14-4.81c1.09-0.58,1.09-1.53,0-2.1L32.02,36.07z"/> | |||
| <path opacity="0.4941" fill="#5E4B85" enable-background="new " d="M31.93,36.11c-1.08-0.57-2.86-0.57-3.94,0l-2.01,1.06 | |||
| c-1.09,0.57-2.86,0.57-3.94,0l-2.01-1.06c-1.09-0.57-2.86-0.57-3.94,0l-3.08,1.62c-1.08,0.57-1.08,1.5,0,2.08l9.04,4.76 | |||
| c1.08,0.57,2.86,0.57,3.94,0l9.04-4.76c1.08-0.57,1.08-1.51,0-2.08L31.93,36.11z"/> | |||
| <path opacity="0.5059" fill="#5B4682" enable-background="new " d="M31.84,36.15c-1.07-0.57-2.83-0.57-3.9,0l-1.99,1.05 | |||
| c-1.07,0.56-2.83,0.56-3.9,0l-1.99-1.05c-1.07-0.57-2.82-0.57-3.9,0l-3.04,1.6c-1.07,0.56-1.07,1.49,0,2.05l8.93,4.7 | |||
| c1.07,0.57,2.82,0.57,3.9,0l8.93-4.7c1.07-0.57,1.07-1.49,0-2.05L31.84,36.15z"/> | |||
| <path opacity="0.5176" fill="#57427F" enable-background="new " d="M31.74,36.18c-1.06-0.56-2.79-0.56-3.85,0l-1.96,1.04 | |||
| c-1.06,0.56-2.79,0.56-3.85,0l-1.96-1.04c-1.06-0.56-2.79-0.56-3.85,0l-3.01,1.58c-1.06,0.56-1.06,1.47,0,2.03l8.82,4.65 | |||
| c1.06,0.56,2.79,0.56,3.85,0l8.82-4.65c1.06-0.56,1.06-1.47,0-2.03L31.74,36.18z"/> | |||
| <path opacity="0.5294" fill="#533E7C" enable-background="new " d="M31.65,36.22c-1.05-0.55-2.76-0.55-3.8,0l-1.94,1.02 | |||
| c-1.05,0.55-2.76,0.55-3.81,0l-1.94-1.02c-1.05-0.55-2.76-0.55-3.81,0l-2.97,1.57c-1.05,0.55-1.05,1.45,0,2l8.72,4.59 | |||
| c1.05,0.55,2.76,0.55,3.81,0l8.72-4.59c1.04-0.55,1.04-1.46,0-2L31.65,36.22z"/> | |||
| <path opacity="0.5412" fill="#4F397A" enable-background="new " d="M31.56,36.25c-1.03-0.54-2.73-0.54-3.76,0l-1.92,1.01 | |||
| c-1.04,0.54-2.73,0.54-3.76,0l-1.92-1.01c-1.03-0.54-2.72-0.54-3.76,0l-2.93,1.55c-1.03,0.54-1.03,1.43,0,1.98l8.61,4.54 | |||
| c1.03,0.55,2.72,0.55,3.76,0l8.61-4.54c1.03-0.55,1.03-1.44,0-1.98L31.56,36.25z"/> | |||
| <path opacity="0.5529" fill="#4B3577" enable-background="new " d="M31.46,36.29c-1.02-0.54-2.69-0.54-3.71,0l-1.9,1 | |||
| c-1.02,0.54-2.69,0.54-3.71,0l-1.89-1c-1.02-0.54-2.69-0.54-3.71,0l-2.9,1.53c-1.02,0.54-1.02,1.41,0,1.96l8.51,4.48 | |||
| c1.02,0.54,2.69,0.54,3.71,0l8.51-4.48c1.02-0.54,1.02-1.42,0-1.96L31.46,36.29z"/> | |||
| <path opacity="0.5647" fill="#473174" enable-background="new " d="M31.37,36.33c-1.01-0.53-2.66-0.53-3.67,0l-1.87,0.99 | |||
| c-1.01,0.53-2.66,0.53-3.67,0l-1.87-0.99c-1.01-0.53-2.66-0.53-3.67,0l-2.86,1.51c-1.01,0.53-1.01,1.4,0,1.93l8.4,4.42 | |||
| c1.01,0.53,2.66,0.53,3.67,0l8.4-4.42c1-0.53,1-1.4,0-1.93L31.37,36.33z"/> | |||
| <path opacity="0.5765" fill="#442D71" enable-background="new " d="M31.28,36.36c-1-0.52-2.63-0.52-3.62,0l-1.85,0.97 | |||
| c-1,0.52-2.63,0.52-3.62,0l-1.85-0.97c-1-0.52-2.63-0.52-3.62,0l-2.83,1.49c-1,0.52-1,1.38,0,1.91l8.3,4.37 | |||
| c1,0.53,2.62,0.53,3.62,0l8.3-4.37c0.99-0.53,0.99-1.38,0-1.91L31.28,36.36z"/> | |||
| <path opacity="0.5882" fill="#40286E" enable-background="new " d="M31.19,36.4c-0.98-0.52-2.59-0.52-3.57,0l-1.82,0.96 | |||
| c-0.99,0.51-2.59,0.51-3.58,0L20.4,36.4c-0.98-0.52-2.59-0.52-3.58,0l-2.79,1.47c-0.98,0.52-0.98,1.36,0,1.88l8.19,4.31 | |||
| c0.98,0.52,2.59,0.52,3.58,0l8.19-4.31c0.98-0.52,0.98-1.37,0-1.88L31.19,36.4z"/> | |||
| <path id="shadow_1_" opacity="0.6" fill="#3C246B" enable-background="new " d="M31.09,36.44c-0.97-0.51-2.56-0.51-3.53,0 | |||
| l-1.8,0.95c-0.97,0.51-2.56,0.51-3.53,0l-1.8-0.95c-0.97-0.51-2.56-0.51-3.53,0l-2.75,1.45c-0.97,0.51-0.97,1.34,0,1.86L22.24,44 | |||
| c0.97,0.51,2.56,0.51,3.53,0l8.08-4.26c0.97-0.51,0.97-1.35,0-1.86L31.09,36.44z"/> | |||
| </g> | |||
| <polygon id="u" fill="#5F29C6" points="43,11.66 43,35.47 24,45.38 5,35.47 5,11.66 5.01,11.66 15.53,6.17 15.53,29.52 24,33.93 | |||
| 32.47,29.52 32.47,6.17 "/> | |||
| <polygon id="line" fill="#EAE3F9" points="43,11.66 43,13.2 32.47,18.7 24.69,22.76 24.69,45.02 24,45.38 23.31,45.02 23.31,22.76 | |||
| 15.53,18.7 5,13.2 5,11.66 5.01,11.66 15.53,17.15 24,21.57 32.47,17.15 "/> | |||
| </svg> | |||
| @ -0,0 +1,172 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="use-package" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" | |||
| y="0px" width="96px" height="96px" viewBox="0 0 96 96" enable-background="new 0 0 96 96" xml:space="preserve"> | |||
| <g id="shadow_9_" opacity="0.4"> | |||
| <g id="shadow_1_"> | |||
| <g> | |||
| <path id="shadow_3_" fill="#FFFFFF" fill-opacity="0" d="M73.82,67.05c-3.53-1.86-9.31-1.86-12.84,0l-6.55,3.45 | |||
| c-3.53,1.87-9.31,1.87-12.85,0l-6.55-3.45c-3.53-1.86-9.31-1.86-12.84,0l-10.03,5.29c-3.53,1.86-3.53,4.91,0,6.77l29.43,15.5 | |||
| c3.53,1.86,9.31,1.86,12.85,0l29.42-15.5c3.53-1.86,3.53-4.91,0-6.77L73.82,67.05z"/> | |||
| <path opacity="0.0118" fill="#FBFBFC" enable-background="new " d="M73.62,67.13c-3.5-1.84-9.24-1.84-12.74,0l-6.5,3.42 | |||
| c-3.5,1.85-9.24,1.85-12.75,0l-6.5-3.42c-3.5-1.84-9.24-1.84-12.74,0l-9.95,5.25c-3.51,1.84-3.51,4.87,0,6.71l29.19,15.38 | |||
| c3.51,1.84,9.24,1.84,12.75,0l29.19-15.38c3.51-1.84,3.51-4.87,0-6.71L73.62,67.13z"/> | |||
| <path opacity="0.0235" fill="#F7F6F9" enable-background="new " d="M73.42,67.21c-3.48-1.83-9.17-1.83-12.64,0l-6.45,3.4 | |||
| c-3.48,1.84-9.17,1.84-12.65,0l-6.45-3.4c-3.48-1.83-9.17-1.83-12.64,0l-9.87,5.2c-3.48,1.83-3.48,4.83,0,6.66l28.96,15.26 | |||
| c3.48,1.83,9.17,1.83,12.65,0l28.96-15.26c3.48-1.83,3.48-4.83,0-6.66L73.42,67.21z"/> | |||
| <path opacity="0.0353" fill="#F4F2F6" enable-background="new " d="M73.21,67.29c-3.45-1.81-9.09-1.81-12.54,0l-6.4,3.37 | |||
| c-3.45,1.82-9.09,1.82-12.55,0l-6.4-3.37c-3.45-1.81-9.09-1.81-12.54,0l-9.79,5.16c-3.45,1.81-3.45,4.79,0,6.61L41.73,94.2 | |||
| c3.45,1.81,9.1,1.81,12.55,0l28.73-15.14c3.45-1.81,3.45-4.79,0-6.61L73.21,67.29z"/> | |||
| <path opacity="0.0471" fill="#F0EEF3" enable-background="new " d="M73.01,67.37c-3.42-1.8-9.02-1.8-12.44,0l-6.35,3.34 | |||
| c-3.42,1.81-9.02,1.81-12.44,0l-6.35-3.34c-3.42-1.8-9.02-1.8-12.44,0l-9.71,5.12c-3.42,1.8-3.42,4.76,0,6.55l28.5,15.01 | |||
| c3.42,1.8,9.02,1.8,12.44,0l28.5-15.01c3.42-1.8,3.42-4.76,0-6.55L73.01,67.37z"/> | |||
| <path opacity="0.0588" fill="#ECEAF0" enable-background="new " d="M72.81,67.45c-3.39-1.78-8.95-1.78-12.34,0l-6.3,3.32 | |||
| c-3.39,1.79-8.95,1.79-12.34,0l-6.29-3.32c-3.39-1.78-8.95-1.78-12.34,0l-9.64,5.08c-3.4,1.78-3.4,4.72,0,6.5l28.27,14.89 | |||
| c3.4,1.78,8.95,1.78,12.34,0l28.27-14.89c3.4-1.78,3.4-4.72,0-6.5L72.81,67.45z"/> | |||
| <path opacity="0.0706" fill="#E8E5EE" enable-background="new " d="M72.61,67.53c-3.37-1.77-8.88-1.77-12.24,0l-6.25,3.29 | |||
| c-3.37,1.78-8.88,1.78-12.24,0l-6.24-3.29c-3.37-1.77-8.87-1.77-12.24,0l-9.56,5.04c-3.37,1.77-3.37,4.68,0,6.45l28.04,14.77 | |||
| c3.37,1.77,8.88,1.77,12.24,0l28.04-14.77c3.37-1.77,3.37-4.68,0-6.45L72.61,67.53z"/> | |||
| <path opacity="0.0824" fill="#E4E1EB" enable-background="new " d="M72.4,67.61c-3.34-1.75-8.8-1.75-12.14,0l-6.19,3.26 | |||
| c-3.34,1.76-8.8,1.76-12.14,0l-6.19-3.26c-3.34-1.75-8.8-1.75-12.14,0l-9.48,5c-3.34,1.75-3.34,4.64,0,6.39l27.81,14.65 | |||
| c3.34,1.76,8.8,1.76,12.14,0L81.88,79c3.34-1.75,3.34-4.64,0-6.39L72.4,67.61z"/> | |||
| <path opacity="0.0941" fill="#E0DDE8" enable-background="new " d="M72.2,67.69c-3.31-1.74-8.73-1.74-12.04,0l-6.14,3.23 | |||
| c-3.31,1.75-8.73,1.75-12.04,0l-6.14-3.23c-3.31-1.74-8.73-1.74-12.04,0l-9.4,4.96c-3.31,1.74-3.31,4.6,0,6.34l27.58,14.53 | |||
| c3.31,1.74,8.73,1.74,12.04,0L81.6,78.99c3.31-1.74,3.31-4.6,0-6.34L72.2,67.69z"/> | |||
| <path opacity="0.1059" fill="#DDD8E5" enable-background="new " d="M72,67.77c-3.28-1.72-8.66-1.72-11.94,0l-6.09,3.21 | |||
| c-3.28,1.74-8.66,1.74-11.94,0l-6.09-3.21c-3.28-1.72-8.66-1.72-11.94,0l-9.32,4.91c-3.28,1.73-3.28,4.56,0,6.29l27.35,14.41 | |||
| c3.28,1.73,8.66,1.73,11.94,0l27.35-14.41c3.28-1.72,3.28-4.56,0-6.29L72,67.77z"/> | |||
| <path opacity="0.1176" fill="#D9D4E2" enable-background="new " d="M71.8,67.85c-3.26-1.71-8.58-1.71-11.84,0l-6.04,3.18 | |||
| c-3.26,1.72-8.58,1.72-11.84,0l-6.04-3.18c-3.26-1.71-8.58-1.71-11.84,0l-9.24,4.87c-3.26,1.71-3.26,4.53,0,6.24l27.12,14.28 | |||
| c3.26,1.71,8.58,1.71,11.84,0l27.12-14.28c3.26-1.71,3.26-4.52,0-6.24L71.8,67.85z"/> | |||
| <path opacity="0.1294" fill="#D5D0DF" enable-background="new " d="M71.59,67.93c-3.23-1.7-8.51-1.7-11.74,0l-5.99,3.15 | |||
| c-3.23,1.71-8.51,1.71-11.74,0l-5.99-3.15c-3.23-1.7-8.51-1.7-11.74,0l-9.16,4.83c-3.23,1.7-3.23,4.49,0,6.18l26.9,14.16 | |||
| c3.23,1.7,8.51,1.7,11.74,0l26.89-14.16c3.23-1.7,3.23-4.49,0-6.18L71.59,67.93z"/> | |||
| <path opacity="0.1412" fill="#D1CBDC" enable-background="new " d="M71.39,68.01c-3.2-1.68-8.44-1.68-11.64,0l-5.94,3.13 | |||
| c-3.2,1.69-8.44,1.69-11.64,0l-5.94-3.13c-3.2-1.68-8.44-1.68-11.64,0L15.5,72.8c-3.2,1.68-3.2,4.45,0,6.13l26.66,14.04 | |||
| c3.2,1.68,8.44,1.68,11.64,0l26.66-14.04c3.2-1.68,3.2-4.45,0-6.13L71.39,68.01z"/> | |||
| <path opacity="0.1529" fill="#CDC7D9" enable-background="new " d="M71.19,68.09c-3.17-1.67-8.36-1.67-11.54,0l-5.88,3.1 | |||
| c-3.17,1.68-8.36,1.68-11.54,0l-5.88-3.1c-3.17-1.67-8.36-1.67-11.54,0l-9.01,4.75c-3.17,1.67-3.17,4.41,0,6.08l26.43,13.92 | |||
| c3.17,1.67,8.37,1.67,11.54,0l26.42-13.92c3.17-1.67,3.17-4.41,0-6.08L71.19,68.09z"/> | |||
| <path opacity="0.1647" fill="#C9C3D6" enable-background="new " d="M70.99,68.17c-3.14-1.65-8.29-1.65-11.43,0l-5.83,3.07 | |||
| c-3.15,1.66-8.29,1.66-11.44,0l-5.83-3.07c-3.14-1.65-8.29-1.65-11.43,0l-8.93,4.71c-3.15,1.65-3.15,4.37,0,6.02l26.2,13.8 | |||
| c3.15,1.66,8.29,1.66,11.44,0l26.19-13.8c3.14-1.65,3.14-4.37,0-6.02L70.99,68.17z"/> | |||
| <path opacity="0.1765" fill="#C6BFD3" enable-background="new " d="M70.78,68.25c-3.12-1.64-8.22-1.64-11.33,0l-5.78,3.05 | |||
| c-3.12,1.65-8.22,1.65-11.34,0l-5.78-3.05c-3.12-1.64-8.22-1.64-11.33,0l-8.85,4.67c-3.12,1.64-3.12,4.33,0,5.97l25.96,13.68 | |||
| c3.12,1.64,8.22,1.64,11.34,0l25.96-13.68c3.12-1.64,3.12-4.33,0-5.97L70.78,68.25z"/> | |||
| <path opacity="0.1882" fill="#C2BAD1" enable-background="new " d="M70.58,68.33c-3.09-1.62-8.14-1.62-11.23,0l-5.73,3.02 | |||
| c-3.09,1.63-8.15,1.63-11.24,0l-5.73-3.02c-3.09-1.62-8.14-1.62-11.23,0l-8.77,4.62c-3.09,1.62-3.09,4.29,0,5.92l25.73,13.55 | |||
| c3.09,1.63,8.15,1.63,11.24,0l25.73-13.55c3.09-1.62,3.09-4.29,0-5.92L70.58,68.33z"/> | |||
| <path opacity="0.2" fill="#BEB6CE" enable-background="new " d="M70.38,68.41c-3.06-1.61-8.07-1.61-11.13,0l-5.68,2.99 | |||
| c-3.06,1.62-8.07,1.62-11.13,0l-5.68-2.99c-3.06-1.61-8.07-1.61-11.13,0l-8.69,4.58c-3.06,1.61-3.06,4.26,0,5.86l25.5,13.43 | |||
| c3.06,1.61,8.07,1.61,11.13,0l25.5-13.43c3.06-1.61,3.06-4.25,0-5.86L70.38,68.41z"/> | |||
| <path opacity="0.2118" fill="#BAB2CB" enable-background="new " d="M70.18,68.48c-3.03-1.59-8-1.59-11.03,0l-5.63,2.97 | |||
| c-3.04,1.6-8,1.6-11.03,0l-5.63-2.97c-3.03-1.59-8-1.59-11.03,0l-8.61,4.54c-3.03,1.59-3.03,4.22,0,5.81l25.27,13.31 | |||
| c3.03,1.6,8,1.6,11.03,0l25.27-13.31c3.03-1.59,3.03-4.22,0-5.81L70.18,68.48z"/> | |||
| <path opacity="0.2235" fill="#B6ADC8" enable-background="new " d="M69.97,68.56c-3.01-1.58-7.93-1.58-10.93,0l-5.58,2.94 | |||
| c-3.01,1.59-7.93,1.59-10.93,0l-5.58-2.94c-3.01-1.58-7.92-1.58-10.93,0l-8.54,4.5c-3.01,1.58-3.01,4.18,0,5.76l25.04,13.19 | |||
| c3.01,1.58,7.93,1.58,10.93,0l25.04-13.19c3.01-1.58,3.01-4.18,0-5.76L69.97,68.56z"/> | |||
| <path opacity="0.2353" fill="#B3A9C5" enable-background="new " d="M69.77,68.64c-2.98-1.56-7.85-1.56-10.83,0l-5.52,2.91 | |||
| c-2.98,1.57-7.85,1.57-10.83,0l-5.52-2.91c-2.98-1.56-7.85-1.56-10.83,0l-8.46,4.46c-2.98,1.57-2.98,4.14,0,5.71l24.81,13.07 | |||
| c2.98,1.57,7.85,1.57,10.83,0l24.81-13.07c2.98-1.56,2.98-4.14,0-5.71L69.77,68.64z"/> | |||
| <path opacity="0.2471" fill="#AFA5C2" enable-background="new " d="M69.57,68.72c-2.95-1.55-7.78-1.55-10.73,0l-5.47,2.89 | |||
| c-2.95,1.56-7.78,1.56-10.73,0l-5.47-2.89c-2.95-1.55-7.78-1.55-10.73,0l-8.38,4.42c-2.95,1.55-2.95,4.1,0,5.65l24.58,12.95 | |||
| c2.95,1.55,7.78,1.55,10.73,0l24.58-12.95c2.95-1.55,2.95-4.1,0-5.65L69.57,68.72z"/> | |||
| <path opacity="0.2588" fill="#ABA1BF" enable-background="new " d="M69.37,68.8c-2.92-1.54-7.71-1.54-10.63,0l-5.42,2.86 | |||
| c-2.92,1.54-7.71,1.54-10.63,0l-5.42-2.86c-2.92-1.54-7.71-1.54-10.63,0l-8.3,4.38c-2.92,1.54-2.92,4.06,0,5.6L42.69,91.6 | |||
| c2.92,1.54,7.71,1.54,10.63,0l24.35-12.82c2.92-1.54,2.92-4.06,0-5.6L69.37,68.8z"/> | |||
| <path opacity="0.2706" fill="#A79CBC" enable-background="new " d="M69.16,68.88c-2.9-1.52-7.63-1.52-10.53,0l-5.37,2.83 | |||
| c-2.9,1.53-7.63,1.53-10.53,0l-5.37-2.83c-2.89-1.52-7.63-1.52-10.53,0l-8.22,4.33c-2.9,1.52-2.9,4.03,0,5.55l24.12,12.7 | |||
| c2.9,1.53,7.63,1.53,10.53,0l24.12-12.7c2.9-1.52,2.9-4.02,0-5.55L69.16,68.88z"/> | |||
| <path opacity="0.2824" fill="#A398B9" enable-background="new " d="M68.96,68.96c-2.87-1.51-7.56-1.51-10.43,0l-5.32,2.81 | |||
| c-2.87,1.51-7.56,1.51-10.43,0l-5.32-2.81c-2.87-1.51-7.56-1.51-10.43,0l-8.14,4.29c-2.87,1.51-2.87,3.99,0,5.49l23.89,12.58 | |||
| c2.87,1.51,7.56,1.51,10.43,0L77.1,78.75c2.87-1.51,2.87-3.99,0-5.49L68.96,68.96z"/> | |||
| <path opacity="0.2941" fill="#9F94B6" enable-background="new " d="M68.76,69.04c-2.84-1.49-7.49-1.49-10.33,0l-5.27,2.78 | |||
| c-2.84,1.5-7.49,1.5-10.33,0l-5.27-2.78c-2.84-1.49-7.49-1.49-10.33,0l-8.06,4.25c-2.84,1.49-2.84,3.95,0,5.44l23.66,12.46 | |||
| c2.84,1.5,7.49,1.5,10.33,0l23.65-12.46c2.84-1.49,2.84-3.95,0-5.44L68.76,69.04z"/> | |||
| <path opacity="0.3059" fill="#9C8FB4" enable-background="new " d="M68.56,69.12c-2.81-1.48-7.41-1.48-10.23,0l-5.22,2.75 | |||
| c-2.81,1.48-7.42,1.48-10.23,0l-5.22-2.75c-2.81-1.48-7.41-1.48-10.23,0l-7.98,4.21c-2.81,1.48-2.81,3.91,0,5.39l23.43,12.34 | |||
| c2.81,1.48,7.42,1.48,10.23,0l23.42-12.34c2.81-1.48,2.81-3.91,0-5.39L68.56,69.12z"/> | |||
| <path opacity="0.3176" fill="#988BB1" enable-background="new " d="M68.35,69.2c-2.78-1.46-7.34-1.46-10.12,0l-5.16,2.72 | |||
| c-2.79,1.47-7.34,1.47-10.13,0l-5.16-2.72c-2.78-1.46-7.34-1.46-10.13,0l-7.91,4.17c-2.78,1.46-2.78,3.87,0,5.33l23.2,12.22 | |||
| c2.79,1.47,7.34,1.47,10.13,0L76.26,78.7c2.79-1.46,2.79-3.87,0-5.33L68.35,69.2z"/> | |||
| <path opacity="0.3294" fill="#9487AE" enable-background="new " d="M68.15,69.28c-2.76-1.45-7.27-1.45-10.02,0l-5.11,2.7 | |||
| c-2.76,1.45-7.27,1.45-10.03,0l-5.11-2.7c-2.76-1.45-7.27-1.45-10.02,0l-7.83,4.13c-2.76,1.45-2.76,3.83,0,5.28L43,90.79 | |||
| c2.76,1.46,7.27,1.46,10.03,0l22.96-12.1c2.76-1.45,2.76-3.83,0-5.28L68.15,69.28z"/> | |||
| <path opacity="0.3412" fill="#9082AB" enable-background="new " d="M67.95,69.36c-2.73-1.43-7.2-1.43-9.92,0l-5.06,2.67 | |||
| c-2.73,1.44-7.2,1.44-9.93,0l-5.06-2.67c-2.73-1.43-7.19-1.43-9.92,0l-7.75,4.08c-2.73,1.43-2.73,3.79,0,5.23l22.73,11.97 | |||
| c2.73,1.44,7.2,1.44,9.93,0L75.7,78.67c2.73-1.43,2.73-3.79,0-5.23L67.95,69.36z"/> | |||
| <path opacity="0.3529" fill="#8C7EA8" enable-background="new " d="M67.75,69.44c-2.7-1.42-7.12-1.42-9.82,0l-5.01,2.64 | |||
| c-2.7,1.42-7.12,1.42-9.83,0l-5.01-2.64c-2.7-1.42-7.12-1.42-9.82,0l-7.67,4.04c-2.7,1.42-2.7,3.76,0,5.17l22.5,11.85 | |||
| c2.7,1.43,7.12,1.43,9.83,0l22.5-11.85c2.7-1.42,2.7-3.75,0-5.17L67.75,69.44z"/> | |||
| <path opacity="0.3647" fill="#887AA5" enable-background="new " d="M67.54,69.52c-2.67-1.41-7.05-1.41-9.72,0l-4.96,2.62 | |||
| c-2.67,1.41-7.05,1.41-9.72,0l-4.96-2.62c-2.67-1.4-7.05-1.4-9.72,0l-7.59,4c-2.67,1.41-2.67,3.72,0,5.12l22.27,11.73 | |||
| c2.67,1.41,7.05,1.41,9.72,0l22.27-11.73c2.67-1.4,2.67-3.71,0-5.12L67.54,69.52z"/> | |||
| <path opacity="0.3765" fill="#8576A2" enable-background="new " d="M67.34,69.6c-2.65-1.39-6.98-1.39-9.62,0l-4.91,2.59 | |||
| c-2.65,1.39-6.98,1.39-9.62,0l-4.91-2.59c-2.65-1.39-6.98-1.39-9.62,0l-7.51,3.96c-2.65,1.39-2.65,3.68,0,5.07l22.04,11.61 | |||
| c2.65,1.4,6.98,1.4,9.62,0l22.04-11.61c2.65-1.39,2.65-3.68,0-5.07L67.34,69.6z"/> | |||
| <path opacity="0.3882" fill="#81719F" enable-background="new " d="M67.14,69.68c-2.62-1.38-6.9-1.38-9.52,0l-4.86,2.56 | |||
| c-2.62,1.38-6.9,1.38-9.52,0l-4.86-2.56c-2.62-1.38-6.9-1.38-9.52,0l-7.43,3.92c-2.62,1.38-2.62,3.64,0,5.01L43.24,90.1 | |||
| c2.62,1.38,6.9,1.38,9.52,0l21.81-11.49c2.62-1.38,2.62-3.64,0-5.01L67.14,69.68z"/> | |||
| <path opacity="0.4" fill="#7D6D9C" enable-background="new " d="M66.94,69.76c-2.59-1.36-6.83-1.36-9.42,0l-4.8,2.54 | |||
| c-2.59,1.37-6.83,1.37-9.42,0l-4.8-2.54c-2.59-1.36-6.83-1.36-9.42,0l-7.35,3.88c-2.59,1.36-2.59,3.6,0,4.96l21.58,11.37 | |||
| c2.59,1.37,6.83,1.37,9.42,0L74.29,78.6c2.59-1.36,2.59-3.6,0-4.96L66.94,69.76z"/> | |||
| <path opacity="0.4118" fill="#796999" enable-background="new " d="M66.73,69.84c-2.56-1.35-6.76-1.35-9.32,0l-4.75,2.51 | |||
| c-2.56,1.35-6.76,1.35-9.32,0l-4.75-2.51c-2.56-1.35-6.76-1.35-9.32,0l-7.28,3.84c-2.56,1.35-2.56,3.56,0,4.91l21.35,11.24 | |||
| c2.56,1.36,6.76,1.36,9.32,0l21.35-11.24c2.56-1.35,2.56-3.56,0-4.91L66.73,69.84z"/> | |||
| <path opacity="0.4235" fill="#756497" enable-background="new " d="M66.53,69.92c-2.54-1.33-6.68-1.33-9.22,0l-4.7,2.48 | |||
| c-2.54,1.33-6.69,1.33-9.22,0l-4.7-2.48c-2.53-1.33-6.68-1.33-9.22,0l-7.2,3.79c-2.53,1.33-2.53,3.52,0,4.86l21.12,11.12 | |||
| c2.54,1.34,6.68,1.34,9.22,0l21.12-11.12c2.54-1.33,2.54-3.52,0-4.86L66.53,69.92z"/> | |||
| <path opacity="0.4353" fill="#726094" enable-background="new " d="M66.33,70c-2.51-1.32-6.61-1.32-9.12,0l-4.65,2.46 | |||
| c-2.51,1.32-6.61,1.32-9.12,0L38.79,70c-2.51-1.32-6.61-1.32-9.12,0l-7.12,3.75c-2.51,1.32-2.51,3.49,0,4.8l20.89,11 | |||
| c2.51,1.33,6.61,1.33,9.12,0l20.89-11c2.51-1.32,2.51-3.48,0-4.8L66.33,70z"/> | |||
| <path opacity="0.4471" fill="#6E5C91" enable-background="new " d="M66.13,70.08c-2.48-1.3-6.54-1.3-9.02,0l-4.6,2.43 | |||
| c-2.48,1.31-6.54,1.31-9.02,0l-4.6-2.43c-2.48-1.3-6.54-1.3-9.02,0l-7.04,3.71c-2.48,1.3-2.48,3.45,0,4.75l20.66,10.88 | |||
| c2.48,1.31,6.54,1.31,9.02,0l20.65-10.88c2.48-1.3,2.48-3.45,0-4.75L66.13,70.08z"/> | |||
| <path opacity="0.4588" fill="#6A588E" enable-background="new " d="M65.92,70.15c-2.45-1.29-6.46-1.29-8.92,0l-4.55,2.4 | |||
| c-2.45,1.29-6.47,1.29-8.92,0l-4.55-2.4c-2.45-1.29-6.46-1.29-8.92,0l-6.96,3.67c-2.45,1.29-2.45,3.41,0,4.7l20.43,10.76 | |||
| c2.45,1.3,6.47,1.3,8.92,0l20.42-10.76c2.45-1.29,2.45-3.41,0-4.7L65.92,70.15z"/> | |||
| <path opacity="0.4706" fill="#66538B" enable-background="new " d="M65.72,70.23c-2.42-1.27-6.39-1.27-8.81,0l-4.5,2.38 | |||
| c-2.43,1.28-6.39,1.28-8.82,0l-4.5-2.38c-2.42-1.27-6.39-1.27-8.82,0l-6.88,3.63c-2.42,1.27-2.42,3.37,0,4.64l20.2,10.63 | |||
| c2.42,1.28,6.39,1.28,8.82,0L72.6,78.51c2.43-1.27,2.43-3.37,0-4.64L65.72,70.23z"/> | |||
| <path opacity="0.4824" fill="#624F88" enable-background="new " d="M65.52,70.31c-2.4-1.26-6.32-1.26-8.71,0l-4.44,2.35 | |||
| c-2.4,1.26-6.32,1.26-8.72,0l-4.45-2.35c-2.4-1.26-6.32-1.26-8.72,0l-6.8,3.59c-2.4,1.26-2.4,3.33,0,4.59L43.64,89 | |||
| c2.4,1.27,6.32,1.27,8.72,0l19.96-10.51c2.4-1.26,2.4-3.33,0-4.59L65.52,70.31z"/> | |||
| <path opacity="0.4941" fill="#5E4B85" enable-background="new " d="M65.32,70.39c-2.37-1.25-6.25-1.25-8.61,0l-4.39,2.32 | |||
| c-2.37,1.25-6.25,1.25-8.62,0l-4.39-2.32c-2.37-1.24-6.24-1.24-8.62,0l-6.73,3.54c-2.37,1.25-2.37,3.29,0,4.54l19.73,10.39 | |||
| c2.37,1.26,6.25,1.26,8.62,0l19.73-10.39c2.37-1.24,2.37-3.29,0-4.54L65.32,70.39z"/> | |||
| <path opacity="0.5059" fill="#5B4682" enable-background="new " d="M65.11,70.47c-2.34-1.23-6.17-1.23-8.51,0l-4.34,2.3 | |||
| c-2.34,1.23-6.17,1.23-8.52,0l-4.34-2.3c-2.34-1.23-6.17-1.23-8.51,0l-6.65,3.5c-2.34,1.23-2.34,3.25,0,4.48l19.5,10.27 | |||
| c2.34,1.24,6.17,1.24,8.52,0l19.5-10.27c2.34-1.23,2.34-3.25,0-4.48L65.11,70.47z"/> | |||
| <path opacity="0.5176" fill="#57427F" enable-background="new " d="M64.91,70.55c-2.31-1.22-6.1-1.22-8.41,0l-4.29,2.27 | |||
| c-2.31,1.22-6.1,1.22-8.41,0l-4.3-2.27c-2.31-1.21-6.1-1.21-8.41,0l-6.57,3.46c-2.31,1.22-2.31,3.22,0,4.43l19.27,10.15 | |||
| c2.31,1.23,6.1,1.23,8.41,0l19.27-10.15c2.32-1.21,2.32-3.21,0-4.43L64.91,70.55z"/> | |||
| <path opacity="0.5294" fill="#533E7C" enable-background="new " d="M64.71,70.63c-2.29-1.2-6.03-1.2-8.31,0l-4.24,2.24 | |||
| c-2.29,1.2-6.03,1.2-8.31,0l-4.24-2.24c-2.29-1.2-6.03-1.2-8.31,0l-6.49,3.42c-2.28,1.2-2.28,3.18,0,4.38l19.04,10.03 | |||
| c2.29,1.21,6.03,1.21,8.31,0L71.2,78.43c2.29-1.2,2.29-3.18,0-4.38L64.71,70.63z"/> | |||
| <path opacity="0.5412" fill="#4F397A" enable-background="new " d="M64.51,70.71c-2.26-1.19-5.95-1.19-8.21,0l-4.19,2.21 | |||
| c-2.26,1.19-5.96,1.19-8.21,0l-4.19-2.21c-2.26-1.19-5.95-1.19-8.21,0l-6.41,3.38c-2.26,1.19-2.26,3.14,0,4.33l18.81,9.91 | |||
| c2.26,1.2,5.95,1.2,8.21,0l18.81-9.91c2.26-1.19,2.26-3.14,0-4.33L64.51,70.71z"/> | |||
| <path opacity="0.5529" fill="#4B3577" enable-background="new " d="M64.3,70.79c-2.23-1.17-5.88-1.17-8.11,0l-4.14,2.19 | |||
| c-2.23,1.17-5.88,1.17-8.11,0l-4.14-2.19c-2.23-1.17-5.88-1.17-8.11,0l-6.33,3.34c-2.23,1.17-2.23,3.1,0,4.27l18.58,9.78 | |||
| c2.23,1.18,5.88,1.18,8.11,0l18.58-9.78c2.23-1.17,2.23-3.1,0-4.27L64.3,70.79z"/> | |||
| <path opacity="0.5647" fill="#473174" enable-background="new " d="M64.1,70.87c-2.2-1.16-5.81-1.16-8.01,0l-4.08,2.16 | |||
| c-2.2,1.16-5.81,1.16-8.01,0l-4.09-2.16c-2.2-1.16-5.81-1.16-8.01,0l-6.25,3.3c-2.2,1.16-2.2,3.06,0,4.22L44,88.05 | |||
| c2.2,1.17,5.81,1.17,8.01,0l18.35-9.66c2.2-1.16,2.2-3.06,0-4.22L64.1,70.87z"/> | |||
| <path opacity="0.5765" fill="#442D71" enable-background="new " d="M63.9,70.95c-2.17-1.14-5.74-1.14-7.91,0l-4.03,2.13 | |||
| c-2.18,1.14-5.74,1.14-7.91,0l-4.03-2.13c-2.17-1.14-5.73-1.14-7.91,0l-6.18,3.25c-2.17,1.14-2.17,3.02,0,4.17l18.12,9.54 | |||
| c2.17,1.16,5.73,1.16,7.91,0l18.12-9.54c2.18-1.14,2.18-3.02,0-4.17L63.9,70.95z"/> | |||
| <path opacity="0.5882" fill="#40286E" enable-background="new " d="M63.7,71.03c-2.15-1.13-5.66-1.13-7.81,0l-3.98,2.11 | |||
| c-2.15,1.13-5.66,1.13-7.81,0l-3.98-2.11c-2.15-1.13-5.66-1.13-7.81,0l-6.1,3.21c-2.15,1.13-2.15,2.99,0,4.11l17.89,9.42 | |||
| c2.15,1.14,5.66,1.14,7.81,0l17.89-9.42c2.15-1.13,2.15-2.98,0-4.11L63.7,71.03z"/> | |||
| <path id="shadow_2_" opacity="0.6" fill="#3C246B" enable-background="new " d="M63.49,71.11c-2.12-1.11-5.59-1.11-7.71,0 | |||
| l-3.93,2.08c-2.12,1.11-5.59,1.11-7.71,0l-3.93-2.08c-2.12-1.11-5.59-1.11-7.71,0l-6.02,3.17c-2.12,1.11-2.12,2.95,0,4.06 | |||
| l17.66,9.3c2.12,1.13,5.59,1.13,7.71,0l17.65-9.3c2.12-1.11,2.12-2.95,0-4.06L63.49,71.11z"/> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| <polygon id="u" fill="#5F29C6" points="89.5,17 89.5,69 48,90.65 6.5,69 6.5,17 6.51,17 29.5,5 29.5,56 48,65.65 66.5,56 66.5,5 | |||
| 89.49,17 "/> | |||
| <polygon id="line" fill="#EAE3F9" points="89.5,17 89.5,20.37 66.5,32.37 49.5,41.24 49.5,89.87 48,90.65 46.5,89.87 46.5,41.24 | |||
| 29.5,32.37 6.5,20.37 6.5,17 6.51,17 29.5,28.99 48,38.64 66.5,28.99 89.49,17 "/> | |||
| </svg> | |||
| @ -0,0 +1,172 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="use-package" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" | |||
| y="0px" width="96px" height="96px" viewBox="0 0 96 96" enable-background="new 0 0 96 96" xml:space="preserve"> | |||
| <g id="shadow_9_" opacity="0.4"> | |||
| <g id="shadow_1_"> | |||
| <g> | |||
| <path id="shadow_3_" fill="#FFFFFF" fill-opacity="0" d="M73.82,67.05c-3.53-1.86-9.31-1.86-12.84,0l-6.55,3.45 | |||
| c-3.53,1.87-9.31,1.87-12.85,0l-6.55-3.45c-3.53-1.86-9.31-1.86-12.84,0l-10.03,5.29c-3.53,1.86-3.53,4.91,0,6.77l29.43,15.5 | |||
| c3.53,1.86,9.31,1.86,12.85,0l29.42-15.5c3.53-1.86,3.53-4.91,0-6.77L73.82,67.05z"/> | |||
| <path opacity="0.0118" fill="#FBFBFC" enable-background="new " d="M73.62,67.13c-3.5-1.84-9.24-1.84-12.74,0l-6.5,3.42 | |||
| c-3.5,1.85-9.24,1.85-12.75,0l-6.5-3.42c-3.5-1.84-9.24-1.84-12.74,0l-9.95,5.25c-3.51,1.84-3.51,4.87,0,6.71l29.19,15.38 | |||
| c3.51,1.84,9.24,1.84,12.75,0l29.19-15.38c3.51-1.84,3.51-4.87,0-6.71L73.62,67.13z"/> | |||
| <path opacity="0.0235" fill="#F7F6F9" enable-background="new " d="M73.42,67.21c-3.48-1.83-9.17-1.83-12.64,0l-6.45,3.4 | |||
| c-3.48,1.84-9.17,1.84-12.65,0l-6.45-3.4c-3.48-1.83-9.17-1.83-12.64,0l-9.87,5.2c-3.48,1.83-3.48,4.83,0,6.66l28.96,15.26 | |||
| c3.48,1.83,9.17,1.83,12.65,0l28.96-15.26c3.48-1.83,3.48-4.83,0-6.66L73.42,67.21z"/> | |||
| <path opacity="0.0353" fill="#F4F2F6" enable-background="new " d="M73.21,67.29c-3.45-1.81-9.09-1.81-12.54,0l-6.4,3.37 | |||
| c-3.45,1.82-9.09,1.82-12.55,0l-6.4-3.37c-3.45-1.81-9.09-1.81-12.54,0l-9.79,5.16c-3.45,1.81-3.45,4.79,0,6.61L41.73,94.2 | |||
| c3.45,1.81,9.1,1.81,12.55,0l28.73-15.14c3.45-1.81,3.45-4.79,0-6.61L73.21,67.29z"/> | |||
| <path opacity="0.0471" fill="#F0EEF3" enable-background="new " d="M73.01,67.37c-3.42-1.8-9.02-1.8-12.44,0l-6.35,3.34 | |||
| c-3.42,1.81-9.02,1.81-12.44,0l-6.35-3.34c-3.42-1.8-9.02-1.8-12.44,0l-9.71,5.12c-3.42,1.8-3.42,4.76,0,6.55l28.5,15.01 | |||
| c3.42,1.8,9.02,1.8,12.44,0l28.5-15.01c3.42-1.8,3.42-4.76,0-6.55L73.01,67.37z"/> | |||
| <path opacity="0.0588" fill="#ECEAF0" enable-background="new " d="M72.81,67.45c-3.39-1.78-8.95-1.78-12.34,0l-6.3,3.32 | |||
| c-3.39,1.79-8.95,1.79-12.34,0l-6.29-3.32c-3.39-1.78-8.95-1.78-12.34,0l-9.64,5.08c-3.4,1.78-3.4,4.72,0,6.5l28.27,14.89 | |||
| c3.4,1.78,8.95,1.78,12.34,0l28.27-14.89c3.4-1.78,3.4-4.72,0-6.5L72.81,67.45z"/> | |||
| <path opacity="0.0706" fill="#E8E5EE" enable-background="new " d="M72.61,67.53c-3.37-1.77-8.88-1.77-12.24,0l-6.25,3.29 | |||
| c-3.37,1.78-8.88,1.78-12.24,0l-6.24-3.29c-3.37-1.77-8.87-1.77-12.24,0l-9.56,5.04c-3.37,1.77-3.37,4.68,0,6.45l28.04,14.77 | |||
| c3.37,1.77,8.88,1.77,12.24,0l28.04-14.77c3.37-1.77,3.37-4.68,0-6.45L72.61,67.53z"/> | |||
| <path opacity="0.0824" fill="#E4E1EB" enable-background="new " d="M72.4,67.61c-3.34-1.75-8.8-1.75-12.14,0l-6.19,3.26 | |||
| c-3.34,1.76-8.8,1.76-12.14,0l-6.19-3.26c-3.34-1.75-8.8-1.75-12.14,0l-9.48,5c-3.34,1.75-3.34,4.64,0,6.39l27.81,14.65 | |||
| c3.34,1.76,8.8,1.76,12.14,0L81.88,79c3.34-1.75,3.34-4.64,0-6.39L72.4,67.61z"/> | |||
| <path opacity="0.0941" fill="#E0DDE8" enable-background="new " d="M72.2,67.69c-3.31-1.74-8.73-1.74-12.04,0l-6.14,3.23 | |||
| c-3.31,1.75-8.73,1.75-12.04,0l-6.14-3.23c-3.31-1.74-8.73-1.74-12.04,0l-9.4,4.96c-3.31,1.74-3.31,4.6,0,6.34l27.58,14.53 | |||
| c3.31,1.74,8.73,1.74,12.04,0L81.6,78.99c3.31-1.74,3.31-4.6,0-6.34L72.2,67.69z"/> | |||
| <path opacity="0.1059" fill="#DDD8E5" enable-background="new " d="M72,67.77c-3.28-1.72-8.66-1.72-11.94,0l-6.09,3.21 | |||
| c-3.28,1.74-8.66,1.74-11.94,0l-6.09-3.21c-3.28-1.72-8.66-1.72-11.94,0l-9.32,4.91c-3.28,1.73-3.28,4.56,0,6.29l27.35,14.41 | |||
| c3.28,1.73,8.66,1.73,11.94,0l27.35-14.41c3.28-1.72,3.28-4.56,0-6.29L72,67.77z"/> | |||
| <path opacity="0.1176" fill="#D9D4E2" enable-background="new " d="M71.8,67.85c-3.26-1.71-8.58-1.71-11.84,0l-6.04,3.18 | |||
| c-3.26,1.72-8.58,1.72-11.84,0l-6.04-3.18c-3.26-1.71-8.58-1.71-11.84,0l-9.24,4.87c-3.26,1.71-3.26,4.53,0,6.24l27.12,14.28 | |||
| c3.26,1.71,8.58,1.71,11.84,0l27.12-14.28c3.26-1.71,3.26-4.52,0-6.24L71.8,67.85z"/> | |||
| <path opacity="0.1294" fill="#D5D0DF" enable-background="new " d="M71.59,67.93c-3.23-1.7-8.51-1.7-11.74,0l-5.99,3.15 | |||
| c-3.23,1.71-8.51,1.71-11.74,0l-5.99-3.15c-3.23-1.7-8.51-1.7-11.74,0l-9.16,4.83c-3.23,1.7-3.23,4.49,0,6.18l26.9,14.16 | |||
| c3.23,1.7,8.51,1.7,11.74,0l26.89-14.16c3.23-1.7,3.23-4.49,0-6.18L71.59,67.93z"/> | |||
| <path opacity="0.1412" fill="#D1CBDC" enable-background="new " d="M71.39,68.01c-3.2-1.68-8.44-1.68-11.64,0l-5.94,3.13 | |||
| c-3.2,1.69-8.44,1.69-11.64,0l-5.94-3.13c-3.2-1.68-8.44-1.68-11.64,0L15.5,72.8c-3.2,1.68-3.2,4.45,0,6.13l26.66,14.04 | |||
| c3.2,1.68,8.44,1.68,11.64,0l26.66-14.04c3.2-1.68,3.2-4.45,0-6.13L71.39,68.01z"/> | |||
| <path opacity="0.1529" fill="#CDC7D9" enable-background="new " d="M71.19,68.09c-3.17-1.67-8.36-1.67-11.54,0l-5.88,3.1 | |||
| c-3.17,1.68-8.36,1.68-11.54,0l-5.88-3.1c-3.17-1.67-8.36-1.67-11.54,0l-9.01,4.75c-3.17,1.67-3.17,4.41,0,6.08l26.43,13.92 | |||
| c3.17,1.67,8.37,1.67,11.54,0l26.42-13.92c3.17-1.67,3.17-4.41,0-6.08L71.19,68.09z"/> | |||
| <path opacity="0.1647" fill="#C9C3D6" enable-background="new " d="M70.99,68.17c-3.14-1.65-8.29-1.65-11.43,0l-5.83,3.07 | |||
| c-3.15,1.66-8.29,1.66-11.44,0l-5.83-3.07c-3.14-1.65-8.29-1.65-11.43,0l-8.93,4.71c-3.15,1.65-3.15,4.37,0,6.02l26.2,13.8 | |||
| c3.15,1.66,8.29,1.66,11.44,0l26.19-13.8c3.14-1.65,3.14-4.37,0-6.02L70.99,68.17z"/> | |||
| <path opacity="0.1765" fill="#C6BFD3" enable-background="new " d="M70.78,68.25c-3.12-1.64-8.22-1.64-11.33,0l-5.78,3.05 | |||
| c-3.12,1.65-8.22,1.65-11.34,0l-5.78-3.05c-3.12-1.64-8.22-1.64-11.33,0l-8.85,4.67c-3.12,1.64-3.12,4.33,0,5.97l25.96,13.68 | |||
| c3.12,1.64,8.22,1.64,11.34,0l25.96-13.68c3.12-1.64,3.12-4.33,0-5.97L70.78,68.25z"/> | |||
| <path opacity="0.1882" fill="#C2BAD1" enable-background="new " d="M70.58,68.33c-3.09-1.62-8.14-1.62-11.23,0l-5.73,3.02 | |||
| c-3.09,1.63-8.15,1.63-11.24,0l-5.73-3.02c-3.09-1.62-8.14-1.62-11.23,0l-8.77,4.62c-3.09,1.62-3.09,4.29,0,5.92l25.73,13.55 | |||
| c3.09,1.63,8.15,1.63,11.24,0l25.73-13.55c3.09-1.62,3.09-4.29,0-5.92L70.58,68.33z"/> | |||
| <path opacity="0.2" fill="#BEB6CE" enable-background="new " d="M70.38,68.41c-3.06-1.61-8.07-1.61-11.13,0l-5.68,2.99 | |||
| c-3.06,1.62-8.07,1.62-11.13,0l-5.68-2.99c-3.06-1.61-8.07-1.61-11.13,0l-8.69,4.58c-3.06,1.61-3.06,4.26,0,5.86l25.5,13.43 | |||
| c3.06,1.61,8.07,1.61,11.13,0l25.5-13.43c3.06-1.61,3.06-4.25,0-5.86L70.38,68.41z"/> | |||
| <path opacity="0.2118" fill="#BAB2CB" enable-background="new " d="M70.18,68.48c-3.03-1.59-8-1.59-11.03,0l-5.63,2.97 | |||
| c-3.04,1.6-8,1.6-11.03,0l-5.63-2.97c-3.03-1.59-8-1.59-11.03,0l-8.61,4.54c-3.03,1.59-3.03,4.22,0,5.81l25.27,13.31 | |||
| c3.03,1.6,8,1.6,11.03,0l25.27-13.31c3.03-1.59,3.03-4.22,0-5.81L70.18,68.48z"/> | |||
| <path opacity="0.2235" fill="#B6ADC8" enable-background="new " d="M69.97,68.56c-3.01-1.58-7.93-1.58-10.93,0l-5.58,2.94 | |||
| c-3.01,1.59-7.93,1.59-10.93,0l-5.58-2.94c-3.01-1.58-7.92-1.58-10.93,0l-8.54,4.5c-3.01,1.58-3.01,4.18,0,5.76l25.04,13.19 | |||
| c3.01,1.58,7.93,1.58,10.93,0l25.04-13.19c3.01-1.58,3.01-4.18,0-5.76L69.97,68.56z"/> | |||
| <path opacity="0.2353" fill="#B3A9C5" enable-background="new " d="M69.77,68.64c-2.98-1.56-7.85-1.56-10.83,0l-5.52,2.91 | |||
| c-2.98,1.57-7.85,1.57-10.83,0l-5.52-2.91c-2.98-1.56-7.85-1.56-10.83,0l-8.46,4.46c-2.98,1.57-2.98,4.14,0,5.71l24.81,13.07 | |||
| c2.98,1.57,7.85,1.57,10.83,0l24.81-13.07c2.98-1.56,2.98-4.14,0-5.71L69.77,68.64z"/> | |||
| <path opacity="0.2471" fill="#AFA5C2" enable-background="new " d="M69.57,68.72c-2.95-1.55-7.78-1.55-10.73,0l-5.47,2.89 | |||
| c-2.95,1.56-7.78,1.56-10.73,0l-5.47-2.89c-2.95-1.55-7.78-1.55-10.73,0l-8.38,4.42c-2.95,1.55-2.95,4.1,0,5.65l24.58,12.95 | |||
| c2.95,1.55,7.78,1.55,10.73,0l24.58-12.95c2.95-1.55,2.95-4.1,0-5.65L69.57,68.72z"/> | |||
| <path opacity="0.2588" fill="#ABA1BF" enable-background="new " d="M69.37,68.8c-2.92-1.54-7.71-1.54-10.63,0l-5.42,2.86 | |||
| c-2.92,1.54-7.71,1.54-10.63,0l-5.42-2.86c-2.92-1.54-7.71-1.54-10.63,0l-8.3,4.38c-2.92,1.54-2.92,4.06,0,5.6L42.69,91.6 | |||
| c2.92,1.54,7.71,1.54,10.63,0l24.35-12.82c2.92-1.54,2.92-4.06,0-5.6L69.37,68.8z"/> | |||
| <path opacity="0.2706" fill="#A79CBC" enable-background="new " d="M69.16,68.88c-2.9-1.52-7.63-1.52-10.53,0l-5.37,2.83 | |||
| c-2.9,1.53-7.63,1.53-10.53,0l-5.37-2.83c-2.89-1.52-7.63-1.52-10.53,0l-8.22,4.33c-2.9,1.52-2.9,4.03,0,5.55l24.12,12.7 | |||
| c2.9,1.53,7.63,1.53,10.53,0l24.12-12.7c2.9-1.52,2.9-4.02,0-5.55L69.16,68.88z"/> | |||
| <path opacity="0.2824" fill="#A398B9" enable-background="new " d="M68.96,68.96c-2.87-1.51-7.56-1.51-10.43,0l-5.32,2.81 | |||
| c-2.87,1.51-7.56,1.51-10.43,0l-5.32-2.81c-2.87-1.51-7.56-1.51-10.43,0l-8.14,4.29c-2.87,1.51-2.87,3.99,0,5.49l23.89,12.58 | |||
| c2.87,1.51,7.56,1.51,10.43,0L77.1,78.75c2.87-1.51,2.87-3.99,0-5.49L68.96,68.96z"/> | |||
| <path opacity="0.2941" fill="#9F94B6" enable-background="new " d="M68.76,69.04c-2.84-1.49-7.49-1.49-10.33,0l-5.27,2.78 | |||
| c-2.84,1.5-7.49,1.5-10.33,0l-5.27-2.78c-2.84-1.49-7.49-1.49-10.33,0l-8.06,4.25c-2.84,1.49-2.84,3.95,0,5.44l23.66,12.46 | |||
| c2.84,1.5,7.49,1.5,10.33,0l23.65-12.46c2.84-1.49,2.84-3.95,0-5.44L68.76,69.04z"/> | |||
| <path opacity="0.3059" fill="#9C8FB4" enable-background="new " d="M68.56,69.12c-2.81-1.48-7.41-1.48-10.23,0l-5.22,2.75 | |||
| c-2.81,1.48-7.42,1.48-10.23,0l-5.22-2.75c-2.81-1.48-7.41-1.48-10.23,0l-7.98,4.21c-2.81,1.48-2.81,3.91,0,5.39l23.43,12.34 | |||
| c2.81,1.48,7.42,1.48,10.23,0l23.42-12.34c2.81-1.48,2.81-3.91,0-5.39L68.56,69.12z"/> | |||
| <path opacity="0.3176" fill="#988BB1" enable-background="new " d="M68.35,69.2c-2.78-1.46-7.34-1.46-10.12,0l-5.16,2.72 | |||
| c-2.79,1.47-7.34,1.47-10.13,0l-5.16-2.72c-2.78-1.46-7.34-1.46-10.13,0l-7.91,4.17c-2.78,1.46-2.78,3.87,0,5.33l23.2,12.22 | |||
| c2.79,1.47,7.34,1.47,10.13,0L76.26,78.7c2.79-1.46,2.79-3.87,0-5.33L68.35,69.2z"/> | |||
| <path opacity="0.3294" fill="#9487AE" enable-background="new " d="M68.15,69.28c-2.76-1.45-7.27-1.45-10.02,0l-5.11,2.7 | |||
| c-2.76,1.45-7.27,1.45-10.03,0l-5.11-2.7c-2.76-1.45-7.27-1.45-10.02,0l-7.83,4.13c-2.76,1.45-2.76,3.83,0,5.28L43,90.79 | |||
| c2.76,1.46,7.27,1.46,10.03,0l22.96-12.1c2.76-1.45,2.76-3.83,0-5.28L68.15,69.28z"/> | |||
| <path opacity="0.3412" fill="#9082AB" enable-background="new " d="M67.95,69.36c-2.73-1.43-7.2-1.43-9.92,0l-5.06,2.67 | |||
| c-2.73,1.44-7.2,1.44-9.93,0l-5.06-2.67c-2.73-1.43-7.19-1.43-9.92,0l-7.75,4.08c-2.73,1.43-2.73,3.79,0,5.23l22.73,11.97 | |||
| c2.73,1.44,7.2,1.44,9.93,0L75.7,78.67c2.73-1.43,2.73-3.79,0-5.23L67.95,69.36z"/> | |||
| <path opacity="0.3529" fill="#8C7EA8" enable-background="new " d="M67.75,69.44c-2.7-1.42-7.12-1.42-9.82,0l-5.01,2.64 | |||
| c-2.7,1.42-7.12,1.42-9.83,0l-5.01-2.64c-2.7-1.42-7.12-1.42-9.82,0l-7.67,4.04c-2.7,1.42-2.7,3.76,0,5.17l22.5,11.85 | |||
| c2.7,1.43,7.12,1.43,9.83,0l22.5-11.85c2.7-1.42,2.7-3.75,0-5.17L67.75,69.44z"/> | |||
| <path opacity="0.3647" fill="#887AA5" enable-background="new " d="M67.54,69.52c-2.67-1.41-7.05-1.41-9.72,0l-4.96,2.62 | |||
| c-2.67,1.41-7.05,1.41-9.72,0l-4.96-2.62c-2.67-1.4-7.05-1.4-9.72,0l-7.59,4c-2.67,1.41-2.67,3.72,0,5.12l22.27,11.73 | |||
| c2.67,1.41,7.05,1.41,9.72,0l22.27-11.73c2.67-1.4,2.67-3.71,0-5.12L67.54,69.52z"/> | |||
| <path opacity="0.3765" fill="#8576A2" enable-background="new " d="M67.34,69.6c-2.65-1.39-6.98-1.39-9.62,0l-4.91,2.59 | |||
| c-2.65,1.39-6.98,1.39-9.62,0l-4.91-2.59c-2.65-1.39-6.98-1.39-9.62,0l-7.51,3.96c-2.65,1.39-2.65,3.68,0,5.07l22.04,11.61 | |||
| c2.65,1.4,6.98,1.4,9.62,0l22.04-11.61c2.65-1.39,2.65-3.68,0-5.07L67.34,69.6z"/> | |||
| <path opacity="0.3882" fill="#81719F" enable-background="new " d="M67.14,69.68c-2.62-1.38-6.9-1.38-9.52,0l-4.86,2.56 | |||
| c-2.62,1.38-6.9,1.38-9.52,0l-4.86-2.56c-2.62-1.38-6.9-1.38-9.52,0l-7.43,3.92c-2.62,1.38-2.62,3.64,0,5.01L43.24,90.1 | |||
| c2.62,1.38,6.9,1.38,9.52,0l21.81-11.49c2.62-1.38,2.62-3.64,0-5.01L67.14,69.68z"/> | |||
| <path opacity="0.4" fill="#7D6D9C" enable-background="new " d="M66.94,69.76c-2.59-1.36-6.83-1.36-9.42,0l-4.8,2.54 | |||
| c-2.59,1.37-6.83,1.37-9.42,0l-4.8-2.54c-2.59-1.36-6.83-1.36-9.42,0l-7.35,3.88c-2.59,1.36-2.59,3.6,0,4.96l21.58,11.37 | |||
| c2.59,1.37,6.83,1.37,9.42,0L74.29,78.6c2.59-1.36,2.59-3.6,0-4.96L66.94,69.76z"/> | |||
| <path opacity="0.4118" fill="#796999" enable-background="new " d="M66.73,69.84c-2.56-1.35-6.76-1.35-9.32,0l-4.75,2.51 | |||
| c-2.56,1.35-6.76,1.35-9.32,0l-4.75-2.51c-2.56-1.35-6.76-1.35-9.32,0l-7.28,3.84c-2.56,1.35-2.56,3.56,0,4.91l21.35,11.24 | |||
| c2.56,1.36,6.76,1.36,9.32,0l21.35-11.24c2.56-1.35,2.56-3.56,0-4.91L66.73,69.84z"/> | |||
| <path opacity="0.4235" fill="#756497" enable-background="new " d="M66.53,69.92c-2.54-1.33-6.68-1.33-9.22,0l-4.7,2.48 | |||
| c-2.54,1.33-6.69,1.33-9.22,0l-4.7-2.48c-2.53-1.33-6.68-1.33-9.22,0l-7.2,3.79c-2.53,1.33-2.53,3.52,0,4.86l21.12,11.12 | |||
| c2.54,1.34,6.68,1.34,9.22,0l21.12-11.12c2.54-1.33,2.54-3.52,0-4.86L66.53,69.92z"/> | |||
| <path opacity="0.4353" fill="#726094" enable-background="new " d="M66.33,70c-2.51-1.32-6.61-1.32-9.12,0l-4.65,2.46 | |||
| c-2.51,1.32-6.61,1.32-9.12,0L38.79,70c-2.51-1.32-6.61-1.32-9.12,0l-7.12,3.75c-2.51,1.32-2.51,3.49,0,4.8l20.89,11 | |||
| c2.51,1.33,6.61,1.33,9.12,0l20.89-11c2.51-1.32,2.51-3.48,0-4.8L66.33,70z"/> | |||
| <path opacity="0.4471" fill="#6E5C91" enable-background="new " d="M66.13,70.08c-2.48-1.3-6.54-1.3-9.02,0l-4.6,2.43 | |||
| c-2.48,1.31-6.54,1.31-9.02,0l-4.6-2.43c-2.48-1.3-6.54-1.3-9.02,0l-7.04,3.71c-2.48,1.3-2.48,3.45,0,4.75l20.66,10.88 | |||
| c2.48,1.31,6.54,1.31,9.02,0l20.65-10.88c2.48-1.3,2.48-3.45,0-4.75L66.13,70.08z"/> | |||
| <path opacity="0.4588" fill="#6A588E" enable-background="new " d="M65.92,70.15c-2.45-1.29-6.46-1.29-8.92,0l-4.55,2.4 | |||
| c-2.45,1.29-6.47,1.29-8.92,0l-4.55-2.4c-2.45-1.29-6.46-1.29-8.92,0l-6.96,3.67c-2.45,1.29-2.45,3.41,0,4.7l20.43,10.76 | |||
| c2.45,1.3,6.47,1.3,8.92,0l20.42-10.76c2.45-1.29,2.45-3.41,0-4.7L65.92,70.15z"/> | |||
| <path opacity="0.4706" fill="#66538B" enable-background="new " d="M65.72,70.23c-2.42-1.27-6.39-1.27-8.81,0l-4.5,2.38 | |||
| c-2.43,1.28-6.39,1.28-8.82,0l-4.5-2.38c-2.42-1.27-6.39-1.27-8.82,0l-6.88,3.63c-2.42,1.27-2.42,3.37,0,4.64l20.2,10.63 | |||
| c2.42,1.28,6.39,1.28,8.82,0L72.6,78.51c2.43-1.27,2.43-3.37,0-4.64L65.72,70.23z"/> | |||
| <path opacity="0.4824" fill="#624F88" enable-background="new " d="M65.52,70.31c-2.4-1.26-6.32-1.26-8.71,0l-4.44,2.35 | |||
| c-2.4,1.26-6.32,1.26-8.72,0l-4.45-2.35c-2.4-1.26-6.32-1.26-8.72,0l-6.8,3.59c-2.4,1.26-2.4,3.33,0,4.59L43.64,89 | |||
| c2.4,1.27,6.32,1.27,8.72,0l19.96-10.51c2.4-1.26,2.4-3.33,0-4.59L65.52,70.31z"/> | |||
| <path opacity="0.4941" fill="#5E4B85" enable-background="new " d="M65.32,70.39c-2.37-1.25-6.25-1.25-8.61,0l-4.39,2.32 | |||
| c-2.37,1.25-6.25,1.25-8.62,0l-4.39-2.32c-2.37-1.24-6.24-1.24-8.62,0l-6.73,3.54c-2.37,1.25-2.37,3.29,0,4.54l19.73,10.39 | |||
| c2.37,1.26,6.25,1.26,8.62,0l19.73-10.39c2.37-1.24,2.37-3.29,0-4.54L65.32,70.39z"/> | |||
| <path opacity="0.5059" fill="#5B4682" enable-background="new " d="M65.11,70.47c-2.34-1.23-6.17-1.23-8.51,0l-4.34,2.3 | |||
| c-2.34,1.23-6.17,1.23-8.52,0l-4.34-2.3c-2.34-1.23-6.17-1.23-8.51,0l-6.65,3.5c-2.34,1.23-2.34,3.25,0,4.48l19.5,10.27 | |||
| c2.34,1.24,6.17,1.24,8.52,0l19.5-10.27c2.34-1.23,2.34-3.25,0-4.48L65.11,70.47z"/> | |||
| <path opacity="0.5176" fill="#57427F" enable-background="new " d="M64.91,70.55c-2.31-1.22-6.1-1.22-8.41,0l-4.29,2.27 | |||
| c-2.31,1.22-6.1,1.22-8.41,0l-4.3-2.27c-2.31-1.21-6.1-1.21-8.41,0l-6.57,3.46c-2.31,1.22-2.31,3.22,0,4.43l19.27,10.15 | |||
| c2.31,1.23,6.1,1.23,8.41,0l19.27-10.15c2.32-1.21,2.32-3.21,0-4.43L64.91,70.55z"/> | |||
| <path opacity="0.5294" fill="#533E7C" enable-background="new " d="M64.71,70.63c-2.29-1.2-6.03-1.2-8.31,0l-4.24,2.24 | |||
| c-2.29,1.2-6.03,1.2-8.31,0l-4.24-2.24c-2.29-1.2-6.03-1.2-8.31,0l-6.49,3.42c-2.28,1.2-2.28,3.18,0,4.38l19.04,10.03 | |||
| c2.29,1.21,6.03,1.21,8.31,0L71.2,78.43c2.29-1.2,2.29-3.18,0-4.38L64.71,70.63z"/> | |||
| <path opacity="0.5412" fill="#4F397A" enable-background="new " d="M64.51,70.71c-2.26-1.19-5.95-1.19-8.21,0l-4.19,2.21 | |||
| c-2.26,1.19-5.96,1.19-8.21,0l-4.19-2.21c-2.26-1.19-5.95-1.19-8.21,0l-6.41,3.38c-2.26,1.19-2.26,3.14,0,4.33l18.81,9.91 | |||
| c2.26,1.2,5.95,1.2,8.21,0l18.81-9.91c2.26-1.19,2.26-3.14,0-4.33L64.51,70.71z"/> | |||
| <path opacity="0.5529" fill="#4B3577" enable-background="new " d="M64.3,70.79c-2.23-1.17-5.88-1.17-8.11,0l-4.14,2.19 | |||
| c-2.23,1.17-5.88,1.17-8.11,0l-4.14-2.19c-2.23-1.17-5.88-1.17-8.11,0l-6.33,3.34c-2.23,1.17-2.23,3.1,0,4.27l18.58,9.78 | |||
| c2.23,1.18,5.88,1.18,8.11,0l18.58-9.78c2.23-1.17,2.23-3.1,0-4.27L64.3,70.79z"/> | |||
| <path opacity="0.5647" fill="#473174" enable-background="new " d="M64.1,70.87c-2.2-1.16-5.81-1.16-8.01,0l-4.08,2.16 | |||
| c-2.2,1.16-5.81,1.16-8.01,0l-4.09-2.16c-2.2-1.16-5.81-1.16-8.01,0l-6.25,3.3c-2.2,1.16-2.2,3.06,0,4.22L44,88.05 | |||
| c2.2,1.17,5.81,1.17,8.01,0l18.35-9.66c2.2-1.16,2.2-3.06,0-4.22L64.1,70.87z"/> | |||
| <path opacity="0.5765" fill="#442D71" enable-background="new " d="M63.9,70.95c-2.17-1.14-5.74-1.14-7.91,0l-4.03,2.13 | |||
| c-2.18,1.14-5.74,1.14-7.91,0l-4.03-2.13c-2.17-1.14-5.73-1.14-7.91,0l-6.18,3.25c-2.17,1.14-2.17,3.02,0,4.17l18.12,9.54 | |||
| c2.17,1.16,5.73,1.16,7.91,0l18.12-9.54c2.18-1.14,2.18-3.02,0-4.17L63.9,70.95z"/> | |||
| <path opacity="0.5882" fill="#40286E" enable-background="new " d="M63.7,71.03c-2.15-1.13-5.66-1.13-7.81,0l-3.98,2.11 | |||
| c-2.15,1.13-5.66,1.13-7.81,0l-3.98-2.11c-2.15-1.13-5.66-1.13-7.81,0l-6.1,3.21c-2.15,1.13-2.15,2.99,0,4.11l17.89,9.42 | |||
| c2.15,1.14,5.66,1.14,7.81,0l17.89-9.42c2.15-1.13,2.15-2.98,0-4.11L63.7,71.03z"/> | |||
| <path id="shadow_2_" opacity="0.6" fill="#3C246B" enable-background="new " d="M63.49,71.11c-2.12-1.11-5.59-1.11-7.71,0 | |||
| l-3.93,2.08c-2.12,1.11-5.59,1.11-7.71,0l-3.93-2.08c-2.12-1.11-5.59-1.11-7.71,0l-6.02,3.17c-2.12,1.11-2.12,2.95,0,4.06 | |||
| l17.66,9.3c2.12,1.13,5.59,1.13,7.71,0l17.65-9.3c2.12-1.11,2.12-2.95,0-4.06L63.49,71.11z"/> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| <polygon id="u" fill="#5F29C6" points="89.5,17 89.5,69 48,90.65 6.5,69 6.5,17 6.51,17 29.5,5 29.5,56 48,65.65 66.5,56 66.5,5 | |||
| 89.49,17 "/> | |||
| <polygon id="line" fill="#EAE3F9" points="89.5,17 89.5,20.37 66.5,32.37 49.5,41.24 49.5,89.87 48,90.65 46.5,89.87 46.5,41.24 | |||
| 29.5,32.37 6.5,20.37 6.5,17 6.51,17 29.5,28.99 48,38.64 66.5,28.99 89.49,17 "/> | |||
| </svg> | |||
| @ -0,0 +1,34 @@ | |||
| Copyright (c) 2016 Digitalcraftsman | |||
| Based on original work copyright (c) Jeff Forcier, copyright (c) 2011 Kenneth Reitz | |||
| and copyright (c) 2010 Armin Ronacher. | |||
| Some rights reserved. | |||
| Redistribution and use in source and binary forms of the theme, with or | |||
| without modification, are permitted provided that the following conditions | |||
| are met: | |||
| * Redistributions of source code must retain the above copyright | |||
| notice, this list of conditions and the following disclaimer. | |||
| * Redistributions in binary form must reproduce the above | |||
| copyright notice, this list of conditions and the following | |||
| disclaimer in the documentation and/or other materials provided | |||
| with the distribution. | |||
| * The names of the contributors may not be used to endorse or | |||
| promote products derived from this software without specific | |||
| prior written permission. | |||
| THIS THEME IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |||
| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |||
| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |||
| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |||
| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |||
| ARISING IN ANY WAY OUT OF THE USE OF THIS THEME, EVEN IF ADVISED OF THE | |||
| POSSIBILITY OF SUCH DAMAGE. | |||
| @ -0,0 +1,42 @@ | |||
| # Alabaster | |||
| A documentation theme ported from [Sphinx](http://www.sphinx-doc.org/en/stable/) to [Hugo](https://gohugo.io). | |||
| [](https://digitalcraftsman.github.io/hugo-alabaster-theme/) | |||
| ## Quick start | |||
| Install with `git`: | |||
| ```sh | |||
| git clone git@github.com:digitalcraftsman/hugo-alabaster-theme.git themes/hugo-alabaster-theme | |||
| ``` | |||
| > This theme uses the latest development version of Hugo. Therefore, it doesn't work with the official releases. Look [here](https://github.com/spf13/hugo#build-and-install-the-binaries-from-source-advanced-install) if you want to know how to build Hugo from source. | |||
| Next, take a look in the `exampleSite` folder at. This directory contains an example config file and the content for the demo. It serves as an example setup for your documentation. | |||
| Copy at least the `config.toml` in the root directory of your website. Overwrite the existing config file if necessary. | |||
| Hugo includes a development server, so you can view your changes as you go - | |||
| very handy. Spin it up with the following command: | |||
| ``` sh | |||
| hugo server | |||
| ``` | |||
| Now you can go to [localhost:1313](http://localhost:1313) and the Alabaster | |||
| theme should be visible. | |||
| For detailed installation instructions visit the [demo](https://digitalcraftsman.github.io/hugo-alabaster-theme/). | |||
| ## Acknowledgements | |||
| Last but not I want to give a big shout-out to [Jeff Forcier](https://github.com/bitprophet), [Kenneth Reitz](https://github.com/kennethreitz) and [Armin Ronacher](https://github.com/mitsuhiko). Their work and modifications on the original codebase made this port possible. | |||
| Furthermore, thanks to [Steve Francia](https://gihub.com/spf13) for creating Hugo and the [awesome community](https://github.com/spf13/hugo/graphs/contributors) around the project. | |||
| ## License | |||
| The theme is released under the BSD license. Read the [license](https://github.com/digitalcraftsman/hugo-alabaster-theme/blob/master/LICENSE.md) for more information. | |||
| @ -0,0 +1,6 @@ | |||
| {{ define "main" }} | |||
| {{ range where .Site.Pages "Type" "homepage" }} | |||
| <h1>{{ .Title }}</h1> | |||
| {{ .Content }} | |||
| {{ end }} | |||
| {{ end }} | |||
| @ -0,0 +1,5 @@ | |||
| {{ define "main" }} | |||
| <h1>Page not found</h1> | |||
| I'm sorry, but the requested page wasn’t found on the server. | |||
| {{ end }} | |||
| @ -0,0 +1,35 @@ | |||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |||
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||
| <html xmlns="http://www.w3.org/1999/xhtml"> | |||
| {{ partial "head" . }} | |||
| <body role="document"> | |||
| <div class="document"> | |||
| <div class="documentwrapper"> | |||
| <div class="bodywrapper"> | |||
| <div class="body" role="main"> | |||
| {{ block "main" . }}{{ end }} | |||
| {{ if not .IsHome -}} | |||
| {{ template "_internal/disqus.html" . }} | |||
| {{- end }} | |||
| </div> | |||
| </div> | |||
| </div> | |||
| {{ partial "sidebar/sidebar" . }} | |||
| {{ partial "footer" . }} | |||
| {{ range .Site.Params.custom_js -}} | |||
| <script src="{{ . | relURL }}"></script> | |||
| {{- end }} | |||
| {{ with .Site.Params.highlightjs -}} | |||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.3.0/highlight.min.js"></script> | |||
| <script>hljs.initHighlightingOnLoad();</script> | |||
| {{ end }} | |||
| {{ template "_internal/google_analytics.html" . }} | |||
| </div> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,5 @@ | |||
| {{ define "main" }} | |||
| <h1>{{ .Title }}</h1> | |||
| {{ .Content }} | |||
| {{ end }} | |||
| @ -0,0 +1,6 @@ | |||
| {{ define "main" }} | |||
| {{ range where .Site.Pages "Type" "homepage" }} | |||
| <h1>{{ .Title }}</h1> | |||
| {{ .Content }} | |||
| {{ end }} | |||
| {{ end }} | |||
| @ -0,0 +1,18 @@ | |||
| <div class="footer"> | |||
| {{ if .Site.Params.footer.show_powered_by -}} | |||
| Exported from <a href="https://raw.githubusercontent.com/jwiegley/use-package/master/use-package.org"><code>use-package.org</code></a> | |||
| using | |||
| {{ with .Params.creator }} | |||
| <a href="https://www.gnu.org/software/emacs/">{{ . | replaceRE "\\(Org.*" "" }}</a> + | |||
| <a href="https://orgmode.org/">{{ . | replaceRE "Emacs.*\\(" "" | replaceRE "\\+ ox-.*" "" }}</a> | |||
| {{ end }} | |||
| and published using <a href="http://gohugo.io/">Hugo {{ .Hugo.Version }}</a> | |||
| + <a href="https://github.com/digitalcraftsman/hugo-alabaster-theme">Alabaster</a> | |||
| {{ end }} | |||
| </div> | |||
| {{ if .Site.Params.github_banner -}} | |||
| <a href="https://github.com/{{ .Site.Params.github_user }}/{{ .Site.Params.github_repo }}" class="github"> | |||
| <img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" class="github"/> | |||
| </a> | |||
| {{- end }} | |||
| @ -0,0 +1,30 @@ | |||
| <head {{ with .Site.LanguageCode }}lang="{{ . }}"{{ end }}> | |||
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |||
| <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> | |||
| {{- with .Site.Params.description -}} | |||
| <meta name="description" content="{{ . }}"> | |||
| {{- end -}} | |||
| {{ .Hugo.Generator }} | |||
| <title>{{ if not .IsHome }}{{ .Title }} —{{ end }} {{ .Site.Title }}</title> | |||
| <link rel="stylesheet" href="{{ "css/basic.css" | relURL }}" type="text/css" /> | |||
| <link rel="stylesheet" href="{{ "css/alabaster.css" | relURL }}" type="text/css" /> | |||
| {{ with .Site.Params.highlightjs -}} | |||
| <link rel="stylesheet" href="{{ . | relURL }}" type="text/css" /> | |||
| {{- end }} | |||
| {{ range .Site.Params.custom_css -}} | |||
| <link rel="stylesheet" href="{{ . | relURL }}"> | |||
| {{- end }} | |||
| {{ range .Site.Params.custom_css_absolute -}} | |||
| <link rel="stylesheet" href="{{ . }}"> | |||
| {{- end }} | |||
| {{ with .Site.Params.favicon -}} | |||
| <link rel="shortcut icon" href="{{ . | relURL }}" type="image/x-icon"/> | |||
| {{- else -}} | |||
| <link rel="shortcut icon" href="{{ "favicon.ico" | relURL }}" type="image/x-icon"/> | |||
| {{- end }} | |||
| </head> | |||
| @ -0,0 +1,32 @@ | |||
| {{ if .Site.Params.github_user | and .Site.Params.github_repo -}} | |||
| {{ $path := printf "%s/%s" .Site.Params.github_user .Site.Params.github_repo }} | |||
| {{ if .Site.Params.sidebar.github_button -}} | |||
| <p> | |||
| <iframe src="https://ghbtns.com/github-btn.html?user={{ .Site.Params.github_user }}&repo={{ .Site.Params.github_repo }}&type=watch&count=true&size=large" | |||
| allowtransparency="true" frameborder="0" scrolling="0" width="200px" height="35px"></iframe> | |||
| </p> | |||
| {{- end }} | |||
| {{ if .Site.Params.sidebar.travis_button -}} | |||
| <p> | |||
| <a href="https://travis-ci.org/{{ $path }}"> | |||
| <img | |||
| alt="https://secure.travis-ci.org/{{ $path }}.svg?branch=master" | |||
| src="https://secure.travis-ci.org/{{ $path }}.svg?branch=master" | |||
| /> | |||
| </a> | |||
| </p> | |||
| {{- end }} | |||
| {{ if .Site.Params.sidebar.codecov_button -}} | |||
| <p> | |||
| <a href="https://codecov.io/github/{{ $path }}"> | |||
| <img | |||
| alt="https://codecov.io/github/{{ $path }}/coverage.svg?branch=master" | |||
| src="https://codecov.io/github/{{ $path }}/coverage.svg?branch=master" | |||
| /> | |||
| </a> | |||
| </p> | |||
| {{- end }} | |||
| {{- end }} | |||
| @ -0,0 +1,11 @@ | |||
| {{ if ne .Site.Menus.main nil }} | |||
| {{ if gt (len .Site.Menus.main) 0 }} | |||
| <ul> | |||
| {{ range .Site.Menus.main }} | |||
| <li class="toctree-l1"> | |||
| <a class="reference internal" href="{{ .URL }}">{{ .Name }}</a> | |||
| </li> | |||
| {{ end }} | |||
| </ul> | |||
| {{ end }} | |||
| {{ end }} | |||
| @ -0,0 +1,21 @@ | |||
| <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> | |||
| <div class="sphinxsidebarwrapper"> | |||
| <p class="logo"> | |||
| <a href="/"> | |||
| {{ with .Site.Params.sidebar.logo -}} | |||
| <img class="logo" src="{{ . | relURL }}" alt="Logo"/> | |||
| {{- end }} | |||
| <h1 class="logo logo-name">{{ .Site.Params.name }}</h1> | |||
| </a> | |||
| </p> | |||
| {{ with .Site.Params.description -}} | |||
| <p class="blurb">{{ . | markdownify }}</p> | |||
| {{- end }} | |||
| {{ partial "sidebar/buttons" . }} | |||
| {{ partial "sidebar/menu" . }} | |||
| </div> | |||
| </div> | |||
| <div class="clearer"></div> | |||
| </div> | |||
| @ -0,0 +1,4 @@ | |||
| <div class="admonition {{ .Get "type" | lower }}"> | |||
| <p class="first admonition-title">{{ .Get "title" }}</p> | |||
| <p>{{ string .Inner | markdownify }}</p> | |||
| </div> | |||
| @ -0,0 +1,569 @@ | |||
| /* -- page layout ----------------------------------------------------------- */ | |||
| body { | |||
| font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; | |||
| font-size: 17px; | |||
| background-color: white; | |||
| color: #000; | |||
| margin: 0; | |||
| padding: 0; | |||
| } | |||
| div.document { | |||
| width: 940px; | |||
| margin: 30px auto 0 auto; | |||
| } | |||
| div.documentwrapper { | |||
| float: left; | |||
| width: 100%; | |||
| } | |||
| div.bodywrapper { | |||
| margin: 0 0 0 220px; | |||
| } | |||
| div.sphinxsidebar { | |||
| width: 220px; | |||
| } | |||
| hr { | |||
| border: 1px solid #B1B4B6; | |||
| } | |||
| div.body { | |||
| background-color: #ffffff; | |||
| color: #3E4349; | |||
| padding: 0 30px 0 30px; | |||
| } | |||
| div.body > .section { | |||
| text-align: left; | |||
| } | |||
| div.footer { | |||
| width: 940px; | |||
| margin: 20px auto 30px auto; | |||
| font-size: 14px; | |||
| color: #888; | |||
| text-align: right; | |||
| } | |||
| div.footer a { | |||
| color: #888; | |||
| } | |||
| div.relations { | |||
| display: none; | |||
| } | |||
| div.sphinxsidebar a { | |||
| color: #444; | |||
| text-decoration: none; | |||
| border-bottom: 1px dotted #999; | |||
| } | |||
| div.sphinxsidebar a:hover { | |||
| border-bottom: 1px solid #999; | |||
| } | |||
| div.sphinxsidebar { | |||
| font-size: 14px; | |||
| line-height: 1.5; | |||
| } | |||
| div.sphinxsidebarwrapper { | |||
| padding: 18px 10px; | |||
| } | |||
| div.sphinxsidebarwrapper p.logo { | |||
| padding: 0; | |||
| margin: -10px 0 0 0px; | |||
| text-align: center; | |||
| } | |||
| div.sphinxsidebarwrapper h1.logo { | |||
| margin-top: -10px; | |||
| text-align: center; | |||
| margin-bottom: 5px; | |||
| text-align: center; | |||
| } | |||
| div.sphinxsidebarwrapper h1.logo-name { | |||
| margin-top: 0px; | |||
| } | |||
| div.sphinxsidebarwrapper p.blurb { | |||
| margin-top: 0; | |||
| font-style: normal; | |||
| } | |||
| div.sphinxsidebar h3, | |||
| div.sphinxsidebar h4 { | |||
| font-family: 'Garamond', 'Georgia', serif; | |||
| color: #444; | |||
| font-size: 24px; | |||
| font-weight: normal; | |||
| margin: 0 0 5px 0; | |||
| padding: 0; | |||
| } | |||
| div.sphinxsidebar h4 { | |||
| font-size: 20px; | |||
| } | |||
| div.sphinxsidebar h3 a { | |||
| color: #444; | |||
| } | |||
| div.sphinxsidebar p.logo a, | |||
| div.sphinxsidebar h3 a, | |||
| div.sphinxsidebar p.logo a:hover, | |||
| div.sphinxsidebar h3 a:hover { | |||
| border: none; | |||
| } | |||
| div.sphinxsidebar p { | |||
| color: #555; | |||
| margin: 10px 0; | |||
| } | |||
| div.sphinxsidebar ul { | |||
| margin: 10px 0; | |||
| padding: 0; | |||
| color: #000; | |||
| } | |||
| div.sphinxsidebar ul li.toctree-l1 > a { | |||
| font-size: 120%; | |||
| } | |||
| div.sphinxsidebar ul li.toctree-l2 > a { | |||
| font-size: 110%; | |||
| } | |||
| div.sphinxsidebar input { | |||
| border: 1px solid #CCC; | |||
| font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; | |||
| font-size: 1em; | |||
| } | |||
| div.sphinxsidebar hr { | |||
| border: none; | |||
| height: 1px; | |||
| color: #AAA; | |||
| background: #AAA; | |||
| text-align: left; | |||
| margin-left: 0; | |||
| width: 50%; | |||
| } | |||
| /* -- body styles ----------------------------------------------------------- */ | |||
| a { | |||
| color: #3782BE; | |||
| text-decoration: underline; | |||
| } | |||
| a:hover { | |||
| color: #3782BE; | |||
| text-decoration: underline; | |||
| } | |||
| div.body h1, | |||
| div.body h2, | |||
| div.body h3, | |||
| div.body h4, | |||
| div.body h5, | |||
| div.body h6 { | |||
| font-family: 'Garamond', 'Georgia', serif; | |||
| font-weight: normal; | |||
| margin: 30px 0px 10px 0px; | |||
| padding: 0; | |||
| } | |||
| div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } | |||
| div.body h2 { font-size: 180%; } | |||
| div.body h3 { font-size: 150%; } | |||
| div.body h4 { font-size: 130%; } | |||
| div.body h5 { font-size: 100%; } | |||
| div.body h6 { font-size: 100%; } | |||
| a.headerlink { | |||
| color: #DDD; | |||
| padding: 0 4px; | |||
| text-decoration: none; | |||
| } | |||
| a.headerlink:hover { | |||
| color: #444; | |||
| background: #EAEAEA; | |||
| } | |||
| div.body p, div.body dd, div.body li { | |||
| line-height: 1.4em; | |||
| } | |||
| div.admonition { | |||
| margin: 20px 0px; | |||
| padding: 10px 30px; | |||
| background-color: #FCC; | |||
| border: 1px solid #FAA; | |||
| } | |||
| div.admonition tt.xref, div.admonition a tt { | |||
| border-bottom: 1px solid #fafafa; | |||
| } | |||
| dd div.admonition { | |||
| margin-left: -60px; | |||
| padding-left: 60px; | |||
| } | |||
| div.admonition p.admonition-title { | |||
| font-family: 'Garamond', 'Georgia', serif; | |||
| font-weight: normal; | |||
| font-size: 24px; | |||
| margin: 0 0 10px 0; | |||
| padding: 0; | |||
| line-height: 1; | |||
| } | |||
| div.admonition p.last { | |||
| margin-bottom: 0; | |||
| } | |||
| div.highlight { | |||
| background-color: white; | |||
| } | |||
| dt:target, .highlight { | |||
| background: #FAF3E8; | |||
| } | |||
| div.note { | |||
| background-color: #EEE; | |||
| border: 1px solid #CCC; | |||
| } | |||
| div.seealso { | |||
| background-color: #EEE; | |||
| border: 1px solid #CCC; | |||
| } | |||
| div.topic { | |||
| background-color: #eee; | |||
| } | |||
| p.admonition-title { | |||
| display: inline; | |||
| } | |||
| p.admonition-title:after { | |||
| content: ":"; | |||
| } | |||
| pre, tt, code { | |||
| font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; | |||
| font-size: 0.9em; | |||
| } | |||
| .hll { | |||
| background-color: #FFC; | |||
| margin: 0 -12px; | |||
| padding: 0 12px; | |||
| display: block; | |||
| } | |||
| img.screenshot { | |||
| } | |||
| tt.descname, tt.descclassname, code.descname, code.descclassname { | |||
| font-size: 0.95em; | |||
| } | |||
| tt.descname, code.descname { | |||
| padding-right: 0.08em; | |||
| } | |||
| img.screenshot { | |||
| -moz-box-shadow: 2px 2px 4px #eee; | |||
| -webkit-box-shadow: 2px 2px 4px #eee; | |||
| box-shadow: 2px 2px 4px #eee; | |||
| } | |||
| table.docutils { | |||
| border: 1px solid #888; | |||
| -moz-box-shadow: 2px 2px 4px #eee; | |||
| -webkit-box-shadow: 2px 2px 4px #eee; | |||
| box-shadow: 2px 2px 4px #eee; | |||
| } | |||
| table.docutils td, table.docutils th { | |||
| border: 1px solid #888; | |||
| padding: 0.25em 0.7em; | |||
| } | |||
| table.field-list, table.footnote { | |||
| border: none; | |||
| -moz-box-shadow: none; | |||
| -webkit-box-shadow: none; | |||
| box-shadow: none; | |||
| } | |||
| table.footnote { | |||
| margin: 15px 0; | |||
| width: 100%; | |||
| border: 1px solid #EEE; | |||
| background: #FDFDFD; | |||
| font-size: 0.9em; | |||
| } | |||
| table.footnote + table.footnote { | |||
| margin-top: -15px; | |||
| border-top: none; | |||
| } | |||
| table.field-list th { | |||
| padding: 0 0.8em 0 0; | |||
| } | |||
| table.field-list td { | |||
| padding: 0; | |||
| } | |||
| table.field-list p { | |||
| margin-bottom: 0.8em; | |||
| } | |||
| table.footnote td.label { | |||
| width: 0px; | |||
| padding: 0.3em 0 0.3em 0.5em; | |||
| } | |||
| table.footnote td { | |||
| padding: 0.3em 0.5em; | |||
| } | |||
| dl { | |||
| margin: 0; | |||
| padding: 0; | |||
| } | |||
| dl dd { | |||
| margin-left: 30px; | |||
| } | |||
| blockquote { | |||
| margin: 0 0 0 30px; | |||
| padding: 0; | |||
| } | |||
| ul, ol { | |||
| margin: 10px 0 10px 30px; | |||
| padding: 0; | |||
| } | |||
| pre { | |||
| background: #EEE; | |||
| padding: 7px 30px; | |||
| margin: 15px 0px; | |||
| line-height: 1.3em; | |||
| } | |||
| dl pre, blockquote pre, li pre { | |||
| margin-left: 0; | |||
| padding-left: 30px; | |||
| } | |||
| dl dl pre { | |||
| margin-left: -90px; | |||
| padding-left: 90px; | |||
| } | |||
| tt, code { | |||
| background-color: #ecf0f3; | |||
| color: #222; | |||
| /* padding: 1px 2px; */ | |||
| } | |||
| tt.xref, code.xref, a tt { | |||
| background-color: #FBFBFB; | |||
| border-bottom: 1px solid white; | |||
| } | |||
| a.reference { | |||
| text-decoration: none; | |||
| border-bottom: 1px dotted #3782BE; | |||
| } | |||
| a.reference:hover { | |||
| border-bottom: 1px solid #3782BE; | |||
| } | |||
| a.footnote-reference { | |||
| text-decoration: none; | |||
| font-size: 0.7em; | |||
| vertical-align: top; | |||
| border-bottom: 1px dotted #3782BE; | |||
| } | |||
| a.footnote-reference:hover { | |||
| border-bottom: 1px solid #3782BE; | |||
| } | |||
| a:hover tt, a:hover code { | |||
| background: #EEE; | |||
| } | |||
| @media screen and (max-width: 870px) { | |||
| div.sphinxsidebar { | |||
| display: none; | |||
| } | |||
| div.document { | |||
| width: 100%; | |||
| } | |||
| div.documentwrapper { | |||
| margin-left: 0; | |||
| margin-top: 0; | |||
| margin-right: 0; | |||
| margin-bottom: 0; | |||
| } | |||
| div.bodywrapper { | |||
| margin-top: 0; | |||
| margin-right: 0; | |||
| margin-bottom: 0; | |||
| margin-left: 0; | |||
| } | |||
| ul { | |||
| margin-left: 0; | |||
| } | |||
| .document { | |||
| width: auto; | |||
| } | |||
| .bodywrapper { | |||
| margin: 0; | |||
| } | |||
| .footer { | |||
| width: auto; | |||
| } | |||
| .github { | |||
| display: none; | |||
| } | |||
| } | |||
| @media screen and (max-width: 875px) { | |||
| body { | |||
| margin: 0; | |||
| padding: 20px 30px; | |||
| } | |||
| div.documentwrapper { | |||
| float: none; | |||
| background: white; | |||
| } | |||
| div.sphinxsidebar { | |||
| display: block; | |||
| float: none; | |||
| width: 102.5%; | |||
| margin: 50px -30px -20px -30px; | |||
| padding: 10px 20px; | |||
| background: #333; | |||
| color: #FFF; | |||
| } | |||
| div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, | |||
| div.sphinxsidebar h3 a { | |||
| color: white; | |||
| } | |||
| div.sphinxsidebar a { | |||
| color: #AAA; | |||
| } | |||
| div.sphinxsidebar p.logo { | |||
| display: none; | |||
| } | |||
| div.document { | |||
| width: 100%; | |||
| margin: 0; | |||
| } | |||
| div.footer { | |||
| width: auto; | |||
| margin-top: 30px; | |||
| margin-bottom: 0; | |||
| text-align: center; | |||
| } | |||
| div.bodywrapper { | |||
| margin: 0; | |||
| } | |||
| div.body { | |||
| min-height: 0; | |||
| padding: 0; | |||
| } | |||
| .rtd_doc_footer { | |||
| display: none; | |||
| } | |||
| .document { | |||
| width: auto; | |||
| } | |||
| .footer { | |||
| width: auto; | |||
| } | |||
| .github { | |||
| display: none; | |||
| } | |||
| } | |||
| /* misc. */ | |||
| .revsys-inline { | |||
| display: none!important; | |||
| } | |||
| /* Make nested-list/multi-paragraph items look better in Releases changelog | |||
| * pages. Without this, docutils' magical list fuckery causes inconsistent | |||
| * formatting between different release sub-lists. | |||
| */ | |||
| div#changelog > div.section > ul > li > p:only-child { | |||
| margin-bottom: 0; | |||
| } | |||
| /* Hide fugly table cell borders in ..bibliography:: directive output */ | |||
| table.docutils.citation, table.docutils.citation td, table.docutils.citation th { | |||
| border: none; | |||
| /* Below needed in some edge cases; if not applied, bottom shadows appear */ | |||
| -moz-box-shadow: none; | |||
| -webkit-box-shadow: none; | |||
| box-shadow: none; | |||
| } | |||
| @ -0,0 +1,599 @@ | |||
| /* | |||
| * basic.css | |||
| * ~~~~~~~~~ | |||
| * | |||
| * Sphinx stylesheet -- basic theme. | |||
| * | |||
| * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. | |||
| * :license: BSD, see LICENSE for details. | |||
| * | |||
| */ | |||
| /* -- main layout ----------------------------------------------------------- */ | |||
| div.clearer { | |||
| clear: both; | |||
| } | |||
| /* -- relbar ---------------------------------------------------------------- */ | |||
| div.related { | |||
| width: 100%; | |||
| font-size: 90%; | |||
| } | |||
| div.related h3 { | |||
| display: none; | |||
| } | |||
| div.related ul { | |||
| margin: 0; | |||
| padding: 0 0 0 10px; | |||
| list-style: none; | |||
| } | |||
| div.related li { | |||
| display: inline; | |||
| } | |||
| div.related li.right { | |||
| float: right; | |||
| margin-right: 5px; | |||
| } | |||
| /* -- sidebar --------------------------------------------------------------- */ | |||
| div.sphinxsidebarwrapper { | |||
| padding: 10px 5px 0 10px; | |||
| } | |||
| div.sphinxsidebar { | |||
| float: left; | |||
| width: 230px; | |||
| margin-left: -100%; | |||
| font-size: 90%; | |||
| } | |||
| div.sphinxsidebar ul { | |||
| list-style: none; | |||
| } | |||
| div.sphinxsidebar ul ul, | |||
| div.sphinxsidebar ul.want-points { | |||
| margin-left: 20px; | |||
| list-style: square; | |||
| } | |||
| div.sphinxsidebar ul ul { | |||
| margin-top: 0; | |||
| margin-bottom: 0; | |||
| } | |||
| div.sphinxsidebar form { | |||
| margin-top: 10px; | |||
| } | |||
| div.sphinxsidebar input { | |||
| border: 1px solid #98dbcc; | |||
| font-family: sans-serif; | |||
| font-size: 1em; | |||
| } | |||
| div.sphinxsidebar #searchbox input[type="text"] { | |||
| width: 170px; | |||
| } | |||
| div.sphinxsidebar #searchbox input[type="submit"] { | |||
| width: 30px; | |||
| } | |||
| img { | |||
| border: 0; | |||
| max-width: 100%; | |||
| } | |||
| /* -- search page ----------------------------------------------------------- */ | |||
| ul.search { | |||
| margin: 10px 0 0 20px; | |||
| padding: 0; | |||
| } | |||
| ul.search li { | |||
| padding: 5px 0 5px 20px; | |||
| background-image: url(file.png); | |||
| background-repeat: no-repeat; | |||
| background-position: 0 7px; | |||
| } | |||
| ul.search li a { | |||
| font-weight: bold; | |||
| } | |||
| ul.search li div.context { | |||
| color: #888; | |||
| margin: 2px 0 0 30px; | |||
| text-align: left; | |||
| } | |||
| ul.keywordmatches li.goodmatch a { | |||
| font-weight: bold; | |||
| } | |||
| /* -- index page ------------------------------------------------------------ */ | |||
| table.contentstable { | |||
| width: 90%; | |||
| } | |||
| table.contentstable p.biglink { | |||
| line-height: 150%; | |||
| } | |||
| a.biglink { | |||
| font-size: 1.3em; | |||
| } | |||
| span.linkdescr { | |||
| font-style: italic; | |||
| padding-top: 5px; | |||
| font-size: 90%; | |||
| } | |||
| /* -- general index --------------------------------------------------------- */ | |||
| table.indextable { | |||
| width: 100%; | |||
| } | |||
| table.indextable td { | |||
| text-align: left; | |||
| vertical-align: top; | |||
| } | |||
| table.indextable dl, table.indextable dd { | |||
| margin-top: 0; | |||
| margin-bottom: 0; | |||
| } | |||
| table.indextable tr.pcap { | |||
| height: 10px; | |||
| } | |||
| table.indextable tr.cap { | |||
| margin-top: 10px; | |||
| background-color: #f2f2f2; | |||
| } | |||
| img.toggler { | |||
| margin-right: 3px; | |||
| margin-top: 3px; | |||
| cursor: pointer; | |||
| } | |||
| div.modindex-jumpbox { | |||
| border-top: 1px solid #ddd; | |||
| border-bottom: 1px solid #ddd; | |||
| margin: 1em 0 1em 0; | |||
| padding: 0.4em; | |||
| } | |||
| div.genindex-jumpbox { | |||
| border-top: 1px solid #ddd; | |||
| border-bottom: 1px solid #ddd; | |||
| margin: 1em 0 1em 0; | |||
| padding: 0.4em; | |||
| } | |||
| /* -- general body styles --------------------------------------------------- */ | |||
| a.headerlink { | |||
| visibility: hidden; | |||
| } | |||
| h1:hover > a.headerlink, | |||
| h2:hover > a.headerlink, | |||
| h3:hover > a.headerlink, | |||
| h4:hover > a.headerlink, | |||
| h5:hover > a.headerlink, | |||
| h6:hover > a.headerlink, | |||
| dt:hover > a.headerlink, | |||
| caption:hover > a.headerlink, | |||
| p.caption:hover > a.headerlink, | |||
| div.code-block-caption:hover > a.headerlink { | |||
| visibility: visible; | |||
| } | |||
| div.body p.caption { | |||
| text-align: inherit; | |||
| } | |||
| div.body td { | |||
| text-align: left; | |||
| } | |||
| .field-list ul { | |||
| padding-left: 1em; | |||
| } | |||
| .first { | |||
| margin-top: 0 !important; | |||
| } | |||
| p.rubric { | |||
| margin-top: 30px; | |||
| font-weight: bold; | |||
| } | |||
| img.align-left, .figure.align-left, object.align-left { | |||
| clear: left; | |||
| float: left; | |||
| margin-right: 1em; | |||
| } | |||
| img.align-right, .figure.align-right, object.align-right { | |||
| clear: right; | |||
| float: right; | |||
| margin-left: 1em; | |||
| } | |||
| img.align-center, .figure.align-center, object.align-center { | |||
| display: block; | |||
| margin-left: auto; | |||
| margin-right: auto; | |||
| } | |||
| .align-left { | |||
| text-align: left; | |||
| } | |||
| .align-center { | |||
| text-align: center; | |||
| } | |||
| .align-right { | |||
| text-align: right; | |||
| } | |||
| /* -- sidebars -------------------------------------------------------------- */ | |||
| div.sidebar { | |||
| margin: 0 0 0.5em 1em; | |||
| border: 1px solid #ddb; | |||
| padding: 7px 7px 0 7px; | |||
| background-color: #ffe; | |||
| width: 40%; | |||
| float: right; | |||
| } | |||
| p.sidebar-title { | |||
| font-weight: bold; | |||
| } | |||
| /* -- topics ---------------------------------------------------------------- */ | |||
| div.topic { | |||
| border: 1px solid #ccc; | |||
| padding: 7px 7px 0 7px; | |||
| margin: 10px 0 10px 0; | |||
| } | |||
| p.topic-title { | |||
| font-size: 1.1em; | |||
| font-weight: bold; | |||
| margin-top: 10px; | |||
| } | |||
| /* -- admonitions ----------------------------------------------------------- */ | |||
| div.admonition { | |||
| margin-top: 10px; | |||
| margin-bottom: 10px; | |||
| padding: 7px; | |||
| } | |||
| div.admonition dt { | |||
| font-weight: bold; | |||
| } | |||
| div.admonition dl { | |||
| margin-bottom: 0; | |||
| } | |||
| p.admonition-title { | |||
| margin: 0px 10px 5px 0px; | |||
| font-weight: bold; | |||
| } | |||
| div.body p.centered { | |||
| text-align: center; | |||
| margin-top: 25px; | |||
| } | |||
| /* -- tables ---------------------------------------------------------------- */ | |||
| table.docutils { | |||
| border: 0; | |||
| border-collapse: collapse; | |||
| } | |||
| table caption span.caption-number { | |||
| font-style: italic; | |||
| } | |||
| table caption span.caption-text { | |||
| } | |||
| table.docutils td, table.docutils th { | |||
| padding: 1px 8px 1px 5px; | |||
| border-top: 0; | |||
| border-left: 0; | |||
| border-right: 0; | |||
| border-bottom: 1px solid #aaa; | |||
| } | |||
| table.field-list td, table.field-list th { | |||
| border: 0 !important; | |||
| } | |||
| table.footnote td, table.footnote th { | |||
| border: 0 !important; | |||
| } | |||
| th { | |||
| text-align: left; | |||
| padding-right: 5px; | |||
| } | |||
| table.citation { | |||
| border-left: solid 1px gray; | |||
| margin-left: 1px; | |||
| } | |||
| table.citation td { | |||
| border-bottom: none; | |||
| } | |||
| /* -- figures --------------------------------------------------------------- */ | |||
| div.figure { | |||
| margin: 0.5em; | |||
| padding: 0.5em; | |||
| } | |||
| div.figure p.caption { | |||
| padding: 0.3em; | |||
| } | |||
| div.figure p.caption span.caption-number { | |||
| font-style: italic; | |||
| } | |||
| div.figure p.caption span.caption-text { | |||
| } | |||
| /* -- other body styles ----------------------------------------------------- */ | |||
| ol.arabic { | |||
| list-style: decimal; | |||
| } | |||
| ol.loweralpha { | |||
| list-style: lower-alpha; | |||
| } | |||
| ol.upperalpha { | |||
| list-style: upper-alpha; | |||
| } | |||
| ol.lowerroman { | |||
| list-style: lower-roman; | |||
| } | |||
| ol.upperroman { | |||
| list-style: upper-roman; | |||
| } | |||
| dl { | |||
| margin-bottom: 15px; | |||
| } | |||
| dd p { | |||
| margin-top: 0px; | |||
| } | |||
| dd ul, dd table { | |||
| margin-bottom: 10px; | |||
| } | |||
| dd { | |||
| margin-top: 3px; | |||
| margin-bottom: 10px; | |||
| margin-left: 30px; | |||
| } | |||
| dt:target, .highlighted { | |||
| background-color: #fbe54e; | |||
| } | |||
| dl.glossary dt { | |||
| font-weight: bold; | |||
| font-size: 1.1em; | |||
| } | |||
| .field-list ul { | |||
| margin: 0; | |||
| padding-left: 1em; | |||
| } | |||
| .field-list p { | |||
| margin: 0; | |||
| } | |||
| .optional { | |||
| font-size: 1.3em; | |||
| } | |||
| .sig-paren { | |||
| font-size: larger; | |||
| } | |||
| .versionmodified { | |||
| font-style: italic; | |||
| } | |||
| .system-message { | |||
| background-color: #fda; | |||
| padding: 5px; | |||
| border: 3px solid red; | |||
| } | |||
| .footnote:target { | |||
| background-color: #ffa; | |||
| } | |||
| .line-block { | |||
| display: block; | |||
| margin-top: 1em; | |||
| margin-bottom: 1em; | |||
| } | |||
| .line-block .line-block { | |||
| margin-top: 0; | |||
| margin-bottom: 0; | |||
| margin-left: 1.5em; | |||
| } | |||
| .guilabel, .menuselection { | |||
| font-family: sans-serif; | |||
| } | |||
| .accelerator { | |||
| text-decoration: underline; | |||
| } | |||
| .classifier { | |||
| font-style: oblique; | |||
| } | |||
| abbr, acronym { | |||
| border-bottom: dotted 1px; | |||
| cursor: help; | |||
| } | |||
| /* -- code displays --------------------------------------------------------- */ | |||
| pre { | |||
| overflow: auto; | |||
| overflow-y: hidden; /* fixes display issues on Chrome browsers */ | |||
| } | |||
| td.linenos pre { | |||
| padding: 5px 0px; | |||
| border: 0; | |||
| background-color: transparent; | |||
| color: #aaa; | |||
| } | |||
| table.highlighttable { | |||
| margin-left: 0.5em; | |||
| } | |||
| table.highlighttable td { | |||
| padding: 0 0.5em 0 0.5em; | |||
| } | |||
| div.code-block-caption { | |||
| padding: 2px 5px; | |||
| font-size: small; | |||
| } | |||
| div.code-block-caption code { | |||
| background-color: transparent; | |||
| } | |||
| div.code-block-caption + div > div.highlight > pre { | |||
| margin-top: 0; | |||
| } | |||
| div.code-block-caption span.caption-number { | |||
| padding: 0.1em 0.3em; | |||
| font-style: italic; | |||
| } | |||
| div.code-block-caption span.caption-text { | |||
| } | |||
| div.literal-block-wrapper { | |||
| padding: 1em 1em 0; | |||
| } | |||
| div.literal-block-wrapper div.highlight { | |||
| margin: 0; | |||
| } | |||
| code.descname { | |||
| background-color: transparent; | |||
| font-weight: bold; | |||
| font-size: 1.2em; | |||
| } | |||
| code.descclassname { | |||
| background-color: transparent; | |||
| } | |||
| code.xref, a code { | |||
| background-color: transparent; | |||
| font-weight: bold; | |||
| } | |||
| h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { | |||
| background-color: transparent; | |||
| } | |||
| .viewcode-link { | |||
| float: right; | |||
| } | |||
| .viewcode-back { | |||
| float: right; | |||
| font-family: sans-serif; | |||
| } | |||
| div.viewcode-block:target { | |||
| margin: -1px -10px; | |||
| padding: 0 10px; | |||
| } | |||
| /* -- math display ---------------------------------------------------------- */ | |||
| img.math { | |||
| vertical-align: middle; | |||
| } | |||
| div.body div.math p { | |||
| text-align: center; | |||
| } | |||
| span.eqno { | |||
| float: right; | |||
| } | |||
| /* -- printout stylesheet --------------------------------------------------- */ | |||
| @media print { | |||
| div.document, | |||
| div.documentwrapper, | |||
| div.bodywrapper { | |||
| margin: 0 !important; | |||
| width: 100%; | |||
| } | |||
| div.sphinxsidebar, | |||
| div.related, | |||
| div.footer, | |||
| #top-link { | |||
| display: none; | |||
| } | |||
| } | |||
| @ -0,0 +1,172 @@ | |||
| ;;; use-package-bind-key.el --- Support for the :bind/:bind-keymap keywords -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2012-2017 John Wiegley | |||
| ;; Author: John Wiegley <johnw@newartisans.com> | |||
| ;; Maintainer: John Wiegley <johnw@newartisans.com> | |||
| ;; Created: 17 Jun 2012 | |||
| ;; Modified: 4 Dec 2017 | |||
| ;; Version: 1.0 | |||
| ;; Package-Requires: ((emacs "24.3") (use-package "2.4") (bind-key "2.4")) | |||
| ;; Keywords: dotemacs startup speed config package | |||
| ;; URL: https://github.com/jwiegley/use-package | |||
| ;; 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, 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 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: | |||
| ;; Provides support for the :bind, :bind*, :bind-keymap and :bind-keymap* | |||
| ;; keywords. Note that these are currently still baked into | |||
| ;; `use-package-keywords' and `use-package-deferring-keywords', although this | |||
| ;; is harmless if they are never used. | |||
| ;;; Code: | |||
| (require 'use-package-core) | |||
| (require 'bind-key) | |||
| ;;;###autoload | |||
| (defun use-package-autoload-keymap (keymap-symbol package override) | |||
| "Loads PACKAGE and then binds the key sequence used to invoke | |||
| this function to KEYMAP-SYMBOL. It then simulates pressing the | |||
| same key sequence a again, so that the next key pressed is routed | |||
| to the newly loaded keymap. | |||
| This function supports use-package's :bind-keymap keyword. It | |||
| works by binding the given key sequence to an invocation of this | |||
| function for a particular keymap. The keymap is expected to be | |||
| defined by the package. In this way, loading the package is | |||
| deferred until the prefix key sequence is pressed." | |||
| (if (not (require package nil t)) | |||
| (use-package-error (format "Cannot load package.el: %s" package)) | |||
| (if (and (boundp keymap-symbol) | |||
| (keymapp (symbol-value keymap-symbol))) | |||
| (let* ((kv (this-command-keys-vector)) | |||
| (key (key-description kv)) | |||
| (keymap (symbol-value keymap-symbol))) | |||
| (if override | |||
| (bind-key* key keymap) | |||
| (bind-key key keymap)) | |||
| (setq unread-command-events | |||
| (mapcar (lambda (ev) (cons t ev)) | |||
| (listify-key-sequence kv)))) | |||
| (use-package-error | |||
| (format "package.el %s failed to define keymap %s" | |||
| package keymap-symbol))))) | |||
| ;;;###autoload | |||
| (defun use-package-normalize-binder (name keyword args) | |||
| (let ((arg args) | |||
| args*) | |||
| (while arg | |||
| (let ((x (car arg))) | |||
| (cond | |||
| ;; (KEY . COMMAND) | |||
| ((and (consp x) | |||
| (or (stringp (car x)) | |||
| (vectorp (car x))) | |||
| (or (use-package-recognize-function (cdr x) t #'stringp))) | |||
| (setq args* (nconc args* (list x))) | |||
| (setq arg (cdr arg))) | |||
| ;; KEYWORD | |||
| ;; :map KEYMAP | |||
| ;; :prefix-docstring STRING | |||
| ;; :prefix-map SYMBOL | |||
| ;; :prefix STRING | |||
| ;; :filter SEXP | |||
| ;; :menu-name STRING | |||
| ;; :package SYMBOL | |||
| ((or (and (eq x :map) (symbolp (cadr arg))) | |||
| (and (eq x :prefix) (stringp (cadr arg))) | |||
| (and (eq x :prefix-map) (symbolp (cadr arg))) | |||
| (and (eq x :prefix-docstring) (stringp (cadr arg))) | |||
| (eq x :filter) | |||
| (and (eq x :menu-name) (stringp (cadr arg))) | |||
| (and (eq x :package) (symbolp (cadr arg)))) | |||
| (setq args* (nconc args* (list x (cadr arg)))) | |||
| (setq arg (cddr arg))) | |||
| ((listp x) | |||
| (setq args* | |||
| (nconc args* (use-package-normalize-binder name keyword x))) | |||
| (setq arg (cdr arg))) | |||
| (t | |||
| ;; Error! | |||
| (use-package-error | |||
| (concat (symbol-name name) | |||
| " wants arguments acceptable to the `bind-keys' macro," | |||
| " or a list of such values")))))) | |||
| args*)) | |||
| ;;;; :bind, :bind* | |||
| ;;;###autoload | |||
| (defalias 'use-package-normalize/:bind 'use-package-normalize-binder) | |||
| ;;;###autoload | |||
| (defalias 'use-package-normalize/:bind* 'use-package-normalize-binder) | |||
| ;; jww (2017-12-07): This is too simplistic. It will fail to determine | |||
| ;; autoloads in this situation: | |||
| ;; (use-package foo | |||
| ;; :bind (:map foo-map (("C-a" . func)))) | |||
| ;;;###autoload | |||
| (defalias 'use-package-autoloads/:bind 'use-package-autoloads-mode) | |||
| ;;;###autoload | |||
| (defalias 'use-package-autoloads/:bind* 'use-package-autoloads-mode) | |||
| ;;;###autoload | |||
| (defun use-package-handler/:bind | |||
| (name _keyword args rest state &optional bind-macro) | |||
| (use-package-concat | |||
| (use-package-process-keywords name rest state) | |||
| `(,@(mapcar | |||
| #'(lambda (xs) | |||
| `(,(if bind-macro bind-macro 'bind-keys) | |||
| :package ,name ,@(use-package-normalize-commands xs))) | |||
| (use-package-split-list-at-keys :break args))))) | |||
| (defun use-package-handler/:bind* (name keyword arg rest state) | |||
| (use-package-handler/:bind name keyword arg rest state 'bind-keys*)) | |||
| ;;;; :bind-keymap, :bind-keymap* | |||
| ;;;###autoload | |||
| (defalias 'use-package-normalize/:bind-keymap 'use-package-normalize-binder) | |||
| ;;;###autoload | |||
| (defalias 'use-package-normalize/:bind-keymap* 'use-package-normalize-binder) | |||
| ;;;###autoload | |||
| (defun use-package-handler/:bind-keymap | |||
| (name _keyword args rest state &optional override) | |||
| (use-package-concat | |||
| (use-package-process-keywords name rest state) | |||
| (mapcar | |||
| #'(lambda (binding) | |||
| `(,(if override 'bind-key* 'bind-key) | |||
| ,(car binding) | |||
| #'(lambda () | |||
| (interactive) | |||
| (use-package-autoload-keymap | |||
| ',(cdr binding) ',(use-package-as-symbol name) | |||
| ,override)))) | |||
| args))) | |||
| ;;;###autoload | |||
| (defun use-package-handler/:bind-keymap* (name keyword arg rest state) | |||
| (use-package-handler/:bind-keymap name keyword arg rest state t)) | |||
| (provide 'use-package-bind-key) | |||
| ;;; use-package-bind-key.el ends here | |||
| @ -0,0 +1,44 @@ | |||
| ;;; use-package-chords.el --- key-chord keyword for use-package -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2015-2017 Justin Talbott | |||
| ;; Author: Justin Talbott <justin@waymondo.com> | |||
| ;; Keywords: convenience, tools, extensions | |||
| ;; URL: https://github.com/waymondo/use-package-chords | |||
| ;; Version: 0.2 | |||
| ;; Package-Requires: ((use-package "2.1") (bind-key "1.0") (bind-chord "0.2") (key-chord "0.6")) | |||
| ;; Filename: use-package-chords.el | |||
| ;; License: GNU General Public License version 3, or (at your option) any later version | |||
| ;; | |||
| ;;; Commentary: | |||
| ;; | |||
| ;; The `:chords' keyword allows you to define `key-chord' bindings for | |||
| ;; `use-package' declarations in the same manner as the `:bind' | |||
| ;; keyword. | |||
| ;; | |||
| ;;; Code: | |||
| (require 'use-package) | |||
| (require 'bind-chord) | |||
| ;;;###autoload | |||
| (defalias 'use-package-autoloads/:chords 'use-package-autoloads-mode) | |||
| ;;;###autoload | |||
| (defalias 'use-package-normalize/:chords 'use-package-normalize-binder) | |||
| ;;;###autoload | |||
| (defun use-package-handler/:chords (name _keyword arg rest state) | |||
| "Handler for `:chords' keyword in `use-package'." | |||
| (use-package-concat | |||
| (use-package-process-keywords name rest state) | |||
| `(,(macroexpand | |||
| `(bind-chords :package ,name ,@arg))))) | |||
| (add-to-list 'use-package-keywords :chords) | |||
| (provide 'use-package-chords) | |||
| ;;; use-package-chords.el ends here | |||
| @ -0,0 +1,91 @@ | |||
| ;;; use-package-delight.el --- Support for the :delight keyword -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2012-2017 John Wiegley | |||
| ;; Author: John Wiegley <johnw@newartisans.com> | |||
| ;; Maintainer: John Wiegley <johnw@newartisans.com> | |||
| ;; Created: 17 Jun 2012 | |||
| ;; Modified: 3 Dec 2017 | |||
| ;; Version: 1.0 | |||
| ;; Package-Requires: ((emacs "24.3") (use-package "2.4")) | |||
| ;; Keywords: dotemacs startup speed config package | |||
| ;; URL: https://github.com/jwiegley/use-package | |||
| ;; 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, 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 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: | |||
| ;; Provides support for the :delight keyword, which is made available by | |||
| ;; default by requiring `use-package'. | |||
| ;;; Code: | |||
| (require 'use-package-core) | |||
| (defun use-package-normalize-delight (name args) | |||
| "Normalize ARGS for a single call to `delight'." | |||
| (when (eq :eval (car args)) | |||
| ;; Handle likely common mistake. | |||
| (use-package-error ":delight mode line constructs must be quoted")) | |||
| (cond ((and (= (length args) 1) | |||
| (use-package-non-nil-symbolp (car args))) | |||
| `(,(nth 0 args) nil ,name)) | |||
| ((= (length args) 2) | |||
| `(,(nth 0 args) ,(nth 1 args) ,name)) | |||
| ((= (length args) 3) | |||
| args) | |||
| (t | |||
| (use-package-error | |||
| ":delight expects `delight' arguments or a list of them")))) | |||
| ;;;###autoload | |||
| (defun use-package-normalize/:delight (name _keyword args) | |||
| "Normalize arguments to delight." | |||
| (cond ((null args) | |||
| `((,(use-package-as-mode name) nil ,name))) | |||
| ((and (= (length args) 1) | |||
| (use-package-non-nil-symbolp (car args))) | |||
| `((,(car args) nil ,name))) | |||
| ((and (= (length args) 1) | |||
| (stringp (car args))) | |||
| `((,(use-package-as-mode name) ,(car args) ,name))) | |||
| ((and (= (length args) 1) | |||
| (listp (car args)) | |||
| (eq 'quote (caar args))) | |||
| `((,(use-package-as-mode name) ,@(cdar args) ,name))) | |||
| ((and (= (length args) 2) | |||
| (listp (nth 1 args)) | |||
| (eq 'quote (car (nth 1 args)))) | |||
| `((,(car args) ,@(cdr (nth 1 args)) ,name))) | |||
| (t (mapcar | |||
| (apply-partially #'use-package-normalize-delight name) | |||
| (if (use-package-non-nil-symbolp (car args)) | |||
| (list args) | |||
| args))))) | |||
| ;;;###autoload | |||
| (defun use-package-handler/:delight (name _keyword args rest state) | |||
| (let ((body (use-package-process-keywords name rest state))) | |||
| (use-package-concat | |||
| body | |||
| `((if (fboundp 'delight) | |||
| (delight '(,@args))))))) | |||
| (add-to-list 'use-package-keywords :delight t) | |||
| (provide 'use-package-delight) | |||
| ;;; use-package-delight.el ends here | |||
| @ -0,0 +1,80 @@ | |||
| ;;; use-package-diminish.el --- Support for the :diminish keyword -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2012-2017 John Wiegley | |||
| ;; Author: John Wiegley <johnw@newartisans.com> | |||
| ;; Maintainer: John Wiegley <johnw@newartisans.com> | |||
| ;; Created: 17 Jun 2012 | |||
| ;; Modified: 3 Dec 2017 | |||
| ;; Version: 1.0 | |||
| ;; Package-Requires: ((emacs "24.3") (use-package "2.4")) | |||
| ;; Keywords: dotemacs startup speed config package | |||
| ;; URL: https://github.com/jwiegley/use-package | |||
| ;; 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, 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 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: | |||
| ;; Provides support for the :diminish keyword, which is made available by | |||
| ;; default by requiring `use-package'. | |||
| ;;; Code: | |||
| (require 'use-package-core) | |||
| (defun use-package-normalize-diminish (name label arg &optional recursed) | |||
| "Normalize the arguments to diminish down to a list of one of two forms: | |||
| SYMBOL | |||
| (SYMBOL . STRING)" | |||
| (cond | |||
| ((not arg) | |||
| (list (use-package-as-mode name))) | |||
| ((use-package-non-nil-symbolp arg) | |||
| (list arg)) | |||
| ((stringp arg) | |||
| (list (cons (use-package-as-mode name) arg))) | |||
| ((and (consp arg) (stringp (cdr arg))) | |||
| (list arg)) | |||
| ((and (not recursed) (listp arg) (listp (cdr arg))) | |||
| (mapcar #'(lambda (x) (car (use-package-normalize-diminish | |||
| name label x t))) arg)) | |||
| (t | |||
| (use-package-error | |||
| (concat label " wants a string, symbol, " | |||
| "(symbol . string) or list of these"))))) | |||
| ;;;###autoload | |||
| (defun use-package-normalize/:diminish (name keyword args) | |||
| (use-package-as-one (symbol-name keyword) args | |||
| (apply-partially #'use-package-normalize-diminish name) t)) | |||
| ;;;###autoload | |||
| (defun use-package-handler/:diminish (name _keyword arg rest state) | |||
| (let ((body (use-package-process-keywords name rest state))) | |||
| (use-package-concat | |||
| (mapcar #'(lambda (var) | |||
| `(if (fboundp 'diminish) | |||
| ,(if (consp var) | |||
| `(diminish ',(car var) ,(cdr var)) | |||
| `(diminish ',var)))) | |||
| arg) | |||
| body))) | |||
| (add-to-list 'use-package-keywords :diminish t) | |||
| (provide 'use-package-diminish) | |||
| ;;; use-package-diminish.el ends here | |||
| @ -0,0 +1,79 @@ | |||
| ;;; use-package-ensure-system-package.el --- auto install system packages -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2017 Justin Talbott | |||
| ;; Author: Justin Talbott <justin@waymondo.com> | |||
| ;; Keywords: convenience, tools, extensions | |||
| ;; URL: https://github.com/waymondo/use-package-ensure-system-package | |||
| ;; Version: 0.2 | |||
| ;; Package-Requires: ((use-package "2.1") (system-packages "1.0.4")) | |||
| ;; Filename: use-package-ensure-system-package.el | |||
| ;; License: GNU General Public License version 3, or (at your option) any later version | |||
| ;; | |||
| ;;; Commentary: | |||
| ;; | |||
| ;; The `:ensure-system-package` keyword allows you to ensure system | |||
| ;; binaries exist alongside your `use-package` declarations. | |||
| ;; | |||
| ;;; Code: | |||
| (require 'use-package) | |||
| (require 'system-packages nil t) | |||
| (eval-when-compile | |||
| (declare-function system-packages-get-command "system-packages")) | |||
| (defun use-package-ensure-system-package-consify (arg) | |||
| "Turn `arg' into a cons of (`package-name' . `install-command')." | |||
| (cond | |||
| ((stringp arg) | |||
| (cons arg `(system-packages-install ,arg))) | |||
| ((symbolp arg) | |||
| (cons arg `(system-packages-install ,(symbol-name arg)))) | |||
| ((consp arg) | |||
| (cond | |||
| ((not (cdr arg)) | |||
| (use-package-ensure-system-package-consify (car arg))) | |||
| ((stringp (cdr arg)) | |||
| (cons (car arg) `(async-shell-command ,(cdr arg)))) | |||
| (t | |||
| (cons (car arg) | |||
| `(system-packages-install ,(symbol-name (cdr arg))))))))) | |||
| ;;;###autoload | |||
| (defun use-package-normalize/:ensure-system-package (_name-symbol keyword args) | |||
| "Turn `arg' into a list of cons-es of (`package-name' . `install-command')." | |||
| (use-package-only-one (symbol-name keyword) args | |||
| (lambda (_label arg) | |||
| (cond | |||
| ((and (listp arg) (listp (cdr arg))) | |||
| (mapcar #'use-package-ensure-system-package-consify arg)) | |||
| (t | |||
| (list (use-package-ensure-system-package-consify arg))))))) | |||
| (defun use-package-ensure-system-package-exists? (file-or-exe) | |||
| "If variable is a string, ensure the file path exists. | |||
| If it is a symbol, ensure the binary exist." | |||
| (if (stringp file-or-exe) | |||
| (file-exists-p file-or-exe) | |||
| (executable-find (symbol-name file-or-exe)))) | |||
| ;;;###autoload | |||
| (defun use-package-handler/:ensure-system-package (name _keyword arg rest state) | |||
| "Execute the handler for `:ensure-system-package' keyword in `use-package'." | |||
| (let ((body (use-package-process-keywords name rest state))) | |||
| (use-package-concat | |||
| (mapcar #'(lambda (cons) | |||
| `(unless (use-package-ensure-system-package-exists? ',(car cons)) | |||
| ,(cdr cons))) arg) | |||
| body))) | |||
| (add-to-list 'use-package-keywords :ensure-system-package t) | |||
| (provide 'use-package-ensure-system-package) | |||
| ;;; use-package-ensure-system-package.el ends here | |||
| @ -0,0 +1,214 @@ | |||
| ;;; use-package-ensure.el --- Support for the :ensure and :pin keywords -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2012-2017 John Wiegley | |||
| ;; Author: John Wiegley <johnw@newartisans.com> | |||
| ;; Maintainer: John Wiegley <johnw@newartisans.com> | |||
| ;; Created: 17 Jun 2012 | |||
| ;; Modified: 3 Dec 2017 | |||
| ;; Version: 1.0 | |||
| ;; Package-Requires: ((emacs "24.3") (use-package "2.4")) | |||
| ;; Keywords: dotemacs startup speed config package | |||
| ;; URL: https://github.com/jwiegley/use-package | |||
| ;; 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, 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 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: | |||
| ;; Provides support for the :ensure and :pin keywords, which is made available | |||
| ;; by default by requiring `use-package'. | |||
| ;;; Code: | |||
| (require 'cl-lib) | |||
| (require 'use-package-core) | |||
| (defgroup use-package-ensure nil | |||
| "Support for :ensure and :pin keywords in use-package declarations." | |||
| :group 'use-package) | |||
| (eval-when-compile | |||
| (declare-function package-installed-p "package") | |||
| (declare-function package-read-all-archive-contents "package" ())) | |||
| (defcustom use-package-always-ensure nil | |||
| "Treat every package as though it had specified using `:ensure SEXP'. | |||
| See also `use-package-defaults', which uses this value." | |||
| :type 'sexp | |||
| :group 'use-package-ensure) | |||
| (defcustom use-package-always-pin nil | |||
| "Treat every package as though it had specified using `:pin SYM'. | |||
| See also `use-package-defaults', which uses this value." | |||
| :type 'symbol | |||
| :group 'use-package-ensure) | |||
| (defcustom use-package-ensure-function 'use-package-ensure-elpa | |||
| "Function that ensures a package is installed. | |||
| This function is called with three arguments: the name of the | |||
| package declared in the `use-package' form; the arguments passed | |||
| to all `:ensure' keywords (always a list, even if only one); and | |||
| the current `state' plist created by previous handlers. | |||
| Note that this function is called whenever `:ensure' is provided, | |||
| even if it is nil. It is up to the function to decide on the | |||
| semantics of the various values for `:ensure'. | |||
| This function should return non-nil if the package is installed. | |||
| The default value uses package.el to install the package." | |||
| :type '(choice (const :tag "package.el" use-package-ensure-elpa) | |||
| (function :tag "Custom")) | |||
| :group 'use-package-ensure) | |||
| ;;;; :pin | |||
| (defun use-package-normalize/:pin (_name keyword args) | |||
| (use-package-only-one (symbol-name keyword) args | |||
| #'(lambda (_label arg) | |||
| (cond | |||
| ((stringp arg) arg) | |||
| ((use-package-non-nil-symbolp arg) (symbol-name arg)) | |||
| (t | |||
| (use-package-error | |||
| ":pin wants an archive name (a string)")))))) | |||
| (eval-when-compile | |||
| (defvar package-pinned-packages) | |||
| (defvar package-archives)) | |||
| (defun use-package-archive-exists-p (archive) | |||
| "Check if a given ARCHIVE is enabled. | |||
| ARCHIVE can be a string or a symbol or 'manual to indicate a | |||
| manually updated package." | |||
| (if (member archive '(manual "manual")) | |||
| 't | |||
| (let ((valid nil)) | |||
| (dolist (pa package-archives) | |||
| (when (member archive (list (car pa) (intern (car pa)))) | |||
| (setq valid 't))) | |||
| valid))) | |||
| (defun use-package-pin-package (package archive) | |||
| "Pin PACKAGE to ARCHIVE." | |||
| (unless (boundp 'package-pinned-packages) | |||
| (setq package-pinned-packages ())) | |||
| (let ((archive-symbol (if (symbolp archive) archive (intern archive))) | |||
| (archive-name (if (stringp archive) archive (symbol-name archive)))) | |||
| (if (use-package-archive-exists-p archive-symbol) | |||
| (add-to-list 'package-pinned-packages (cons package archive-name)) | |||
| (error "Archive '%s' requested for package '%s' is not available." | |||
| archive-name package)) | |||
| (unless (bound-and-true-p package--initialized) | |||
| (package-initialize t)))) | |||
| (defun use-package-handler/:pin (name _keyword archive-name rest state) | |||
| (let ((body (use-package-process-keywords name rest state)) | |||
| (pin-form (if archive-name | |||
| `(use-package-pin-package ',(use-package-as-symbol name) | |||
| ,archive-name)))) | |||
| ;; Pinning should occur just before ensuring | |||
| ;; See `use-package-handler/:ensure'. | |||
| (if (bound-and-true-p byte-compile-current-file) | |||
| (eval pin-form) ; Eval when byte-compiling, | |||
| (push pin-form body)) ; or else wait until runtime. | |||
| body)) | |||
| ;;;; :ensure | |||
| (defvar package-archive-contents) | |||
| ;;;###autoload | |||
| (defun use-package-normalize/:ensure (_name keyword args) | |||
| (if (null args) | |||
| (list t) | |||
| (use-package-only-one (symbol-name keyword) args | |||
| #'(lambda (_label arg) | |||
| (cond | |||
| ((symbolp arg) | |||
| (list arg)) | |||
| ((and (listp arg) (= 3 (length arg)) | |||
| (symbolp (nth 0 arg)) | |||
| (eq :pin (nth 1 arg)) | |||
| (or (stringp (nth 2 arg)) | |||
| (symbolp (nth 2 arg)))) | |||
| (list (cons (nth 0 arg) (nth 2 arg)))) | |||
| (t | |||
| (use-package-error | |||
| (concat ":ensure wants an optional package name " | |||
| "(an unquoted symbol name), or (<symbol> :pin <string>)")))))))) | |||
| (defun use-package-ensure-elpa (name args _state &optional _no-refresh) | |||
| (dolist (ensure args) | |||
| (let ((package | |||
| (or (and (eq ensure t) (use-package-as-symbol name)) | |||
| ensure))) | |||
| (when package | |||
| (require 'package) | |||
| (when (consp package) | |||
| (use-package-pin-package (car package) (cdr package)) | |||
| (setq package (car package))) | |||
| (unless (package-installed-p package) | |||
| (condition-case-unless-debug err | |||
| (progn | |||
| (when (assoc package (bound-and-true-p | |||
| package-pinned-packages)) | |||
| (package-read-all-archive-contents)) | |||
| (if (assoc package package-archive-contents) | |||
| (package-install package) | |||
| (package-refresh-contents) | |||
| (when (assoc package (bound-and-true-p | |||
| package-pinned-packages)) | |||
| (package-read-all-archive-contents)) | |||
| (package-install package)) | |||
| t) | |||
| (error | |||
| (display-warning 'use-package | |||
| (format "Failed to install %s: %s" | |||
| name (error-message-string err)) | |||
| :error)))))))) | |||
| ;;;###autoload | |||
| (defun use-package-handler/:ensure (name _keyword ensure rest state) | |||
| (let* ((body (use-package-process-keywords name rest state))) | |||
| ;; We want to avoid installing packages when the `use-package' macro is | |||
| ;; being macro-expanded by elisp completion (see `lisp--local-variables'), | |||
| ;; but still install packages when byte-compiling, to avoid requiring | |||
| ;; `package' at runtime. | |||
| (if (bound-and-true-p byte-compile-current-file) | |||
| ;; Eval when byte-compiling, | |||
| (funcall use-package-ensure-function name ensure state) | |||
| ;; or else wait until runtime. | |||
| (push `(,use-package-ensure-function ',name ',ensure ',state) | |||
| body)) | |||
| body)) | |||
| (add-to-list 'use-package-defaults | |||
| '(:ensure (list use-package-always-ensure) | |||
| (lambda (name args) | |||
| (and use-package-always-ensure | |||
| (not (plist-member args :load-path))))) t) | |||
| (add-to-list 'use-package-defaults | |||
| '(:pin use-package-always-pin use-package-always-pin) t) | |||
| (add-to-list 'use-package-keywords :ensure) | |||
| (add-to-list 'use-package-keywords :pin) | |||
| (provide 'use-package-ensure) | |||
| ;;; use-package-ensure.el ends here | |||
| @ -0,0 +1,79 @@ | |||
| ;;; use-package-jump.el --- Attempt to jump to a use-package declaration -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2012-2017 John Wiegley | |||
| ;; Author: John Wiegley <johnw@newartisans.com> | |||
| ;; Maintainer: John Wiegley <johnw@newartisans.com> | |||
| ;; Created: 17 Jun 2012 | |||
| ;; Modified: 3 Dec 2017 | |||
| ;; Version: 1.0 | |||
| ;; Package-Requires: ((emacs "24.3") (use-package "2.4")) | |||
| ;; Keywords: dotemacs startup speed config package | |||
| ;; URL: https://github.com/jwiegley/use-package | |||
| ;; 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, 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 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: | |||
| ;; Provides the command `M-x use-package-jump-to-package-form', however it | |||
| ;; only works if the package being jumped to was required during | |||
| ;; initialization. If it was delay-loaded, it will not work. Improvements are | |||
| ;; needed. | |||
| ;;; Code: | |||
| (require 'use-package-core) | |||
| (defun use-package-find-require (package) | |||
| "Find file that required PACKAGE by searching `load-history'. | |||
| Returns an absolute file path or nil if none is found." | |||
| (catch 'suspect | |||
| (dolist (filespec load-history) | |||
| (dolist (entry (cdr filespec)) | |||
| (when (equal entry (cons 'require package)) | |||
| (throw 'suspect (car filespec))))))) | |||
| ;;;###autoload | |||
| (defun use-package-jump-to-package-form (package) | |||
| "Attempt to find and jump to the `use-package' form that loaded | |||
| PACKAGE. This will only find the form if that form actually | |||
| required PACKAGE. If PACKAGE was previously required then this | |||
| function will jump to the file that originally required PACKAGE | |||
| instead." | |||
| (interactive (list (completing-read "Package: " features))) | |||
| (let* ((package (if (stringp package) (intern package) package)) | |||
| (requiring-file (use-package-find-require package)) | |||
| file location) | |||
| (if (null requiring-file) | |||
| (user-error "Can't find file requiring file; may have been autoloaded") | |||
| (setq file (if (string= (file-name-extension requiring-file) "elc") | |||
| (concat (file-name-sans-extension requiring-file) ".el") | |||
| requiring-file)) | |||
| (when (file-exists-p file) | |||
| (find-file-other-window file) | |||
| (save-excursion | |||
| (goto-char (point-min)) | |||
| (setq location | |||
| (re-search-forward | |||
| (format (eval use-package-form-regexp-eval) package) nil t))) | |||
| (if (null location) | |||
| (message "No use-package form found.") | |||
| (goto-char location) | |||
| (beginning-of-line)))))) | |||
| (provide 'use-package-jump) | |||
| ;;; use-package-jump.el ends here | |||
| @ -0,0 +1,84 @@ | |||
| ;;; use-package-lint.el --- Attempt to find errors in use-package declarations -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2012-2017 John Wiegley | |||
| ;; Author: John Wiegley <johnw@newartisans.com> | |||
| ;; Maintainer: John Wiegley <johnw@newartisans.com> | |||
| ;; Created: 17 Jun 2012 | |||
| ;; Modified: 3 Dec 2017 | |||
| ;; Version: 1.0 | |||
| ;; Package-Requires: ((emacs "24.3") (use-package "2.4")) | |||
| ;; Keywords: dotemacs startup speed config package | |||
| ;; URL: https://github.com/jwiegley/use-package | |||
| ;; 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, 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 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: | |||
| ;; Provides the command `M-x use-package-lint'. | |||
| ;;; Code: | |||
| (require 'cl-lib) | |||
| (require 'use-package-core) | |||
| (defun use-package-lint-declaration (name plist) | |||
| (dolist (path (plist-get plist :load-path)) | |||
| (unless (file-exists-p path) | |||
| (display-warning | |||
| 'use-package | |||
| (format "%s :load-path does not exist: %s" | |||
| name path) :error))) | |||
| (unless (or (plist-member plist :disabled) | |||
| (plist-get plist :no-require) | |||
| (locate-library (use-package-as-string name) nil | |||
| (plist-get plist :load-path))) | |||
| (display-warning | |||
| 'use-package | |||
| (format "%s module cannot be located" name) :error)) | |||
| ;; (dolist (command (plist-get plist :commands)) | |||
| ;; (unless (string= (find-lisp-object-file-name command nil) | |||
| ;; (locate-library (use-package-as-string name) nil | |||
| ;; (plist-get plist :load-path))) | |||
| ;; (display-warning | |||
| ;; 'use-package | |||
| ;; (format "%s :command is from different path: %s" | |||
| ;; name (symbol-name command)) :error))) | |||
| ) | |||
| ;;;###autoload | |||
| (defun use-package-lint () | |||
| "Check for errors in use-package declarations. | |||
| For example, if the module's `:if' condition is met, but even | |||
| with the specified `:load-path' the module cannot be found." | |||
| (interactive) | |||
| (save-excursion | |||
| (goto-char (point-min)) | |||
| (let ((re (eval use-package-form-regexp-eval))) | |||
| (while (re-search-forward re nil t) | |||
| (goto-char (match-beginning 0)) | |||
| (let ((decl (read (current-buffer)))) | |||
| (when (eq (car decl) 'use-package) | |||
| (use-package-lint-declaration | |||
| (use-package-as-string (cadr decl)) | |||
| (use-package-normalize-keywords | |||
| (cadr decl) (cddr decl))))))))) | |||
| (provide 'use-package-lint) | |||
| ;;; use-package-lint.el ends here | |||
| @ -0,0 +1,54 @@ | |||
| ;;; use-package.el --- A configuration macro for simplifying your .emacs -*- lexical-binding: t; -*- | |||
| ;; Copyright (C) 2012-2017 John Wiegley | |||
| ;; Author: John Wiegley <johnw@newartisans.com> | |||
| ;; Maintainer: John Wiegley <johnw@newartisans.com> | |||
| ;; Created: 17 Jun 2012 | |||
| ;; Modified: 29 Nov 2017 | |||
| ;; Version: 2.4.1 | |||
| ;; Package-Requires: ((emacs "24.3") (bind-key "2.4")) | |||
| ;; Keywords: dotemacs startup speed config package | |||
| ;; URL: https://github.com/jwiegley/use-package | |||
| ;; 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, 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 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: | |||
| ;; The `use-package' declaration macro allows you to isolate package | |||
| ;; configuration in your ".emacs" in a way that is performance-oriented and, | |||
| ;; well, just tidy. I created it because I have over 80 packages that I use | |||
| ;; in Emacs, and things were getting difficult to manage. Yet with this | |||
| ;; utility my total load time is just under 1 second, with no loss of | |||
| ;; functionality! | |||
| ;; | |||
| ;; Please see README.md from the same repository for documentation. | |||
| ;;; Code: | |||
| (require 'use-package-core) | |||
| (require 'use-package-bind-key) | |||
| (require 'use-package-diminish) | |||
| (require 'use-package-delight) | |||
| (require 'use-package-ensure) | |||
| (declare-function use-package-jump-to-package-form "use-package-jump") | |||
| (autoload #'use-package-jump-to-package-form "use-package-jump" nil t) | |||
| (provide 'use-package) | |||
| ;;; use-package.el ends here | |||
| @ -0,0 +1,941 @@ | |||
| #+TITLE: use-package User Manual | |||
| #+AUTHOR: John Wiegley | |||
| #+EMAIL: johnw@newartisans.com | |||
| #+DATE: 2012-2017 | |||
| #+LANGUAGE: en | |||
| #+HUGO_BASE_DIR: ./doc | |||
| #+HUGO_SECTION: / | |||
| #+HUGO_MENU: :menu main | |||
| #+TEXINFO_DIR_CATEGORY: Emacs | |||
| #+TEXINFO_DIR_TITLE: use-package: (use-package). | |||
| #+TEXINFO_DIR_DESC: Declarative package configuration for Emacs. | |||
| #+SUBTITLE: for version 2.4.1 | |||
| #+TEXINFO_DEFFN: t | |||
| #+OPTIONS: H:4 num:3 toc:2 creator:t | |||
| # Below macro is used so that both texinfo and hugo exports work | |||
| # harmoniously. For texinfo exports, the export is done using the | |||
| # scope of the whole file, so it can resolve all internal link | |||
| # references. Whereas for hugo exports, they are done only from the | |||
| # scope of a subtree (or a page of the doc site), so at the moment it | |||
| # doesn't auto-resolve Org internal links outside that scope. | |||
| # FIXME: This is just a workaround.. hope to get a better solution in | |||
| # the future. | |||
| #+MACRO: link-jump @@texinfo:@ref{$1}@@@@hugo:[$1]($2)@@ | |||
| use-package is... | |||
| #+BEGIN_QUOTE | |||
| Copyright (C) 2012-2017 John Wiegley <johnw@newartisans.com> | |||
| You can redistribute this document 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 document 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. | |||
| #+END_QUOTE | |||
| * Introduction | |||
| :PROPERTIES: | |||
| :EXPORT_FILE_NAME: _index | |||
| :EXPORT_HUGO_TYPE: homepage | |||
| :END: | |||
| The ~use-package~ macro allows you to isolate package configuration in your | |||
| ~.emacs~ file in a way that is both performance-oriented and, well, tidy. I | |||
| created it because I have over 80 packages that I use in Emacs, and things | |||
| were getting difficult to manage. Yet with this utility my total load time is | |||
| around 2 seconds, with no loss of functionality! | |||
| More text to come... | |||
| * Installation | |||
| :PROPERTIES: | |||
| :EXPORT_FILE_NAME: installation | |||
| :END: | |||
| ** _ :ignore: | |||
| use-package can be installed using Emacs' package manager or manually from | |||
| its development repository. | |||
| ** Installing from an Elpa Archive | |||
| use-package is available from Melpa and Melpa-Stable. If you haven't used | |||
| Emacs' package manager before, then it is high time you familiarize yourself | |||
| with it by reading the documentation in the Emacs manual, see | |||
| [[info:emacs#Packages]]. Then add one of the archives to ~package-archives~: | |||
| - To use Melpa: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (require 'package) | |||
| (add-to-list 'package-archives | |||
| '("melpa" . "https://melpa.org/packages/") t) | |||
| #+END_SRC | |||
| - To use Melpa-Stable: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (require 'package) | |||
| (add-to-list 'package-archives | |||
| '("melpa-stable" . "https://stable.melpa.org/packages/") t) | |||
| #+END_SRC | |||
| Once you have added your preferred archive, you need to update the | |||
| local package list using: | |||
| #+BEGIN_EXAMPLE | |||
| M-x package-refresh-contents RET | |||
| #+END_EXAMPLE | |||
| Once you have done that, you can install use-package and its dependencies | |||
| using: | |||
| #+BEGIN_EXAMPLE | |||
| M-x package-install RET use-package RET | |||
| #+END_EXAMPLE | |||
| Now see [[*Post-Installation Tasks]]. | |||
| ** Installing from the Git Repository | |||
| First, use Git to clone the use-package repository: | |||
| #+BEGIN_SRC shell-script | |||
| $ git clone https://github.com/jwiegley/use-package.git ~/.emacs.d/site-lisp/use-package | |||
| $ cd ~/.emacs.d/site-lisp/use-package | |||
| #+END_SRC | |||
| Then compile the libraries and generate the info manuals: | |||
| #+BEGIN_SRC shell-script | |||
| $ make | |||
| #+END_SRC | |||
| You may need to create ~/path/to/use-package/config.mk~ with the following | |||
| content before running ~make~: | |||
| #+BEGIN_SRC makefile | |||
| LOAD_PATH = -L /path/to/use-package | |||
| #+END_SRC | |||
| Finally add this to your init file: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (add-to-list 'load-path "~/.emacs.d/site-lisp/use-package") | |||
| (require 'use-package) | |||
| (with-eval-after-load 'info | |||
| (info-initialize) | |||
| (add-to-list 'Info-directory-list | |||
| "~/.emacs.d/site-lisp/use-package/")) | |||
| #+END_SRC | |||
| Note that elements of ~load-path~ should not end with a slash, while those of | |||
| ~Info-directory-list~ should. | |||
| Instead of running use-package directly from the repository by adding it to | |||
| the ~load-path~, you might want to instead install it in some other directory | |||
| using ~sudo make install~ and setting ~load-path~ accordingly. | |||
| To update use-package use: | |||
| #+BEGIN_SRC shell-script | |||
| $ git pull | |||
| $ make | |||
| #+END_SRC | |||
| At times it might be necessary to run ~make clean all~ instead. | |||
| To view all available targets use ~make help~. | |||
| Now see [[*Post-Installation Tasks]]. | |||
| ** Post-Installation Tasks | |||
| After installing use-package you should verify that you are indeed using the | |||
| use-package release you think you are using. It's best to restart Emacs before | |||
| doing so, to make sure you are not using an outdated value for ~load-path~. | |||
| #+BEGIN_EXAMPLE | |||
| C-h v use-package-version RET | |||
| #+END_EXAMPLE | |||
| should display something like | |||
| #+BEGIN_EXAMPLE | |||
| use-package-version’s value is "2.4.1" | |||
| #+END_EXAMPLE | |||
| If you are completely new to use-package then see {{{link-jump(Getting | |||
| Started,/getting-started)}}}. | |||
| If you run into problems, then please see the | |||
| {{{link-jump(FAQ,/faq)}}}. Also see the {{{link-jump(Debugging | |||
| Tools,/debugging-tools)}}}. | |||
| * Getting Started | |||
| :PROPERTIES: | |||
| :EXPORT_FILE_NAME: getting-started | |||
| :END: | |||
| TODO. For now, see ~README.md~. | |||
| * Basic Concepts | |||
| ~use-package~ was created for few basic reasons, each of which drove the | |||
| design in various ways. Understanding these reasons may help make some of | |||
| those decisions clearer: | |||
| 1. To gather all configuration details of a package into one place, making | |||
| it easier to copy, disable, or move it elsewhere in the init file. | |||
| 2. To reduce duplication and boilerplate, capturing several common practices | |||
| as mere keywords both easy and intuitive to use. | |||
| 3. To make startup time of Emacs as quick as possible, without sacrificing | |||
| the quantity of add-on packages used. | |||
| 4. To make it so errors encountered during startup disable only the package | |||
| raising the error, and as little else as possible, leaving a close to a | |||
| functional Emacs as possible. | |||
| 5. To allow byte-compilation of one's init file so that any warnings or | |||
| errors seen are meaningful. In this way, even if byte-compilation is not | |||
| used for speed (reason 3), it can still be used as a sanity check. | |||
| * Issues/Requests | |||
| :PROPERTIES: | |||
| :EXPORT_HUGO_SECTION: issues | |||
| :EXPORT_FILE_NAME: _index | |||
| :END: | |||
| * Keywords | |||
| :PROPERTIES: | |||
| :EXPORT_FILE_NAME: keywords | |||
| :END: | |||
| ** ~:after~ | |||
| Sometimes it only makes sense to configure a package after another has been | |||
| loaded, because certain variables or functions are not in scope until that | |||
| time. This can achieved using an ~:after~ keyword that allows a fairly rich | |||
| description of the exact conditions when loading should occur. Here is an | |||
| example: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package hydra | |||
| :load-path "site-lisp/hydra") | |||
| (use-package ivy | |||
| :load-path "site-lisp/swiper") | |||
| (use-package ivy-hydra | |||
| :after (ivy hydra)) | |||
| #+END_SRC | |||
| In this case, because all of these packages are demand-loaded in the order | |||
| they occur, the use of ~:after~ is not strictly necessary. By using it, | |||
| however, the above code becomes order-independent, without an implicit | |||
| depedence on the nature of your init file. | |||
| By default, ~:after (foo bar)~ is the same as ~:after (:all foo bar)~, meaning | |||
| that loading of the given package will not happen until both ~foo~ and ~bar~ | |||
| have been loaded. Here are some of the other possibilities: | |||
| #+BEGIN_SRC emacs-lisp | |||
| :after (foo bar) | |||
| :after (:all foo bar) | |||
| :after (:any foo bar) | |||
| :after (:all (:any foo bar) (:any baz quux)) | |||
| :after (:any (:all foo bar) (:all baz quux)) | |||
| #+END_SRC | |||
| When you nest selectors, such as ~(:any (:all foo bar) (:all baz quux))~, it | |||
| means that the package will be loaded when either both ~foo~ and ~bar~ have | |||
| been loaded, or both ~baz~ and ~quux~ have been loaded. | |||
| *NOTE*: Pay attention if you set ~use-package-always-defer~ to t, and also use | |||
| the ~:after~ keyword, as you will need to specify how the declared package is | |||
| to be loaded: e.g., by some ~:bind~. If you're not using one of the mechanisms | |||
| that registers autoloads, such as ~:bind~ or ~:hook~, and your package manager | |||
| does not provide autoloads, it's possible that without adding ~:demand t~ to | |||
| those declarations, your package will never be loaded. | |||
| ** ~:bind-keymap~, ~:bind-keymap*~ | |||
| Normally ~:bind~ expects that commands are functions that will be autoloaded | |||
| from the given package. However, this does not work if one of those commands | |||
| is actually a keymap, since keymaps are not functions, and cannot be | |||
| autoloaded using Emacs' ~autoload~ mechanism. | |||
| To handle this case, ~use-package~ offers a special, limited variant of | |||
| ~:bind~ called ~:bind-keymap~. The only difference is that the "commands" | |||
| bound to by ~:bind-keymap~ must be keymaps defined in the package, rather than | |||
| command functions. This is handled behind the scenes by generating custom code | |||
| that loads the package containing the keymap, and then re-executes your | |||
| keypress after the first load, to reinterpret that keypress as a prefix key. | |||
| For example: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package projectile | |||
| :bind-keymap | |||
| ("C-c p" . projectile-command-map) | |||
| #+END_SRC | |||
| ** ~:bind~, ~:bind*~ | |||
| Another common thing to do when loading a module is to bind a key to primary | |||
| commands within that module: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ace-jump-mode | |||
| :bind ("C-." . ace-jump-mode)) | |||
| #+END_SRC | |||
| This does two things: first, it creates an autoload for the ~ace-jump-mode~ | |||
| command and defers loading of ~ace-jump-mode~ until you actually use it. | |||
| Second, it binds the key ~C-.~ to that command. After loading, you can use | |||
| ~M-x describe-personal-keybindings~ to see all such keybindings you've set | |||
| throughout your ~.emacs~ file. | |||
| A more literal way to do the exact same thing is: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ace-jump-mode | |||
| :commands ace-jump-mode | |||
| :init | |||
| (bind-key "C-." 'ace-jump-mode)) | |||
| #+END_SRC | |||
| When you use the ~:commands~ keyword, it creates autoloads for those commands | |||
| and defers loading of the module until they are used. Since the ~:init~ form | |||
| is always run---even if ~ace-jump-mode~ might not be on your system---remember | |||
| to restrict ~:init~ code to only what would succeed either way. | |||
| The ~:bind~ keyword takes either a cons or a list of conses: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package hi-lock | |||
| :bind (("M-o l" . highlight-lines-matching-regexp) | |||
| ("M-o r" . highlight-regexp) | |||
| ("M-o w" . highlight-phrase))) | |||
| #+END_SRC | |||
| The ~:commands~ keyword likewise takes either a symbol or a list of symbols. | |||
| NOTE: Special keys like ~tab~ or ~F1~-~Fn~ can be written in square brackets, | |||
| i.e. ~[tab]~ instead of ~"tab"~. The syntax for the keybindings is similar to | |||
| the "kbd" syntax: see [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-Rebinding.html][the Emacs Manual]] for more information. | |||
| Examples: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package helm | |||
| :bind (("M-x" . helm-M-x) | |||
| ("M-<f5>" . helm-find-files) | |||
| ([f10] . helm-buffers-list) | |||
| ([S-f10] . helm-recentf))) | |||
| #+END_SRC | |||
| *** Binding to local keymaps | |||
| Slightly different from binding a key to a keymap, is binding a key *within* a | |||
| local keymap that only exists after the package is loaded. ~use-package~ | |||
| supports this with a ~:map~ modifier, taking the local keymap to bind to: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package helm | |||
| :bind (:map helm-command-map | |||
| ("C-c h" . helm-execute-persistent-action))) | |||
| #+END_SRC | |||
| The effect of this statement is to wait until ~helm~ has loaded, and then to | |||
| bind the key ~C-c h~ to ~helm-execute-persistent-action~ within Helm's local | |||
| keymap, ~helm-mode-map~. | |||
| Multiple uses of ~:map~ may be specified. Any binding occurring before the | |||
| first use of ~:map~ are applied to the global keymap: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package term | |||
| :bind (("C-c t" . term) | |||
| :map term-mode-map | |||
| ("M-p" . term-send-up) | |||
| ("M-n" . term-send-down) | |||
| :map term-raw-map | |||
| ("M-o" . other-window) | |||
| ("M-p" . term-send-up) | |||
| ("M-n" . term-send-down))) | |||
| #+END_SRC | |||
| ** ~:commands~ | |||
| ** ~:preface~, ~:init~, ~:config~ | |||
| Here is the simplest ~use-package~ declaration: | |||
| #+BEGIN_SRC emacs-lisp | |||
| ;; This is only needed once, near the top of the file | |||
| (eval-when-compile | |||
| ;; Following line is not needed if use-package.el is in ~/.emacs.d | |||
| (add-to-list 'load-path "<path where use-package is installed>") | |||
| (require 'use-package)) | |||
| (use-package foo) | |||
| #+END_SRC | |||
| This loads in the package ~foo~, but only if ~foo~ is available on your | |||
| system. If not, a warning is logged to the ~*Messages*~ buffer. If it | |||
| succeeds, a message about ~"Loading foo"~ is logged, along with the time it | |||
| took to load, if it took over 0.1 seconds. | |||
| Use the ~:init~ keyword to execute code before a package is loaded. It | |||
| accepts one or more forms, up until the next keyword: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package foo | |||
| :init | |||
| (setq foo-variable t)) | |||
| #+END_SRC | |||
| Similarly, ~:config~ can be used to execute code after a package is loaded. | |||
| In cases where loading is done lazily (see more about autoloading below), this | |||
| execution is deferred until after the autoload occurs: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package foo | |||
| :init | |||
| (setq foo-variable t) | |||
| :config | |||
| (foo-mode 1)) | |||
| #+END_SRC | |||
| As you might expect, you can use ~:init~ and ~:config~ together: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package color-moccur | |||
| :commands (isearch-moccur isearch-all) | |||
| :bind (("M-s O" . moccur) | |||
| :map isearch-mode-map | |||
| ("M-o" . isearch-moccur) | |||
| ("M-O" . isearch-moccur-all)) | |||
| :init | |||
| (setq isearch-lazy-highlight t) | |||
| :config | |||
| (use-package moccur-edit)) | |||
| #+END_SRC | |||
| In this case, I want to autoload the commands ~isearch-moccur~ and | |||
| ~isearch-all~ from ~color-moccur.el~, and bind keys both at the global level | |||
| and within the ~isearch-mode-map~ (see next section). When the package is | |||
| actually loaded (by using one of these commands), ~moccur-edit~ is also | |||
| loaded, to allow editing of the ~moccur~ buffer. | |||
| ** ~:custom~ | |||
| The ~:custom~ keyword allows customization of package custom variables. | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package comint | |||
| :custom | |||
| (comint-buffer-maximum-size 20000 "Increase comint buffer size.") | |||
| (comint-prompt-read-only t "Make the prompt read only.")) | |||
| #+END_SRC | |||
| The documentation string is not mandatory. | |||
| ** ~:custom-face~ | |||
| The ~:custom-face~ keyword allows customization of package custom faces. | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package eruby-mode | |||
| :custom-face | |||
| (eruby-standard-face ((t (:slant italic))))) | |||
| #+END_SRC | |||
| ** ~:defer~, ~:demand~ | |||
| In almost all cases you don't need to manually specify ~:defer t~. This is | |||
| implied whenever ~:bind~ or ~:mode~ or ~:interpreter~ is used. Typically, you | |||
| only need to specify ~:defer~ if you know for a fact that some other package | |||
| will do something to cause your package to load at the appropriate time, and | |||
| thus you would like to defer loading even though use-package isn't creating | |||
| any autoloads for you. | |||
| You can override package deferral with the ~:demand~ keyword. Thus, even if | |||
| you use ~:bind~, using ~:demand~ will force loading to occur immediately and | |||
| not establish an autoload for the bound key. | |||
| ** ~:defines~, ~:functions~ | |||
| Another feature of ~use-package~ is that it always loads every file that it | |||
| can when ~.emacs~ is being byte-compiled. This helps to silence spurious | |||
| warnings about unknown variables and functions. | |||
| However, there are times when this is just not enough. For those times, use | |||
| the ~:defines~ and ~:functions~ keywords to introduce dummy variable and | |||
| function declarations solely for the sake of the byte-compiler: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package texinfo | |||
| :defines texinfo-section-list | |||
| :commands texinfo-mode | |||
| :init | |||
| (add-to-list 'auto-mode-alist '("\\.texi$" . texinfo-mode))) | |||
| #+END_SRC | |||
| If you need to silence a missing function warning, you can use ~:functions~: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ruby-mode | |||
| :mode "\\.rb\\'" | |||
| :interpreter "ruby" | |||
| :functions inf-ruby-keys | |||
| :config | |||
| (defun my-ruby-mode-hook () | |||
| (require 'inf-ruby) | |||
| (inf-ruby-keys)) | |||
| (add-hook 'ruby-mode-hook 'my-ruby-mode-hook)) | |||
| #+END_SRC | |||
| ** ~:diminish~, ~:delight~ | |||
| ~use-package~ also provides built-in support for the diminish and delight | |||
| utilities---if you have them installed. Their purpose is to remove or change | |||
| minor mode strings in your mode-line. | |||
| [[https://github.com/myrjola/diminish.el][diminish]] is invoked with the ~:diminish~ keyword, which is passed either a | |||
| minor mode symbol, a cons of the symbol and its replacement string, or just a | |||
| replacement string, in which case the minor mode symbol is guessed to be the | |||
| package name with "-mode" appended at the end: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package abbrev | |||
| :diminish abbrev-mode | |||
| :config | |||
| (if (file-exists-p abbrev-file-name) | |||
| (quietly-read-abbrev-file))) | |||
| #+END_SRC | |||
| [[https://elpa.gnu.org/packages/delight.html][delight]] is invoked with the ~:delight~ keyword, which is passed a minor mode | |||
| symbol, a replacement string or quoted [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Mode-Line-Data.html][mode-line data]] (in which case the minor | |||
| mode symbol is guessed to be the package name with "-mode" appended at the | |||
| end), both of these, or several lists of both. If no arguments are provided, | |||
| the default mode name is hidden completely. | |||
| #+BEGIN_SRC emacs-lisp | |||
| ;; Don't show anything for rainbow-mode. | |||
| (use-package rainbow-mode | |||
| :delight) | |||
| ;; Don't show anything for auto-revert-mode, which doesn't match | |||
| ;; its package name. | |||
| (use-package autorevert | |||
| :delight auto-revert-mode) | |||
| ;; Remove the mode name for projectile-mode, but show the project name. | |||
| (use-package projectile | |||
| :delight '(:eval (concat " " (projectile-project-name)))) | |||
| ;; Completely hide visual-line-mode and change auto-fill-mode to " AF". | |||
| (use-package emacs | |||
| :delight | |||
| (auto-fill-function " AF") | |||
| (visual-line-mode)) | |||
| #+END_SRC | |||
| ** ~:disabled~ | |||
| The ~:disabled~ keyword can turn off a module you're having difficulties with, | |||
| or stop loading something you're not using at the present time: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ess-site | |||
| :disabled | |||
| :commands R) | |||
| #+END_SRC | |||
| When byte-compiling your ~.emacs~ file, disabled declarations are omitted | |||
| from the output entirely, to accelerate startup times. | |||
| ** ~:ensure~, ~:pin~ | |||
| You can use ~use-package~ to load packages from ELPA with ~package.el~. This | |||
| is particularly useful if you share your ~.emacs~ among several machines; the | |||
| relevant packages are downloaded automatically once declared in your ~.emacs~. | |||
| The ~:ensure~ keyword causes the package(s) to be installed automatically if | |||
| not already present on your system (set ~(setq use-package-always-ensure t)~ | |||
| if you wish this behavior to be global for all packages): | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package magit | |||
| :ensure t) | |||
| #+END_SRC | |||
| If you need to install a different package from the one named by | |||
| ~use-package~, you can specify it like this: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package tex | |||
| :ensure auctex) | |||
| #+END_SRC | |||
| Lastly, when running on Emacs 24.4 or later, use-package can pin a package to | |||
| a specific archive, allowing you to mix and match packages from different | |||
| archives. The primary use-case for this is preferring packages from the | |||
| ~melpa-stable~ and ~gnu~ archives, but using specific packages from ~melpa~ | |||
| when you need to track newer versions than what is available in the ~stable~ | |||
| archives is also a valid use-case. | |||
| By default ~package.el~ prefers ~melpa~ over ~melpa-stable~ due to the | |||
| versioning ~(> evil-20141208.623 evil-1.0.9)~, so even if you are tracking | |||
| only a single package from ~melpa~, you will need to tag all the non-~melpa~ | |||
| packages with the appropriate archive. If this really annoys you, then you can | |||
| set ~use-package-always-pin~ to set a default. | |||
| If you want to manually keep a package updated and ignore upstream updates, | |||
| you can pin it to ~manual~, which as long as there is no repository by that | |||
| name, will Just Work(tm). | |||
| ~use-package~ throws an error if you try to pin a package to an archive that | |||
| has not been configured using ~package-archives~ (apart from the magic | |||
| ~manual~ archive mentioned above): | |||
| #+BEGIN_SRC text-mode | |||
| Archive 'foo' requested for package 'bar' is not available. | |||
| #+END_SRC | |||
| Example: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package company | |||
| :ensure t | |||
| :pin melpa-stable) | |||
| (use-package evil | |||
| :ensure t) | |||
| ;; no :pin needed, as package.el will choose the version in melpa | |||
| (use-package adaptive-wrap | |||
| :ensure t | |||
| ;; as this package is available only in the gnu archive, this is | |||
| ;; technically not needed, but it helps to highlight where it | |||
| ;; comes from | |||
| :pin gnu) | |||
| (use-package org | |||
| :ensure t | |||
| ;; ignore org-mode from upstream and use a manually installed version | |||
| :pin manual) | |||
| #+END_SRC | |||
| *NOTE*: the ~:pin~ argument has no effect on emacs versions < 24.4. | |||
| ** ~:hook~ | |||
| The ~:hook~ keyword allows adding functions onto hooks, here only the basename | |||
| of the hook is required. Thus, all of the following are equivalent: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ace-jump-mode | |||
| :hook prog-mode) | |||
| (use-package ace-jump-mode | |||
| :hook (prog-mode . ace-jump-mode)) | |||
| (use-package ace-jump-mode | |||
| :commands ace-jump-mode | |||
| :init | |||
| (add-hook 'prog-mode-hook #'ace-jump-mode)) | |||
| #+END_SRC | |||
| And likewise, when multiple hooks should be applied, the following are also | |||
| equivalent: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ace-jump-mode | |||
| :hook (prog-mode text-mode)) | |||
| (use-package ace-jump-mode | |||
| :hook ((prog-mode text-mode) . ace-jump-mode)) | |||
| (use-package ace-jump-mode | |||
| :hook ((prog-mode . ace-jump-mode) | |||
| (text-mode . ace-jump-mode))) | |||
| (use-package ace-jump-mode | |||
| :commands ace-jump-mode | |||
| :init | |||
| (add-hook 'prog-mode-hook #'ace-jump-mode) | |||
| (add-hook 'text-mode-hook #'ace-jump-mode)) | |||
| #+END_SRC | |||
| The use of ~:hook~, as with ~:bind~, ~:mode~, ~:interpreter~, etc., causes the | |||
| functions being hooked to implicitly be read as ~:commands~ (meaning they will | |||
| establish interactive ~autoload~ definitions for that module, if not already | |||
| defined as functions), and so ~:defer t~ is also implied by ~:hook~. | |||
| ** ~:if~, ~:when~, ~:unless~ | |||
| You can use the ~:if~ keyword to predicate the loading and initialization of | |||
| modules. | |||
| For example, I only want ~edit-server~ running for my main, graphical Emacs, | |||
| not for other Emacsen I may start at the command line: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package edit-server | |||
| :if window-system | |||
| :init | |||
| (add-hook 'after-init-hook 'server-start t) | |||
| (add-hook 'after-init-hook 'edit-server-start t)) | |||
| #+END_SRC | |||
| In another example, we can load things conditional on the operating system: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package exec-path-from-shell | |||
| :if (memq window-system '(mac ns)) | |||
| :ensure t | |||
| :config | |||
| (exec-path-from-shell-initialize)) | |||
| #+END_SRC | |||
| Note that ~:when~ is provided as an alias for ~:if~, and ~:unless foo~ means | |||
| the same thing as ~:if (not foo)~. | |||
| ** ~:load-path~ | |||
| If your package needs a directory added to the ~load-path~ in order to load, | |||
| use ~:load-path~. This takes a symbol, a function, a string or a list of | |||
| strings. If the path is relative, it is expanded within | |||
| ~user-emacs-directory~: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ess-site | |||
| :load-path "site-lisp/ess/lisp/" | |||
| :commands R) | |||
| #+END_SRC | |||
| Note that when using a symbol or a function to provide a dynamically generated | |||
| list of paths, you must inform the byte-compiler of this definition so the | |||
| value is available at byte-compilation time. This is done by using the special | |||
| form ~eval-and-compile~ (as opposed to ~eval-when-compile~). Further, this | |||
| value is fixed at whatever was determined during compilation, to avoid looking | |||
| up the same information again on each startup: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (eval-and-compile | |||
| (defun ess-site-load-path () | |||
| (shell-command "find ~ -path ess/lisp"))) | |||
| (use-package ess-site | |||
| :load-path (lambda () (list (ess-site-load-path))) | |||
| :commands R) | |||
| #+END_SRC | |||
| ** ~:mode~, ~:interpreter~ | |||
| Similar to ~:bind~, you can use ~:mode~ and ~:interpreter~ to establish a | |||
| deferred binding within the ~auto-mode-alist~ and ~interpreter-mode-alist~ | |||
| variables. The specifier to either keyword can be a cons cell, a list of cons | |||
| cells, or a string or regexp: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ruby-mode | |||
| :mode "\\.rb\\'" | |||
| :interpreter "ruby") | |||
| ;; The package is "python" but the mode is "python-mode": | |||
| (use-package python | |||
| :mode ("\\.py\\'" . python-mode) | |||
| :interpreter ("python" . python-mode)) | |||
| #+END_SRC | |||
| If you aren't using ~:commands~, ~:bind~, ~:bind*~, ~:bind-keymap~, | |||
| ~:bind-keymap*~, ~:mode~, or ~:interpreter~ (all of which imply ~:defer~; see | |||
| the docstring for ~use-package~ for a brief description of each), you can | |||
| still defer loading with the ~:defer~ keyword: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ace-jump-mode | |||
| :defer t | |||
| :init | |||
| (autoload 'ace-jump-mode "ace-jump-mode" nil t) | |||
| (bind-key "C-." 'ace-jump-mode)) | |||
| #+END_SRC | |||
| This does exactly the same thing as the following: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package ace-jump-mode | |||
| :bind ("C-." . ace-jump-mode)) | |||
| #+END_SRC | |||
| ** ~:magic~, ~:magic-fallback~ | |||
| Similar to ~:mode~ and ~:interpreter~, you can also use ~:magic~ and | |||
| ~:magic-fallback~ to cause certain function to be run if the beginning of a | |||
| file matches a given regular expression. The difference between the two is | |||
| that ~:magic-fallback~ has a lower priority than ~:mode~. For example: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package pdf-tools | |||
| :load-path "site-lisp/pdf-tools/lisp" | |||
| :magic ("%PDF" . pdf-view-mode) | |||
| :config | |||
| (pdf-tools-install)) | |||
| #+END_SRC | |||
| This registers an autoloaded command for ~pdf-view-mode~, defers loading of | |||
| ~pdf-tools~, and runs ~pdf-view-mode~ if the beginning of a buffer matches the | |||
| string ~"%PDF"~. | |||
| ** ~:no-require~ | |||
| Normally, ~use-package~ will load each package at compile time before | |||
| compiling the configuration, to ensure that any necessary symbols are in scope | |||
| to satisfy the byte-compiler. At times this can cause problems, since a | |||
| package may have special loading requirements, and all that you want to use | |||
| ~use-package~ for is to add a configuration to the ~eval-after-load~ hook. In | |||
| such cases, use the ~:no-require~ keyword: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package foo | |||
| :no-require t | |||
| :config | |||
| (message "This is evaluated when `foo' is loaded")) | |||
| #+END_SRC | |||
| ** ~:requires~ | |||
| While the ~:after~ keyword delays loading until the dependencies are loaded, | |||
| the somewhat simpler ~:requires~ keyword simply never loads the package if the | |||
| dependencies are not available at the time the ~use-package~ declaration is | |||
| encountered. By "available" in this context it means that ~foo~ is available | |||
| of ~(featurep 'foo)~ evaluates to a non-nil value. For example: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package abbrev | |||
| :requires foo) | |||
| #+END_SRC | |||
| This is the same as: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package abbrev | |||
| :if (featurep 'foo)) | |||
| #+END_SRC | |||
| As a convenience, a list of such packages may be specified: | |||
| #+BEGIN_SRC emacs-lisp | |||
| (use-package abbrev | |||
| :requires (foo bar baz)) | |||
| #+END_SRC | |||
| For more complex logic, such as that supported by ~:after~, simply use ~:if~ | |||
| and the appropriate Lisp expression. | |||
| * FAQ | |||
| :PROPERTIES: | |||
| :APPENDIX: t | |||
| :EXPORT_FILE_NAME: faq | |||
| :END: | |||
| The next two nodes lists frequently asked questions. | |||
| Please also use the {{{link-jump(Debugging Tools,/debugging-tools)}}}. | |||
| ** FAQ - How to ...? | |||
| *** This is a question | |||
| This is an answer. | |||
| ** FAQ - Issues and Errors | |||
| *** This is an issues | |||
| This is a description. | |||
| * Debugging Tools | |||
| :PROPERTIES: | |||
| :EXPORT_FILE_NAME: debugging-tools | |||
| :END: | |||
| TODO | |||
| Please also see the {{{link-jump(FAQ,/faq)}}}. | |||
| * Command Index | |||
| :PROPERTIES: | |||
| :APPENDIX: t | |||
| :INDEX: cp | |||
| :END: | |||
| * Function Index | |||
| :PROPERTIES: | |||
| :APPENDIX: t | |||
| :INDEX: fn | |||
| :END: | |||
| * Variable Index | |||
| :PROPERTIES: | |||
| :APPENDIX: t | |||
| :INDEX: vr | |||
| :END: | |||
| * _ Copying | |||
| :PROPERTIES: | |||
| :COPYING: t | |||
| :END: | |||
| #+BEGIN_QUOTE | |||
| Copyright (C) 2012-2017 John Wiegley <johnw@newartisans.com> | |||
| You can redistribute this document 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 document 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. | |||
| #+END_QUOTE | |||
| * _ :ignore: | |||
| # LocalWords: ARG ARGS CONDITIONs ChangeLog DNS Dired Ediff Ediffing | |||
| # LocalWords: Elpa Emacsclient FUNC Flyspell Git Git's Gitk HOOK's | |||
| # LocalWords: IDENT Ido Junio LocalWords | |||
| # LocalWords: Melpa Propertize REF REF's RET Reflog SPC SYM Spacemacs | |||
| # LocalWords: Submodules TODO TYPEs Theming Unpulled Unpushed Unstaged | |||
| # LocalWords: Untracked WORKTREE Wip ack args async autoloads autosaving | |||
| # LocalWords: autosquash backport basename branchref builtin | |||
| # LocalWords: cdr changelog committer config customizable diff's diffstat | |||
| # LocalWords: dwim ediff ediffing editmsg emacsclient filename fixup | |||
| # LocalWords: flyspell func git's gitk gitman gitmodule gitmodules goto | |||
| # LocalWords: gpg gui ident ido init inserter inserters keymap keymaps | |||
| # LocalWords: logfile use-package maildir manpage manpages minibuffer multi mv | |||
| # LocalWords: namespace newbase nocommit notesRef popup popups posix prev | |||
| # LocalWords: propertize rebase rebased rebasing reflog repo signoff str | |||
| # LocalWords: struct subcommand submodule submodule's submodules subprocess | |||
| # LocalWords: sym texinfo theming todo topdir un unhighlighted unpulled | |||
| # LocalWords: unpushed unstage unstaged unstages unstaging untracked url | |||
| # LocalWords: versa whitespace wip workflow worktree wtree | |||
| # LocalWords: backported macOS | |||
| # Local Variables: | |||
| # eval: (require 'org-man nil t) | |||
| # eval: (require 'ox-texinfo+ nil t) | |||
| # eval: (and (require 'ox-extra nil t) (ox-extras-activate '(ignore-headlines))) | |||
| # indent-tabs-mode: nil | |||
| # org-src-preserve-indentation: nil | |||
| # End: | |||