From 96d05b9ef5b14a11f199fe102451d3d012f4f4d3 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Thu, 19 May 2022 01:01:43 +0800 Subject: [PATCH] feat(autohotkey): use bundle vim-autohotkey --- autoload/SpaceVim/layers/lang/autohotkey.vim | 2 +- bundle/vim-autohotkey/.vintrc.yaml | 11 + bundle/vim-autohotkey/LICENSE | 674 ++++++++++++++++ bundle/vim-autohotkey/README.md | 7 + bundle/vim-autohotkey/autoload/autohotkey.vim | 743 ++++++++++++++++++ bundle/vim-autohotkey/ftdetect/autohotkey.vim | 1 + bundle/vim-autohotkey/plugin/autohotkey.vim | 4 + bundle/vim-autohotkey/syntax/autohotkey.vim | 277 +++++++ 8 files changed, 1718 insertions(+), 1 deletion(-) create mode 100644 bundle/vim-autohotkey/.vintrc.yaml create mode 100644 bundle/vim-autohotkey/LICENSE create mode 100644 bundle/vim-autohotkey/README.md create mode 100644 bundle/vim-autohotkey/autoload/autohotkey.vim create mode 100644 bundle/vim-autohotkey/ftdetect/autohotkey.vim create mode 100644 bundle/vim-autohotkey/plugin/autohotkey.vim create mode 100644 bundle/vim-autohotkey/syntax/autohotkey.vim diff --git a/autoload/SpaceVim/layers/lang/autohotkey.vim b/autoload/SpaceVim/layers/lang/autohotkey.vim index 7e2650db4..3a3c2d6be 100644 --- a/autoload/SpaceVim/layers/lang/autohotkey.vim +++ b/autoload/SpaceVim/layers/lang/autohotkey.vim @@ -18,7 +18,7 @@ function! SpaceVim#layers#lang#autohotkey#plugins() abort let plugins = [] - call add(plugins, ['wsdjeg/vim-autohotkey', {'merged' : 0}]) + call add(plugins, [g:_spacevim_root_dir . 'bundle/vim-autohotkey', {'merged' : 0}]) return plugins endfunction diff --git a/bundle/vim-autohotkey/.vintrc.yaml b/bundle/vim-autohotkey/.vintrc.yaml new file mode 100644 index 000000000..9ce848e97 --- /dev/null +++ b/bundle/vim-autohotkey/.vintrc.yaml @@ -0,0 +1,11 @@ +cmdargs: + # Checking more strictly + severity: style_problem + +policies: + ProhibitImplicitScopeVariable: + enabled: false + ProhibitAbbreviationOption: + enabled: false + ProhibitSetNoCompatible: + enabled: false diff --git a/bundle/vim-autohotkey/LICENSE b/bundle/vim-autohotkey/LICENSE new file mode 100644 index 000000000..94a9ed024 --- /dev/null +++ b/bundle/vim-autohotkey/LICENSE @@ -0,0 +1,674 @@ + 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/bundle/vim-autohotkey/README.md b/bundle/vim-autohotkey/README.md new file mode 100644 index 000000000..25408897e --- /dev/null +++ b/bundle/vim-autohotkey/README.md @@ -0,0 +1,7 @@ +# vim-autohotkey + +> autohotkey support for vim/neovim + +This is part of SpaceVim's autohotkey layer, and the website is: + +https://spacevim.org/layers/lang/autohotkey/ diff --git a/bundle/vim-autohotkey/autoload/autohotkey.vim b/bundle/vim-autohotkey/autoload/autohotkey.vim new file mode 100644 index 000000000..700c864ba --- /dev/null +++ b/bundle/vim-autohotkey/autoload/autohotkey.vim @@ -0,0 +1,743 @@ +let s:complete_dict = { + \ 'AutoTrim' : + \ "AutoTrim, On|Off\nDetermines whether Var1 = %Var2% statements omit spaces and tabs from the beginning and end of Var2.", + \ 'Blocks' : + \ "{\nzero or more commands\n}\nA pair of braces denotes a block. Blocks are typically used with functions, Else, Loop, While-loop, and IF-commands.", + \ 'BlockInput' : + \ "BlockInput, Mode\nDisables or enables the user's ability to interact with the computer via keyboard and mouse. ", + \ 'Break' : + \ "Break [, LoopLabel]\nExits (terminates) a loop. Valid inside any kind of loop.", + \ 'Catch' : + \ '', + \ 'Click' : + \ '', + \ 'ClipWait' : + \ "ClipWait [, SecondsToWait, 1]\nWaits until the clipboard contains data.", + \ 'ComObjActive()' : + \ "ComObject := ComObjActive(CLSID)\nRetrieves a running object that has been registered with OLE.", + \ 'ComObjArray()' : + \ "ArrayObj := ComObjArray(VarType, Count1 [, Count2, ... Count8])\nCreates a SafeArray for use with COM.", + \ 'ComObjConnect()' : + \ "ComObjConnect(ComObject [, Prefix])\nConnects the object's event sources to functions with a given prefix.", + \ 'ComObjCreate()' : + \ "ComObject := ComObjCreate(CLSID [, IID])\nCreates a COM object.", + \ 'ComObjError()' : + \ "Enabled := ComObjError([Enable])\nEnables or disables notification of COM errors.", + \ 'ComObjFlags()' : + \ "Flags := ComObjFlags(ComObject [, NewFlags, Mask])\nRetrieves or changes flags which control a COM wrapper object's behaviour.", + \ 'ComObjGet()' : + \ "ComObject := ComObjGet(Name)\nReturns a reference to an object provided by a COM component.", + \ 'ComObjQuery()' : + \ "InterfacePointer := ComObjQuery(ComObject, [SID,] IID)\nQueries a COM object for an interface or service.", + \ 'ComObjType()' : + \ "VarType := ComObjType(ComObject)\nName := ComObjType(ComObject, \"Name\")\nIID := ComObjType(ComObject, \"IID\")\nRetrieves type information from a COM object.", + \ 'ComObjValue()' : + \ "Value := ComObjValue(ComObject)\nRetrieves the value or pointer stored in a COM wrapper object.", + \ 'Continue' : + \ "Continue [, LoopLabel]\nSkips the rest of the current loop iteration and begins a new one. Valid inside any kind of loop.", + \ 'Control' : + \ "Control, Cmd [, Value, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]\nMakes a variety of changes to a control.", + \ 'ControlClick' : + \ "ControlClick [, Control-or-Pos, WinTitle, WinText, WhichButton, ClickCount, Options, ExcludeTitle, ExcludeText]\nSends a mouse button or mouse wheel event to a control. ", + \ 'ControlFocus' : + \ "ControlFocus [, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]\nSets input focus to a given control on a window. ", + \ 'ControlGet' : + \ "ControlGet, OutputVar, Cmd [, Value, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves various types of information about a control. ", + \ 'ControlGetFocus' : + \ "ControlGetFocus, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves which control of the target window has input focus, if any.", + \ 'ControlGetPos' : + \ "ControlGetPos [, X, Y, Width, Height, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves the position and size of a control.", + \ 'ControlGetText' : + \ "ControlGetText, OutputVar [, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves text from a control. ", + \ 'ControlMove' : + \ "ControlMove, Control, X, Y, Width, Height [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nMoves or resizes a control. ", + \ 'ControlSend' : + \ "ControlSend [, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]\nControlSendRaw: Same parameters as above.\nSends simulated keystrokes to a window or control.", + \ 'ControlSendRaw' : + \ "ControlSend [, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]\nControlSendRaw: Same parameters as above.\nSends simulated keystrokes to a window or control.", + \ 'ControlSetText' : + \ "ControlSetText [, Control, NewText, WinTitle, WinText, ExcludeTitle, ExcludeText]\nChanges the text of a control. ", + \ 'CoordMode' : + \ "CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Window|Client]\nSets coordinate mode for various commands to be relative to either the active window or the screen.", + \ 'Critical' : + \ "Critical [, Off]\nCritical 50 ; See bottom of remarks.\nPrevents the current thread from being interrupted by other threads.", + \ 'DetectHiddenText' : + \ "DetectHiddenText, On|Off\nDetermines whether invisible text in a window is \"seen\" for the purpose of finding the window. This affects commands such as IfWinExist and WinActivate.", + \ 'DetectHiddenWindows' : + \ "DetectHiddenWindows, On|Off\nDetermines whether invisible windows are \"seen\" by the script.", + \ 'DllCall' : + \ "Result := DllCall(\"[DllFile\]Function\" [, Type1, Arg1, Type2, Arg2, \"Cdecl ReturnType\"])\nCalls a function inside a DLL, such as a standard Windows API function.", + \ 'Drive' : + \ "Drive, Sub-command [, Drive , Value]\nEjects/retracts the tray in a CD or DVD drive, or sets a drive's volume label. ", + \ 'DriveGet' : + \ "DriveGet, OutputVar, Cmd [, Value]\nRetrieves various types of information about the computer's drive(s). ", + \ 'DriveSpaceFree' : + \ "DriveSpaceFree, OutputVar, Path\nRetrieves the free disk space of a drive, in Megabytes.", + \ 'Edit' : + \ "Edit\nOpens the current script for editing in the associated editor.", + \ 'Else' : + \ "Else\nSpecifies the command(s) to perform if an IF-statement evaluates to FALSE. When more than one command is present, enclose them in a block (braces). ", + \ 'EnvAdd' : + \ "EnvAdd, Var, Value [, TimeUnits]\nVar += Value [, TimeUnits]\nVar++\nSets a variable to the sum of itself plus the given value (can also add or subtract time from a date-time value). Synonymous with: var += value.", + \ 'EnvDiv' : + \ "EnvDiv, Var, Value\nSets a variable to itself divided by the given value. Synonymous with: Var /= Value.", + \ 'EnvGet' : + \ "EnvGet, OutputVar, EnvVarName\nRetrieves an environment variable.", + \ 'EnvMult' : + \ "EnvMult, Var, Value\nSets a variable to itself times the given value. Synonymous with: Var *= Value.", + \ 'EnvSet' : + \ "EnvSet, EnvVar, Value\nWrites a value to a variable contained in the environment.", + \ 'EnvSub' : + \ "EnvSub, Var, Value [, TimeUnits]\nVar -= Value [, TimeUnits]\nVar--\nSets a variable to itself minus the given value (can also compare date-time values). Synonymous with: Var -= Value.", + \ 'EnvUpdate' : + \ "EnvUpdate\nNotifies the OS and all running applications that environment variable(s) have changed.", + \ 'Exit' : + \ "Exit [, ExitCode]\nExits the current thread or (if the script is not persistent and contains no hotkeys) the entire script.", + \ 'ExitApp' : + \ "ExitApp [, ExitCode]\nTerminates the script unconditionally.", + \ 'FileAppend' : + \ "FileAppend [, Text, Filename, Encoding]\nWrites text to the end of a file (first creating the file, if necessary).", + \ 'FileCopy' : + \ "FileCopy, SourcePattern, DestPattern [, Flag]\nCopies one or more files.", + \ 'FileCopyDir' : + \ "FileCopyDir, Source, Dest [, Flag]\nCopies a folder along with all its sub-folders and files (similar to xcopy).", + \ 'FileCreateDir' : + \ "FileCreateDir, DirName\nCreates a directory/folder. ", + \ 'FileCreateShortcut' : + \ "FileCreateShortcut, Target, LinkFile [, WorkingDir, Args, Description, IconFile, ShortcutKey, IconNumber, RunState]\nCreates a shortcut (.lnk) file.", + \ 'FileDelete' : + \ "FileDelete, FilePattern\nDeletes one or more files. ", + \ 'FileEncoding' : + \ "FileEncoding [, Encoding]\nSets the default encoding for FileRead, FileReadLine, Loop Read, FileAppend, and FileOpen.", + \ 'FileGetAttrib' : + \ "FileGetAttrib, OutputVar [, Filename]\nAttributeString := FileExist(FilePattern)\nReports whether a file or folder is read-only, hidden, etc. ", + \ 'FileGetShortcut' : + \ "FileGetShortcut, LinkFile [, OutTarget, OutDir, OutArgs, OutDescription, OutIcon, OutIconNum, OutRunState]\nRetrieves information about a shortcut (.lnk) file, such as its target file. ", + \ 'FileGetSize' : + \ "FileGetSize, OutputVar [, Filename, Units]\nRetrieves the size of a file.", + \ 'FileGetTime' : + \ "FileGetTime, OutputVar [, Filename, WhichTime]\nRetrieves the datetime stamp of a file or folder.", + \ 'FileGetVersion' : + \ "FileGetVersion, OutputVar [, Filename]\nRetrieves the version of a file.", + \ 'FileInstall' : + \ "FileInstall, Source, Dest [, Flag]\nIncludes the specified file inside the compiled version of the script.", + \ 'FileMove' : + \ "FileMove, SourcePattern, DestPattern [, Flag]\nMoves or renames one or more files.", + \ 'FileMoveDir' : + \ "FileMoveDir, Source, Dest [, Flag]\nMoves a folder along with all its sub-folders and files. It can also rename a folder.", + \ 'FileOpen' : + \ "file := FileOpen(Filename, Flags [, Encoding])\nOpens a file.", + \ 'FileRead' : + \ "FileRead, OutputVar, Filename\nReads a file's contents into a variable.", + \ 'FileReadLine' : + \ "FileReadLine, OutputVar, Filename, LineNum\nReads the specified line from a file and stores the text in a variable.", + \ 'FileRecycle' : + \ "FileRecycle, FilePattern\nSends a file or directory to the recycle bin, if possible.", + \ 'FileRecycleEmpty' : + \ "FileRecycleEmpty [, DriveLetter]\nEmpties the recycle bin. ", + \ 'FileRemoveDir' : + \ "FileRemoveDir, DirName [, Recurse?]\nDeletes a folder.", + \ 'FileSelectFile' : + \ "FileSelectFile, OutputVar [, Options, RootDir\Filename, Prompt, Filter]\nDisplays a standard dialog that allows the user to open or save file(s).", + \ 'FileSelectFolder' : + \ "FileSelectFolder, OutputVar [, StartingFolder, Options, Prompt]\nDisplays a standard dialog that allows the user to select a folder.", + \ 'FileSetAttrib' : + \ "FileSetAttrib, Attributes [, FilePattern, OperateOnFolders?, Recurse?]\nChanges the attributes of one or more files or folders. Wildcards are supported.", + \ 'FileSetTime' : + \ "FileSetTime [, YYYYMMDDHH24MISS, FilePattern, WhichTime, OperateOnFolders?, Recurse?]\nChanges the datetime stamp of one or more files or folders. Wildcards are supported.", + \ 'For-loop' : + \ "For Key [, Value] in Expression\nRepeats a series of commands once for each key-value pair in an object.", + \ 'FormatTime' : + \ "FormatTime, OutputVar [, YYYYMMDDHH24MISS, Format]\nTransforms a YYYYMMDDHH24MISS timestamp into the specified date/time format.", + \ 'GetKeyState' : + \ "GetKeyState, OutputVar, KeyName [, Mode]\n KeyIsDown := GetKeyState(\"KeyName\" [, \"Mode\"])\nChecks if a keyboard key or mouse/joystick button is down or up. Also retrieves joystick status.", + \ 'Gosub' : + \ "Gosub, Label\nJumps to the specified label and continues execution until Return is encountered.", + \ 'Goto' : + \ "Goto, Label\nJumps to the specified label and continues execution.", + \ 'GroupActivate' : + \ "GroupActivate, GroupName [, R]\nActivates the next window in a window group that was defined with GroupAdd. ", + \ 'GroupAdd' : + \ "GroupAdd, GroupName [, WinTitle, WinText, Label, ExcludeTitle, ExcludeText]\nAdds a window specification to a window group, creating the group if necessary.", + \ 'GroupClose' : + \ "GroupClose, GroupName [, A|R]\nCloses the active window if it was just activated by GroupActivate or GroupDeactivate. It then activates the next window in the series. It can also close all windows in a group. ", + \ 'GroupDeactivate' : + \ "GroupDeactivate, GroupName [, R]\nSimilar to GroupActivate except activates the next window not in the group.", + \ 'GUI' : + \ "Gui, sub-command [, Param2, Param3, Param4]\nCreates and manages windows and controls. Such windows can be used as data entry forms or custom user interfaces.", + \ 'GuiControl' : + \ "GuiControl, Sub-command, ControlID [, Param3]\nMakes a variety of changes to a control in a GUI window.", + \ 'GuiControlGet' : + \ "GuiControlGet, OutputVar [, Sub-command, ControlID, Param4]\nRetrieves various types of information about a control in a GUI window. ", + \ 'Hotkey' : + \ "Hotkey, KeyName [, Label, Options]\nHotkey, IfWinActive/Exist [, WinTitle, WinText]\nHotkey, If, Expression\nCreates, modifies, enables, or disables a hotkey while the script is running.", + \ 'If' : + \ "IfEqual, var, value (same: if var = value)\nIfNotEqual, var, value (same: if var <> value) (!= can be used in place of <>)\nIfGreater, var, value (same: if var > value)\nIfGreaterOrEqual, var, value (same: if var >= value)\nIfLess, var, value (same: if var < value)\nIfLessOrEqual, var, value (same: if var <= value)\nIf var ; If var's contents are blank or 0, it is considered false. Otherwise, it is true.\nif Var between LowerBound and UpperBound\nif Var not between LowerBound and UpperBound\nSee also: IfInString\nSpecifies the command(s) to perform if the comparison of a variable to a value evalutes to TRUE. When more than one command is present, enclose them in a block (braces).\nif Var in MatchList\nif Var not in MatchList
\n
if Var contains MatchList\nif Var not contains MatchList\nChecks whether a variable's contents match one of the items in a list.\n", + \ 'IfEqual' : + \ "IfEqual, var, value (same: if var = value)\nIfNotEqual, var, value (same: if var <> value) (!= can be used in place of <>)\nIfGreater, var, value (same: if var > value)\nIfGreaterOrEqual, var, value (same: if var >= value)\nIfLess, var, value (same: if var < value)\nIfLessOrEqual, var, value (same: if var <= value)\nIf var ; If var's contents are blank or 0, it is considered false. Otherwise, it is true.\nSee also: IfInString\nSpecifies the command(s) to perform if the comparison of a variable to a value evalutes to TRUE. When more than one command is present, enclose them in a block (braces).", + \ 'IfNotEqual' : + \ "IfEqual, var, value (same: if var = value)\nIfNotEqual, var, value (same: if var <> value) (!= can be used in place of <>)\nIfGreater, var, value (same: if var > value)\nIfGreaterOrEqual, var, value (same: if var >= value)\nIfLess, var, value (same: if var < value)\nIfLessOrEqual, var, value (same: if var <= value)\nIf var ; If var's contents are blank or 0, it is considered false. Otherwise, it is true.\nSee also: IfInString\nSpecifies the command(s) to perform if the comparison of a variable to a value evalutes to TRUE. When more than one command is present, enclose them in a block (braces).", + \ 'IfLess' : + \ "IfEqual, var, value (same: if var = value)\nIfNotEqual, var, value (same: if var <> value) (!= can be used in place of <>)\nIfGreater, var, value (same: if var > value)\nIfGreaterOrEqual, var, value (same: if var >= value)\nIfLess, var, value (same: if var < value)\nIfLessOrEqual, var, value (same: if var <= value)\nIf var ; If var's contents are blank or 0, it is considered false. Otherwise, it is true.\nSee also: IfInString\nSpecifies the command(s) to perform if the comparison of a variable to a value evalutes to TRUE. When more than one command is present, enclose them in a block (braces).", + \ 'IfLessOrEqual' : + \ "IfEqual, var, value (same: if var = value)\nIfNotEqual, var, value (same: if var <> value) (!= can be used in place of <>)\nIfGreater, var, value (same: if var > value)\nIfGreaterOrEqual, var, value (same: if var >= value)\nIfLess, var, value (same: if var < value)\nIfLessOrEqual, var, value (same: if var <= value)\nIf var ; If var's contents are blank or 0, it is considered false. Otherwise, it is true.\nSee also: IfInString\nSpecifies the command(s) to perform if the comparison of a variable to a value evalutes to TRUE. When more than one command is present, enclose them in a block (braces).", + \ 'IfGreater' : + \ "IfEqual, var, value (same: if var = value)\nIfNotEqual, var, value (same: if var <> value) (!= can be used in place of <>)\nIfGreater, var, value (same: if var > value)\nIfGreaterOrEqual, var, value (same: if var >= value)\nIfLess, var, value (same: if var < value)\nIfLessOrEqual, var, value (same: if var <= value)\nIf var ; If var's contents are blank or 0, it is considered false. Otherwise, it is true.\nSee also: IfInString\nSpecifies the command(s) to perform if the comparison of a variable to a value evalutes to TRUE. When more than one command is present, enclose them in a block (braces).", + \ 'IfGreaterOrEqual' : + \ "IfEqual, var, value (same: if var = value)\nIfNotEqual, var, value (same: if var <> value) (!= can be used in place of <>)\nIfGreater, var, value (same: if var > value)\nIfGreaterOrEqual, var, value (same: if var >= value)\nIfLess, var, value (same: if var < value)\nIfLessOrEqual, var, value (same: if var <= value)\nIf var ; If var's contents are blank or 0, it is considered false. Otherwise, it is true.\nSee also: IfInString\nSpecifies the command(s) to perform if the comparison of a variable to a value evalutes to TRUE. When more than one command is present, enclose them in a block (braces).", + \ 'IfExist' : + \ "IfExist, FilePattern\nIfNotExist, FilePattern\nAttributeString := FileExist(FilePattern)\nChecks for the existence of a file or folder.", + \ 'IfNotExist' : + \ "IfExist, FilePattern\nIfNotExist, FilePattern\nAttributeString := FileExist(FilePattern)\nChecks for the existence of a file or folder.", + \ 'if' : + \ "if (expression)\nSpecifies the command(s) to perform if an expression evaluates to TRUE. ", + \ 'contains' : + \ "if Var in MatchList\nif Var not in MatchList
\n
if Var contains MatchList\nif Var not contains MatchList\nChecks whether a variable's contents match one of the items in a list.", + \ 'IfInString' : + \ "IfInString, var, SearchString\nIfNotInString, var, SearchString\nPosition := InStr(Haystack, Needle [, CaseSensitive?, StartingPos]]) ; See the InStr() function for details.\nChecks if a variable contains the specified string.", + \ 'IfNotInString' : + \ "IfInString, var, SearchString\nIfNotInString, var, SearchString\nPosition := InStr(Haystack, Needle [, CaseSensitive?, StartingPos]]) ; See the InStr() function for details.\nChecks if a variable contains the specified string.", + \ 'IfMsgBox' : + \ "IfMsgBox, ButtonName\nChecks which button was pushed by the user during the most recent MsgBox command.", + \ 'IfWinActive' : + \ "IfWinActive [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nIfWinNotActive [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nUniqueID := WinActive(\"WinTitle\", \"WinText\", \"ExcludeTitle\", \"ExcludeText\")\nChecks if the specified window exists and is currently active (foremost).", + \ 'IfWinNotActive' : + \ "IfWinActive [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nIfWinNotActive [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nUniqueID := WinActive(\"WinTitle\", \"WinText\", \"ExcludeTitle\", \"ExcludeText\")\nChecks if the specified window exists and is currently active (foremost).", + \ 'IfWinExist' : + \ "IfWinExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nIfWinNotExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nUniqueID := WinExist(\"WinTitle\", \"WinText\", \"ExcludeTitle\", \"ExcludeText\")\nChecks if a matching window exists. WinExist() returns the Unique ID (HWND) of the first matching window.", + \ 'IfWinNotExist' : + \ "IfWinExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nIfWinNotExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nUniqueID := WinExist(\"WinTitle\", \"WinText\", \"ExcludeTitle\", \"ExcludeText\")\nChecks if a matching window exists. WinExist() returns the Unique ID (HWND) of the first matching window.", + \ 'WinExist' : + \ "IfWinExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nIfWinNotExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nUniqueID := WinExist(\"WinTitle\", \"WinText\", \"ExcludeTitle\", \"ExcludeText\")\nChecks if a matching window exists. WinExist() returns the Unique ID (HWND) of the first matching window.", + \ 'ImageSearch' : + \ "ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile\nSearches a region of the screen for an image.", + \ 'IniDelete' : + \ "IniDelete, Filename, Section [, Key]\nDeletes a value from a standard format .ini file. ", + \ 'IniRead' : + \ "IniRead, OutputVar, Filename [, Section, Key, Default]\nReads a value from a standard format .ini file.", + \ 'IniWrite' : + \ "IniWrite, Value, Filename, Section [, Key]\nWrites a value to a standard format .ini file.", + \ 'Input' : + \ "Input [, OutputVar, Options, EndKeys, MatchList]\nWaits for the user to type a string (not supported on Windows 9x: it does nothing).", + \ 'InputBox' : + \ "InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]\nDisplays an input box to ask the user to enter a string.", + \ 'KeyHistory' : + \ "KeyHistory\nDisplays script info and a history of the most recent keystrokes and mouse clicks.", + \ 'KeyWait' : + \ "KeyWait, KeyName [, Options]\nWaits for a key or mouse/joystick button to be released or pressed down. ", + \ 'ListHotkeys' : + \ "ListHotkeys\nDisplays the hotkeys in use by the current script, whether their subroutines are currently running, and whether or not they use the keyboard or mouse hook.", + \ 'ListLines' : + \ "ListLines [, On|Off]\nDisplays the script lines most recently executed.", + \ 'ListVars' : + \ "ListVars\nDisplays the script's variables: their names and current contents.", + \ 'ListView' : + \ "Gui, Add, ListView, Options, ColumnTitle1|ColumnTitle2|...\nA List-View is one of the most elaborate controls provided by the operating system. In its most recognizable form, it displays a tabular view of rows and columns, the most common example of which is Explorer's list of files and folders (detail view).

\n

Though it may be elaborate, a ListView's basic features are easy to use. The syntax for creating a ListView is:", + \ 'Loop' : + \ "Loop [, Count]\nPerform a series of commands repeatedly: either the specified number of times or until break is encountered.", + \ 'Menu' : + \ "Menu, MenuName, Cmd [, P3, P4, P5]\nCreates, deletes, modifies and displays menus and menu items. Changes the tray icon and its tooltip. Controls whether the main window of a compiled script can be opened.", + \ 'MouseClick' : + \ "MouseClick [, WhichButton , X, Y, ClickCount, Speed, D|U, R]\nClicks or holds down a mouse button, or turns the mouse wheel. NOTE: The Click command is generally more flexible and easier to use.", + \ 'MouseClickDrag' : + \ "MouseClickDrag, WhichButton, X1, Y1, X2, Y2 [, Speed, R]\nClicks and holds the specified mouse button, moves the mouse to the destination coordinates, then releases the button.", + \ 'MouseGetPos' : + \ "MouseGetPos, [OutputVarX, OutputVarY, OutputVarWin, OutputVarControl, 1|2|3]\nRetrieves the current position of the mouse cursor, and optionally which window and control it is hovering over. ", + \ 'MouseMove' : + \ "MouseMove, X, Y [, Speed, R]\nMoves the mouse cursor.", + \ 'MsgBox' : + \ "MsgBox, Text\nMsgBox [, Options, Title, Text, Timeout]\nDisplays the specified text in a small window containing one or more buttons (such as Yes and No).", + \ 'ObjAddRef()' : + \ "ObjAddRef(Ptr)
ObjRelease(Ptr)\nIncrements or decrements an object's reference count.", + \ 'ObjRelease()' : + \ "ObjAddRef(Ptr)
ObjRelease(Ptr)\nIncrements or decrements an object's reference count.", + \ 'OnExit' : + \ "OnExit [, Label]\nSpecifies a subroutine to run automatically when the script exits.", + \ 'OnMessage' : + \ "OnMessage(MsgNumber [, \"FunctionName\", MaxThreads])\nSpecifies a function to call automatically when the script receives the specified message.", + \ 'OutputDebug' : + \ "OutputDebug, Text\nSends a string to the debugger (if any) for display.", + \ 'Pause' : + \ "#p::Pause ; Pressing Win+P once will pause the script. Pressing it again will unpause.\nPause [, On|Off|Toggle, OperateOnUnderlyingThread?]\nPauses the script's current thread.", + \ 'PixelGetColor' : + \ "PixelGetColor, OutputVar, X, Y [, Alt|Slow|RGB]\nRetrieves the color of the pixel at the specified x,y coordinates.", + \ 'PixelSearch' : + \ "PixelSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ColorID [, Variation, Fast|RGB]\nSearches a region of the screen for a pixel of the specified color.", + \ 'PostMessage' : + \ "PostMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]\nSendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]\nSends a message to a window or control (SendMessage additionally waits for acknowledgement).", + \ 'SendMessage' : + \ "PostMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]\nSendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]\nSends a message to a window or control (SendMessage additionally waits for acknowledgement).", + \ 'Process' : + \ "Process, Cmd, PID-or-Name [, Param3]\nPerforms one of the following operations on a process: checks if it exists; changes its priority; closes it; waits for it to close.", + \ 'Progress' : + \ "SplashImage, Off\nSplashImage [, ImageFile, Options, SubText, MainText, WinTitle, FontName]\nProgress, Off\nProgress, ProgressParam1 [, SubText, MainText, WinTitle, FontName]\nCreates or updates a window containing a progress bar or an image.", + \ 'SplashImage' : + \ "SplashImage, Off\nSplashImage [, ImageFile, Options, SubText, MainText, WinTitle, FontName]\nProgress, Off\nProgress, ProgressParam1 [, SubText, MainText, WinTitle, FontName]\nCreates or updates a window containing a progress bar or an image.", + \ 'Random' : + \ "Random, OutputVar [, Min, Max]\nRandom, , NewSeed\nGenerates a pseudo-random number.", + \ 'RegDelete' : + \ "RegDelete, RootKey, SubKey [, ValueName]\nDeletes a subkey or value from the registry. ", + \ 'RegExMatch' : + \ "FoundPos := RegExMatch(Haystack, NeedleRegEx [, UnquotedOutputVar = \"\", StartingPosition = 1])\nDetermines whether a string contains a pattern (regular expression).", + \ 'RegExReplace' : + \ "NewStr := RegExReplace(Haystack, NeedleRegEx [, Replacement = \"\", OutputVarCount = \"\", Limit = -1, StartingPosition = 1])\nReplaces occurrences of a pattern (regular expression) inside a string.", + \ 'RegisterCallback' : + \ "Address := RegisterCallback(\"FunctionName\" [, Options = \"\", ParamCount = FormalCount, EventInfo = Address])\nCreates a machine-code address that when called, redirects the call to a function in the script.", + \ 'RegRead' : + \ "RegRead, OutputVar, RootKey, SubKey [, ValueName]\nReads a value from the registry.", + \ 'RegWrite' : + \ "RegWrite, ValueType, RootKey, SubKey [, ValueName, Value]\nWrites a value to the registry.", + \ 'Reload' : + \ "Reload\nReplaces the currently running instance of the script with a new one. ", + \ 'Return' : + \ "Return [, Expression]\nReturns from a subroutine to which execution had previously jumped via function-call, Gosub, Hotkey activation, GroupActivate, or other means. ", + \ 'Run' : + \ "Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]\nRuns an external program. Unlike Run, RunWait will wait until\nthe program finishes before continuing.", + \ 'RunWait' : + \ "Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]\nRuns an external program. Unlike Run, RunWait will wait until\nthe program finishes before continuing.", + \ 'RunAs' : + \ "RunAs [, User, Password, Domain]\nSpecifies a set of user credentials to use for all subsequent uses of Run and RunWait. Requires Windows 2000/XP or later.", + \ 'Send' : + \ "Send Keys\nSendRaw Keys\nSendInput Keys\nSendPlay Keys\nSendEvent Keys\nSends simulated keystrokes and mouse clicks to the active window.", + \ 'SendRaw' : + \ "Send Keys\nSendRaw Keys\nSendInput Keys\nSendPlay Keys\nSendEvent Keys\nSends simulated keystrokes and mouse clicks to the active window.", + \ 'SendInput' : + \ "Send Keys\nSendRaw Keys\nSendInput Keys\nSendPlay Keys\nSendEvent Keys\nSends simulated keystrokes and mouse clicks to the active window.", + \ 'SendPlay' : + \ "Send Keys\nSendRaw Keys\nSendInput Keys\nSendPlay Keys\nSendEvent Keys\nSends simulated keystrokes and mouse clicks to the active window.", + \ 'SendEvent' : + \ "Send Keys\nSendRaw Keys\nSendInput Keys\nSendPlay Keys\nSendEvent Keys\nSends simulated keystrokes and mouse clicks to the active window.", + \ 'SendLevel' : + \ "SendLevel, Level\nControls which artificial keyboard and mouse events are ignored by hotkeys and hotstrings.", + \ 'SendMode' : + \ "SendMode Input|Play|Event|InputThenPlay\nMakes Send synonymous with SendInput or SendPlay rather than the default (SendEvent). Also makes Click and MouseMove/Click/Drag use the specified method.", + \ 'SetBatchLines' : + \ "SetBatchLines, 20ms\nSetBatchLines, LineCount\nDetermines how fast a script will run (affects CPU utilization).", + \ 'SetControlDelay' : + \ "SetControlDelay, Delay\nSets the delay that will occur after each control-modifying command.", + \ 'SetDefaultMouseSpeed' : + \ "SetDefaultMouseSpeed, Speed\nSets the mouse speed that will be used if unspecified in Click and MouseMove/Click/Drag.", + \ 'SetEnv' : + \ "SetEnv, Var, Value\nVar = Value\nAssigns the specified value to a variable.", + \ 'SetFormat' : + \ "SetFormat, NumberType, Format\nSets the format of integers and floating point numbers generated by math operations.", + \ 'SetKeyDelay' : + \ "SetKeyDelay [, Delay, PressDuration, Play]\nSets the delay that will occur after each keystroke sent by Send and ControlSend.", + \ 'SetMouseDelay' : + \ "SetMouseDelay, Delay [, Play]\nSets the delay that will occur after each mouse movement or click.", + \ 'SetCapsLockState' : + \ "SetCapsLockState [, State]\nSetNumLockState [, State]\nSetScrollLockState [, State]\nSets the state of the Capslock/NumLock/ScrollLock key. Can also force the key to stay on or off.", + \ 'SetNumLockState' : + \ "SetCapsLockState [, State]\nSetNumLockState [, State]\nSetScrollLockState [, State]\nSets the state of the Capslock/NumLock/ScrollLock key. Can also force the key to stay on or off.", + \ 'SetScrollLockState' : + \ "SetCapsLockState [, State]\nSetNumLockState [, State]\nSetScrollLockState [, State]\nSets the state of the Capslock/NumLock/ScrollLock key. Can also force the key to stay on or off.", + \ 'SetRegView' : + \ "SetRegView, RegView\nSets the registry view used by RegRead, RegWrite, RegDelete and registry loops.", + \ 'SetStoreCapslockMode' : + \ "SetStoreCapslockMode, On|Off\nWhether to restore the state of CapsLock after a Send.", + \ 'SetTimer' : + \ "SetTimer [, Label, Period|On|Off, Priority]\nCauses a subroutine to be launched automatically and repeatedly at a specified time interval.", + \ 'SetTitleMatchMode' : + \ "SetTitleMatchMode, MatchMode\nSetTitleMatchMode, Fast|Slow\nSets the matching behavior of the WinTitle parameter in commands such as WinWait.", + \ 'SetWinDelay' : + \ "SetWinDelay, Delay\nSets the delay that will occur after each windowing command, such as WinActivate.", + \ 'SetWorkingDir' : + \ "SetWorkingDir, DirName\nChanges the script's current working directory. ", + \ 'Shutdown' : + \ "Shutdown, Code\nShuts down, restarts, or logs off the system.", + \ 'Sleep' : + \ "Sleep, DelayInMilliseconds\nWaits the specified amount of time before continuing.", + \ 'Sort' : + \ "Sort, VarName [, Options]\nArranges a variable's contents in alphabetical, numerical, or random order (optionally removing duplicates).", + \ 'SoundBeep' : + \ "SoundBeep [, Frequency, Duration]\nEmits a tone from the PC speaker.", + \ 'SoundGet' : + \ "SoundGet, OutputVar [, ComponentType, ControlType, DeviceNumber]\nRetrieves various settings from a sound device (master mute, master volume, etc.)", + \ 'SoundGetWaveVolume' : + \ "SoundGetWaveVolume, OutputVar [, DeviceNumber]\nRetrieves the wave output volume for a sound device.", + \ 'SoundPlay' : + \ "SoundPlay, Filename [, wait]\nPlays a sound, video, or other supported file type. ", + \ 'SoundSet' : + \ "SoundSet, NewSetting [, ComponentType, ControlType, DeviceNumber]\nChanges various settings of a sound device (master mute, master volume, etc.)", + \ 'SoundSetWaveVolume' : + \ "SoundSetWaveVolume, Percent [, DeviceNumber]\nChanges the wave output volume for a sound device.", + \ 'SplashTextOn' : + \ "SplashTextOff\nSplashTextOn [, Width, Height, Title, Text]\nCreates a customizable text popup window.", + \ 'SplashTextOff' : + \ "SplashTextOff\nSplashTextOn [, Width, Height, Title, Text]\nCreates a customizable text popup window.", + \ 'SplitPath' : + \ "SplitPath, InputVar [, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive]\nSeparates a file name or URL into its name, directory, extension, and drive.", + \ 'StatusbarGetText' : + \ "StatusBarGetText, OutputVar [, Part#, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves the text from a standard status bar control. ", + \ 'StatusBarWait' : + \ "StatusBarWait [, BarText, Seconds, Part#, WinTitle, WinText, Interval, ExcludeTitle, ExcludeText]\nWaits until a window's status bar contains the specified string.", + \ 'StringCaseSense' : + \ "StringCaseSense, On|Off|Locale\nDetermines whether string comparisons are case sensitive (default is \"not case sensitive\"). ", + \ 'StringGetPos' : + \ "StringGetPos, OutputVar, InputVar, SearchText [, L#|R#, Offset]\nPosition := InStr(Haystack, Needle [, CaseSensitive?, StartingPos]) ; See the InStr() function for details.\nRetrieves the position of the specified substring within a string.", + \ 'StringLeft' : + \ "StringLeft, OutputVar, InputVar, Count\nStringRight, OutputVar, InputVar, Count\nNewStr := SubStr(String, StartPos [, Length]) ; See the SubStr() function for details.\nRetrieves a number of characters from the left or right-hand side of\na string.", + \ 'StringRight' : + \ "StringLeft, OutputVar, InputVar, Count\nStringRight, OutputVar, InputVar, Count\nNewStr := SubStr(String, StartPos [, Length]) ; See the SubStr() function for details.\nRetrieves a number of characters from the left or right-hand side of\na string.", + \ 'StrLen' : + \ "OutputVar := StrLen(InputVar)\nStringLen, OutputVar, InputVar\nRetrieves the count of how many characters are in a string.", + \ 'StringLen' : + \ "OutputVar := StrLen(InputVar)\nStringLen, OutputVar, InputVar\nRetrieves the count of how many characters are in a string.", + \ 'StringLower' : + \ "StringLower, OutputVar, InputVar [, T]\nStringUpper, OutputVar, InputVar [, T]\nConverts a string to lowercase or uppercase.", + \ 'StringUpper' : + \ "StringLower, OutputVar, InputVar [, T]\nStringUpper, OutputVar, InputVar [, T]\nConverts a string to lowercase or uppercase.", + \ 'StringMid' : + \ "StringMid, OutputVar, InputVar, StartChar [, Count , L]\nNewStr := SubStr(String, StartPos [, Length]) ; See the SubStr() function for details.\nRetrieves one or more characters from the specified position in a string.", + \ 'StringReplace' : + \ "StringReplace, OutputVar, InputVar, SearchText [, ReplaceText, ReplaceAll?]\nReplaces the specified substring with a new string.", + \ 'StringSplit' : + \ "StringSplit, OutputArray, InputVar [, Delimiters, OmitChars]\nArray := StrSplit(String [, Delimiters, OmitChars]) ; [v1.1.13+]\nSeparates a string into an array of substrings using the specified delimiters.", + \ 'StrSplit()' : + \ "StringSplit, OutputArray, InputVar [, Delimiters, OmitChars]\nArray := StrSplit(String [, Delimiters, OmitChars]) ; [v1.1.13+]\nSeparates a string into an array of substrings using the specified delimiters.", + \ 'StringTrimLeft' : + \ "StringTrimLeft, OutputVar, InputVar, Count\nStringTrimRight, OutputVar, InputVar, Count\nNewStr := SubStr(String, StartPos [, Length]) ; See the SubStr() function for details.\nRemoves a number of characters from the left or right-hand side of a\nstring.", + \ 'StringTrimRight' : + \ "StringTrimLeft, OutputVar, InputVar, Count\nStringTrimRight, OutputVar, InputVar, Count\nNewStr := SubStr(String, StartPos [, Length]) ; See the SubStr() function for details.\nRemoves a number of characters from the left or right-hand side of a\nstring.", + \ 'StrPut' : + \ "StrPut(String [, Encoding = None ] )\nStrPut(String, Address [, Length] [, Encoding = None ] )\nStrGet(Address [, Length] [, Encoding = None ] )\nCopies a string to or from a memory address, optionally converting to or from a given code page.", + \ 'StrGet' : + \ "StrPut(String [, Encoding = None ] )\nStrPut(String, Address [, Length] [, Encoding = None ] )\nStrGet(Address [, Length] [, Encoding = None ] )\nCopies a string to or from a memory address, optionally converting to or from a given code page.", + \ 'Suspend' : + \ "Suspend [, Mode]\nDisables or enables all or selected hotkeys and hotstrings.", + \ 'SysGet' : + \ "SysGet, OutputVar, Sub-command [, Param3]\nRetrieves screen resolution, multi-monitor info, dimensions of system objects, and other system properties.", + \ 'Thread' : + \ "Thread, NoTimers [, false]\nThread, Priority, n\nThread, Interrupt [, Duration, LineCount]\nSets the priority or interruptibility of threads. It can also temporarily disable all timers.", + \ 'Throw' : + \ "Throw [, Expression]\nSignals the occurrence of an error. This signal can be caught by a try-catch statement.", + \ 'ToolTip' : + \ "ToolTip [, Text, X, Y, WhichToolTip]\nCreates an always-on-top window anywhere on the screen.", + \ 'Transform' : + \ "Transform, OutputVar, Cmd, Value1 [, Value2]\nPerforms miscellaneous math functions, bitwise operations, and tasks such as ASCII/Unicode conversion.", + \ 'TrayTip' : + \ "TrayTip [, Title, Text, Seconds, Options]\nCreates a balloon message window near the tray icon. Requires Windows 2000/XP or later.", + \ 'TreeView' : + \ "Gui, Add, TreeView, Options\nA Tree-View displays a hierarchy of items by indenting child items beneath their parents. The most common example is Explorer's tree of drives and folders.", + \ 'Trim' : + \ "Result := Trim(String, OmitChars = \" `t\")\nResult := LTrim(String, OmitChars = \" `t\")\nResult := RTrim(String, OmitChars = \" `t\")\nTrims characters from the beginning and/or end of a string.", + \ 'Try' : + \ "Try Statement\nGuards one or more statements (commands or expressions) against runtime errors and exceptions thrown by the throw command.", + \ 'Until' : + \ "Loop {\n ...\n} Until Expression\nApplies a condition to the continuation of a Loop or For-loop.", + \ 'UrlDownloadToFile' : + \ "UrlDownloadToFile, URL, Filename\nDownloads a file from the Internet.", + \ 'VarSetCapacity()' : + \ "GrantedCapacity := VarSetCapacity(UnquotedVarName [, RequestedCapacity, FillByte])\nEnlarges a variable's holding capacity or frees its memory. Normally, this is necessary only for unusual circumstances such as DllCall.", + \ 'While-loop' : + \ "While Expression\nPerforms a series of commands repeatedly until the specified expression evaluates to false.", + \ 'WinActivate' : + \ "WinActivate [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nActivates the specified window (makes it foremost).", + \ 'WinActivateBottom' : + \ "WinActivateBottom [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nSame as WinActivate except that it activates the bottommost (least recently active) matching window rather than the topmost.", + \ 'WinClose' : + \ "WinClose [, WinTitle, WinText, SecondsToWait, ExcludeTitle, ExcludeText]\nCloses the specified window.", + \ 'WinGet' : + \ "WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves the specified window's unique ID, process ID, process name, or a list of its controls. It can also retrieve a list of all windows matching the specified criteria.", + \ 'WinGetActiveStats' : + \ "WinGetActiveStats, Title, Width, Height, X, Y\nCombines the functions of WinGetActiveTitle and WinGetPos into one command.", + \ 'WinGetActiveTitle' : + \ "WinGetActiveTitle, OutputVar\nRetrieves the title of the active window.", + \ 'WinGetClass' : + \ "WinGetClass, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves the specified window's class name.", + \ 'WinGetPos' : + \ "WinGetPos [, X, Y, Width, Height, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves the position and size of the specified window.", + \ 'WinGetText' : + \ "WinGetText, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves the text from the specified window.", + \ 'WinGetTitle' : + \ "WinGetTitle, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nRetrieves the title of the specified window.", + \ 'WinHide' : + \ "WinHide [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nHides the specified window.", + \ 'WinKill' : + \ "WinKill [, WinTitle, WinText, SecondsToWait, ExcludeTitle, ExcludeText]\nForces the specified window to close.", + \ 'WinMaximize' : + \ "WinMaximize [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nEnlarges the specified window to its maximum size. ", + \ 'WinMenuSelectItem' : + \ "WinMenuSelectItem, WinTitle, WinText, Menu [, SubMenu1, SubMenu2, SubMenu3, SubMenu4, SubMenu5, SubMenu6, ExcludeTitle, ExcludeText]\nInvokes a menu item from the menu bar of the specified window.", + \ 'WinMinimize' : + \ "WinMinimize [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nCollapses the specified window into a button on the task bar.", + \ 'WinMinimizeAll' : + \ "WinMinimizeAll\nWinMinimizeAllUndo\nMinimizes or unminimizes all windows.", + \ 'WinMinimizeAllUndo' : + \ "WinMinimizeAll\nWinMinimizeAllUndo\nMinimizes or unminimizes all windows.", + \ 'WinMove' : + \ "WinMove, X, Y\nWinMove, WinTitle, WinText, X, Y [, Width, Height, ExcludeTitle, ExcludeText]\nChanges the position and/or size of the specified window.", + \ 'WinRestore' : + \ "WinRestore [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nUnminimizes or unmaximizes the specified window if it is minimized or maximized.", + \ 'WinSet' : + \ "WinSet, Attribute, Value [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nMakes a variety of changes to the specified window, such as \"always on top\" and transparency.", + \ 'WinSetTitle' : + \ "WinSetTitle, NewTitle\nWinSetTitle, WinTitle, WinText, NewTitle [, ExcludeTitle, ExcludeText]\nChanges the title of the specified window.", + \ 'WinShow' : + \ "WinShow [, WinTitle, WinText, ExcludeTitle, ExcludeText]\nUnhides the specified window.", + \ 'WinWait' : + \ "WinWait [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]\nWaits until the specified window\nexists.", + \ 'WinWaitActive' : + \ "WinWaitActive [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]\nWinWaitNotActive [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]\nWaits until the specified window\nis active or not active. ", + \ 'WinWaitNotActive' : + \ "WinWaitActive [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]\nWinWaitNotActive [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]\nWaits until the specified window\nis active or not active. ", + \ 'WinWaitClose' : + \ "WinWaitClose [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]\nWaits until the specified window\ndoes not exist.", + \ '#AllowSameLineComments' : + \ "#AllowSameLineComments\nRemoved in v1.1.09: AutoIt scripts are no longer supported.

\n

Only for AutoIt v2 (.aut) scripts: Allows a comment to appear on the same line as a command.", + \ '#ClipboardTimeout' : + \ "#ClipboardTimeout Milliseconds\nChanges how long the script keeps trying to access the clipboard when the first attempt fails.", + \ '#CommentFlag' : + \ "#CommentFlag NewString\nChanges the script's comment symbol from semicolon to some other string.", + \ '#ErrorStdOut' : + \ "#ErrorStdOut\nSends any syntax error that prevents a script from launching to stdout rather than displaying a dialog.", + \ '#EscapeChar' : + \ "#EscapeChar NewChar\nChanges the script's escape character (e.g. accent vs. backslash).", + \ '#HotkeyInterval' : + \ "#HotkeyInterval Milliseconds\nAlong with #MaxHotkeysPerInterval, specifies the rate of hotkey activations beyond which a warning dialog will be displayed.", + \ '#HotkeyModifierTimeout' : + \ "#HotkeyModifierTimeout Milliseconds\nAffects the behavior of hotkey modifiers: CTRL, ALT, WIN, and SHIFT.", + \ '#Hotstring' : + \ "#Hotstring NoMouse\n#Hotstring EndChars NewChars\n#Hotstring NewOptions\nChanges hotstring options or ending characters.", + \ '#If' : + \ "#If [, Expression ]\nCreates context-sensitive hotkeys and hotstrings. Such hotkeys perform a different action (or none at all) depending on the result of an expression.", + \ '#IfTimeout' : + \ "#IfTimeout Timeout\nSets the maximum time that may be spent evaluating a single #If expression.", + \ '#IfWinActive' : + \ "#IfWinActive [, WinTitle, WinText]\n#IfWinExist [, WinTitle, WinText]\n#IfWinNotActive [, WinTitle, WinText]\n#IfWinNotExist [, WinTitle, WinText]\n#If [, Expression]\nCreates context-sensitive hotkeys and hotstrings. Such hotkeys perform a different action (or none at all) depending on the type of window that is active or exists.", + \ '#IfWinNotActive' : + \ "#IfWinActive [, WinTitle, WinText]\n#IfWinExist [, WinTitle, WinText]\n#IfWinNotActive [, WinTitle, WinText]\n#IfWinNotExist [, WinTitle, WinText]\n#If [, Expression]\nCreates context-sensitive hotkeys and hotstrings. Such hotkeys perform a different action (or none at all) depending on the type of window that is active or exists.", + \ '#IfWinExist' : + \ "#IfWinActive [, WinTitle, WinText]\n#IfWinExist [, WinTitle, WinText]\n#IfWinNotActive [, WinTitle, WinText]\n#IfWinNotExist [, WinTitle, WinText]\n#If [, Expression]\nCreates context-sensitive hotkeys and hotstrings. Such hotkeys perform a different action (or none at all) depending on the type of window that is active or exists.", + \ '#IfWinNotExist' : + \ "#IfWinActive [, WinTitle, WinText]\n#IfWinExist [, WinTitle, WinText]\n#IfWinNotActive [, WinTitle, WinText]\n#IfWinNotExist [, WinTitle, WinText]\n#If [, Expression]\nCreates context-sensitive hotkeys and hotstrings. Such hotkeys perform a different action (or none at all) depending on the type of window that is active or exists.", + \ '#Include' : + \ "#Include FileOrDirName\n#Include \n#IncludeAgain FileOrDirName\nCauses the script to behave as though the specified file's contents are present at this exact position.", + \ '#InputLevel' : + \ "#InputLevel [, Level]\nControls which artificial keyboard and mouse events are ignored by hotkeys and hotstrings.", + \ '#InstallKeybdHook' : + \ "#InstallKeybdHook\nForces the unconditional installation of the keyboard hook.", + \ '#InstallMouseHook' : + \ "#InstallMouseHook\nForces the unconditional installation of the mouse hook.", + \ '#KeyHistory' : + \ "#KeyHistory MaxEvents\nSets the maximum number of keyboard and mouse events displayed by the KeyHistory window. You can set it to 0 to disable key history.", + \ '#MaxHotkeysPerInterval' : + \ "#MaxHotkeysPerInterval Value\nAlong with #HotkeyInterval, specifies the rate of hotkey activations beyond which a warning dialog will be displayed.", + \ '#MaxMem' : + \ "#MaxMem Megabytes\nSets the maximum capacity of each variable to the specified number of megabytes.", + \ '#MaxThreads' : + \ "#MaxThreads Value\nSets the maximum number of simultaneous threads.", + \ '#MaxThreadsBuffer' : + \ "#MaxThreadsBuffer On|Off\nCauses some or all hotkeys to buffer rather than ignore keypresses when their #MaxThreadsPerHotkey limit has been reached. ", + \ '#MaxThreadsPerHotkey' : + \ "#MaxThreadsPerHotkey Value\nSets the maximum number of simultaneous threads per hotkey or hotstring.", + \ '#MenuMaskKey' : + \ "#MenuMaskKey KeyName\nChanges which key is used to mask Win or Alt keyup events.", + \ '#NoEnv' : + \ "#NoEnv\nAvoids checking empty variables to see if they are environment variables (recommended for all new scripts).", + \ '#NoTrayIcon' : + \ "#NoTrayIcon\nDisables the showing of a tray icon.", + \ '#Persistent' : + \ "#Persistent\nKeeps a script permanently running (that is, until the user closes it or ExitApp is encountered).", + \ '#SingleInstance' : + \ "#SingleInstance [force|ignore|off]\nDetermines whether a script is allowed to run again when it is already running.", + \ '#UseHook' : + \ "#UseHook [On|Off]\nForces the use of the hook to implement all or some keyboard hotkeys.", + \ '#Warn' : + \ "#Warn [, WarningType, WarningMode]\nEnables or disables warnings for specific conditions which may indicate an error, such as a typo or missing \"global\" declaration.", + \ '#WinActivateForce' : + \ "#WinActivateForce\nSkips the gentle method of activating a window and goes straight to the forceful method. ", + \ 'ACos': '', + \ 'ASin': '', + \ 'ATan': '', + \ 'A_AhkPAth': '', + \ 'A_AhkVersion': '', + \ 'A_AppData': '', + \ 'A_AppDataCommon': '', + \ 'A_AutoTrim': '', + \ 'A_BatchLines': '', + \ 'A_CaretX': '', + \ 'A_CaretY': '', + \ 'A_ComputerName': '', + \ 'A_ControlDelay': '', + \ 'A_Cursor': '', + \ 'A_DD': '', + \ 'A_DDD': '', + \ 'A_DDDD': '', + \ 'A_DefaultMouseSpeed': '', + \ 'A_Desktop': '', + \ 'A_DesktopCommon': '', + \ 'A_DetectHiddenText': '', + \ 'A_DetectHiddenWindows': '', + \ 'A_EndChar': '', + \ 'A_EventInfo': '', + \ 'A_ExitReason': '', + \ 'A_FormatFloat': '', + \ 'A_FormatInteger': '', + \ 'A_Gui': '', + \ 'A_GuiControl': '', + \ 'A_GuiControlEvent': '', + \ 'A_GuiEvent': '', + \ 'A_GuiHeight': '', + \ 'A_GuiWidth': '', + \ 'A_GuiX': '', + \ 'A_GuiY': '', + \ 'A_Hour': '', + \ 'A_IPAddress1': '', + \ 'A_IPAddress2': '', + \ 'A_IPAddress3': '', + \ 'A_IPAddress4': '', + \ 'A_IconFile': '', + \ 'A_IconHidden': '', + \ 'A_IconNumber': '', + \ 'A_IconTip': '', + \ 'A_Index': '', + \ 'A_IsAdmin': '', + \ 'A_IsCompiled': '', + \ 'A_IsSuspended': '', + \ 'A_KeyDelay': '', + \ 'A_Language': '', + \ 'A_LastError': '', + \ 'A_LineFile': '', + \ 'A_LineNumber': '', + \ 'A_LoopField': '', + \ 'A_LoopFileName': '', + \ 'A_LoopReadLine': '', + \ 'A_LoopRegName': '', + \ 'A_MM': '', + \ 'A_MMM': '', + \ 'A_MMMM': '', + \ 'A_MSec': '', + \ 'A_Min': '', + \ 'A_MouseDelay': '', + \ 'A_MyDocuments': '', + \ 'A_Now': '', + \ 'A_NowUTC': '', + \ 'A_OSType': '', + \ 'A_OSVersion': '', + \ 'A_PriorHotkey': '', + \ 'A_ProgramFiles': '', + \ 'A_Programs': '', + \ 'A_ProgramsCommon': '', + \ 'A_STringCaseSense': '', + \ 'A_ScreenHeight': '', + \ 'A_ScreenWidth': '', + \ 'A_ScriptDir': '', + \ 'A_ScriptFullPath': '', + \ 'A_ScriptName': '', + \ 'A_Sec': '', + \ 'A_Space': '', + \ 'A_StartMenu': '', + \ 'A_StartMenuCommon': '', + \ 'A_Startup': '', + \ 'A_StartupCommon': '', + \ 'A_Tab': '', + \ 'A_Temp': '', + \ 'A_ThisHotkey': '', + \ 'A_ThisMenu': '', + \ 'A_ThisMenuItem': '', + \ 'A_ThisMenuItemPos': '', + \ 'A_TickCount': '', + \ 'A_TimeIdle': '', + \ 'A_TimeIdlePhysical': '', + \ 'A_TimeSincePriorHotkey': '', + \ 'A_TimeSinceThisHotkey': '', + \ 'A_TitleMatchMode': '', + \ 'A_TitleMatchModeSpeed': '', + \ 'A_UserName': '', + \ 'A_WDay': '', + \ 'A_WinDelay': '', + \ 'A_WinDir': '', + \ 'A_WorkingDir': '', + \ 'A_YWeek': '', + \ 'A_YYYY': '', + \ 'Abs': '', + \ 'AllowSameLineComments': '', + \ 'Asc': '', + \ 'Ceil': '', + \ 'Chr': '', + \ 'Clipboard': '', + \ 'ClipboardAll': '', + \ 'ClipboardTimeout': '', + \ 'ComSpec': '', + \ 'CommentFlag': '', + \ 'Cos': '', + \ 'ErrorLevel': '', + \ 'ErrorStdOut': '', + \ 'EscapeChar': '', + \ 'Exp': '', + \ 'FileExist': '', + \ 'Floor': '', + \ 'Gui': '', + \ 'HotKeyModifierTimeout': '', + \ 'HotkeyInterval': '', + \ 'Hotstring': '', + \ 'InStr': '', + \ 'Include': '', + \ 'IncludeAgain': '', + \ 'InstallKeybdHook': '', + \ 'InstallMouseHook': '', + \ 'IsLabel': '', + \ 'Ln': '', + \ 'Log': '', + \ 'MaxHotkeysPerInterval': '', + \ 'MaxMem': '', + \ 'MaxThreads': '', + \ 'MaxThreadsBuffer': '', + \ 'MaxThreadsPerHotkey': '', + \ 'Mod': '', + \ 'NoEnv': '', + \ 'NoTrayIcon': '', + \ 'Persistent': '', + \ 'ProgramFiles': '', + \ 'Round': '', + \ 'SetNumScrollCapsLockState': '', + \ 'Sin': '', + \ 'SingleInstance': '', + \ 'Sqrt': '', + \ 'StatusBarGetText': '', + \ 'SubStr': '', + \ 'Tan': '', + \ 'URLDownloadToFile': '', + \ 'UseHook': '', + \ 'VarSetCapacity': '', + \ 'WinActivateForce': '', + \ 'WinActive': '', + \ 'ahk_class': '', + \ 'ahk_group': '', + \ 'ahk_id': '', + \ 'ahk_pid': '', + \ 'contained': '', + \ 'false': '', + \ 'global': '', + \ 'local': '', + \ 'true': '', + \ } +function! autohotkey#complete(findstart, base) abort + + if a:findstart + let line = getline('.') + let idx = col('.') - 1 + let hasleftbrace = 0 + while idx > 0 + let idx -= 1 + let c = line[idx] + if c =~# '\v[a-zA-Z0-9]' + continue + elseif c ==# '#' + return idx + else + return idx+1 + endif + endwhile + return 0 + else + let complete_dict = [] + for [k, v] in items(s:complete_dict) + if k =~ '^' . a:base + call add(complete_dict, {'word': k, 'info': v, 'icase':1}) + endif + endfor + return sort(complete_dict) + endif +endfunction diff --git a/bundle/vim-autohotkey/ftdetect/autohotkey.vim b/bundle/vim-autohotkey/ftdetect/autohotkey.vim new file mode 100644 index 000000000..2fa098542 --- /dev/null +++ b/bundle/vim-autohotkey/ftdetect/autohotkey.vim @@ -0,0 +1 @@ +au BufNewFile,BufRead *.ahk setf autohotkey diff --git a/bundle/vim-autohotkey/plugin/autohotkey.vim b/bundle/vim-autohotkey/plugin/autohotkey.vim new file mode 100644 index 000000000..1f6da67f2 --- /dev/null +++ b/bundle/vim-autohotkey/plugin/autohotkey.vim @@ -0,0 +1,4 @@ +augroup vim_autohotkey + autocmd! + autocmd FileType autohotkey setlocal omnifunc=autohotkey#complete +augroup END diff --git a/bundle/vim-autohotkey/syntax/autohotkey.vim b/bundle/vim-autohotkey/syntax/autohotkey.vim new file mode 100644 index 000000000..64aafa63d --- /dev/null +++ b/bundle/vim-autohotkey/syntax/autohotkey.vim @@ -0,0 +1,277 @@ +if v:version < 600 + syntax clear +elseif exists('b:current_syntax') + finish +endif + +" add the ; for ahk comments to work well (wrap and continue) +set comments=s1:/*,mb:*,ex:*/,:; + +sy case ignore + + +sy keyword ahkKeyword ahk_id ahk_pid ahk_class ahk_group ahk_parent true false + + +" this is a great hack by savage. The problem is that it colors whatever you are +" writing in ahkFunction color, and then it turns normal when you leave. Very +" distracting. The solution is less elegant: list all posible ahk commands, +" which we do next. + +" sy match ahkFunction "^\s*\w\{1,}," +" sy match ahkFunction "\w\{1,}," contained +" sy match ahkFunction "^\s*\w\{1,}\s*$" contains=ahkStatement +" sy match ahkFunction "\w\{1,}\s*$" contained +syn keyword ahkFunction + \ ClipWait EnvGet EnvSet EnvUpdate + \ Drive DriveGet DriveSpaceFree FileAppend FileCopy FileCopyDir + \ FileCreateDir FileCreateShortcut FileDelete FileGetAttrib + \ FileGetShortcut FileGetSize FileGetTime FileGetVersion FileInstall + \ FileMove FileMoveDir FileReadLine FileRead FileRecycle FileRecycleEmpty + \ FileRemoveDir FileSelectFolder FileSelectFile FileSetAttrib FileSetTime + \ IniDelete IniRead IniWrite SetWorkingDir + \ SplitPath + \ Gui GuiControl GuiControlGet IfMsgBox InputBox MsgBox Progress + \ SplashImage SplashTextOn SplashTextOff ToolTip TrayTip + \ Hotkey ListHotkeys BlockInput ControlSend ControlSendRaw GetKeyState + \ KeyHistory KeyWait Input Send SendRaw SendInput SendPlay SendEvent + \ SendMode SetKeyDelay SetNumScrollCapsLockState SetStoreCapslockMode + \ EnvAdd EnvDiv EnvMult EnvSub Random SetFormat Transform + \ AutoTrim BlockInput CoordMode Critical Edit ImageSearch + \ ListLines ListVars Menu OutputDebug PixelGetColor PixelSearch + \ SetBatchLines SetEnv SetTimer SysGet Thread Transform URLDownloadToFile + \ Click ControlClick MouseClick MouseClickDrag MouseGetPos MouseMove + \ SetDefaultMouseSpeed SetMouseDelay + \ Process Run RunWait RunAs Shutdown Sleep + \ RegDelete RegRead RegWrite + \ SoundBeep SoundGet SoundGetWaveVolume SoundPlay SoundSet + \ SoundSetWaveVolume + \ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos + \ StringLeft StringRight StringLower StringUpper StringMid StringReplace + \ StringSplit StringTrimLeft StringTrimRight + \ Control ControlClick ControlFocus ControlGet ControlGetFocus + \ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw + \ ControlSetText Menu PostMessage SendMessage SetControlDelay + \ WinMenuSelectItem GroupActivate GroupAdd GroupClose GroupDeactivate + \ DetectHiddenText DetectHiddenWindows SetTitleMatchMode SetWinDelay + \ StatusBarGetText StatusBarWait WinActivate WinActivateBottom WinClose + \ WinGet WinGetActiveStats WinGetActiveTitle WinGetClass WinGetPos + \ WinGetText WinGetTitle WinHide WinKill WinMaximize WinMinimize + \ WinMinimizeAll WinMinimizeAllUndo WinMove WinRestore WinSet + \ WinSetTitle WinShow WinWait WinWaitActive WinWaitNotActive WinWaitClose + \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr + \ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage + \ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan + \ FileExist GetKeyState numput numget RegisterCallback + +" these are user-defined functions, in dark green +sy match ahkNewFunction "\s*\w\{1,}(.*)" +sy match ahkNewFunctionParams "(\@<=.*)\@=" containedin=ahkNewFunction + +sy match ahkEscape "`." containedin=ahkFunction,ahkLabel,ahkVariable,ahkNewFunctionParams + +" I don't like %var value% being in a different color than the var itself, so +" commented out. +"sy match ahkVariable "%.\{-}%" containedin=ahkNewFunctionParams +"sy match ahkVariable "%.\{-}%" + +sy match ahkKey "[!#^+]\{1,4}`\=.\n" contains=ahkEscape +sy match ahkKey "[!#^+]\{0,4}{.\{-}}" + + +sy match ahkDirective "^#[a-zA-Z]\{2,\}" + +sy match ahkLabel "^\w\+:\s*$" +sy match ahkLabel "^[^,]\+:\{2\}\(\w\+,\)\=" contains=ahkFunction +sy match ahkLabel "^[^,]\+:\{2\}\w\+\s*$" contains=ahkFunction +sy match ahkLabel "^:.\+:.*::" +sy keyword ahkLabel return containedin=ahkFunction + +sy match ahkStatement "^\s*if\w*\(,\)\=" +sy keyword ahkStatement If Else Loop Loop, exitapp containedin=ahkFunction + +sy match ahkComment "`\@