commit 877f0ff357285c6a792cc578419b1381708c5bda Author: Maxim Likhachev Date: Fri Dec 13 20:13:27 2019 +0300 OmniTickle v0.1 diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/COPYING @@ -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/CoC.md b/CoC.md new file mode 100644 index 0000000..55df6a7 --- /dev/null +++ b/CoC.md @@ -0,0 +1,7 @@ +# Go Fuck Yourself + +Offended? Go away. We don't need people who are offended because of a stranger on the internet. +Not offended? You're welcome to contribute. + +© Copyright 2015 [WTFCoC Consortium Committee](https://github.com/mniip/wtfcoc). + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5e087a5 --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +SCRIPT=./OmniTickle.tcl +VIM_PLUGIN=OmniTickle.vim +DIR=plugin +BUNDLE_FILE=TclCompletion.vim + +all: bundle + +bundle: + mkdir -p $(DIR) + + $(SCRIPT) $(DIR) + + echo "\" Created: $$(date '+%C%y-%m-%d')" > $(DIR)/$(BUNDLE_FILE) + + cat $(VIM_PLUGIN) >> $(DIR)/$(BUNDLE_FILE) + cat $(DIR)/*CompletionList.vim >> $(DIR)/$(BUNDLE_FILE) + + rm -f $(DIR)/*CompletionList.vim + +tags: + $(SCRIPT) + +clean: + rm -rf $(DIR) + diff --git a/OmniTickle.tcl b/OmniTickle.tcl new file mode 100755 index 0000000..0750c07 --- /dev/null +++ b/OmniTickle.tcl @@ -0,0 +1,194 @@ +#!/usr/bin/env tclsh + +#Создан: вт 13 Июл 2010 18:02:14 +#Изменён: пт 13 дек 2019 16:58:04 + +# +# Copyright (C) 2010-2019, Maxim Lihachev, +# +# 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, version 3. +# +# 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 . +# package require http +# + +# +# Tickle is a script for creating vim OmniCompletion list for Tcl key words. +# + +package require http + +namespace eval options { + # URLs of Tcl manual pages + # + # TODO: + # TclLib "http://tcllib.sourceforge.net/doc/index.html" + # Tdbc "http://www.tcl.tk/man/tcl/TdbcCmd/" + # Tdbcmysql "http://www.tcl.tk/man/tcl/Tdbcmysql/" + # Tdbcodbc "http://www.tcl.tk/man/tcl/TdbcodbcCmd/" + # Tdbcpostgres "http://www.tcl.tk/man/tcl/TdbcpostgresCmd/" + # Tdbcsqlite "http://www.tcl.tk/man/tcl/TdbcsqliteCmd/" + # Sqlite "http://www.tcl.tk/man/tcl/SqliteCmd/" + array set url { + Tcl "http://www.tcl.tk/man/tcl/TclCmd/" + Tk "http://www.tcl.tk/man/tcl/TkCmd/" + Itcl "http://www.tcl.tk/man/tcl/ItclCmd/" + Thread "http://www.tcl.tk/man/tcl/ThreadCmd/" + } + + # A dictionary to store key words data + dict create data {} +} + +# Collecting a list of command from specified URL +proc getAllCommands {url} { + set result {} + + set mainPage [http::geturl $url] + + foreach line [split [http::data $mainPage] "\n"] { + #tm.htm + if {[regexp {^.*$} $line match link command]} { + lappend result $command "$url$link" + + #
  • cmdline - ...
  • + } elseif {[regexp {^
  • $} $line match]} { + foreach partLine [split $line "<"] { + if {[regexp {a href="(\w+.html)">([\w:]+) - .*$} $partLine match link command]} { + lappend result $command [subst \ + [string map { + "index.html" + "$link" + } $url]] + } + } + } + } + + #close $mainPage + + return $result +} + +# Creating a dictionary with key words +proc getKeywords {command url category} { + set content [http::geturl $url] + + set globalCommand $command + + #TODO: Make recognition of parameters starting with a dash + foreach line [split [http::data $content] "\n"] { + if {[regexp -expanded "^(?:
    + (?:\w*::)? # Namespace + ${command} # Procedure name + (\\s|::) # Commands delimeter + (\\m\\w+\\M)\\s?# Command + (.*) # Arguments + (|
    )$" \ + $line match delim subcommand keywords]} { + + set globalCommand "${command}${delim}${subcommand}" + + if {$subcommand != $command} { + while {[regsub -all {(^[ \t]+|<.?(?:I|B)>|\?)} $keywords {} keywords]} {} + + dict set options::data($category) $command $subcommand $keywords + } + } elseif {[regexp -expanded "^(?:
    + (-\\m\\w+\\M)\\s? # Command + (.*) # Arguments + (|
    )$" \ + $line match subcommand keywords]} { + + while {[regsub -all {(^[ \t]+|<.?(?:I|B)>|\?)} $keywords {} keywords]} {} + + dict set options::data($category) $globalCommand $subcommand $keywords + + } elseif {[regexp {.*#M-(\w+\M).*} $line match option]} { + + dict set options::data($category) $command $option "" + + } elseif {[regexp -nocase -expanded "
    + $command\\s+(?:—|-)\\s+(.*) + <.DD><.DL> + | + ^$command\\s+(?:—|-)\\s+(.+)$" \ + $line match description description]} { + + dict set options::data(Base) default $command [format "%-8s %s" "\[$category\]" $description] + + } + } +} + +# Creating a file with vim-formatted completion list +proc writeCompletionList {dictionary {port stdout}} { + dict for {command info} $dictionary { + puts $port "let b:[string map {{::} {_ns_} { } {_sp_}} $command] = \[" + + foreach {subcommand keywords} $info { + puts $port [format "\\\t{'word': '%s', 'menu': '%s'}," $subcommand \ + [string map {{'} {}} $keywords]] + } + + puts $port "\\\t\]\n" + } +} + +# A list of all installed Tcl packages +proc getInstalledPackages {} { + eval [package unknown] Tcl [package provide Tcl] + foreach package [lsort [package names]] { + foreach version [package versions $package] { + foreach subcommand {require forget ifneeded versions} { + dict set options::data(Packages) "package $subcommand" $package $version + } + } + } +} + +# ------------------------------------------------------------------------------ + +proc main {rootDir} { + if {[string length $rootDir] == 0} { + set dir [file dirname [file normalize [info script]]] + } else { + set dir $rootDir + } + + getInstalledPackages + + foreach tclurl [array names options::url] { + puts "===> $tclurl" + + foreach {command url} [getAllCommands [subst $options::url($tclurl)]] { + puts " $command" + + getKeywords $command $url $tclurl + } + + puts {} + } + + foreach dictionary [array names options::data] { + set outputFileName "${dir}/${dictionary}CompletionList.vim" + set outputFile [open $outputFileName w] + + writeCompletionList $options::data($dictionary) $outputFile + + close $outputFile + + puts "File [file tail $outputFileName] has been created." + } +} + +main [lindex $argv 0] + diff --git a/OmniTickle.vim b/OmniTickle.vim new file mode 100644 index 0000000..f27ccd7 --- /dev/null +++ b/OmniTickle.vim @@ -0,0 +1,145 @@ +" +" File: OmniTickle.vim +" +" Author: Likhachev Maxim +" Version: 0.1 +" Copyright: Copyright (C) 2010-2010 Likhachev Maxim +" +" License: +" +" 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, version 3. +" +" 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 . +" +" Overview +" -------- +" +" OmniCompletion function for Tcl code +" +" The git repository for this plugin is available at: +" +" https://code.envrm.info/src/TclTags.vim +" +" Installation +" ------------ +" +" $ make +" $ mkdir -p ~/.vim/omnicompletion/tcl +" $ cp plugin/TclCompletion.vim ~/.vim/omnicompletion/tcl/ +" +" Add to ~/.vim/ftplugin/tcl/tcl.vim a following source command: +" +" source $HOME/.vim/omnicompletion/tcl/TclCompletion.vim +" + +if exists('g:tcl_tk_completion') + finish +endif + +let g:tcl_tk_completion = 1 + +setlocal omnifunc=TclComplete + +let s:completion_type = '' + +function TclComplete(findstart, base) + echomsg 'findstart=' . a:findstart . ', base=' . a:base + + if a:findstart + " return the starting point of the word + let line = getline('.') + let pos = col('.') - 1 + + while pos > 0 && line[pos - 1] !~ ' \|,^\|,\|\[\|\s\|\t\|:' + let pos -= 1 + endwhile + + " Additional namespace + if line[pos - 1] == ':' + " Two positions backward + let start = pos - 2 + " TODO: Options completion + elseif line[pos - 1] == '-' + let start = pos - 1 + " Subcommand completion + elseif line[pos - 1] =~ ' \|\t' + let start = pos - 1 + else + let labelstr = 'default' + endif + + " Getting the word to complete + if exists("start") + let labelpos = start + + while labelpos > 0 && line[labelpos - 1] =~ '[]a-zA-Z_:0-9\.\"\{\} -<>\\]' + let labelpos -= 1 + endwhile + + let labelstr=strpart(line, labelpos, start - labelpos) + + " The last word in the line + let len = strlen(labelstr) + + let newlabelstr = substitute(labelstr,"::","_ns_","") + + while len > 1 && !exists("b:".newlabelstr) + "let newlabelstr = substitute(strpart(labelstr,0,len),"::","_ns_","") + "let newlabelstr = substitute(newlabelstr," ","_sp_","") + let newlabelstr = TclEscape(strpart(labelstr,0,len)) + + "DEBUG: echo system ("echo -: ".substitute(strpart(labelstr,0,len),"::","_","")) + let len -= 1 + endwhile + + if exists("b:".newlabelstr) + let labelstr = newlabelstr + endif + endif + + if exists("labelstr") && labelstr != "" + let s:completion_type = labelstr + else + let s:completion_type = 'default' + endif + + " DEBUG: echo system("echo labelstring == ".labelstr." completion == ".s:completion_type) + return pos + else + let suggestions = [] + ""let l:r = substitute(s:completion_type, "::", "_ns_", "") + ""let l:r = substitute(l:r, " ", "_sp_", "") + let l:r = TclEscape(s:completion_type) + + if exists('b:'.l:r) + exe 'let listing = b:'.l:r + + for entry in listing + if entry.word =~ '^' . escape(a:base, '/') + call add(suggestions, entry) + endif + endfor + endif + + return suggestions + + if !has('gui_running') + redraw! + endif + endif +endfu + +function TclEscape(str) + let result = substitute(a:str,"::","_ns_","g") + let result = substitute(result," ","_sp_","g") + return result +endfunction + diff --git a/README.md b/README.md new file mode 100644 index 0000000..c26b5d4 --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +# OmniTickle + +## Description + +OmniTickle is a script for creating vim OmniCompletion list for Tcl key words. + +## Installation + +### Build + +``` +$ make +$ mkdir -p ~/.vim/omnicompletion/tcl +``` + +### Install + +``` +$ cp plugin/TclCompletion.vim ~/.vim/omnicompletion/tcl/ +``` + +### Clean plugin directory (optionally) + +``` +$ make clean +``` + +### Configure Vim editor + +Add to ~/.vim/ftplugin/tcl/tcl.vim a following source command: + +``` +source $HOME/.vim/omnicompletion/tcl/TclCompletion.vim +``` + +## Screenshots + +![](https://code.envrm.info/src/OmniTickle/raw/branch/master/screenshots/OmniTickle_1.png) + +![](https://code.envrm.info/src/OmniTickle/raw/branch/master/screenshots/OmniTickle_2.png) + +![](https://code.envrm.info/src/OmniTickle/raw/branch/master/screenshots/OmniTickle_3.png) + +## Known bugs + +- OmniTickle does not handle command arguments with leading dash. + +## License + +``` +Copyright (C) 2010-2019, Maxim Lihachev, + +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, version 3. + +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 . +``` + diff --git a/plugin/TclCompletion.vim b/plugin/TclCompletion.vim new file mode 100644 index 0000000..340e30d --- /dev/null +++ b/plugin/TclCompletion.vim @@ -0,0 +1,5183 @@ +" Created: 2019-12-13 +" +" File: OmniTickle.vim +" +" Author: Likhachev Maxim +" Version: 0.1 +" Copyright: Copyright (C) 2010-2010 Likhachev Maxim +" +" License: +" +" 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, version 3. +" +" 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 . +" +" Overview +" -------- +" +" OmniCompletion function for Tcl code +" +" The git repository for this plugin is available at: +" +" https://code.envrm.info/src/TclTags.vim +" +" Installation +" ------------ +" +" $ make +" $ mkdir -p ~/.vim/omnicompletion/tcl +" $ cp plugin/TclCompletion.vim ~/.vim/omnicompletion/tcl/ +" +" Add to ~/.vim/ftplugin/tcl/tcl.vim a following source command: +" +" source $HOME/.vim/omnicompletion/tcl/TclCompletion.vim +" + +if exists('g:tcl_tk_completion') + finish +endif + +let g:tcl_tk_completion = 1 + +setlocal omnifunc=TclComplete + +let s:completion_type = '' + +function TclComplete(findstart, base) + echomsg 'findstart=' . a:findstart . ', base=' . a:base + + if a:findstart + " return the starting point of the word + let line = getline('.') + let pos = col('.') - 1 + + while pos > 0 && line[pos - 1] !~ ' \|,^\|,\|\[\|\s\|\t\|:' + let pos -= 1 + endwhile + + " Additional namespace + if line[pos - 1] == ':' + " Two positions backward + let start = pos - 2 + " TODO: Options completion + elseif line[pos - 1] == '-' + let start = pos - 1 + " Subcommand completion + elseif line[pos - 1] =~ ' \|\t' + let start = pos - 1 + else + let labelstr = 'default' + endif + + " Getting the word to complete + if exists("start") + let labelpos = start + + while labelpos > 0 && line[labelpos - 1] =~ '[]a-zA-Z_:0-9\.\"\{\} -<>\\]' + let labelpos -= 1 + endwhile + + let labelstr=strpart(line, labelpos, start - labelpos) + + " The last word in the line + let len = strlen(labelstr) + + let newlabelstr = substitute(labelstr,"::","_ns_","") + + while len > 1 && !exists("b:".newlabelstr) + "let newlabelstr = substitute(strpart(labelstr,0,len),"::","_ns_","") + "let newlabelstr = substitute(newlabelstr," ","_sp_","") + let newlabelstr = TclEscape(strpart(labelstr,0,len)) + + "DEBUG: echo system ("echo -: ".substitute(strpart(labelstr,0,len),"::","_","")) + let len -= 1 + endwhile + + if exists("b:".newlabelstr) + let labelstr = newlabelstr + endif + endif + + if exists("labelstr") && labelstr != "" + let s:completion_type = labelstr + else + let s:completion_type = 'default' + endif + + " DEBUG: echo system("echo labelstring == ".labelstr." completion == ".s:completion_type) + return pos + else + let suggestions = [] + ""let l:r = substitute(s:completion_type, "::", "_ns_", "") + ""let l:r = substitute(l:r, " ", "_sp_", "") + let l:r = TclEscape(s:completion_type) + + if exists('b:'.l:r) + exe 'let listing = b:'.l:r + + for entry in listing + if entry.word =~ '^' . escape(a:base, '/') + call add(suggestions, entry) + endif + endfor + endif + + return suggestions + + if !has('gui_running') + redraw! + endif + endif +endfu + +function TclEscape(str) + let result = substitute(a:str,"::","_ns_","g") + let result = substitute(result," ","_sp_","g") + return result +endfunction + +let b:default = [ +\ {'word': 'thread', 'menu': '[Thread] Extension for script access to Tcl threading'}, +\ {'word': 'tpool', 'menu': '[Thread] Part of the Tcl threading extension implementing pools of worker threads .'}, +\ {'word': 'tsv', 'menu': '[Thread] Part of the Tcl threading extension allowing script level manipulation of data shared between threads .'}, +\ {'word': 'ttrace', 'menu': '[Thread] Trace-based interpreter initialization'}, +\ {'word': 'itcl', 'menu': '[Itcl] object-oriented extensions to Tcl'}, +\ {'word': 'itclvars', 'menu': '[Itcl] variables used by [incr Tcl]'}, +\ {'word': 'bell', 'menu': '[Tk] Ring a displays bell'}, +\ {'word': 'bind', 'menu': '[Tk] Arrange for X events to invoke Tcl scripts'}, +\ {'word': 'bindtags', 'menu': '[Tk] Determine which bindings apply to a window, and order of evaluation'}, +\ {'word': 'bitmap', 'menu': '[Tk] Images that display two colors'}, +\ {'word': 'busy', 'menu': '[Tk] confine pointer events to a window sub-tree'}, +\ {'word': 'button', 'menu': '[Tk] Create and manipulate button action widgets'}, +\ {'word': 'canvas', 'menu': '[Tk] Create and manipulate canvas hypergraphics drawing surface widgets'}, +\ {'word': 'checkbutton', 'menu': '[Tk] Create and manipulate checkbutton boolean selection widgets'}, +\ {'word': 'clipboard', 'menu': '[Tk] Manipulate Tk clipboard'}, +\ {'word': 'colors', 'menu': '[Tk] symbolic color names recognized by Tk'}, +\ {'word': 'console', 'menu': '[Tk] Control the console on systems without a real console'}, +\ {'word': 'cursors', 'menu': '[Tk] mouse cursors available in Tk'}, +\ {'word': 'destroy', 'menu': '[Tk] Destroy one or more windows'}, +\ {'word': 'entry', 'menu': '[Tk] Create and manipulate entry one-line text entry widgets'}, +\ {'word': 'event', 'menu': '[Tk] Miscellaneous event facilities: define virtual events and generate events'}, +\ {'word': 'focus', 'menu': '[Tk] Manage the input focus'}, +\ {'word': 'font', 'menu': '[Tk] Create and inspect fonts.'}, +\ {'word': 'fontchooser', 'menu': '[Tk] control font selection dialog'}, +\ {'word': 'frame', 'menu': '[Tk] Create and manipulate frame simple container widgets'}, +\ {'word': 'grab', 'menu': '[Tk] Confine pointer and keyboard events to a window sub-tree'}, +\ {'word': 'grid', 'menu': '[Tk] Geometry manager that arranges widgets in a grid'}, +\ {'word': 'image', 'menu': '[Tk] Create and manipulate images'}, +\ {'word': 'keysyms', 'menu': '[Tk] keysyms recognized by Tk'}, +\ {'word': 'label', 'menu': '[Tk] Create and manipulate label non-interactive text or image widgets'}, +\ {'word': 'labelframe', 'menu': '[Tk] Create and manipulate labelframe labelled container widgets'}, +\ {'word': 'listbox', 'menu': '[Tk] Create and manipulate listbox item list widgets'}, +\ {'word': 'lower', 'menu': '[Tk] Change a windows position in the stacking order'}, +\ {'word': 'menubutton', 'menu': '[Tk] Create and manipulate menubutton pop-up menu indicator widgets'}, +\ {'word': 'message', 'menu': '[Tk] Create and manipulate message non-interactive text widgets'}, +\ {'word': 'option', 'menu': '[Tk] Add/retrieve window options to/from the option database'}, +\ {'word': 'options', 'menu': '[Tk] Standard options supported by widgets'}, +\ {'word': 'pack', 'menu': '[Tk] Geometry manager that packs around edges of cavity'}, +\ {'word': 'panedwindow', 'menu': '[Tk] Create and manipulate panedwindow split container widgets'}, +\ {'word': 'photo', 'menu': '[Tk] Full-color images'}, +\ {'word': 'place', 'menu': '[Tk] Geometry manager for fixed or rubber-sheet placement'}, +\ {'word': 'radiobutton', 'menu': '[Tk] Create and manipulate radiobutton pick-one widgets'}, +\ {'word': 'raise', 'menu': '[Tk] Change a windows position in the stacking order'}, +\ {'word': 'scale', 'menu': '[Tk] Create and manipulate scale value-controlled slider widgets'}, +\ {'word': 'scrollbar', 'menu': '[Tk] Create and manipulate scrollbar scrolling control and indicator widgets'}, +\ {'word': 'selection', 'menu': '[Tk] Manipulate the X selection'}, +\ {'word': 'send', 'menu': '[Tk] Execute a command in a different application'}, +\ {'word': 'spinbox', 'menu': '[Tk] Create and manipulate spinbox value spinner widgets'}, +\ {'word': 'tk', 'menu': '[Tk] Manipulate Tk internal state'}, +\ {'word': 'tkerror', 'menu': '[Tk] Command invoked to process background errors'}, +\ {'word': 'tkwait', 'menu': '[Tk] Wait for variable to change or window to be destroyed'}, +\ {'word': 'toplevel', 'menu': '[Tk] Create and manipulate toplevel main and popup window widgets'}, +\ {'word': 'ttk_image', 'menu': '[Tk] Define an element based on an image'}, +\ {'word': 'ttk_vsapi', 'menu': '[Tk] Define a Microsoft Visual Styles element'}, +\ {'word': 'winfo', 'menu': '[Tk] Return window-related information'}, +\ {'word': 'wm', 'menu': '[Tk] Communicate with window manager'}, +\ {'word': 'after', 'menu': '[Tcl] Execute a command after a time delay'}, +\ {'word': 'append', 'menu': '[Tcl] Append to variable'}, +\ {'word': 'apply', 'menu': '[Tcl] Apply an anonymous function'}, +\ {'word': 'array', 'menu': '[Tcl] Manipulate array variables'}, +\ {'word': 'bgerror', 'menu': '[Tcl] Command invoked to process background errors'}, +\ {'word': 'binary', 'menu': '[Tcl] Insert and extract fields from binary strings'}, +\ {'word': 'break', 'menu': '[Tcl] Abort looping command'}, +\ {'word': 'catch', 'menu': '[Tcl] Evaluate script and trap exceptional returns'}, +\ {'word': 'cd', 'menu': '[Tcl] Change working directory'}, +\ {'word': 'chan', 'menu': '[Tcl] Read, write and manipulate channels'}, +\ {'word': 'clock', 'menu': '[Tcl] Obtain and manipulate dates and times'}, +\ {'word': 'close', 'menu': '[Tcl] Close an open channel'}, +\ {'word': 'concat', 'menu': '[Tcl] Join lists together'}, +\ {'word': 'continue', 'menu': '[Tcl] Skip to the next iteration of a loop'}, +\ {'word': 'dde', 'menu': '[Tcl] Execute a Dynamic Data Exchange command'}, +\ {'word': 'dict', 'menu': '[Tcl] Manipulate dictionaries'}, +\ {'word': 'encoding', 'menu': '[Tcl] Manipulate encodings'}, +\ {'word': 'eof', 'menu': '[Tcl] Check for end of file condition on channel'}, +\ {'word': 'error', 'menu': '[Tcl] Generate an error'}, +\ {'word': 'eval', 'menu': '[Tcl] Evaluate a Tcl script'}, +\ {'word': 'exec', 'menu': '[Tcl] Invoke subprocesses'}, +\ {'word': 'exit', 'menu': '[Tcl] End the application'}, +\ {'word': 'expr', 'menu': '[Tcl] Evaluate an expression'}, +\ {'word': 'fblocked', 'menu': '[Tcl] Test whether the last input operation exhausted all available input'}, +\ {'word': 'fconfigure', 'menu': '[Tcl] Set and get options on a channel'}, +\ {'word': 'fcopy', 'menu': '[Tcl] Copy data from one channel to another'}, +\ {'word': 'file', 'menu': '[Tcl] Manipulate file names and attributes'}, +\ {'word': 'fileevent', 'menu': '[Tcl] Execute a script when a channel becomes readable or writable'}, +\ {'word': 'filename', 'menu': '[Tcl] File name conventions supported by Tcl commands'}, +\ {'word': 'flush', 'menu': '[Tcl] Flush buffered output for a channel'}, +\ {'word': 'for', 'menu': '[Tcl] For loop'}, +\ {'word': 'foreach', 'menu': '[Tcl] Iterate over all elements in one or more lists'}, +\ {'word': 'format', 'menu': '[Tcl] Format a string in the style of sprintf'}, +\ {'word': 'gets', 'menu': '[Tcl] Read a line from a channel'}, +\ {'word': 'glob', 'menu': '[Tcl] Return names of files that match patterns'}, +\ {'word': 'global', 'menu': '[Tcl] Access global variables'}, +\ {'word': 'history', 'menu': '[Tcl] Manipulate the history list'}, +\ {'word': 'http', 'menu': '[Tcl] Client-side implementation of the HTTP/1.1 protocol'}, +\ {'word': 'if', 'menu': '[Tcl] Execute scripts conditionally'}, +\ {'word': 'incr', 'menu': '[Tcl] Increment the value of a variable'}, +\ {'word': 'info', 'menu': '[Tcl] Return information about the state of the Tcl interpreter'}, +\ {'word': 'interp', 'menu': '[Tcl] Create and manipulate Tcl interpreters'}, +\ {'word': 'join', 'menu': '[Tcl] Create a string by joining together list elements'}, +\ {'word': 'lappend', 'menu': '[Tcl] Append list elements onto a variable'}, +\ {'word': 'lassign', 'menu': '[Tcl] Assign list elements to variables'}, +\ {'word': 'lindex', 'menu': '[Tcl] Retrieve an element from a list'}, +\ {'word': 'linsert', 'menu': '[Tcl] Insert elements into a list'}, +\ {'word': 'list', 'menu': '[Tcl] Create a list'}, +\ {'word': 'llength', 'menu': '[Tcl] Count the number of elements in a list'}, +\ {'word': 'lmap', 'menu': '[Tcl] Iterate over all elements in one or more lists and collect results'}, +\ {'word': 'load', 'menu': '[Tcl] Load machine code and initialize new commands'}, +\ {'word': 'lrange', 'menu': '[Tcl] Return one or more adjacent elements from a list'}, +\ {'word': 'lrepeat', 'menu': '[Tcl] Build a list by repeating elements'}, +\ {'word': 'lreplace', 'menu': '[Tcl] Replace elements in a list with new elements'}, +\ {'word': 'lreverse', 'menu': '[Tcl] Reverse the order of a list'}, +\ {'word': 'lsearch', 'menu': '[Tcl] See if a list contains a particular element'}, +\ {'word': 'lset', 'menu': '[Tcl] Change an element in a list'}, +\ {'word': 'lsort', 'menu': '[Tcl] Sort the elements of a list'}, +\ {'word': 'mathfunc', 'menu': '[Tcl] Mathematical functions for Tcl expressions'}, +\ {'word': 'mathop', 'menu': '[Tcl] Mathematical operators as Tcl commands'}, +\ {'word': 'memory', 'menu': '[Tcl] Control Tcl memory debugging capabilities'}, +\ {'word': 'msgcat', 'menu': '[Tcl] Tcl message catalog'}, +\ {'word': 'my', 'menu': '[Tcl] invoke any method of current object'}, +\ {'word': 'namespace', 'menu': '[Tcl] create and manipulate contexts for commands and variables'}, +\ {'word': 'open', 'menu': '[Tcl] Open a file-based or command pipeline channel'}, +\ {'word': 'package', 'menu': '[Tcl] Facilities for package loading and version control'}, +\ {'word': 'pid', 'menu': '[Tcl] Retrieve process identifiers'}, +\ {'word': 'platform', 'menu': '[Tcl] System identification support code and utilities'}, +\ {'word': 'proc', 'menu': '[Tcl] Create a Tcl procedure'}, +\ {'word': 'puts', 'menu': '[Tcl] Write to a channel'}, +\ {'word': 'pwd', 'menu': '[Tcl] Return the absolute path of the current working directory'}, +\ {'word': 're_syntax', 'menu': '[Tcl] Syntax of Tcl regular expressions'}, +\ {'word': 'read', 'menu': '[Tcl] Read from a channel'}, +\ {'word': 'refchan', 'menu': '[Tcl] command handler API of reflected channels'}, +\ {'word': 'regexp', 'menu': '[Tcl] Match a regular expression against a string'}, +\ {'word': 'registry', 'menu': '[Tcl] Manipulate the Windows registry'}, +\ {'word': 'regsub', 'menu': '[Tcl] Perform substitutions based on regular expression pattern matching'}, +\ {'word': 'rename', 'menu': '[Tcl] Rename or delete a command'}, +\ {'word': 'return', 'menu': '[Tcl] Return from a procedure, or set return code of a script'}, +\ {'word': 'safe', 'menu': '[Tcl] Creating and manipulating safe interpreters'}, +\ {'word': 'scan', 'menu': '[Tcl] Parse string using conversion specifiers in the style of sscanf'}, +\ {'word': 'seek', 'menu': '[Tcl] Change the access position for an open channel'}, +\ {'word': 'self', 'menu': '[Tcl] method call internal introspection'}, +\ {'word': 'set', 'menu': '[Tcl] Read and write variables'}, +\ {'word': 'socket', 'menu': '[Tcl] Open a TCP network connection'}, +\ {'word': 'source', 'menu': '[Tcl] Evaluate a file or resource as a Tcl script'}, +\ {'word': 'split', 'menu': '[Tcl] Split a string into a proper Tcl list'}, +\ {'word': 'string', 'menu': '[Tcl] Manipulate strings'}, +\ {'word': 'subst', 'menu': '[Tcl] Perform backslash, command, and variable substitutions'}, +\ {'word': 'switch', 'menu': '[Tcl] Evaluate one of several scripts, depending on a given value'}, +\ {'word': 'tailcall', 'menu': '[Tcl] Replace the current procedure with another command'}, +\ {'word': 'Tcl', 'menu': '[Tcl] Tool Command Language'}, +\ {'word': 'tcltest', 'menu': '[Tcl] Test harness support code and utilities'}, +\ {'word': 'tell', 'menu': '[Tcl] Return current access position for an open channel'}, +\ {'word': 'throw', 'menu': '[Tcl] Generate a machine-readable error'}, +\ {'word': 'time', 'menu': '[Tcl] Time the execution of a script'}, +\ {'word': 'timerate', 'menu': '[Tcl] Calibrated performance measurements of script execution time'}, +\ {'word': 'tm', 'menu': '[Tcl] Facilities for locating and loading of Tcl Modules'}, +\ {'word': 'trace', 'menu': '[Tcl] Monitor variable accesses, command usages and command executions'}, +\ {'word': 'transchan', 'menu': '[Tcl] command handler API of channel transforms'}, +\ {'word': 'try', 'menu': '[Tcl] Trap and process errors and exceptions'}, +\ {'word': 'unknown', 'menu': '[Tcl] Handle attempts to use non-existent commands'}, +\ {'word': 'unload', 'menu': '[Tcl] Unload machine code'}, +\ {'word': 'unset', 'menu': '[Tcl] Delete variables'}, +\ {'word': 'update', 'menu': '[Tcl] Process pending events and idle callbacks'}, +\ {'word': 'uplevel', 'menu': '[Tcl] Execute a script in a different stack frame'}, +\ {'word': 'upvar', 'menu': '[Tcl] Create link to variable in a different stack frame'}, +\ {'word': 'variable', 'menu': '[Tcl] create and initialize a namespace variable'}, +\ {'word': 'vwait', 'menu': '[Tcl] Process events until a variable is written'}, +\ {'word': 'while', 'menu': '[Tcl] Execute script repeatedly as long as a condition is met'}, +\ {'word': 'zlib', 'menu': '[Tcl] compression and decompression operations'}, +\ ] + +let b:class = [ +\ {'word': '-body', 'menu': ''}, +\ {'word': '-scope', 'menu': ''}, +\ ] + +let b:itclextendedclass = [ +\ {'word': '-body', 'menu': ''}, +\ {'word': '-config', 'menu': ''}, +\ ] + +let b:itcloption = [ +\ {'word': '-default', 'menu': 'defvalue'}, +\ {'word': '-readonly', 'menu': ''}, +\ {'word': '-cgetmethod', 'menu': 'methodName'}, +\ {'word': '-cgetmethodvar', 'menu': 'varName'}, +\ {'word': '-configuremethod', 'menu': 'methodName'}, +\ {'word': '-configuremethodvar', 'menu': 'varName'}, +\ {'word': '-validatemethod', 'menu': 'methodName'}, +\ {'word': '-validatemethodvar', 'menu': 'varName'}, +\ ] + +let b:itclwidget = [ +\ {'word': '-body', 'menu': ''}, +\ {'word': '-config', 'menu': ''}, +\ ] + +let b:package_sp_require = [ +\ {'word': 'BWidget', 'menu': '1.9.11'}, +\ {'word': 'Expect', 'menu': '5.45.3'}, +\ {'word': 'Ffidl', 'menu': '0.6.1'}, +\ {'word': 'Ffidlrt', 'menu': '0.1'}, +\ {'word': 'HTTP', 'menu': '2.0'}, +\ {'word': 'Img', 'menu': '1.4.6'}, +\ {'word': 'Itcl', 'menu': '4.1.2'}, +\ {'word': 'Itk', 'menu': '4.1.0'}, +\ {'word': 'Iwidgets', 'menu': '4.1.1'}, +\ {'word': 'JSONRPC', 'menu': '0.1'}, +\ {'word': 'Markdown', 'menu': '1.0'}, +\ {'word': 'Memchan', 'menu': '2.2.1'}, +\ {'word': 'Mentry', 'menu': '3.7'}, +\ {'word': 'Mentry_tile', 'menu': '3.7'}, +\ {'word': 'Mk4tcl', 'menu': '2.4.9.7.1'}, +\ {'word': 'Plotchart', 'menu': '2.3.4'}, +\ {'word': 'S3', 'menu': '1.0.3'}, +\ {'word': 'SASL', 'menu': '1.3.3'}, +\ {'word': 'SASL::NTLM', 'menu': '1.1.2'}, +\ {'word': 'SASL::SCRAM', 'menu': '0.1'}, +\ {'word': 'SASL::XGoogleToken', 'menu': '1.0.1'}, +\ {'word': 'SOAP', 'menu': '1.6.8.1'}, +\ {'word': 'SOAP::CGI', 'menu': '1.0.1'}, +\ {'word': 'SOAP::Domain', 'menu': '1.4.1'}, +\ {'word': 'SOAP::Service', 'menu': '0.5'}, +\ {'word': 'SOAP::Utils', 'menu': '1.1'}, +\ {'word': 'SOAP::ftp', 'menu': '1.0'}, +\ {'word': 'SOAP::http', 'menu': '1.0'}, +\ {'word': 'SOAP::https', 'menu': '1.0'}, +\ {'word': 'SOAP::smtp', 'menu': '1.0'}, +\ {'word': 'SOAP::xpath', 'menu': '0.2'}, +\ {'word': 'Site', 'menu': '1.0'}, +\ {'word': 'Tablelist', 'menu': '5.13'}, +\ {'word': 'Tablelist_tile', 'menu': '5.13'}, +\ {'word': 'TclOO', 'menu': '1.1.0'}, +\ {'word': 'Tclx', 'menu': '8.4'}, +\ {'word': 'Thread', 'menu': '2.8.4'}, +\ {'word': 'Tk', 'menu': '8.6.9'}, +\ {'word': 'Tktable', 'menu': '2.11'}, +\ {'word': 'Trf', 'menu': '2.1.4'}, +\ {'word': 'Ttrace', 'menu': '2.8.4'}, +\ {'word': 'Wcb', 'menu': '3.5'}, +\ {'word': 'Wub', 'menu': '5.0'}, +\ {'word': 'XMLRPC', 'menu': '1.0.1'}, +\ {'word': 'XOTcl', 'menu': '2.2.0'}, +\ {'word': 'aes', 'menu': '1.2.1'}, +\ {'word': 'ascii85', 'menu': '1.0'}, +\ {'word': 'asn', 'menu': '0.8.4'}, +\ {'word': 'autoproxy', 'menu': '1.5.3'}, +\ {'word': 'autoscroll', 'menu': '1.1'}, +\ {'word': 'base32', 'menu': '0.1'}, +\ {'word': 'base32::core', 'menu': '0.1'}, +\ {'word': 'base32::hex', 'menu': '0.1'}, +\ {'word': 'base64', 'menu': '2.4.2'}, +\ {'word': 'bee', 'menu': '0.1'}, +\ {'word': 'bench', 'menu': '0.4'}, +\ {'word': 'bench::in', 'menu': '0.1'}, +\ {'word': 'bench::out::csv', 'menu': '0.1.2'}, +\ {'word': 'bench::out::text', 'menu': '0.1.2'}, +\ {'word': 'bibtex', 'menu': '0.6'}, +\ {'word': 'bindDown', 'menu': '1.0'}, +\ {'word': 'blowfish', 'menu': '1.0.4'}, +\ {'word': 'cache::async', 'menu': '0.3'}, +\ {'word': 'canvas::drag', 'menu': '0.1'}, +\ {'word': 'canvas::edit::points', 'menu': '0.1'}, +\ {'word': 'canvas::edit::polyline', 'menu': '0.1'}, +\ {'word': 'canvas::edit::quadrilateral', 'menu': '0.1'}, +\ {'word': 'canvas::gradient', 'menu': '0.2'}, +\ {'word': 'canvas::highlight', 'menu': '0.1'}, +\ {'word': 'canvas::mvg', 'menu': '1'}, +\ {'word': 'canvas::snap', 'menu': '1.0.1'}, +\ {'word': 'canvas::sqmap', 'menu': '0.3.1'}, +\ {'word': 'canvas::tag', 'menu': '0.1'}, +\ {'word': 'canvas::track::lines', 'menu': '0.1'}, +\ {'word': 'canvas::zoom', 'menu': '0.2.1'}, +\ {'word': 'cgi2dom', 'menu': '1.1'}, +\ {'word': 'char', 'menu': '1.0.1'}, +\ {'word': 'chatwidget', 'menu': '1.1.0'}, +\ {'word': 'cksum', 'menu': '1.1.4'}, +\ {'word': 'clock::iso8601', 'menu': '0.1'}, +\ {'word': 'clock::rfc2822', 'menu': '0.1'}, +\ {'word': 'cmdline', 'menu': '1.5'}, +\ {'word': 'comm', 'menu': '4.6.3.1'}, +\ {'word': 'configuration', 'menu': '1'}, +\ {'word': 'control', 'menu': '0.1.3'}, +\ {'word': 'controlwidget', 'menu': '0.1'}, +\ {'word': 'coroutine', 'menu': '1.1.3'}, +\ {'word': 'coroutine::auto', 'menu': '1.1.3'}, +\ {'word': 'counter', 'menu': '2.0.4'}, +\ {'word': 'crc16', 'menu': '1.1.2'}, +\ {'word': 'crc32', 'menu': '1.3.2'}, +\ {'word': 'critcl', 'menu': '3.1.17'}, +\ {'word': 'critcl::app', 'menu': '3.1.17'}, +\ {'word': 'critcl::bitmap', 'menu': '1.0.1'}, +\ {'word': 'critcl::class', 'menu': '1.0.7'}, +\ {'word': 'critcl::cutil', 'menu': '0.1'}, +\ {'word': 'critcl::emap', 'menu': '1.1'}, +\ {'word': 'critcl::enum', 'menu': '1.0.1'}, +\ {'word': 'critcl::iassoc', 'menu': '1.0.2'}, +\ {'word': 'critcl::literals', 'menu': '1.2'}, +\ {'word': 'critcl::platform', 'menu': '1.0.15'}, +\ {'word': 'critcl::util', 'menu': '1.1'}, +\ {'word': 'cron', 'menu': '1.2.1'}, +\ {'word': 'crosshair', 'menu': '1.2'}, +\ {'word': 'csv', 'menu': '0.8.1'}, +\ {'word': 'ctext', 'menu': '3.3'}, +\ {'word': 'cursor', 'menu': '0.3.1'}, +\ {'word': 'datefield', 'menu': '0.2'}, +\ {'word': 'debug', 'menu': '1.0.6'}, +\ {'word': 'debug::caller', 'menu': '1.1'}, +\ {'word': 'debug::heartbeat', 'menu': '1'}, +\ {'word': 'debug::timestamp', 'menu': '1'}, +\ {'word': 'des', 'menu': '1.1.0'}, +\ {'word': 'diagram', 'menu': '1'}, +\ {'word': 'diagram::application', 'menu': '1.2'}, +\ {'word': 'diagram::attribute', 'menu': '1'}, +\ {'word': 'diagram::basic', 'menu': '1.0.1'}, +\ {'word': 'diagram::core', 'menu': '1'}, +\ {'word': 'diagram::direction', 'menu': '1'}, +\ {'word': 'diagram::element', 'menu': '1'}, +\ {'word': 'diagram::navigation', 'menu': '1'}, +\ {'word': 'diagram::point', 'menu': '1'}, +\ {'word': 'dict84', 'menu': '1'}, +\ {'word': 'dicttool', 'menu': '1.0'}, +\ {'word': 'dns', 'menu': '1.3.5'}, +\ {'word': 'docstrip', 'menu': '1.2'}, +\ {'word': 'docstrip::util', 'menu': '1.3.1'}, +\ {'word': 'doctools', 'menu': '1.4.19'}, +\ {'word': 'doctools::changelog', 'menu': '1.1'}, +\ {'word': 'doctools::config', 'menu': '0.1'}, +\ {'word': 'doctools::cvs', 'menu': '1'}, +\ {'word': 'doctools::html', 'menu': '0.1'}, +\ {'word': 'doctools::html::cssdefaults', 'menu': '0.1'}, +\ {'word': 'doctools::idx', 'menu': '1.0.5'}, +\ {'word': 'doctools::idx::export', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::docidx', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::html', 'menu': '0.2'}, +\ {'word': 'doctools::idx::export::json', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::nroff', 'menu': '0.3'}, +\ {'word': 'doctools::idx::export::text', 'menu': '0.2'}, +\ {'word': 'doctools::idx::export::wiki', 'menu': '0.2'}, +\ {'word': 'doctools::idx::import', 'menu': '0.1'}, +\ {'word': 'doctools::idx::import::docidx', 'menu': '0.1'}, +\ {'word': 'doctools::idx::import::json', 'menu': '0.1'}, +\ {'word': 'doctools::idx::parse', 'menu': '0.1'}, +\ {'word': 'doctools::idx::structure', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::c', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::de', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::en', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::fr', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::c', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::de', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::en', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::fr', 'menu': '0.1'}, +\ {'word': 'doctools::nroff::man_macros', 'menu': '0.1'}, +\ {'word': 'doctools::paths', 'menu': '0.1'}, +\ {'word': 'doctools::tcl::parse', 'menu': '0.1'}, +\ {'word': 'doctools::text', 'menu': '0.1'}, +\ {'word': 'doctools::toc', 'menu': '1.1.4'}, +\ {'word': 'doctools::toc::export', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::doctoc', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::html', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::json', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::nroff', 'menu': '0.2'}, +\ {'word': 'doctools::toc::export::text', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::wiki', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import::doctoc', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import::json', 'menu': '0.1'}, +\ {'word': 'doctools::toc::parse', 'menu': '0.1'}, +\ {'word': 'doctools::toc::structure', 'menu': '0.1'}, +\ {'word': 'dom', 'menu': '3.2'}, +\ {'word': 'dom::c', 'menu': '2.6'}, +\ {'word': 'dom::generic', 'menu': '2.6'}, +\ {'word': 'dom::libxml2', 'menu': '3.2'}, +\ {'word': 'dom::tcl', 'menu': '2.6'}, +\ {'word': 'dom::tclgeneric', 'menu': '2.6'}, +\ {'word': 'dommap', 'menu': '1.0'}, +\ {'word': 'domtext', 'menu': '2.5'}, +\ {'word': 'domtree', 'menu': '2.5'}, +\ {'word': 'dtplite', 'menu': '1.3'}, +\ {'word': 'expat', 'menu': '2.6'}, +\ {'word': 'fileutil', 'menu': '1.15'}, +\ {'word': 'fileutil::decode', 'menu': '0.2'}, +\ {'word': 'fileutil::globfind', 'menu': '1.5'}, +\ {'word': 'fileutil::magic::cfront', 'menu': '1.0'}, +\ {'word': 'fileutil::magic::cgen', 'menu': '1.0'}, +\ {'word': 'fileutil::magic::filetype', 'menu': '1.0.2'}, +\ {'word': 'fileutil::magic::mimetype', 'menu': '1.0.2'}, +\ {'word': 'fileutil::magic::rt', 'menu': '1.0'}, +\ {'word': 'fileutil::multi', 'menu': '0.1'}, +\ {'word': 'fileutil::multi::op', 'menu': '0.5.3'}, +\ {'word': 'fileutil::traverse', 'menu': '0.6'}, +\ {'word': 'ftp', 'menu': '2.4.13'}, +\ {'word': 'ftp::geturl', 'menu': '0.2.2'}, +\ {'word': 'ftpd', 'menu': '1.3'}, +\ {'word': 'generator', 'menu': '0.1'}, +\ {'word': 'getstring', 'menu': '0.1'}, +\ {'word': 'gpx', 'menu': '1'}, +\ {'word': 'grammar::aycock', 'menu': '1.0'}, +\ {'word': 'grammar::aycock::debug', 'menu': '1.0'}, +\ {'word': 'grammar::aycock::runtime', 'menu': '1.0'}, +\ {'word': 'grammar::fa', 'menu': '0.5'}, +\ {'word': 'grammar::fa::dacceptor', 'menu': '0.1.1'}, +\ {'word': 'grammar::fa::dexec', 'menu': '0.2'}, +\ {'word': 'grammar::fa::op', 'menu': '0.4.1'}, +\ {'word': 'grammar::me::cpu', 'menu': '0.2'}, +\ {'word': 'grammar::me::cpu::core', 'menu': '0.2'}, +\ {'word': 'grammar::me::cpu::gasm', 'menu': '0.1'}, +\ {'word': 'grammar::me::tcl', 'menu': '0.1'}, +\ {'word': 'grammar::me::util', 'menu': '0.1'}, +\ {'word': 'grammar::peg', 'menu': '0.2'}, +\ {'word': 'grammar::peg::interp', 'menu': '0.1.1'}, +\ {'word': 'history', 'menu': '0.1'}, +\ {'word': 'hook', 'menu': '0.1'}, +\ {'word': 'html', 'menu': '1.4.4'}, +\ {'word': 'htmlparse', 'menu': '1.2.2'}, +\ {'word': 'http', 'menu': '1.0'}, +\ {'word': 'http::wget', 'menu': '0.1'}, +\ {'word': 'httpd', 'menu': '4.0'}, +\ {'word': 'httpd::content', 'menu': '4.0'}, +\ {'word': 'httpd::dispatch', 'menu': '4.0'}, +\ {'word': 'huddle', 'menu': '0.2'}, +\ {'word': 'huddle::json', 'menu': '0.1'}, +\ {'word': 'ico', 'menu': '1.1'}, +\ {'word': 'ident', 'menu': '0.42'}, +\ {'word': 'imap4', 'menu': '0.5.3'}, +\ {'word': 'img::base', 'menu': '1.4.6'}, +\ {'word': 'img::bmp', 'menu': '1.4.6'}, +\ {'word': 'img::dted', 'menu': '1.4.6'}, +\ {'word': 'img::gif', 'menu': '1.4.6'}, +\ {'word': 'img::ico', 'menu': '1.4.6'}, +\ {'word': 'img::jpeg', 'menu': '1.4.6'}, +\ {'word': 'img::pcx', 'menu': '1.4.6'}, +\ {'word': 'img::pixmap', 'menu': '1.4.6'}, +\ {'word': 'img::png', 'menu': '1.4.6'}, +\ {'word': 'img::ppm', 'menu': '1.4.6'}, +\ {'word': 'img::ps', 'menu': '1.4.6'}, +\ {'word': 'img::raw', 'menu': '1.4.6'}, +\ {'word': 'img::sgi', 'menu': '1.4.6'}, +\ {'word': 'img::sun', 'menu': '1.4.6'}, +\ {'word': 'img::tga', 'menu': '1.4.6'}, +\ {'word': 'img::tiff', 'menu': '1.4.6'}, +\ {'word': 'img::window', 'menu': '1.4.6'}, +\ {'word': 'img::xbm', 'menu': '1.4.6'}, +\ {'word': 'img::xpm', 'menu': '1.4.6'}, +\ {'word': 'inifile', 'menu': '0.3'}, +\ {'word': 'interp', 'menu': '0.1.2'}, +\ {'word': 'interp::delegate::method', 'menu': '0.2'}, +\ {'word': 'interp::delegate::proc', 'menu': '0.2'}, +\ {'word': 'ip', 'menu': '1.3'}, +\ {'word': 'ipentry', 'menu': '0.3'}, +\ {'word': 'irc', 'menu': '0.6.1'}, +\ {'word': 'itcl', 'menu': '4.1.2'}, +\ {'word': 'itk', 'menu': '4.1.0'}, +\ {'word': 'javascript', 'menu': '1.0.2'}, +\ {'word': 'jpeg', 'menu': '0.5'}, +\ {'word': 'jpegtcl', 'menu': '9.2'}, +\ {'word': 'json', 'menu': '1.3.3'}, +\ {'word': 'json::write', 'menu': '1.0.3'}, +\ {'word': 'khim', 'menu': '1.0.1'}, +\ {'word': 'lambda', 'menu': '1'}, +\ {'word': 'lassign84', 'menu': '1.0.1'}, +\ {'word': 'ldap', 'menu': '1.8'}, +\ {'word': 'ldapx', 'menu': '1.0'}, +\ {'word': 'led', 'menu': '1.0'}, +\ {'word': 'lmap84', 'menu': '1'}, +\ {'word': 'log', 'menu': '1.3'}, +\ {'word': 'logger', 'menu': '0.9.4'}, +\ {'word': 'logger::appender', 'menu': '1.3'}, +\ {'word': 'logger::utils', 'menu': '1.3'}, +\ {'word': 'map::geocode::nominatim', 'menu': '0.1'}, +\ {'word': 'map::slippy', 'menu': '0.5'}, +\ {'word': 'map::slippy::cache', 'menu': '0.2'}, +\ {'word': 'map::slippy::fetcher', 'menu': '0.4'}, +\ {'word': 'mapproj', 'menu': '1.0'}, +\ {'word': 'math', 'menu': '1.2.5'}, +\ {'word': 'math::bigfloat', 'menu': '2.0.2'}, +\ {'word': 'math::bignum', 'menu': '3.1.1'}, +\ {'word': 'math::calculus', 'menu': '0.8.1'}, +\ {'word': 'math::calculus::symdiff', 'menu': '1.0.1'}, +\ {'word': 'math::complexnumbers', 'menu': '1.0.2'}, +\ {'word': 'math::constants', 'menu': '1.0.2'}, +\ {'word': 'math::decimal', 'menu': '1.0.3'}, +\ {'word': 'math::exact', 'menu': '1.0'}, +\ {'word': 'math::fourier', 'menu': '1.0.2'}, +\ {'word': 'math::fuzzy', 'menu': '0.2.1'}, +\ {'word': 'math::geometry', 'menu': '1.1.3'}, +\ {'word': 'math::interpolate', 'menu': '1.1'}, +\ {'word': 'math::linearalgebra', 'menu': '1.1.5'}, +\ {'word': 'math::machineparameters', 'menu': '0.1'}, +\ {'word': 'math::numtheory', 'menu': '1.0'}, +\ {'word': 'math::optimize', 'menu': '1.0.1'}, +\ {'word': 'math::polynomials', 'menu': '1.0.1'}, +\ {'word': 'math::rationalfunctions', 'menu': '1.0.1'}, +\ {'word': 'math::roman', 'menu': '1.0'}, +\ {'word': 'math::special', 'menu': '0.3.0'}, +\ {'word': 'math::statistics', 'menu': '1.0'}, +\ {'word': 'md4', 'menu': '1.0.6'}, +\ {'word': 'md5', 'menu': '1.4.4'}, +\ {'word': 'md5crypt', 'menu': '1.1.0'}, +\ {'word': 'mentry', 'menu': '3.7'}, +\ {'word': 'mentry::common', 'menu': '3.7'}, +\ {'word': 'mentry_tile', 'menu': '3.7'}, +\ {'word': 'menubar', 'menu': '0.5'}, +\ {'word': 'menubar::debug', 'menu': '0.5'}, +\ {'word': 'menubar::node', 'menu': '0.5'}, +\ {'word': 'menubar::tree', 'menu': '0.5'}, +\ {'word': 'meter', 'menu': '1.0'}, +\ {'word': 'mime', 'menu': '1.6'}, +\ {'word': 'msgcat', 'menu': '1.6.1'}, +\ {'word': 'multiplexer', 'menu': '0.2'}, +\ {'word': 'nameserv', 'menu': '0.4.2'}, +\ {'word': 'nameserv::auto', 'menu': '0.3'}, +\ {'word': 'nameserv::cluster', 'menu': '0.2.3'}, +\ {'word': 'nameserv::common', 'menu': '0.1'}, +\ {'word': 'nameserv::server', 'menu': '0.3.2'}, +\ {'word': 'namespacex', 'menu': '0.1'}, +\ {'word': 'ncgi', 'menu': '1.4.3'}, +\ {'word': 'nettool', 'menu': '0.5.1'}, +\ {'word': 'nmea', 'menu': '1.0.0'}, +\ {'word': 'nntp', 'menu': '0.2.1'}, +\ {'word': 'nsf', 'menu': '2.2.0'}, +\ {'word': 'ntext', 'menu': '0.81'}, +\ {'word': 'nx', 'menu': '2.2.0'}, +\ {'word': 'nx::class-method', 'menu': '1.0'}, +\ {'word': 'nx::help', 'menu': '1.0'}, +\ {'word': 'nx::plain-object-method', 'menu': '1.0'}, +\ {'word': 'nx::pp', 'menu': '1.0'}, +\ {'word': 'nx::serializer', 'menu': '2.2'}, +\ {'word': 'nx::shell', 'menu': '1.1'}, +\ {'word': 'nx::test', 'menu': '1.0'}, +\ {'word': 'nx::trait', 'menu': '0.4'}, +\ {'word': 'nx::trait::callback', 'menu': '1.0'}, +\ {'word': 'nx::volatile', 'menu': '1.0'}, +\ {'word': 'nx::zip', 'menu': '1.1'}, +\ {'word': 'oauth', 'menu': '1'}, +\ {'word': 'odie::processman', 'menu': '0.3'}, +\ {'word': 'oo::dialect', 'menu': '0.3'}, +\ {'word': 'oo::meta', 'menu': '0.4.1'}, +\ {'word': 'oo::option', 'menu': '0.3'}, +\ {'word': 'oo::util', 'menu': '1.2.2'}, +\ {'word': 'opt', 'menu': '0.4.6'}, +\ {'word': 'otp', 'menu': '1.0.0'}, +\ {'word': 'page::analysis::peg::emodes', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::minimize', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::reachable', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::realizable', 'menu': '0.1'}, +\ {'word': 'page::compiler::peg::mecpu', 'menu': '0.1.1'}, +\ {'word': 'page::config::peg', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::canon', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::cpkg', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::hb', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::me', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::mecpu', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::ser', 'menu': '0.1'}, +\ {'word': 'page::gen::tree::text', 'menu': '0.1'}, +\ {'word': 'page::parse::lemon', 'menu': '0.1'}, +\ {'word': 'page::parse::peg', 'menu': '0.1'}, +\ {'word': 'page::parse::peghb', 'menu': '0.1'}, +\ {'word': 'page::parse::pegser', 'menu': '0.1'}, +\ {'word': 'page::pluginmgr', 'menu': '0.2'}, +\ {'word': 'page::reader::hb', 'menu': '0.1'}, +\ {'word': 'page::reader::lemon', 'menu': '0.1'}, +\ {'word': 'page::reader::peg', 'menu': '0.1'}, +\ {'word': 'page::reader::ser', 'menu': '0.1'}, +\ {'word': 'page::reader::treeser', 'menu': '0.1'}, +\ {'word': 'page::transform::mecpu', 'menu': '0.1'}, +\ {'word': 'page::transform::reachable', 'menu': '0.1'}, +\ {'word': 'page::transform::realizable', 'menu': '0.1'}, +\ {'word': 'page::util::flow', 'menu': '0.1'}, +\ {'word': 'page::util::norm::lemon', 'menu': '0.1'}, +\ {'word': 'page::util::norm::peg', 'menu': '0.1'}, +\ {'word': 'page::util::peg', 'menu': '0.1'}, +\ {'word': 'page::util::quote', 'menu': '0.1'}, +\ {'word': 'page::writer::hb', 'menu': '0.1'}, +\ {'word': 'page::writer::identity', 'menu': '0.1'}, +\ {'word': 'page::writer::me', 'menu': '0.1'}, +\ {'word': 'page::writer::mecpu', 'menu': '0.1.1'}, +\ {'word': 'page::writer::null', 'menu': '0.1'}, +\ {'word': 'page::writer::peg', 'menu': '0.1'}, +\ {'word': 'page::writer::ser', 'menu': '0.1'}, +\ {'word': 'page::writer::tpc', 'menu': '0.1'}, +\ {'word': 'page::writer::tree', 'menu': '0.1'}, +\ {'word': 'paths', 'menu': '1'}, +\ {'word': 'picoirc', 'menu': '0.5.2'}, +\ {'word': 'pki', 'menu': '0.6'}, +\ {'word': 'platform', 'menu': '1.0.14'}, +\ {'word': 'plotanim', 'menu': '0.2'}, +\ {'word': 'pluginmgr', 'menu': '0.3'}, +\ {'word': 'png', 'menu': '0.2'}, +\ {'word': 'pngtcl', 'menu': '1.6.21'}, +\ {'word': 'pop3', 'menu': '1.9'}, +\ {'word': 'pop3d', 'menu': '1.1.0'}, +\ {'word': 'pop3d::dbox', 'menu': '1.0.2'}, +\ {'word': 'pop3d::udb', 'menu': '1.1'}, +\ {'word': 'processman', 'menu': '0.3'}, +\ {'word': 'profiler', 'menu': '0.3'}, +\ {'word': 'pt::ast', 'menu': '1.1'}, +\ {'word': 'pt::cparam::configuration::critcl', 'menu': '1.0.2'}, +\ {'word': 'pt::cparam::configuration::tea', 'menu': '0.1'}, +\ {'word': 'pt::parse::peg', 'menu': '1.0.1'}, +\ {'word': 'pt::pe', 'menu': '1.0.2'}, +\ {'word': 'pt::pe::op', 'menu': '1.0.1'}, +\ {'word': 'pt::peg', 'menu': '1'}, +\ {'word': 'pt::peg::container', 'menu': '1'}, +\ {'word': 'pt::peg::container::peg', 'menu': '1'}, +\ {'word': 'pt::peg::export', 'menu': '1'}, +\ {'word': 'pt::peg::export::container', 'menu': '1'}, +\ {'word': 'pt::peg::export::json', 'menu': '1'}, +\ {'word': 'pt::peg::export::peg', 'menu': '1'}, +\ {'word': 'pt::peg::from::json', 'menu': '1'}, +\ {'word': 'pt::peg::from::peg', 'menu': '1.0.3'}, +\ {'word': 'pt::peg::import', 'menu': '1'}, +\ {'word': 'pt::peg::import::json', 'menu': '1'}, +\ {'word': 'pt::peg::import::peg', 'menu': '1'}, +\ {'word': 'pt::peg::interp', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::op', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::to::container', 'menu': '1'}, +\ {'word': 'pt::peg::to::cparam', 'menu': '1.1.3'}, +\ {'word': 'pt::peg::to::json', 'menu': '1'}, +\ {'word': 'pt::peg::to::param', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::to::peg', 'menu': '1.0.2'}, +\ {'word': 'pt::peg::to::tclparam', 'menu': '1.0.3'}, +\ {'word': 'pt::pgen', 'menu': '1.0.3'}, +\ {'word': 'pt::rde', 'menu': '1.1'}, +\ {'word': 'pt::rde::oo', 'menu': '1.1'}, +\ {'word': 'pt::tclparam::configuration::snit', 'menu': '1.0.2'}, +\ {'word': 'pt::tclparam::configuration::tcloo', 'menu': '1.0.4'}, +\ {'word': 'pt::util', 'menu': '1.1'}, +\ {'word': 'puretclparser', 'menu': '3.2'}, +\ {'word': 'radioMatrix', 'menu': '1.0'}, +\ {'word': 'rc4', 'menu': '1.1.0'}, +\ {'word': 'rcs', 'menu': '0.1'}, +\ {'word': 'rdial', 'menu': '0.3'}, +\ {'word': 'report', 'menu': '0.3.2'}, +\ {'word': 'resolv', 'menu': '1.0.3'}, +\ {'word': 'rest', 'menu': '1.0.2'}, +\ {'word': 'ripemd128', 'menu': '1.0.5'}, +\ {'word': 'ripemd160', 'menu': '1.0.5'}, +\ {'word': 'rpcvar', 'menu': '1.2'}, +\ {'word': 'scgi::app', 'menu': '0.1'}, +\ {'word': 'scgi::server', 'menu': '0.1'}, +\ {'word': 'sgml', 'menu': '1.9'}, +\ {'word': 'sgmlparser', 'menu': '1.1'}, +\ {'word': 'sha1', 'menu': '1.1.1'}, +\ {'word': 'sha256', 'menu': '1.0.3'}, +\ {'word': 'simulation::annealing', 'menu': '0.2'}, +\ {'word': 'simulation::montecarlo', 'menu': '0.1'}, +\ {'word': 'simulation::random', 'menu': '0.3.1'}, +\ {'word': 'smtp', 'menu': '1.4.5'}, +\ {'word': 'smtpd', 'menu': '1.5'}, +\ {'word': 'snit', 'menu': '1.4.2'}, +\ {'word': 'soapinterop::B', 'menu': '1.0'}, +\ {'word': 'soapinterop::C', 'menu': '1.0'}, +\ {'word': 'soapinterop::base', 'menu': '1.0'}, +\ {'word': 'soundex', 'menu': '1.0'}, +\ {'word': 'spf', 'menu': '1.1.1'}, +\ {'word': 'sqlite3', 'menu': '3.20.1'}, +\ {'word': 'starkit', 'menu': '1.3.3'}, +\ {'word': 'stooop', 'menu': '4.4.1'}, +\ {'word': 'string::token', 'menu': '1'}, +\ {'word': 'string::token::shell', 'menu': '1.2'}, +\ {'word': 'stringprep', 'menu': '1.0.1'}, +\ {'word': 'stringprep::data', 'menu': '1.0.1'}, +\ {'word': 'struct', 'menu': '1.4'}, +\ {'word': 'struct::disjointset', 'menu': '1.0'}, +\ {'word': 'struct::graph', 'menu': '2.4'}, +\ {'word': 'struct::graph::op', 'menu': '0.11.3'}, +\ {'word': 'struct::list', 'menu': '1.8.3'}, +\ {'word': 'struct::matrix', 'menu': '2.0.3'}, +\ {'word': 'struct::pool', 'menu': '1.2.3'}, +\ {'word': 'struct::prioqueue', 'menu': '1.4'}, +\ {'word': 'struct::queue', 'menu': '1.4.5'}, +\ {'word': 'struct::record', 'menu': '1.2.1'}, +\ {'word': 'struct::set', 'menu': '2.2.3'}, +\ {'word': 'struct::skiplist', 'menu': '1.3'}, +\ {'word': 'struct::stack', 'menu': '1.5.3'}, +\ {'word': 'struct::tree', 'menu': '1.2.2'}, +\ {'word': 'stubs::container', 'menu': '1'}, +\ {'word': 'stubs::gen', 'menu': '1'}, +\ {'word': 'stubs::gen::decl', 'menu': '1'}, +\ {'word': 'stubs::gen::header', 'menu': '1'}, +\ {'word': 'stubs::gen::init', 'menu': '1'}, +\ {'word': 'stubs::gen::lib', 'menu': '1'}, +\ {'word': 'stubs::gen::macro', 'menu': '1'}, +\ {'word': 'stubs::gen::slot', 'menu': '1'}, +\ {'word': 'stubs::reader', 'menu': '1'}, +\ {'word': 'stubs::writer', 'menu': '1'}, +\ {'word': 'style', 'menu': '0.3'}, +\ {'word': 'style::as', 'menu': '1.4.1'}, +\ {'word': 'style::lobster', 'menu': '0.2'}, +\ {'word': 'sum', 'menu': '1.1.2'}, +\ {'word': 'swaplist', 'menu': '0.2'}, +\ {'word': 'switched', 'menu': '2.2.1'}, +\ {'word': 'tablelist', 'menu': '5.13'}, +\ {'word': 'tablelist::common', 'menu': '5.13'}, +\ {'word': 'tablelist_tile', 'menu': '5.13'}, +\ {'word': 'tachometer', 'menu': '0.1'}, +\ {'word': 'tar', 'menu': '0.10'}, +\ {'word': 'tbcload', 'menu': '1.7'}, +\ {'word': 'tcl::chan::cat', 'menu': '1.0.2'}, +\ {'word': 'tcl::chan::core', 'menu': '1'}, +\ {'word': 'tcl::chan::events', 'menu': '1'}, +\ {'word': 'tcl::chan::facade', 'menu': '1.0.1'}, +\ {'word': 'tcl::chan::fifo', 'menu': '1'}, +\ {'word': 'tcl::chan::fifo2', 'menu': '1'}, +\ {'word': 'tcl::chan::halfpipe', 'menu': '1'}, +\ {'word': 'tcl::chan::memchan', 'menu': '1.0.3'}, +\ {'word': 'tcl::chan::null', 'menu': '1'}, +\ {'word': 'tcl::chan::nullzero', 'menu': '1'}, +\ {'word': 'tcl::chan::random', 'menu': '1'}, +\ {'word': 'tcl::chan::std', 'menu': '1.0.1'}, +\ {'word': 'tcl::chan::string', 'menu': '1.0.2'}, +\ {'word': 'tcl::chan::textwindow', 'menu': '1'}, +\ {'word': 'tcl::chan::variable', 'menu': '1.0.3'}, +\ {'word': 'tcl::chan::zero', 'menu': '1'}, +\ {'word': 'tcl::randomseed', 'menu': '1'}, +\ {'word': 'tcl::transform::adler32', 'menu': '1'}, +\ {'word': 'tcl::transform::base64', 'menu': '1'}, +\ {'word': 'tcl::transform::core', 'menu': '1'}, +\ {'word': 'tcl::transform::counter', 'menu': '1'}, +\ {'word': 'tcl::transform::crc32', 'menu': '1'}, +\ {'word': 'tcl::transform::hex', 'menu': '1'}, +\ {'word': 'tcl::transform::identity', 'menu': '1'}, +\ {'word': 'tcl::transform::limitsize', 'menu': '1'}, +\ {'word': 'tcl::transform::observe', 'menu': '1'}, +\ {'word': 'tcl::transform::otp', 'menu': '1'}, +\ {'word': 'tcl::transform::rot', 'menu': '1'}, +\ {'word': 'tcl::transform::spacer', 'menu': '1'}, +\ {'word': 'tcl::transform::zlib', 'menu': '1.0.1'}, +\ {'word': 'tclAE', 'menu': '2.0.5'}, +\ {'word': 'tclDES', 'menu': '1.0.0'}, +\ {'word': 'tclDESjr', 'menu': '1.0.0'}, +\ {'word': 'tcllibc', 'menu': '0.3.15'}, +\ {'word': 'tclparser', 'menu': '3.2'}, +\ {'word': 'tcltest', 'menu': '2.5.0'}, +\ {'word': 'tdbc', 'menu': '1.1.0'}, +\ {'word': 'tdbc::mysql', 'menu': '1.1.0'}, +\ {'word': 'tdbc::odbc', 'menu': '1.1.0'}, +\ {'word': 'tdbc::postgres', 'menu': '1.1.0'}, +\ {'word': 'tdom', 'menu': '0.8.3'}, +\ {'word': 'tepam', 'menu': '0.5'}, +\ {'word': 'tepam::doc_gen', 'menu': '0.1.1'}, +\ {'word': 'term', 'menu': '0.1'}, +\ {'word': 'term::ansi::code', 'menu': '0.2'}, +\ {'word': 'term::ansi::code::attr', 'menu': '0.1'}, +\ {'word': 'term::ansi::code::ctrl', 'menu': '0.2'}, +\ {'word': 'term::ansi::code::macros', 'menu': '0.1'}, +\ {'word': 'term::ansi::ctrl::unix', 'menu': '0.1.1'}, +\ {'word': 'term::ansi::send', 'menu': '0.2'}, +\ {'word': 'term::interact::menu', 'menu': '0.1'}, +\ {'word': 'term::interact::pager', 'menu': '0.1'}, +\ {'word': 'term::receive', 'menu': '0.1'}, +\ {'word': 'term::receive::bind', 'menu': '0.1'}, +\ {'word': 'term::send', 'menu': '0.1'}, +\ {'word': 'text::write', 'menu': '1'}, +\ {'word': 'textutil', 'menu': '0.8'}, +\ {'word': 'textutil::adjust', 'menu': '0.7.3'}, +\ {'word': 'textutil::expander', 'menu': '1.3.1'}, +\ {'word': 'textutil::repeat', 'menu': '0.7'}, +\ {'word': 'textutil::split', 'menu': '0.7'}, +\ {'word': 'textutil::string', 'menu': '0.8'}, +\ {'word': 'textutil::tabify', 'menu': '0.7'}, +\ {'word': 'textutil::trim', 'menu': '0.7'}, +\ {'word': 'throw', 'menu': '1'}, +\ {'word': 'tie', 'menu': '1.1'}, +\ {'word': 'tie::std::array', 'menu': '1.0'}, +\ {'word': 'tie::std::dsource', 'menu': '1.0'}, +\ {'word': 'tie::std::file', 'menu': '1.0.4'}, +\ {'word': 'tie::std::growfile', 'menu': '1.0'}, +\ {'word': 'tie::std::log', 'menu': '1.0'}, +\ {'word': 'tie::std::rarray', 'menu': '1.0.1'}, +\ {'word': 'tiff', 'menu': '0.2.1'}, +\ {'word': 'tifftcl', 'menu': '3.9.7'}, +\ {'word': 'time', 'menu': '1.2.1'}, +\ {'word': 'tipstack', 'menu': '1.0.1'}, +\ {'word': 'tkblt', 'menu': '3.2'}, +\ {'word': 'tkcon', 'menu': '2.7'}, +\ {'word': 'tkpiechart', 'menu': '6.6'}, +\ {'word': 'tls', 'menu': '1.7.16'}, +\ {'word': 'tnc', 'menu': '0.3.0'}, +\ {'word': 'tool', 'menu': '0.5'}, +\ {'word': 'tool::datatype', 'menu': '0.1'}, +\ {'word': 'tooltip', 'menu': '1.4.5'}, +\ {'word': 'transfer::connect', 'menu': '0.2'}, +\ {'word': 'transfer::copy', 'menu': '0.3'}, +\ {'word': 'transfer::copy::queue', 'menu': '0.1'}, +\ {'word': 'transfer::data::destination', 'menu': '0.2'}, +\ {'word': 'transfer::data::source', 'menu': '0.2'}, +\ {'word': 'transfer::receiver', 'menu': '0.2'}, +\ {'word': 'transfer::transmitter', 'menu': '0.2'}, +\ {'word': 'treectrl', 'menu': '2.4.1'}, +\ {'word': 'treeql', 'menu': '1.3.1'}, +\ {'word': 'trsync', 'menu': '1.0'}, +\ {'word': 'try', 'menu': '1'}, +\ {'word': 'uevent', 'menu': '0.3.1'}, +\ {'word': 'uevent::onidle', 'menu': '0.1'}, +\ {'word': 'unicode', 'menu': '1.0.0'}, +\ {'word': 'unicode::data', 'menu': '1.0.0'}, +\ {'word': 'units', 'menu': '2.1.1'}, +\ {'word': 'uri', 'menu': '1.2.6'}, +\ {'word': 'uri::urn', 'menu': '1.0.3'}, +\ {'word': 'uuencode', 'menu': '1.1.5'}, +\ {'word': 'uuid', 'menu': '1.0.5'}, +\ {'word': 'valtype::common', 'menu': '1'}, +\ {'word': 'valtype::creditcard::amex', 'menu': '1'}, +\ {'word': 'valtype::creditcard::discover', 'menu': '1'}, +\ {'word': 'valtype::creditcard::mastercard', 'menu': '1'}, +\ {'word': 'valtype::creditcard::visa', 'menu': '1'}, +\ {'word': 'valtype::gs1::ean13', 'menu': '1'}, +\ {'word': 'valtype::iban', 'menu': '1.5'}, +\ {'word': 'valtype::imei', 'menu': '1'}, +\ {'word': 'valtype::isbn', 'menu': '1'}, +\ {'word': 'valtype::luhn', 'menu': '1'}, +\ {'word': 'valtype::luhn5', 'menu': '1'}, +\ {'word': 'valtype::usnpi', 'menu': '1'}, +\ {'word': 'valtype::verhoeff', 'menu': '1'}, +\ {'word': 'vfs', 'menu': '1.4.2'}, +\ {'word': 'vfs::ftp', 'menu': '1.0'}, +\ {'word': 'vfs::http', 'menu': '0.6'}, +\ {'word': 'vfs::mk4', 'menu': '1.10.1'}, +\ {'word': 'vfs::ns', 'menu': '0.5.1'}, +\ {'word': 'vfs::tar', 'menu': '0.91'}, +\ {'word': 'vfs::template', 'menu': '1.5.5'}, +\ {'word': 'vfs::template::chroot', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::collate', 'menu': '1.5.3'}, +\ {'word': 'vfs::template::fish', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::quota', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::version', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::version::delta', 'menu': '1.5.2'}, +\ {'word': 'vfs::test', 'menu': '1.0'}, +\ {'word': 'vfs::tk', 'menu': '0.5'}, +\ {'word': 'vfs::urltype', 'menu': '1.0'}, +\ {'word': 'vfs::webdav', 'menu': '0.1'}, +\ {'word': 'vfs::zip', 'menu': '1.0.4.1'}, +\ {'word': 'voltmeter', 'menu': '0.1'}, +\ {'word': 'wcb', 'menu': '3.5'}, +\ {'word': 'websocket', 'menu': '1.4'}, +\ {'word': 'widget', 'menu': '3.1'}, +\ {'word': 'widget::all', 'menu': '1.2.4'}, +\ {'word': 'widget::arrowbutton', 'menu': '1.0'}, +\ {'word': 'widget::calendar', 'menu': '1.0.1'}, +\ {'word': 'widget::dateentry', 'menu': '0.96'}, +\ {'word': 'widget::dialog', 'menu': '1.3.1'}, +\ {'word': 'widget::listentry', 'menu': '0.1.1'}, +\ {'word': 'widget::listsimple', 'menu': '0.1.1'}, +\ {'word': 'widget::menuentry', 'menu': '1.0.1'}, +\ {'word': 'widget::panelframe', 'menu': '1.1'}, +\ {'word': 'widget::ruler', 'menu': '1.1'}, +\ {'word': 'widget::screenruler', 'menu': '1.2'}, +\ {'word': 'widget::scrolledtext', 'menu': '1.0'}, +\ {'word': 'widget::scrolledwindow', 'menu': '1.2.1'}, +\ {'word': 'widget::statusbar', 'menu': '1.2.1'}, +\ {'word': 'widget::superframe', 'menu': '1.0.1'}, +\ {'word': 'widget::toolbar', 'menu': '1.2.1'}, +\ {'word': 'widget::validator', 'menu': '0.1'}, +\ {'word': 'wip', 'menu': '2.2'}, +\ {'word': 'xml', 'menu': '3.2'}, +\ {'word': 'xml::c', 'menu': '2.6'}, +\ {'word': 'xml::dep', 'menu': '1.0'}, +\ {'word': 'xml::expat', 'menu': '2.6'}, +\ {'word': 'xml::libxml2', 'menu': '3.2'}, +\ {'word': 'xml::tcl', 'menu': '3.2'}, +\ {'word': 'xml::tclparser', 'menu': '3.2'}, +\ {'word': 'xmldefs', 'menu': '3.2'}, +\ {'word': 'xmldep', 'menu': '1.0'}, +\ {'word': 'xmlswitch', 'menu': '3.2'}, +\ {'word': 'xotcl::comm::connection', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::dav', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::ftp', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::httpAccess', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::httpd', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::imap', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::ldap', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::mime', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::pcache', 'menu': '2.0'}, +\ {'word': 'xotcl::htmllib', 'menu': '2.0'}, +\ {'word': 'xotcl::metadataAnalyzer', 'menu': '2.0'}, +\ {'word': 'xotcl::mixinStrategy', 'menu': '2.0'}, +\ {'word': 'xotcl::package', 'menu': '2.0'}, +\ {'word': 'xotcl::script', 'menu': '2.0'}, +\ {'word': 'xotcl::scriptCreation::recoveryPoint', 'menu': '2.0'}, +\ {'word': 'xotcl::scriptCreation::scriptCreator', 'menu': '2.0'}, +\ {'word': 'xotcl::serializer', 'menu': '2.1'}, +\ {'word': 'xotcl::staticMetadataAnalyzer', 'menu': '2.0'}, +\ {'word': 'xotcl::store', 'menu': '0.84'}, +\ {'word': 'xotcl::store::jufgdbm', 'menu': '0.81'}, +\ {'word': 'xotcl::store::mem', 'menu': '0.84'}, +\ {'word': 'xotcl::store::multi', 'menu': '0.9'}, +\ {'word': 'xotcl::store::persistence', 'menu': '0.8'}, +\ {'word': 'xotcl::store::tclgdbm', 'menu': '0.84'}, +\ {'word': 'xotcl::store::textfile', 'menu': '0.84'}, +\ {'word': 'xotcl::test', 'menu': '1.38'}, +\ {'word': 'xotcl::trace', 'menu': '2.0'}, +\ {'word': 'xotcl::upvar-compat', 'menu': '2.0'}, +\ {'word': 'xotcl::wafecompat', 'menu': '2.0'}, +\ {'word': 'xotcl::xodoc', 'menu': '2.0'}, +\ {'word': 'xpath', 'menu': '1.0'}, +\ {'word': 'xslt', 'menu': '3.2'}, +\ {'word': 'xslt::cache', 'menu': '3.2'}, +\ {'word': 'xslt::libxslt', 'menu': '3.2'}, +\ {'word': 'xslt::process', 'menu': '1.1'}, +\ {'word': 'xslt::resources', 'menu': '1.3'}, +\ {'word': 'xslt::utilities', 'menu': '3.2'}, +\ {'word': 'xsxp', 'menu': '1.0'}, +\ {'word': 'xyplot', 'menu': '1.0.1'}, +\ {'word': 'yaml', 'menu': '0.3.9'}, +\ {'word': 'yencode', 'menu': '1.1.3'}, +\ {'word': 'zipfile::decode', 'menu': '0.7'}, +\ {'word': 'zipfile::encode', 'menu': '0.4'}, +\ {'word': 'zipfile::mkzip', 'menu': '1.2'}, +\ {'word': 'zlibtcl', 'menu': '1.2.8.1'}, +\ ] + +let b:package_sp_forget = [ +\ {'word': 'BWidget', 'menu': '1.9.11'}, +\ {'word': 'Expect', 'menu': '5.45.3'}, +\ {'word': 'Ffidl', 'menu': '0.6.1'}, +\ {'word': 'Ffidlrt', 'menu': '0.1'}, +\ {'word': 'HTTP', 'menu': '2.0'}, +\ {'word': 'Img', 'menu': '1.4.6'}, +\ {'word': 'Itcl', 'menu': '4.1.2'}, +\ {'word': 'Itk', 'menu': '4.1.0'}, +\ {'word': 'Iwidgets', 'menu': '4.1.1'}, +\ {'word': 'JSONRPC', 'menu': '0.1'}, +\ {'word': 'Markdown', 'menu': '1.0'}, +\ {'word': 'Memchan', 'menu': '2.2.1'}, +\ {'word': 'Mentry', 'menu': '3.7'}, +\ {'word': 'Mentry_tile', 'menu': '3.7'}, +\ {'word': 'Mk4tcl', 'menu': '2.4.9.7.1'}, +\ {'word': 'Plotchart', 'menu': '2.3.4'}, +\ {'word': 'S3', 'menu': '1.0.3'}, +\ {'word': 'SASL', 'menu': '1.3.3'}, +\ {'word': 'SASL::NTLM', 'menu': '1.1.2'}, +\ {'word': 'SASL::SCRAM', 'menu': '0.1'}, +\ {'word': 'SASL::XGoogleToken', 'menu': '1.0.1'}, +\ {'word': 'SOAP', 'menu': '1.6.8.1'}, +\ {'word': 'SOAP::CGI', 'menu': '1.0.1'}, +\ {'word': 'SOAP::Domain', 'menu': '1.4.1'}, +\ {'word': 'SOAP::Service', 'menu': '0.5'}, +\ {'word': 'SOAP::Utils', 'menu': '1.1'}, +\ {'word': 'SOAP::ftp', 'menu': '1.0'}, +\ {'word': 'SOAP::http', 'menu': '1.0'}, +\ {'word': 'SOAP::https', 'menu': '1.0'}, +\ {'word': 'SOAP::smtp', 'menu': '1.0'}, +\ {'word': 'SOAP::xpath', 'menu': '0.2'}, +\ {'word': 'Site', 'menu': '1.0'}, +\ {'word': 'Tablelist', 'menu': '5.13'}, +\ {'word': 'Tablelist_tile', 'menu': '5.13'}, +\ {'word': 'TclOO', 'menu': '1.1.0'}, +\ {'word': 'Tclx', 'menu': '8.4'}, +\ {'word': 'Thread', 'menu': '2.8.4'}, +\ {'word': 'Tk', 'menu': '8.6.9'}, +\ {'word': 'Tktable', 'menu': '2.11'}, +\ {'word': 'Trf', 'menu': '2.1.4'}, +\ {'word': 'Ttrace', 'menu': '2.8.4'}, +\ {'word': 'Wcb', 'menu': '3.5'}, +\ {'word': 'Wub', 'menu': '5.0'}, +\ {'word': 'XMLRPC', 'menu': '1.0.1'}, +\ {'word': 'XOTcl', 'menu': '2.2.0'}, +\ {'word': 'aes', 'menu': '1.2.1'}, +\ {'word': 'ascii85', 'menu': '1.0'}, +\ {'word': 'asn', 'menu': '0.8.4'}, +\ {'word': 'autoproxy', 'menu': '1.5.3'}, +\ {'word': 'autoscroll', 'menu': '1.1'}, +\ {'word': 'base32', 'menu': '0.1'}, +\ {'word': 'base32::core', 'menu': '0.1'}, +\ {'word': 'base32::hex', 'menu': '0.1'}, +\ {'word': 'base64', 'menu': '2.4.2'}, +\ {'word': 'bee', 'menu': '0.1'}, +\ {'word': 'bench', 'menu': '0.4'}, +\ {'word': 'bench::in', 'menu': '0.1'}, +\ {'word': 'bench::out::csv', 'menu': '0.1.2'}, +\ {'word': 'bench::out::text', 'menu': '0.1.2'}, +\ {'word': 'bibtex', 'menu': '0.6'}, +\ {'word': 'bindDown', 'menu': '1.0'}, +\ {'word': 'blowfish', 'menu': '1.0.4'}, +\ {'word': 'cache::async', 'menu': '0.3'}, +\ {'word': 'canvas::drag', 'menu': '0.1'}, +\ {'word': 'canvas::edit::points', 'menu': '0.1'}, +\ {'word': 'canvas::edit::polyline', 'menu': '0.1'}, +\ {'word': 'canvas::edit::quadrilateral', 'menu': '0.1'}, +\ {'word': 'canvas::gradient', 'menu': '0.2'}, +\ {'word': 'canvas::highlight', 'menu': '0.1'}, +\ {'word': 'canvas::mvg', 'menu': '1'}, +\ {'word': 'canvas::snap', 'menu': '1.0.1'}, +\ {'word': 'canvas::sqmap', 'menu': '0.3.1'}, +\ {'word': 'canvas::tag', 'menu': '0.1'}, +\ {'word': 'canvas::track::lines', 'menu': '0.1'}, +\ {'word': 'canvas::zoom', 'menu': '0.2.1'}, +\ {'word': 'cgi2dom', 'menu': '1.1'}, +\ {'word': 'char', 'menu': '1.0.1'}, +\ {'word': 'chatwidget', 'menu': '1.1.0'}, +\ {'word': 'cksum', 'menu': '1.1.4'}, +\ {'word': 'clock::iso8601', 'menu': '0.1'}, +\ {'word': 'clock::rfc2822', 'menu': '0.1'}, +\ {'word': 'cmdline', 'menu': '1.5'}, +\ {'word': 'comm', 'menu': '4.6.3.1'}, +\ {'word': 'configuration', 'menu': '1'}, +\ {'word': 'control', 'menu': '0.1.3'}, +\ {'word': 'controlwidget', 'menu': '0.1'}, +\ {'word': 'coroutine', 'menu': '1.1.3'}, +\ {'word': 'coroutine::auto', 'menu': '1.1.3'}, +\ {'word': 'counter', 'menu': '2.0.4'}, +\ {'word': 'crc16', 'menu': '1.1.2'}, +\ {'word': 'crc32', 'menu': '1.3.2'}, +\ {'word': 'critcl', 'menu': '3.1.17'}, +\ {'word': 'critcl::app', 'menu': '3.1.17'}, +\ {'word': 'critcl::bitmap', 'menu': '1.0.1'}, +\ {'word': 'critcl::class', 'menu': '1.0.7'}, +\ {'word': 'critcl::cutil', 'menu': '0.1'}, +\ {'word': 'critcl::emap', 'menu': '1.1'}, +\ {'word': 'critcl::enum', 'menu': '1.0.1'}, +\ {'word': 'critcl::iassoc', 'menu': '1.0.2'}, +\ {'word': 'critcl::literals', 'menu': '1.2'}, +\ {'word': 'critcl::platform', 'menu': '1.0.15'}, +\ {'word': 'critcl::util', 'menu': '1.1'}, +\ {'word': 'cron', 'menu': '1.2.1'}, +\ {'word': 'crosshair', 'menu': '1.2'}, +\ {'word': 'csv', 'menu': '0.8.1'}, +\ {'word': 'ctext', 'menu': '3.3'}, +\ {'word': 'cursor', 'menu': '0.3.1'}, +\ {'word': 'datefield', 'menu': '0.2'}, +\ {'word': 'debug', 'menu': '1.0.6'}, +\ {'word': 'debug::caller', 'menu': '1.1'}, +\ {'word': 'debug::heartbeat', 'menu': '1'}, +\ {'word': 'debug::timestamp', 'menu': '1'}, +\ {'word': 'des', 'menu': '1.1.0'}, +\ {'word': 'diagram', 'menu': '1'}, +\ {'word': 'diagram::application', 'menu': '1.2'}, +\ {'word': 'diagram::attribute', 'menu': '1'}, +\ {'word': 'diagram::basic', 'menu': '1.0.1'}, +\ {'word': 'diagram::core', 'menu': '1'}, +\ {'word': 'diagram::direction', 'menu': '1'}, +\ {'word': 'diagram::element', 'menu': '1'}, +\ {'word': 'diagram::navigation', 'menu': '1'}, +\ {'word': 'diagram::point', 'menu': '1'}, +\ {'word': 'dict84', 'menu': '1'}, +\ {'word': 'dicttool', 'menu': '1.0'}, +\ {'word': 'dns', 'menu': '1.3.5'}, +\ {'word': 'docstrip', 'menu': '1.2'}, +\ {'word': 'docstrip::util', 'menu': '1.3.1'}, +\ {'word': 'doctools', 'menu': '1.4.19'}, +\ {'word': 'doctools::changelog', 'menu': '1.1'}, +\ {'word': 'doctools::config', 'menu': '0.1'}, +\ {'word': 'doctools::cvs', 'menu': '1'}, +\ {'word': 'doctools::html', 'menu': '0.1'}, +\ {'word': 'doctools::html::cssdefaults', 'menu': '0.1'}, +\ {'word': 'doctools::idx', 'menu': '1.0.5'}, +\ {'word': 'doctools::idx::export', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::docidx', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::html', 'menu': '0.2'}, +\ {'word': 'doctools::idx::export::json', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::nroff', 'menu': '0.3'}, +\ {'word': 'doctools::idx::export::text', 'menu': '0.2'}, +\ {'word': 'doctools::idx::export::wiki', 'menu': '0.2'}, +\ {'word': 'doctools::idx::import', 'menu': '0.1'}, +\ {'word': 'doctools::idx::import::docidx', 'menu': '0.1'}, +\ {'word': 'doctools::idx::import::json', 'menu': '0.1'}, +\ {'word': 'doctools::idx::parse', 'menu': '0.1'}, +\ {'word': 'doctools::idx::structure', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::c', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::de', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::en', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::fr', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::c', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::de', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::en', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::fr', 'menu': '0.1'}, +\ {'word': 'doctools::nroff::man_macros', 'menu': '0.1'}, +\ {'word': 'doctools::paths', 'menu': '0.1'}, +\ {'word': 'doctools::tcl::parse', 'menu': '0.1'}, +\ {'word': 'doctools::text', 'menu': '0.1'}, +\ {'word': 'doctools::toc', 'menu': '1.1.4'}, +\ {'word': 'doctools::toc::export', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::doctoc', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::html', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::json', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::nroff', 'menu': '0.2'}, +\ {'word': 'doctools::toc::export::text', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::wiki', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import::doctoc', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import::json', 'menu': '0.1'}, +\ {'word': 'doctools::toc::parse', 'menu': '0.1'}, +\ {'word': 'doctools::toc::structure', 'menu': '0.1'}, +\ {'word': 'dom', 'menu': '3.2'}, +\ {'word': 'dom::c', 'menu': '2.6'}, +\ {'word': 'dom::generic', 'menu': '2.6'}, +\ {'word': 'dom::libxml2', 'menu': '3.2'}, +\ {'word': 'dom::tcl', 'menu': '2.6'}, +\ {'word': 'dom::tclgeneric', 'menu': '2.6'}, +\ {'word': 'dommap', 'menu': '1.0'}, +\ {'word': 'domtext', 'menu': '2.5'}, +\ {'word': 'domtree', 'menu': '2.5'}, +\ {'word': 'dtplite', 'menu': '1.3'}, +\ {'word': 'expat', 'menu': '2.6'}, +\ {'word': 'fileutil', 'menu': '1.15'}, +\ {'word': 'fileutil::decode', 'menu': '0.2'}, +\ {'word': 'fileutil::globfind', 'menu': '1.5'}, +\ {'word': 'fileutil::magic::cfront', 'menu': '1.0'}, +\ {'word': 'fileutil::magic::cgen', 'menu': '1.0'}, +\ {'word': 'fileutil::magic::filetype', 'menu': '1.0.2'}, +\ {'word': 'fileutil::magic::mimetype', 'menu': '1.0.2'}, +\ {'word': 'fileutil::magic::rt', 'menu': '1.0'}, +\ {'word': 'fileutil::multi', 'menu': '0.1'}, +\ {'word': 'fileutil::multi::op', 'menu': '0.5.3'}, +\ {'word': 'fileutil::traverse', 'menu': '0.6'}, +\ {'word': 'ftp', 'menu': '2.4.13'}, +\ {'word': 'ftp::geturl', 'menu': '0.2.2'}, +\ {'word': 'ftpd', 'menu': '1.3'}, +\ {'word': 'generator', 'menu': '0.1'}, +\ {'word': 'getstring', 'menu': '0.1'}, +\ {'word': 'gpx', 'menu': '1'}, +\ {'word': 'grammar::aycock', 'menu': '1.0'}, +\ {'word': 'grammar::aycock::debug', 'menu': '1.0'}, +\ {'word': 'grammar::aycock::runtime', 'menu': '1.0'}, +\ {'word': 'grammar::fa', 'menu': '0.5'}, +\ {'word': 'grammar::fa::dacceptor', 'menu': '0.1.1'}, +\ {'word': 'grammar::fa::dexec', 'menu': '0.2'}, +\ {'word': 'grammar::fa::op', 'menu': '0.4.1'}, +\ {'word': 'grammar::me::cpu', 'menu': '0.2'}, +\ {'word': 'grammar::me::cpu::core', 'menu': '0.2'}, +\ {'word': 'grammar::me::cpu::gasm', 'menu': '0.1'}, +\ {'word': 'grammar::me::tcl', 'menu': '0.1'}, +\ {'word': 'grammar::me::util', 'menu': '0.1'}, +\ {'word': 'grammar::peg', 'menu': '0.2'}, +\ {'word': 'grammar::peg::interp', 'menu': '0.1.1'}, +\ {'word': 'history', 'menu': '0.1'}, +\ {'word': 'hook', 'menu': '0.1'}, +\ {'word': 'html', 'menu': '1.4.4'}, +\ {'word': 'htmlparse', 'menu': '1.2.2'}, +\ {'word': 'http', 'menu': '1.0'}, +\ {'word': 'http::wget', 'menu': '0.1'}, +\ {'word': 'httpd', 'menu': '4.0'}, +\ {'word': 'httpd::content', 'menu': '4.0'}, +\ {'word': 'httpd::dispatch', 'menu': '4.0'}, +\ {'word': 'huddle', 'menu': '0.2'}, +\ {'word': 'huddle::json', 'menu': '0.1'}, +\ {'word': 'ico', 'menu': '1.1'}, +\ {'word': 'ident', 'menu': '0.42'}, +\ {'word': 'imap4', 'menu': '0.5.3'}, +\ {'word': 'img::base', 'menu': '1.4.6'}, +\ {'word': 'img::bmp', 'menu': '1.4.6'}, +\ {'word': 'img::dted', 'menu': '1.4.6'}, +\ {'word': 'img::gif', 'menu': '1.4.6'}, +\ {'word': 'img::ico', 'menu': '1.4.6'}, +\ {'word': 'img::jpeg', 'menu': '1.4.6'}, +\ {'word': 'img::pcx', 'menu': '1.4.6'}, +\ {'word': 'img::pixmap', 'menu': '1.4.6'}, +\ {'word': 'img::png', 'menu': '1.4.6'}, +\ {'word': 'img::ppm', 'menu': '1.4.6'}, +\ {'word': 'img::ps', 'menu': '1.4.6'}, +\ {'word': 'img::raw', 'menu': '1.4.6'}, +\ {'word': 'img::sgi', 'menu': '1.4.6'}, +\ {'word': 'img::sun', 'menu': '1.4.6'}, +\ {'word': 'img::tga', 'menu': '1.4.6'}, +\ {'word': 'img::tiff', 'menu': '1.4.6'}, +\ {'word': 'img::window', 'menu': '1.4.6'}, +\ {'word': 'img::xbm', 'menu': '1.4.6'}, +\ {'word': 'img::xpm', 'menu': '1.4.6'}, +\ {'word': 'inifile', 'menu': '0.3'}, +\ {'word': 'interp', 'menu': '0.1.2'}, +\ {'word': 'interp::delegate::method', 'menu': '0.2'}, +\ {'word': 'interp::delegate::proc', 'menu': '0.2'}, +\ {'word': 'ip', 'menu': '1.3'}, +\ {'word': 'ipentry', 'menu': '0.3'}, +\ {'word': 'irc', 'menu': '0.6.1'}, +\ {'word': 'itcl', 'menu': '4.1.2'}, +\ {'word': 'itk', 'menu': '4.1.0'}, +\ {'word': 'javascript', 'menu': '1.0.2'}, +\ {'word': 'jpeg', 'menu': '0.5'}, +\ {'word': 'jpegtcl', 'menu': '9.2'}, +\ {'word': 'json', 'menu': '1.3.3'}, +\ {'word': 'json::write', 'menu': '1.0.3'}, +\ {'word': 'khim', 'menu': '1.0.1'}, +\ {'word': 'lambda', 'menu': '1'}, +\ {'word': 'lassign84', 'menu': '1.0.1'}, +\ {'word': 'ldap', 'menu': '1.8'}, +\ {'word': 'ldapx', 'menu': '1.0'}, +\ {'word': 'led', 'menu': '1.0'}, +\ {'word': 'lmap84', 'menu': '1'}, +\ {'word': 'log', 'menu': '1.3'}, +\ {'word': 'logger', 'menu': '0.9.4'}, +\ {'word': 'logger::appender', 'menu': '1.3'}, +\ {'word': 'logger::utils', 'menu': '1.3'}, +\ {'word': 'map::geocode::nominatim', 'menu': '0.1'}, +\ {'word': 'map::slippy', 'menu': '0.5'}, +\ {'word': 'map::slippy::cache', 'menu': '0.2'}, +\ {'word': 'map::slippy::fetcher', 'menu': '0.4'}, +\ {'word': 'mapproj', 'menu': '1.0'}, +\ {'word': 'math', 'menu': '1.2.5'}, +\ {'word': 'math::bigfloat', 'menu': '2.0.2'}, +\ {'word': 'math::bignum', 'menu': '3.1.1'}, +\ {'word': 'math::calculus', 'menu': '0.8.1'}, +\ {'word': 'math::calculus::symdiff', 'menu': '1.0.1'}, +\ {'word': 'math::complexnumbers', 'menu': '1.0.2'}, +\ {'word': 'math::constants', 'menu': '1.0.2'}, +\ {'word': 'math::decimal', 'menu': '1.0.3'}, +\ {'word': 'math::exact', 'menu': '1.0'}, +\ {'word': 'math::fourier', 'menu': '1.0.2'}, +\ {'word': 'math::fuzzy', 'menu': '0.2.1'}, +\ {'word': 'math::geometry', 'menu': '1.1.3'}, +\ {'word': 'math::interpolate', 'menu': '1.1'}, +\ {'word': 'math::linearalgebra', 'menu': '1.1.5'}, +\ {'word': 'math::machineparameters', 'menu': '0.1'}, +\ {'word': 'math::numtheory', 'menu': '1.0'}, +\ {'word': 'math::optimize', 'menu': '1.0.1'}, +\ {'word': 'math::polynomials', 'menu': '1.0.1'}, +\ {'word': 'math::rationalfunctions', 'menu': '1.0.1'}, +\ {'word': 'math::roman', 'menu': '1.0'}, +\ {'word': 'math::special', 'menu': '0.3.0'}, +\ {'word': 'math::statistics', 'menu': '1.0'}, +\ {'word': 'md4', 'menu': '1.0.6'}, +\ {'word': 'md5', 'menu': '1.4.4'}, +\ {'word': 'md5crypt', 'menu': '1.1.0'}, +\ {'word': 'mentry', 'menu': '3.7'}, +\ {'word': 'mentry::common', 'menu': '3.7'}, +\ {'word': 'mentry_tile', 'menu': '3.7'}, +\ {'word': 'menubar', 'menu': '0.5'}, +\ {'word': 'menubar::debug', 'menu': '0.5'}, +\ {'word': 'menubar::node', 'menu': '0.5'}, +\ {'word': 'menubar::tree', 'menu': '0.5'}, +\ {'word': 'meter', 'menu': '1.0'}, +\ {'word': 'mime', 'menu': '1.6'}, +\ {'word': 'msgcat', 'menu': '1.6.1'}, +\ {'word': 'multiplexer', 'menu': '0.2'}, +\ {'word': 'nameserv', 'menu': '0.4.2'}, +\ {'word': 'nameserv::auto', 'menu': '0.3'}, +\ {'word': 'nameserv::cluster', 'menu': '0.2.3'}, +\ {'word': 'nameserv::common', 'menu': '0.1'}, +\ {'word': 'nameserv::server', 'menu': '0.3.2'}, +\ {'word': 'namespacex', 'menu': '0.1'}, +\ {'word': 'ncgi', 'menu': '1.4.3'}, +\ {'word': 'nettool', 'menu': '0.5.1'}, +\ {'word': 'nmea', 'menu': '1.0.0'}, +\ {'word': 'nntp', 'menu': '0.2.1'}, +\ {'word': 'nsf', 'menu': '2.2.0'}, +\ {'word': 'ntext', 'menu': '0.81'}, +\ {'word': 'nx', 'menu': '2.2.0'}, +\ {'word': 'nx::class-method', 'menu': '1.0'}, +\ {'word': 'nx::help', 'menu': '1.0'}, +\ {'word': 'nx::plain-object-method', 'menu': '1.0'}, +\ {'word': 'nx::pp', 'menu': '1.0'}, +\ {'word': 'nx::serializer', 'menu': '2.2'}, +\ {'word': 'nx::shell', 'menu': '1.1'}, +\ {'word': 'nx::test', 'menu': '1.0'}, +\ {'word': 'nx::trait', 'menu': '0.4'}, +\ {'word': 'nx::trait::callback', 'menu': '1.0'}, +\ {'word': 'nx::volatile', 'menu': '1.0'}, +\ {'word': 'nx::zip', 'menu': '1.1'}, +\ {'word': 'oauth', 'menu': '1'}, +\ {'word': 'odie::processman', 'menu': '0.3'}, +\ {'word': 'oo::dialect', 'menu': '0.3'}, +\ {'word': 'oo::meta', 'menu': '0.4.1'}, +\ {'word': 'oo::option', 'menu': '0.3'}, +\ {'word': 'oo::util', 'menu': '1.2.2'}, +\ {'word': 'opt', 'menu': '0.4.6'}, +\ {'word': 'otp', 'menu': '1.0.0'}, +\ {'word': 'page::analysis::peg::emodes', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::minimize', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::reachable', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::realizable', 'menu': '0.1'}, +\ {'word': 'page::compiler::peg::mecpu', 'menu': '0.1.1'}, +\ {'word': 'page::config::peg', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::canon', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::cpkg', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::hb', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::me', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::mecpu', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::ser', 'menu': '0.1'}, +\ {'word': 'page::gen::tree::text', 'menu': '0.1'}, +\ {'word': 'page::parse::lemon', 'menu': '0.1'}, +\ {'word': 'page::parse::peg', 'menu': '0.1'}, +\ {'word': 'page::parse::peghb', 'menu': '0.1'}, +\ {'word': 'page::parse::pegser', 'menu': '0.1'}, +\ {'word': 'page::pluginmgr', 'menu': '0.2'}, +\ {'word': 'page::reader::hb', 'menu': '0.1'}, +\ {'word': 'page::reader::lemon', 'menu': '0.1'}, +\ {'word': 'page::reader::peg', 'menu': '0.1'}, +\ {'word': 'page::reader::ser', 'menu': '0.1'}, +\ {'word': 'page::reader::treeser', 'menu': '0.1'}, +\ {'word': 'page::transform::mecpu', 'menu': '0.1'}, +\ {'word': 'page::transform::reachable', 'menu': '0.1'}, +\ {'word': 'page::transform::realizable', 'menu': '0.1'}, +\ {'word': 'page::util::flow', 'menu': '0.1'}, +\ {'word': 'page::util::norm::lemon', 'menu': '0.1'}, +\ {'word': 'page::util::norm::peg', 'menu': '0.1'}, +\ {'word': 'page::util::peg', 'menu': '0.1'}, +\ {'word': 'page::util::quote', 'menu': '0.1'}, +\ {'word': 'page::writer::hb', 'menu': '0.1'}, +\ {'word': 'page::writer::identity', 'menu': '0.1'}, +\ {'word': 'page::writer::me', 'menu': '0.1'}, +\ {'word': 'page::writer::mecpu', 'menu': '0.1.1'}, +\ {'word': 'page::writer::null', 'menu': '0.1'}, +\ {'word': 'page::writer::peg', 'menu': '0.1'}, +\ {'word': 'page::writer::ser', 'menu': '0.1'}, +\ {'word': 'page::writer::tpc', 'menu': '0.1'}, +\ {'word': 'page::writer::tree', 'menu': '0.1'}, +\ {'word': 'paths', 'menu': '1'}, +\ {'word': 'picoirc', 'menu': '0.5.2'}, +\ {'word': 'pki', 'menu': '0.6'}, +\ {'word': 'platform', 'menu': '1.0.14'}, +\ {'word': 'plotanim', 'menu': '0.2'}, +\ {'word': 'pluginmgr', 'menu': '0.3'}, +\ {'word': 'png', 'menu': '0.2'}, +\ {'word': 'pngtcl', 'menu': '1.6.21'}, +\ {'word': 'pop3', 'menu': '1.9'}, +\ {'word': 'pop3d', 'menu': '1.1.0'}, +\ {'word': 'pop3d::dbox', 'menu': '1.0.2'}, +\ {'word': 'pop3d::udb', 'menu': '1.1'}, +\ {'word': 'processman', 'menu': '0.3'}, +\ {'word': 'profiler', 'menu': '0.3'}, +\ {'word': 'pt::ast', 'menu': '1.1'}, +\ {'word': 'pt::cparam::configuration::critcl', 'menu': '1.0.2'}, +\ {'word': 'pt::cparam::configuration::tea', 'menu': '0.1'}, +\ {'word': 'pt::parse::peg', 'menu': '1.0.1'}, +\ {'word': 'pt::pe', 'menu': '1.0.2'}, +\ {'word': 'pt::pe::op', 'menu': '1.0.1'}, +\ {'word': 'pt::peg', 'menu': '1'}, +\ {'word': 'pt::peg::container', 'menu': '1'}, +\ {'word': 'pt::peg::container::peg', 'menu': '1'}, +\ {'word': 'pt::peg::export', 'menu': '1'}, +\ {'word': 'pt::peg::export::container', 'menu': '1'}, +\ {'word': 'pt::peg::export::json', 'menu': '1'}, +\ {'word': 'pt::peg::export::peg', 'menu': '1'}, +\ {'word': 'pt::peg::from::json', 'menu': '1'}, +\ {'word': 'pt::peg::from::peg', 'menu': '1.0.3'}, +\ {'word': 'pt::peg::import', 'menu': '1'}, +\ {'word': 'pt::peg::import::json', 'menu': '1'}, +\ {'word': 'pt::peg::import::peg', 'menu': '1'}, +\ {'word': 'pt::peg::interp', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::op', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::to::container', 'menu': '1'}, +\ {'word': 'pt::peg::to::cparam', 'menu': '1.1.3'}, +\ {'word': 'pt::peg::to::json', 'menu': '1'}, +\ {'word': 'pt::peg::to::param', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::to::peg', 'menu': '1.0.2'}, +\ {'word': 'pt::peg::to::tclparam', 'menu': '1.0.3'}, +\ {'word': 'pt::pgen', 'menu': '1.0.3'}, +\ {'word': 'pt::rde', 'menu': '1.1'}, +\ {'word': 'pt::rde::oo', 'menu': '1.1'}, +\ {'word': 'pt::tclparam::configuration::snit', 'menu': '1.0.2'}, +\ {'word': 'pt::tclparam::configuration::tcloo', 'menu': '1.0.4'}, +\ {'word': 'pt::util', 'menu': '1.1'}, +\ {'word': 'puretclparser', 'menu': '3.2'}, +\ {'word': 'radioMatrix', 'menu': '1.0'}, +\ {'word': 'rc4', 'menu': '1.1.0'}, +\ {'word': 'rcs', 'menu': '0.1'}, +\ {'word': 'rdial', 'menu': '0.3'}, +\ {'word': 'report', 'menu': '0.3.2'}, +\ {'word': 'resolv', 'menu': '1.0.3'}, +\ {'word': 'rest', 'menu': '1.0.2'}, +\ {'word': 'ripemd128', 'menu': '1.0.5'}, +\ {'word': 'ripemd160', 'menu': '1.0.5'}, +\ {'word': 'rpcvar', 'menu': '1.2'}, +\ {'word': 'scgi::app', 'menu': '0.1'}, +\ {'word': 'scgi::server', 'menu': '0.1'}, +\ {'word': 'sgml', 'menu': '1.9'}, +\ {'word': 'sgmlparser', 'menu': '1.1'}, +\ {'word': 'sha1', 'menu': '1.1.1'}, +\ {'word': 'sha256', 'menu': '1.0.3'}, +\ {'word': 'simulation::annealing', 'menu': '0.2'}, +\ {'word': 'simulation::montecarlo', 'menu': '0.1'}, +\ {'word': 'simulation::random', 'menu': '0.3.1'}, +\ {'word': 'smtp', 'menu': '1.4.5'}, +\ {'word': 'smtpd', 'menu': '1.5'}, +\ {'word': 'snit', 'menu': '1.4.2'}, +\ {'word': 'soapinterop::B', 'menu': '1.0'}, +\ {'word': 'soapinterop::C', 'menu': '1.0'}, +\ {'word': 'soapinterop::base', 'menu': '1.0'}, +\ {'word': 'soundex', 'menu': '1.0'}, +\ {'word': 'spf', 'menu': '1.1.1'}, +\ {'word': 'sqlite3', 'menu': '3.20.1'}, +\ {'word': 'starkit', 'menu': '1.3.3'}, +\ {'word': 'stooop', 'menu': '4.4.1'}, +\ {'word': 'string::token', 'menu': '1'}, +\ {'word': 'string::token::shell', 'menu': '1.2'}, +\ {'word': 'stringprep', 'menu': '1.0.1'}, +\ {'word': 'stringprep::data', 'menu': '1.0.1'}, +\ {'word': 'struct', 'menu': '1.4'}, +\ {'word': 'struct::disjointset', 'menu': '1.0'}, +\ {'word': 'struct::graph', 'menu': '2.4'}, +\ {'word': 'struct::graph::op', 'menu': '0.11.3'}, +\ {'word': 'struct::list', 'menu': '1.8.3'}, +\ {'word': 'struct::matrix', 'menu': '2.0.3'}, +\ {'word': 'struct::pool', 'menu': '1.2.3'}, +\ {'word': 'struct::prioqueue', 'menu': '1.4'}, +\ {'word': 'struct::queue', 'menu': '1.4.5'}, +\ {'word': 'struct::record', 'menu': '1.2.1'}, +\ {'word': 'struct::set', 'menu': '2.2.3'}, +\ {'word': 'struct::skiplist', 'menu': '1.3'}, +\ {'word': 'struct::stack', 'menu': '1.5.3'}, +\ {'word': 'struct::tree', 'menu': '1.2.2'}, +\ {'word': 'stubs::container', 'menu': '1'}, +\ {'word': 'stubs::gen', 'menu': '1'}, +\ {'word': 'stubs::gen::decl', 'menu': '1'}, +\ {'word': 'stubs::gen::header', 'menu': '1'}, +\ {'word': 'stubs::gen::init', 'menu': '1'}, +\ {'word': 'stubs::gen::lib', 'menu': '1'}, +\ {'word': 'stubs::gen::macro', 'menu': '1'}, +\ {'word': 'stubs::gen::slot', 'menu': '1'}, +\ {'word': 'stubs::reader', 'menu': '1'}, +\ {'word': 'stubs::writer', 'menu': '1'}, +\ {'word': 'style', 'menu': '0.3'}, +\ {'word': 'style::as', 'menu': '1.4.1'}, +\ {'word': 'style::lobster', 'menu': '0.2'}, +\ {'word': 'sum', 'menu': '1.1.2'}, +\ {'word': 'swaplist', 'menu': '0.2'}, +\ {'word': 'switched', 'menu': '2.2.1'}, +\ {'word': 'tablelist', 'menu': '5.13'}, +\ {'word': 'tablelist::common', 'menu': '5.13'}, +\ {'word': 'tablelist_tile', 'menu': '5.13'}, +\ {'word': 'tachometer', 'menu': '0.1'}, +\ {'word': 'tar', 'menu': '0.10'}, +\ {'word': 'tbcload', 'menu': '1.7'}, +\ {'word': 'tcl::chan::cat', 'menu': '1.0.2'}, +\ {'word': 'tcl::chan::core', 'menu': '1'}, +\ {'word': 'tcl::chan::events', 'menu': '1'}, +\ {'word': 'tcl::chan::facade', 'menu': '1.0.1'}, +\ {'word': 'tcl::chan::fifo', 'menu': '1'}, +\ {'word': 'tcl::chan::fifo2', 'menu': '1'}, +\ {'word': 'tcl::chan::halfpipe', 'menu': '1'}, +\ {'word': 'tcl::chan::memchan', 'menu': '1.0.3'}, +\ {'word': 'tcl::chan::null', 'menu': '1'}, +\ {'word': 'tcl::chan::nullzero', 'menu': '1'}, +\ {'word': 'tcl::chan::random', 'menu': '1'}, +\ {'word': 'tcl::chan::std', 'menu': '1.0.1'}, +\ {'word': 'tcl::chan::string', 'menu': '1.0.2'}, +\ {'word': 'tcl::chan::textwindow', 'menu': '1'}, +\ {'word': 'tcl::chan::variable', 'menu': '1.0.3'}, +\ {'word': 'tcl::chan::zero', 'menu': '1'}, +\ {'word': 'tcl::randomseed', 'menu': '1'}, +\ {'word': 'tcl::transform::adler32', 'menu': '1'}, +\ {'word': 'tcl::transform::base64', 'menu': '1'}, +\ {'word': 'tcl::transform::core', 'menu': '1'}, +\ {'word': 'tcl::transform::counter', 'menu': '1'}, +\ {'word': 'tcl::transform::crc32', 'menu': '1'}, +\ {'word': 'tcl::transform::hex', 'menu': '1'}, +\ {'word': 'tcl::transform::identity', 'menu': '1'}, +\ {'word': 'tcl::transform::limitsize', 'menu': '1'}, +\ {'word': 'tcl::transform::observe', 'menu': '1'}, +\ {'word': 'tcl::transform::otp', 'menu': '1'}, +\ {'word': 'tcl::transform::rot', 'menu': '1'}, +\ {'word': 'tcl::transform::spacer', 'menu': '1'}, +\ {'word': 'tcl::transform::zlib', 'menu': '1.0.1'}, +\ {'word': 'tclAE', 'menu': '2.0.5'}, +\ {'word': 'tclDES', 'menu': '1.0.0'}, +\ {'word': 'tclDESjr', 'menu': '1.0.0'}, +\ {'word': 'tcllibc', 'menu': '0.3.15'}, +\ {'word': 'tclparser', 'menu': '3.2'}, +\ {'word': 'tcltest', 'menu': '2.5.0'}, +\ {'word': 'tdbc', 'menu': '1.1.0'}, +\ {'word': 'tdbc::mysql', 'menu': '1.1.0'}, +\ {'word': 'tdbc::odbc', 'menu': '1.1.0'}, +\ {'word': 'tdbc::postgres', 'menu': '1.1.0'}, +\ {'word': 'tdom', 'menu': '0.8.3'}, +\ {'word': 'tepam', 'menu': '0.5'}, +\ {'word': 'tepam::doc_gen', 'menu': '0.1.1'}, +\ {'word': 'term', 'menu': '0.1'}, +\ {'word': 'term::ansi::code', 'menu': '0.2'}, +\ {'word': 'term::ansi::code::attr', 'menu': '0.1'}, +\ {'word': 'term::ansi::code::ctrl', 'menu': '0.2'}, +\ {'word': 'term::ansi::code::macros', 'menu': '0.1'}, +\ {'word': 'term::ansi::ctrl::unix', 'menu': '0.1.1'}, +\ {'word': 'term::ansi::send', 'menu': '0.2'}, +\ {'word': 'term::interact::menu', 'menu': '0.1'}, +\ {'word': 'term::interact::pager', 'menu': '0.1'}, +\ {'word': 'term::receive', 'menu': '0.1'}, +\ {'word': 'term::receive::bind', 'menu': '0.1'}, +\ {'word': 'term::send', 'menu': '0.1'}, +\ {'word': 'text::write', 'menu': '1'}, +\ {'word': 'textutil', 'menu': '0.8'}, +\ {'word': 'textutil::adjust', 'menu': '0.7.3'}, +\ {'word': 'textutil::expander', 'menu': '1.3.1'}, +\ {'word': 'textutil::repeat', 'menu': '0.7'}, +\ {'word': 'textutil::split', 'menu': '0.7'}, +\ {'word': 'textutil::string', 'menu': '0.8'}, +\ {'word': 'textutil::tabify', 'menu': '0.7'}, +\ {'word': 'textutil::trim', 'menu': '0.7'}, +\ {'word': 'throw', 'menu': '1'}, +\ {'word': 'tie', 'menu': '1.1'}, +\ {'word': 'tie::std::array', 'menu': '1.0'}, +\ {'word': 'tie::std::dsource', 'menu': '1.0'}, +\ {'word': 'tie::std::file', 'menu': '1.0.4'}, +\ {'word': 'tie::std::growfile', 'menu': '1.0'}, +\ {'word': 'tie::std::log', 'menu': '1.0'}, +\ {'word': 'tie::std::rarray', 'menu': '1.0.1'}, +\ {'word': 'tiff', 'menu': '0.2.1'}, +\ {'word': 'tifftcl', 'menu': '3.9.7'}, +\ {'word': 'time', 'menu': '1.2.1'}, +\ {'word': 'tipstack', 'menu': '1.0.1'}, +\ {'word': 'tkblt', 'menu': '3.2'}, +\ {'word': 'tkcon', 'menu': '2.7'}, +\ {'word': 'tkpiechart', 'menu': '6.6'}, +\ {'word': 'tls', 'menu': '1.7.16'}, +\ {'word': 'tnc', 'menu': '0.3.0'}, +\ {'word': 'tool', 'menu': '0.5'}, +\ {'word': 'tool::datatype', 'menu': '0.1'}, +\ {'word': 'tooltip', 'menu': '1.4.5'}, +\ {'word': 'transfer::connect', 'menu': '0.2'}, +\ {'word': 'transfer::copy', 'menu': '0.3'}, +\ {'word': 'transfer::copy::queue', 'menu': '0.1'}, +\ {'word': 'transfer::data::destination', 'menu': '0.2'}, +\ {'word': 'transfer::data::source', 'menu': '0.2'}, +\ {'word': 'transfer::receiver', 'menu': '0.2'}, +\ {'word': 'transfer::transmitter', 'menu': '0.2'}, +\ {'word': 'treectrl', 'menu': '2.4.1'}, +\ {'word': 'treeql', 'menu': '1.3.1'}, +\ {'word': 'trsync', 'menu': '1.0'}, +\ {'word': 'try', 'menu': '1'}, +\ {'word': 'uevent', 'menu': '0.3.1'}, +\ {'word': 'uevent::onidle', 'menu': '0.1'}, +\ {'word': 'unicode', 'menu': '1.0.0'}, +\ {'word': 'unicode::data', 'menu': '1.0.0'}, +\ {'word': 'units', 'menu': '2.1.1'}, +\ {'word': 'uri', 'menu': '1.2.6'}, +\ {'word': 'uri::urn', 'menu': '1.0.3'}, +\ {'word': 'uuencode', 'menu': '1.1.5'}, +\ {'word': 'uuid', 'menu': '1.0.5'}, +\ {'word': 'valtype::common', 'menu': '1'}, +\ {'word': 'valtype::creditcard::amex', 'menu': '1'}, +\ {'word': 'valtype::creditcard::discover', 'menu': '1'}, +\ {'word': 'valtype::creditcard::mastercard', 'menu': '1'}, +\ {'word': 'valtype::creditcard::visa', 'menu': '1'}, +\ {'word': 'valtype::gs1::ean13', 'menu': '1'}, +\ {'word': 'valtype::iban', 'menu': '1.5'}, +\ {'word': 'valtype::imei', 'menu': '1'}, +\ {'word': 'valtype::isbn', 'menu': '1'}, +\ {'word': 'valtype::luhn', 'menu': '1'}, +\ {'word': 'valtype::luhn5', 'menu': '1'}, +\ {'word': 'valtype::usnpi', 'menu': '1'}, +\ {'word': 'valtype::verhoeff', 'menu': '1'}, +\ {'word': 'vfs', 'menu': '1.4.2'}, +\ {'word': 'vfs::ftp', 'menu': '1.0'}, +\ {'word': 'vfs::http', 'menu': '0.6'}, +\ {'word': 'vfs::mk4', 'menu': '1.10.1'}, +\ {'word': 'vfs::ns', 'menu': '0.5.1'}, +\ {'word': 'vfs::tar', 'menu': '0.91'}, +\ {'word': 'vfs::template', 'menu': '1.5.5'}, +\ {'word': 'vfs::template::chroot', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::collate', 'menu': '1.5.3'}, +\ {'word': 'vfs::template::fish', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::quota', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::version', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::version::delta', 'menu': '1.5.2'}, +\ {'word': 'vfs::test', 'menu': '1.0'}, +\ {'word': 'vfs::tk', 'menu': '0.5'}, +\ {'word': 'vfs::urltype', 'menu': '1.0'}, +\ {'word': 'vfs::webdav', 'menu': '0.1'}, +\ {'word': 'vfs::zip', 'menu': '1.0.4.1'}, +\ {'word': 'voltmeter', 'menu': '0.1'}, +\ {'word': 'wcb', 'menu': '3.5'}, +\ {'word': 'websocket', 'menu': '1.4'}, +\ {'word': 'widget', 'menu': '3.1'}, +\ {'word': 'widget::all', 'menu': '1.2.4'}, +\ {'word': 'widget::arrowbutton', 'menu': '1.0'}, +\ {'word': 'widget::calendar', 'menu': '1.0.1'}, +\ {'word': 'widget::dateentry', 'menu': '0.96'}, +\ {'word': 'widget::dialog', 'menu': '1.3.1'}, +\ {'word': 'widget::listentry', 'menu': '0.1.1'}, +\ {'word': 'widget::listsimple', 'menu': '0.1.1'}, +\ {'word': 'widget::menuentry', 'menu': '1.0.1'}, +\ {'word': 'widget::panelframe', 'menu': '1.1'}, +\ {'word': 'widget::ruler', 'menu': '1.1'}, +\ {'word': 'widget::screenruler', 'menu': '1.2'}, +\ {'word': 'widget::scrolledtext', 'menu': '1.0'}, +\ {'word': 'widget::scrolledwindow', 'menu': '1.2.1'}, +\ {'word': 'widget::statusbar', 'menu': '1.2.1'}, +\ {'word': 'widget::superframe', 'menu': '1.0.1'}, +\ {'word': 'widget::toolbar', 'menu': '1.2.1'}, +\ {'word': 'widget::validator', 'menu': '0.1'}, +\ {'word': 'wip', 'menu': '2.2'}, +\ {'word': 'xml', 'menu': '3.2'}, +\ {'word': 'xml::c', 'menu': '2.6'}, +\ {'word': 'xml::dep', 'menu': '1.0'}, +\ {'word': 'xml::expat', 'menu': '2.6'}, +\ {'word': 'xml::libxml2', 'menu': '3.2'}, +\ {'word': 'xml::tcl', 'menu': '3.2'}, +\ {'word': 'xml::tclparser', 'menu': '3.2'}, +\ {'word': 'xmldefs', 'menu': '3.2'}, +\ {'word': 'xmldep', 'menu': '1.0'}, +\ {'word': 'xmlswitch', 'menu': '3.2'}, +\ {'word': 'xotcl::comm::connection', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::dav', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::ftp', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::httpAccess', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::httpd', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::imap', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::ldap', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::mime', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::pcache', 'menu': '2.0'}, +\ {'word': 'xotcl::htmllib', 'menu': '2.0'}, +\ {'word': 'xotcl::metadataAnalyzer', 'menu': '2.0'}, +\ {'word': 'xotcl::mixinStrategy', 'menu': '2.0'}, +\ {'word': 'xotcl::package', 'menu': '2.0'}, +\ {'word': 'xotcl::script', 'menu': '2.0'}, +\ {'word': 'xotcl::scriptCreation::recoveryPoint', 'menu': '2.0'}, +\ {'word': 'xotcl::scriptCreation::scriptCreator', 'menu': '2.0'}, +\ {'word': 'xotcl::serializer', 'menu': '2.1'}, +\ {'word': 'xotcl::staticMetadataAnalyzer', 'menu': '2.0'}, +\ {'word': 'xotcl::store', 'menu': '0.84'}, +\ {'word': 'xotcl::store::jufgdbm', 'menu': '0.81'}, +\ {'word': 'xotcl::store::mem', 'menu': '0.84'}, +\ {'word': 'xotcl::store::multi', 'menu': '0.9'}, +\ {'word': 'xotcl::store::persistence', 'menu': '0.8'}, +\ {'word': 'xotcl::store::tclgdbm', 'menu': '0.84'}, +\ {'word': 'xotcl::store::textfile', 'menu': '0.84'}, +\ {'word': 'xotcl::test', 'menu': '1.38'}, +\ {'word': 'xotcl::trace', 'menu': '2.0'}, +\ {'word': 'xotcl::upvar-compat', 'menu': '2.0'}, +\ {'word': 'xotcl::wafecompat', 'menu': '2.0'}, +\ {'word': 'xotcl::xodoc', 'menu': '2.0'}, +\ {'word': 'xpath', 'menu': '1.0'}, +\ {'word': 'xslt', 'menu': '3.2'}, +\ {'word': 'xslt::cache', 'menu': '3.2'}, +\ {'word': 'xslt::libxslt', 'menu': '3.2'}, +\ {'word': 'xslt::process', 'menu': '1.1'}, +\ {'word': 'xslt::resources', 'menu': '1.3'}, +\ {'word': 'xslt::utilities', 'menu': '3.2'}, +\ {'word': 'xsxp', 'menu': '1.0'}, +\ {'word': 'xyplot', 'menu': '1.0.1'}, +\ {'word': 'yaml', 'menu': '0.3.9'}, +\ {'word': 'yencode', 'menu': '1.1.3'}, +\ {'word': 'zipfile::decode', 'menu': '0.7'}, +\ {'word': 'zipfile::encode', 'menu': '0.4'}, +\ {'word': 'zipfile::mkzip', 'menu': '1.2'}, +\ {'word': 'zlibtcl', 'menu': '1.2.8.1'}, +\ ] + +let b:package_sp_ifneeded = [ +\ {'word': 'BWidget', 'menu': '1.9.11'}, +\ {'word': 'Expect', 'menu': '5.45.3'}, +\ {'word': 'Ffidl', 'menu': '0.6.1'}, +\ {'word': 'Ffidlrt', 'menu': '0.1'}, +\ {'word': 'HTTP', 'menu': '2.0'}, +\ {'word': 'Img', 'menu': '1.4.6'}, +\ {'word': 'Itcl', 'menu': '4.1.2'}, +\ {'word': 'Itk', 'menu': '4.1.0'}, +\ {'word': 'Iwidgets', 'menu': '4.1.1'}, +\ {'word': 'JSONRPC', 'menu': '0.1'}, +\ {'word': 'Markdown', 'menu': '1.0'}, +\ {'word': 'Memchan', 'menu': '2.2.1'}, +\ {'word': 'Mentry', 'menu': '3.7'}, +\ {'word': 'Mentry_tile', 'menu': '3.7'}, +\ {'word': 'Mk4tcl', 'menu': '2.4.9.7.1'}, +\ {'word': 'Plotchart', 'menu': '2.3.4'}, +\ {'word': 'S3', 'menu': '1.0.3'}, +\ {'word': 'SASL', 'menu': '1.3.3'}, +\ {'word': 'SASL::NTLM', 'menu': '1.1.2'}, +\ {'word': 'SASL::SCRAM', 'menu': '0.1'}, +\ {'word': 'SASL::XGoogleToken', 'menu': '1.0.1'}, +\ {'word': 'SOAP', 'menu': '1.6.8.1'}, +\ {'word': 'SOAP::CGI', 'menu': '1.0.1'}, +\ {'word': 'SOAP::Domain', 'menu': '1.4.1'}, +\ {'word': 'SOAP::Service', 'menu': '0.5'}, +\ {'word': 'SOAP::Utils', 'menu': '1.1'}, +\ {'word': 'SOAP::ftp', 'menu': '1.0'}, +\ {'word': 'SOAP::http', 'menu': '1.0'}, +\ {'word': 'SOAP::https', 'menu': '1.0'}, +\ {'word': 'SOAP::smtp', 'menu': '1.0'}, +\ {'word': 'SOAP::xpath', 'menu': '0.2'}, +\ {'word': 'Site', 'menu': '1.0'}, +\ {'word': 'Tablelist', 'menu': '5.13'}, +\ {'word': 'Tablelist_tile', 'menu': '5.13'}, +\ {'word': 'TclOO', 'menu': '1.1.0'}, +\ {'word': 'Tclx', 'menu': '8.4'}, +\ {'word': 'Thread', 'menu': '2.8.4'}, +\ {'word': 'Tk', 'menu': '8.6.9'}, +\ {'word': 'Tktable', 'menu': '2.11'}, +\ {'word': 'Trf', 'menu': '2.1.4'}, +\ {'word': 'Ttrace', 'menu': '2.8.4'}, +\ {'word': 'Wcb', 'menu': '3.5'}, +\ {'word': 'Wub', 'menu': '5.0'}, +\ {'word': 'XMLRPC', 'menu': '1.0.1'}, +\ {'word': 'XOTcl', 'menu': '2.2.0'}, +\ {'word': 'aes', 'menu': '1.2.1'}, +\ {'word': 'ascii85', 'menu': '1.0'}, +\ {'word': 'asn', 'menu': '0.8.4'}, +\ {'word': 'autoproxy', 'menu': '1.5.3'}, +\ {'word': 'autoscroll', 'menu': '1.1'}, +\ {'word': 'base32', 'menu': '0.1'}, +\ {'word': 'base32::core', 'menu': '0.1'}, +\ {'word': 'base32::hex', 'menu': '0.1'}, +\ {'word': 'base64', 'menu': '2.4.2'}, +\ {'word': 'bee', 'menu': '0.1'}, +\ {'word': 'bench', 'menu': '0.4'}, +\ {'word': 'bench::in', 'menu': '0.1'}, +\ {'word': 'bench::out::csv', 'menu': '0.1.2'}, +\ {'word': 'bench::out::text', 'menu': '0.1.2'}, +\ {'word': 'bibtex', 'menu': '0.6'}, +\ {'word': 'bindDown', 'menu': '1.0'}, +\ {'word': 'blowfish', 'menu': '1.0.4'}, +\ {'word': 'cache::async', 'menu': '0.3'}, +\ {'word': 'canvas::drag', 'menu': '0.1'}, +\ {'word': 'canvas::edit::points', 'menu': '0.1'}, +\ {'word': 'canvas::edit::polyline', 'menu': '0.1'}, +\ {'word': 'canvas::edit::quadrilateral', 'menu': '0.1'}, +\ {'word': 'canvas::gradient', 'menu': '0.2'}, +\ {'word': 'canvas::highlight', 'menu': '0.1'}, +\ {'word': 'canvas::mvg', 'menu': '1'}, +\ {'word': 'canvas::snap', 'menu': '1.0.1'}, +\ {'word': 'canvas::sqmap', 'menu': '0.3.1'}, +\ {'word': 'canvas::tag', 'menu': '0.1'}, +\ {'word': 'canvas::track::lines', 'menu': '0.1'}, +\ {'word': 'canvas::zoom', 'menu': '0.2.1'}, +\ {'word': 'cgi2dom', 'menu': '1.1'}, +\ {'word': 'char', 'menu': '1.0.1'}, +\ {'word': 'chatwidget', 'menu': '1.1.0'}, +\ {'word': 'cksum', 'menu': '1.1.4'}, +\ {'word': 'clock::iso8601', 'menu': '0.1'}, +\ {'word': 'clock::rfc2822', 'menu': '0.1'}, +\ {'word': 'cmdline', 'menu': '1.5'}, +\ {'word': 'comm', 'menu': '4.6.3.1'}, +\ {'word': 'configuration', 'menu': '1'}, +\ {'word': 'control', 'menu': '0.1.3'}, +\ {'word': 'controlwidget', 'menu': '0.1'}, +\ {'word': 'coroutine', 'menu': '1.1.3'}, +\ {'word': 'coroutine::auto', 'menu': '1.1.3'}, +\ {'word': 'counter', 'menu': '2.0.4'}, +\ {'word': 'crc16', 'menu': '1.1.2'}, +\ {'word': 'crc32', 'menu': '1.3.2'}, +\ {'word': 'critcl', 'menu': '3.1.17'}, +\ {'word': 'critcl::app', 'menu': '3.1.17'}, +\ {'word': 'critcl::bitmap', 'menu': '1.0.1'}, +\ {'word': 'critcl::class', 'menu': '1.0.7'}, +\ {'word': 'critcl::cutil', 'menu': '0.1'}, +\ {'word': 'critcl::emap', 'menu': '1.1'}, +\ {'word': 'critcl::enum', 'menu': '1.0.1'}, +\ {'word': 'critcl::iassoc', 'menu': '1.0.2'}, +\ {'word': 'critcl::literals', 'menu': '1.2'}, +\ {'word': 'critcl::platform', 'menu': '1.0.15'}, +\ {'word': 'critcl::util', 'menu': '1.1'}, +\ {'word': 'cron', 'menu': '1.2.1'}, +\ {'word': 'crosshair', 'menu': '1.2'}, +\ {'word': 'csv', 'menu': '0.8.1'}, +\ {'word': 'ctext', 'menu': '3.3'}, +\ {'word': 'cursor', 'menu': '0.3.1'}, +\ {'word': 'datefield', 'menu': '0.2'}, +\ {'word': 'debug', 'menu': '1.0.6'}, +\ {'word': 'debug::caller', 'menu': '1.1'}, +\ {'word': 'debug::heartbeat', 'menu': '1'}, +\ {'word': 'debug::timestamp', 'menu': '1'}, +\ {'word': 'des', 'menu': '1.1.0'}, +\ {'word': 'diagram', 'menu': '1'}, +\ {'word': 'diagram::application', 'menu': '1.2'}, +\ {'word': 'diagram::attribute', 'menu': '1'}, +\ {'word': 'diagram::basic', 'menu': '1.0.1'}, +\ {'word': 'diagram::core', 'menu': '1'}, +\ {'word': 'diagram::direction', 'menu': '1'}, +\ {'word': 'diagram::element', 'menu': '1'}, +\ {'word': 'diagram::navigation', 'menu': '1'}, +\ {'word': 'diagram::point', 'menu': '1'}, +\ {'word': 'dict84', 'menu': '1'}, +\ {'word': 'dicttool', 'menu': '1.0'}, +\ {'word': 'dns', 'menu': '1.3.5'}, +\ {'word': 'docstrip', 'menu': '1.2'}, +\ {'word': 'docstrip::util', 'menu': '1.3.1'}, +\ {'word': 'doctools', 'menu': '1.4.19'}, +\ {'word': 'doctools::changelog', 'menu': '1.1'}, +\ {'word': 'doctools::config', 'menu': '0.1'}, +\ {'word': 'doctools::cvs', 'menu': '1'}, +\ {'word': 'doctools::html', 'menu': '0.1'}, +\ {'word': 'doctools::html::cssdefaults', 'menu': '0.1'}, +\ {'word': 'doctools::idx', 'menu': '1.0.5'}, +\ {'word': 'doctools::idx::export', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::docidx', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::html', 'menu': '0.2'}, +\ {'word': 'doctools::idx::export::json', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::nroff', 'menu': '0.3'}, +\ {'word': 'doctools::idx::export::text', 'menu': '0.2'}, +\ {'word': 'doctools::idx::export::wiki', 'menu': '0.2'}, +\ {'word': 'doctools::idx::import', 'menu': '0.1'}, +\ {'word': 'doctools::idx::import::docidx', 'menu': '0.1'}, +\ {'word': 'doctools::idx::import::json', 'menu': '0.1'}, +\ {'word': 'doctools::idx::parse', 'menu': '0.1'}, +\ {'word': 'doctools::idx::structure', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::c', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::de', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::en', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::fr', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::c', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::de', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::en', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::fr', 'menu': '0.1'}, +\ {'word': 'doctools::nroff::man_macros', 'menu': '0.1'}, +\ {'word': 'doctools::paths', 'menu': '0.1'}, +\ {'word': 'doctools::tcl::parse', 'menu': '0.1'}, +\ {'word': 'doctools::text', 'menu': '0.1'}, +\ {'word': 'doctools::toc', 'menu': '1.1.4'}, +\ {'word': 'doctools::toc::export', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::doctoc', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::html', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::json', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::nroff', 'menu': '0.2'}, +\ {'word': 'doctools::toc::export::text', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::wiki', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import::doctoc', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import::json', 'menu': '0.1'}, +\ {'word': 'doctools::toc::parse', 'menu': '0.1'}, +\ {'word': 'doctools::toc::structure', 'menu': '0.1'}, +\ {'word': 'dom', 'menu': '3.2'}, +\ {'word': 'dom::c', 'menu': '2.6'}, +\ {'word': 'dom::generic', 'menu': '2.6'}, +\ {'word': 'dom::libxml2', 'menu': '3.2'}, +\ {'word': 'dom::tcl', 'menu': '2.6'}, +\ {'word': 'dom::tclgeneric', 'menu': '2.6'}, +\ {'word': 'dommap', 'menu': '1.0'}, +\ {'word': 'domtext', 'menu': '2.5'}, +\ {'word': 'domtree', 'menu': '2.5'}, +\ {'word': 'dtplite', 'menu': '1.3'}, +\ {'word': 'expat', 'menu': '2.6'}, +\ {'word': 'fileutil', 'menu': '1.15'}, +\ {'word': 'fileutil::decode', 'menu': '0.2'}, +\ {'word': 'fileutil::globfind', 'menu': '1.5'}, +\ {'word': 'fileutil::magic::cfront', 'menu': '1.0'}, +\ {'word': 'fileutil::magic::cgen', 'menu': '1.0'}, +\ {'word': 'fileutil::magic::filetype', 'menu': '1.0.2'}, +\ {'word': 'fileutil::magic::mimetype', 'menu': '1.0.2'}, +\ {'word': 'fileutil::magic::rt', 'menu': '1.0'}, +\ {'word': 'fileutil::multi', 'menu': '0.1'}, +\ {'word': 'fileutil::multi::op', 'menu': '0.5.3'}, +\ {'word': 'fileutil::traverse', 'menu': '0.6'}, +\ {'word': 'ftp', 'menu': '2.4.13'}, +\ {'word': 'ftp::geturl', 'menu': '0.2.2'}, +\ {'word': 'ftpd', 'menu': '1.3'}, +\ {'word': 'generator', 'menu': '0.1'}, +\ {'word': 'getstring', 'menu': '0.1'}, +\ {'word': 'gpx', 'menu': '1'}, +\ {'word': 'grammar::aycock', 'menu': '1.0'}, +\ {'word': 'grammar::aycock::debug', 'menu': '1.0'}, +\ {'word': 'grammar::aycock::runtime', 'menu': '1.0'}, +\ {'word': 'grammar::fa', 'menu': '0.5'}, +\ {'word': 'grammar::fa::dacceptor', 'menu': '0.1.1'}, +\ {'word': 'grammar::fa::dexec', 'menu': '0.2'}, +\ {'word': 'grammar::fa::op', 'menu': '0.4.1'}, +\ {'word': 'grammar::me::cpu', 'menu': '0.2'}, +\ {'word': 'grammar::me::cpu::core', 'menu': '0.2'}, +\ {'word': 'grammar::me::cpu::gasm', 'menu': '0.1'}, +\ {'word': 'grammar::me::tcl', 'menu': '0.1'}, +\ {'word': 'grammar::me::util', 'menu': '0.1'}, +\ {'word': 'grammar::peg', 'menu': '0.2'}, +\ {'word': 'grammar::peg::interp', 'menu': '0.1.1'}, +\ {'word': 'history', 'menu': '0.1'}, +\ {'word': 'hook', 'menu': '0.1'}, +\ {'word': 'html', 'menu': '1.4.4'}, +\ {'word': 'htmlparse', 'menu': '1.2.2'}, +\ {'word': 'http', 'menu': '1.0'}, +\ {'word': 'http::wget', 'menu': '0.1'}, +\ {'word': 'httpd', 'menu': '4.0'}, +\ {'word': 'httpd::content', 'menu': '4.0'}, +\ {'word': 'httpd::dispatch', 'menu': '4.0'}, +\ {'word': 'huddle', 'menu': '0.2'}, +\ {'word': 'huddle::json', 'menu': '0.1'}, +\ {'word': 'ico', 'menu': '1.1'}, +\ {'word': 'ident', 'menu': '0.42'}, +\ {'word': 'imap4', 'menu': '0.5.3'}, +\ {'word': 'img::base', 'menu': '1.4.6'}, +\ {'word': 'img::bmp', 'menu': '1.4.6'}, +\ {'word': 'img::dted', 'menu': '1.4.6'}, +\ {'word': 'img::gif', 'menu': '1.4.6'}, +\ {'word': 'img::ico', 'menu': '1.4.6'}, +\ {'word': 'img::jpeg', 'menu': '1.4.6'}, +\ {'word': 'img::pcx', 'menu': '1.4.6'}, +\ {'word': 'img::pixmap', 'menu': '1.4.6'}, +\ {'word': 'img::png', 'menu': '1.4.6'}, +\ {'word': 'img::ppm', 'menu': '1.4.6'}, +\ {'word': 'img::ps', 'menu': '1.4.6'}, +\ {'word': 'img::raw', 'menu': '1.4.6'}, +\ {'word': 'img::sgi', 'menu': '1.4.6'}, +\ {'word': 'img::sun', 'menu': '1.4.6'}, +\ {'word': 'img::tga', 'menu': '1.4.6'}, +\ {'word': 'img::tiff', 'menu': '1.4.6'}, +\ {'word': 'img::window', 'menu': '1.4.6'}, +\ {'word': 'img::xbm', 'menu': '1.4.6'}, +\ {'word': 'img::xpm', 'menu': '1.4.6'}, +\ {'word': 'inifile', 'menu': '0.3'}, +\ {'word': 'interp', 'menu': '0.1.2'}, +\ {'word': 'interp::delegate::method', 'menu': '0.2'}, +\ {'word': 'interp::delegate::proc', 'menu': '0.2'}, +\ {'word': 'ip', 'menu': '1.3'}, +\ {'word': 'ipentry', 'menu': '0.3'}, +\ {'word': 'irc', 'menu': '0.6.1'}, +\ {'word': 'itcl', 'menu': '4.1.2'}, +\ {'word': 'itk', 'menu': '4.1.0'}, +\ {'word': 'javascript', 'menu': '1.0.2'}, +\ {'word': 'jpeg', 'menu': '0.5'}, +\ {'word': 'jpegtcl', 'menu': '9.2'}, +\ {'word': 'json', 'menu': '1.3.3'}, +\ {'word': 'json::write', 'menu': '1.0.3'}, +\ {'word': 'khim', 'menu': '1.0.1'}, +\ {'word': 'lambda', 'menu': '1'}, +\ {'word': 'lassign84', 'menu': '1.0.1'}, +\ {'word': 'ldap', 'menu': '1.8'}, +\ {'word': 'ldapx', 'menu': '1.0'}, +\ {'word': 'led', 'menu': '1.0'}, +\ {'word': 'lmap84', 'menu': '1'}, +\ {'word': 'log', 'menu': '1.3'}, +\ {'word': 'logger', 'menu': '0.9.4'}, +\ {'word': 'logger::appender', 'menu': '1.3'}, +\ {'word': 'logger::utils', 'menu': '1.3'}, +\ {'word': 'map::geocode::nominatim', 'menu': '0.1'}, +\ {'word': 'map::slippy', 'menu': '0.5'}, +\ {'word': 'map::slippy::cache', 'menu': '0.2'}, +\ {'word': 'map::slippy::fetcher', 'menu': '0.4'}, +\ {'word': 'mapproj', 'menu': '1.0'}, +\ {'word': 'math', 'menu': '1.2.5'}, +\ {'word': 'math::bigfloat', 'menu': '2.0.2'}, +\ {'word': 'math::bignum', 'menu': '3.1.1'}, +\ {'word': 'math::calculus', 'menu': '0.8.1'}, +\ {'word': 'math::calculus::symdiff', 'menu': '1.0.1'}, +\ {'word': 'math::complexnumbers', 'menu': '1.0.2'}, +\ {'word': 'math::constants', 'menu': '1.0.2'}, +\ {'word': 'math::decimal', 'menu': '1.0.3'}, +\ {'word': 'math::exact', 'menu': '1.0'}, +\ {'word': 'math::fourier', 'menu': '1.0.2'}, +\ {'word': 'math::fuzzy', 'menu': '0.2.1'}, +\ {'word': 'math::geometry', 'menu': '1.1.3'}, +\ {'word': 'math::interpolate', 'menu': '1.1'}, +\ {'word': 'math::linearalgebra', 'menu': '1.1.5'}, +\ {'word': 'math::machineparameters', 'menu': '0.1'}, +\ {'word': 'math::numtheory', 'menu': '1.0'}, +\ {'word': 'math::optimize', 'menu': '1.0.1'}, +\ {'word': 'math::polynomials', 'menu': '1.0.1'}, +\ {'word': 'math::rationalfunctions', 'menu': '1.0.1'}, +\ {'word': 'math::roman', 'menu': '1.0'}, +\ {'word': 'math::special', 'menu': '0.3.0'}, +\ {'word': 'math::statistics', 'menu': '1.0'}, +\ {'word': 'md4', 'menu': '1.0.6'}, +\ {'word': 'md5', 'menu': '1.4.4'}, +\ {'word': 'md5crypt', 'menu': '1.1.0'}, +\ {'word': 'mentry', 'menu': '3.7'}, +\ {'word': 'mentry::common', 'menu': '3.7'}, +\ {'word': 'mentry_tile', 'menu': '3.7'}, +\ {'word': 'menubar', 'menu': '0.5'}, +\ {'word': 'menubar::debug', 'menu': '0.5'}, +\ {'word': 'menubar::node', 'menu': '0.5'}, +\ {'word': 'menubar::tree', 'menu': '0.5'}, +\ {'word': 'meter', 'menu': '1.0'}, +\ {'word': 'mime', 'menu': '1.6'}, +\ {'word': 'msgcat', 'menu': '1.6.1'}, +\ {'word': 'multiplexer', 'menu': '0.2'}, +\ {'word': 'nameserv', 'menu': '0.4.2'}, +\ {'word': 'nameserv::auto', 'menu': '0.3'}, +\ {'word': 'nameserv::cluster', 'menu': '0.2.3'}, +\ {'word': 'nameserv::common', 'menu': '0.1'}, +\ {'word': 'nameserv::server', 'menu': '0.3.2'}, +\ {'word': 'namespacex', 'menu': '0.1'}, +\ {'word': 'ncgi', 'menu': '1.4.3'}, +\ {'word': 'nettool', 'menu': '0.5.1'}, +\ {'word': 'nmea', 'menu': '1.0.0'}, +\ {'word': 'nntp', 'menu': '0.2.1'}, +\ {'word': 'nsf', 'menu': '2.2.0'}, +\ {'word': 'ntext', 'menu': '0.81'}, +\ {'word': 'nx', 'menu': '2.2.0'}, +\ {'word': 'nx::class-method', 'menu': '1.0'}, +\ {'word': 'nx::help', 'menu': '1.0'}, +\ {'word': 'nx::plain-object-method', 'menu': '1.0'}, +\ {'word': 'nx::pp', 'menu': '1.0'}, +\ {'word': 'nx::serializer', 'menu': '2.2'}, +\ {'word': 'nx::shell', 'menu': '1.1'}, +\ {'word': 'nx::test', 'menu': '1.0'}, +\ {'word': 'nx::trait', 'menu': '0.4'}, +\ {'word': 'nx::trait::callback', 'menu': '1.0'}, +\ {'word': 'nx::volatile', 'menu': '1.0'}, +\ {'word': 'nx::zip', 'menu': '1.1'}, +\ {'word': 'oauth', 'menu': '1'}, +\ {'word': 'odie::processman', 'menu': '0.3'}, +\ {'word': 'oo::dialect', 'menu': '0.3'}, +\ {'word': 'oo::meta', 'menu': '0.4.1'}, +\ {'word': 'oo::option', 'menu': '0.3'}, +\ {'word': 'oo::util', 'menu': '1.2.2'}, +\ {'word': 'opt', 'menu': '0.4.6'}, +\ {'word': 'otp', 'menu': '1.0.0'}, +\ {'word': 'page::analysis::peg::emodes', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::minimize', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::reachable', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::realizable', 'menu': '0.1'}, +\ {'word': 'page::compiler::peg::mecpu', 'menu': '0.1.1'}, +\ {'word': 'page::config::peg', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::canon', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::cpkg', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::hb', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::me', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::mecpu', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::ser', 'menu': '0.1'}, +\ {'word': 'page::gen::tree::text', 'menu': '0.1'}, +\ {'word': 'page::parse::lemon', 'menu': '0.1'}, +\ {'word': 'page::parse::peg', 'menu': '0.1'}, +\ {'word': 'page::parse::peghb', 'menu': '0.1'}, +\ {'word': 'page::parse::pegser', 'menu': '0.1'}, +\ {'word': 'page::pluginmgr', 'menu': '0.2'}, +\ {'word': 'page::reader::hb', 'menu': '0.1'}, +\ {'word': 'page::reader::lemon', 'menu': '0.1'}, +\ {'word': 'page::reader::peg', 'menu': '0.1'}, +\ {'word': 'page::reader::ser', 'menu': '0.1'}, +\ {'word': 'page::reader::treeser', 'menu': '0.1'}, +\ {'word': 'page::transform::mecpu', 'menu': '0.1'}, +\ {'word': 'page::transform::reachable', 'menu': '0.1'}, +\ {'word': 'page::transform::realizable', 'menu': '0.1'}, +\ {'word': 'page::util::flow', 'menu': '0.1'}, +\ {'word': 'page::util::norm::lemon', 'menu': '0.1'}, +\ {'word': 'page::util::norm::peg', 'menu': '0.1'}, +\ {'word': 'page::util::peg', 'menu': '0.1'}, +\ {'word': 'page::util::quote', 'menu': '0.1'}, +\ {'word': 'page::writer::hb', 'menu': '0.1'}, +\ {'word': 'page::writer::identity', 'menu': '0.1'}, +\ {'word': 'page::writer::me', 'menu': '0.1'}, +\ {'word': 'page::writer::mecpu', 'menu': '0.1.1'}, +\ {'word': 'page::writer::null', 'menu': '0.1'}, +\ {'word': 'page::writer::peg', 'menu': '0.1'}, +\ {'word': 'page::writer::ser', 'menu': '0.1'}, +\ {'word': 'page::writer::tpc', 'menu': '0.1'}, +\ {'word': 'page::writer::tree', 'menu': '0.1'}, +\ {'word': 'paths', 'menu': '1'}, +\ {'word': 'picoirc', 'menu': '0.5.2'}, +\ {'word': 'pki', 'menu': '0.6'}, +\ {'word': 'platform', 'menu': '1.0.14'}, +\ {'word': 'plotanim', 'menu': '0.2'}, +\ {'word': 'pluginmgr', 'menu': '0.3'}, +\ {'word': 'png', 'menu': '0.2'}, +\ {'word': 'pngtcl', 'menu': '1.6.21'}, +\ {'word': 'pop3', 'menu': '1.9'}, +\ {'word': 'pop3d', 'menu': '1.1.0'}, +\ {'word': 'pop3d::dbox', 'menu': '1.0.2'}, +\ {'word': 'pop3d::udb', 'menu': '1.1'}, +\ {'word': 'processman', 'menu': '0.3'}, +\ {'word': 'profiler', 'menu': '0.3'}, +\ {'word': 'pt::ast', 'menu': '1.1'}, +\ {'word': 'pt::cparam::configuration::critcl', 'menu': '1.0.2'}, +\ {'word': 'pt::cparam::configuration::tea', 'menu': '0.1'}, +\ {'word': 'pt::parse::peg', 'menu': '1.0.1'}, +\ {'word': 'pt::pe', 'menu': '1.0.2'}, +\ {'word': 'pt::pe::op', 'menu': '1.0.1'}, +\ {'word': 'pt::peg', 'menu': '1'}, +\ {'word': 'pt::peg::container', 'menu': '1'}, +\ {'word': 'pt::peg::container::peg', 'menu': '1'}, +\ {'word': 'pt::peg::export', 'menu': '1'}, +\ {'word': 'pt::peg::export::container', 'menu': '1'}, +\ {'word': 'pt::peg::export::json', 'menu': '1'}, +\ {'word': 'pt::peg::export::peg', 'menu': '1'}, +\ {'word': 'pt::peg::from::json', 'menu': '1'}, +\ {'word': 'pt::peg::from::peg', 'menu': '1.0.3'}, +\ {'word': 'pt::peg::import', 'menu': '1'}, +\ {'word': 'pt::peg::import::json', 'menu': '1'}, +\ {'word': 'pt::peg::import::peg', 'menu': '1'}, +\ {'word': 'pt::peg::interp', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::op', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::to::container', 'menu': '1'}, +\ {'word': 'pt::peg::to::cparam', 'menu': '1.1.3'}, +\ {'word': 'pt::peg::to::json', 'menu': '1'}, +\ {'word': 'pt::peg::to::param', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::to::peg', 'menu': '1.0.2'}, +\ {'word': 'pt::peg::to::tclparam', 'menu': '1.0.3'}, +\ {'word': 'pt::pgen', 'menu': '1.0.3'}, +\ {'word': 'pt::rde', 'menu': '1.1'}, +\ {'word': 'pt::rde::oo', 'menu': '1.1'}, +\ {'word': 'pt::tclparam::configuration::snit', 'menu': '1.0.2'}, +\ {'word': 'pt::tclparam::configuration::tcloo', 'menu': '1.0.4'}, +\ {'word': 'pt::util', 'menu': '1.1'}, +\ {'word': 'puretclparser', 'menu': '3.2'}, +\ {'word': 'radioMatrix', 'menu': '1.0'}, +\ {'word': 'rc4', 'menu': '1.1.0'}, +\ {'word': 'rcs', 'menu': '0.1'}, +\ {'word': 'rdial', 'menu': '0.3'}, +\ {'word': 'report', 'menu': '0.3.2'}, +\ {'word': 'resolv', 'menu': '1.0.3'}, +\ {'word': 'rest', 'menu': '1.0.2'}, +\ {'word': 'ripemd128', 'menu': '1.0.5'}, +\ {'word': 'ripemd160', 'menu': '1.0.5'}, +\ {'word': 'rpcvar', 'menu': '1.2'}, +\ {'word': 'scgi::app', 'menu': '0.1'}, +\ {'word': 'scgi::server', 'menu': '0.1'}, +\ {'word': 'sgml', 'menu': '1.9'}, +\ {'word': 'sgmlparser', 'menu': '1.1'}, +\ {'word': 'sha1', 'menu': '1.1.1'}, +\ {'word': 'sha256', 'menu': '1.0.3'}, +\ {'word': 'simulation::annealing', 'menu': '0.2'}, +\ {'word': 'simulation::montecarlo', 'menu': '0.1'}, +\ {'word': 'simulation::random', 'menu': '0.3.1'}, +\ {'word': 'smtp', 'menu': '1.4.5'}, +\ {'word': 'smtpd', 'menu': '1.5'}, +\ {'word': 'snit', 'menu': '1.4.2'}, +\ {'word': 'soapinterop::B', 'menu': '1.0'}, +\ {'word': 'soapinterop::C', 'menu': '1.0'}, +\ {'word': 'soapinterop::base', 'menu': '1.0'}, +\ {'word': 'soundex', 'menu': '1.0'}, +\ {'word': 'spf', 'menu': '1.1.1'}, +\ {'word': 'sqlite3', 'menu': '3.20.1'}, +\ {'word': 'starkit', 'menu': '1.3.3'}, +\ {'word': 'stooop', 'menu': '4.4.1'}, +\ {'word': 'string::token', 'menu': '1'}, +\ {'word': 'string::token::shell', 'menu': '1.2'}, +\ {'word': 'stringprep', 'menu': '1.0.1'}, +\ {'word': 'stringprep::data', 'menu': '1.0.1'}, +\ {'word': 'struct', 'menu': '1.4'}, +\ {'word': 'struct::disjointset', 'menu': '1.0'}, +\ {'word': 'struct::graph', 'menu': '2.4'}, +\ {'word': 'struct::graph::op', 'menu': '0.11.3'}, +\ {'word': 'struct::list', 'menu': '1.8.3'}, +\ {'word': 'struct::matrix', 'menu': '2.0.3'}, +\ {'word': 'struct::pool', 'menu': '1.2.3'}, +\ {'word': 'struct::prioqueue', 'menu': '1.4'}, +\ {'word': 'struct::queue', 'menu': '1.4.5'}, +\ {'word': 'struct::record', 'menu': '1.2.1'}, +\ {'word': 'struct::set', 'menu': '2.2.3'}, +\ {'word': 'struct::skiplist', 'menu': '1.3'}, +\ {'word': 'struct::stack', 'menu': '1.5.3'}, +\ {'word': 'struct::tree', 'menu': '1.2.2'}, +\ {'word': 'stubs::container', 'menu': '1'}, +\ {'word': 'stubs::gen', 'menu': '1'}, +\ {'word': 'stubs::gen::decl', 'menu': '1'}, +\ {'word': 'stubs::gen::header', 'menu': '1'}, +\ {'word': 'stubs::gen::init', 'menu': '1'}, +\ {'word': 'stubs::gen::lib', 'menu': '1'}, +\ {'word': 'stubs::gen::macro', 'menu': '1'}, +\ {'word': 'stubs::gen::slot', 'menu': '1'}, +\ {'word': 'stubs::reader', 'menu': '1'}, +\ {'word': 'stubs::writer', 'menu': '1'}, +\ {'word': 'style', 'menu': '0.3'}, +\ {'word': 'style::as', 'menu': '1.4.1'}, +\ {'word': 'style::lobster', 'menu': '0.2'}, +\ {'word': 'sum', 'menu': '1.1.2'}, +\ {'word': 'swaplist', 'menu': '0.2'}, +\ {'word': 'switched', 'menu': '2.2.1'}, +\ {'word': 'tablelist', 'menu': '5.13'}, +\ {'word': 'tablelist::common', 'menu': '5.13'}, +\ {'word': 'tablelist_tile', 'menu': '5.13'}, +\ {'word': 'tachometer', 'menu': '0.1'}, +\ {'word': 'tar', 'menu': '0.10'}, +\ {'word': 'tbcload', 'menu': '1.7'}, +\ {'word': 'tcl::chan::cat', 'menu': '1.0.2'}, +\ {'word': 'tcl::chan::core', 'menu': '1'}, +\ {'word': 'tcl::chan::events', 'menu': '1'}, +\ {'word': 'tcl::chan::facade', 'menu': '1.0.1'}, +\ {'word': 'tcl::chan::fifo', 'menu': '1'}, +\ {'word': 'tcl::chan::fifo2', 'menu': '1'}, +\ {'word': 'tcl::chan::halfpipe', 'menu': '1'}, +\ {'word': 'tcl::chan::memchan', 'menu': '1.0.3'}, +\ {'word': 'tcl::chan::null', 'menu': '1'}, +\ {'word': 'tcl::chan::nullzero', 'menu': '1'}, +\ {'word': 'tcl::chan::random', 'menu': '1'}, +\ {'word': 'tcl::chan::std', 'menu': '1.0.1'}, +\ {'word': 'tcl::chan::string', 'menu': '1.0.2'}, +\ {'word': 'tcl::chan::textwindow', 'menu': '1'}, +\ {'word': 'tcl::chan::variable', 'menu': '1.0.3'}, +\ {'word': 'tcl::chan::zero', 'menu': '1'}, +\ {'word': 'tcl::randomseed', 'menu': '1'}, +\ {'word': 'tcl::transform::adler32', 'menu': '1'}, +\ {'word': 'tcl::transform::base64', 'menu': '1'}, +\ {'word': 'tcl::transform::core', 'menu': '1'}, +\ {'word': 'tcl::transform::counter', 'menu': '1'}, +\ {'word': 'tcl::transform::crc32', 'menu': '1'}, +\ {'word': 'tcl::transform::hex', 'menu': '1'}, +\ {'word': 'tcl::transform::identity', 'menu': '1'}, +\ {'word': 'tcl::transform::limitsize', 'menu': '1'}, +\ {'word': 'tcl::transform::observe', 'menu': '1'}, +\ {'word': 'tcl::transform::otp', 'menu': '1'}, +\ {'word': 'tcl::transform::rot', 'menu': '1'}, +\ {'word': 'tcl::transform::spacer', 'menu': '1'}, +\ {'word': 'tcl::transform::zlib', 'menu': '1.0.1'}, +\ {'word': 'tclAE', 'menu': '2.0.5'}, +\ {'word': 'tclDES', 'menu': '1.0.0'}, +\ {'word': 'tclDESjr', 'menu': '1.0.0'}, +\ {'word': 'tcllibc', 'menu': '0.3.15'}, +\ {'word': 'tclparser', 'menu': '3.2'}, +\ {'word': 'tcltest', 'menu': '2.5.0'}, +\ {'word': 'tdbc', 'menu': '1.1.0'}, +\ {'word': 'tdbc::mysql', 'menu': '1.1.0'}, +\ {'word': 'tdbc::odbc', 'menu': '1.1.0'}, +\ {'word': 'tdbc::postgres', 'menu': '1.1.0'}, +\ {'word': 'tdom', 'menu': '0.8.3'}, +\ {'word': 'tepam', 'menu': '0.5'}, +\ {'word': 'tepam::doc_gen', 'menu': '0.1.1'}, +\ {'word': 'term', 'menu': '0.1'}, +\ {'word': 'term::ansi::code', 'menu': '0.2'}, +\ {'word': 'term::ansi::code::attr', 'menu': '0.1'}, +\ {'word': 'term::ansi::code::ctrl', 'menu': '0.2'}, +\ {'word': 'term::ansi::code::macros', 'menu': '0.1'}, +\ {'word': 'term::ansi::ctrl::unix', 'menu': '0.1.1'}, +\ {'word': 'term::ansi::send', 'menu': '0.2'}, +\ {'word': 'term::interact::menu', 'menu': '0.1'}, +\ {'word': 'term::interact::pager', 'menu': '0.1'}, +\ {'word': 'term::receive', 'menu': '0.1'}, +\ {'word': 'term::receive::bind', 'menu': '0.1'}, +\ {'word': 'term::send', 'menu': '0.1'}, +\ {'word': 'text::write', 'menu': '1'}, +\ {'word': 'textutil', 'menu': '0.8'}, +\ {'word': 'textutil::adjust', 'menu': '0.7.3'}, +\ {'word': 'textutil::expander', 'menu': '1.3.1'}, +\ {'word': 'textutil::repeat', 'menu': '0.7'}, +\ {'word': 'textutil::split', 'menu': '0.7'}, +\ {'word': 'textutil::string', 'menu': '0.8'}, +\ {'word': 'textutil::tabify', 'menu': '0.7'}, +\ {'word': 'textutil::trim', 'menu': '0.7'}, +\ {'word': 'throw', 'menu': '1'}, +\ {'word': 'tie', 'menu': '1.1'}, +\ {'word': 'tie::std::array', 'menu': '1.0'}, +\ {'word': 'tie::std::dsource', 'menu': '1.0'}, +\ {'word': 'tie::std::file', 'menu': '1.0.4'}, +\ {'word': 'tie::std::growfile', 'menu': '1.0'}, +\ {'word': 'tie::std::log', 'menu': '1.0'}, +\ {'word': 'tie::std::rarray', 'menu': '1.0.1'}, +\ {'word': 'tiff', 'menu': '0.2.1'}, +\ {'word': 'tifftcl', 'menu': '3.9.7'}, +\ {'word': 'time', 'menu': '1.2.1'}, +\ {'word': 'tipstack', 'menu': '1.0.1'}, +\ {'word': 'tkblt', 'menu': '3.2'}, +\ {'word': 'tkcon', 'menu': '2.7'}, +\ {'word': 'tkpiechart', 'menu': '6.6'}, +\ {'word': 'tls', 'menu': '1.7.16'}, +\ {'word': 'tnc', 'menu': '0.3.0'}, +\ {'word': 'tool', 'menu': '0.5'}, +\ {'word': 'tool::datatype', 'menu': '0.1'}, +\ {'word': 'tooltip', 'menu': '1.4.5'}, +\ {'word': 'transfer::connect', 'menu': '0.2'}, +\ {'word': 'transfer::copy', 'menu': '0.3'}, +\ {'word': 'transfer::copy::queue', 'menu': '0.1'}, +\ {'word': 'transfer::data::destination', 'menu': '0.2'}, +\ {'word': 'transfer::data::source', 'menu': '0.2'}, +\ {'word': 'transfer::receiver', 'menu': '0.2'}, +\ {'word': 'transfer::transmitter', 'menu': '0.2'}, +\ {'word': 'treectrl', 'menu': '2.4.1'}, +\ {'word': 'treeql', 'menu': '1.3.1'}, +\ {'word': 'trsync', 'menu': '1.0'}, +\ {'word': 'try', 'menu': '1'}, +\ {'word': 'uevent', 'menu': '0.3.1'}, +\ {'word': 'uevent::onidle', 'menu': '0.1'}, +\ {'word': 'unicode', 'menu': '1.0.0'}, +\ {'word': 'unicode::data', 'menu': '1.0.0'}, +\ {'word': 'units', 'menu': '2.1.1'}, +\ {'word': 'uri', 'menu': '1.2.6'}, +\ {'word': 'uri::urn', 'menu': '1.0.3'}, +\ {'word': 'uuencode', 'menu': '1.1.5'}, +\ {'word': 'uuid', 'menu': '1.0.5'}, +\ {'word': 'valtype::common', 'menu': '1'}, +\ {'word': 'valtype::creditcard::amex', 'menu': '1'}, +\ {'word': 'valtype::creditcard::discover', 'menu': '1'}, +\ {'word': 'valtype::creditcard::mastercard', 'menu': '1'}, +\ {'word': 'valtype::creditcard::visa', 'menu': '1'}, +\ {'word': 'valtype::gs1::ean13', 'menu': '1'}, +\ {'word': 'valtype::iban', 'menu': '1.5'}, +\ {'word': 'valtype::imei', 'menu': '1'}, +\ {'word': 'valtype::isbn', 'menu': '1'}, +\ {'word': 'valtype::luhn', 'menu': '1'}, +\ {'word': 'valtype::luhn5', 'menu': '1'}, +\ {'word': 'valtype::usnpi', 'menu': '1'}, +\ {'word': 'valtype::verhoeff', 'menu': '1'}, +\ {'word': 'vfs', 'menu': '1.4.2'}, +\ {'word': 'vfs::ftp', 'menu': '1.0'}, +\ {'word': 'vfs::http', 'menu': '0.6'}, +\ {'word': 'vfs::mk4', 'menu': '1.10.1'}, +\ {'word': 'vfs::ns', 'menu': '0.5.1'}, +\ {'word': 'vfs::tar', 'menu': '0.91'}, +\ {'word': 'vfs::template', 'menu': '1.5.5'}, +\ {'word': 'vfs::template::chroot', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::collate', 'menu': '1.5.3'}, +\ {'word': 'vfs::template::fish', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::quota', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::version', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::version::delta', 'menu': '1.5.2'}, +\ {'word': 'vfs::test', 'menu': '1.0'}, +\ {'word': 'vfs::tk', 'menu': '0.5'}, +\ {'word': 'vfs::urltype', 'menu': '1.0'}, +\ {'word': 'vfs::webdav', 'menu': '0.1'}, +\ {'word': 'vfs::zip', 'menu': '1.0.4.1'}, +\ {'word': 'voltmeter', 'menu': '0.1'}, +\ {'word': 'wcb', 'menu': '3.5'}, +\ {'word': 'websocket', 'menu': '1.4'}, +\ {'word': 'widget', 'menu': '3.1'}, +\ {'word': 'widget::all', 'menu': '1.2.4'}, +\ {'word': 'widget::arrowbutton', 'menu': '1.0'}, +\ {'word': 'widget::calendar', 'menu': '1.0.1'}, +\ {'word': 'widget::dateentry', 'menu': '0.96'}, +\ {'word': 'widget::dialog', 'menu': '1.3.1'}, +\ {'word': 'widget::listentry', 'menu': '0.1.1'}, +\ {'word': 'widget::listsimple', 'menu': '0.1.1'}, +\ {'word': 'widget::menuentry', 'menu': '1.0.1'}, +\ {'word': 'widget::panelframe', 'menu': '1.1'}, +\ {'word': 'widget::ruler', 'menu': '1.1'}, +\ {'word': 'widget::screenruler', 'menu': '1.2'}, +\ {'word': 'widget::scrolledtext', 'menu': '1.0'}, +\ {'word': 'widget::scrolledwindow', 'menu': '1.2.1'}, +\ {'word': 'widget::statusbar', 'menu': '1.2.1'}, +\ {'word': 'widget::superframe', 'menu': '1.0.1'}, +\ {'word': 'widget::toolbar', 'menu': '1.2.1'}, +\ {'word': 'widget::validator', 'menu': '0.1'}, +\ {'word': 'wip', 'menu': '2.2'}, +\ {'word': 'xml', 'menu': '3.2'}, +\ {'word': 'xml::c', 'menu': '2.6'}, +\ {'word': 'xml::dep', 'menu': '1.0'}, +\ {'word': 'xml::expat', 'menu': '2.6'}, +\ {'word': 'xml::libxml2', 'menu': '3.2'}, +\ {'word': 'xml::tcl', 'menu': '3.2'}, +\ {'word': 'xml::tclparser', 'menu': '3.2'}, +\ {'word': 'xmldefs', 'menu': '3.2'}, +\ {'word': 'xmldep', 'menu': '1.0'}, +\ {'word': 'xmlswitch', 'menu': '3.2'}, +\ {'word': 'xotcl::comm::connection', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::dav', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::ftp', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::httpAccess', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::httpd', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::imap', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::ldap', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::mime', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::pcache', 'menu': '2.0'}, +\ {'word': 'xotcl::htmllib', 'menu': '2.0'}, +\ {'word': 'xotcl::metadataAnalyzer', 'menu': '2.0'}, +\ {'word': 'xotcl::mixinStrategy', 'menu': '2.0'}, +\ {'word': 'xotcl::package', 'menu': '2.0'}, +\ {'word': 'xotcl::script', 'menu': '2.0'}, +\ {'word': 'xotcl::scriptCreation::recoveryPoint', 'menu': '2.0'}, +\ {'word': 'xotcl::scriptCreation::scriptCreator', 'menu': '2.0'}, +\ {'word': 'xotcl::serializer', 'menu': '2.1'}, +\ {'word': 'xotcl::staticMetadataAnalyzer', 'menu': '2.0'}, +\ {'word': 'xotcl::store', 'menu': '0.84'}, +\ {'word': 'xotcl::store::jufgdbm', 'menu': '0.81'}, +\ {'word': 'xotcl::store::mem', 'menu': '0.84'}, +\ {'word': 'xotcl::store::multi', 'menu': '0.9'}, +\ {'word': 'xotcl::store::persistence', 'menu': '0.8'}, +\ {'word': 'xotcl::store::tclgdbm', 'menu': '0.84'}, +\ {'word': 'xotcl::store::textfile', 'menu': '0.84'}, +\ {'word': 'xotcl::test', 'menu': '1.38'}, +\ {'word': 'xotcl::trace', 'menu': '2.0'}, +\ {'word': 'xotcl::upvar-compat', 'menu': '2.0'}, +\ {'word': 'xotcl::wafecompat', 'menu': '2.0'}, +\ {'word': 'xotcl::xodoc', 'menu': '2.0'}, +\ {'word': 'xpath', 'menu': '1.0'}, +\ {'word': 'xslt', 'menu': '3.2'}, +\ {'word': 'xslt::cache', 'menu': '3.2'}, +\ {'word': 'xslt::libxslt', 'menu': '3.2'}, +\ {'word': 'xslt::process', 'menu': '1.1'}, +\ {'word': 'xslt::resources', 'menu': '1.3'}, +\ {'word': 'xslt::utilities', 'menu': '3.2'}, +\ {'word': 'xsxp', 'menu': '1.0'}, +\ {'word': 'xyplot', 'menu': '1.0.1'}, +\ {'word': 'yaml', 'menu': '0.3.9'}, +\ {'word': 'yencode', 'menu': '1.1.3'}, +\ {'word': 'zipfile::decode', 'menu': '0.7'}, +\ {'word': 'zipfile::encode', 'menu': '0.4'}, +\ {'word': 'zipfile::mkzip', 'menu': '1.2'}, +\ {'word': 'zlibtcl', 'menu': '1.2.8.1'}, +\ ] + +let b:package_sp_versions = [ +\ {'word': 'BWidget', 'menu': '1.9.11'}, +\ {'word': 'Expect', 'menu': '5.45.3'}, +\ {'word': 'Ffidl', 'menu': '0.6.1'}, +\ {'word': 'Ffidlrt', 'menu': '0.1'}, +\ {'word': 'HTTP', 'menu': '2.0'}, +\ {'word': 'Img', 'menu': '1.4.6'}, +\ {'word': 'Itcl', 'menu': '4.1.2'}, +\ {'word': 'Itk', 'menu': '4.1.0'}, +\ {'word': 'Iwidgets', 'menu': '4.1.1'}, +\ {'word': 'JSONRPC', 'menu': '0.1'}, +\ {'word': 'Markdown', 'menu': '1.0'}, +\ {'word': 'Memchan', 'menu': '2.2.1'}, +\ {'word': 'Mentry', 'menu': '3.7'}, +\ {'word': 'Mentry_tile', 'menu': '3.7'}, +\ {'word': 'Mk4tcl', 'menu': '2.4.9.7.1'}, +\ {'word': 'Plotchart', 'menu': '2.3.4'}, +\ {'word': 'S3', 'menu': '1.0.3'}, +\ {'word': 'SASL', 'menu': '1.3.3'}, +\ {'word': 'SASL::NTLM', 'menu': '1.1.2'}, +\ {'word': 'SASL::SCRAM', 'menu': '0.1'}, +\ {'word': 'SASL::XGoogleToken', 'menu': '1.0.1'}, +\ {'word': 'SOAP', 'menu': '1.6.8.1'}, +\ {'word': 'SOAP::CGI', 'menu': '1.0.1'}, +\ {'word': 'SOAP::Domain', 'menu': '1.4.1'}, +\ {'word': 'SOAP::Service', 'menu': '0.5'}, +\ {'word': 'SOAP::Utils', 'menu': '1.1'}, +\ {'word': 'SOAP::ftp', 'menu': '1.0'}, +\ {'word': 'SOAP::http', 'menu': '1.0'}, +\ {'word': 'SOAP::https', 'menu': '1.0'}, +\ {'word': 'SOAP::smtp', 'menu': '1.0'}, +\ {'word': 'SOAP::xpath', 'menu': '0.2'}, +\ {'word': 'Site', 'menu': '1.0'}, +\ {'word': 'Tablelist', 'menu': '5.13'}, +\ {'word': 'Tablelist_tile', 'menu': '5.13'}, +\ {'word': 'TclOO', 'menu': '1.1.0'}, +\ {'word': 'Tclx', 'menu': '8.4'}, +\ {'word': 'Thread', 'menu': '2.8.4'}, +\ {'word': 'Tk', 'menu': '8.6.9'}, +\ {'word': 'Tktable', 'menu': '2.11'}, +\ {'word': 'Trf', 'menu': '2.1.4'}, +\ {'word': 'Ttrace', 'menu': '2.8.4'}, +\ {'word': 'Wcb', 'menu': '3.5'}, +\ {'word': 'Wub', 'menu': '5.0'}, +\ {'word': 'XMLRPC', 'menu': '1.0.1'}, +\ {'word': 'XOTcl', 'menu': '2.2.0'}, +\ {'word': 'aes', 'menu': '1.2.1'}, +\ {'word': 'ascii85', 'menu': '1.0'}, +\ {'word': 'asn', 'menu': '0.8.4'}, +\ {'word': 'autoproxy', 'menu': '1.5.3'}, +\ {'word': 'autoscroll', 'menu': '1.1'}, +\ {'word': 'base32', 'menu': '0.1'}, +\ {'word': 'base32::core', 'menu': '0.1'}, +\ {'word': 'base32::hex', 'menu': '0.1'}, +\ {'word': 'base64', 'menu': '2.4.2'}, +\ {'word': 'bee', 'menu': '0.1'}, +\ {'word': 'bench', 'menu': '0.4'}, +\ {'word': 'bench::in', 'menu': '0.1'}, +\ {'word': 'bench::out::csv', 'menu': '0.1.2'}, +\ {'word': 'bench::out::text', 'menu': '0.1.2'}, +\ {'word': 'bibtex', 'menu': '0.6'}, +\ {'word': 'bindDown', 'menu': '1.0'}, +\ {'word': 'blowfish', 'menu': '1.0.4'}, +\ {'word': 'cache::async', 'menu': '0.3'}, +\ {'word': 'canvas::drag', 'menu': '0.1'}, +\ {'word': 'canvas::edit::points', 'menu': '0.1'}, +\ {'word': 'canvas::edit::polyline', 'menu': '0.1'}, +\ {'word': 'canvas::edit::quadrilateral', 'menu': '0.1'}, +\ {'word': 'canvas::gradient', 'menu': '0.2'}, +\ {'word': 'canvas::highlight', 'menu': '0.1'}, +\ {'word': 'canvas::mvg', 'menu': '1'}, +\ {'word': 'canvas::snap', 'menu': '1.0.1'}, +\ {'word': 'canvas::sqmap', 'menu': '0.3.1'}, +\ {'word': 'canvas::tag', 'menu': '0.1'}, +\ {'word': 'canvas::track::lines', 'menu': '0.1'}, +\ {'word': 'canvas::zoom', 'menu': '0.2.1'}, +\ {'word': 'cgi2dom', 'menu': '1.1'}, +\ {'word': 'char', 'menu': '1.0.1'}, +\ {'word': 'chatwidget', 'menu': '1.1.0'}, +\ {'word': 'cksum', 'menu': '1.1.4'}, +\ {'word': 'clock::iso8601', 'menu': '0.1'}, +\ {'word': 'clock::rfc2822', 'menu': '0.1'}, +\ {'word': 'cmdline', 'menu': '1.5'}, +\ {'word': 'comm', 'menu': '4.6.3.1'}, +\ {'word': 'configuration', 'menu': '1'}, +\ {'word': 'control', 'menu': '0.1.3'}, +\ {'word': 'controlwidget', 'menu': '0.1'}, +\ {'word': 'coroutine', 'menu': '1.1.3'}, +\ {'word': 'coroutine::auto', 'menu': '1.1.3'}, +\ {'word': 'counter', 'menu': '2.0.4'}, +\ {'word': 'crc16', 'menu': '1.1.2'}, +\ {'word': 'crc32', 'menu': '1.3.2'}, +\ {'word': 'critcl', 'menu': '3.1.17'}, +\ {'word': 'critcl::app', 'menu': '3.1.17'}, +\ {'word': 'critcl::bitmap', 'menu': '1.0.1'}, +\ {'word': 'critcl::class', 'menu': '1.0.7'}, +\ {'word': 'critcl::cutil', 'menu': '0.1'}, +\ {'word': 'critcl::emap', 'menu': '1.1'}, +\ {'word': 'critcl::enum', 'menu': '1.0.1'}, +\ {'word': 'critcl::iassoc', 'menu': '1.0.2'}, +\ {'word': 'critcl::literals', 'menu': '1.2'}, +\ {'word': 'critcl::platform', 'menu': '1.0.15'}, +\ {'word': 'critcl::util', 'menu': '1.1'}, +\ {'word': 'cron', 'menu': '1.2.1'}, +\ {'word': 'crosshair', 'menu': '1.2'}, +\ {'word': 'csv', 'menu': '0.8.1'}, +\ {'word': 'ctext', 'menu': '3.3'}, +\ {'word': 'cursor', 'menu': '0.3.1'}, +\ {'word': 'datefield', 'menu': '0.2'}, +\ {'word': 'debug', 'menu': '1.0.6'}, +\ {'word': 'debug::caller', 'menu': '1.1'}, +\ {'word': 'debug::heartbeat', 'menu': '1'}, +\ {'word': 'debug::timestamp', 'menu': '1'}, +\ {'word': 'des', 'menu': '1.1.0'}, +\ {'word': 'diagram', 'menu': '1'}, +\ {'word': 'diagram::application', 'menu': '1.2'}, +\ {'word': 'diagram::attribute', 'menu': '1'}, +\ {'word': 'diagram::basic', 'menu': '1.0.1'}, +\ {'word': 'diagram::core', 'menu': '1'}, +\ {'word': 'diagram::direction', 'menu': '1'}, +\ {'word': 'diagram::element', 'menu': '1'}, +\ {'word': 'diagram::navigation', 'menu': '1'}, +\ {'word': 'diagram::point', 'menu': '1'}, +\ {'word': 'dict84', 'menu': '1'}, +\ {'word': 'dicttool', 'menu': '1.0'}, +\ {'word': 'dns', 'menu': '1.3.5'}, +\ {'word': 'docstrip', 'menu': '1.2'}, +\ {'word': 'docstrip::util', 'menu': '1.3.1'}, +\ {'word': 'doctools', 'menu': '1.4.19'}, +\ {'word': 'doctools::changelog', 'menu': '1.1'}, +\ {'word': 'doctools::config', 'menu': '0.1'}, +\ {'word': 'doctools::cvs', 'menu': '1'}, +\ {'word': 'doctools::html', 'menu': '0.1'}, +\ {'word': 'doctools::html::cssdefaults', 'menu': '0.1'}, +\ {'word': 'doctools::idx', 'menu': '1.0.5'}, +\ {'word': 'doctools::idx::export', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::docidx', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::html', 'menu': '0.2'}, +\ {'word': 'doctools::idx::export::json', 'menu': '0.1'}, +\ {'word': 'doctools::idx::export::nroff', 'menu': '0.3'}, +\ {'word': 'doctools::idx::export::text', 'menu': '0.2'}, +\ {'word': 'doctools::idx::export::wiki', 'menu': '0.2'}, +\ {'word': 'doctools::idx::import', 'menu': '0.1'}, +\ {'word': 'doctools::idx::import::docidx', 'menu': '0.1'}, +\ {'word': 'doctools::idx::import::json', 'menu': '0.1'}, +\ {'word': 'doctools::idx::parse', 'menu': '0.1'}, +\ {'word': 'doctools::idx::structure', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::c', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::de', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::en', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::idx::fr', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::c', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::de', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::en', 'menu': '0.1'}, +\ {'word': 'doctools::msgcat::toc::fr', 'menu': '0.1'}, +\ {'word': 'doctools::nroff::man_macros', 'menu': '0.1'}, +\ {'word': 'doctools::paths', 'menu': '0.1'}, +\ {'word': 'doctools::tcl::parse', 'menu': '0.1'}, +\ {'word': 'doctools::text', 'menu': '0.1'}, +\ {'word': 'doctools::toc', 'menu': '1.1.4'}, +\ {'word': 'doctools::toc::export', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::doctoc', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::html', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::json', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::nroff', 'menu': '0.2'}, +\ {'word': 'doctools::toc::export::text', 'menu': '0.1'}, +\ {'word': 'doctools::toc::export::wiki', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import::doctoc', 'menu': '0.1'}, +\ {'word': 'doctools::toc::import::json', 'menu': '0.1'}, +\ {'word': 'doctools::toc::parse', 'menu': '0.1'}, +\ {'word': 'doctools::toc::structure', 'menu': '0.1'}, +\ {'word': 'dom', 'menu': '3.2'}, +\ {'word': 'dom::c', 'menu': '2.6'}, +\ {'word': 'dom::generic', 'menu': '2.6'}, +\ {'word': 'dom::libxml2', 'menu': '3.2'}, +\ {'word': 'dom::tcl', 'menu': '2.6'}, +\ {'word': 'dom::tclgeneric', 'menu': '2.6'}, +\ {'word': 'dommap', 'menu': '1.0'}, +\ {'word': 'domtext', 'menu': '2.5'}, +\ {'word': 'domtree', 'menu': '2.5'}, +\ {'word': 'dtplite', 'menu': '1.3'}, +\ {'word': 'expat', 'menu': '2.6'}, +\ {'word': 'fileutil', 'menu': '1.15'}, +\ {'word': 'fileutil::decode', 'menu': '0.2'}, +\ {'word': 'fileutil::globfind', 'menu': '1.5'}, +\ {'word': 'fileutil::magic::cfront', 'menu': '1.0'}, +\ {'word': 'fileutil::magic::cgen', 'menu': '1.0'}, +\ {'word': 'fileutil::magic::filetype', 'menu': '1.0.2'}, +\ {'word': 'fileutil::magic::mimetype', 'menu': '1.0.2'}, +\ {'word': 'fileutil::magic::rt', 'menu': '1.0'}, +\ {'word': 'fileutil::multi', 'menu': '0.1'}, +\ {'word': 'fileutil::multi::op', 'menu': '0.5.3'}, +\ {'word': 'fileutil::traverse', 'menu': '0.6'}, +\ {'word': 'ftp', 'menu': '2.4.13'}, +\ {'word': 'ftp::geturl', 'menu': '0.2.2'}, +\ {'word': 'ftpd', 'menu': '1.3'}, +\ {'word': 'generator', 'menu': '0.1'}, +\ {'word': 'getstring', 'menu': '0.1'}, +\ {'word': 'gpx', 'menu': '1'}, +\ {'word': 'grammar::aycock', 'menu': '1.0'}, +\ {'word': 'grammar::aycock::debug', 'menu': '1.0'}, +\ {'word': 'grammar::aycock::runtime', 'menu': '1.0'}, +\ {'word': 'grammar::fa', 'menu': '0.5'}, +\ {'word': 'grammar::fa::dacceptor', 'menu': '0.1.1'}, +\ {'word': 'grammar::fa::dexec', 'menu': '0.2'}, +\ {'word': 'grammar::fa::op', 'menu': '0.4.1'}, +\ {'word': 'grammar::me::cpu', 'menu': '0.2'}, +\ {'word': 'grammar::me::cpu::core', 'menu': '0.2'}, +\ {'word': 'grammar::me::cpu::gasm', 'menu': '0.1'}, +\ {'word': 'grammar::me::tcl', 'menu': '0.1'}, +\ {'word': 'grammar::me::util', 'menu': '0.1'}, +\ {'word': 'grammar::peg', 'menu': '0.2'}, +\ {'word': 'grammar::peg::interp', 'menu': '0.1.1'}, +\ {'word': 'history', 'menu': '0.1'}, +\ {'word': 'hook', 'menu': '0.1'}, +\ {'word': 'html', 'menu': '1.4.4'}, +\ {'word': 'htmlparse', 'menu': '1.2.2'}, +\ {'word': 'http', 'menu': '1.0'}, +\ {'word': 'http::wget', 'menu': '0.1'}, +\ {'word': 'httpd', 'menu': '4.0'}, +\ {'word': 'httpd::content', 'menu': '4.0'}, +\ {'word': 'httpd::dispatch', 'menu': '4.0'}, +\ {'word': 'huddle', 'menu': '0.2'}, +\ {'word': 'huddle::json', 'menu': '0.1'}, +\ {'word': 'ico', 'menu': '1.1'}, +\ {'word': 'ident', 'menu': '0.42'}, +\ {'word': 'imap4', 'menu': '0.5.3'}, +\ {'word': 'img::base', 'menu': '1.4.6'}, +\ {'word': 'img::bmp', 'menu': '1.4.6'}, +\ {'word': 'img::dted', 'menu': '1.4.6'}, +\ {'word': 'img::gif', 'menu': '1.4.6'}, +\ {'word': 'img::ico', 'menu': '1.4.6'}, +\ {'word': 'img::jpeg', 'menu': '1.4.6'}, +\ {'word': 'img::pcx', 'menu': '1.4.6'}, +\ {'word': 'img::pixmap', 'menu': '1.4.6'}, +\ {'word': 'img::png', 'menu': '1.4.6'}, +\ {'word': 'img::ppm', 'menu': '1.4.6'}, +\ {'word': 'img::ps', 'menu': '1.4.6'}, +\ {'word': 'img::raw', 'menu': '1.4.6'}, +\ {'word': 'img::sgi', 'menu': '1.4.6'}, +\ {'word': 'img::sun', 'menu': '1.4.6'}, +\ {'word': 'img::tga', 'menu': '1.4.6'}, +\ {'word': 'img::tiff', 'menu': '1.4.6'}, +\ {'word': 'img::window', 'menu': '1.4.6'}, +\ {'word': 'img::xbm', 'menu': '1.4.6'}, +\ {'word': 'img::xpm', 'menu': '1.4.6'}, +\ {'word': 'inifile', 'menu': '0.3'}, +\ {'word': 'interp', 'menu': '0.1.2'}, +\ {'word': 'interp::delegate::method', 'menu': '0.2'}, +\ {'word': 'interp::delegate::proc', 'menu': '0.2'}, +\ {'word': 'ip', 'menu': '1.3'}, +\ {'word': 'ipentry', 'menu': '0.3'}, +\ {'word': 'irc', 'menu': '0.6.1'}, +\ {'word': 'itcl', 'menu': '4.1.2'}, +\ {'word': 'itk', 'menu': '4.1.0'}, +\ {'word': 'javascript', 'menu': '1.0.2'}, +\ {'word': 'jpeg', 'menu': '0.5'}, +\ {'word': 'jpegtcl', 'menu': '9.2'}, +\ {'word': 'json', 'menu': '1.3.3'}, +\ {'word': 'json::write', 'menu': '1.0.3'}, +\ {'word': 'khim', 'menu': '1.0.1'}, +\ {'word': 'lambda', 'menu': '1'}, +\ {'word': 'lassign84', 'menu': '1.0.1'}, +\ {'word': 'ldap', 'menu': '1.8'}, +\ {'word': 'ldapx', 'menu': '1.0'}, +\ {'word': 'led', 'menu': '1.0'}, +\ {'word': 'lmap84', 'menu': '1'}, +\ {'word': 'log', 'menu': '1.3'}, +\ {'word': 'logger', 'menu': '0.9.4'}, +\ {'word': 'logger::appender', 'menu': '1.3'}, +\ {'word': 'logger::utils', 'menu': '1.3'}, +\ {'word': 'map::geocode::nominatim', 'menu': '0.1'}, +\ {'word': 'map::slippy', 'menu': '0.5'}, +\ {'word': 'map::slippy::cache', 'menu': '0.2'}, +\ {'word': 'map::slippy::fetcher', 'menu': '0.4'}, +\ {'word': 'mapproj', 'menu': '1.0'}, +\ {'word': 'math', 'menu': '1.2.5'}, +\ {'word': 'math::bigfloat', 'menu': '2.0.2'}, +\ {'word': 'math::bignum', 'menu': '3.1.1'}, +\ {'word': 'math::calculus', 'menu': '0.8.1'}, +\ {'word': 'math::calculus::symdiff', 'menu': '1.0.1'}, +\ {'word': 'math::complexnumbers', 'menu': '1.0.2'}, +\ {'word': 'math::constants', 'menu': '1.0.2'}, +\ {'word': 'math::decimal', 'menu': '1.0.3'}, +\ {'word': 'math::exact', 'menu': '1.0'}, +\ {'word': 'math::fourier', 'menu': '1.0.2'}, +\ {'word': 'math::fuzzy', 'menu': '0.2.1'}, +\ {'word': 'math::geometry', 'menu': '1.1.3'}, +\ {'word': 'math::interpolate', 'menu': '1.1'}, +\ {'word': 'math::linearalgebra', 'menu': '1.1.5'}, +\ {'word': 'math::machineparameters', 'menu': '0.1'}, +\ {'word': 'math::numtheory', 'menu': '1.0'}, +\ {'word': 'math::optimize', 'menu': '1.0.1'}, +\ {'word': 'math::polynomials', 'menu': '1.0.1'}, +\ {'word': 'math::rationalfunctions', 'menu': '1.0.1'}, +\ {'word': 'math::roman', 'menu': '1.0'}, +\ {'word': 'math::special', 'menu': '0.3.0'}, +\ {'word': 'math::statistics', 'menu': '1.0'}, +\ {'word': 'md4', 'menu': '1.0.6'}, +\ {'word': 'md5', 'menu': '1.4.4'}, +\ {'word': 'md5crypt', 'menu': '1.1.0'}, +\ {'word': 'mentry', 'menu': '3.7'}, +\ {'word': 'mentry::common', 'menu': '3.7'}, +\ {'word': 'mentry_tile', 'menu': '3.7'}, +\ {'word': 'menubar', 'menu': '0.5'}, +\ {'word': 'menubar::debug', 'menu': '0.5'}, +\ {'word': 'menubar::node', 'menu': '0.5'}, +\ {'word': 'menubar::tree', 'menu': '0.5'}, +\ {'word': 'meter', 'menu': '1.0'}, +\ {'word': 'mime', 'menu': '1.6'}, +\ {'word': 'msgcat', 'menu': '1.6.1'}, +\ {'word': 'multiplexer', 'menu': '0.2'}, +\ {'word': 'nameserv', 'menu': '0.4.2'}, +\ {'word': 'nameserv::auto', 'menu': '0.3'}, +\ {'word': 'nameserv::cluster', 'menu': '0.2.3'}, +\ {'word': 'nameserv::common', 'menu': '0.1'}, +\ {'word': 'nameserv::server', 'menu': '0.3.2'}, +\ {'word': 'namespacex', 'menu': '0.1'}, +\ {'word': 'ncgi', 'menu': '1.4.3'}, +\ {'word': 'nettool', 'menu': '0.5.1'}, +\ {'word': 'nmea', 'menu': '1.0.0'}, +\ {'word': 'nntp', 'menu': '0.2.1'}, +\ {'word': 'nsf', 'menu': '2.2.0'}, +\ {'word': 'ntext', 'menu': '0.81'}, +\ {'word': 'nx', 'menu': '2.2.0'}, +\ {'word': 'nx::class-method', 'menu': '1.0'}, +\ {'word': 'nx::help', 'menu': '1.0'}, +\ {'word': 'nx::plain-object-method', 'menu': '1.0'}, +\ {'word': 'nx::pp', 'menu': '1.0'}, +\ {'word': 'nx::serializer', 'menu': '2.2'}, +\ {'word': 'nx::shell', 'menu': '1.1'}, +\ {'word': 'nx::test', 'menu': '1.0'}, +\ {'word': 'nx::trait', 'menu': '0.4'}, +\ {'word': 'nx::trait::callback', 'menu': '1.0'}, +\ {'word': 'nx::volatile', 'menu': '1.0'}, +\ {'word': 'nx::zip', 'menu': '1.1'}, +\ {'word': 'oauth', 'menu': '1'}, +\ {'word': 'odie::processman', 'menu': '0.3'}, +\ {'word': 'oo::dialect', 'menu': '0.3'}, +\ {'word': 'oo::meta', 'menu': '0.4.1'}, +\ {'word': 'oo::option', 'menu': '0.3'}, +\ {'word': 'oo::util', 'menu': '1.2.2'}, +\ {'word': 'opt', 'menu': '0.4.6'}, +\ {'word': 'otp', 'menu': '1.0.0'}, +\ {'word': 'page::analysis::peg::emodes', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::minimize', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::reachable', 'menu': '0.1'}, +\ {'word': 'page::analysis::peg::realizable', 'menu': '0.1'}, +\ {'word': 'page::compiler::peg::mecpu', 'menu': '0.1.1'}, +\ {'word': 'page::config::peg', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::canon', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::cpkg', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::hb', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::me', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::mecpu', 'menu': '0.1'}, +\ {'word': 'page::gen::peg::ser', 'menu': '0.1'}, +\ {'word': 'page::gen::tree::text', 'menu': '0.1'}, +\ {'word': 'page::parse::lemon', 'menu': '0.1'}, +\ {'word': 'page::parse::peg', 'menu': '0.1'}, +\ {'word': 'page::parse::peghb', 'menu': '0.1'}, +\ {'word': 'page::parse::pegser', 'menu': '0.1'}, +\ {'word': 'page::pluginmgr', 'menu': '0.2'}, +\ {'word': 'page::reader::hb', 'menu': '0.1'}, +\ {'word': 'page::reader::lemon', 'menu': '0.1'}, +\ {'word': 'page::reader::peg', 'menu': '0.1'}, +\ {'word': 'page::reader::ser', 'menu': '0.1'}, +\ {'word': 'page::reader::treeser', 'menu': '0.1'}, +\ {'word': 'page::transform::mecpu', 'menu': '0.1'}, +\ {'word': 'page::transform::reachable', 'menu': '0.1'}, +\ {'word': 'page::transform::realizable', 'menu': '0.1'}, +\ {'word': 'page::util::flow', 'menu': '0.1'}, +\ {'word': 'page::util::norm::lemon', 'menu': '0.1'}, +\ {'word': 'page::util::norm::peg', 'menu': '0.1'}, +\ {'word': 'page::util::peg', 'menu': '0.1'}, +\ {'word': 'page::util::quote', 'menu': '0.1'}, +\ {'word': 'page::writer::hb', 'menu': '0.1'}, +\ {'word': 'page::writer::identity', 'menu': '0.1'}, +\ {'word': 'page::writer::me', 'menu': '0.1'}, +\ {'word': 'page::writer::mecpu', 'menu': '0.1.1'}, +\ {'word': 'page::writer::null', 'menu': '0.1'}, +\ {'word': 'page::writer::peg', 'menu': '0.1'}, +\ {'word': 'page::writer::ser', 'menu': '0.1'}, +\ {'word': 'page::writer::tpc', 'menu': '0.1'}, +\ {'word': 'page::writer::tree', 'menu': '0.1'}, +\ {'word': 'paths', 'menu': '1'}, +\ {'word': 'picoirc', 'menu': '0.5.2'}, +\ {'word': 'pki', 'menu': '0.6'}, +\ {'word': 'platform', 'menu': '1.0.14'}, +\ {'word': 'plotanim', 'menu': '0.2'}, +\ {'word': 'pluginmgr', 'menu': '0.3'}, +\ {'word': 'png', 'menu': '0.2'}, +\ {'word': 'pngtcl', 'menu': '1.6.21'}, +\ {'word': 'pop3', 'menu': '1.9'}, +\ {'word': 'pop3d', 'menu': '1.1.0'}, +\ {'word': 'pop3d::dbox', 'menu': '1.0.2'}, +\ {'word': 'pop3d::udb', 'menu': '1.1'}, +\ {'word': 'processman', 'menu': '0.3'}, +\ {'word': 'profiler', 'menu': '0.3'}, +\ {'word': 'pt::ast', 'menu': '1.1'}, +\ {'word': 'pt::cparam::configuration::critcl', 'menu': '1.0.2'}, +\ {'word': 'pt::cparam::configuration::tea', 'menu': '0.1'}, +\ {'word': 'pt::parse::peg', 'menu': '1.0.1'}, +\ {'word': 'pt::pe', 'menu': '1.0.2'}, +\ {'word': 'pt::pe::op', 'menu': '1.0.1'}, +\ {'word': 'pt::peg', 'menu': '1'}, +\ {'word': 'pt::peg::container', 'menu': '1'}, +\ {'word': 'pt::peg::container::peg', 'menu': '1'}, +\ {'word': 'pt::peg::export', 'menu': '1'}, +\ {'word': 'pt::peg::export::container', 'menu': '1'}, +\ {'word': 'pt::peg::export::json', 'menu': '1'}, +\ {'word': 'pt::peg::export::peg', 'menu': '1'}, +\ {'word': 'pt::peg::from::json', 'menu': '1'}, +\ {'word': 'pt::peg::from::peg', 'menu': '1.0.3'}, +\ {'word': 'pt::peg::import', 'menu': '1'}, +\ {'word': 'pt::peg::import::json', 'menu': '1'}, +\ {'word': 'pt::peg::import::peg', 'menu': '1'}, +\ {'word': 'pt::peg::interp', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::op', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::to::container', 'menu': '1'}, +\ {'word': 'pt::peg::to::cparam', 'menu': '1.1.3'}, +\ {'word': 'pt::peg::to::json', 'menu': '1'}, +\ {'word': 'pt::peg::to::param', 'menu': '1.0.1'}, +\ {'word': 'pt::peg::to::peg', 'menu': '1.0.2'}, +\ {'word': 'pt::peg::to::tclparam', 'menu': '1.0.3'}, +\ {'word': 'pt::pgen', 'menu': '1.0.3'}, +\ {'word': 'pt::rde', 'menu': '1.1'}, +\ {'word': 'pt::rde::oo', 'menu': '1.1'}, +\ {'word': 'pt::tclparam::configuration::snit', 'menu': '1.0.2'}, +\ {'word': 'pt::tclparam::configuration::tcloo', 'menu': '1.0.4'}, +\ {'word': 'pt::util', 'menu': '1.1'}, +\ {'word': 'puretclparser', 'menu': '3.2'}, +\ {'word': 'radioMatrix', 'menu': '1.0'}, +\ {'word': 'rc4', 'menu': '1.1.0'}, +\ {'word': 'rcs', 'menu': '0.1'}, +\ {'word': 'rdial', 'menu': '0.3'}, +\ {'word': 'report', 'menu': '0.3.2'}, +\ {'word': 'resolv', 'menu': '1.0.3'}, +\ {'word': 'rest', 'menu': '1.0.2'}, +\ {'word': 'ripemd128', 'menu': '1.0.5'}, +\ {'word': 'ripemd160', 'menu': '1.0.5'}, +\ {'word': 'rpcvar', 'menu': '1.2'}, +\ {'word': 'scgi::app', 'menu': '0.1'}, +\ {'word': 'scgi::server', 'menu': '0.1'}, +\ {'word': 'sgml', 'menu': '1.9'}, +\ {'word': 'sgmlparser', 'menu': '1.1'}, +\ {'word': 'sha1', 'menu': '1.1.1'}, +\ {'word': 'sha256', 'menu': '1.0.3'}, +\ {'word': 'simulation::annealing', 'menu': '0.2'}, +\ {'word': 'simulation::montecarlo', 'menu': '0.1'}, +\ {'word': 'simulation::random', 'menu': '0.3.1'}, +\ {'word': 'smtp', 'menu': '1.4.5'}, +\ {'word': 'smtpd', 'menu': '1.5'}, +\ {'word': 'snit', 'menu': '1.4.2'}, +\ {'word': 'soapinterop::B', 'menu': '1.0'}, +\ {'word': 'soapinterop::C', 'menu': '1.0'}, +\ {'word': 'soapinterop::base', 'menu': '1.0'}, +\ {'word': 'soundex', 'menu': '1.0'}, +\ {'word': 'spf', 'menu': '1.1.1'}, +\ {'word': 'sqlite3', 'menu': '3.20.1'}, +\ {'word': 'starkit', 'menu': '1.3.3'}, +\ {'word': 'stooop', 'menu': '4.4.1'}, +\ {'word': 'string::token', 'menu': '1'}, +\ {'word': 'string::token::shell', 'menu': '1.2'}, +\ {'word': 'stringprep', 'menu': '1.0.1'}, +\ {'word': 'stringprep::data', 'menu': '1.0.1'}, +\ {'word': 'struct', 'menu': '1.4'}, +\ {'word': 'struct::disjointset', 'menu': '1.0'}, +\ {'word': 'struct::graph', 'menu': '2.4'}, +\ {'word': 'struct::graph::op', 'menu': '0.11.3'}, +\ {'word': 'struct::list', 'menu': '1.8.3'}, +\ {'word': 'struct::matrix', 'menu': '2.0.3'}, +\ {'word': 'struct::pool', 'menu': '1.2.3'}, +\ {'word': 'struct::prioqueue', 'menu': '1.4'}, +\ {'word': 'struct::queue', 'menu': '1.4.5'}, +\ {'word': 'struct::record', 'menu': '1.2.1'}, +\ {'word': 'struct::set', 'menu': '2.2.3'}, +\ {'word': 'struct::skiplist', 'menu': '1.3'}, +\ {'word': 'struct::stack', 'menu': '1.5.3'}, +\ {'word': 'struct::tree', 'menu': '1.2.2'}, +\ {'word': 'stubs::container', 'menu': '1'}, +\ {'word': 'stubs::gen', 'menu': '1'}, +\ {'word': 'stubs::gen::decl', 'menu': '1'}, +\ {'word': 'stubs::gen::header', 'menu': '1'}, +\ {'word': 'stubs::gen::init', 'menu': '1'}, +\ {'word': 'stubs::gen::lib', 'menu': '1'}, +\ {'word': 'stubs::gen::macro', 'menu': '1'}, +\ {'word': 'stubs::gen::slot', 'menu': '1'}, +\ {'word': 'stubs::reader', 'menu': '1'}, +\ {'word': 'stubs::writer', 'menu': '1'}, +\ {'word': 'style', 'menu': '0.3'}, +\ {'word': 'style::as', 'menu': '1.4.1'}, +\ {'word': 'style::lobster', 'menu': '0.2'}, +\ {'word': 'sum', 'menu': '1.1.2'}, +\ {'word': 'swaplist', 'menu': '0.2'}, +\ {'word': 'switched', 'menu': '2.2.1'}, +\ {'word': 'tablelist', 'menu': '5.13'}, +\ {'word': 'tablelist::common', 'menu': '5.13'}, +\ {'word': 'tablelist_tile', 'menu': '5.13'}, +\ {'word': 'tachometer', 'menu': '0.1'}, +\ {'word': 'tar', 'menu': '0.10'}, +\ {'word': 'tbcload', 'menu': '1.7'}, +\ {'word': 'tcl::chan::cat', 'menu': '1.0.2'}, +\ {'word': 'tcl::chan::core', 'menu': '1'}, +\ {'word': 'tcl::chan::events', 'menu': '1'}, +\ {'word': 'tcl::chan::facade', 'menu': '1.0.1'}, +\ {'word': 'tcl::chan::fifo', 'menu': '1'}, +\ {'word': 'tcl::chan::fifo2', 'menu': '1'}, +\ {'word': 'tcl::chan::halfpipe', 'menu': '1'}, +\ {'word': 'tcl::chan::memchan', 'menu': '1.0.3'}, +\ {'word': 'tcl::chan::null', 'menu': '1'}, +\ {'word': 'tcl::chan::nullzero', 'menu': '1'}, +\ {'word': 'tcl::chan::random', 'menu': '1'}, +\ {'word': 'tcl::chan::std', 'menu': '1.0.1'}, +\ {'word': 'tcl::chan::string', 'menu': '1.0.2'}, +\ {'word': 'tcl::chan::textwindow', 'menu': '1'}, +\ {'word': 'tcl::chan::variable', 'menu': '1.0.3'}, +\ {'word': 'tcl::chan::zero', 'menu': '1'}, +\ {'word': 'tcl::randomseed', 'menu': '1'}, +\ {'word': 'tcl::transform::adler32', 'menu': '1'}, +\ {'word': 'tcl::transform::base64', 'menu': '1'}, +\ {'word': 'tcl::transform::core', 'menu': '1'}, +\ {'word': 'tcl::transform::counter', 'menu': '1'}, +\ {'word': 'tcl::transform::crc32', 'menu': '1'}, +\ {'word': 'tcl::transform::hex', 'menu': '1'}, +\ {'word': 'tcl::transform::identity', 'menu': '1'}, +\ {'word': 'tcl::transform::limitsize', 'menu': '1'}, +\ {'word': 'tcl::transform::observe', 'menu': '1'}, +\ {'word': 'tcl::transform::otp', 'menu': '1'}, +\ {'word': 'tcl::transform::rot', 'menu': '1'}, +\ {'word': 'tcl::transform::spacer', 'menu': '1'}, +\ {'word': 'tcl::transform::zlib', 'menu': '1.0.1'}, +\ {'word': 'tclAE', 'menu': '2.0.5'}, +\ {'word': 'tclDES', 'menu': '1.0.0'}, +\ {'word': 'tclDESjr', 'menu': '1.0.0'}, +\ {'word': 'tcllibc', 'menu': '0.3.15'}, +\ {'word': 'tclparser', 'menu': '3.2'}, +\ {'word': 'tcltest', 'menu': '2.5.0'}, +\ {'word': 'tdbc', 'menu': '1.1.0'}, +\ {'word': 'tdbc::mysql', 'menu': '1.1.0'}, +\ {'word': 'tdbc::odbc', 'menu': '1.1.0'}, +\ {'word': 'tdbc::postgres', 'menu': '1.1.0'}, +\ {'word': 'tdom', 'menu': '0.8.3'}, +\ {'word': 'tepam', 'menu': '0.5'}, +\ {'word': 'tepam::doc_gen', 'menu': '0.1.1'}, +\ {'word': 'term', 'menu': '0.1'}, +\ {'word': 'term::ansi::code', 'menu': '0.2'}, +\ {'word': 'term::ansi::code::attr', 'menu': '0.1'}, +\ {'word': 'term::ansi::code::ctrl', 'menu': '0.2'}, +\ {'word': 'term::ansi::code::macros', 'menu': '0.1'}, +\ {'word': 'term::ansi::ctrl::unix', 'menu': '0.1.1'}, +\ {'word': 'term::ansi::send', 'menu': '0.2'}, +\ {'word': 'term::interact::menu', 'menu': '0.1'}, +\ {'word': 'term::interact::pager', 'menu': '0.1'}, +\ {'word': 'term::receive', 'menu': '0.1'}, +\ {'word': 'term::receive::bind', 'menu': '0.1'}, +\ {'word': 'term::send', 'menu': '0.1'}, +\ {'word': 'text::write', 'menu': '1'}, +\ {'word': 'textutil', 'menu': '0.8'}, +\ {'word': 'textutil::adjust', 'menu': '0.7.3'}, +\ {'word': 'textutil::expander', 'menu': '1.3.1'}, +\ {'word': 'textutil::repeat', 'menu': '0.7'}, +\ {'word': 'textutil::split', 'menu': '0.7'}, +\ {'word': 'textutil::string', 'menu': '0.8'}, +\ {'word': 'textutil::tabify', 'menu': '0.7'}, +\ {'word': 'textutil::trim', 'menu': '0.7'}, +\ {'word': 'throw', 'menu': '1'}, +\ {'word': 'tie', 'menu': '1.1'}, +\ {'word': 'tie::std::array', 'menu': '1.0'}, +\ {'word': 'tie::std::dsource', 'menu': '1.0'}, +\ {'word': 'tie::std::file', 'menu': '1.0.4'}, +\ {'word': 'tie::std::growfile', 'menu': '1.0'}, +\ {'word': 'tie::std::log', 'menu': '1.0'}, +\ {'word': 'tie::std::rarray', 'menu': '1.0.1'}, +\ {'word': 'tiff', 'menu': '0.2.1'}, +\ {'word': 'tifftcl', 'menu': '3.9.7'}, +\ {'word': 'time', 'menu': '1.2.1'}, +\ {'word': 'tipstack', 'menu': '1.0.1'}, +\ {'word': 'tkblt', 'menu': '3.2'}, +\ {'word': 'tkcon', 'menu': '2.7'}, +\ {'word': 'tkpiechart', 'menu': '6.6'}, +\ {'word': 'tls', 'menu': '1.7.16'}, +\ {'word': 'tnc', 'menu': '0.3.0'}, +\ {'word': 'tool', 'menu': '0.5'}, +\ {'word': 'tool::datatype', 'menu': '0.1'}, +\ {'word': 'tooltip', 'menu': '1.4.5'}, +\ {'word': 'transfer::connect', 'menu': '0.2'}, +\ {'word': 'transfer::copy', 'menu': '0.3'}, +\ {'word': 'transfer::copy::queue', 'menu': '0.1'}, +\ {'word': 'transfer::data::destination', 'menu': '0.2'}, +\ {'word': 'transfer::data::source', 'menu': '0.2'}, +\ {'word': 'transfer::receiver', 'menu': '0.2'}, +\ {'word': 'transfer::transmitter', 'menu': '0.2'}, +\ {'word': 'treectrl', 'menu': '2.4.1'}, +\ {'word': 'treeql', 'menu': '1.3.1'}, +\ {'word': 'trsync', 'menu': '1.0'}, +\ {'word': 'try', 'menu': '1'}, +\ {'word': 'uevent', 'menu': '0.3.1'}, +\ {'word': 'uevent::onidle', 'menu': '0.1'}, +\ {'word': 'unicode', 'menu': '1.0.0'}, +\ {'word': 'unicode::data', 'menu': '1.0.0'}, +\ {'word': 'units', 'menu': '2.1.1'}, +\ {'word': 'uri', 'menu': '1.2.6'}, +\ {'word': 'uri::urn', 'menu': '1.0.3'}, +\ {'word': 'uuencode', 'menu': '1.1.5'}, +\ {'word': 'uuid', 'menu': '1.0.5'}, +\ {'word': 'valtype::common', 'menu': '1'}, +\ {'word': 'valtype::creditcard::amex', 'menu': '1'}, +\ {'word': 'valtype::creditcard::discover', 'menu': '1'}, +\ {'word': 'valtype::creditcard::mastercard', 'menu': '1'}, +\ {'word': 'valtype::creditcard::visa', 'menu': '1'}, +\ {'word': 'valtype::gs1::ean13', 'menu': '1'}, +\ {'word': 'valtype::iban', 'menu': '1.5'}, +\ {'word': 'valtype::imei', 'menu': '1'}, +\ {'word': 'valtype::isbn', 'menu': '1'}, +\ {'word': 'valtype::luhn', 'menu': '1'}, +\ {'word': 'valtype::luhn5', 'menu': '1'}, +\ {'word': 'valtype::usnpi', 'menu': '1'}, +\ {'word': 'valtype::verhoeff', 'menu': '1'}, +\ {'word': 'vfs', 'menu': '1.4.2'}, +\ {'word': 'vfs::ftp', 'menu': '1.0'}, +\ {'word': 'vfs::http', 'menu': '0.6'}, +\ {'word': 'vfs::mk4', 'menu': '1.10.1'}, +\ {'word': 'vfs::ns', 'menu': '0.5.1'}, +\ {'word': 'vfs::tar', 'menu': '0.91'}, +\ {'word': 'vfs::template', 'menu': '1.5.5'}, +\ {'word': 'vfs::template::chroot', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::collate', 'menu': '1.5.3'}, +\ {'word': 'vfs::template::fish', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::quota', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::version', 'menu': '1.5.2'}, +\ {'word': 'vfs::template::version::delta', 'menu': '1.5.2'}, +\ {'word': 'vfs::test', 'menu': '1.0'}, +\ {'word': 'vfs::tk', 'menu': '0.5'}, +\ {'word': 'vfs::urltype', 'menu': '1.0'}, +\ {'word': 'vfs::webdav', 'menu': '0.1'}, +\ {'word': 'vfs::zip', 'menu': '1.0.4.1'}, +\ {'word': 'voltmeter', 'menu': '0.1'}, +\ {'word': 'wcb', 'menu': '3.5'}, +\ {'word': 'websocket', 'menu': '1.4'}, +\ {'word': 'widget', 'menu': '3.1'}, +\ {'word': 'widget::all', 'menu': '1.2.4'}, +\ {'word': 'widget::arrowbutton', 'menu': '1.0'}, +\ {'word': 'widget::calendar', 'menu': '1.0.1'}, +\ {'word': 'widget::dateentry', 'menu': '0.96'}, +\ {'word': 'widget::dialog', 'menu': '1.3.1'}, +\ {'word': 'widget::listentry', 'menu': '0.1.1'}, +\ {'word': 'widget::listsimple', 'menu': '0.1.1'}, +\ {'word': 'widget::menuentry', 'menu': '1.0.1'}, +\ {'word': 'widget::panelframe', 'menu': '1.1'}, +\ {'word': 'widget::ruler', 'menu': '1.1'}, +\ {'word': 'widget::screenruler', 'menu': '1.2'}, +\ {'word': 'widget::scrolledtext', 'menu': '1.0'}, +\ {'word': 'widget::scrolledwindow', 'menu': '1.2.1'}, +\ {'word': 'widget::statusbar', 'menu': '1.2.1'}, +\ {'word': 'widget::superframe', 'menu': '1.0.1'}, +\ {'word': 'widget::toolbar', 'menu': '1.2.1'}, +\ {'word': 'widget::validator', 'menu': '0.1'}, +\ {'word': 'wip', 'menu': '2.2'}, +\ {'word': 'xml', 'menu': '3.2'}, +\ {'word': 'xml::c', 'menu': '2.6'}, +\ {'word': 'xml::dep', 'menu': '1.0'}, +\ {'word': 'xml::expat', 'menu': '2.6'}, +\ {'word': 'xml::libxml2', 'menu': '3.2'}, +\ {'word': 'xml::tcl', 'menu': '3.2'}, +\ {'word': 'xml::tclparser', 'menu': '3.2'}, +\ {'word': 'xmldefs', 'menu': '3.2'}, +\ {'word': 'xmldep', 'menu': '1.0'}, +\ {'word': 'xmlswitch', 'menu': '3.2'}, +\ {'word': 'xotcl::comm::connection', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::dav', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::ftp', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::httpAccess', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::httpd', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::imap', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::ldap', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::mime', 'menu': '2.0'}, +\ {'word': 'xotcl::comm::pcache', 'menu': '2.0'}, +\ {'word': 'xotcl::htmllib', 'menu': '2.0'}, +\ {'word': 'xotcl::metadataAnalyzer', 'menu': '2.0'}, +\ {'word': 'xotcl::mixinStrategy', 'menu': '2.0'}, +\ {'word': 'xotcl::package', 'menu': '2.0'}, +\ {'word': 'xotcl::script', 'menu': '2.0'}, +\ {'word': 'xotcl::scriptCreation::recoveryPoint', 'menu': '2.0'}, +\ {'word': 'xotcl::scriptCreation::scriptCreator', 'menu': '2.0'}, +\ {'word': 'xotcl::serializer', 'menu': '2.1'}, +\ {'word': 'xotcl::staticMetadataAnalyzer', 'menu': '2.0'}, +\ {'word': 'xotcl::store', 'menu': '0.84'}, +\ {'word': 'xotcl::store::jufgdbm', 'menu': '0.81'}, +\ {'word': 'xotcl::store::mem', 'menu': '0.84'}, +\ {'word': 'xotcl::store::multi', 'menu': '0.9'}, +\ {'word': 'xotcl::store::persistence', 'menu': '0.8'}, +\ {'word': 'xotcl::store::tclgdbm', 'menu': '0.84'}, +\ {'word': 'xotcl::store::textfile', 'menu': '0.84'}, +\ {'word': 'xotcl::test', 'menu': '1.38'}, +\ {'word': 'xotcl::trace', 'menu': '2.0'}, +\ {'word': 'xotcl::upvar-compat', 'menu': '2.0'}, +\ {'word': 'xotcl::wafecompat', 'menu': '2.0'}, +\ {'word': 'xotcl::xodoc', 'menu': '2.0'}, +\ {'word': 'xpath', 'menu': '1.0'}, +\ {'word': 'xslt', 'menu': '3.2'}, +\ {'word': 'xslt::cache', 'menu': '3.2'}, +\ {'word': 'xslt::libxslt', 'menu': '3.2'}, +\ {'word': 'xslt::process', 'menu': '1.1'}, +\ {'word': 'xslt::resources', 'menu': '1.3'}, +\ {'word': 'xslt::utilities', 'menu': '3.2'}, +\ {'word': 'xsxp', 'menu': '1.0'}, +\ {'word': 'xyplot', 'menu': '1.0.1'}, +\ {'word': 'yaml', 'menu': '0.3.9'}, +\ {'word': 'yencode', 'menu': '1.1.3'}, +\ {'word': 'zipfile::decode', 'menu': '0.7'}, +\ {'word': 'zipfile::encode', 'menu': '0.4'}, +\ {'word': 'zipfile::mkzip', 'menu': '1.2'}, +\ {'word': 'zlibtcl', 'menu': '1.2.8.1'}, +\ ] + +let b:after = [ +\ {'word': 'cancel', 'menu': 'script script script ...'}, +\ {'word': 'idle', 'menu': 'script script script ...'}, +\ {'word': 'info', 'menu': 'id'}, +\ ] + +let b:array = [ +\ {'word': 'anymore', 'menu': 'arrayName searchId'}, +\ {'word': 'donesearch', 'menu': 'arrayName searchId'}, +\ {'word': 'exists', 'menu': 'arrayName'}, +\ {'word': 'get', 'menu': 'arrayName pattern'}, +\ {'word': 'names', 'menu': 'arrayName mode pattern'}, +\ {'word': 'nextelement', 'menu': 'arrayName searchId'}, +\ {'word': 'set', 'menu': 'arrayName list'}, +\ {'word': 'size', 'menu': 'arrayName'}, +\ {'word': 'startsearch', 'menu': 'arrayName'}, +\ {'word': 'statistics', 'menu': 'arrayName'}, +\ {'word': 'unset', 'menu': 'arrayName pattern'}, +\ ] + +let b:binary = [ +\ {'word': '-maxlen', 'menu': 'length'}, +\ {'word': '-wrapchar', 'menu': 'character'}, +\ {'word': '-strict', 'menu': ''}, +\ {'word': 'decode', 'menu': 'format -option value ... data'}, +\ {'word': 'encode', 'menu': 'format -option value ... data'}, +\ {'word': 'format', 'menu': 'formatString arg arg ...'}, +\ {'word': 'scan', 'menu': 'string formatString varName varName ...'}, +\ ] + +let b:chan = [ +\ {'word': 'blocked', 'menu': 'channelId'}, +\ {'word': 'close', 'menu': 'channelId direction'}, +\ {'word': 'configure', 'menu': 'channelId optionName value optionName value...'}, +\ {'word': 'copy', 'menu': 'inputChan outputChan -size size -command callback'}, +\ {'word': 'create', 'menu': 'mode cmdPrefix'}, +\ {'word': 'eof', 'menu': 'channelId'}, +\ {'word': 'event', 'menu': 'channelId event script'}, +\ {'word': 'flush', 'menu': 'channelId'}, +\ {'word': 'gets', 'menu': 'channelId varName'}, +\ {'word': 'names', 'menu': 'pattern'}, +\ {'word': 'pending', 'menu': 'mode channelId'}, +\ {'word': 'pipe', 'menu': ''}, +\ {'word': 'pop', 'menu': 'channelId'}, +\ {'word': 'postevent', 'menu': 'channelId eventSpec'}, +\ {'word': 'push', 'menu': 'channelId cmdPrefix'}, +\ {'word': 'puts', 'menu': '-nonewline channelId string'}, +\ {'word': 'read', 'menu': 'channelId'}, +\ {'word': 'seek', 'menu': 'channelId offset origin'}, +\ {'word': 'tell', 'menu': 'channelId'}, +\ {'word': 'truncate', 'menu': 'channelId length'}, +\ ] + +let b:chan_sp_configure = [ +\ {'word': '-blocking', 'menu': 'boolean'}, +\ {'word': '-buffering', 'menu': 'newValue'}, +\ {'word': '-buffersize', 'menu': 'newSize'}, +\ {'word': '-encoding', 'menu': 'name'}, +\ {'word': '-eofchar', 'menu': '{inChar outChar}'}, +\ {'word': '-translation', 'menu': '{inMode outMode}'}, +\ ] + +let b:clock = [ +\ {'word': 'add', 'menu': 'timeVal count unit... -option value'}, +\ {'word': 'clicks', 'menu': '-option'}, +\ {'word': 'format', 'menu': 'timeVal -option value...'}, +\ {'word': 'microseconds', 'menu': ''}, +\ {'word': 'milliseconds', 'menu': ''}, +\ {'word': 'scan', 'menu': 'inputString -option value...'}, +\ {'word': 'seconds', 'menu': ''}, +\ ] + +let b:clock_sp_seconds = [ +\ {'word': '-base', 'menu': 'time'}, +\ {'word': '-format', 'menu': 'format'}, +\ {'word': '-gmt', 'menu': 'boolean'}, +\ {'word': '-locale', 'menu': 'localeName'}, +\ {'word': '-timezone', 'menu': 'zoneName'}, +\ ] + +let b:dde = [ +\ {'word': 'servername', 'menu': '-force -handler proc -- topic'}, +\ {'word': 'execute', 'menu': '-async -binary service topic data'}, +\ {'word': 'poke', 'menu': '-binary service topic item data'}, +\ {'word': 'request', 'menu': '-binary service topic item'}, +\ {'word': 'services', 'menu': 'service topic'}, +\ {'word': 'eval', 'menu': '-async topic cmd arg arg ...'}, +\ ] + +let b:define = [ +\ {'word': '-append', 'menu': 'member ...'}, +\ {'word': '-clear', 'menu': ''}, +\ {'word': '-set', 'menu': 'member ...'}, +\ ] + +let b:dict = [ +\ {'word': 'append', 'menu': 'dictionaryVariable key string ...'}, +\ {'word': 'create', 'menu': 'key value ...'}, +\ {'word': 'exists', 'menu': 'dictionaryValue key key ...'}, +\ {'word': 'filter', 'menu': 'dictionaryValue value globPattern ...'}, +\ {'word': 'for', 'menu': '{keyVariable valueVariable} dictionaryValue body'}, +\ {'word': 'get', 'menu': 'dictionaryValue key ...'}, +\ {'word': 'incr', 'menu': 'dictionaryVariable key increment'}, +\ {'word': 'info', 'menu': 'dictionaryValue'}, +\ {'word': 'keys', 'menu': 'dictionaryValue globPattern'}, +\ {'word': 'lappend', 'menu': 'dictionaryVariable key value ...'}, +\ {'word': 'map', 'menu': '{keyVariable valueVariable} dictionaryValue body'}, +\ {'word': 'merge', 'menu': 'dictionaryValue ...'}, +\ {'word': 'remove', 'menu': 'dictionaryValue key ...'}, +\ {'word': 'replace', 'menu': 'dictionaryValue key value ...'}, +\ {'word': 'set', 'menu': 'dictionaryVariable key key ... value'}, +\ {'word': 'size', 'menu': 'dictionaryValue'}, +\ {'word': 'unset', 'menu': 'dictionaryVariable key key ...'}, +\ {'word': 'update', 'menu': 'dictionaryVariable key varName key varName ... body'}, +\ {'word': 'values', 'menu': 'dictionaryValue globPattern'}, +\ {'word': 'with', 'menu': 'dictionaryVariable key ... body'}, +\ ] + +let b:encoding = [ +\ {'word': 'convertfrom', 'menu': 'encoding data'}, +\ {'word': 'convertto', 'menu': 'encoding string'}, +\ {'word': 'dirs', 'menu': 'directoryList'}, +\ {'word': 'names', 'menu': ''}, +\ {'word': 'system', 'menu': 'encoding'}, +\ ] + +let b:exec = [ +\ {'word': '-ignorestderr', 'menu': ''}, +\ {'word': '-keepnewline', 'menu': ''}, +\ ] + +let b:fconfigure = [ +\ {'word': '-blocking', 'menu': 'boolean'}, +\ {'word': '-buffering', 'menu': 'newValue'}, +\ {'word': '-buffersize', 'menu': 'newSize'}, +\ {'word': '-encoding', 'menu': 'name'}, +\ {'word': '-eofchar', 'menu': '{inChar outChar}'}, +\ {'word': '-translation', 'menu': '{inMode outMode}'}, +\ ] + +let b:file = [ +\ {'word': 'atime', 'menu': 'name time'}, +\ {'word': 'attributes', 'menu': 'name option value option value...'}, +\ {'word': 'channels', 'menu': 'pattern'}, +\ {'word': 'copy', 'menu': '-force -- source source ... targetDir'}, +\ {'word': 'delete', 'menu': '-force -- pathname ... '}, +\ {'word': 'dirname', 'menu': 'name'}, +\ {'word': 'executable', 'menu': 'name'}, +\ {'word': 'exists', 'menu': 'name'}, +\ {'word': 'extension', 'menu': 'name'}, +\ {'word': 'isdirectory', 'menu': 'name'}, +\ {'word': 'isfile', 'menu': 'name'}, +\ {'word': 'join', 'menu': 'name name ...'}, +\ {'word': 'link', 'menu': '-linktype linkName target'}, +\ {'word': 'lstat', 'menu': 'name varName'}, +\ {'word': 'mkdir', 'menu': 'dir ...'}, +\ {'word': 'mtime', 'menu': 'name time'}, +\ {'word': 'nativename', 'menu': 'name'}, +\ {'word': 'normalize', 'menu': 'name'}, +\ {'word': 'owned', 'menu': 'name'}, +\ {'word': 'pathtype', 'menu': 'name'}, +\ {'word': 'readable', 'menu': 'name'}, +\ {'word': 'readlink', 'menu': 'name'}, +\ {'word': 'rename', 'menu': '-force -- source source ... targetDir'}, +\ {'word': 'rootname', 'menu': 'name'}, +\ {'word': 'separator', 'menu': 'name'}, +\ {'word': 'size', 'menu': 'name'}, +\ {'word': 'split', 'menu': 'name'}, +\ {'word': 'stat', 'menu': 'name varName'}, +\ {'word': 'system', 'menu': 'name'}, +\ {'word': 'tail', 'menu': 'name'}, +\ {'word': 'tempfile', 'menu': 'nameVar template'}, +\ {'word': 'type', 'menu': 'name'}, +\ {'word': 'volumes', 'menu': ''}, +\ {'word': 'writable', 'menu': 'name'}, +\ ] + +let b:glob = [ +\ {'word': '-directory', 'menu': 'directory'}, +\ {'word': '-join', 'menu': ''}, +\ {'word': '-nocomplain', 'menu': ''}, +\ {'word': '-path', 'menu': 'pathPrefix'}, +\ {'word': '-tails', 'menu': ''}, +\ {'word': '-types', 'menu': 'typeList'}, +\ ] + +let b:history = [ +\ {'word': 'add', 'menu': 'command exec'}, +\ {'word': 'change', 'menu': 'newValue event'}, +\ {'word': 'clear', 'menu': ''}, +\ {'word': 'event', 'menu': 'event'}, +\ {'word': 'info', 'menu': 'count'}, +\ {'word': 'keep', 'menu': 'count'}, +\ {'word': 'nextid', 'menu': ''}, +\ {'word': 'redo', 'menu': 'event'}, +\ ] + +let b:http = [ +\ {'word': 'config', 'menu': '-option value ...'}, +\ {'word': 'geturl', 'menu': 'url -option value ...'}, +\ {'word': 'formatQuery', 'menu': 'key value key value ...'}, +\ {'word': 'quoteString', 'menu': 'value'}, +\ {'word': 'reset', 'menu': 'token why'}, +\ {'word': 'wait', 'menu': 'token'}, +\ {'word': 'data', 'menu': 'token'}, +\ {'word': 'error', 'menu': 'token'}, +\ {'word': 'status', 'menu': 'token'}, +\ {'word': 'code', 'menu': 'token'}, +\ {'word': 'ncode', 'menu': 'token'}, +\ {'word': 'size', 'menu': 'token'}, +\ {'word': 'meta', 'menu': 'token'}, +\ {'word': 'cleanup', 'menu': 'token'}, +\ {'word': 'register', 'menu': 'proto port command'}, +\ {'word': 'registerError', 'menu': 'port message'}, +\ {'word': 'unregister', 'menu': 'proto'}, +\ ] + +let b:http_ns_config = [ +\ {'word': '-accept', 'menu': 'mimetypes'}, +\ {'word': '-pipeline', 'menu': 'boolean'}, +\ {'word': '-postfresh', 'menu': 'boolean'}, +\ {'word': '-proxyhost', 'menu': 'hostname'}, +\ {'word': '-proxyport', 'menu': 'number'}, +\ {'word': '-proxyfilter', 'menu': 'command'}, +\ {'word': '-repost', 'menu': 'boolean'}, +\ {'word': '-urlencoding', 'menu': 'encoding'}, +\ {'word': '-useragent', 'menu': 'string'}, +\ {'word': '-zip', 'menu': 'boolean'}, +\ ] + +let b:http_ns_geturl = [ +\ {'word': '-binary', 'menu': 'boolean'}, +\ {'word': '-blocksize', 'menu': 'size'}, +\ {'word': '-channel', 'menu': 'name'}, +\ {'word': '-command', 'menu': 'callback'}, +\ {'word': '-handler', 'menu': 'callback'}, +\ {'word': '-headers', 'menu': 'keyvaluelist'}, +\ {'word': '-keepalive', 'menu': 'boolean'}, +\ {'word': '-method', 'menu': 'type'}, +\ {'word': '-myaddr', 'menu': 'address'}, +\ {'word': '-progress', 'menu': 'callback'}, +\ {'word': '-protocol', 'menu': 'version'}, +\ {'word': '-query', 'menu': 'query'}, +\ {'word': '-queryblocksize', 'menu': 'size'}, +\ {'word': '-querychannel', 'menu': 'channelID'}, +\ {'word': '-queryprogress', 'menu': 'callback'}, +\ {'word': '-strict', 'menu': 'boolean'}, +\ {'word': '-timeout', 'menu': 'milliseconds'}, +\ {'word': '-type', 'menu': 'mime-type'}, +\ {'word': '-validate', 'menu': 'boolean'}, +\ ] + +let b:info = [ +\ {'word': 'args', 'menu': 'procname'}, +\ {'word': 'body', 'menu': 'procname'}, +\ {'word': 'class', 'menu': 'variables class'}, +\ {'word': 'cmdcount', 'menu': ''}, +\ {'word': 'commands', 'menu': 'pattern'}, +\ {'word': 'complete', 'menu': 'command'}, +\ {'word': 'coroutine', 'menu': ''}, +\ {'word': 'default', 'menu': 'procname arg varname'}, +\ {'word': 'errorstack', 'menu': 'interp'}, +\ {'word': 'exists', 'menu': 'varName'}, +\ {'word': 'frame', 'menu': 'number'}, +\ {'word': 'functions', 'menu': 'pattern'}, +\ {'word': 'globals', 'menu': 'pattern'}, +\ {'word': 'hostname', 'menu': ''}, +\ {'word': 'level', 'menu': 'number'}, +\ {'word': 'library', 'menu': ''}, +\ {'word': 'loaded', 'menu': 'interp'}, +\ {'word': 'locals', 'menu': 'pattern'}, +\ {'word': 'nameofexecutable', 'menu': ''}, +\ {'word': 'object', 'menu': 'vars object pattern'}, +\ {'word': 'patchlevel', 'menu': ''}, +\ {'word': 'procs', 'menu': 'pattern'}, +\ {'word': 'script', 'menu': 'filename'}, +\ {'word': 'sharedlibextension', 'menu': ''}, +\ {'word': 'tclversion', 'menu': ''}, +\ {'word': 'vars', 'menu': 'pattern'}, +\ ] + +let b:info_sp_class = [ +\ {'word': '-all', 'menu': ''}, +\ {'word': '-private', 'menu': ''}, +\ ] + +let b:info_sp_object = [ +\ {'word': '-all', 'menu': ''}, +\ {'word': '-private', 'menu': ''}, +\ ] + +let b:interp = [ +\ {'word': 'bgerror', 'menu': 'path cmdPrefix'}, +\ {'word': 'exists', 'menu': 'path'}, +\ {'word': 'expose', 'menu': 'path hiddenName exposedCmdName'}, +\ {'word': 'issafe', 'menu': 'path'}, +\ {'word': 'marktrusted', 'menu': 'path'}, +\ ] + +let b:interp_sp_bgerror = [ +\ {'word': '-unwind', 'menu': '-- path result'}, +\ {'word': '-safe', 'menu': '-- path'}, +\ {'word': '-frame', 'menu': 'bool'}, +\ ] + +let b:interp_sp_marktrusted = [ +\ {'word': '-command', 'menu': ''}, +\ {'word': '-granularity', 'menu': ''}, +\ {'word': '-milliseconds', 'menu': ''}, +\ {'word': '-seconds', 'menu': ''}, +\ {'word': '-value', 'menu': ''}, +\ ] + +let b:lsearch = [ +\ {'word': '-exact', 'menu': ''}, +\ {'word': '-glob', 'menu': ''}, +\ {'word': '-regexp', 'menu': ''}, +\ {'word': '-sorted', 'menu': ''}, +\ {'word': '-all', 'menu': ''}, +\ {'word': '-inline', 'menu': ''}, +\ {'word': '-not', 'menu': ''}, +\ {'word': '-start', 'menu': 'index'}, +\ {'word': '-ascii', 'menu': ''}, +\ {'word': '-dictionary', 'menu': ''}, +\ {'word': '-integer', 'menu': ''}, +\ {'word': '-nocase', 'menu': ''}, +\ {'word': '-real', 'menu': ''}, +\ {'word': '-decreasing', 'menu': ''}, +\ {'word': '-increasing', 'menu': ''}, +\ {'word': '-bisect', 'menu': ''}, +\ {'word': '-index', 'menu': 'indexList'}, +\ {'word': '-subindices', 'menu': ''}, +\ ] + +let b:lsort = [ +\ {'word': '-ascii', 'menu': ''}, +\ {'word': '-dictionary', 'menu': ''}, +\ {'word': '-integer', 'menu': ''}, +\ {'word': '-real', 'menu': ''}, +\ {'word': '-command', 'menu': 'command'}, +\ {'word': '-increasing', 'menu': ''}, +\ {'word': '-decreasing', 'menu': ''}, +\ {'word': '-indices', 'menu': ''}, +\ {'word': '-index', 'menu': 'indexList'}, +\ {'word': '-stride', 'menu': 'strideLength'}, +\ {'word': '-nocase', 'menu': ''}, +\ {'word': '-unique', 'menu': ''}, +\ ] + +let b:memory = [ +\ {'word': 'active', 'menu': 'file'}, +\ {'word': 'break_on_malloc', 'menu': 'count'}, +\ {'word': 'info', 'menu': ''}, +\ {'word': 'init', 'menu': '[on|off]'}, +\ {'word': 'objs', 'menu': 'file'}, +\ {'word': 'onexit', 'menu': 'file'}, +\ {'word': 'tag', 'menu': 'string'}, +\ {'word': 'trace', 'menu': '[on|off]'}, +\ {'word': 'trace_on_at_malloc', 'menu': 'count'}, +\ {'word': 'validate', 'menu': '[on|off]'}, +\ ] + +let b:msgcat = [ +\ {'word': 'mc', 'menu': 'src-string arg arg ...'}, +\ {'word': 'mcmax', 'menu': 'src-string src-string ...'}, +\ {'word': 'mcexists', 'menu': '-exactnamespace -exactlocale src-string'}, +\ {'word': 'mclocale', 'menu': 'newLocale'}, +\ {'word': 'mcpreferences', 'menu': ''}, +\ {'word': 'mcload', 'menu': 'dirname'}, +\ {'word': 'mcset', 'menu': 'locale src-string translate-string'}, +\ {'word': 'mcmset', 'menu': 'locale src-trans-list'}, +\ {'word': 'mcflset', 'menu': 'src-string translate-string'}, +\ {'word': 'mcflmset', 'menu': 'src-trans-list'}, +\ {'word': 'mcunknown', 'menu': 'locale src-string arg arg ...'}, +\ {'word': 'mcforgetpackage', 'menu': ''}, +\ {'word': 'mcpackagelocale', 'menu': 'subcommand locale'}, +\ {'word': 'mcpackageconfig', 'menu': 'subcommand option value'}, +\ {'word': 'mcloadedlocales', 'menu': 'subcommand locale'}, +\ ] + +let b:namespace = [ +\ {'word': 'children', 'menu': 'namespace pattern'}, +\ {'word': 'code', 'menu': 'script'}, +\ {'word': 'current', 'menu': ''}, +\ {'word': 'delete', 'menu': 'namespace namespace ...'}, +\ {'word': 'ensemble', 'menu': 'exists command'}, +\ {'word': 'eval', 'menu': 'namespace arg arg ...'}, +\ {'word': 'exists', 'menu': 'namespace'}, +\ {'word': 'export', 'menu': '-clear pattern pattern ...'}, +\ {'word': 'forget', 'menu': 'pattern pattern ...'}, +\ {'word': 'import', 'menu': '-force pattern pattern ...'}, +\ {'word': 'inscope', 'menu': 'namespace script arg ...'}, +\ {'word': 'origin', 'menu': 'command'}, +\ {'word': 'parent', 'menu': 'namespace'}, +\ {'word': 'path', 'menu': 'namespaceList'}, +\ {'word': 'qualifiers', 'menu': 'string'}, +\ {'word': 'tail', 'menu': 'string'}, +\ {'word': 'upvar', 'menu': 'namespace otherVar myVar ...'}, +\ {'word': 'unknown', 'menu': 'script'}, +\ {'word': 'which', 'menu': '-command -variable name'}, +\ ] + +let b:namespace_sp_ensemble = [ +\ {'word': '-map', 'menu': ''}, +\ {'word': '-parameters', 'menu': ''}, +\ {'word': '-prefixes', 'menu': ''}, +\ {'word': '-subcommands', 'menu': ''}, +\ {'word': '-unknown', 'menu': ''}, +\ {'word': '-command', 'menu': ''}, +\ {'word': '-namespace', 'menu': ''}, +\ ] + +let b:open = [ +\ {'word': '-mode', 'menu': 'baud,parity,data,stop'}, +\ {'word': '-handshake', 'menu': 'type'}, +\ {'word': '-queue', 'menu': ''}, +\ {'word': '-timeout', 'menu': 'msec'}, +\ {'word': '-ttycontrol', 'menu': '{signal boolean signal boolean ...}'}, +\ {'word': '-ttystatus', 'menu': ''}, +\ {'word': '-xchar', 'menu': '{xonChar xoffChar}'}, +\ {'word': '-pollinterval', 'menu': 'msec'}, +\ {'word': '-sysbuffer', 'menu': '{inSize outSize}'}, +\ {'word': '-lasterror', 'menu': ''}, +\ ] + +let b:package = [ +\ {'word': 'forget', 'menu': 'package package ...'}, +\ {'word': 'ifneeded', 'menu': 'package version script'}, +\ {'word': 'names', 'menu': ''}, +\ {'word': 'present', 'menu': '-exact package version'}, +\ {'word': 'provide', 'menu': 'package version'}, +\ {'word': 'require', 'menu': '-exact package version'}, +\ {'word': 'unknown', 'menu': 'command'}, +\ {'word': 'vcompare', 'menu': 'version1 version2'}, +\ {'word': 'versions', 'menu': 'package'}, +\ {'word': 'vsatisfies', 'menu': 'version requirement...'}, +\ {'word': 'prefer', 'menu': 'latest|stable'}, +\ ] + +let b:packagens = [ +\ {'word': '-name', 'menu': 'packageName'}, +\ {'word': '-version', 'menu': 'packageVersion'}, +\ {'word': '-load', 'menu': 'filespec'}, +\ {'word': '-source', 'menu': 'filespec'}, +\ ] + +let b:pkgMkIndex = [ +\ {'word': '-direct', 'menu': ''}, +\ {'word': '-lazy', 'menu': ''}, +\ {'word': '-load', 'menu': 'pkgPat'}, +\ {'word': '-verbose', 'menu': ''}, +\ ] + +let b:platform = [ +\ {'word': 'generic', 'menu': ''}, +\ {'word': 'identify', 'menu': ''}, +\ {'word': 'patterns', 'menu': 'identifier'}, +\ ] + +let b:prefix = [ +\ {'word': '-exact', 'menu': ''}, +\ {'word': '-message', 'menu': 'string'}, +\ {'word': '-error', 'menu': 'options'}, +\ ] + +let b:regexp = [ +\ {'word': '-about', 'menu': ''}, +\ {'word': '-expanded', 'menu': ''}, +\ {'word': '-indices', 'menu': ''}, +\ {'word': '-line', 'menu': ''}, +\ {'word': '-linestop', 'menu': ''}, +\ {'word': '-lineanchor', 'menu': ''}, +\ {'word': '-nocase', 'menu': ''}, +\ {'word': '-all', 'menu': ''}, +\ {'word': '-inline', 'menu': ''}, +\ {'word': '-start', 'menu': 'index'}, +\ ] + +let b:registry = [ +\ {'word': 'broadcast', 'menu': 'keyName -timeout milliseconds'}, +\ {'word': 'delete', 'menu': 'keyName valueName'}, +\ {'word': 'get', 'menu': 'keyName valueName'}, +\ {'word': 'keys', 'menu': 'keyName pattern'}, +\ {'word': 'set', 'menu': 'keyName valueName data type'}, +\ {'word': 'type', 'menu': 'keyName valueName'}, +\ {'word': 'values', 'menu': 'keyName pattern'}, +\ ] + +let b:regsub = [ +\ {'word': '-all', 'menu': ''}, +\ {'word': '-expanded', 'menu': ''}, +\ {'word': '-line', 'menu': ''}, +\ {'word': '-linestop', 'menu': ''}, +\ {'word': '-lineanchor', 'menu': ''}, +\ {'word': '-nocase', 'menu': ''}, +\ {'word': '-start', 'menu': 'index'}, +\ ] + +let b:return = [ +\ {'word': '-errorcode', 'menu': 'list'}, +\ {'word': '-errorinfo', 'menu': 'info'}, +\ {'word': '-errorstack', 'menu': 'list'}, +\ {'word': '-level', 'menu': 'level'}, +\ {'word': '-options', 'menu': 'options'}, +\ ] + +let b:safe = [ +\ {'word': 'interpCreate', 'menu': 'slave options...'}, +\ {'word': 'interpInit', 'menu': 'slave options...'}, +\ {'word': 'interpConfigure', 'menu': 'slave options...'}, +\ {'word': 'interpDelete', 'menu': 'slave'}, +\ {'word': 'interpFindInAccessPath', 'menu': 'slave directory'}, +\ {'word': 'interpAddToAccessPath', 'menu': 'slave directory'}, +\ {'word': 'setLogCmd', 'menu': 'cmd arg...'}, +\ ] + +let b:safe_ns_setLogCmd = [ +\ {'word': '-accessPath', 'menu': 'directoryList'}, +\ {'word': '-statics', 'menu': 'boolean'}, +\ {'word': '-noStatics', 'menu': ''}, +\ {'word': '-nested', 'menu': 'boolean'}, +\ {'word': '-nestedLoadOk', 'menu': ''}, +\ {'word': '-deleteHook', 'menu': 'script'}, +\ ] + +let b:self = [ +\ {'word': 'call', 'menu': ''}, +\ {'word': 'caller', 'menu': ''}, +\ {'word': 'class', 'menu': ''}, +\ {'word': 'filter', 'menu': ''}, +\ {'word': 'method', 'menu': ''}, +\ {'word': 'namespace', 'menu': ''}, +\ {'word': 'next', 'menu': ''}, +\ {'word': 'object', 'menu': ''}, +\ {'word': 'target', 'menu': ''}, +\ ] + +let b:socket = [ +\ {'word': '-myaddr', 'menu': 'addr'}, +\ {'word': '-myport', 'menu': 'port'}, +\ {'word': '-async', 'menu': ''}, +\ {'word': '-error', 'menu': ''}, +\ {'word': '-sockname', 'menu': ''}, +\ {'word': '-peername', 'menu': ''}, +\ {'word': '-connecting', 'menu': ''}, +\ ] + +let b:string = [ +\ {'word': 'cat', 'menu': 'string1 string2...'}, +\ {'word': 'compare', 'menu': '-nocase -length length string1 string2'}, +\ {'word': 'equal', 'menu': '-nocase -length length string1 string2'}, +\ {'word': 'first', 'menu': 'needleString haystackString startIndex'}, +\ {'word': 'index', 'menu': 'string charIndex'}, +\ {'word': 'is', 'menu': 'class -strict -failindex varname string'}, +\ {'word': 'last', 'menu': 'needleString haystackString lastIndex'}, +\ {'word': 'length', 'menu': 'string'}, +\ {'word': 'map', 'menu': '-nocase mapping string'}, +\ {'word': 'match', 'menu': '-nocase pattern string'}, +\ {'word': 'range', 'menu': 'string first last'}, +\ {'word': 'repeat', 'menu': 'string count'}, +\ {'word': 'replace', 'menu': 'string first last newstring'}, +\ {'word': 'reverse', 'menu': 'string'}, +\ {'word': 'tolower', 'menu': 'string first last'}, +\ {'word': 'totitle', 'menu': 'string first last'}, +\ {'word': 'toupper', 'menu': 'string first last'}, +\ {'word': 'trim', 'menu': 'string chars'}, +\ {'word': 'trimleft', 'menu': 'string chars'}, +\ {'word': 'trimright', 'menu': 'string chars'}, +\ {'word': 'bytelength', 'menu': 'string'}, +\ {'word': 'wordend', 'menu': 'string charIndex'}, +\ {'word': 'wordstart', 'menu': 'string charIndex'}, +\ ] + +let b:switch = [ +\ {'word': '-exact', 'menu': ''}, +\ {'word': '-glob', 'menu': ''}, +\ {'word': '-regexp', 'menu': ''}, +\ {'word': '-nocase', 'menu': ''}, +\ {'word': '-matchvar', 'menu': 'varName'}, +\ {'word': '-indexvar', 'menu': 'varName'}, +\ ] + +let b:tcltest = [ +\ {'word': '-constraints', 'menu': 'list'}, +\ {'word': '-setup', 'menu': 'script'}, +\ {'word': '-body', 'menu': 'script'}, +\ {'word': '-cleanup', 'menu': 'script'}, +\ {'word': '-match', 'menu': 'patternList'}, +\ {'word': '-result', 'menu': 'expectedValue'}, +\ {'word': '-output', 'menu': 'expectedValue'}, +\ {'word': '-errorOutput', 'menu': 'expectedValue'}, +\ {'word': '-returnCodes', 'menu': 'expectedCodeList'}, +\ {'word': '-errorCode', 'menu': 'expectedErrorCode'}, +\ {'word': '-singleproc', 'menu': 'boolean'}, +\ {'word': '-debug', 'menu': 'level'}, +\ {'word': '-verbose', 'menu': 'level'}, +\ {'word': '-preservecore', 'menu': 'level'}, +\ {'word': '-limitconstraints', 'menu': 'boolean'}, +\ {'word': '-tmpdir', 'menu': 'directory'}, +\ {'word': '-testdir', 'menu': 'directory'}, +\ {'word': '-file', 'menu': 'patternList'}, +\ {'word': '-notfile', 'menu': 'patternList'}, +\ {'word': '-relateddir', 'menu': 'patternList'}, +\ {'word': '-asidefromdir', 'menu': 'patternList'}, +\ {'word': '-skip', 'menu': 'patternList'}, +\ {'word': '-load', 'menu': 'script'}, +\ {'word': '-loadfile', 'menu': 'filename'}, +\ {'word': '-outfile', 'menu': 'filename'}, +\ {'word': '-errfile', 'menu': 'filename'}, +\ {'word': 'test', 'menu': 'name description optionList'}, +\ {'word': 'loadTestedCommands', 'menu': ''}, +\ {'word': 'makeDirectory', 'menu': 'name directory'}, +\ {'word': 'removeDirectory', 'menu': 'name directory'}, +\ {'word': 'makeFile', 'menu': 'contents name directory'}, +\ {'word': 'removeFile', 'menu': 'name directory'}, +\ {'word': 'viewFile', 'menu': 'name directory'}, +\ {'word': 'cleanupTests', 'menu': 'runningMultipleTests'}, +\ {'word': 'runAllTests', 'menu': ''}, +\ {'word': 'configure', 'menu': '-option value -option value ...'}, +\ {'word': 'customMatch', 'menu': 'mode command'}, +\ {'word': 'testConstraint', 'menu': 'constraint value'}, +\ {'word': 'outputChannel', 'menu': 'channelID'}, +\ {'word': 'errorChannel', 'menu': 'channelID'}, +\ {'word': 'interpreter', 'menu': 'interp'}, +\ {'word': 'debug', 'menu': 'level'}, +\ {'word': 'errorFile', 'menu': 'filename'}, +\ {'word': 'limitConstraints', 'menu': 'boolean'}, +\ {'word': 'loadFile', 'menu': 'filename'}, +\ {'word': 'loadScript', 'menu': 'script'}, +\ {'word': 'match', 'menu': 'patternList'}, +\ {'word': 'matchDirectories', 'menu': 'patternList'}, +\ {'word': 'matchFiles', 'menu': 'patternList'}, +\ {'word': 'outputFile', 'menu': 'filename'}, +\ {'word': 'preserveCore', 'menu': 'level'}, +\ {'word': 'singleProcess', 'menu': 'boolean'}, +\ {'word': 'skip', 'menu': 'patternList'}, +\ {'word': 'skipDirectories', 'menu': 'patternList'}, +\ {'word': 'skipFiles', 'menu': 'patternList'}, +\ {'word': 'temporaryDirectory', 'menu': 'directory'}, +\ {'word': 'testsDirectory', 'menu': 'directory'}, +\ {'word': 'verbose', 'menu': 'level'}, +\ {'word': 'bytestring', 'menu': 'string'}, +\ {'word': 'normalizeMsg', 'menu': 'msg'}, +\ {'word': 'normalizePath', 'menu': 'pathVar'}, +\ {'word': 'workingDirectory', 'menu': 'dir'}, +\ ] + +let b:timerate = [ +\ {'word': '-calibrate', 'menu': ''}, +\ {'word': '-overhead', 'menu': 'double'}, +\ {'word': '-direct', 'menu': ''}, +\ ] + +let b:trace = [ +\ {'word': 'add', 'menu': 'variable name ops commandPrefix'}, +\ {'word': 'remove', 'menu': 'variable name opList commandPrefix'}, +\ {'word': 'info', 'menu': 'variable name'}, +\ {'word': 'variable', 'menu': 'name ops command'}, +\ {'word': 'vdelete', 'menu': 'name ops command'}, +\ {'word': 'vinfo', 'menu': 'name'}, +\ ] + +let b:unload = [ +\ {'word': '-nocomplain', 'menu': ''}, +\ {'word': '-keeplibrary', 'menu': ''}, +\ ] + +let b:zlib = [ +\ {'word': 'compress', 'menu': 'string level'}, +\ {'word': 'decompress', 'menu': 'string bufferSize'}, +\ {'word': 'deflate', 'menu': 'string level'}, +\ {'word': 'gunzip', 'menu': 'string -headerVar varName'}, +\ {'word': 'gzip', 'menu': 'string -level level -header dict'}, +\ {'word': 'inflate', 'menu': 'string bufferSize'}, +\ {'word': 'push', 'menu': 'mode channel options ...'}, +\ {'word': 'stream', 'menu': 'inflate -dictionary bindata'}, +\ {'word': 'adler32', 'menu': 'string initValue'}, +\ {'word': 'crc32', 'menu': 'string initValue'}, +\ ] + +let b:zlib_sp_push = [ +\ {'word': '-dictionary', 'menu': 'binData'}, +\ {'word': '-header', 'menu': 'dictionary'}, +\ {'word': '-level', 'menu': 'compressionLevel'}, +\ {'word': '-limit', 'menu': 'readaheadLimit'}, +\ {'word': '-checksum', 'menu': 'checksum'}, +\ {'word': '-flush', 'menu': 'type'}, +\ ] + +let b:zlib_sp_crc32 = [ +\ {'word': '-dictionary', 'menu': 'binData'}, +\ {'word': '-finalize', 'menu': ''}, +\ {'word': '-flush', 'menu': ''}, +\ {'word': '-fullflush', 'menu': ''}, +\ ] + +let b:thread = [ +\ {'word': 'create', 'menu': '-joinable -preserved script'}, +\ {'word': 'preserve', 'menu': 'id'}, +\ {'word': 'release', 'menu': '-wait id'}, +\ {'word': 'id', 'menu': ''}, +\ {'word': 'errorproc', 'menu': 'procname'}, +\ {'word': 'cancel', 'menu': '-unwind id result'}, +\ {'word': 'unwind', 'menu': ''}, +\ {'word': 'exit', 'menu': 'status'}, +\ {'word': 'names', 'menu': ''}, +\ {'word': 'exists', 'menu': 'id'}, +\ {'word': 'send', 'menu': '-async -head id script varname'}, +\ {'word': 'broadcast', 'menu': 'script'}, +\ {'word': 'wait', 'menu': ''}, +\ {'word': 'eval', 'menu': '-lock mutex arg arg . . .'}, +\ {'word': 'join', 'menu': 'id'}, +\ {'word': 'configure', 'menu': 'id option value . . .'}, +\ {'word': 'transfer', 'menu': 'id channel'}, +\ {'word': 'detach', 'menu': 'channel'}, +\ {'word': 'attach', 'menu': 'channel'}, +\ {'word': 'mutex', 'menu': 'unlock mutex'}, +\ {'word': 'rwmutex', 'menu': 'unlock mutex'}, +\ {'word': 'cond', 'menu': 'wait cond mutex ms'}, +\ ] + +let b:tpool = [ +\ {'word': 'create', 'menu': 'options'}, +\ {'word': 'names', 'menu': ''}, +\ {'word': 'post', 'menu': '-detached -nowait tpool script'}, +\ {'word': 'wait', 'menu': 'tpool joblist varname'}, +\ {'word': 'cancel', 'menu': 'tpool joblist varname'}, +\ {'word': 'get', 'menu': 'tpool job'}, +\ {'word': 'preserve', 'menu': 'tpool'}, +\ {'word': 'release', 'menu': 'tpool'}, +\ {'word': 'suspend', 'menu': 'tpool'}, +\ {'word': 'resume', 'menu': 'tpool'}, +\ ] + +let b:tpool_ns_create = [ +\ {'word': '-minworkers', 'menu': 'number'}, +\ {'word': '-maxworkers', 'menu': 'number'}, +\ {'word': '-idletime', 'menu': 'seconds'}, +\ {'word': '-initcmd', 'menu': 'script'}, +\ {'word': '-exitcmd', 'menu': 'script'}, +\ ] + +let b:tsv = [ +\ {'word': 'names', 'menu': 'pattern'}, +\ {'word': 'object', 'menu': 'varname element'}, +\ {'word': 'set', 'menu': 'varname element value'}, +\ {'word': 'get', 'menu': 'varname element namedvar'}, +\ {'word': 'unset', 'menu': 'varname element'}, +\ {'word': 'exists', 'menu': 'varname element'}, +\ {'word': 'pop', 'menu': 'varname element'}, +\ {'word': 'move', 'menu': 'varname oldname newname'}, +\ {'word': 'incr', 'menu': 'varname element count'}, +\ {'word': 'append', 'menu': 'varname element value value . . .'}, +\ {'word': 'lock', 'menu': 'varname arg arg . . .'}, +\ {'word': 'handlers', 'menu': ''}, +\ {'word': 'lappend', 'menu': 'varname element value value . . .'}, +\ {'word': 'linsert', 'menu': 'varname element index value value . . .'}, +\ {'word': 'lreplace', 'menu': 'varname element first last value . . .'}, +\ {'word': 'llength', 'menu': 'varname element'}, +\ {'word': 'lindex', 'menu': 'varname element index'}, +\ {'word': 'lrange', 'menu': 'varname element from to'}, +\ {'word': 'lsearch', 'menu': 'varname element options pattern'}, +\ {'word': 'lset', 'menu': 'varname element index index . . . value'}, +\ {'word': 'lpop', 'menu': 'varname element index'}, +\ {'word': 'lpush', 'menu': 'varname element index'}, +\ {'word': 'array', 'menu': 'isbound varname'}, +\ {'word': 'keyldel', 'menu': 'varname keylist key'}, +\ {'word': 'keylget', 'menu': 'varname keylist key retvar'}, +\ {'word': 'keylkeys', 'menu': 'varname keylist key'}, +\ {'word': 'keylset', 'menu': 'varname keylist key value key value . .'}, +\ ] + +let b:ttrace = [ +\ {'word': 'eval', 'menu': 'arg arg . . .'}, +\ {'word': 'enable', 'menu': ''}, +\ {'word': 'disable', 'menu': ''}, +\ {'word': 'cleanup', 'menu': ''}, +\ {'word': 'update', 'menu': 'epoch'}, +\ {'word': 'getscript', 'menu': ''}, +\ {'word': 'atenable', 'menu': 'cmd arglist body'}, +\ {'word': 'atdisable', 'menu': 'cmd arglist body'}, +\ {'word': 'addtrace', 'menu': 'cmd arglist body'}, +\ {'word': 'addscript', 'menu': 'name body'}, +\ {'word': 'addresolver', 'menu': 'cmd arglist body'}, +\ {'word': 'addcleanup', 'menu': 'body'}, +\ {'word': 'addentry', 'menu': 'cmd var val'}, +\ {'word': 'getentry', 'menu': 'cmd var'}, +\ {'word': 'getentries', 'menu': 'cmd pattern'}, +\ {'word': 'delentry', 'menu': 'cmd'}, +\ {'word': 'preload', 'menu': 'cmd'}, +\ ] + +let b:bitmap = [ +\ {'word': '-background', 'menu': 'color'}, +\ {'word': '-data', 'menu': 'string'}, +\ {'word': '-file', 'menu': 'name'}, +\ {'word': '-foreground', 'menu': 'color'}, +\ {'word': '-maskdata', 'menu': 'string'}, +\ {'word': '-maskfile', 'menu': 'name'}, +\ ] + +let b:busy = [ +\ {'word': '-cursor', 'menu': 'cursorName'}, +\ ] + +let b:button = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'activeforeground', 'menu': ''}, +\ {'word': 'anchor', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'bitmap', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'disabledforeground', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'repeatdelay', 'menu': ''}, +\ {'word': 'repeatinterval', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'wraplength', 'menu': ''}, +\ ] + +let b:canvas = [ +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'insertbackground', 'menu': ''}, +\ {'word': 'insertborderwidth', 'menu': ''}, +\ {'word': 'insertofftime', 'menu': ''}, +\ {'word': 'insertontime', 'menu': ''}, +\ {'word': 'insertwidth', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'selectbackground', 'menu': ''}, +\ {'word': 'selectborderwidth', 'menu': ''}, +\ {'word': 'selectforeground', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ {'word': 'yscrollcommand', 'menu': ''}, +\ {'word': '-channel', 'menu': 'channelName'}, +\ {'word': '-colormap', 'menu': 'varName'}, +\ {'word': '-colormode', 'menu': 'mode'}, +\ {'word': '-file', 'menu': 'fileName'}, +\ {'word': '-fontmap', 'menu': 'varName'}, +\ {'word': '-height', 'menu': 'pixels'}, +\ {'word': '-pageanchor', 'menu': 'anchor'}, +\ {'word': '-pageheight', 'menu': 'size'}, +\ {'word': '-pagewidth', 'menu': 'size'}, +\ {'word': '-pagex', 'menu': 'position'}, +\ {'word': '-pagey', 'menu': 'position'}, +\ {'word': '-rotate', 'menu': 'boolean'}, +\ {'word': '-width', 'menu': 'pixels'}, +\ {'word': '-x', 'menu': 'position'}, +\ {'word': '-y', 'menu': 'position'}, +\ {'word': '-anchor', 'menu': 'anchorPos'}, +\ {'word': '-dash', 'menu': 'pattern'}, +\ {'word': '-activedash', 'menu': 'pattern'}, +\ {'word': '-disableddash', 'menu': 'pattern'}, +\ {'word': '-dashoffset', 'menu': 'offset'}, +\ {'word': '-fill', 'menu': 'color'}, +\ {'word': '-activefill', 'menu': 'color'}, +\ {'word': '-disabledfill', 'menu': 'color'}, +\ {'word': '-outline', 'menu': 'color'}, +\ {'word': '-activeoutline', 'menu': 'color'}, +\ {'word': '-disabledoutline', 'menu': 'color'}, +\ {'word': '-offset', 'menu': 'offset'}, +\ {'word': '-outlinestipple', 'menu': 'bitmap'}, +\ {'word': '-activeoutlinestipple', 'menu': 'bitmap'}, +\ {'word': '-disabledoutlinestipple', 'menu': 'bitmap'}, +\ {'word': '-outlineoffset', 'menu': 'offset'}, +\ {'word': '-stipple', 'menu': 'bitmap'}, +\ {'word': '-activestipple', 'menu': 'bitmap'}, +\ {'word': '-disabledstipple', 'menu': 'bitmap'}, +\ {'word': '-state', 'menu': 'state'}, +\ {'word': '-tags', 'menu': 'tagList'}, +\ {'word': '-activewidth', 'menu': 'outlineWidth'}, +\ {'word': '-disabledwidth', 'menu': 'outlineWidth'}, +\ {'word': '-extent', 'menu': 'degrees'}, +\ {'word': '-start', 'menu': 'degrees'}, +\ {'word': '-style', 'menu': 'type'}, +\ {'word': '-background', 'menu': 'color'}, +\ {'word': '-activebackground', 'menu': 'color'}, +\ {'word': '-disabledbackground', 'menu': 'color'}, +\ {'word': '-bitmap', 'menu': 'bitmap'}, +\ {'word': '-activebitmap', 'menu': 'bitmap'}, +\ {'word': '-disabledbitmap', 'menu': 'bitmap'}, +\ {'word': '-foreground', 'menu': 'color'}, +\ {'word': '-activeforeground', 'menu': 'color'}, +\ {'word': '-disabledforeground', 'menu': 'color'}, +\ {'word': '-image', 'menu': 'name'}, +\ {'word': '-activeimage', 'menu': 'name'}, +\ {'word': '-disabledimage', 'menu': 'name'}, +\ {'word': '-arrow', 'menu': 'where'}, +\ {'word': '-arrowshape', 'menu': 'shape'}, +\ {'word': '-capstyle', 'menu': 'style'}, +\ {'word': '-joinstyle', 'menu': 'style'}, +\ {'word': '-smooth', 'menu': 'boolean'}, +\ {'word': '-splinesteps', 'menu': 'number'}, +\ {'word': '-angle', 'menu': 'rotationDegrees'}, +\ {'word': '-font', 'menu': 'fontName'}, +\ {'word': '-justify', 'menu': 'how'}, +\ {'word': '-text', 'menu': 'string'}, +\ {'word': '-underline', 'menu': ''}, +\ {'word': '-window', 'menu': 'pathName'}, +\ ] + +let b:checkbutton = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'activeforeground', 'menu': ''}, +\ {'word': 'anchor', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'bitmap', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'disabledforeground', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'wraplength', 'menu': ''}, +\ ] + +let b:chooseDirectory = [ +\ {'word': '-command', 'menu': 'string'}, +\ {'word': '-initialdir', 'menu': 'dirname'}, +\ {'word': '-message', 'menu': 'string'}, +\ {'word': '-mustexist', 'menu': 'boolean'}, +\ {'word': '-parent', 'menu': 'window'}, +\ {'word': '-title', 'menu': 'titleString'}, +\ ] + +let b:console = [ +\ {'word': 'eval', 'menu': 'script'}, +\ {'word': 'hide', 'menu': ''}, +\ {'word': 'show', 'menu': ''}, +\ {'word': 'title', 'menu': 'string'}, +\ ] + +let b:entry = [ +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'exportselection', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'insertbackground', 'menu': ''}, +\ {'word': 'insertborderwidth', 'menu': ''}, +\ {'word': 'insertofftime', 'menu': ''}, +\ {'word': 'insertontime', 'menu': ''}, +\ {'word': 'insertwidth', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'selectbackground', 'menu': ''}, +\ {'word': 'selectborderwidth', 'menu': ''}, +\ {'word': 'selectforeground', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ ] + +let b:event = [ +\ {'word': 'add', 'menu': '<<virtual>> sequence sequence ...'}, +\ {'word': 'delete', 'menu': '<<virtual>> sequence sequence ...'}, +\ {'word': 'generate', 'menu': 'window event option value option value ...'}, +\ {'word': 'info', 'menu': '<<virtual>>'}, +\ ] + +let b:event_sp_info = [ +\ {'word': '-above', 'menu': 'window'}, +\ {'word': '-borderwidth', 'menu': 'size'}, +\ {'word': '-button', 'menu': 'number'}, +\ {'word': '-count', 'menu': 'number'}, +\ {'word': '-data', 'menu': 'string'}, +\ {'word': '-delta', 'menu': 'number'}, +\ {'word': '-detail', 'menu': 'detail'}, +\ {'word': '-focus', 'menu': 'boolean'}, +\ {'word': '-height', 'menu': 'size'}, +\ {'word': '-keycode', 'menu': 'number'}, +\ {'word': '-keysym', 'menu': 'name'}, +\ {'word': '-mode', 'menu': 'notify'}, +\ {'word': '-override', 'menu': 'boolean'}, +\ {'word': '-place', 'menu': 'where'}, +\ {'word': '-root', 'menu': 'window'}, +\ {'word': '-rootx', 'menu': 'coord'}, +\ {'word': '-rooty', 'menu': 'coord'}, +\ {'word': '-sendevent', 'menu': 'boolean'}, +\ {'word': '-serial', 'menu': 'number'}, +\ {'word': '-state', 'menu': 'state'}, +\ {'word': '-subwindow', 'menu': 'window'}, +\ {'word': '-time', 'menu': 'integer'}, +\ {'word': '-warp', 'menu': 'boolean'}, +\ {'word': '-width', 'menu': 'size'}, +\ {'word': '-when', 'menu': 'when'}, +\ {'word': '-x', 'menu': 'coord'}, +\ {'word': '-y', 'menu': 'coord'}, +\ ] + +let b:font = [ +\ {'word': 'actual', 'menu': 'font -displayof window option -- char'}, +\ {'word': 'configure', 'menu': 'fontname option value option value ...'}, +\ {'word': 'create', 'menu': 'fontname option value ...'}, +\ {'word': 'delete', 'menu': 'fontname fontname ...'}, +\ {'word': 'families', 'menu': '-displayof window'}, +\ {'word': 'measure', 'menu': 'font -displayof window text'}, +\ {'word': 'metrics', 'menu': 'font -displayof window option'}, +\ {'word': 'names', 'menu': ''}, +\ ] + +let b:font_sp_names = [ +\ {'word': '-ascent', 'menu': ''}, +\ {'word': '-descent', 'menu': ''}, +\ {'word': '-linespace', 'menu': ''}, +\ {'word': '-fixed', 'menu': ''}, +\ {'word': '-family', 'menu': 'name'}, +\ {'word': '-size', 'menu': 'size'}, +\ {'word': '-weight', 'menu': 'weight'}, +\ {'word': '-slant', 'menu': 'slant'}, +\ {'word': '-underline', 'menu': 'boolean'}, +\ {'word': '-overstrike', 'menu': 'boolean'}, +\ ] + +let b:fontchooser = [ +\ {'word': '-parent', 'menu': ''}, +\ {'word': '-title', 'menu': ''}, +\ {'word': '-font', 'menu': ''}, +\ {'word': '-command', 'menu': ''}, +\ {'word': '-visible', 'menu': ''}, +\ ] + +let b:frame = [ +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:getOpenFile = [ +\ {'word': '-command', 'menu': 'string'}, +\ {'word': '-confirmoverwrite', 'menu': 'boolean'}, +\ {'word': '-defaultextension', 'menu': 'extension'}, +\ {'word': '-filetypes', 'menu': 'filePatternList'}, +\ {'word': '-initialdir', 'menu': 'directory'}, +\ {'word': '-initialfile', 'menu': 'filename'}, +\ {'word': '-message', 'menu': 'string'}, +\ {'word': '-multiple', 'menu': 'boolean'}, +\ {'word': '-parent', 'menu': 'window'}, +\ {'word': '-title', 'menu': 'titleString'}, +\ {'word': '-typevariable', 'menu': 'variableName'}, +\ ] + +let b:grab = [ +\ {'word': '-global', 'menu': 'window'}, +\ {'word': 'current', 'menu': 'window'}, +\ {'word': 'release', 'menu': 'window'}, +\ {'word': 'set', 'menu': '-global window'}, +\ {'word': 'status', 'menu': 'window'}, +\ ] + +let b:grid = [ +\ {'word': 'anchor', 'menu': 'master anchor'}, +\ {'word': 'bbox', 'menu': 'master column row column2 row2'}, +\ {'word': 'columnconfigure', 'menu': 'master index -option value...'}, +\ {'word': 'configure', 'menu': 'slave slave ... options'}, +\ {'word': 'forget', 'menu': 'slave slave ...'}, +\ {'word': 'info', 'menu': 'slave'}, +\ {'word': 'location', 'menu': 'master x y'}, +\ {'word': 'propagate', 'menu': 'master boolean'}, +\ {'word': 'rowconfigure', 'menu': 'master index -option value...'}, +\ {'word': 'remove', 'menu': 'slave slave ...'}, +\ {'word': 'size', 'menu': 'master'}, +\ {'word': 'slaves', 'menu': 'master -option value'}, +\ ] + +let b:grid_sp_configure = [ +\ {'word': '-column', 'menu': 'n'}, +\ {'word': '-columnspan', 'menu': 'n'}, +\ {'word': '-in', 'menu': 'other'}, +\ {'word': '-ipadx', 'menu': 'amount'}, +\ {'word': '-ipady', 'menu': 'amount'}, +\ {'word': '-padx', 'menu': 'amount'}, +\ {'word': '-pady', 'menu': 'amount'}, +\ {'word': '-row', 'menu': 'n'}, +\ {'word': '-rowspan', 'menu': 'n'}, +\ {'word': '-sticky', 'menu': 'style'}, +\ ] + +let b:image = [ +\ {'word': 'create', 'menu': 'type name option value ...'}, +\ {'word': 'delete', 'menu': 'name name ...'}, +\ {'word': 'height', 'menu': 'name'}, +\ {'word': 'inuse', 'menu': 'name'}, +\ {'word': 'names', 'menu': ''}, +\ {'word': 'type', 'menu': 'name'}, +\ {'word': 'types', 'menu': ''}, +\ {'word': 'width', 'menu': 'name'}, +\ ] + +let b:label = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'activeforeground', 'menu': ''}, +\ {'word': 'anchor', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'bitmap', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'disabledforeground', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'wraplength', 'menu': ''}, +\ ] + +let b:labelframe = [ +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ ] + +let b:listbox = [ +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'disabledforeground', 'menu': ''}, +\ {'word': 'exportselection', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'selectbackground', 'menu': ''}, +\ {'word': 'selectborderwidth', 'menu': ''}, +\ {'word': 'selectforeground', 'menu': ''}, +\ {'word': 'setgrid', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ {'word': 'yscrollcommand', 'menu': ''}, +\ {'word': '-background', 'menu': 'color'}, +\ {'word': '-foreground', 'menu': 'color'}, +\ {'word': '-selectbackground', 'menu': 'color'}, +\ {'word': '-selectforeground', 'menu': 'color'}, +\ ] + +let b:menu = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'activeborderwidth', 'menu': ''}, +\ {'word': 'activeforeground', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'disabledforeground', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': '-activebackground', 'menu': 'value'}, +\ {'word': '-activeforeground', 'menu': 'value'}, +\ {'word': '-accelerator', 'menu': 'value'}, +\ {'word': '-background', 'menu': 'value'}, +\ {'word': '-bitmap', 'menu': 'value'}, +\ {'word': '-columnbreak', 'menu': 'value'}, +\ {'word': '-command', 'menu': 'value'}, +\ {'word': '-compound', 'menu': 'value'}, +\ {'word': '-font', 'menu': 'value'}, +\ {'word': '-foreground', 'menu': 'value'}, +\ {'word': '-hidemargin', 'menu': 'value'}, +\ {'word': '-image', 'menu': 'value'}, +\ {'word': '-indicatoron', 'menu': 'value'}, +\ {'word': '-label', 'menu': 'value'}, +\ {'word': '-menu', 'menu': 'value'}, +\ {'word': '-offvalue', 'menu': 'value'}, +\ {'word': '-onvalue', 'menu': 'value'}, +\ {'word': '-selectcolor', 'menu': 'value'}, +\ {'word': '-selectimage', 'menu': 'value'}, +\ {'word': '-state', 'menu': 'value'}, +\ {'word': '-underline', 'menu': 'value'}, +\ {'word': '-value', 'menu': 'value'}, +\ {'word': '-variable', 'menu': 'value'}, +\ ] + +let b:menubutton = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'activeforeground', 'menu': ''}, +\ {'word': 'anchor', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'bitmap', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'disabledforeground', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'wraplength', 'menu': ''}, +\ ] + +let b:message = [ +\ {'word': 'anchor', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ ] + +let b:messageBox = [ +\ {'word': '-command', 'menu': 'string'}, +\ {'word': '-default', 'menu': 'name'}, +\ {'word': '-detail', 'menu': 'string'}, +\ {'word': '-icon', 'menu': 'iconImage'}, +\ {'word': '-message', 'menu': 'string'}, +\ {'word': '-parent', 'menu': 'window'}, +\ {'word': '-title', 'menu': 'titleString'}, +\ {'word': '-type', 'menu': 'predefinedType'}, +\ ] + +let b:option = [ +\ {'word': 'add', 'menu': 'pattern value priority'}, +\ {'word': 'clear', 'menu': ''}, +\ {'word': 'get', 'menu': 'window name class'}, +\ {'word': 'readfile', 'menu': 'fileName priority'}, +\ ] + +let b:options = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'activeborderwidth', 'menu': ''}, +\ {'word': 'activeforeground', 'menu': ''}, +\ {'word': 'anchor', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'bitmap', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'disabledforeground', 'menu': ''}, +\ {'word': 'exportselection', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'insertbackground', 'menu': ''}, +\ {'word': 'insertborderwidth', 'menu': ''}, +\ {'word': 'insertofftime', 'menu': ''}, +\ {'word': 'insertontime', 'menu': ''}, +\ {'word': 'insertwidth', 'menu': ''}, +\ {'word': 'jump', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'orient', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'repeatdelay', 'menu': ''}, +\ {'word': 'repeatinterval', 'menu': ''}, +\ {'word': 'selectbackground', 'menu': ''}, +\ {'word': 'selectborderwidth', 'menu': ''}, +\ {'word': 'selectforeground', 'menu': ''}, +\ {'word': 'setgrid', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'troughcolor', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'wraplength', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ {'word': 'yscrollcommand', 'menu': ''}, +\ ] + +let b:pack = [ +\ {'word': 'configure', 'menu': 'slave slave ... options'}, +\ {'word': 'forget', 'menu': 'slave slave ...'}, +\ {'word': 'info', 'menu': 'slave'}, +\ {'word': 'propagate', 'menu': 'master boolean'}, +\ {'word': 'slaves', 'menu': 'master'}, +\ ] + +let b:pack_sp_configure = [ +\ {'word': '-after', 'menu': 'other'}, +\ {'word': '-anchor', 'menu': 'anchor'}, +\ {'word': '-before', 'menu': 'other'}, +\ {'word': '-expand', 'menu': 'boolean'}, +\ {'word': '-fill', 'menu': 'style'}, +\ {'word': '-in', 'menu': 'other'}, +\ {'word': '-ipadx', 'menu': 'amount'}, +\ {'word': '-ipady', 'menu': 'amount'}, +\ {'word': '-padx', 'menu': 'amount'}, +\ {'word': '-pady', 'menu': 'amount'}, +\ {'word': '-side', 'menu': 'side'}, +\ ] + +let b:panedwindow = [ +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'orient', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': '-after', 'menu': 'window'}, +\ {'word': '-before', 'menu': 'window'}, +\ {'word': '-height', 'menu': 'size'}, +\ {'word': '-hide', 'menu': 'boolean'}, +\ {'word': '-minsize', 'menu': 'n'}, +\ {'word': '-padx', 'menu': 'n'}, +\ {'word': '-pady', 'menu': 'n'}, +\ {'word': '-sticky', 'menu': 'style'}, +\ {'word': '-stretch', 'menu': 'when'}, +\ {'word': '-width', 'menu': 'size'}, +\ ] + +let b:photo = [ +\ {'word': '-data', 'menu': 'string'}, +\ {'word': '-format', 'menu': 'format-name'}, +\ {'word': '-file', 'menu': 'name'}, +\ {'word': '-gamma', 'menu': 'value'}, +\ {'word': '-height', 'menu': 'number'}, +\ {'word': '-palette', 'menu': 'palette-spec'}, +\ {'word': '-width', 'menu': 'number'}, +\ {'word': '-from', 'menu': 'x1 y1 x2 y2'}, +\ {'word': '-to', 'menu': 'x y'}, +\ {'word': '-shrink', 'menu': ''}, +\ {'word': '-zoom', 'menu': 'x y'}, +\ {'word': '-subsample', 'menu': 'x y'}, +\ {'word': '-compositingrule', 'menu': 'rule'}, +\ {'word': '-background', 'menu': 'color'}, +\ {'word': '-grayscale', 'menu': ''}, +\ ] + +let b:place = [ +\ {'word': 'configure', 'menu': 'window option value option value ...'}, +\ {'word': 'forget', 'menu': 'window'}, +\ {'word': 'info', 'menu': 'window'}, +\ {'word': 'slaves', 'menu': 'window'}, +\ ] + +let b:place_sp_configure = [ +\ {'word': '-anchor', 'menu': 'where'}, +\ {'word': '-bordermode', 'menu': 'mode'}, +\ {'word': '-height', 'menu': 'size'}, +\ {'word': '-in', 'menu': 'master'}, +\ {'word': '-relheight', 'menu': 'size'}, +\ {'word': '-relwidth', 'menu': 'size'}, +\ {'word': '-relx', 'menu': 'location'}, +\ {'word': '-rely', 'menu': 'location'}, +\ {'word': '-width', 'menu': 'size'}, +\ {'word': '-x', 'menu': 'location'}, +\ {'word': '-y', 'menu': 'location'}, +\ ] + +let b:radiobutton = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'activeforeground', 'menu': ''}, +\ {'word': 'anchor', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'bitmap', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'disabledforeground', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'wraplength', 'menu': ''}, +\ ] + +let b:scale = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'orient', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'repeatdelay', 'menu': ''}, +\ {'word': 'repeatinterval', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'troughcolor', 'menu': ''}, +\ ] + +let b:scrollbar = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'jump', 'menu': ''}, +\ {'word': 'orient', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'repeatdelay', 'menu': ''}, +\ {'word': 'repeatinterval', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'troughcolor', 'menu': ''}, +\ ] + +let b:selection = [ +\ {'word': 'clear', 'menu': '-displayof window -selection selection'}, +\ {'word': 'get', 'menu': '-displayof window -selection selection -type type'}, +\ {'word': 'handle', 'menu': '-selection s -type t -format f window command'}, +\ {'word': 'own', 'menu': '-command command -selection selection window'}, +\ ] + +let b:send = [ +\ {'word': '-async', 'menu': ''}, +\ {'word': '-displayof', 'menu': 'pathName'}, +\ ] + +let b:spinbox = [ +\ {'word': 'activebackground', 'menu': ''}, +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'exportselection', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'insertbackground', 'menu': ''}, +\ {'word': 'insertborderwidth', 'menu': ''}, +\ {'word': 'insertofftime', 'menu': ''}, +\ {'word': 'insertontime', 'menu': ''}, +\ {'word': 'insertwidth', 'menu': ''}, +\ {'word': 'justify', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'repeatdelay', 'menu': ''}, +\ {'word': 'repeatinterval', 'menu': ''}, +\ {'word': 'selectbackground', 'menu': ''}, +\ {'word': 'selectborderwidth', 'menu': ''}, +\ {'word': 'selectforeground', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ ] + +let b:text = [ +\ {'word': 'background', 'menu': ''}, +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'exportselection', 'menu': ''}, +\ {'word': 'font', 'menu': ''}, +\ {'word': 'foreground', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'insertbackground', 'menu': ''}, +\ {'word': 'insertborderwidth', 'menu': ''}, +\ {'word': 'insertofftime', 'menu': ''}, +\ {'word': 'insertontime', 'menu': ''}, +\ {'word': 'insertwidth', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'selectbackground', 'menu': ''}, +\ {'word': 'selectborderwidth', 'menu': ''}, +\ {'word': 'selectforeground', 'menu': ''}, +\ {'word': 'setgrid', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ {'word': 'yscrollcommand', 'menu': ''}, +\ {'word': '-background', 'menu': 'color'}, +\ {'word': '-bgstipple', 'menu': 'bitmap'}, +\ {'word': '-borderwidth', 'menu': 'pixels'}, +\ {'word': '-elide', 'menu': ''}, +\ {'word': '-fgstipple', 'menu': 'bitmap'}, +\ {'word': '-font', 'menu': 'fontName'}, +\ {'word': '-foreground', 'menu': 'color'}, +\ {'word': '-justify', 'menu': 'justify'}, +\ {'word': '-lmargin1', 'menu': 'pixels'}, +\ {'word': '-lmargin2', 'menu': 'pixels'}, +\ {'word': '-lmargincolor', 'menu': 'color'}, +\ {'word': '-offset', 'menu': 'pixels'}, +\ {'word': '-overstrike', 'menu': 'boolean'}, +\ {'word': '-overstrikefg', 'menu': 'color'}, +\ {'word': '-relief', 'menu': 'relief'}, +\ {'word': '-rmargin', 'menu': 'pixels'}, +\ {'word': '-rmargincolor', 'menu': 'color'}, +\ {'word': '-selectbackground', 'menu': 'color'}, +\ {'word': '-selectforeground', 'menu': 'color'}, +\ {'word': '-spacing1', 'menu': 'pixels'}, +\ {'word': '-spacing2', 'menu': 'pixels'}, +\ {'word': '-spacing3', 'menu': 'pixels'}, +\ {'word': '-tabs', 'menu': 'tabList'}, +\ {'word': '-tabstyle', 'menu': 'style'}, +\ {'word': '-underline', 'menu': 'boolean'}, +\ {'word': '-underlinefg', 'menu': 'color'}, +\ {'word': '-wrap', 'menu': 'mode'}, +\ {'word': '-align', 'menu': 'where'}, +\ {'word': '-create', 'menu': 'script'}, +\ {'word': '-padx', 'menu': 'pixels'}, +\ {'word': '-pady', 'menu': 'pixels'}, +\ {'word': '-stretch', 'menu': 'boolean'}, +\ {'word': '-window', 'menu': ''}, +\ {'word': '-image', 'menu': ''}, +\ {'word': '-name', 'menu': 'ImageName'}, +\ {'word': '-chars', 'menu': ''}, +\ {'word': '-displaychars', 'menu': '-- index1 index2 ...'}, +\ {'word': '-displayindices', 'menu': ''}, +\ {'word': '-displaylines', 'menu': ''}, +\ {'word': '-indices', 'menu': ''}, +\ {'word': '-lines', 'menu': ''}, +\ {'word': '-xpixels', 'menu': ''}, +\ {'word': '-ypixels', 'menu': ''}, +\ {'word': '-all', 'menu': ''}, +\ {'word': '-command', 'menu': 'command'}, +\ {'word': '-mark', 'menu': ''}, +\ {'word': '-tag', 'menu': ''}, +\ {'word': '-text', 'menu': ''}, +\ {'word': '-forwards', 'menu': ''}, +\ {'word': '-backwards', 'menu': ''}, +\ {'word': '-exact', 'menu': ''}, +\ {'word': '-regexp', 'menu': ''}, +\ {'word': '-nolinestop', 'menu': ''}, +\ {'word': '-nocase', 'menu': ''}, +\ {'word': '-count', 'menu': 'varName'}, +\ {'word': '-overlap', 'menu': ''}, +\ {'word': '-strictlimits', 'menu': ''}, +\ {'word': '-pickplace', 'menu': 'index'}, +\ ] + +let b:tk = [ +\ {'word': 'appname', 'menu': 'newName'}, +\ {'word': 'busy', 'menu': 'subcommand ...'}, +\ {'word': 'caret', 'menu': 'window -x x -y y -height height'}, +\ {'word': 'inactive', 'menu': '-displayof window reset'}, +\ {'word': 'fontchooser', 'menu': 'subcommand ...'}, +\ {'word': 'scaling', 'menu': '-displayof window number'}, +\ {'word': 'useinputmethods', 'menu': '-displayof window boolean'}, +\ {'word': 'windowingsystem', 'menu': ''}, +\ ] + +let b:tk_mac = [ +\ {'word': '-file', 'menu': ''}, +\ {'word': '-fileType', 'menu': ''}, +\ {'word': '-osType', 'menu': ''}, +\ {'word': '-systemType', 'menu': ''}, +\ {'word': '-namedImage', 'menu': ''}, +\ {'word': '-imageFile', 'menu': ''}, +\ ] + +let b:tkwait = [ +\ {'word': 'variable', 'menu': 'name'}, +\ {'word': 'visibility', 'menu': 'name'}, +\ {'word': 'window', 'menu': 'name'}, +\ ] + +let b:toplevel = [ +\ {'word': 'borderwidth', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'highlightbackground', 'menu': ''}, +\ {'word': 'highlightcolor', 'menu': ''}, +\ {'word': 'highlightthickness', 'menu': ''}, +\ {'word': 'padx', 'menu': ''}, +\ {'word': 'pady', 'menu': ''}, +\ {'word': 'relief', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_button = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'state', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'width', 'menu': ''}, +\ ] + +let b:ttk_checkbutton = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'state', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'width', 'menu': ''}, +\ ] + +let b:ttk_combobox = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_entry = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ {'word': 'validate', 'menu': ''}, +\ {'word': 'validatecommand', 'menu': ''}, +\ ] + +let b:ttk_frame = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'padding', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_image = [ +\ {'word': '-border', 'menu': 'padding'}, +\ {'word': '-height', 'menu': 'height'}, +\ {'word': '-padding', 'menu': 'padding'}, +\ {'word': '-sticky', 'menu': 'spec'}, +\ {'word': '-width', 'menu': 'width'}, +\ ] + +let b:ttk_label = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'padding', 'menu': ''}, +\ {'word': 'state', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'width', 'menu': ''}, +\ ] + +let b:ttk_labelframe = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'padding', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_menubutton = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'state', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'width', 'menu': ''}, +\ ] + +let b:ttk_notebook = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_panedwindow = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_progressbar = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_radiobutton = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'state', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'width', 'menu': ''}, +\ ] + +let b:ttk_scale = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_scrollbar = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_separator = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_sizegrip = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ ] + +let b:ttk_spinbox = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'state', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'validate', 'menu': ''}, +\ {'word': 'validatecommand', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ ] + +let b:ttk_style = [ +\ {'word': '-settings', 'menu': 'script... '}, +\ {'word': '-side', 'menu': 'side'}, +\ {'word': '-sticky', 'menu': '[nswe]'}, +\ {'word': '-children', 'menu': '{ sublayout... }'}, +\ ] + +let b:ttk_treeview = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'padding', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ {'word': 'yscrollcommand', 'menu': ''}, +\ {'word': '-id', 'menu': 'id options...'}, +\ {'word': '-anchor', 'menu': 'anchor'}, +\ {'word': '-minwidth', 'menu': 'minwidth'}, +\ {'word': '-stretch', 'menu': 'boolean'}, +\ {'word': '-width', 'menu': 'width'}, +\ {'word': '-text', 'menu': 'text'}, +\ {'word': '-image', 'menu': ''}, +\ {'word': '-command', 'menu': 'script'}, +\ {'word': '-foreground', 'menu': ''}, +\ {'word': '-background', 'menu': ''}, +\ {'word': '-font', 'menu': ''}, +\ ] + +let b:ttk_vsapi = [ +\ {'word': '-padding', 'menu': 'padding'}, +\ {'word': '-margins', 'menu': 'padding'}, +\ {'word': '-width', 'menu': 'width'}, +\ {'word': '-height', 'menu': 'height'}, +\ ] + +let b:ttk_widget = [ +\ {'word': 'class', 'menu': ''}, +\ {'word': 'cursor', 'menu': ''}, +\ {'word': 'takefocus', 'menu': ''}, +\ {'word': 'style', 'menu': ''}, +\ {'word': 'xscrollcommand', 'menu': ''}, +\ {'word': 'yscrollcommand', 'menu': ''}, +\ {'word': 'compound', 'menu': ''}, +\ {'word': 'image', 'menu': ''}, +\ {'word': 'padding', 'menu': ''}, +\ {'word': 'text', 'menu': ''}, +\ {'word': 'textvariable', 'menu': ''}, +\ {'word': 'underline', 'menu': ''}, +\ {'word': 'width', 'menu': ''}, +\ {'word': 'state', 'menu': ''}, +\ ] + +let b:winfo = [ +\ {'word': 'atom', 'menu': '-displayof window name'}, +\ {'word': 'atomname', 'menu': '-displayof window id'}, +\ {'word': 'cells', 'menu': 'window'}, +\ {'word': 'children', 'menu': 'window'}, +\ {'word': 'class', 'menu': 'window'}, +\ {'word': 'colormapfull', 'menu': 'window'}, +\ {'word': 'containing', 'menu': '-displayof window rootX rootY'}, +\ {'word': 'depth', 'menu': 'window'}, +\ {'word': 'exists', 'menu': 'window'}, +\ {'word': 'fpixels', 'menu': 'window number'}, +\ {'word': 'geometry', 'menu': 'window'}, +\ {'word': 'height', 'menu': 'window'}, +\ {'word': 'id', 'menu': 'window'}, +\ {'word': 'interps', 'menu': '-displayof window'}, +\ {'word': 'ismapped', 'menu': 'window'}, +\ {'word': 'manager', 'menu': 'window'}, +\ {'word': 'name', 'menu': 'window'}, +\ {'word': 'parent', 'menu': 'window'}, +\ {'word': 'pathname', 'menu': '-displayof window id'}, +\ {'word': 'pixels', 'menu': 'window number'}, +\ {'word': 'pointerx', 'menu': 'window'}, +\ {'word': 'pointerxy', 'menu': 'window'}, +\ {'word': 'pointery', 'menu': 'window'}, +\ {'word': 'reqheight', 'menu': 'window'}, +\ {'word': 'reqwidth', 'menu': 'window'}, +\ {'word': 'rgb', 'menu': 'window color'}, +\ {'word': 'rootx', 'menu': 'window'}, +\ {'word': 'rooty', 'menu': 'window'}, +\ {'word': 'screen', 'menu': 'window'}, +\ {'word': 'screencells', 'menu': 'window'}, +\ {'word': 'screendepth', 'menu': 'window'}, +\ {'word': 'screenheight', 'menu': 'window'}, +\ {'word': 'screenmmheight', 'menu': 'window'}, +\ {'word': 'screenmmwidth', 'menu': 'window'}, +\ {'word': 'screenvisual', 'menu': 'window'}, +\ {'word': 'screenwidth', 'menu': 'window'}, +\ {'word': 'server', 'menu': 'window'}, +\ {'word': 'toplevel', 'menu': 'window'}, +\ {'word': 'viewable', 'menu': 'window'}, +\ {'word': 'visual', 'menu': 'window'}, +\ {'word': 'visualid', 'menu': 'window'}, +\ {'word': 'visualsavailable', 'menu': 'window includeids'}, +\ {'word': 'vrootheight', 'menu': 'window'}, +\ {'word': 'vrootwidth', 'menu': 'window'}, +\ {'word': 'vrootx', 'menu': 'window'}, +\ {'word': 'vrooty', 'menu': 'window'}, +\ {'word': 'width', 'menu': 'window'}, +\ {'word': 'x', 'menu': 'window'}, +\ {'word': 'y', 'menu': 'window'}, +\ ] + +let b:wm = [ +\ {'word': 'aspect', 'menu': 'window minNumer minDenom maxNumer maxDenom'}, +\ {'word': 'attributes', 'menu': 'window option value option value...'}, +\ {'word': 'client', 'menu': 'window name'}, +\ {'word': 'colormapwindows', 'menu': 'window windowList'}, +\ {'word': 'command', 'menu': 'window value'}, +\ {'word': 'deiconify', 'menu': 'window'}, +\ {'word': 'focusmodel', 'menu': 'window active|passive'}, +\ {'word': 'forget', 'menu': 'window'}, +\ {'word': 'frame', 'menu': 'window'}, +\ {'word': 'geometry', 'menu': 'window newGeometry'}, +\ {'word': 'grid', 'menu': 'window baseWidth baseHeight widthInc heightInc'}, +\ {'word': 'group', 'menu': 'window pathName'}, +\ {'word': 'iconbitmap', 'menu': 'window -default image'}, +\ {'word': 'iconify', 'menu': 'window'}, +\ {'word': 'iconmask', 'menu': 'window bitmap'}, +\ {'word': 'iconname', 'menu': 'window newName'}, +\ {'word': 'iconphoto', 'menu': 'window -default image1 image2 ...'}, +\ {'word': 'iconposition', 'menu': 'window x y'}, +\ {'word': 'iconwindow', 'menu': 'window pathName'}, +\ {'word': 'manage', 'menu': 'widget'}, +\ {'word': 'maxsize', 'menu': 'window width height'}, +\ {'word': 'minsize', 'menu': 'window width height'}, +\ {'word': 'overrideredirect', 'menu': 'window boolean'}, +\ {'word': 'positionfrom', 'menu': 'window who'}, +\ {'word': 'protocol', 'menu': 'window name command'}, +\ {'word': 'resizable', 'menu': 'window width height'}, +\ {'word': 'sizefrom', 'menu': 'window who'}, +\ {'word': 'stackorder', 'menu': 'window isabove|isbelow window'}, +\ {'word': 'state', 'menu': 'window newstate'}, +\ {'word': 'title', 'menu': 'window string'}, +\ {'word': 'transient', 'menu': 'window master'}, +\ {'word': 'withdraw', 'menu': 'window'}, +\ ] + +let b:wm_sp_attributes = [ +\ {'word': '-alpha', 'menu': ''}, +\ {'word': '-fullscreen', 'menu': ''}, +\ {'word': '-topmost', 'menu': ''}, +\ {'word': '-disabled', 'menu': ''}, +\ {'word': '-toolwindow', 'menu': ''}, +\ {'word': '-transparentcolor', 'menu': ''}, +\ {'word': '-modified', 'menu': ''}, +\ {'word': '-notify', 'menu': ''}, +\ {'word': '-titlepath', 'menu': ''}, +\ {'word': '-transparent', 'menu': ''}, +\ {'word': '-type', 'menu': ''}, +\ {'word': '-zoomed', 'menu': ''}, +\ ] + diff --git a/screenshots/OmniTickle_1.png b/screenshots/OmniTickle_1.png new file mode 100644 index 0000000..02e34a2 Binary files /dev/null and b/screenshots/OmniTickle_1.png differ diff --git a/screenshots/OmniTickle_2.png b/screenshots/OmniTickle_2.png new file mode 100644 index 0000000..ea17472 Binary files /dev/null and b/screenshots/OmniTickle_2.png differ diff --git a/screenshots/OmniTickle_3.png b/screenshots/OmniTickle_3.png new file mode 100644 index 0000000..fc3b92f Binary files /dev/null and b/screenshots/OmniTickle_3.png differ