diff --git a/.gitignore b/.gitignore index ffe9657..b6633fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ vim/.netrwhist +vim/bundle/* diff --git a/vim/bundle/AutoComplPop b/vim/bundle/AutoComplPop deleted file mode 160000 index c2609fa..0000000 --- a/vim/bundle/AutoComplPop +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c2609fab86a6e37cd6aa6c144c23bfe70c194929 diff --git a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-TOC-demo-more-background.png b/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-TOC-demo-more-background.png deleted file mode 100644 index 3dfb3c8..0000000 Binary files a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-TOC-demo-more-background.png and /dev/null differ diff --git a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-TOC-demo.png b/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-TOC-demo.png deleted file mode 100644 index ad8a259..0000000 Binary files a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-TOC-demo.png and /dev/null differ diff --git a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-Team.png b/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-Team.png deleted file mode 100644 index ec8005d..0000000 Binary files a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-Team.png and /dev/null differ diff --git a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-Team.svg b/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-Team.svg deleted file mode 100644 index 66a27a5..0000000 --- a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX-Team.svg +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - Team - - - diff --git a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX.png b/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX.png deleted file mode 100644 index 5b41b74..0000000 Binary files a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX.png and /dev/null differ diff --git a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX.svg b/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX.svg deleted file mode 100644 index 2b189aa..0000000 --- a/vim/bundle/LaTeX-Box/.assets/LaTeX-BoX.svg +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vim/bundle/LaTeX-Box/.gitignore b/vim/bundle/LaTeX-Box/.gitignore deleted file mode 100644 index 926ccaa..0000000 --- a/vim/bundle/LaTeX-Box/.gitignore +++ /dev/null @@ -1 +0,0 @@ -doc/tags diff --git a/vim/bundle/LaTeX-Box/LICENSE b/vim/bundle/LaTeX-Box/LICENSE deleted file mode 100644 index 94a9ed0..0000000 --- a/vim/bundle/LaTeX-Box/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - 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. - - - Copyright (C) - - 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 . - -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: - - Copyright (C) - 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 -. - - 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 -. diff --git a/vim/bundle/LaTeX-Box/README.md b/vim/bundle/LaTeX-Box/README.md deleted file mode 100644 index 9760dbf..0000000 --- a/vim/bundle/LaTeX-Box/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# LaTeX-BoX -![LaTeX-BoX](https://raw.github.com/LaTeX-Box-Team/LaTeX-Box/master/.assets/LaTeX-BoX.png) - -## This plugin provides: -- Background compilation using latexmk. -- Completion for commands, environments, labels, bibtex entries, and inline maths. -- A simple table of contents improving the navigation of large files. -- Smart indentation. -- Highlight matching \begin/\end and \left\right pairs. -- Motion between \begin/\end and \left\right pairs with the % key. -- Motion through brackets/braces (with user-defined keys). -- Environment objects (e.g., select environement with "vie" or "vae"). -- Inline math objects (e.g., select inline math with "vi$" or "va$"). -- Folding of parts (part/chapter/section/etc) and environments. -- OmniCompletion for bibliography entries respects BibLaTeX's - `\addbibresource`, `\addglobalbib` and `\addsectionbib` commands. -- The table of contents functionality does not depend anymore on the assumption - that `\@writefile{toc}{\contentsline ...}` entries in the `*.aux` file always - occur at the start of some line. -- Completion of `\ref{...}` commands was completely rewritten. It is now able - to handle `\@newlabel{label}{{number}{page}...}` entries in the `*.aux` file - even if `number` or `page` contain arbitrary nested levels of braces. Labels - are additionally held in a cache per `*.aux` file, which is updated only if - the modification time of the file changes. -- The table of contents now opens files different from the one currently being - edited in a new buffer. (I actually think, that this behaviour was - implemented already, but I could not get it working.) To make this work, - LaTeX-Box is not loaded per buffer but globally. - -This plugins aims at being lightweight and simple. For more fully-fledged -plugins, see: -- LaTeX-Suite: vimscript#475 -- AutomaticTexPlugin: vimscript#2945 - -## Installation -### With gmarik vundle -_https://github.com/gmarik/vundle_ - -Add `Plugin 'LaTeX-Box-Team/LaTeX-Box'` to your ~/.vimrc and run -`:PluginInstall` in a vim buffer. Add `!` to the command to update. - -### With pathogen -_https://github.com/tpope/vim-pathogen_ - -Add the LaTeX-Box bundle to your bundle directory, for instance with `git -clone`. This will typically be enough: - - cd ~/.vim/bundle - git clone git://github.com/LaTeX-Box-Team/LaTeX-Box.git - -### Without a plugin manager - -Copy the directories to your `.vim/` folder. - -### Windows users - -Users working with (g)vim on Windows must have a Perl environment installed. -Such an environment can be downloaded at : http://strawberryperl.com/ - -### Installation Notes - -Make sure `filetype plugin on` is set in host `.vimrc`, else LaTeX-Box -will not load. - -Note that there are configurable global variables that can be put in the -`.vimrc`. These are documented, but as an example, one can have the -table of contents open as a horizontal split by utilizing this: - - ~/.vimrc - ... - if s:extfname ==? "tex" - ... - let g:LatexBox_split_type="new" - ... - endif - -## Mirror information - -This is mirrored on - -- http://www.vim.org/scripts/script.php?script_id=3109 -- https://launchpad.net/~vim-latex-box - -## Example Table of Contents - -![LaTeX-BoX TOC](https://raw.github.com/LaTeX-Box-Team/LaTeX-Box/master/.assets/LaTeX-BoX-TOC-demo.png) - - diff --git a/vim/bundle/LaTeX-Box/after/syntax/tex.vim b/vim/bundle/LaTeX-Box/after/syntax/tex.vim deleted file mode 100644 index 9f4d761..0000000 --- a/vim/bundle/LaTeX-Box/after/syntax/tex.vim +++ /dev/null @@ -1,9 +0,0 @@ -" adds support for cleverref package -" \Cref, \cref, \cpageref, \labelcref, \labelcpageref -syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup -syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)ref{" end="}\|%stopzone\>" contains=@texRefGroup - -" adds support for listings package -syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" -syn match texInputFile "\\lstinputlisting\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt -syn match texZone "\\lstinline\s*\(\[.*\]\)\={.\{-}}" diff --git a/vim/bundle/LaTeX-Box/doc/latex-box.txt b/vim/bundle/LaTeX-Box/doc/latex-box.txt deleted file mode 100644 index 667f11f..0000000 --- a/vim/bundle/LaTeX-Box/doc/latex-box.txt +++ /dev/null @@ -1,833 +0,0 @@ -*latex-box.txt* LaTeX Box -*latex-box* - -This plugin consists of a set of tools to help editing LaTeX documents. - -Manifesto: LaTeX Box aims to remain lightweight and stay out of the way. - -This plugin provides: -- Background compilation using latexmk; -- Completion for commands, environments, labels, bibtex entries and inline - maths; -- A simple table of contents; -- Smart indentation (activated with "set smartindent"); -- Highlighting of matching \begin/\end pairs -- Motion between matching \begin/\end pairs with the % key; -- Motion through brackets/braces (with user-defined keys). -- Environment objects (e.g., select environement with "vie" or "vae") -- Inline math objects (e.g., select inline math with "vi$" or "va$") - -============================================================================== - -|latex-box-completion| COMPLETION -|latex-box-completion-commands| Commands -|latex-box-completion-environments| Environments -|latex-box-completion-labels| Labels -|latex-box-completion-bibtex| Bibtex -|latex-box-completion-inlineMaths| InlineMaths - -|latex-box-commands| COMMANDS -|latex-box-commands-compilation| Compilation -|latex-box-commands-viewing| Viewing -|latex-box-commands-folding| Folding -|latex-box-commands-motion| Motion - -|latex-box-motion| MOTION - -|latex-box-mappings| MAPPINGS -|latex-box-mappings-compilation| Compilation -|latex-box-mappings-insertion| Insertion -|latex-box-mappings-viewing| Viewing -|latex-box-mappings-folding| Folding -|latex-box-mappings-motion| Motion - -|latex-box-settings| SETTINGS -|latex-box-settings-compilation| Compilation -|latex-box-settings-completion| Completion -|latex-box-settings-windows| Vim Windows - -|latex-box-folding| FOLDING - -|latex-box-indent| INDENTATION - -|latex-box-FAQ| Frequently Asked Questions - -|latex-box-todo| TODO - -============================================================================== - -COMPLETION *latex-box-completion* - -Completion is achieved through omni completion |compl-omni|, with default -bindings . There are five types of completion: - ------------------------------------------------------------------------------- - - *latex-box-completion-commands* -Commands ~ - -Command completion is triggered by the '\' character. For example, > - \beg -completes to > - \begin{ -< - -Associated settings: - |g:LatexBox_completion_commands| - |g:LatexBox_completion_close_braces| - ------------------------------------------------------------------------------- - - *latex-box-completion-environments* -Environments ~ - -Environment completion is triggered by '\begin{'. For example, > - \begin{it -completes to > - \begin{itemize} -< - -Completion of '\end{' automatically closes the last open environment. - -Associated settings: - |g:LatexBox_completion_environments| - |g:LatexBox_completion_close_braces| - ------------------------------------------------------------------------------- - - *latex-box-completion-labels* -Labels ~ - -Label completion is triggered by '\ref{' or '\eqref{'. For example, > - \ref{sec: -offers a list of all matching labels, with their associated value and page -number. Labels are read from the aux file, so label completion works only -after compilation. - -It matches: - 1. labels: > - \ref{sec: -< 2. numbers: > - \eqref{2 -< 3. labels and numbers together (separated by whitespace): > - \eqref{eq 2 -< - -Associated settings: - |g:LatexBox_ref_pattern| - |g:LatexBox_completion_close_braces| - ------------------------------------------------------------------------------- - - *latex-box-completion-bibtex* -BibTeX entries ~ - -BibTeX completion is triggered by '\cite{', '\citep{' or '\citet{'. For -example, assume you have in your .bib files an entry looking like: > - - @book { knuth1981, - author = "Donald E. Knuth", - title = "Seminumerical Algorithms", - publisher = "Addison-Wesley", - year = "1981" } - -Then, try: > - - \cite{Knuth 1981 - \cite{algo - -You can also use regular expressions (or vim patterns) after '\cite{'. - -Associated settings: - |g:LatexBox_cite_pattern| - |g:LatexBox_bibtex_wild_spaces| - |g:LatexBox_completion_close_braces| - ------------------------------------------------------------------------------- - - *latex-box-completion-inlineMaths* -InlineMaths ~ - -InlineMaths completion is triggered by '$', '\(' or '\[', and can also be -triggered by '$' that locates in math environment '\(...\)', '\[...\]', or -'\begin{eq-env} ... \end{eq-env}'. It suggests the inline maths you write in -'$' pairs and in '\( ... \)' and the corresponding line number. - -Note that an inline math with open and close symbols on different lines will -not be suggested. - -For example, you type two in line maths looking like: > - - $hello$, \(world\) - -And you save them before trying to complete elsewhere: > - - :w - -You type '$', '\(' or '\[', and part of 'hello': > - - $h - \(h - \[h - -They comlete to: > - - $hello$ - \(hello\) - \[hello\] - -You can still add more in line maths in '\(...\)' and '\[...\]': > - - \(hello, $ w \) - \[hello, $ w \] - -The results: > - - \(hello, world\) - \[hello, world\] - -Or cross lines: > - - \( hello, - $ w - - \[ hello, - $ w - -The results: > - - \(hello, - world - - \[hello, - world - -For equation environments, it's always triggered by '$': > - - \begin{eq-env} - $h - $w - \end{eq-env} - -It matches: > - - \begin{eq-env} - hello - world - \end{eq-env} - - -ATTENTION: do not try to complete inline maths when -1. '$' pair is in multi lines: > - - $ - h - -2. '\begin{eq-env}' and '\end{eq-env}' are in single line: > - - \begin{eq-env} $ h \end{eq-env} - -Associated setting: > - g:LatexBox_complete_inlineMath - g:LatexBox_eq_env_patterns - -============================================================================== - -COMMANDS *latex-box-commands* - ------------------------------------------------------------------------------- - - *latex-box-commands-compilation* -Compilation ~ - -*:Latexmk* - Compile with latexmk. - See |g:LatexBox_latexmk_async|, |g:LatexBox_latexmk_options|, and - |g:LatexBox_latexmk_preview_continuously|. -*:Latexmk!* - Force compilation with latexmk (runs latexmk with "-g" option). -*:LatexmkClean* - Clean temporary output from LaTeX. -*:LatexmkClean!* - Clean all output from LaTeX. -*:LatexmkStatus* - Show the running status of latexmk for the current buffer. -*:LatexmkStatus!* - Show the running status of latexmk for all buffers with process group - ID's or PID's. -*:LatexmkStop* - Stop latexmk if it is running. -*:LatexErrors* - Load the log file for the current document and jump to the first error. - -Note: The commands |:LatexmkStop| and |:LatexmkStatus| are only relevant when -|g:LatexBox_latexmk_async| or |g:LatexBox_latexmk_preview_continuously| is -set. - -When latexmk terminates, it reports its success or failure (with status -number). To navigate through the errors, you can use the |:cc|, |:cn| and -|:cp| commands, as well as the |:clist| command to list the errors. - ------------------------------------------------------------------------------- - - *latex-box-commands-viewing* -Viewing ~ - -*:LatexView* - Launch viewer on output file. - Takes optional arguments, separated by whitespaces, to be passed to the viewer. - For example, to open the viewer at a specific page and line if SyncTeX is used. - See the FAQ below for an application to SumatraPDF for forward searching. - See |g:LatexBox_output_type| and |g:LatexBox_viewer|. - ------------------------------------------------------------------------------- - - *latex-box-commands-folding* -Folding ~ - -*:LatexFold* - Recalculate the folds in the file. - This is especially useful if you are editing a large file with - automatic folding disabled for performance reasons. - See |g:LatexBox_fold_automatic|. - ------------------------------------------------------------------------------- - - *latex-box-commands-motion* -Motion ~ - -*:LatexTOC* - Open a table of contents. - Use Enter to navigate to selected entry. - See |g:LatexBox_split_type|. - See |g:LatexBox_split_length|. - See |g:LatexBox_split_width|. - See |g:LatexBox_split_side|. - See |g:LatexBox_split_resize|. -*:LatexTOCToggle* - Toggle the display of the table of contents. -*:LatexLabels* - Same as TOC but with regex-selected labels. - -Associated setting: - |g:LatexBox_plaintext_toc| (set this if UTF8 conversion does not work) - -============================================================================== - -MOTION *latex-box-motion* - -The function LatexBox_JumpToNextBraces({backward}) allows to jump outside of -the current brace/bracket pair, or inside of the next opening braces/brackets. - -============================================================================== - -MAPPINGS *latex-box-mappings* - ------------------------------------------------------------------------------- - - *latex-box-mappings-compilation* -Compilation ~ - -ll |:Latexmk| - Compile with latexmk. -lL |:Latexmk!| - Force compilation with latexmk. -lc |:LatexmkClean| - Clean temporary output from LaTeX. -lC |:LatexmkClean!| - Clean all output from LaTeX. -lk |:LatexmkStop| - Stop latexmk if it is running. -lg |:LatexmkStatus| - Show the running status of latexmk for the current buffer. -lG |:LatexmkStatus!| - Show the running status of latexmk for all buffers with process group - ID's. -le |:LatexErrors| - Load the log file for the current document and jump to the first error. - ------------------------------------------------------------------------------- - - *latex-box-mappings-viewing* -Viewing ~ - -lv |:LatexView| - View output file. - ------------------------------------------------------------------------------- - - *latex-box-mappings-folding* -Folding ~ - -lf |:LatexFold| - Recalculate the folds. - ------------------------------------------------------------------------------- - - *latex-box-mappings-insertion* -Insertion ~ - -*LatexCloseCurEnv* - Close the last matching open environment. Use with imap, e.g.: > - imap ]] LatexCloseCurEnv -< - -*LatexChangeEnv* - Change the current environment. Use with nmap, e.g.: > - nmap LatexChangeEnv -< - -*LatexToggleStarEnv* - Toggle star environments (add or remove star). Use with nmap, e.g.: > - nmap LatexToggleStarEnv -< - -*LatexWrapSelection* - Wrap the current selection in a LaTeX command. Use with vmap, e.g.: > - vmap LatexWrapSelection -< - -*LatexEnvWrapSelection* - Wrap the current selection in an environment. Use with vmap, e.g.: > - vmap LatexEnvWrapSelection -< - -Suggested mappings to put in ~/.vim/ftplugin/tex.vim: > - imap [[ \begin{ - imap ]] LatexCloseCurEnv - nmap LatexChangeEnv - vmap LatexWrapSelection - vmap LatexEnvWrapSelection - imap (( \eqref{ -< - ------------------------------------------------------------------------------- - - *latex-box-mappings-motion* -Motion ~ - -lt |:LatexTOC| - Open a table of contents. - Use Enter to navigate to selected entry. - -*LatexBox_JumpToMatch* - Jump to the matching bracket or \begin/\end pairs. Emulates |%|. - -*LatexBox_BackJumpToMatch* - Same as |LatexBox_JumpToMatch|, but the initial search is - backward. - -Suggested bindings: > - map ¶ :call LatexBox_JumpToNextBraces(0) - map § :call LatexBox_JumpToNextBraces(1) - imap =LatexBox_JumpToNextBraces(0) - imap § =LatexBox_JumpToNextBraces(1) -< - -============================================================================== - -SETTINGS *latex-box-settings* - ------------------------------------------------------------------------------- - -Mappings ~ - -*g:LatexBox_no_mappings* - If this variable is defined, the default keyboard mappings will not be - loaded. - -*g:LatexBox_open_pats* -*g:LatexBox_close_pats* - These variables define the patterns that LatexBox use to detect - matching pair of braces, parantheses, environments, and similar. - - Default: > - let g:LatexBox_open_pats = [ - \ '\\{','{','\\(','(','\\\[','\[', - \ '\\begin\s*{.\{-}}', - \ '\\left\s*\%([^\\]\|\\.\|\\\a*\)', - \ ] - let g:LatexBox_close_pats = [ - \ '\\}','}','\\)',')','\\\]','\]', - \ '\\end\s*{.\{-}}', - \ '\\right\s*\%([^\\]\|\\.\|\\\a*\)', - \ ] -< - - *latex-box-settings-completion* -Completion ~ - -*g:LatexBox_completion_close_braces* Default: 1 - If nonzero, omni completion will add closing brackets where relevant. - For example, if nonzero, > - \begin{itemize -< completes to > - \begin{itemize} - -*g:LatexBox_bibtex_wild_spaces* Default: 1 - If nonzero, spaces act as wildcards ('.*') in completion. - - For example, if nonzero, > - \cite{Knuth 1981 -< is equivalent to > - \cite{Knuth.*1981 - -*g:LatexBox_completion_environments* -*g:LatexBox_completion_commands* - Static completion lists for environments - |latex-box-completion-environments| and commands - |latex-box-completion-commands|. - See |complete-items|. - -*g:LatexBox_cite_pattern* -*g:LatexBox_ref_pattern* - Patterns to match \cite and \ref commands for BibTeX and label - completion. They must include the trailing '{'. - - Examples: To match only the 'cite' command (case insensitive), use: > - let LatexBox_cite_pattern = '\c\\cite\*\?\_\s*{' -< To match all commands that end with 'ref' (case insensitive), use: > - let LatexBox_ref_pattern = '\c\\\a*ref\*\?\_\s*{' -< Both of the above examples also match commands with a trailing star. - - Default values: > - let g:LatexBox_cite_pattern - \ = '\m\c\\\a*cite\a*\*\?\(\[[^\]]*\]\)\_\s*{' - let g:LatexBox_ref_pattern - \ = '\m\C\\v\?\(eq\|page\|[cC]\)\?ref\*\?\_\s*{' -< The '\m' flag indicates that these are magic regular expressions. -< The default settings should work for most standard LaTeX packages. - -*g:LatexBox_complete_inlineMath* Default: 0 - Switch for inline math completion. - -*g:LatexBox_eq_env_patterns* - Equation environments besides '$...$', '\(...\)', and '\[...\]' that - support inline math completion. - - Note that 'eq-env-name*' will also be supported if we add - 'eq-env-name' in the list. - - Default: > - let g:LatexBox_eq_env_patterns - \ = 'equation\|gather\|multiline\|align' - \ . '\|flalign\|alignat\|eqnarray' -< - ------------------------------------------------------------------------------- - -Templates (DEPRECATED) ~ - -*g:LatexBox_templates* - - Dictionary of environment templates |latex-box-templates|. - - DEPRECATED! - I think it is better to leave this task to plug-ins oriented to do - this well, like snipMate: - http://www.vim.org/scripts/script.php?script_id=2540 - ------------------------------------------------------------------------------- - - *latex-box-settings-compilation* -Compilation ~ - -*g:vim_program* Default: autodetected - Vim program to use on command line for callbacks. If autodetect - fails, defaults to: > - '/Applications/MacVim.app/Contents/MacOS/Vim -g' -< on MacVim, or to |v:progname| on other systems. - -*g:LatexBox_latexmk_async* Default: 0 - Enable asynchronous LaTeX compilation using vimserver. This will - allow latexmk to run in the background and load any compilation - errors in a quickfix window after it finishes running. - -*g:LatexBox_latexmk_preview_continuously* Default: 0 - Run latexmk in continuous mode (i.e. with the "-pvc" option). - Latexmk will track the currently edited file for writes and - recompile automatically when necessary, without hanging VIM. - Setting |g:LatexBox_quickfix|=2 is recommended when this is enabled, - to prevent the quickfix window from stealing the cursor. - -*g:LatexBox_latexmk_env* Default: "" - Additional environment options to place in front of the latexmk - command, e.g. > - let g:LatexBox_latexmk_env = "TEXINPUTS=~/mytex:" - -*g:LatexBox_latexmk_options* Default: "" - Additional options to pass to latexmk during compilation, e.g, "-d". - -*g:LatexBox_output_type* Default: "pdf" - Extension of the output file. One of "pdf", "dvi" or "ps". - -*g:LatexBox_viewer* Default: "xdg-open" - Viewer application for the output file, e.g., "xpdf". - -*g:LatexBox_quickfix* Default: 1 - Adjust the behavior of the quickfix window when there are compilation - errors or warnings. See also |g:LatexBox_show_warnings|. Recognized - options are: - - Value Effect ~ - 0 The quickfix is not opened automatically. - 1 The quickfix window is opened automatically if not - empty and becomes the active window. - 2 The quickfix window is opened automatically if not - empty but the cursor stays in the current window. - 3 The quickfix window is opened automatically if not - empty and becomes the active window. Quickfix window is not - opened on warnings, only on errors. - 4 The quickfix window is opened automatically if not - empty but the cursor stays in the current window. Quickfix - window is not opened on warnings, only on errors. - -*g:LatexBox_autojump* Default: 0 - Automatically jump to first error after calling latexmk. - -*b:main_tex_file* Default: "" - Path to the main LaTeX file associated to the current buffer. - When editing a LaTeX document consisting of multiple source files, set - this variable to the path of the main source file on which LaTeX must - be called. - -*g:LatexBox_show_warnings* Default: 1 - If set to 1, warnings in compilation will be listed as errors. - -*g:LatexBox_ignore_warnings* - A list of warnings to be ignored. - - Default: > - let g:LatexBox_ignore_warnings - \ = ['Underfull', 'Overfull', 'specifier changed to'] -< - -*g:LatexBox_build_dir* Default: "" - Set output directory for build files. - -*b:build_dir* Default: "" - Set output directory for build files. This overrides the global - setting. - -*g:LatexBox_jobname* Default: "" - Sets the name of the output build files. - ------------------------------------------------------------------------------- - - *latex-box-settings-windows* -Vim Windows ~ - -For different settings, change the .vimrc so that a more comfortable -global variable is used. For example, if one prefers horizontal splits -(non-default, featured in screenshot), consider the following lines in -the .vimrc: - -> - if s:extfname ==? "tex" - ... - let |g:LatexBox_split_type| = "new" - ... - end if -< - -*g:LatexBox_split_type* Default: "vnew" - The type of split for the Table of Contents. Use "new" for horizontal, - "vnew" for vertical. Note that these are the general commands for - splitting--more info can be found via :help new. - -*g:LatexBox_split_length* Default: 15 - Length of horizontally split vim windows. Used for the table of contents. - -*g:LatexBox_split_width* Default: 30 - Width of vertically split vim windows. Used for the table of contents. - -*g:LatexBox_split_side* Default: "aboveleft" - On which side the split windows appear. Above for horizontal splits - and left for vertical splits. Used for the table of contents. - Set to "belowright" to have it on the below/right side. - -*g:LatexBox_split_resize* Default: 0 - Resize vim/gvim when opening new windows. Used for the table of - contents. If set to 1, it will add/remove |g:LatexBox_split_width| or - |g:LatexBox_split_length| to the number of columns dynamically, - in order to keep the latex file open with the desired dimension. - -*g:LatexBox_toc_hidehelp* Default: 0 - If enabled, the help info at the bottom of the TOC window will be - hidden. - -============================================================================== - -FOLDING *latex-box-folding* - -LatexBox can fold texts according to LaTeX structure (part, chapter, section -and subsection). Folding is off by default, and can be turned on by defining -the |g:LatexBox_Folding| variable. - -The standard fold settings should suffice for most people. When folding is -turned on and a latex document is opened, the document is parsed once in order -to define the highest fold level based on which parts and sections should be -folded. - -*g:LatexBox_Folding* Default: 0 - Set to 1 to activate LaTeX structure folding. Please note that any - modeline that would set |foldmethod| to something else than - 'fold-expr' will disable the function. The same goes for |foldexpr|. - Set this variable in your .vimrc - -*g:LatexBox_fold_text* Default: 1 - Turn on/off LaTeX enhenced foldtext() function. Turn on this option - makes LaTeX-Box override the |foldtext| option. Turn off if you want - to set your own |foldtext|. - -*g:LatexBox_fold_preamble* Default: 1 - Turn on/off folding of preamble - -*g:LatexBox_fold_envs* Default: 1 - Turn on/off folding of environments - -*g:LatexBox_fold_parts* - Define parts that should be folded. These are intended as top level - parts such as \frontmatter and \appendix, and if they are present in - a latex document they will get fold level 1. - - Default: > - let g:LatexBox_fold_parts = [ - \ "appendix", - \ "frontmatter", - \ "mainmatter", - \ "backmatter" - \ ] - < - -*g:LatexBox_fold_sections* - Define which section levels should be folded. The order of the - elements defines the order in which they are folded. - - Default: > - let g:LatexBox_fold_sections = [ - \ "part", - \ "chapter", - \ "section", - \ "subsection", - \ "subsubsection" - \ ] - < - -*g:LatexBox_fold_toc* Default: 0 - Turn on/off folding of TOC (|latex-box-commands-motion|). - -*g:LatexBox_fold_toc_levels* Default: 1 - Set number of section levels to fold in TOC. - -*g:LatexBox_fold_automatic* Default: 1 - Turn on/off automatic calculation of folds. - By default LaTeX-Box recalculates the folds every time you exit insert - mode. However for large files this can be a rather slow process: a - couple of seconds to 10s of seconds. - If this option is set to 0 the folding code is still enabled but isn't - activated by default. Hence you need to manually tell vim to - recalculate folds every time you find it apropriate. - You can recalculate the folds using lf or |:LatexFold| - -============================================================================== - -INDENTATION *latex-box-indent* - -*g:LatexBox_custom_indent* Default: Not defined - The custom indent file of LaTeX-Box is ignored if this variable is - defined and set to 0. This will revert to the default indentation - file from vim. - -============================================================================== - -FREQUENTLY ASKED QUESTIONS *latex-box-FAQ* - -Q: How can I use SyncTeX with the Skim viewer? - -A: Add the following line in your ~/.latexmkrc file: > - - $pdflatex = 'pdflatex -synctex=1 %O %S' - -< and create a "latex-search" mapping (ls) in your ~/.vimrc: > - - map ls :silent - \ !/Applications/Skim.app/Contents/SharedSupport/displayline - \ =line('.') "=LatexBox_GetOutputFile()" - \ "%:p" - -< (inspired from vim-latex). - - Alternatively, the option for latexmk may be given through the variable - |g:LatexBox_latexmk_options|, for instance as: > - - let g:LatexBox_latexmk_options - \ = "-pdflatex='pdflatex -synctex=1 \%O \%S'" - -< which can be added to your .vimrc file as desired. - -Q: How can I use SyncTeX with the SumatraPDF viewer? - -A: To enable SyncTeX add the following LatexBox settings to your ~/.vimrc file: > - - let g:LatexBox_latexmk_options = - \ '-pdflatex="pdflatex -synctex=1 %O %S"' - - To enable Inverse Search, that is, jumping from a position in the PDF - document to the TeX file, add the following LatexBox settings to your - ~/.vimrc file: > - - let g:LatexBox_latexmk_options = - \ '-pdflatex="pdflatex -synctex=1 %O %S"' - - let g:LatexBox_viewer = 'SumatraPDF -reuse-instance -inverse-search ' - \ . '"gvim --servername ' . v:servername - \ . ' --remote-send \"^^' - \ . ':drop \%f^:\%l^:normal\! zzzv^' - \ . ':call remote_foreground('''.v:servername.''')^\""' - -< The above approach inspired by remoteOpen.vim from LaTeX-suite. The naive - try, > - - ..\ "gvim +\%l \%f" - -< changes the current work dir to the dir of the viewer (see - http://vim.1045645.n5.nabble.com/autochdir-td1140014.html) and produces - a lot of error messages. - - To enable Forward Search, that is, jumping from a position in the TeX file - to the PDF document, add the following mapping to your - ~/.vim/ftplugin/tex.vim file: > - - nnoremap ':LatexView ' . '-forward-search ' - \ . shellescape(expand('%:p')) . ' ' . line(".") . '\' - -< When hitting , the viewer (SumatraPDF) will open the PDF document - at the page corresponding to the current cursor position in the TeX - document. - -Q: How can I use xelatex instead of pdflatex for some documents only? - -A: Instead of putting the settings in your ~/.latexmkrc file, put them in your - document's working directory, in a file named latexmkrc or .latexmkrc: > - $pdflatex = 'xelatex %O %S' - -Q: How can I specify the main TeX file for a multi-file document - -A: There are several ways to do this: - - 1. Add a comment to the first few lines of your file to specify this: > - %! TEX root = main.tex -< 2. Create an empty file called 'main.tex.latexmain' in the same directory. - -============================================================================== - -TODO *latex-box-todo* - -- Improve TOC jumping and filter out weird characters. Deal with multiple - sections with the same name. -- Fix bugs? - -============================================================================== - -vim:tw=78:ts=8:ft=help:norl: diff --git a/vim/bundle/LaTeX-Box/ftplugin/latex-box/common.vim b/vim/bundle/LaTeX-Box/ftplugin/latex-box/common.vim deleted file mode 100644 index f463b7e..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latex-box/common.vim +++ /dev/null @@ -1,413 +0,0 @@ -" LaTeX Box common functions - -" Error Format {{{ -" Note: The error formats assume we're using the -file-line-error with -" [pdf]latex. -" Note: See |errorformat-LaTeX| for more info. - -" Check for options -if !exists("g:LatexBox_show_warnings") - let g:LatexBox_show_warnings=1 -endif -if !exists("g:LatexBox_ignore_warnings") - let g:LatexBox_ignore_warnings = - \['Underfull', - \ 'Overfull', - \ 'specifier changed to'] -endif - -" Standard error message formats -" Note: We consider statements that starts with "!" as errors -setlocal efm=%E!\ LaTeX\ %trror:\ %m -setlocal efm+=%E%f:%l:\ %m -setlocal efm+=%E!\ %m - -" More info for undefined control sequences -setlocal efm+=%Z\ %m - -" More info for some errors -setlocal efm+=%Cl.%l\ %m - -" Show or ignore warnings -if g:LatexBox_show_warnings - " Parse biblatex warnings - setlocal efm+=%-C(biblatex)%.%#in\ t%.%# - setlocal efm+=%-C(biblatex)%.%#Please\ v%.%# - setlocal efm+=%-C(biblatex)%.%#LaTeX\ a%.%# - setlocal efm+=%-Z(biblatex)%m - - " Parse hyperref warnings - setlocal efm+=%-C(hyperref)%.%#on\ input\ line\ %l. - - for w in g:LatexBox_ignore_warnings - let warning = escape(substitute(w, '[\,]', '%\\\\&', 'g'), ' ') - exe 'setlocal efm+=%-G%.%#'. warning .'%.%#' - endfor - setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%# - setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d - setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m - setlocal efm+=%+W%.%#Warning:\ %m -else - setlocal efm+=%-WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%# - setlocal efm+=%-W%.%#\ at\ lines\ %l--%*\\d - setlocal efm+=%-WLaTeX\ %.%#Warning:\ %m - setlocal efm+=%-W%.%#Warning:\ %m -endif - -" Push file to file stack -setlocal efm+=%+P**%f -setlocal efm+=%+P**\"%f\" - -" Ignore unmatched lines -setlocal efm+=%-G%.%# -" }}} - -" Vim Windows {{{ - -" Type of split, "new" for horiz. "vnew" for vert. -if !exists('g:LatexBox_split_type') - let g:LatexBox_split_type = "vnew" -endif - -" Length of vertical splits -if !exists('g:LatexBox_split_length') - let g:LatexBox_split_length = 15 -endif - -" Width of horizontal splits -if !exists('g:LatexBox_split_width') - let g:LatexBox_split_width = 30 -endif - -" Where splits appear -if !exists('g:LatexBox_split_side') - let g:LatexBox_split_side = "aboveleft" -endif - -" Resize when split? -if !exists('g:LatexBox_split_resize') - let g:LatexBox_split_resize = 0 -endif - -" Toggle help info -if !exists('g:LatexBox_toc_hidehelp') - let g:LatexBox_toc_hidehelp = 0 -endif -" }}} - -" Filename utilities {{{ -function! LatexBox_GetMainTexFile() - - " 1. check for the b:main_tex_file variable - if exists('b:main_tex_file') && filereadable(b:main_tex_file) - return b:main_tex_file - endif - - - " 2. scan the first few lines of the file for root = filename - for linenum in range(1,5) - let linecontents = getline(linenum) - if linecontents =~ 'root\s*=' - " Remove everything but the filename - let b:main_tex_file = substitute(linecontents, - \ '.*root\s*=\s*', "", "") - let b:main_tex_file = substitute(b:main_tex_file, '\s*$', "", "") - " Prepend current directory if this isn't an absolute path - if b:main_tex_file !~ '^/' - let b:main_tex_file = expand('%:p:h') . '/' . b:main_tex_file - endif - let b:main_tex_file = fnamemodify(b:main_tex_file, ":p") - if b:main_tex_file !~ '\.tex$' - let b:main_tex_file .= '.tex' - endif - return b:main_tex_file - endif - endfor - - " 3. scan current file for "\begin{document}" - if &filetype == 'tex' && search('\m\C\\begin\_\s*{document}', 'nw') != 0 - return expand('%:p') - endif - - " 4. use 'main.tex' if it exists in the same directory (and is readable) - let s:main_dot_tex_file=expand('%:p:h') . '/main.tex' - if filereadable(s:main_dot_tex_file) - let b:main_tex_file=s:main_dot_tex_file - return b:main_tex_file - endif - - " 5. borrow the Vim-Latex-Suite method of finding it - if LatexBox_GetMainFileName() != expand('%:p') - let b:main_tex_file = LatexBox_GetMainFileName() - return b:main_tex_file - endif - - " 6. prompt for file with completion - let b:main_tex_file = s:PromptForMainFile() - return b:main_tex_file -endfunction - -function! s:PromptForMainFile() - let saved_dir = getcwd() - execute 'cd ' . fnameescape(expand('%:p:h')) - - " Prompt for file - let l:file = '' - while !filereadable(l:file) - let l:file = input('main LaTeX file: ', '', 'file') - if l:file !~ '\.tex$' - let l:file .= '.tex' - endif - endwhile - let l:file = fnamemodify(l:file, ':p') - - " Make persistent - let l:persistent = '' - while l:persistent !~ '\v^(y|n)' - let l:persistent = input('make choice persistent? (y, n) ') - if l:persistent == 'y' - call writefile([], l:file . '.latexmain') - endif - endwhile - - execute 'cd ' . fnameescape(saved_dir) - return l:file -endfunction - -" Return the directory of the main tex file -function! LatexBox_GetTexRoot() - return fnamemodify(LatexBox_GetMainTexFile(), ':h') -endfunction - -function! LatexBox_GetBuildBasename(with_dir) - " 1. Check for g:LatexBox_jobname - if exists('g:LatexBox_jobname') - return g:LatexBox_jobname - endif - - " 2. Get the basename from the main tex file - if a:with_dir - return fnamemodify(LatexBox_GetMainTexFile(), ':r') - else - return fnamemodify(LatexBox_GetMainTexFile(), ':t:r') - endif -endfunction - -function! LatexBox_GetAuxFile() - " 1. check for b:build_dir variable - if exists('b:build_dir') && isdirectory(b:build_dir) - return b:build_dir . '/' . LatexBox_GetBuildBasename(0) . '.aux' - endif - - " 2. check for g:LatexBox_build_dir variable - if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir) - return g:LatexBox_build_dir . '/' . LatexBox_GetBuildBasename(0) . '.aux' - endif - - " 3. use the base name of main tex file - return LatexBox_GetBuildBasename(1) . '.aux' -endfunction - -function! LatexBox_GetLogFile() - " 1. check for b:build_dir variable - if exists('b:build_dir') && isdirectory(b:build_dir) - return b:build_dir . '/' . LatexBox_GetBuildBasename(0) . '.log' - endif - - " 2. check for g:LatexBox_build_dir variable - if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir) - return g:LatexBox_build_dir . '/' . LatexBox_GetBuildBasename(0) . '.log' - endif - - " 3. use the base name of main tex file - return LatexBox_GetBuildBasename(1) . '.log' -endfunction - -function! LatexBox_GetOutputFile() - " 1. check for b:build_dir variable - if exists('b:build_dir') && isdirectory(b:build_dir) - return b:build_dir . '/' . LatexBox_GetBuildBasename(0) - \ . '.' . g:LatexBox_output_type - endif - - " 2. check for g:LatexBox_build_dir variable - if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir) - return g:LatexBox_build_dir . '/' . LatexBox_GetBuildBasename(0) - \ . '.' . g:LatexBox_output_type - endif - - " 3. use the base name of main tex file - return LatexBox_GetBuildBasename(1) . '.' . g:LatexBox_output_type -endfunction -" }}} - -" View Output {{{ - -" Default pdf viewer -if !exists('g:LatexBox_viewer') - " On windows, 'running' a file will open it with the default program - let s:viewer = '' - if has('unix') - " echo -n necessary as uname -s will append \n otherwise - let s:uname = system('echo -n $(uname -s)') - if s:uname == "Darwin" - let s:viewer = 'open' - else - let s:viewer = 'xdg-open' - endif - endif - let g:LatexBox_viewer = s:viewer -endif - -function! LatexBox_View(...) - let lvargs = join(a:000, ' ') - let outfile = LatexBox_GetOutputFile() - if !filereadable(outfile) - echomsg fnamemodify(outfile, ':.') . ' is not readable' - return - endif - let cmd = g:LatexBox_viewer . ' ' . lvargs . ' ' . shellescape(outfile) - if has('win32') - let cmd = '!start /b ' . cmd . ' >nul' - else - let cmd = '!' . cmd . ' ' - if fnamemodify(&shell, ':t') ==# 'fish' - let cmd .= ' >/dev/null ^/dev/null &' - else - let cmd .= ' &>/dev/null &' - endif - endif - silent execute cmd - if !has("gui_running") - redraw! - endif -endfunction - -command! -nargs=* LatexView call LatexBox_View('') -" }}} - -" In Comment {{{ - -" LatexBox_InComment([line], [col]) -" return true if inside comment -function! LatexBox_InComment(...) - let line = a:0 >= 1 ? a:1 : line('.') - let col = a:0 >= 2 ? a:2 : col('.') - return synIDattr(synID(line, col, 0), "name") =~# '^texComment' -endfunction -" }}} - -" Get Current Environment {{{ - -" LatexBox_GetCurrentEnvironment([with_pos]) -" Returns: -" - environment -" if with_pos is not given -" - [envirnoment, lnum_begin, cnum_begin, lnum_end, cnum_end] -" if with_pos is nonzero -function! LatexBox_GetCurrentEnvironment(...) - if a:0 > 0 - let with_pos = a:1 - else - let with_pos = 0 - endif - - let begin_pat = '\C\\begin\_\s*{[^}]*}\|\\\@ 1 && line[cnum - 1] != '\' - let cnum -= 1 - endwhile - call cursor(lnum, cnum) - - " match begin/end pairs but skip comments - let flags = 'bnW' - if strpart(getline('.'), col('.') - 1) =~ '^\%(' . begin_pat . '\)' - let flags .= 'c' - endif - let [lnum1, cnum1] = searchpairpos(begin_pat, '', end_pat, flags, - \ 'LatexBox_InComment()') - - let env = '' - - if lnum1 - let line = strpart(getline(lnum1), cnum1 - 1) - - if empty(env) - let env = matchstr(line, '^\C\\begin\_\s*{\zs[^}]*\ze}') - endif - if empty(env) - let env = matchstr(line, '^\\\[') - endif - if empty(env) - let env = matchstr(line, '^\\(') - endif - endif - - if with_pos == 1 - let flags = 'nW' - if !(lnum1 == lnum && cnum1 == cnum) - let flags .= 'c' - endif - - let [lnum2, cnum2] = searchpairpos(begin_pat, '', end_pat, flags, - \ 'LatexBox_InComment()') - - call setpos('.', saved_pos) - return [env, lnum1, cnum1, lnum2, cnum2] - else - call setpos('.', saved_pos) - return env - endif -endfunction -" }}} - -" Tex To Tree {{{ -" stores nested braces in a tree structure -function! LatexBox_TexToTree(str) - let tree = [] - let i1 = 0 - let i2 = -1 - let depth = 0 - while i2 < len(a:str) - let i2 = match(a:str, '[{}]', i2 + 1) - if i2 < 0 - let i2 = len(a:str) - endif - if i2 >= len(a:str) || a:str[i2] == '{' - if depth == 0 - let item = substitute(strpart(a:str, i1, i2 - i1), - \ '^\s*\|\s*$', '', 'g') - if !empty(item) - call add(tree, item) - endif - let i1 = i2 + 1 - endif - let depth += 1 - else - let depth -= 1 - if depth == 0 - call add(tree, LatexBox_TexToTree(strpart(a:str, i1, i2 - i1))) - let i1 = i2 + 1 - endif - endif - endwhile - return tree -endfunction -" }}} - -" Tree To Tex {{{ -function! LatexBox_TreeToTex(tree) - if type(a:tree) == type('') - return a:tree - else - return '{' . join(map(a:tree, 'LatexBox_TreeToTex(v:val)'), '') . '}' - endif -endfunction -" }}} - -" vim:fdm=marker:ff=unix:noet:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/ftplugin/latex-box/complete.vim b/vim/bundle/LaTeX-Box/ftplugin/latex-box/complete.vim deleted file mode 100644 index fae7e4e..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latex-box/complete.vim +++ /dev/null @@ -1,932 +0,0 @@ -" LaTeX Box completion - -setlocal omnifunc=LatexBox_Complete - -" Wrap {{{ -function! s:GetSID() - return matchstr(expand(''), '\zs\d\+_\ze.*$') -endfunction -let s:SID = s:GetSID() -function! s:SIDWrap(func) - return s:SID . a:func -endfunction -" }}} - -" Completion {{{ -if !exists('g:LatexBox_completion_close_braces') - let g:LatexBox_completion_close_braces = 1 -endif -if !exists('g:LatexBox_bibtex_wild_spaces') - let g:LatexBox_bibtex_wild_spaces = 1 -endif - -if !exists('g:LatexBox_cite_pattern') - let g:LatexBox_cite_pattern = '\C\\\a*cite\a*\*\?\(\[[^\]]*\]\)*\_\s*{' -endif -if !exists('g:LatexBox_ref_pattern') - let g:LatexBox_ref_pattern = '\C\\v\?\(eq\|page\|[cC]\|labelc\|name\|auto\)\?ref\*\?\_\s*{' -endif - -if !exists('g:LatexBox_completion_environments') - let g:LatexBox_completion_environments = [ - \ {'word': 'itemize', 'menu': 'bullet list' }, - \ {'word': 'enumerate', 'menu': 'numbered list' }, - \ {'word': 'description', 'menu': 'description' }, - \ {'word': 'center', 'menu': 'centered text' }, - \ {'word': 'figure', 'menu': 'floating figure' }, - \ {'word': 'table', 'menu': 'floating table' }, - \ {'word': 'equation', 'menu': 'equation (numbered)' }, - \ {'word': 'align', 'menu': 'aligned equations (numbered)' }, - \ {'word': 'align*', 'menu': 'aligned equations' }, - \ {'word': 'document' }, - \ {'word': 'abstract' }, - \ ] -endif - -if !exists('g:LatexBox_completion_commands') - let g:LatexBox_completion_commands = [ - \ {'word': '\begin{' }, - \ {'word': '\end{' }, - \ {'word': '\item' }, - \ {'word': '\label{' }, - \ {'word': '\ref{' }, - \ {'word': '\eqref{eq:' }, - \ {'word': '\cite{' }, - \ {'word': '\chapter{' }, - \ {'word': '\section{' }, - \ {'word': '\subsection{' }, - \ {'word': '\subsubsection{' }, - \ {'word': '\paragraph{' }, - \ {'word': '\nonumber' }, - \ {'word': '\bibliography' }, - \ {'word': '\bibliographystyle' }, - \ ] -endif - -if !exists('g:LatexBox_complete_inlineMath') - let g:LatexBox_complete_inlineMath = 0 -endif - -if !exists('g:LatexBox_eq_env_patterns') - let g:LatexBox_eq_env_patterns = 'equation\|gather\|multiline\|align\|flalign\|alignat\|eqnarray' -endif - -" }}} - -"LatexBox_kpsewhich {{{ -function! LatexBox_kpsewhich(file) - let old_dir = getcwd() - execute 'lcd ' . fnameescape(LatexBox_GetTexRoot()) - let out = system('kpsewhich "' . a:file . '"') - - " If kpsewhich has found something, it returns a non-empty string with a - " newline at the end; otherwise the string is empty - if len(out) - " Remove the trailing newline - let out = fnamemodify(out[:-2], ':p') - endif - - execute 'lcd ' . fnameescape(old_dir) - - return out -endfunction -"}}} - -" Omni Completion {{{ - -let s:completion_type = '' - -function! LatexBox_Complete(findstart, base) - if a:findstart - " return the starting position of the word - let line = getline('.') - let pos = col('.') - 1 - while pos > 0 && line[pos - 1] !~ '\\\|{' - let pos -= 1 - endwhile - - let line_start = line[:pos-1] - if line_start =~ '\m\C\\begin\_\s*{$' - let s:completion_type = 'begin' - elseif line_start =~ '\m\C\\end\_\s*{$' - let s:completion_type = 'end' - elseif line_start =~ '\m' . g:LatexBox_ref_pattern . '$' - let s:completion_type = 'ref' - elseif line_start =~ '\m' . g:LatexBox_cite_pattern . '$' - let s:completion_type = 'bib' - " check for multiple citations - let pos = col('.') - 1 - while pos > 0 && line[pos - 1] !~ '{\|,' - let pos -= 1 - endwhile - elseif s:LatexBox_complete_inlineMath_or_not() - let s:completion_type = 'inlineMath' - let pos = s:eq_pos - else - let s:completion_type = 'command' - if line[pos - 1] == '\' - let pos -= 1 - endif - endif - return pos - else - " return suggestions in an array - let suggestions = [] - - if s:completion_type == 'begin' - " suggest known environments - for entry in g:LatexBox_completion_environments - if entry.word =~ '^' . escape(a:base, '\') - if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^}') - " add trailing '}' - let entry = copy(entry) - let entry.abbr = entry.word - let entry.word = entry.word . '}' - endif - call add(suggestions, entry) - endif - endfor - elseif s:completion_type == 'end' - " suggest known environments - let env = LatexBox_GetCurrentEnvironment() - if env != '' - if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]') - call add(suggestions, {'word': env . '}', 'abbr': env}) - else - call add(suggestions, env) - endif - endif - elseif s:completion_type == 'command' - " suggest known commands - for entry in g:LatexBox_completion_commands - if entry.word =~ '^' . escape(a:base, '\') - " do not display trailing '{' - if entry.word =~ '{' - let entry.abbr = entry.word[0:-2] - endif - call add(suggestions, entry) - endif - endfor - elseif s:completion_type == 'ref' - let suggestions = s:CompleteLabels(a:base) - elseif s:completion_type == 'bib' - " suggest BibTeX entries - let suggestions = LatexBox_BibComplete(a:base) - elseif s:completion_type == 'inlineMath' - let suggestions = s:LatexBox_inlineMath_completion(a:base) - endif - if !has('gui_running') - redraw! - endif - return suggestions - endif -endfunction -" }}} - -" BibTeX search {{{ - -" find the \bibliography{...} commands -" the optional argument is the file name to be searched - -function! s:FindBibData(...) - if a:0 == 0 - let file = LatexBox_GetMainTexFile() - else - let file = a:1 - endif - - if !filereadable(file) - return [] - endif - let lines = readfile(file) - let bibdata_list = [] - - " - " Search for added bibliographies - " - let bibliography_cmds = [ - \ '\\bibliography', - \ '\\addbibresource', - \ '\\addglobalbib', - \ '\\addsectionbib', - \ ] - for cmd in bibliography_cmds - let filtered = filter(copy(lines), - \ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}''') - let files = map(filtered, - \ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')') - for file in files - let bibdata_list += map(split(file, ','), - \ 'fnamemodify(v:val, '':r'')') - endfor - endfor - - " - " Also search included files - " - for input in filter(lines, - \ 'v:val =~ ''\C\\\%(input\|include\)\s*{[^}]\+}''') - let bibdata_list += s:FindBibData(LatexBox_kpsewhich( - \ matchstr(input, - \ '\C\\\%(input\|include\)\s*{\zs[^}]\+\ze}'))) - endfor - - return bibdata_list -endfunction - -let s:bstfile = expand(':p:h') . '/vimcomplete' - -function! LatexBox_BibSearch(regexp) - let res = [] - - " Find data from bib files - let bibdata = join(s:FindBibData(), ',') - if bibdata != '' - - " write temporary aux file - let tmpbase = LatexBox_GetTexRoot() . '/_LatexBox_BibComplete' - let auxfile = tmpbase . '.aux' - let bblfile = tmpbase . '.bbl' - let blgfile = tmpbase . '.blg' - - call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}', - \ '\bibdata{' . bibdata . '}'], auxfile) - - if has('win32') - let l:old_shellslash = &l:shellslash - setlocal noshellslash - call system('cd ' . shellescape(LatexBox_GetTexRoot()) . - \ ' & bibtex -terse ' - \ . fnamemodify(auxfile, ':t') . ' >nul') - let &l:shellslash = l:old_shellslash - else - call system('cd ' . shellescape(LatexBox_GetTexRoot()) . - \ ' ; bibtex -terse ' - \ . fnamemodify(auxfile, ':t') . ' >/dev/null') - endif - - let lines = split(substitute(join(readfile(bblfile), "\n"), - \ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n") - - for line in filter(lines, 'v:val =~ a:regexp') - let matches = matchlist(line, - \ '^\(.*\)||\(.*\)||\(.*\)||\(.*\)||\(.*\)') - if !empty(matches) && !empty(matches[1]) - let s:type_length = max([s:type_length, - \ len(matches[2]) + 3]) - call add(res, { - \ 'key': matches[1], - \ 'type': matches[2], - \ 'author': matches[3], - \ 'year': matches[4], - \ 'title': matches[5], - \ }) - endif - endfor - - call delete(auxfile) - call delete(bblfile) - call delete(blgfile) - endif - - " Find data from 'thebibliography' environments - let lines = readfile(LatexBox_GetMainTexFile()) - if match(lines, '\C\\begin{thebibliography}') >= 0 - for line in filter(filter(lines, 'v:val =~ ''\C\\bibitem'''), - \ 'v:val =~ a:regexp') - let match = matchlist(line, '\\bibitem{\([^}]*\)')[1] - call add(res, { - \ 'key': match, - \ 'type': '', - \ 'author': '', - \ 'year': '', - \ 'title': match, - \ }) - endfor - endif - - return res -endfunction -" }}} - -" BibTeX completion {{{ -let s:type_length=0 -function! LatexBox_BibComplete(regexp) - - " treat spaces as '.*' if needed - if g:LatexBox_bibtex_wild_spaces - "let regexp = substitute(a:regexp, '\s\+', '.*', 'g') - let regexp = '.*' . substitute(a:regexp, '\s\+', '\\\&.*', 'g') - else - let regexp = a:regexp - endif - - let res = [] - let s:type_length = 4 - for m in LatexBox_BibSearch(regexp) - let type = m['type'] == '' ? '[-]' : '[' . m['type'] . '] ' - let type = printf('%-' . s:type_length . 's', type) - let auth = m['author'] == '' ? '' : m['author'][:20] . ' ' - let auth = substitute(auth, '\~', ' ', 'g') - let auth = substitute(auth, ',.*\ze', ' et al. ', '') - let year = m['year'] == '' ? '' : '(' . m['year'] . ')' - let w = { 'word': m['key'], - \ 'abbr': type . auth . year, - \ 'menu': m['title'] } - - " close braces if needed - if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]') - let w.word = w.word . '}' - endif - - call add(res, w) - endfor - return res -endfunction -" }}} - -" ExtractLabels {{{ -" Generate list of \newlabel commands in current buffer. -" -" Searches the current buffer for commands of the form -" \newlabel{name}{{number}{page}.* -" and returns list of [ name, number, page ] tuples. -function! s:ExtractLabels() - call cursor(1,1) - - let matches = [] - let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) - - while [lblline, lblbegin] != [0,0] - let [nln, nameend] = searchpairpos( '{', '', '}', 'W' ) - if nln != lblline - let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) - continue - endif - let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 ) - - " Ignore cref entries (because they are duplicates) - if curname =~# "@cref$" - let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) - continue - endif - - if 0 == search( '\m{\w*{', 'ce', lblline ) - let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) - continue - endif - - let numberbegin = getpos('.')[2] - let [nln, numberend] = searchpairpos( '{', '', '}', 'W' ) - if nln != lblline - let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) - continue - endif - let curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 ) - - if 0 == search( '\m\w*{', 'ce', lblline ) - let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) - continue - endif - - let pagebegin = getpos('.')[2] - let [nln, pageend] = searchpairpos( '{', '', '}', 'W' ) - if nln != lblline - let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) - continue - endif - let curpage = strpart( getline( lblline ), pagebegin, pageend - pagebegin - 1 ) - - let matches += [ [ curname, curnumber, curpage ] ] - - let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) - endwhile - - return matches -endfunction -"}}} - -" ExtractInputs {{{ -" Generate list of \@input commands in current buffer. -" -" Searches the current buffer for \@input{file} entries and -" returns list of all files. -function! s:ExtractInputs() - call cursor(1,1) - - let matches = [] - let [inline, inbegin] = searchpos( '\\@input{', 'ecW' ) - - while [inline, inbegin] != [0,0] - let [nln, inend] = searchpairpos( '{', '', '}', 'W' ) - if nln != inline - let [inline, inbegin] = searchpos( '\\@input{', 'ecW' ) - continue - endif - let matches += [ LatexBox_kpsewhich(strpart( getline( inline ), inbegin, inend - inbegin - 1 )) ] - - let [inline, inbegin] = searchpos( '\\@input{', 'ecW' ) - endwhile - - " Remove empty strings for nonexistant .aux files - return filter(matches, 'v:val != ""') -endfunction -"}}} - -" LabelCache {{{ -" Cache of all labels. -" -" LabelCache is a dictionary mapping filenames to tuples -" [ time, labels, inputs ] -" where -" * time is modification time of the cache entry -" * labels is a list like returned by ExtractLabels -" * inputs is a list like returned by ExtractInputs -let s:LabelCache = {} -"}}} - -" GetLabelCache {{{ -" Extract labels from LabelCache and update it. -" -" Compares modification time of each entry in the label -" cache and updates it, if necessary. During traversal of -" the LabelCache, all current labels are collected and -" returned. -function! s:GetLabelCache(file) - if !filereadable(a:file) - return [] - endif - - if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file) - " Open file in temporary split window for label extraction. - let main_tex_file = LatexBox_GetMainTexFile() - silent execute '1sp +let\ b:main_tex_file=main_tex_file|let\ labels=s:ExtractLabels()|let\ inputs=s:ExtractInputs()|quit! ' . fnameescape(a:file) - let s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ] - endif - - " We need to create a copy of s:LabelCache[fid][1], otherwise all inputs' - " labels would be added to the current file's label cache upon each - " completion call, leading to duplicates/triplicates/etc. and decreased - " performance. - " Also, because we don't anything with the list besides matching copies, - " we can get away with a shallow copy for now. - let labels = copy(s:LabelCache[a:file][1]) - - for input in s:LabelCache[a:file][2] - let labels += s:GetLabelCache(input) - endfor - - return labels -endfunction -"}}} - -" Complete Labels {{{ -function! s:CompleteLabels(regex) - let labels = s:GetLabelCache(LatexBox_GetAuxFile()) - - let matches = filter( copy(labels), 'match(v:val[0], "' . a:regex . '") != -1' ) - if empty(matches) - " also try to match label and number - let regex_split = split(a:regex) - if len(regex_split) > 1 - let base = regex_split[0] - let number = escape(join(regex_split[1:], ' '), '.') - let matches = filter( copy(labels), 'match(v:val[0], "' . base . '") != -1 && match(v:val[1], "' . number . '") != -1' ) - endif - endif - if empty(matches) - " also try to match number - let matches = filter( copy(labels), 'match(v:val[1], "' . a:regex . '") != -1' ) - endif - - let suggestions = [] - for m in matches - let entry = {'word': m[0], 'menu': printf("%7s [p. %s]", '('.m[1].')', m[2])} - if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]') - " add trailing '}' - let entry = copy(entry) - let entry.abbr = entry.word - let entry.word = entry.word . '}' - endif - call add(suggestions, entry) - endfor - - return suggestions -endfunction -" }}} - -" Complete Inline Math Or Not {{{ -" Return 1, when cursor is in a math env: -" 1, there is a single $ in the current line on the left of cursor -" 2, there is an open-eq-env on/above the current line -" (open-eq-env : \(, \[, and \begin{eq-env} ) -" Return 0, when cursor is not in a math env -function! s:LatexBox_complete_inlineMath_or_not() - - " switch of inline math completion feature - if g:LatexBox_complete_inlineMath == 0 - return 0 - endif - - " env names that can't appear in an eq env - if !exists('s:LatexBox_doc_structure_patterns') - let s:LatexBox_doc_structure_patterns = '\%(' . '\\begin\s*{document}\|' . - \ '\\\%(chapter\|section\|subsection\|subsubsection\)\*\?\s*{' . '\)' - endif - - if !exists('s:LatexBox_eq_env_open_patterns') - let s:LatexBox_eq_env_open_patterns = ['\\(','\\\['] - endif - if !exists('s:LatexBox_eq_env_close_patterns') - let s:LatexBox_eq_env_close_patterns = ['\\)','\\\]'] - endif - - let notcomment = '\%(\%(\\\@= 0 - " find the end of dollar pair - let cursor_dollar_pair = matchend(line_start_2_cnum_saved, '\$[^$]\+\$', cursor_dollar_pair) - endwhile - " find single $ after cursor_dollar_pair - let cursor_single_dollar = matchend(line_start_2_cnum_saved, '\$', cursor_dollar_pair) - - " if single $ is found - if cursor_single_dollar >= 0 - " check whether $ is in \(...\), \[...\], or \begin{eq}...\end{eq} - - " check current line, - " search for LatexBox_eq_env_close_patterns: \[ and \( - let lnum = line('.') - for i in range(0, (len(s:LatexBox_eq_env_open_patterns)-1)) - call cursor(lnum_saved, cnum_saved) - let cnum_close = searchpos(''. s:LatexBox_eq_env_close_patterns[i].'', 'cbW', lnum_saved)[1] - let cnum_open = matchend(line_start_2_cnum_saved, s:LatexBox_eq_env_open_patterns[i], cnum_close) - if cnum_open >= 0 - let s:eq_dollar_parenthesis_bracket_empty = '' - let s:eq_pos = cursor_single_dollar - 1 - return 1 - end - endfor - - " check the lines above - " search for s:LatexBox_doc_structure_patterns, and end-of-math-env - let lnum -= 1 - while lnum > 0 - let line = getline(lnum) - if line =~ notcomment . '\(' . s:LatexBox_doc_structure_patterns . - \ '\|' . '\\end\s*{\(' . g:LatexBox_eq_env_patterns . '\)\*\?}\)' - " when s:LatexBox_doc_structure_patterns or g:LatexBox_eq_env_patterns - " are found first, complete math, leave with $ at both sides - let s:eq_dollar_parenthesis_bracket_empty = '$' - let s:eq_pos = cursor_single_dollar - break - elseif line =~ notcomment . '\\begin\s*{\(' . g:LatexBox_eq_env_patterns . '\)\*\?}' - " g:LatexBox_eq_env_patterns is found, complete math, remove $ - let s:eq_dollar_parenthesis_bracket_empty = '' - let s:eq_pos = cursor_single_dollar - 1 - break - endif - let lnum -= 1 - endwhile - - return 1 - else - " no $ is found, then search for \( or \[ in current line - " 1, whether there is \( - call cursor(lnum_saved, cnum_saved) - let cnum_parenthesis_close = searchpos('\\)', 'cbW', lnum_saved)[1] - let cnum_parenthesis_open = matchend(line_start_2_cnum_saved, '\\(', cnum_parenthesis_close) - if cnum_parenthesis_open >= 0 - let s:eq_dollar_parenthesis_bracket_empty = '\)' - let s:eq_pos = cnum_parenthesis_open - return 1 - end - - " 2, whether there is \[ - call cursor(lnum_saved, cnum_saved) - let cnum_bracket_close = searchpos('\\\]', 'cbW', lnum_saved)[1] - let cnum_bracket_open = matchend(line_start_2_cnum_saved, '\\\[', cnum_bracket_close) - if cnum_bracket_open >= 0 - let s:eq_dollar_parenthesis_bracket_empty = '\]' - let s:eq_pos = cnum_bracket_open - return 1 - end - - " not inline math completion - return 0 - endif - -endfunction -" }}} - -" Complete inline euqation{{{ -function! s:LatexBox_inlineMath_completion(regex, ...) - - if a:0 == 0 - let file = LatexBox_GetMainTexFile() - else - let file = a:1 - endif - - if empty(glob(file, 1)) - return '' - endif - - if empty(s:eq_dollar_parenthesis_bracket_empty) - let inline_pattern1 = '\$\s*\(' . escape(substitute(a:regex[1:], '^\s\+', '', ""), '\.*^') . '[^$]*\)\s*\$' - let inline_pattern2 = '\\(\s*\(' . escape(substitute(a:regex[1:], '^\s\+', '', ""), '\.*^') . '.*\)\s*\\)' - else - let inline_pattern1 = '\$\s*\(' . escape(substitute(a:regex, '^\s\+', '', ""), '\.*^') . '[^$]*\)\s*\$' - let inline_pattern2 = '\\(\s*\(' . escape(substitute(a:regex, '^\s\+', '', ""), '\.*^') . '.*\)\s*\\)' - endif - - - let suggestions = [] - let line_num = 0 - for line in readfile(file) - let line_num = line_num + 1 - - let suggestions += s:LatexBox_inlineMath_mathlist(line,inline_pattern1 , line_num) + s:LatexBox_inlineMath_mathlist( line,inline_pattern2, line_num) - - " search for included files - let included_file = matchstr(line, '^\\@input{\zs[^}]*\ze}') - if included_file != '' - let included_file = LatexBox_kpsewhich(included_file) - call extend(suggestions, s:LatexBox_inlineMath_completion(a:regex, included_file)) - endif - endfor - - return suggestions -endfunction -" }}} - -" Search for inline maths {{{ -" search for $ ... $ and \( ... \) in each line -function! s:LatexBox_inlineMath_mathlist(line,inline_pattern, line_num) - let col_start = 0 - let suggestions = [] - while 1 - let matches = matchlist(a:line, a:inline_pattern, col_start) - if !empty(matches) - - " show line number of inline math - let entry = {'word': matches[1], 'menu': '[' . a:line_num . ']'} - - if s:eq_dollar_parenthesis_bracket_empty != '' - let entry = copy(entry) - let entry.abbr = entry.word - let entry.word = entry.word . s:eq_dollar_parenthesis_bracket_empty - endif - call add(suggestions, entry) - - " update col_start - let col_start = matchend(a:line, a:inline_pattern, col_start) - else - break - endif - endwhile - - return suggestions -endfunction -" }}} - -" Close Current Environment {{{ -function! s:CloseCurEnv() - " first, try with \left/\right pairs - let [lnum, cnum] = searchpairpos('\C\\left\>', '', '\C\\right\>', 'bnW', 'LatexBox_InComment()') - if lnum - let line = strpart(getline(lnum), cnum - 1) - let bracket = matchstr(line, '^\\left\zs\((\|\[\|\\{\||\|\.\)\ze') - for [open, close] in [['(', ')'], ['\[', '\]'], ['\\{', '\\}'], ['|', '|'], ['\.', '|']] - let bracket = substitute(bracket, open, close, 'g') - endfor - return '\right' . bracket - endif - - " second, try with environments - let env = LatexBox_GetCurrentEnvironment() - if env == '\[' - return '\]' - elseif env == '\(' - return '\)' - elseif env != '' - return '\end{' . env . '}' - endif - return '' -endfunction -" }}} - -" Wrap Selection {{{ -function! s:WrapSelection(wrapper) - keepjumps normal! `>a} - execute 'keepjumps normal! `o\end{' . env . '}' - execute 'keepjumps normal! ` - normal! gvgq - endif - else - execute 'keepjumps normal! `>a\end{' . env . '}' - execute 'keepjumps normal! `= 0 - if a:0 == 0 - silent execute winnr . 'wincmd w' - else - " Supplying an argument to this function causes toggling instead - " of jumping to the labels window - if g:LatexBox_split_resize - silent exe "set columns-=" . g:LatexBox_split_width - endif - silent execute 'bwipeout' . bufnr('LaTeX Labels') - endif - return - endif - - " Get label suggestions - let regexp = input('filter labels with regexp: ', '') - let labels = s:CompleteLabels(regexp) - - let calling_buf = bufnr('%') - - " Create labels window and set local settings - if g:LatexBox_split_resize - silent exe "set columns+=" . g:LatexBox_split_width - endif - silent exe g:LatexBox_split_side g:LatexBox_split_width . 'vnew LaTeX\ Labels' - let b:toc = [] - let b:toc_numbers = 1 - let b:calling_win = bufwinnr(calling_buf) - setlocal filetype=latextoc - - " Add label entries and jump to the closest section - for entry in labels - let number = matchstr(entry['menu'], '^\s*(\zs[^)]\+\ze)') - let page = matchstr(entry['menu'], '^[^)]*)\s*\[\zs[^]]\+\ze\]') - let e = {'file': bufname(calling_buf), - \ 'level': 'label', - \ 'number': number, - \ 'text': entry['abbr'], - \ 'page': page} - call add(b:toc, e) - if b:toc_numbers - call append('$', e['number'] . "\t" . e['text']) - else - call append('$', e['text']) - endif - endfor - if !g:LatexBox_toc_hidehelp - call append('$', "") - call append('$', "/q: close") - call append('$', ": jump") - call append('$', ": jump and close") - call append('$', "s: hide numbering") - endif - 0delete _ - - " Lock buffer - setlocal nomodifiable -endfunction -" }}} - -" Change Environment {{{ -function! s:ChangeEnvPrompt() - - let [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1) - - let new_env = input('change ' . env . ' for: ', '', 'customlist,' . s:SIDWrap('GetEnvironmentList')) - if empty(new_env) - return - endif - - if new_env == '\[' || new_env == '[' - let begin = '\[' - let end = '\]' - elseif new_env == '\(' || new_env == '(' - let begin = '\(' - let end = '\)' - else - let l:begin = '\begin{' . new_env . '}' - let l:end = '\end{' . new_env . '}' - endif - - if env == '\[' || env == '\(' - let line = getline(lnum2) - let line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + 1) - call setline(lnum2, line) - - let line = getline(lnum) - let line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + 1) - call setline(lnum, line) - else - let line = getline(lnum2) - let line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + len(env) + 5) - call setline(lnum2, line) - - let line = getline(lnum) - let line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + len(env) + 7) - call setline(lnum, line) - endif -endfunction - -function! s:GetEnvironmentList(lead, cmdline, pos) - let suggestions = [] - for entry in g:LatexBox_completion_environments - let env = entry.word - if env =~ '^' . a:lead - call add(suggestions, env) - endif - endfor - return suggestions -endfunction - -function! s:LatexToggleStarEnv() - let [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1) - - if env == '\(' - return - elseif env == '\[' - let begin = '\begin{equation}' - let end = '\end{equation}' - elseif env[-1:] == '*' - let begin = '\begin{' . env[:-2] . '}' - let end = '\end{' . env[:-2] . '}' - else - let begin = '\begin{' . env . '*}' - let end = '\end{' . env . '*}' - endif - - if env == '\[' - let line = getline(lnum2) - let line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + 1) - call setline(lnum2, line) - - let line = getline(lnum) - let line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + 1) - call setline(lnum, line) - else - let line = getline(lnum2) - let line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + len(env) + 5) - call setline(lnum2, line) - - let line = getline(lnum) - let line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + len(env) + 7) - call setline(lnum, line) - endif -endfunction -" }}} - -" Next Charaters Match {{{ -function! s:NextCharsMatch(regex) - let rest_of_line = strpart(getline('.'), col('.') - 1) - return rest_of_line =~ a:regex -endfunction -" }}} - -" Mappings {{{ -inoremap LatexCloseCurEnv =CloseCurEnv() -vnoremap LatexWrapSelection :call WrapSelection('')i -vnoremap LatexEnvWrapSelection :call PromptEnvWrapSelection() -vnoremap LatexEnvWrapFmtSelection :call PromptEnvWrapSelection(1) -nnoremap LatexChangeEnv :call ChangeEnvPrompt() -nnoremap LatexToggleStarEnv :call LatexToggleStarEnv() -" }}} - -" Commands {{{ -command! LatexLabels call PromptLabelList() -" }}} - -" vim:fdm=marker:ff=unix:noet:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/ftplugin/latex-box/findmain.vim b/vim/bundle/LaTeX-Box/ftplugin/latex-box/findmain.vim deleted file mode 100644 index b9871a6..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latex-box/findmain.vim +++ /dev/null @@ -1,62 +0,0 @@ -" LatexBox_GetMainFileName: gets the name of the main file being compiled. {{{ -" Description: returns the full path name of the main file. -" This function checks for the existence of a .latexmain file -" which might point to the location of a "main" latex file. -" If .latexmain exists, then return the full path name of the -" file being pointed to by it. -" -" Otherwise, return the full path name of the current buffer. -" -" You can supply an optional "modifier" argument to the -" function, which will optionally modify the file name before -" returning. -" NOTE: From version 1.6 onwards, this function always trims -" away the .latexmain part of the file name before applying the -" modifier argument. -" NOTE: This function is copied from the Latex-Suite project! -function! LatexBox_GetMainFileName(...) - if a:0 > 0 - let modifier = a:1 - else - let modifier = ':p' - endif - - let s:origdir = fnameescape(getcwd()) - - let dirmodifier = '%:p:h' - let dirLast = fnameescape(expand(dirmodifier)) - exe 'cd '.dirLast - - " move up the directory tree until we find a .latexmain file. - " TODO: Should we be doing this recursion by default, or should there be a - " setting? - while glob('*.latexmain',1) == '' - let dirmodifier = dirmodifier.':h' - let dirNew = fnameescape(expand(dirmodifier)) - " break from the loop if we cannot go up any further. - if dirNew == dirLast - break - endif - let dirLast = dirNew - exe 'cd '.dirLast - endwhile - - let lheadfile = glob('*.latexmain',1) - if lheadfile != '' - " Remove the trailing .latexmain part of the filename... We never want - " that. - let lheadfile = fnamemodify(substitute(lheadfile, '\.latexmain$', '', ''), modifier) - else - " If we cannot find any main file, just modify the filename of the - " current buffer. - let lheadfile = expand('%'.modifier) - endif - - exe 'cd '.s:origdir - - " NOTE: The caller of this function needs to escape the file name with - " fnameescape() . The reason its not done here is that escaping is not - " safe if this file is to be used as part of an external command on - " certain platforms. - return lheadfile -endfunction diff --git a/vim/bundle/LaTeX-Box/ftplugin/latex-box/folding.vim b/vim/bundle/LaTeX-Box/ftplugin/latex-box/folding.vim deleted file mode 100644 index aedca8f..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latex-box/folding.vim +++ /dev/null @@ -1,378 +0,0 @@ -" Folding support for LaTeX - -" -" Options -" g:LatexBox_Folding - Turn on/off folding -" g:LatexBox_fold_text - Turn on/off LatexBox fold text function -" g:LatexBox_fold_preamble - Turn on/off folding of preamble -" g:LatexBox_fold_parts - Define parts (eq. appendix, frontmatter) to fold -" g:LatexBox_fold_sections - Define section levels to fold -" g:LatexBox_fold_envs - Turn on/off folding of environments -" g:LatexBox_fold_toc - Turn on/off folding of TOC -" g:LatexBox_fold_toc_levels - Set max TOC fold level -" -" {{{1 Initialize options to default values. -if !exists('g:LatexBox_Folding') - let g:LatexBox_Folding=0 -endif -if !exists('g:LatexBox_fold_text') - let g:LatexBox_fold_text=1 -endif -if !exists('g:LatexBox_fold_preamble') - let g:LatexBox_fold_preamble=1 -endif -if !exists('g:LatexBox_fold_envs') - let g:LatexBox_fold_envs=1 -endif -if !exists('g:LatexBox_fold_envs_force') - let g:LatexBox_fold_envs_force = [] -endif -if !exists('g:LatexBox_fold_parts') - let g:LatexBox_fold_parts=[ - \ "appendix", - \ "frontmatter", - \ "mainmatter", - \ "backmatter" - \ ] -endif -if !exists('g:LatexBox_fold_sections') - let g:LatexBox_fold_sections=[ - \ "part", - \ "chapter", - \ "section", - \ "subsection", - \ "subsubsection" - \ ] -endif -if !exists('g:LatexBox_fold_toc') - let g:LatexBox_fold_toc=0 -endif -if !exists('g:LatexBox_fold_toc_levels') - let g:LatexBox_fold_toc_levels=1 -endif -if !exists('g:LatexBox_fold_automatic') - let g:LatexBox_fold_automatic=1 -endif -" }}}1 - -if g:LatexBox_Folding == 0 - finish -endif - -" {{{1 Set folding options for vim -setl foldexpr=LatexBox_FoldLevel(v:lnum) -if g:LatexBox_fold_text == 1 - setl foldtext=LatexBox_FoldText() -endif -if g:LatexBox_fold_automatic == 1 - setl foldmethod=expr - - " - " The foldexpr function returns "=" for most lines, which means it can become - " slow for large files. The following is a hack that is based on this reply to - " a discussion on the Vim Developer list: - " http://permalink.gmane.org/gmane.editors.vim.devel/14100 - " - augroup FastFold - autocmd! - autocmd InsertEnter *.tex if !&diff | setlocal foldmethod=manual | endif - autocmd InsertLeave *.tex if !&diff | setlocal foldmethod=expr | endif - augroup end -else - setl foldmethod=manual -endif - -function! LatexBox_FoldOnDemand() - setl foldmethod=expr - normal! zx - setl foldmethod=manual -endfunction - -command! LatexFold call LatexBox_FoldOnDemand() - -" {{{1 LatexBox_FoldLevel help functions - -" This function parses the tex file to find the sections that are to be folded -" and their levels, and then predefines the patterns for optimized folding. -function! s:FoldSectionLevels() - " Initialize - let level = 1 - let foldsections = [] - - " If we use two or more of the *matter commands, we need one more foldlevel - let nparts = 0 - for part in g:LatexBox_fold_parts - let i = 1 - while i < line("$") - if getline(i) =~ '^\s*\\' . part . '\>' - let nparts += 1 - break - endif - let i += 1 - endwhile - if nparts > 1 - let level = 2 - break - endif - endfor - - " Combine sections and levels, but ignore unused section commands: If we - " don't use the part command, then chapter should have the highest - " level. If we don't use the chapter command, then section should be the - " highest level. And so on. - let ignore = 1 - for part in g:LatexBox_fold_sections - " For each part, check if it is used in the file. We start adding the - " part patterns to the fold sections array whenever we find one. - let partpattern = '^\s*\(\\\|% Fake\)' . part . '\>' - if ignore - let i = 1 - while i < line("$") - if getline(i) =~# partpattern - call insert(foldsections, [partpattern, level]) - let level += 1 - let ignore = 0 - break - endif - let i += 1 - endwhile - else - call insert(foldsections, [partpattern, level]) - let level += 1 - endif - endfor - - return foldsections -endfunction - -" {{{1 LatexBox_FoldLevel - -" Parse file to dynamically set the sectioning fold levels -let b:LatexBox_FoldSections = s:FoldSectionLevels() - -" Optimize by predefine common patterns -let s:notbslash = '\%(\\\@1" - elseif line =~# s:notcomment . s:notbslash . '\s*\\begin\s*{\s*document\s*}' - return "0" - endif - endif - - " Fold parts (\frontmatter, \mainmatter, \backmatter, and \appendix) - if line =~# s:foldparts - return ">1" - endif - - " Fold chapters and sections - for [part, level] in b:LatexBox_FoldSections - if line =~# part - return ">" . level - endif - endfor - - " Never fold \end{document} - if line =~# '^\s*\\end{document}' - return 0 - endif - - " Fold environments - if line =~# s:envbeginpattern && line =~# s:envendpattern - " If the begin and end pattern are on the same line , do not fold - return "=" - else - if line =~# s:envbeginpattern - if g:LatexBox_fold_envs == 1 - return "a1" - else - let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}') - if index(g:LatexBox_fold_envs_force, env) >= 0 - return "a1" - else - return "=" - endif - endif - elseif line =~# s:envendpattern - if g:LatexBox_fold_envs == 1 - return "s1" - else - let env = matchstr(line,'\\end\*\?{\zs\w*\*\?\ze}') - if index(g:LatexBox_fold_envs_force, env) >= 0 - return "s1" - else - return "=" - endif - endif - endif - endif - - " Return foldlevel of previous line - return "=" -endfunction - -" {{{1 LatexBox_FoldText help functions -function! s:LabelEnv() - let i = v:foldend - while i >= v:foldstart - if getline(i) =~ '^\s*\\label' - return matchstr(getline(i), '^\s*\\label{\zs.*\ze}') - end - let i -= 1 - endwhile - return "" -endfunction - -function! s:CaptionEnv() - let i = v:foldend - while i >= v:foldstart - if getline(i) =~ '^\s*\\caption' - return matchstr(getline(i), '^\s*\\caption\(\[.*\]\)\?{\zs.\+') - end - let i -= 1 - endwhile - return "" -endfunction - -function! s:CaptionTable() - let i = v:foldstart - while i <= v:foldend - if getline(i) =~ '^\s*\\caption' - return matchstr(getline(i), '^\s*\\caption\(\[.*\]\)\?{\zs.\+') - end - let i += 1 - endwhile - return "" -endfunction - -function! s:CaptionFrame(line) - " Test simple variants first - let caption1 = matchstr(a:line,'\\begin\*\?{.*}{\zs.\+\ze}') - let caption2 = matchstr(a:line,'\\begin\*\?{.*}{\zs.\+') - - if len(caption1) > 0 - return caption1 - elseif len(caption2) > 0 - return caption2 - else - let i = v:foldstart - while i <= v:foldend - if getline(i) =~ '^\s*\\frametitle' - return matchstr(getline(i), - \ '^\s*\\frametitle\(\[.*\]\)\?{\zs.\+') - end - let i += 1 - endwhile - - return "" - endif -endfunction - -function! LatexBox_FoldText_title() - let line = getline(v:foldstart) - let title = 'Not defined' - - " Preamble - if line =~ '\s*\\documentclass' - return "Preamble" - endif - - " Parts, sections and fakesections - let sections = '\(\(sub\)*\(section\|paragraph\)\|part\|chapter\)' - let secpat1 = '^\s*\\' . sections . '\*\?\s*{' - let secpat2 = '^\s*\\' . sections . '\*\?\s*\[' - if line =~ '\\frontmatter' - let title = "Frontmatter" - elseif line =~ '\\mainmatter' - let title = "Mainmatter" - elseif line =~ '\\backmatter' - let title = "Backmatter" - elseif line =~ '\\appendix' - let title = "Appendix" - elseif line =~ secpat1 . '.*}' - let title = matchstr(line, secpat1 . '\zs.\{-}\ze}') - elseif line =~ secpat1 - let title = matchstr(line, secpat1 . '\zs.*') - elseif line =~ secpat2 . '.*\]' - let title = matchstr(line, secpat2 . '\zs.\{-}\ze\]') - elseif line =~ secpat2 - let title = matchstr(line, secpat2 . '\zs.*') - elseif line =~ 'Fake' . sections . ':' - let title = matchstr(line,'Fake' . sections . ':\s*\zs.*') - elseif line =~ 'Fake' . sections - let title = matchstr(line, 'Fake' . sections) - endif - - " Environments - if line =~ '\\begin' - " Capture environment name - let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}') - - " Set caption based on type of environment - if env == 'frame' - let label = '' - let caption = s:CaptionFrame(line) - elseif env == 'table' - let label = s:LabelEnv() - let caption = s:CaptionTable() - else - let label = s:LabelEnv() - let caption = s:CaptionEnv() - endif - - " If no caption found, check for a caption comment - if caption == '' - let caption = matchstr(line,'\\begin\*\?{.*}\s*%\s*\zs.*') - endif - - " Create title based on caption and label - if caption . label == '' - let title = env - elseif label == '' - let title = printf('%-12s%s', env . ':', - \ substitute(caption, '}\s*$', '','')) - elseif caption == '' - let title = printf('%-12s%56s', env, '(' . label . ')') - else - let title = printf('%-12s%-30s %21s', env . ':', - \ strpart(substitute(caption, '}\s*$', '',''),0,34), - \ '(' . label . ')') - endif - endif - - return title -endfunction - -" {{{1 LatexBox_FoldText -function! LatexBox_FoldText() - let nlines = v:foldend - v:foldstart + 1 - let title = strpart(LatexBox_FoldText_title(), 0, 68) - let level = '' - - " Fold level - let level = strpart(repeat('-', v:foldlevel-1) . '*',0,3) - if v:foldlevel > 3 - let level = strpart(level, 1) . v:foldlevel - endif - let level = printf('%-3s', level) - - return printf('%-3s %-68s #%5d', level, title, nlines) -endfunction - -" {{{1 Footer -" vim:fdm=marker:ff=unix:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/ftplugin/latex-box/latexmk.vim b/vim/bundle/LaTeX-Box/ftplugin/latex-box/latexmk.vim deleted file mode 100644 index 7cd8ac7..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latex-box/latexmk.vim +++ /dev/null @@ -1,554 +0,0 @@ -" LaTeX Box latexmk functions - -" Options and variables {{{ - -if !exists('g:LatexBox_latexmk_options') - let g:LatexBox_latexmk_options = '' -endif -if !exists('g:LatexBox_latexmk_env') - let g:LatexBox_latexmk_env = '' -endif -if !exists('g:LatexBox_latexmk_async') - let g:LatexBox_latexmk_async = 0 -endif -if !exists('g:LatexBox_latexmk_preview_continuously') - let g:LatexBox_latexmk_preview_continuously = 0 -endif -if !exists('g:LatexBox_output_type') - let g:LatexBox_output_type = 'pdf' -endif -if !exists('g:LatexBox_autojump') - let g:LatexBox_autojump = 0 -endif -if ! exists('g:LatexBox_quickfix') - let g:LatexBox_quickfix = 1 -endif -if ! exists('g:LatexBox_personal_latexmkrc') - let g:LatexBox_personal_latexmkrc = 0 -endif - -" }}} - -" Process ID management (used for asynchronous and continuous mode) {{{ - -" A dictionary of latexmk PID's (basename: pid) -if !exists('g:latexmk_running_pids') - let g:latexmk_running_pids = {} -endif - -" Set PID {{{ -function! s:LatexmkSetPID(basename, pid) - let g:latexmk_running_pids[a:basename] = a:pid -endfunction -" }}} - -" kill_latexmk_process {{{ -function! s:kill_latexmk_process(pid) - if has('win32') - silent execute '!taskkill /PID ' . a:pid . ' /T /F' - else - if g:LatexBox_latexmk_async - " vim-server mode - let pids = [] - let tmpfile = tempname() - silent execute '!ps x -o pgid,pid > ' . tmpfile - for line in readfile(tmpfile) - let new_pid = matchstr(line, '^\s*' . a:pid . '\s\+\zs\d\+\ze') - if !empty(new_pid) - call add(pids, new_pid) - endif - endfor - call delete(tmpfile) - if !empty(pids) - silent execute '!kill ' . join(pids) - endif - else - " single background process - silent execute '!kill ' . a:pid - endif - endif - if !has('gui_running') - redraw! - endif -endfunction -" }}} - -" kill_all_latexmk_processes {{{ -function! s:kill_all_latexmk_processes() - for pid in values(g:latexmk_running_pids) - call s:kill_latexmk_process(pid) - endfor -endfunction -" }}} - -" }}} - -" Setup for vim-server {{{ -function! s:SIDWrap(func) - if !exists('s:SID') - let s:SID = matchstr(expand(''), '\zs\d\+_\ze.*$') - endif - return s:SID . a:func -endfunction - -function! s:LatexmkCallback(basename, status) - " Only remove the pid if not in continuous mode - if !g:LatexBox_latexmk_preview_continuously - call remove(g:latexmk_running_pids, a:basename) - endif - call LatexBox_LatexErrors(a:status, a:basename) -endfunction - -function! s:setup_vim_server() - if !exists('g:vim_program') - - " attempt autodetection of vim executable - let g:vim_program = '' - if has('win32') - " Just drop through to the default for windows - else - if match(&shell, '\(bash\|zsh\)$') >= 0 - let ppid = '$PPID' - else - let ppid = '$$' - endif - - let tmpfile = tempname() - silent execute '!ps -o command= -p ' . ppid . ' > ' . tmpfile - for line in readfile(tmpfile) - let line = matchstr(line, '^\S\+\>') - if !empty(line) && executable(line) - let g:vim_program = line . ' -g' - break - endif - endfor - call delete(tmpfile) - endif - - if empty(g:vim_program) - if has('gui_macvim') - let g:vim_program - \ = '/Applications/MacVim.app/Contents/MacOS/Vim -g' - else - let g:vim_program = v:progname - endif - endif - endif -endfunction -" }}} - -" Latexmk {{{ - -function! LatexBox_Latexmk(force) - " Define often used names - let basepath = LatexBox_GetBuildBasename(1) - let basename = fnamemodify(basepath, ':t') - let texroot = shellescape(LatexBox_GetTexRoot()) - let mainfile = fnameescape(fnamemodify(LatexBox_GetMainTexFile(), ':t')) - - " Check if latexmk is installed - if !executable('latexmk') - echomsg "Error: LaTeX-Box relies on latexmk for compilation, but it" . - \ " is not installed!" - return - endif - - " Check if already running - if has_key(g:latexmk_running_pids, basepath) - echomsg "latexmk is already running for `" . basename . "'" - return - endif - - " Set wrap width in log file - let max_print_line = 2000 - if has('win32') - let env = 'set max_print_line=' . max_print_line . ' & ' - elseif match(&shell, '/tcsh$') >= 0 - let env = 'setenv max_print_line ' . max_print_line . '; ' - else - if fnamemodify(&shell, ':t') ==# 'fish' - let env = 'set max_print_line ' . max_print_line . '; and ' - else - let env = 'max_print_line=' . max_print_line - endif - endif - - " Set environment options - let env .= ' ' . g:LatexBox_latexmk_env . ' ' - - " Set latexmk command with options - if has('win32') - " Make sure to switch drive as well as directory - let cmd = 'cd /D ' . texroot . ' && ' - else - if fnamemodify(&shell, ':t') ==# 'fish' - let cmd = 'cd ' . texroot . '; and ' - else - let cmd = 'cd ' . texroot . ' && ' - endif - endif - let cmd .= env . ' latexmk' - if ! g:LatexBox_personal_latexmkrc - let cmd .= ' -' . g:LatexBox_output_type - endif - let cmd .= ' -quiet ' - let cmd .= g:LatexBox_latexmk_options - if a:force - let cmd .= ' -g' - endif - if g:LatexBox_latexmk_preview_continuously - let cmd .= ' -pvc' - endif - let cmd .= ' -e ' . shellescape('$pdflatex =~ s/ / -file-line-error /') - let cmd .= ' -e ' . shellescape('$latex =~ s/ / -file-line-error /') - if g:LatexBox_latexmk_preview_continuously - let cmd .= ' -e ' . shellescape('$success_cmd = $ENV{SUCCESSCMD}') - let cmd .= ' -e ' . shellescape('$failure_cmd = $ENV{FAILURECMD}') - endif - let cmd .= ' ' . mainfile - - " Redirect output to null - if has('win32') - let cmd .= ' >nul' - else - if fnamemodify(&shell, ':t') ==# 'fish' - let cmd .= ' >/dev/null ^/dev/null' - else - let cmd .= ' &>/dev/null' - endif - endif - - if g:LatexBox_latexmk_async - " Check if VIM server exists - if empty(v:servername) - echoerr "cannot run latexmk in background without a VIM server" - echoerr "set g:LatexBox_latexmk_async to 0 to change compiling mode" - return - endif - - " Start vim server if necessary - call s:setup_vim_server() - - let setpidfunc = s:SIDWrap('LatexmkSetPID') - let callbackfunc = s:SIDWrap('LatexmkCallback') - if has('win32') - let vim_program = substitute(g:vim_program, - \ 'gvim\.exe$', 'vim.exe', '') - - " Define callback to set the pid - let callsetpid = setpidfunc . '(''' . basepath . ''', %CMDPID%)' - let vimsetpid = vim_program . ' --servername ' . v:servername - \ . ' --remote-expr ' . shellescape(callsetpid) - - " Define callback after latexmk is finished - let callback = callbackfunc . '(''' . basepath . ''', %LATEXERR%)' - let vimcmd = vim_program . ' --servername ' . v:servername - \ . ' --remote-expr ' . shellescape(callback) - let scallback = callbackfunc . '(''' . basepath . ''', 0)' - let svimcmd = vim_program . ' --servername ' . v:servername - \ . ' --remote-expr ' . shellescape(scallback) - let fcallback = callbackfunc . '(''' . basepath . ''', 1)' - let fvimcmd = vim_program . ' --servername ' . v:servername - \ . ' --remote-expr ' . shellescape(fcallback) - - let asyncbat = tempname() . '.bat' - if g:LatexBox_latexmk_preview_continuously - call writefile(['setlocal', - \ 'set T=%TEMP%\sthUnique.tmp', - \ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") ' - \ . 'get ParentProcessId /value | find "ParentProcessId" >%T%', - \ 'set /P A=<%T%', - \ 'set CMDPID=%A:~16% & del %T%', - \ vimsetpid, - \ 'set SUCCESSCMD='.svimcmd, - \ 'set FAILURECMD='.fvimcmd, - \ cmd, - \ 'endlocal'], asyncbat) - else - call writefile(['setlocal', - \ 'set T=%TEMP%\sthUnique.tmp', - \ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") ' - \ . 'get ParentProcessId /value | find "ParentProcessId" >%T%', - \ 'set /P A=<%T%', - \ 'set CMDPID=%A:~16% & del %T%', - \ vimsetpid, - \ cmd, - \ 'set LATEXERR=%ERRORLEVEL%', - \ vimcmd, - \ 'endlocal'], asyncbat) - endif - - " Define command - let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat - else - " Define callback to set the pid - let callsetpid = shellescape(setpidfunc).'"(\"'.basepath.'\",$$)"' - let vimsetpid = g:vim_program . ' --servername ' . v:servername - \ . ' --remote-expr ' . callsetpid - - " Define callback after latexmk is finished - let callback = shellescape(callbackfunc).'"(\"'.basepath.'\",$?)"' - let vimcmd = g:vim_program . ' --servername ' . v:servername - \ . ' --remote-expr ' . callback - let scallback = shellescape(callbackfunc).'"(\"'.basepath.'\",0)"' - let svimcmd = g:vim_program . ' --servername ' . v:servername - \ . ' --remote-expr ' . scallback - let fcallback = shellescape(callbackfunc).'"(\"'.basepath.'\",1)"' - let fvimcmd = g:vim_program . ' --servername ' . v:servername - \ . ' --remote-expr ' . fcallback - - " Define command - " Note: Here we escape '%' because it may be given as a user option - " through g:LatexBox_latexmk_options, for instance with - " g:Latex..._options = "-pdflatex='pdflatex -synctex=1 \%O \%S'" - if g:LatexBox_latexmk_preview_continuously - let cmd = vimsetpid . ' ; ' - \ . 'export SUCCESSCMD=' . shellescape(svimcmd) . ' ' - \ . ' FAILURECMD=' . shellescape(fvimcmd) . ' ; ' - \ . escape(cmd, '%') - else - let cmd = vimsetpid . ' ; ' . escape(cmd, '%') . ' ; ' . vimcmd - endif - let cmd = '! (' . cmd . ') >/dev/null &' - endif - - if g:LatexBox_latexmk_preview_continuously - echo 'Compiling to ' . g:LatexBox_output_type - \ . ' with continuous preview.' - else - echo 'Compiling to ' . g:LatexBox_output_type . ' ...' - endif - silent execute cmd - else - if g:LatexBox_latexmk_preview_continuously - if has('win32') - let cmd = '!start /b cmd /s /c "' . cmd . '"' - else - let cmd = '!' . cmd . ' &' - endif - echo 'Compiling to ' . g:LatexBox_output_type . ' ...' - silent execute cmd - - " Save PID in order to be able to kill the process when wanted. - if has('win32') - let tmpfile = tempname() - let pidcmd = 'cmd /c "wmic process where ' - \ . '(CommandLine LIKE "latexmk\%'.mainfile.'\%") ' - \ . 'get ProcessId /value | find "ProcessId" ' - \ . '>'.tmpfile.' "' - silent execute '! ' . pidcmd - let pids = readfile(tmpfile) - let pid = strpart(pids[0], 10) - let g:latexmk_running_pids[basepath] = pid - else - let pid = substitute(system('pgrep -f "perl.*' - \ . mainfile . '" | head -n 1'),'\D','','') - let g:latexmk_running_pids[basepath] = pid - endif - else - " Execute command and check for errors - echo 'Compiling to ' . g:LatexBox_output_type . ' ... (async off!)' - call system(cmd) - call LatexBox_LatexErrors(v:shell_error) - endif - endif - - " Redraw screen if necessary - if !has("gui_running") - redraw! - endif -endfunction -" }}} - -" LatexmkClean {{{ -function! LatexBox_LatexmkClean(cleanall) - " Check if latexmk is installed - if !executable('latexmk') - echomsg "Error: LaTeX-Box relies on latexmk for compilation, but it" . - \ " is not installed!" - return - endif - - let basename = LatexBox_GetBuildBasename(1) - - if has_key(g:latexmk_running_pids, basename) - echomsg "don't clean when latexmk is running" - return - endif - - if has('win32') - let cmd = 'cd /D ' . shellescape(LatexBox_GetTexRoot()) . ' & ' - else - let cmd = 'cd ' . shellescape(LatexBox_GetTexRoot()) . ';' - endif - if a:cleanall - let cmd .= 'latexmk -C ' - else - let cmd .= 'latexmk -c ' - endif - let cmd .= shellescape(LatexBox_GetMainTexFile()) - if has('win32') - let cmd .= ' >nul' - else - let cmd .= ' >&/dev/null' - endif - - call system(cmd) - if !has('gui_running') - redraw! - endif - - echomsg "latexmk clean finished" -endfunction -" }}} - -" LatexErrors {{{ -function! LatexBox_LatexErrors(status, ...) - if a:0 >= 1 - let log = a:1 . '.log' - else - let log = LatexBox_GetLogFile() - endif - - cclose - - " set cwd to expand error file correctly - let l:cwd = fnamemodify(getcwd(), ':p') - execute 'lcd ' . fnameescape(LatexBox_GetTexRoot()) - try - if g:LatexBox_autojump - execute 'cfile ' . fnameescape(log) - else - execute 'cgetfile ' . fnameescape(log) - endif - finally - " restore cwd - execute 'lcd ' . fnameescape(l:cwd) - endtry - - " Always open window if started by LatexErrors command - if a:status < 0 - botright copen - else - " Only open window when an error/warning is detected - if g:LatexBox_quickfix >= 3 - \ ? s:log_contains_error(log) - \ : g:LatexBox_quickfix > 0 - belowright cw - if g:LatexBox_quickfix == 2 || g:LatexBox_quickfix == 4 - wincmd p - endif - endif - redraw - - " Write status message to screen - if a:status > 0 || len(getqflist())>1 - if s:log_contains_error(log) - let l:status_msg = ' ... failed!' - else - let l:status_msg = ' ... there were warnings!' - endif - else - let l:status_msg = ' ... success!' - endif - echomsg 'Compiling to ' . g:LatexBox_output_type . l:status_msg - endif -endfunction - -" Redefine uniq() for compatibility with older Vim versions (< 7.4.218) -function! s:uniq(list) - if exists('*uniq') - return uniq(a:list) - elseif len(a:list) <= 1 - return a:list - endif - - let last_element = get(a:list,0) - let uniq_list = [last_element] - - for i in range(1, len(a:list)-1) - let next_element = get(a:list, i) - if last_element == next_element - continue - endif - let last_element = next_element - call add(uniq_list, next_element) - endfor - return uniq_list -endfunction - -function! s:log_contains_error(file) - let lines = readfile(a:file) - let lines = filter(lines, 'v:val =~ ''^.*:\d\+: ''') - let lines = s:uniq(map(lines, 'matchstr(v:val, ''^.*\ze:\d\+:'')')) - let lines = filter(lines, 'filereadable(fnameescape(v:val))') - return len(lines) > 0 -endfunction -" }}} - -" LatexmkStatus {{{ -function! LatexBox_LatexmkStatus(detailed) - if a:detailed - if empty(g:latexmk_running_pids) - echo "latexmk is not running" - else - let plist = "" - for [basename, pid] in items(g:latexmk_running_pids) - if !empty(plist) - let plist .= '; ' - endif - let plist .= fnamemodify(basename, ':t') . ':' . pid - endfor - echo "latexmk is running (" . plist . ")" - endif - else - let basename = LatexBox_GetBuildBasename(1) - if has_key(g:latexmk_running_pids, basename) - echo "latexmk is running" - else - echo "latexmk is not running" - endif - endif -endfunction -" }}} - -" LatexmkStop {{{ -function! LatexBox_LatexmkStop(silent) - if empty(g:latexmk_running_pids) - if !a:silent - let basepath = LatexBox_GetBuildBasename(1) - let basename = fnamemodify(basepath, ':t') - echoerr "latexmk is not running for `" . basename . "'" - endif - else - let basepath = LatexBox_GetBuildBasename(1) - let basename = fnamemodify(basepath, ':t') - if has_key(g:latexmk_running_pids, basepath) - call s:kill_latexmk_process(g:latexmk_running_pids[basepath]) - call remove(g:latexmk_running_pids, basepath) - if !a:silent - echomsg "latexmk stopped for `" . basename . "'" - endif - elseif !a:silent - echoerr "latexmk is not running for `" . basename . "'" - endif - endif -endfunction -" }}} - -" Commands {{{ - -command! -bang Latexmk call LatexBox_Latexmk( == "!") -command! -bang LatexmkClean call LatexBox_LatexmkClean( == "!") -command! -bang LatexmkStatus call LatexBox_LatexmkStatus( == "!") -command! LatexmkStop call LatexBox_LatexmkStop(0) -command! LatexErrors call LatexBox_LatexErrors(-1) - -if g:LatexBox_latexmk_async || g:LatexBox_latexmk_preview_continuously - autocmd BufUnload call LatexBox_LatexmkStop(1) - autocmd VimLeave * call kill_all_latexmk_processes() -endif - -" }}} - -" vim:fdm=marker:ff=unix:noet:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/ftplugin/latex-box/mappings.vim b/vim/bundle/LaTeX-Box/ftplugin/latex-box/mappings.vim deleted file mode 100644 index ef6b52f..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latex-box/mappings.vim +++ /dev/null @@ -1,106 +0,0 @@ -" LaTeX Box mappings - -if exists("g:LatexBox_no_mappings") - finish -endif - -" latexmk {{{ -noremap ll :Latexmk -noremap lL :Latexmk! -noremap lc :LatexmkClean -noremap lC :LatexmkClean! -noremap lg :LatexmkStatus -noremap lG :LatexmkStatus! -noremap lk :LatexmkStop -noremap le :LatexErrors -" }}} - -" View {{{ -noremap lv :LatexView -" }}} - -" TOC {{{ -noremap lt :LatexTOC -" }}} - -" List of labels {{{ -noremap lj :LatexLabels -" }}} - -" Folding {{{ -if g:LatexBox_Folding == 1 - noremap lf :LatexFold -endif -" }}} - -" Jump to match {{{ -if !exists('g:LatexBox_loaded_matchparen') - nmap % LatexBox_JumpToMatch - vmap % LatexBox_JumpToMatch - omap % LatexBox_JumpToMatch -endif -" }}} - -" Define text objects {{{ -vmap ie LatexBox_SelectCurrentEnvInner -vmap ae LatexBox_SelectCurrentEnvOuter -onoremap ie :normal vie -onoremap ae :normal vae -vmap i$ LatexBox_SelectInlineMathInner -vmap a$ LatexBox_SelectInlineMathOuter -onoremap i$ :normal vi$ -onoremap a$ :normal va$ -" }}} - -" Jump between sections {{{ -function! s:LatexBoxNextSection(type, backwards, visual) - " Restore visual mode if desired - if a:visual - normal! gv - endif - - " For the [] and ][ commands we move up or down before the search - if a:type == 1 - if a:backwards - normal! k - else - normal! j - endif - endif - - " Define search pattern and do the search while preserving "/ - let save_search = @/ - let flags = 'W' - if a:backwards - let flags = 'b' . flags - endif - let notcomment = '\%(\%(\\\@' - call search(pattern, flags) - let @/ = save_search - - " For the [] and ][ commands we move down or up after the search - if a:type == 1 - if a:backwards - normal! j - else - normal! k - endif - endif -endfunction -noremap ]] :call LatexBoxNextSection(0,0,0) -noremap ][ :call LatexBoxNextSection(1,0,0) -noremap [] :call LatexBoxNextSection(1,1,0) -noremap [[ :call LatexBoxNextSection(0,1,0) -vnoremap ]] :call LatexBoxNextSection(0,0,1) -vnoremap ][ :call LatexBoxNextSection(1,0,1) -vnoremap [] :call LatexBoxNextSection(1,1,1) -vnoremap [[ :call LatexBoxNextSection(0,1,1) -" }}} - -" vim:fdm=marker:ff=unix:noet:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/ftplugin/latex-box/motion.vim b/vim/bundle/LaTeX-Box/ftplugin/latex-box/motion.vim deleted file mode 100644 index 66b9e4f..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latex-box/motion.vim +++ /dev/null @@ -1,544 +0,0 @@ -" LaTeX Box motion functions - -" Motion options {{{ -" Opening and closing patterns -if !exists('g:LatexBox_open_pats') - let g:LatexBox_open_pats = [ '\\{','{','\\(','(','\\\[','\[', - \ '\\begin\s*{.\{-}}', '\\left\s*\%([^\\]\|\\.\|\\\a*\)'] - let g:LatexBox_close_pats = [ '\\}','}','\\)',')','\\\]','\]', - \ '\\end\s*{.\{-}}', '\\right\s*\%([^\\]\|\\.\|\\\a*\)'] -endif -" }}} - -" HasSyntax {{{ -" s:HasSyntax(syntaxName, [line], [col]) -function! s:HasSyntax(syntaxName, ...) - let line = a:0 >= 1 ? a:1 : line('.') - let col = a:0 >= 2 ? a:2 : col('.') - return index(map(synstack(line, col), - \ 'synIDattr(v:val, "name") == "' . a:syntaxName . '"'), - \ 1) >= 0 -endfunction -" }}} - -" Search and Skip Comments {{{ -" s:SearchAndSkipComments(pattern, [flags], [stopline]) -function! s:SearchAndSkipComments(pat, ...) - let flags = a:0 >= 1 ? a:1 : '' - let stopline = a:0 >= 2 ? a:2 : 0 - let saved_pos = getpos('.') - - " search once - let ret = search(a:pat, flags, stopline) - - if ret - " do not match at current position if inside comment - let flags = substitute(flags, 'c', '', 'g') - - " keep searching while in comment - while LatexBox_InComment() - let ret = search(a:pat, flags, stopline) - if !ret - break - endif - endwhile - endif - - if !ret - " if no match found, restore position - call setpos('.', saved_pos) - endif - - return ret -endfunction -" }}} - -" Finding Matching Pair {{{ -function! s:FindMatchingPair(mode) - - if a:mode =~ 'h\|i' - 2match none - elseif a:mode == 'v' - normal! gv - endif - - if LatexBox_InComment() | return | endif - - " open/close pairs (dollars signs are treated apart) - let dollar_pat = '\$' - let notbslash = '\%(\\\@1 && a:mode =~ 'o' - call cursor(lnum2, matchend(getline('.'), '\C' - \ . close_pat, col('.')-1)) - endif - endif - break - elseif delim =~# '^' . close_pat - " if on closing pattern, search for opening pattern - let [lnum2, cnum2] = searchpairpos('\C' . open_pat, '', - \ '\C\%(\%'. lnum . 'l\%' . cnum . 'c\)\@!' - \ . close_pat, 'bnW', 'LatexBox_InComment()', - \ line('w0')*(a:mode =~ 'h\|i') , 200) - if a:mode =~ 'h\|i' - execute '2match MatchParen /\%(\%' . lnum2 . 'l\%' . cnum2 - \ . 'c' . g:LatexBox_open_pats[i] . '\|\%' - \ . lnum . 'l\%' . cnum . 'c' - \ . g:LatexBox_close_pats[i] . '\)/' - elseif a:mode =~ 'n\|v\|o' - call cursor(lnum2,cnum2) - endif - break - endif - endfor - - endif -endfunction - -" Allow to disable functionality if desired -if !exists('g:LatexBox_loaded_matchparen') - " Disable matchparen autocommands - augroup LatexBox_HighlightPairs - autocmd BufEnter * if !exists("g:loaded_matchparen") || !g:loaded_matchparen | runtime plugin/matchparen.vim | endif - autocmd BufEnter *.tex 3match none | unlet! g:loaded_matchparen | au! matchparen - autocmd! CursorMoved *.tex call s:FindMatchingPair('h') - autocmd! CursorMovedI *.tex call s:FindMatchingPair('i') - augroup END -endif - -" Use LatexBox'es FindMatchingPair as '%' (enable jump between e.g. $'s) -nnoremap LatexBox_JumpToMatch :call FindMatchingPair('n') -vnoremap LatexBox_JumpToMatch :call FindMatchingPair('v') -onoremap LatexBox_JumpToMatch v:call FindMatchingPair('o') - -" }}} - -" select inline math {{{ -" s:SelectInlineMath(seltype) -" where seltype is either 'inner' or 'outer' -function! s:SelectInlineMath(seltype) - - let dollar_pat = '\\\@ LatexBox_SelectInlineMathInner - \ :call SelectInlineMath('inner') -vnoremap LatexBox_SelectInlineMathOuter - \ :call SelectInlineMath('outer') -" }}} - -" select current environment {{{ -function! s:SelectCurrentEnv(seltype) - let [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1) - call cursor(lnum, cnum) - if a:seltype == 'inner' - if env =~ '^\' - call search('\\.\_\s*\S', 'eW') - else - call search('}\(\_\s*\[\_[^]]*\]\)\?\_\s*\S', 'eW') - endif - endif - if visualmode() ==# 'V' - normal! V - else - normal! v - endif - call cursor(lnum2, cnum2) - if a:seltype == 'inner' - call search('\S\_\s*', 'bW') - else - if env =~ '^\' - normal! l - else - call search('}', 'eW') - endif - endif -endfunction -vnoremap LatexBox_SelectCurrentEnvInner :call SelectCurrentEnv('inner') -vnoremap LatexBox_SelectCurrentEnvOuter :call SelectCurrentEnv('outer') -" }}} - -" Jump to the next braces {{{ -" -function! LatexBox_JumpToNextBraces(backward) - let flags = '' - if a:backward - normal h - let flags .= 'b' - else - let flags .= 'c' - endif - if search('[][}{]', flags) > 0 - normal l - endif - let prev = strpart(getline('.'), col('.') - 2, 1) - let next = strpart(getline('.'), col('.') - 1, 1) - if next =~ '[]}]' && prev !~ '[][{}]' - return "\" - else - return '' - endif -endfunction -" }}} - -" Table of Contents {{{ - -" Special UTF-8 conversion -function! s:ConvertBack(line) - let line = a:line - if exists('g:LatexBox_plaintext_toc') - " - " Substitute stuff like '\IeC{\"u}' to plain 'u' - " - let line = substitute(line, '\\IeC\s*{\\.\(.\)}', '\1', 'g') - else - " - " Substitute stuff like '\IeC{\"u}' to corresponding unicode symbols - " - for [pat, symbol] in s:ConvBackPats - let line = substitute(line, pat, symbol, 'g') - endfor - endif - return line -endfunction - -function! s:ReadTOC(auxfile, texfile, ...) - let texfile = a:texfile - let prefix = fnamemodify(a:auxfile, ':p:h') - - if a:0 != 2 - let toc = [] - let fileindices = { texfile : [] } - else - let toc = a:1 - let fileindices = a:2 - let fileindices[ texfile ] = [] - endif - - for line in readfile(a:auxfile) - let included = matchstr(line, '^\\@input{\zs[^}]*\ze}') - if included != '' - " append the input TOX to `toc` and `fileindices` - let newaux = prefix . '/' . included - let newtex = fnamemodify(newaux, ':r') . '.tex' - call s:ReadTOC(newaux, newtex, toc, fileindices) - continue - endif - - " Parse statements like: - " \@writefile{toc}{\contentsline {section}{\numberline {secnum}Section Title}{pagenumber}} - " \@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Section Title}}{pagenumber}} - " \@writefile{toc}{\contentsline {section}{\numberline {secnum}Section Title}{pagenumber}{otherstuff}} - - let line = matchstr(line, - \ '\\@writefile{toc}{\\contentsline\s*\zs.*\ze}\s*$') - if empty(line) - continue - endif - - let tree = LatexBox_TexToTree(s:ConvertBack(line)) - - if len(tree) < 3 - " unknown entry type: just skip it - continue - endif - - " parse level - let level = tree[0][0] - " parse page - if !empty(tree[2]) - let page = tree[2][0] - else - let page = '' - endif - " parse section number - let secnum = '' - let tree = tree[1] - if len(tree) > 3 && empty(tree[1]) - call remove(tree, 1) - endif - if len(tree) > 1 && type(tree[0]) == type("") && tree[0] =~ '^\\\(\(chapter\)\?numberline\|tocsection\)' - let secnum = LatexBox_TreeToTex(tree[1]) - let secnum = substitute(secnum, '\\\S\+\s', '', 'g') - let secnum = substitute(secnum, '\\\S\+{\(.\{-}\)}', '\1', 'g') - let secnum = substitute(secnum, '^{\+\|}\+$', '', 'g') - call remove(tree, 1) - endif - " parse section title - let text = LatexBox_TreeToTex(tree) - let text = substitute(text, '^{\+\|}\+$', '', 'g') - let text = substitute(text, '\m^\\\(no\)\?\(chapter\)\?numberline\s*', '', '') - let text = substitute(text, '\*', '', 'g') - - " add TOC entry - call add(fileindices[texfile], len(toc)) - call add(toc, {'file': texfile, - \ 'level': level, - \ 'number': secnum, - \ 'text': text, - \ 'page': page}) - endfor - - return [toc, fileindices] - -endfunction - -function! LatexBox_TOC(...) - - " Check if window already exists - let winnr = bufwinnr(bufnr('LaTeX TOC')) - " Two types of splits, horizontal and vertical - let l:hori = "new" - let l:vert = "vnew" - - " Set General Vars and initialize size - let l:type = g:LatexBox_split_type - let l:size = 10 - - " Size detection - if l:type == l:hori - let l:size = g:LatexBox_split_length - elseif l:type == l:vert - let l:size = g:LatexBox_split_width - endif - - if winnr >= 0 - if a:0 == 0 - silent execute winnr . 'wincmd w' - else - " Supplying an argument to this function causes toggling instead - " of jumping to the TOC window - if g:LatexBox_split_resize - silent exe "set columns-=" . l:size - endif - silent execute 'bwipeout' . bufnr('LaTeX TOC') - endif - return - endif - " Read TOC - let [toc, fileindices] = s:ReadTOC(LatexBox_GetAuxFile(), - \ LatexBox_GetMainTexFile()) - let calling_buf = bufnr('%') - - " Find closest section in current buffer - let closest_index = s:FindClosestSection(toc,fileindices) - - " Create TOC window and set local settings - if g:LatexBox_split_resize - silent exe "set columns+=" . l:size - endif - silent exe g:LatexBox_split_side l:size . l:type . ' LaTeX\ TOC' - - let b:toc = toc - let b:toc_numbers = 1 - let b:calling_win = bufwinnr(calling_buf) - setlocal filetype=latextoc - - " Add TOC entries and jump to the closest section - for entry in toc - call append('$', entry['number'] . "\t" . entry['text']) - endfor - if !g:LatexBox_toc_hidehelp - call append('$', "") - call append('$', "/q: close") - call append('$', ": jump") - call append('$', ": jump and close") - call append('$', "s: hide numbering") - endif - 0delete _ - - execute 'normal! ' . (closest_index + 1) . 'G' - - " Lock buffer - setlocal nomodifiable -endfunction - -" Binary search for the closest section -" return the index of the TOC entry -function! s:FindClosestSection(toc, fileindices) - let file = expand('%:p') - if !has_key(a:fileindices, file) - return 0 - endif - - let imax = len(a:fileindices[file]) - if imax > 0 - let imin = 0 - while imin < imax - 1 - let i = (imax + imin) / 2 - let tocindex = a:fileindices[file][i] - let entry = a:toc[tocindex] - let titlestr = entry['text'] - let titlestr = escape(titlestr, '\') - let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g') - let [lnum, cnum] = searchpos('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'nW') - if lnum - let imax = i - else - let imin = i - endif - endwhile - return a:fileindices[file][imin] - else - return 0 - endif -endfunction - -let s:ConvBackPats = map([ - \ ['\\''A}' , 'Á'], - \ ['\\`A}' , 'À'], - \ ['\\^A}' , 'À'], - \ ['\\¨A}' , 'Ä'], - \ ['\\"A}' , 'Ä'], - \ ['\\''a}' , 'á'], - \ ['\\`a}' , 'à'], - \ ['\\^a}' , 'à'], - \ ['\\¨a}' , 'ä'], - \ ['\\"a}' , 'ä'], - \ ['\\''E}' , 'É'], - \ ['\\`E}' , 'È'], - \ ['\\^E}' , 'Ê'], - \ ['\\¨E}' , 'Ë'], - \ ['\\"E}' , 'Ë'], - \ ['\\''e}' , 'é'], - \ ['\\`e}' , 'è'], - \ ['\\^e}' , 'ê'], - \ ['\\¨e}' , 'ë'], - \ ['\\"e}' , 'ë'], - \ ['\\''I}' , 'Í'], - \ ['\\`I}' , 'Î'], - \ ['\\^I}' , 'Ì'], - \ ['\\¨I}' , 'Ï'], - \ ['\\"I}' , 'Ï'], - \ ['\\''i}' , 'í'], - \ ['\\`i}' , 'î'], - \ ['\\^i}' , 'ì'], - \ ['\\¨i}' , 'ï'], - \ ['\\"i}' , 'ï'], - \ ['\\''{\?\\i }' , 'í'], - \ ['\\''O}' , 'Ó'], - \ ['\\`O}' , 'Ò'], - \ ['\\^O}' , 'Ô'], - \ ['\\¨O}' , 'Ö'], - \ ['\\"O}' , 'Ö'], - \ ['\\''o}' , 'ó'], - \ ['\\`o}' , 'ò'], - \ ['\\^o}' , 'ô'], - \ ['\\¨o}' , 'ö'], - \ ['\\"o}' , 'ö'], - \ ['\\''U}' , 'Ú'], - \ ['\\`U}' , 'Ù'], - \ ['\\^U}' , 'Û'], - \ ['\\¨U}' , 'Ü'], - \ ['\\"U}' , 'Ü'], - \ ['\\''u}' , 'ú'], - \ ['\\`u}' , 'ù'], - \ ['\\^u}' , 'û'], - \ ['\\¨u}' , 'ü'], - \ ['\\"u}' , 'ü'], - \ ['\\`N}' , 'Ǹ'], - \ ['\\\~N}' , 'Ñ'], - \ ['\\''n}' , 'ń'], - \ ['\\`n}' , 'ǹ'], - \ ['\\\~n}' , 'ñ'], - \], '[''\C\(\\IeC\s*{\)\?'' . v:val[0], v:val[1]]') -" }}} - -" TOC Command {{{ -command! LatexTOC call LatexBox_TOC() -command! LatexTOCToggle call LatexBox_TOC(1) -" }}} - -" vim:fdm=marker:ff=unix:noet:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/ftplugin/latex-box/vimcomplete.bst b/vim/bundle/LaTeX-Box/ftplugin/latex-box/vimcomplete.bst deleted file mode 100644 index 0d7e96a..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latex-box/vimcomplete.bst +++ /dev/null @@ -1,306 +0,0 @@ -ENTRY - { address author booktitle chapter doi edition editor eid howpublished institution isbn issn journal key month note number organization pages publisher school series title type volume year } - {} - { label } -STRINGS { s t} - -FUNCTION {output} -{ 's := - %purify$ - %"}{" * write$ - "||" * write$ - s -} -FUNCTION {fin.entry} -%{ "}" * write$ -{ write$ - newline$ -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} - -FUNCTION {capitalize} -{ "u" change.case$ "t" change.case$ } - -FUNCTION {space.word} -{ " " swap$ * " " * } - -FUNCTION {bbl.and} { "&"} -FUNCTION {bbl.etal} { "et al." } - -INTEGERS { nameptr namesleft numnames } - -STRINGS { bibinfo} - -FUNCTION {format.names} -{ duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - %"{vv~}{ll}{, f.}{, jj}" - "{vv }{ll}{}{}" - format.name$ - 't := - nameptr #1 > - { - namesleft #1 > - { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - " " * bbl.etal * - } - { - bbl.and - space.word * t * - } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - } if$ -} - -FUNCTION {format.authors} -{ author empty$ - {editor format.names} {author format.names} - if$ -} - -FUNCTION {format.title} -{ title - duplicate$ empty$ 'skip$ - { "t" change.case$ } - if$ -} -FUNCTION {output.label} -{ newline$ - %"{" cite$ * write$ - cite$ write$ - "" -} - - -FUNCTION {format.date} -{ - "" - duplicate$ empty$ - year duplicate$ empty$ - { swap$ 'skip$ - { "there's a month but no year in " cite$ * warning$ } - if$ - * - } - { swap$ 'skip$ - { - swap$ - " " * swap$ - } - if$ - * - } - if$ -} - -FUNCTION {output.entry} -{ 's := - output.label - s output - format.authors output - format.date output - format.title output - fin.entry -} - -FUNCTION {default.type} {"?" output.entry} - -FUNCTION {article} {"a" output.entry} -FUNCTION {book} {"B" output.entry} -FUNCTION {booklet} {"k" output.entry} -FUNCTION {conference} {"f" output.entry} -FUNCTION {inbook} {"b" output.entry} -FUNCTION {incollection} {"c" output.entry} -FUNCTION {inproceedings} {"p" output.entry} -FUNCTION {manual} {"m" output.entry} -FUNCTION {mastersthesis} {"Master" output.entry} -FUNCTION {misc} {"-" output.entry} -FUNCTION {phdthesis} {"PhD" output.entry} -FUNCTION {proceedings} {"P" output.entry} -FUNCTION {techreport} {"r" output.entry} -FUNCTION {unpublished} {"u" output.entry} - - -READ -FUNCTION {sortify} -{ purify$ - "l" change.case$ -} -INTEGERS { len } -FUNCTION {chop.word} -{ 's := - 'len := - s #1 len substring$ = - { s len #1 + global.max$ substring$ } - 's - if$ -} -FUNCTION {sort.format.names} -{ 's := - #1 'nameptr := - "" - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" - format.name$ 't := - nameptr #1 > - { - " " * - namesleft #1 = t "others" = and - { "zzzzz" * } - { t sortify * } - if$ - } - { t sortify * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {sort.format.title} -{ 't := - "A " #2 - "An " #3 - "The " #4 t chop.word - chop.word - chop.word - sortify - #1 global.max$ substring$ -} -FUNCTION {author.sort} -{ author empty$ - { key empty$ - { "to sort, need author or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { author sort.format.names } - if$ -} -FUNCTION {author.editor.sort} -{ author empty$ - { editor empty$ - { key empty$ - { "to sort, need author, editor, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { editor sort.format.names } - if$ - } - { author sort.format.names } - if$ -} -FUNCTION {author.organization.sort} -{ author empty$ - { organization empty$ - { key empty$ - { "to sort, need author, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { author sort.format.names } - if$ -} -FUNCTION {editor.organization.sort} -{ editor empty$ - { organization empty$ - { key empty$ - { "to sort, need editor, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { editor sort.format.names } - if$ -} -FUNCTION {presort} -{ type$ "book" = - type$ "inbook" = - or - 'author.editor.sort - { type$ "proceedings" = - 'editor.organization.sort - { type$ "manual" = - 'author.organization.sort - 'author.sort - if$ - } - if$ - } - if$ - " " - * - year field.or.null sortify - * - " " - * - title field.or.null - sort.format.title - * - #1 entry.max$ substring$ - 'sort.key$ := -} -ITERATE {presort} -SORT -ITERATE {call.type$} diff --git a/vim/bundle/LaTeX-Box/ftplugin/latextoc.vim b/vim/bundle/LaTeX-Box/ftplugin/latextoc.vim deleted file mode 100644 index 65315de..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/latextoc.vim +++ /dev/null @@ -1,202 +0,0 @@ -" {{{1 Settings -setlocal buftype=nofile -setlocal bufhidden=wipe -setlocal nobuflisted -setlocal noswapfile -setlocal nowrap -setlocal nospell -setlocal cursorline -setlocal nonumber -setlocal nolist -setlocal tabstop=8 -setlocal cole=0 -setlocal cocu=nvic -if g:LatexBox_fold_toc - setlocal foldmethod=expr - setlocal foldexpr=TOCFoldLevel(v:lnum) - setlocal foldtext=TOCFoldText() -endif -" }}}1 - -" {{{1 Functions -" {{{2 TOCClose -function! s:TOCClose() - if g:LatexBox_split_resize - silent exe "set columns-=" . g:LatexBox_split_width - endif - bwipeout -endfunction - -" {{{2 TOCToggleNumbers -function! s:TOCToggleNumbers() - if b:toc_numbers - setlocal conceallevel=3 - let b:toc_numbers = 0 - else - setlocal conceallevel=0 - let b:toc_numbers = 1 - endif -endfunction - -" {{{2 EscapeTitle -function! s:EscapeTitle(titlestr) - let titlestr = substitute(a:titlestr, '\\[a-zA-Z@]*\>\s*{\?', '.*', 'g') - let titlestr = substitute(titlestr, '}', '', 'g') - let titlestr = substitute(titlestr, '\%(\.\*\s*\)\{2,}', '.*', 'g') - return titlestr -endfunction - -" {{{2 TOCActivate -function! s:TOCActivate(close) - let n = getpos('.')[1] - 1 - - if n >= len(b:toc) - return - endif - - let entry = b:toc[n] - - let titlestr = s:EscapeTitle(entry['text']) - - " Search for duplicates - " - let i=0 - let entry_hash = entry['level'].titlestr - let duplicates = 0 - while i' - else - let re = '\\' . entry['level'] . '\_\s*{' . titlestr . '}' - endif - call s:TOCFindMatch(re, duplicates, files) - - if a:close - if g:LatexBox_split_resize - silent exe "set columns-=" . g:LatexBox_split_width - endif - execute 'bwipeout ' . toc_bnr - else - execute toc_wnr . 'wincmd w' - endif -endfunction - -" {{{2 TOCFindMatch -function! s:TOCFindMatch(strsearch,duplicates,files) - if len(a:files) == 0 - echoerr "Could not find: " . a:strsearch - return - endif - - call s:TOCOpenBuf(a:files[0]) - let dups = a:duplicates - - " Skip duplicates - while dups > 0 - if search(a:strsearch, 'w') - let dups -= 1 - else - break - endif - endwhile - - if search(a:strsearch, 'w') - normal! zv - return - endif - - call s:TOCFindMatch(a:strsearch,dups,a:files[1:]) -endfunction - -" {{{2 TOCFoldLevel -function! TOCFoldLevel(lnum) - let line = getline(a:lnum) - let match_s1 = line =~# '^\w\+\s' - let match_s2 = line =~# '^\w\+\.\w\+\s' - let match_s3 = line =~# '^\w\+\.\w\+\.\w\+\s' - - if g:LatexBox_fold_toc_levels >= 3 - if match_s3 - return ">3" - endif - endif - - if g:LatexBox_fold_toc_levels >= 2 - if match_s2 - return ">2" - endif - endif - - if match_s1 - return ">1" - endif - - " Don't fold options - if line =~# '^\s*$' - return 0 - endif - - " Return previous fold level - return "=" -endfunction - -" {{{2 TOCFoldText -function! TOCFoldText() - let parts = matchlist(getline(v:foldstart), '^\(.*\)\t\(.*\)$') - return printf('%-8s%-72s', parts[1], parts[2]) -endfunction - -" {{{2 TOCOpenBuf -function! s:TOCOpenBuf(file) - - let bnr = bufnr(a:file) - if bnr == -1 - execute 'badd ' . a:file - let bnr = bufnr(a:file) - endif - execute 'buffer! ' . bnr - normal! gg - -endfunction - -" }}}1 - -" {{{1 Mappings -nnoremap s :call TOCToggleNumbers() -nnoremap q :call TOCClose() -nnoremap :call TOCClose() -nnoremap :call TOCActivate(0) -nnoremap :call TOCActivate(1) -nnoremap :call TOCActivate(0) -nnoremap <2-leftmouse> :call TOCActivate(1) -nnoremap G G4k -nnoremap OA k -nnoremap OB j -nnoremap OC l -nnoremap OD h -" }}}1 - -" vim:fdm=marker:ff=unix:et:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/ftplugin/tex_LatexBox.vim b/vim/bundle/LaTeX-Box/ftplugin/tex_LatexBox.vim deleted file mode 100644 index 2945851..0000000 --- a/vim/bundle/LaTeX-Box/ftplugin/tex_LatexBox.vim +++ /dev/null @@ -1,33 +0,0 @@ -" LaTeX Box plugin for Vim -" Maintainer: David Munger -" Email: mungerd@gmail.com -" Version: 0.9.6 - -if exists('*fnameescape') - function! s:FNameEscape(s) - return fnameescape(a:s) - endfunction -else - function! s:FNameEscape(s) - return a:s - endfunction -endif - -if !exists('b:LatexBox_loaded') - - let prefix = expand(':p:h') . '/latex-box/' - - execute 'source ' . s:FNameEscape(prefix . 'common.vim') - execute 'source ' . s:FNameEscape(prefix . 'complete.vim') - execute 'source ' . s:FNameEscape(prefix . 'motion.vim') - execute 'source ' . s:FNameEscape(prefix . 'latexmk.vim') - execute 'source ' . s:FNameEscape(prefix . 'folding.vim') - " added by AH to add main.tex file finder - execute 'source ' . s:FNameEscape(prefix . 'findmain.vim') - execute 'source ' . s:FNameEscape(prefix . 'mappings.vim') - - let b:LatexBox_loaded = 1 - -endif - -" vim:fdm=marker:ff=unix:noet:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/indent/tex.vim b/vim/bundle/LaTeX-Box/indent/tex.vim deleted file mode 100644 index 3abc44b..0000000 --- a/vim/bundle/LaTeX-Box/indent/tex.vim +++ /dev/null @@ -1,136 +0,0 @@ -" LaTeX indent file (part of LaTeX Box) -" Maintainer: David Munger (mungerd@gmail.com) - -if exists("g:LatexBox_custom_indent") && ! g:LatexBox_custom_indent - finish -endif -if exists("b:did_indent") - finish -endif - -let b:did_indent = 1 - -setlocal indentexpr=LatexBox_TexIndent() -setlocal indentkeys=0=\\end,0=\\end{enumerate},0=\\end{itemize},0=\\end{description},0=\\right,0=\\item,0=\\),0=\\],0},o,O,0\\ - -let s:list_envs = ['itemize', 'enumerate', 'description'] -" indent on \left( and on \(, but not on ( -" indent on \left[ and on \[, but not on [ -" indent on \left\{ and on {, but not on \{ -let s:open_pat = '\\\@ 703 || (v:version == 703 && has('patch598')) - augroup LatexBox_Completion - autocmd! - autocmd CompleteDone call Latexbox_CallIndent() - augroup END -endif - -" vim:fdm=marker:ff=unix:noet:ts=4:sw=4 diff --git a/vim/bundle/LaTeX-Box/syntax/latextoc.vim b/vim/bundle/LaTeX-Box/syntax/latextoc.vim deleted file mode 100644 index 5709ed6..0000000 --- a/vim/bundle/LaTeX-Box/syntax/latextoc.vim +++ /dev/null @@ -1,9 +0,0 @@ -syntax match helpText /^.*: .*/ -syntax match secNum /^\S\+\(\.\S\+\)\?\s*/ contained conceal -syntax match secLine /^\S\+\t.\+/ contains=secNum -syntax match mainSecLine /^[^\.]\+\t.*/ contains=secNum -syntax match ssubSecLine /^[^\.]\+\.[^\.]\+\.[^\.]\+\t.*/ contains=secNum -highlight link helpText PreProc -highlight link secNum Number -highlight link mainSecLine Title -highlight link ssubSecLine Comment diff --git a/vim/bundle/LaTeX-Box/tools/MkLatexBox.vim b/vim/bundle/LaTeX-Box/tools/MkLatexBox.vim deleted file mode 100644 index f6954f0..0000000 --- a/vim/bundle/LaTeX-Box/tools/MkLatexBox.vim +++ /dev/null @@ -1,14 +0,0 @@ -4,$MkVimball! %:p:h/LatexBox.vmb %:p:h -finish - -ftplugin/tex_LatexBox.vim -ftplugin/latex-box/common.vim -ftplugin/latex-box/complete.vim -ftplugin/latex-box/findman.vim -ftplugin/latex-box/folding.vim -ftplugin/latex-box/latexmk.vim -ftplugin/latex-box/mappings.vim -ftplugin/latex-box/motion.vim -ftplugin/latex-box/vimcomplete.bst -indent/tex.vim -doc/latex-box.txt diff --git a/vim/bundle/Vundle.vim b/vim/bundle/Vundle.vim deleted file mode 160000 index 5f70ae6..0000000 --- a/vim/bundle/Vundle.vim +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5f70ae6025e951f0154e3940d123138adffa4c88 diff --git a/vim/bundle/ctrlp.vim b/vim/bundle/ctrlp.vim deleted file mode 160000 index 564176f..0000000 --- a/vim/bundle/ctrlp.vim +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 564176f01d7f3f7f8ab452ff4e1f5314de7b0981 diff --git a/vim/bundle/delimitMate b/vim/bundle/delimitMate deleted file mode 160000 index 8bc47fd..0000000 --- a/vim/bundle/delimitMate +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8bc47fd1c40cdad9ea1f36c0cf13592c70ea65e9 diff --git a/vim/bundle/nerdtree b/vim/bundle/nerdtree deleted file mode 160000 index 4ebbb53..0000000 --- a/vim/bundle/nerdtree +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4ebbb533c3faf2c480211db2b547972bb3b60f2b diff --git a/vim/bundle/python-mode b/vim/bundle/python-mode deleted file mode 160000 index fd70ac2..0000000 --- a/vim/bundle/python-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fd70ac2ab74a91fb049cb8e82237c34d88354673 diff --git a/vim/bundle/snipmate.vim b/vim/bundle/snipmate.vim deleted file mode 160000 index 7a29d1a..0000000 --- a/vim/bundle/snipmate.vim +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7a29d1af9a72bf8952c83de68f5065d88460ef41 diff --git a/vim/bundle/tabular b/vim/bundle/tabular deleted file mode 160000 index 60f2564..0000000 --- a/vim/bundle/tabular +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 60f25648814f0695eeb6c1040d97adca93c4e0bb diff --git a/vim/bundle/tagbar b/vim/bundle/tagbar deleted file mode 160000 index 7b36c46..0000000 --- a/vim/bundle/tagbar +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7b36c46d17d57db34fdb0adac9ba6382d0bb5e66 diff --git a/vim/bundle/undotree b/vim/bundle/undotree deleted file mode 160000 index 74874d9..0000000 --- a/vim/bundle/undotree +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 74874d92d4bde3d026f2d0f3ff780b1787ba4e84 diff --git a/vim/bundle/vim-easymotion b/vim/bundle/vim-easymotion deleted file mode 160000 index a21d447..0000000 --- a/vim/bundle/vim-easymotion +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a21d4474f0e9df7a721246e0a3b386068901965f diff --git a/vim/bundle/vim-multiple-cursors b/vim/bundle/vim-multiple-cursors deleted file mode 160000 index 73a78c9..0000000 --- a/vim/bundle/vim-multiple-cursors +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 73a78c926ad208bd1984e575ceece276d61a1404 diff --git a/vim/bundle/vim-perl b/vim/bundle/vim-perl deleted file mode 160000 index 800481b..0000000 --- a/vim/bundle/vim-perl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 800481b537528f1951b52e03002f6aefbf4c0e4e diff --git a/vim/bundle/vim-startify b/vim/bundle/vim-startify deleted file mode 160000 index f937351..0000000 --- a/vim/bundle/vim-startify +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f937351119e05466f2772deb20886bc6cf3f4704 diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround deleted file mode 160000 index 2d05440..0000000 --- a/vim/bundle/vim-surround +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2d05440ad23f97a7874ebd9b5de3a0e65d25d85c