diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 6e4052115..68adce87e 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -1,5 +1,5 @@ add_subdirectory(cppdap) #add_subdirectory(unioncode-GitQlient) -add_subdirectory(unioncode-qscintilla214) +#add_subdirectory(unioncode-qscintilla214) add_subdirectory(unioncode-qtermwidget-0.14.1) add_subdirectory(unioncode-jsonrpccpp) diff --git a/3rdparty/unioncode-qscintilla214.cmake b/3rdparty/unioncode-qscintilla214.cmake deleted file mode 100644 index d3f7033f8..000000000 --- a/3rdparty/unioncode-qscintilla214.cmake +++ /dev/null @@ -1,7 +0,0 @@ -include_directories( - ${CMAKE_SOURCE_DIR}/3rdparty/unioncode-qscintilla214/src -) - -set(CMAKE_CXX_STANDARD 17) - -link_libraries(unioncode-qscintilla) diff --git a/3rdparty/unioncode-qscintilla214/CMakeLists.txt b/3rdparty/unioncode-qscintilla214/CMakeLists.txt deleted file mode 100644 index 8307a3bf7..000000000 --- a/3rdparty/unioncode-qscintilla214/CMakeLists.txt +++ /dev/null @@ -1,48 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -project(unioncode-qscintilla) -set(CMAKE_CXX_STANDARD 17) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_AUTOUIC ON) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -find_package(Qt5 COMPONENTS - Widgets - PrintSupport - REQUIRED) -find_package(Dtk COMPONENTS Widget REQUIRED) - -file(GLOB_RECURSE SRCS CONFIGURE_DEPENDS - "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Qsci/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Qsci/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/scintilla/*/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/scintilla/*/*.cpp" -) - -add_definitions(-DSCINTILLA_QT -DSCI_LEXER -DINCLUDE_DEPRECATED_FEATURES) - -add_library(${PROJECT_NAME} ${SRCS}) - -target_include_directories(${PROJECT_NAME} - PRIVATE - ${DtkWidget_INCLUDE_DIRS} - ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/include - ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/src - ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/lexlib - ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_CURRENT_SOURCE_DIR}/src/Qsci -) - -target_link_libraries( - ${PROJECT_NAME} - Qt5::Widgets - Qt5::PrintSupport - ${DtkWidget_LIBRARIES} -) - -install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION ${LIBRARY_INSTALL_PREFIX}) diff --git a/3rdparty/unioncode-qscintilla214/LICENSE b/3rdparty/unioncode-qscintilla214/LICENSE deleted file mode 100755 index 94a9ed024..000000000 --- a/3rdparty/unioncode-qscintilla214/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/BoostRegexSearch.h b/3rdparty/unioncode-qscintilla214/scintilla/include/BoostRegexSearch.h deleted file mode 100644 index bc0c723a9..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/BoostRegexSearch.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef BOOSTREGEXSEARCH_H -#define BOOSTREGEXSEARCH_H - -#define SCFIND_REGEXP_DOTMATCHESNL 0x10000000 -#define SCFIND_REGEXP_EMPTYMATCH_MASK 0xE0000000 -#define SCFIND_REGEXP_EMPTYMATCH_NONE 0x00000000 -#define SCFIND_REGEXP_EMPTYMATCH_NOTAFTERMATCH 0x20000000 -#define SCFIND_REGEXP_EMPTYMATCH_ALL 0x40000000 -#define SCFIND_REGEXP_EMPTYMATCH_ALLOWATSTART 0x80000000 -#define SCFIND_REGEXP_SKIPCRLFASONE 0x08000000 - -#ifdef SCI_OWNREGEX -extern std::string g_exceptionMessage; -#endif - -#endif \ No newline at end of file diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/ILexer.h b/3rdparty/unioncode-qscintilla214/scintilla/include/ILexer.h deleted file mode 100644 index 42f980f89..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/ILexer.h +++ /dev/null @@ -1,90 +0,0 @@ -// Scintilla source code edit control -/** @file ILexer.h - ** Interface between Scintilla and lexers. - **/ -// Copyright 1998-2010 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#ifndef ILEXER_H -#define ILEXER_H - -#include "Sci_Position.h" - -namespace Scintilla { - -enum { dvOriginal=0, dvLineEnd=1 }; - -class IDocument { -public: - virtual int SCI_METHOD Version() const = 0; - virtual void SCI_METHOD SetErrorStatus(int status) = 0; - virtual Sci_Position SCI_METHOD Length() const = 0; - virtual void SCI_METHOD GetCharRange(char *buffer, Sci_Position position, Sci_Position lengthRetrieve) const = 0; - virtual char SCI_METHOD StyleAt(Sci_Position position) const = 0; - virtual Sci_Position SCI_METHOD LineFromPosition(Sci_Position position) const = 0; - virtual Sci_Position SCI_METHOD LineStart(Sci_Position line) const = 0; - virtual int SCI_METHOD GetLevel(Sci_Position line) const = 0; - virtual int SCI_METHOD SetLevel(Sci_Position line, int level) = 0; - virtual int SCI_METHOD GetLineState(Sci_Position line) const = 0; - virtual int SCI_METHOD SetLineState(Sci_Position line, int state) = 0; - virtual void SCI_METHOD StartStyling(Sci_Position position, char mask) = 0; - virtual bool SCI_METHOD SetStyleFor(Sci_Position length, char style) = 0; - virtual bool SCI_METHOD SetStyles(Sci_Position length, const char *styles) = 0; - virtual void SCI_METHOD DecorationSetCurrentIndicator(int indicator) = 0; - virtual void SCI_METHOD DecorationFillRange(Sci_Position position, int value, Sci_Position fillLength) = 0; - virtual void SCI_METHOD ChangeLexerState(Sci_Position start, Sci_Position end) = 0; - virtual int SCI_METHOD CodePage() const = 0; - virtual bool SCI_METHOD IsDBCSLeadByte(char ch) const = 0; - virtual const char * SCI_METHOD BufferPointer() = 0; - virtual int SCI_METHOD GetLineIndentation(Sci_Position line) = 0; -}; - -class IDocumentWithLineEnd : public IDocument { -public: - virtual Sci_Position SCI_METHOD LineEnd(Sci_Position line) const = 0; - virtual Sci_Position SCI_METHOD GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const = 0; - virtual int SCI_METHOD GetCharacterAndWidth(Sci_Position position, Sci_Position *pWidth) const = 0; -}; - -enum { lvOriginal=0, lvSubStyles=1, lvMetaData=2 }; - -class ILexer { -public: - virtual int SCI_METHOD Version() const = 0; - virtual void SCI_METHOD Release() = 0; - virtual const char * SCI_METHOD PropertyNames() = 0; - virtual int SCI_METHOD PropertyType(const char *name) = 0; - virtual const char * SCI_METHOD DescribeProperty(const char *name) = 0; - virtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) = 0; - virtual const char * SCI_METHOD DescribeWordListSets() = 0; - virtual Sci_Position SCI_METHOD WordListSet(int n, const char *wl) = 0; - virtual void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) = 0; - virtual void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) = 0; - virtual void * SCI_METHOD PrivateCall(int operation, void *pointer) = 0; -}; - -class ILexerWithSubStyles : public ILexer { -public: - virtual int SCI_METHOD LineEndTypesSupported() = 0; - virtual int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) = 0; - virtual int SCI_METHOD SubStylesStart(int styleBase) = 0; - virtual int SCI_METHOD SubStylesLength(int styleBase) = 0; - virtual int SCI_METHOD StyleFromSubStyle(int subStyle) = 0; - virtual int SCI_METHOD PrimaryStyleFromStyle(int style) = 0; - virtual void SCI_METHOD FreeSubStyles() = 0; - virtual void SCI_METHOD SetIdentifiers(int style, const char *identifiers) = 0; - virtual int SCI_METHOD DistanceToSecondaryStyles() = 0; - virtual const char * SCI_METHOD GetSubStyleBases() = 0; -}; - -class ILexerWithMetaData : public ILexerWithSubStyles { -public: - virtual int SCI_METHOD NamedStyles() = 0; - virtual const char * SCI_METHOD NameOfStyle(int style) = 0; - virtual const char * SCI_METHOD TagsOfStyle(int style) = 0; - virtual const char * SCI_METHOD DescriptionOfStyle(int style) = 0; -}; - -} - -#endif diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/ILoader.h b/3rdparty/unioncode-qscintilla214/scintilla/include/ILoader.h deleted file mode 100644 index e989de873..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/ILoader.h +++ /dev/null @@ -1,21 +0,0 @@ -// Scintilla source code edit control -/** @file ILoader.h - ** Interface for loading into a Scintilla document from a background thread. - **/ -// Copyright 1998-2017 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#ifndef ILOADER_H -#define ILOADER_H - -#include "Sci_Position.h" - -class ILoader { -public: - virtual int SCI_METHOD Release() = 0; - // Returns a status code from SC_STATUS_* - virtual int SCI_METHOD AddData(const char *data, Sci_Position length) = 0; - virtual void * SCI_METHOD ConvertToDocument() = 0; -}; - -#endif diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/License.txt b/3rdparty/unioncode-qscintilla214/scintilla/include/License.txt deleted file mode 100644 index 47c792655..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/License.txt +++ /dev/null @@ -1,20 +0,0 @@ -License for Scintilla and SciTE - -Copyright 1998-2003 by Neil Hodgson - -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. - -NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY -SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE -OR PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/Platform.h b/3rdparty/unioncode-qscintilla214/scintilla/include/Platform.h deleted file mode 100644 index d7395aa3c..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/Platform.h +++ /dev/null @@ -1,578 +0,0 @@ -// Scintilla source code edit control -/** @file Platform.h - ** Interface to platform facilities. Also includes some basic utilities. - ** Implemented in PlatGTK.cxx for GTK+/Linux, PlatWin.cxx for Windows, and PlatWX.cxx for wxWindows. - **/ -// Copyright 1998-2009 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#ifndef PLATFORM_H -#define PLATFORM_H - -// PLAT_GTK = GTK+ on Linux or Win32 -// PLAT_GTK_WIN32 is defined additionally when running PLAT_GTK under Win32 -// PLAT_WIN = Win32 API on Win32 OS -// PLAT_WX is wxWindows on any supported platform -// PLAT_TK = Tcl/TK on Linux or Win32 - -#define PLAT_GTK 0 -#define PLAT_GTK_WIN32 0 -#define PLAT_GTK_MACOSX 0 -#define PLAT_MACOSX 0 -#define PLAT_WIN 0 -#define PLAT_WX 0 -#define PLAT_QT 0 -#define PLAT_FOX 0 -#define PLAT_CURSES 0 -#define PLAT_TK 0 -#define PLAT_HAIKU 0 - -#if defined(FOX) -#undef PLAT_FOX -#define PLAT_FOX 1 - -#elif defined(__WX__) -#undef PLAT_WX -#define PLAT_WX 1 - -#elif defined(CURSES) -#undef PLAT_CURSES -#define PLAT_CURSES 1 - -#elif defined(__HAIKU__) -#undef PLAT_HAIKU -#define PLAT_HAIKU 1 - -#elif defined(SCINTILLA_QT) -#undef PLAT_QT -#define PLAT_QT 1 - -#include -QT_BEGIN_NAMESPACE -class QPainter; -QT_END_NAMESPACE - -// This is needed to work around an HP-UX bug with Qt4. -#include - -#elif defined(TK) -#undef PLAT_TK -#define PLAT_TK 1 - -#elif defined(GTK) -#undef PLAT_GTK -#define PLAT_GTK 1 - -#if defined(__WIN32__) || defined(_MSC_VER) -#undef PLAT_GTK_WIN32 -#define PLAT_GTK_WIN32 1 -#endif - -#if defined(__APPLE__) -#undef PLAT_GTK_MACOSX -#define PLAT_GTK_MACOSX 1 -#endif - -#elif defined(__APPLE__) - -#undef PLAT_MACOSX -#define PLAT_MACOSX 1 - -#else -#undef PLAT_WIN -#define PLAT_WIN 1 - -#endif - -namespace Scintilla { - -typedef float XYPOSITION; -typedef double XYACCUMULATOR; - -// Underlying the implementation of the platform classes are platform specific types. -// Sometimes these need to be passed around by client code so they are defined here - -typedef void *FontID; -typedef void *SurfaceID; -typedef void *WindowID; -typedef void *MenuID; -typedef void *TickerID; -typedef void *Function; -typedef void *IdlerID; - -/** - * A geometric point class. - * Point is similar to the Win32 POINT and GTK+ GdkPoint types. - */ -class Point { -public: - XYPOSITION x; - XYPOSITION y; - - constexpr explicit Point(XYPOSITION x_=0, XYPOSITION y_=0) noexcept : x(x_), y(y_) { - } - - static Point FromInts(int x_, int y_) noexcept { - return Point(static_cast(x_), static_cast(y_)); - } - - // Other automatically defined methods (assignment, copy constructor, destructor) are fine -}; - -/** - * A geometric rectangle class. - * PRectangle is similar to Win32 RECT. - * PRectangles contain their top and left sides, but not their right and bottom sides. - */ -class PRectangle { -public: - XYPOSITION left; - XYPOSITION top; - XYPOSITION right; - XYPOSITION bottom; - - constexpr explicit PRectangle(XYPOSITION left_=0, XYPOSITION top_=0, XYPOSITION right_=0, XYPOSITION bottom_ = 0) noexcept : - left(left_), top(top_), right(right_), bottom(bottom_) { - } - - static PRectangle FromInts(int left_, int top_, int right_, int bottom_) noexcept { - return PRectangle(static_cast(left_), static_cast(top_), - static_cast(right_), static_cast(bottom_)); - } - - // Other automatically defined methods (assignment, copy constructor, destructor) are fine - - bool operator==(const PRectangle &rc) const noexcept { - return (rc.left == left) && (rc.right == right) && - (rc.top == top) && (rc.bottom == bottom); - } - bool Contains(Point pt) const noexcept { - return (pt.x >= left) && (pt.x <= right) && - (pt.y >= top) && (pt.y <= bottom); - } - bool ContainsWholePixel(Point pt) const noexcept { - // Does the rectangle contain all of the pixel to left/below the point - return (pt.x >= left) && ((pt.x+1) <= right) && - (pt.y >= top) && ((pt.y+1) <= bottom); - } - bool Contains(PRectangle rc) const noexcept { - return (rc.left >= left) && (rc.right <= right) && - (rc.top >= top) && (rc.bottom <= bottom); - } - bool Intersects(PRectangle other) const noexcept { - return (right > other.left) && (left < other.right) && - (bottom > other.top) && (top < other.bottom); - } - void Move(XYPOSITION xDelta, XYPOSITION yDelta) noexcept { - left += xDelta; - top += yDelta; - right += xDelta; - bottom += yDelta; - } - Point Centre() const noexcept { - return Point((left + right) / 2, (top + bottom) / 2); - } - - XYPOSITION Width() const noexcept { return right - left; } - XYPOSITION Height() const noexcept { return bottom - top; } - bool Empty() const noexcept { - return (Height() <= 0) || (Width() <= 0); - } -}; - -XYPOSITION PixelAlign(XYPOSITION xy, int pixelDivisions) noexcept; -XYPOSITION PixelAlignFloor(XYPOSITION xy, int pixelDivisions) noexcept; -XYPOSITION PixelAlignCeil(XYPOSITION xy, int pixelDivisions) noexcept; - -Point PixelAlign(const Point &pt, int pixelDivisions) noexcept; - -PRectangle PixelAlign(const PRectangle &rc, int pixelDivisions) noexcept; - -/** - * Holds an RGB colour with 8 bits for each component. - */ -constexpr const float componentMaximum = 255.0f; -class ColourDesired { - int co; -public: - explicit ColourDesired(int co_=0) noexcept : co(co_) { - } - - ColourDesired(unsigned int red, unsigned int green, unsigned int blue) noexcept : - co(red | (green << 8) | (blue << 16)) { - } - - bool operator==(const ColourDesired &other) const noexcept { - return co == other.co; - } - - int AsInteger() const noexcept { - return co; - } - - // Red, green and blue values as bytes 0..255 - unsigned char GetRed() const noexcept { - return co & 0xff; - } - unsigned char GetGreen() const noexcept { - return (co >> 8) & 0xff; - } - unsigned char GetBlue() const noexcept { - return (co >> 16) & 0xff; - } - - // Red, green and blue values as float 0..1.0 - float GetRedComponent() const noexcept { - return GetRed() / componentMaximum; - } - float GetGreenComponent() const noexcept { - return GetGreen() / componentMaximum; - } - float GetBlueComponent() const noexcept { - return GetBlue() / componentMaximum; - } -}; - -/** -* Holds an RGBA colour. -*/ -class ColourAlpha : public ColourDesired { -public: - explicit ColourAlpha(int co_ = 0) noexcept : ColourDesired(co_) { - } - - ColourAlpha(unsigned int red, unsigned int green, unsigned int blue) noexcept : - ColourDesired(red | (green << 8) | (blue << 16)) { - } - - ColourAlpha(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha) noexcept : - ColourDesired(red | (green << 8) | (blue << 16) | (alpha << 24)) { - } - - ColourAlpha(ColourDesired cd, unsigned int alpha) noexcept : - ColourDesired(cd.AsInteger() | (alpha << 24)) { - } - - ColourDesired GetColour() const noexcept { - return ColourDesired(AsInteger() & 0xffffff); - } - - unsigned char GetAlpha() const noexcept { - return (AsInteger() >> 24) & 0xff; - } - - float GetAlphaComponent() const noexcept { - return GetAlpha() / componentMaximum; - } - - ColourAlpha MixedWith(ColourAlpha other) const noexcept { - const unsigned int red = (GetRed() + other.GetRed()) / 2; - const unsigned int green = (GetGreen() + other.GetGreen()) / 2; - const unsigned int blue = (GetBlue() + other.GetBlue()) / 2; - const unsigned int alpha = (GetAlpha() + other.GetAlpha()) / 2; - return ColourAlpha(red, green, blue, alpha); - } -}; - -/** -* Holds an element of a gradient with an RGBA colour and a relative position. -*/ -class ColourStop { -public: - float position; - ColourAlpha colour; - ColourStop(float position_, ColourAlpha colour_) noexcept : - position(position_), colour(colour_) { - } -}; - -/** - * Font management. - */ - -struct FontParameters { - const char *faceName; - float size; - int weight; - bool italic; - int extraFontFlag; - int technology; - int characterSet; - - FontParameters( - const char *faceName_, - float size_=10, - int weight_=400, - bool italic_=false, - int extraFontFlag_=0, - int technology_=0, - int characterSet_=0) noexcept : - - faceName(faceName_), - size(size_), - weight(weight_), - italic(italic_), - extraFontFlag(extraFontFlag_), - technology(technology_), - characterSet(characterSet_) - { - } - -}; - -class Font { -protected: - FontID fid; -public: - Font() noexcept; - // Deleted so Font objects can not be copied - Font(const Font &) = delete; - Font(Font &&) = delete; - Font &operator=(const Font &) = delete; - Font &operator=(Font &&) = delete; - virtual ~Font(); - - virtual void Create(const FontParameters &fp); - virtual void Release(); - - FontID GetID() const noexcept { return fid; } - // Alias another font - caller guarantees not to Release - void SetID(FontID fid_) noexcept { fid = fid_; } - friend class Surface; - friend class SurfaceImpl; -}; - -/** - * A surface abstracts a place to draw. - */ -#if defined(PLAT_QT) -class XPM; -#endif -class Surface { -public: - Surface() noexcept = default; - Surface(const Surface &) = delete; - Surface(Surface &&) = delete; - Surface &operator=(const Surface &) = delete; - Surface &operator=(Surface &&) = delete; - virtual ~Surface() {} - static Surface *Allocate(int technology); - - virtual void Init(WindowID wid)=0; - virtual void Init(SurfaceID sid, WindowID wid)=0; - virtual void InitPixMap(int width, int height, Surface *surface_, WindowID wid)=0; - - enum class Ends { - semiCircles = 0x0, - leftFlat = 0x1, - leftAngle = 0x2, - rightFlat = 0x10, - rightAngle = 0x20, - }; - - virtual void Release()=0; - virtual bool Initialised()=0; - virtual void PenColour(ColourDesired fore)=0; - virtual int LogPixelsY()=0; - virtual int DeviceHeightFont(int points)=0; - virtual void MoveTo(int x_, int y_)=0; - virtual void LineTo(int x_, int y_)=0; - virtual void Polygon(Point *pts, size_t npts, ColourDesired fore, ColourDesired back)=0; - virtual void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back)=0; - virtual void FillRectangle(PRectangle rc, ColourDesired back)=0; - virtual void RectangleFrame(PRectangle rc, ColourDesired fore) = 0; - virtual void FillRectangle(PRectangle rc, Surface &surfacePattern)=0; - virtual void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back)=0; - virtual void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill, int alphaFill, - ColourDesired outline, int alphaOutline, int flags)=0; - enum class GradientOptions { leftToRight, topToBottom }; - virtual void GradientRectangle(PRectangle rc, const std::vector &stops, GradientOptions options)=0; - virtual void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage) = 0; - virtual void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back)=0; - virtual void Stadium(PRectangle rc, ColourDesired fore, ColourDesired back, Ends ends) = 0; - virtual void Copy(PRectangle rc, Point from, Surface &surfaceSource)=0; - - virtual void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back)=0; - virtual void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back)=0; - virtual void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore)=0; - virtual void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions)=0; - virtual XYPOSITION WidthText(Font &font_, const char *s, int len)=0; - - virtual XYPOSITION WidthTextUTF8(Font &font_, const char *s) = 0; - - virtual XYPOSITION Ascent(Font &font_)=0; - virtual XYPOSITION Descent(Font &font_)=0; - virtual XYPOSITION InternalLeading(Font &font_)=0; - virtual XYPOSITION Height(Font &font_)=0; - virtual XYPOSITION AverageCharWidth(Font &font_)=0; - - virtual void SetClip(PRectangle rc)=0; - virtual void FlushCachedState()=0; - - virtual void SetUnicodeMode(bool unicodeMode_)=0; - virtual void SetDBCSMode(int codePage)=0; - -#if defined(PLAT_QT) - virtual void Init(QPainter *p)=0; - virtual void DrawXPM(PRectangle rc, const XPM *xpm)=0; -#endif -}; - -/** - * Class to hide the details of window manipulation. - * Does not own the window which will normally have a longer life than this object. - */ -class Window { -protected: - WindowID wid; -public: - Window() noexcept : wid(nullptr), cursorLast(cursorInvalid) { - } - Window(const Window &source) = delete; - Window(Window &&) = delete; - Window &operator=(WindowID wid_) noexcept { - wid = wid_; - cursorLast = cursorInvalid; - return *this; - } - Window &operator=(const Window &) = delete; - Window &operator=(Window &&) = delete; - virtual ~Window(); - WindowID GetID() const noexcept { return wid; } - bool Created() const noexcept { return wid != nullptr; } - void Destroy(); - PRectangle GetPosition() const; - void SetPosition(PRectangle rc); - void SetPositionRelative(PRectangle rc, const Window *relativeTo); - PRectangle GetClientPosition() const; - void Show(bool show=true); - void InvalidateAll(); - void InvalidateRectangle(PRectangle rc); - virtual void SetFont(Font &font); - enum Cursor { cursorInvalid, cursorText, cursorArrow, cursorUp, cursorWait, cursorHoriz, cursorVert, cursorReverseArrow, cursorHand }; - void SetCursor(Cursor curs); - PRectangle GetMonitorRect(Point pt); -private: - Cursor cursorLast; -}; - -/** - * Listbox management. - */ - -// ScintillaBase implements IListBoxDelegate to receive ListBoxEvents from a ListBox - -struct ListBoxEvent { - enum class EventType { selectionChange, doubleClick } event; - ListBoxEvent(EventType event_) noexcept : event(event_) { - } -}; - -class IListBoxDelegate { -public: - virtual void ListNotify(ListBoxEvent *plbe)=0; -}; - -class ListBox : public Window { -public: - ListBox() noexcept; - ~ListBox() override; - static ListBox *Allocate(); - - void SetFont(Font &font) override =0; - virtual void Create(Window &parent, int ctrlID, Point location, int lineHeight_, bool unicodeMode_, int technology_)=0; - virtual void SetAverageCharWidth(int width)=0; - virtual void SetVisibleRows(int rows)=0; - virtual int GetVisibleRows() const=0; - virtual PRectangle GetDesiredRect()=0; - virtual int CaretFromEdge()=0; - virtual void Clear()=0; - virtual void Append(char *s, int type = -1)=0; - virtual int Length()=0; - virtual void Select(int n)=0; - virtual int GetSelection()=0; - virtual int Find(const char *prefix)=0; - virtual void GetValue(int n, char *value, int len)=0; - virtual void RegisterImage(int type, const char *xpm_data)=0; - virtual void RegisterRGBAImage(int type, int width, int height, const unsigned char *pixelsImage) = 0; - virtual void ClearRegisteredImages()=0; - virtual void SetDelegate(IListBoxDelegate *lbDelegate)=0; - virtual void SetList(const char* list, char separator, char typesep)=0; -}; - -/** - * Menu management. - */ -class Menu { - MenuID mid; -public: - Menu() noexcept; - MenuID GetID() const noexcept { return mid; } - void CreatePopUp(); - void Destroy(); - void Show(Point pt, Window &w); -}; - -/** - * Dynamic Library (DLL/SO/...) loading - */ -class DynamicLibrary { -public: - virtual ~DynamicLibrary() = default; - - /// @return Pointer to function "name", or NULL on failure. - virtual Function FindFunction(const char *name) = 0; - - /// @return true if the library was loaded successfully. - virtual bool IsValid() = 0; - - /// @return An instance of a DynamicLibrary subclass with "modulePath" loaded. - static DynamicLibrary *Load(const char *modulePath); -}; - -#if defined(__clang__) -# if __has_feature(attribute_analyzer_noreturn) -# define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn)) -# else -# define CLANG_ANALYZER_NORETURN -# endif -#else -# define CLANG_ANALYZER_NORETURN -#endif - -/** - * Platform class used to retrieve system wide parameters such as double click speed - * and chrome colour. Not a creatable object, more of a module with several functions. - */ -class Platform { -public: - Platform() = default; - Platform(const Platform &) = delete; - Platform(Platform &&) = delete; - Platform &operator=(const Platform &) = delete; - Platform &operator=(Platform &&) = delete; - ~Platform() = default; - static ColourDesired Chrome(); - static ColourDesired ChromeHighlight(); - static const char *DefaultFont(); - static int DefaultFontSize(); - static unsigned int DoubleClickTime(); - static void DebugDisplay(const char *s); - static constexpr long LongFromTwoShorts(short a,short b) noexcept { - return (a) | ((b) << 16); - } - - static void DebugPrintf(const char *format, ...); - static bool ShowAssertionPopUps(bool assertionPopUps_); - static void Assert(const char *c, const char *file, int line) CLANG_ANALYZER_NORETURN; -}; - -#ifdef NDEBUG -#define PLATFORM_ASSERT(c) ((void)0) -#else -#define PLATFORM_ASSERT(c) ((c) ? (void)(0) : Scintilla::Platform::Assert(#c, __FILE__, __LINE__)) -#endif - -} - -#endif diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/SciLexer.h b/3rdparty/unioncode-qscintilla214/scintilla/include/SciLexer.h deleted file mode 100644 index 0335bf4dd..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/SciLexer.h +++ /dev/null @@ -1,1861 +0,0 @@ -/* Scintilla source code edit control */ -/** @file SciLexer.h - ** Interface to the added lexer functions in the SciLexer version of the edit control. - **/ -/* Copyright 1998-2002 by Neil Hodgson - * The License.txt file describes the conditions under which this software may be distributed. */ - -/* Most of this file is automatically generated from the Scintilla.iface interface definition - * file which contains any comments about the definitions. HFacer.py does the generation. */ - -#ifndef SCILEXER_H -#define SCILEXER_H - -/* SciLexer features - not in standard Scintilla */ - -/* ++Autogenerated -- start of section automatically generated from Scintilla.iface */ -#define SCLEX_CONTAINER 0 -#define SCLEX_NULL 1 -#define SCLEX_PYTHON 2 -#define SCLEX_CPP 3 -#define SCLEX_HTML 4 -#define SCLEX_XML 5 -#define SCLEX_PERL 6 -#define SCLEX_SQL 7 -#define SCLEX_VB 8 -#define SCLEX_PROPERTIES 9 -#define SCLEX_ERRORLIST 10 -#define SCLEX_MAKEFILE 11 -#define SCLEX_BATCH 12 -#define SCLEX_XCODE 13 -#define SCLEX_LATEX 14 -#define SCLEX_LUA 15 -#define SCLEX_DIFF 16 -#define SCLEX_CONF 17 -#define SCLEX_PASCAL 18 -#define SCLEX_AVE 19 -#define SCLEX_ADA 20 -#define SCLEX_LISP 21 -#define SCLEX_RUBY 22 -#define SCLEX_EIFFEL 23 -#define SCLEX_EIFFELKW 24 -#define SCLEX_TCL 25 -#define SCLEX_NNCRONTAB 26 -#define SCLEX_BULLANT 27 -#define SCLEX_VBSCRIPT 28 -#define SCLEX_BAAN 31 -#define SCLEX_MATLAB 32 -#define SCLEX_SCRIPTOL 33 -#define SCLEX_ASM 34 -#define SCLEX_CPPNOCASE 35 -#define SCLEX_FORTRAN 36 -#define SCLEX_F77 37 -#define SCLEX_CSS 38 -#define SCLEX_POV 39 -#define SCLEX_LOUT 40 -#define SCLEX_ESCRIPT 41 -#define SCLEX_PS 42 -#define SCLEX_NSIS 43 -#define SCLEX_MMIXAL 44 -#define SCLEX_CLW 45 -#define SCLEX_CLWNOCASE 46 -#define SCLEX_LOT 47 -#define SCLEX_YAML 48 -#define SCLEX_TEX 49 -#define SCLEX_METAPOST 50 -#define SCLEX_POWERBASIC 51 -#define SCLEX_FORTH 52 -#define SCLEX_ERLANG 53 -#define SCLEX_OCTAVE 54 -#define SCLEX_MSSQL 55 -#define SCLEX_VERILOG 56 -#define SCLEX_KIX 57 -#define SCLEX_GUI4CLI 58 -#define SCLEX_SPECMAN 59 -#define SCLEX_AU3 60 -#define SCLEX_APDL 61 -#define SCLEX_BASH 62 -#define SCLEX_ASN1 63 -#define SCLEX_VHDL 64 -#define SCLEX_CAML 65 -#define SCLEX_BLITZBASIC 66 -#define SCLEX_PUREBASIC 67 -#define SCLEX_HASKELL 68 -#define SCLEX_PHPSCRIPT 69 -#define SCLEX_TADS3 70 -#define SCLEX_REBOL 71 -#define SCLEX_SMALLTALK 72 -#define SCLEX_FLAGSHIP 73 -#define SCLEX_CSOUND 74 -#define SCLEX_FREEBASIC 75 -#define SCLEX_INNOSETUP 76 -#define SCLEX_OPAL 77 -#define SCLEX_SPICE 78 -#define SCLEX_D 79 -#define SCLEX_CMAKE 80 -#define SCLEX_GAP 81 -#define SCLEX_PLM 82 -#define SCLEX_PROGRESS 83 -#define SCLEX_ABAQUS 84 -#define SCLEX_ASYMPTOTE 85 -#define SCLEX_R 86 -#define SCLEX_MAGIK 87 -#define SCLEX_POWERSHELL 88 -#define SCLEX_MYSQL 89 -#define SCLEX_PO 90 -#define SCLEX_TAL 91 -#define SCLEX_COBOL 92 -#define SCLEX_TACL 93 -#define SCLEX_SORCUS 94 -#define SCLEX_POWERPRO 95 -#define SCLEX_NIMROD 96 -#define SCLEX_SML 97 -#define SCLEX_MARKDOWN 98 -#define SCLEX_TXT2TAGS 99 -#define SCLEX_A68K 100 -#define SCLEX_MODULA 101 -#define SCLEX_COFFEESCRIPT 102 -#define SCLEX_TCMD 103 -#define SCLEX_AVS 104 -#define SCLEX_ECL 105 -#define SCLEX_OSCRIPT 106 -#define SCLEX_VISUALPROLOG 107 -#define SCLEX_LITERATEHASKELL 108 -#define SCLEX_STTXT 109 -#define SCLEX_KVIRC 110 -#define SCLEX_RUST 111 -#define SCLEX_DMAP 112 -#define SCLEX_AS 113 -#define SCLEX_DMIS 114 -#define SCLEX_REGISTRY 115 -#define SCLEX_BIBTEX 116 -#define SCLEX_SREC 117 -#define SCLEX_IHEX 118 -#define SCLEX_TEHEX 119 -#define SCLEX_JSON 120 -#define SCLEX_EDIFACT 121 -#define SCLEX_INDENT 122 -#define SCLEX_MAXIMA 123 -#define SCLEX_STATA 124 -#define SCLEX_SAS 125 -#define SCLEX_LPEG 999 -#define SCLEX_AUTOMATIC 1000 -#define SCE_P_DEFAULT 0 -#define SCE_P_COMMENTLINE 1 -#define SCE_P_NUMBER 2 -#define SCE_P_STRING 3 -#define SCE_P_CHARACTER 4 -#define SCE_P_WORD 5 -#define SCE_P_TRIPLE 6 -#define SCE_P_TRIPLEDOUBLE 7 -#define SCE_P_CLASSNAME 8 -#define SCE_P_DEFNAME 9 -#define SCE_P_OPERATOR 10 -#define SCE_P_IDENTIFIER 11 -#define SCE_P_COMMENTBLOCK 12 -#define SCE_P_STRINGEOL 13 -#define SCE_P_WORD2 14 -#define SCE_P_DECORATOR 15 -#define SCE_P_FSTRING 16 -#define SCE_P_FCHARACTER 17 -#define SCE_P_FTRIPLE 18 -#define SCE_P_FTRIPLEDOUBLE 19 -#define SCE_C_DEFAULT 0 -#define SCE_C_COMMENT 1 -#define SCE_C_COMMENTLINE 2 -#define SCE_C_COMMENTDOC 3 -#define SCE_C_NUMBER 4 -#define SCE_C_WORD 5 -#define SCE_C_STRING 6 -#define SCE_C_CHARACTER 7 -#define SCE_C_UUID 8 -#define SCE_C_PREPROCESSOR 9 -#define SCE_C_OPERATOR 10 -#define SCE_C_IDENTIFIER 11 -#define SCE_C_STRINGEOL 12 -#define SCE_C_VERBATIM 13 -#define SCE_C_REGEX 14 -#define SCE_C_COMMENTLINEDOC 15 -#define SCE_C_WORD2 16 -#define SCE_C_COMMENTDOCKEYWORD 17 -#define SCE_C_COMMENTDOCKEYWORDERROR 18 -#define SCE_C_GLOBALCLASS 19 -#define SCE_C_STRINGRAW 20 -#define SCE_C_TRIPLEVERBATIM 21 -#define SCE_C_HASHQUOTEDSTRING 22 -#define SCE_C_PREPROCESSORCOMMENT 23 -#define SCE_C_PREPROCESSORCOMMENTDOC 24 -#define SCE_C_USERLITERAL 25 -#define SCE_C_TASKMARKER 26 -#define SCE_C_ESCAPESEQUENCE 27 -#define SCE_D_DEFAULT 0 -#define SCE_D_COMMENT 1 -#define SCE_D_COMMENTLINE 2 -#define SCE_D_COMMENTDOC 3 -#define SCE_D_COMMENTNESTED 4 -#define SCE_D_NUMBER 5 -#define SCE_D_WORD 6 -#define SCE_D_WORD2 7 -#define SCE_D_WORD3 8 -#define SCE_D_TYPEDEF 9 -#define SCE_D_STRING 10 -#define SCE_D_STRINGEOL 11 -#define SCE_D_CHARACTER 12 -#define SCE_D_OPERATOR 13 -#define SCE_D_IDENTIFIER 14 -#define SCE_D_COMMENTLINEDOC 15 -#define SCE_D_COMMENTDOCKEYWORD 16 -#define SCE_D_COMMENTDOCKEYWORDERROR 17 -#define SCE_D_STRINGB 18 -#define SCE_D_STRINGR 19 -#define SCE_D_WORD5 20 -#define SCE_D_WORD6 21 -#define SCE_D_WORD7 22 -#define SCE_TCL_DEFAULT 0 -#define SCE_TCL_COMMENT 1 -#define SCE_TCL_COMMENTLINE 2 -#define SCE_TCL_NUMBER 3 -#define SCE_TCL_WORD_IN_QUOTE 4 -#define SCE_TCL_IN_QUOTE 5 -#define SCE_TCL_OPERATOR 6 -#define SCE_TCL_IDENTIFIER 7 -#define SCE_TCL_SUBSTITUTION 8 -#define SCE_TCL_SUB_BRACE 9 -#define SCE_TCL_MODIFIER 10 -#define SCE_TCL_EXPAND 11 -#define SCE_TCL_WORD 12 -#define SCE_TCL_WORD2 13 -#define SCE_TCL_WORD3 14 -#define SCE_TCL_WORD4 15 -#define SCE_TCL_WORD5 16 -#define SCE_TCL_WORD6 17 -#define SCE_TCL_WORD7 18 -#define SCE_TCL_WORD8 19 -#define SCE_TCL_COMMENT_BOX 20 -#define SCE_TCL_BLOCK_COMMENT 21 -#define SCE_H_DEFAULT 0 -#define SCE_H_TAG 1 -#define SCE_H_TAGUNKNOWN 2 -#define SCE_H_ATTRIBUTE 3 -#define SCE_H_ATTRIBUTEUNKNOWN 4 -#define SCE_H_NUMBER 5 -#define SCE_H_DOUBLESTRING 6 -#define SCE_H_SINGLESTRING 7 -#define SCE_H_OTHER 8 -#define SCE_H_COMMENT 9 -#define SCE_H_ENTITY 10 -#define SCE_H_TAGEND 11 -#define SCE_H_XMLSTART 12 -#define SCE_H_XMLEND 13 -#define SCE_H_SCRIPT 14 -#define SCE_H_ASP 15 -#define SCE_H_ASPAT 16 -#define SCE_H_CDATA 17 -#define SCE_H_QUESTION 18 -#define SCE_H_VALUE 19 -#define SCE_H_XCCOMMENT 20 -#define SCE_H_SGML_DEFAULT 21 -#define SCE_H_SGML_COMMAND 22 -#define SCE_H_SGML_1ST_PARAM 23 -#define SCE_H_SGML_DOUBLESTRING 24 -#define SCE_H_SGML_SIMPLESTRING 25 -#define SCE_H_SGML_ERROR 26 -#define SCE_H_SGML_SPECIAL 27 -#define SCE_H_SGML_ENTITY 28 -#define SCE_H_SGML_COMMENT 29 -#define SCE_H_SGML_1ST_PARAM_COMMENT 30 -#define SCE_H_SGML_BLOCK_DEFAULT 31 -#define SCE_HJ_START 40 -#define SCE_HJ_DEFAULT 41 -#define SCE_HJ_COMMENT 42 -#define SCE_HJ_COMMENTLINE 43 -#define SCE_HJ_COMMENTDOC 44 -#define SCE_HJ_NUMBER 45 -#define SCE_HJ_WORD 46 -#define SCE_HJ_KEYWORD 47 -#define SCE_HJ_DOUBLESTRING 48 -#define SCE_HJ_SINGLESTRING 49 -#define SCE_HJ_SYMBOLS 50 -#define SCE_HJ_STRINGEOL 51 -#define SCE_HJ_REGEX 52 -#define SCE_HJA_START 55 -#define SCE_HJA_DEFAULT 56 -#define SCE_HJA_COMMENT 57 -#define SCE_HJA_COMMENTLINE 58 -#define SCE_HJA_COMMENTDOC 59 -#define SCE_HJA_NUMBER 60 -#define SCE_HJA_WORD 61 -#define SCE_HJA_KEYWORD 62 -#define SCE_HJA_DOUBLESTRING 63 -#define SCE_HJA_SINGLESTRING 64 -#define SCE_HJA_SYMBOLS 65 -#define SCE_HJA_STRINGEOL 66 -#define SCE_HJA_REGEX 67 -#define SCE_HB_START 70 -#define SCE_HB_DEFAULT 71 -#define SCE_HB_COMMENTLINE 72 -#define SCE_HB_NUMBER 73 -#define SCE_HB_WORD 74 -#define SCE_HB_STRING 75 -#define SCE_HB_IDENTIFIER 76 -#define SCE_HB_STRINGEOL 77 -#define SCE_HBA_START 80 -#define SCE_HBA_DEFAULT 81 -#define SCE_HBA_COMMENTLINE 82 -#define SCE_HBA_NUMBER 83 -#define SCE_HBA_WORD 84 -#define SCE_HBA_STRING 85 -#define SCE_HBA_IDENTIFIER 86 -#define SCE_HBA_STRINGEOL 87 -#define SCE_HP_START 90 -#define SCE_HP_DEFAULT 91 -#define SCE_HP_COMMENTLINE 92 -#define SCE_HP_NUMBER 93 -#define SCE_HP_STRING 94 -#define SCE_HP_CHARACTER 95 -#define SCE_HP_WORD 96 -#define SCE_HP_TRIPLE 97 -#define SCE_HP_TRIPLEDOUBLE 98 -#define SCE_HP_CLASSNAME 99 -#define SCE_HP_DEFNAME 100 -#define SCE_HP_OPERATOR 101 -#define SCE_HP_IDENTIFIER 102 -#define SCE_HPHP_COMPLEX_VARIABLE 104 -#define SCE_HPA_START 105 -#define SCE_HPA_DEFAULT 106 -#define SCE_HPA_COMMENTLINE 107 -#define SCE_HPA_NUMBER 108 -#define SCE_HPA_STRING 109 -#define SCE_HPA_CHARACTER 110 -#define SCE_HPA_WORD 111 -#define SCE_HPA_TRIPLE 112 -#define SCE_HPA_TRIPLEDOUBLE 113 -#define SCE_HPA_CLASSNAME 114 -#define SCE_HPA_DEFNAME 115 -#define SCE_HPA_OPERATOR 116 -#define SCE_HPA_IDENTIFIER 117 -#define SCE_HPHP_DEFAULT 118 -#define SCE_HPHP_HSTRING 119 -#define SCE_HPHP_SIMPLESTRING 120 -#define SCE_HPHP_WORD 121 -#define SCE_HPHP_NUMBER 122 -#define SCE_HPHP_VARIABLE 123 -#define SCE_HPHP_COMMENT 124 -#define SCE_HPHP_COMMENTLINE 125 -#define SCE_HPHP_HSTRING_VARIABLE 126 -#define SCE_HPHP_OPERATOR 127 -#define SCE_PL_DEFAULT 0 -#define SCE_PL_ERROR 1 -#define SCE_PL_COMMENTLINE 2 -#define SCE_PL_POD 3 -#define SCE_PL_NUMBER 4 -#define SCE_PL_WORD 5 -#define SCE_PL_STRING 6 -#define SCE_PL_CHARACTER 7 -#define SCE_PL_PUNCTUATION 8 -#define SCE_PL_PREPROCESSOR 9 -#define SCE_PL_OPERATOR 10 -#define SCE_PL_IDENTIFIER 11 -#define SCE_PL_SCALAR 12 -#define SCE_PL_ARRAY 13 -#define SCE_PL_HASH 14 -#define SCE_PL_SYMBOLTABLE 15 -#define SCE_PL_VARIABLE_INDEXER 16 -#define SCE_PL_REGEX 17 -#define SCE_PL_REGSUBST 18 -#define SCE_PL_LONGQUOTE 19 -#define SCE_PL_BACKTICKS 20 -#define SCE_PL_DATASECTION 21 -#define SCE_PL_HERE_DELIM 22 -#define SCE_PL_HERE_Q 23 -#define SCE_PL_HERE_QQ 24 -#define SCE_PL_HERE_QX 25 -#define SCE_PL_STRING_Q 26 -#define SCE_PL_STRING_QQ 27 -#define SCE_PL_STRING_QX 28 -#define SCE_PL_STRING_QR 29 -#define SCE_PL_STRING_QW 30 -#define SCE_PL_POD_VERB 31 -#define SCE_PL_SUB_PROTOTYPE 40 -#define SCE_PL_FORMAT_IDENT 41 -#define SCE_PL_FORMAT 42 -#define SCE_PL_STRING_VAR 43 -#define SCE_PL_XLAT 44 -#define SCE_PL_REGEX_VAR 54 -#define SCE_PL_REGSUBST_VAR 55 -#define SCE_PL_BACKTICKS_VAR 57 -#define SCE_PL_HERE_QQ_VAR 61 -#define SCE_PL_HERE_QX_VAR 62 -#define SCE_PL_STRING_QQ_VAR 64 -#define SCE_PL_STRING_QX_VAR 65 -#define SCE_PL_STRING_QR_VAR 66 -#define SCE_RB_DEFAULT 0 -#define SCE_RB_ERROR 1 -#define SCE_RB_COMMENTLINE 2 -#define SCE_RB_POD 3 -#define SCE_RB_NUMBER 4 -#define SCE_RB_WORD 5 -#define SCE_RB_STRING 6 -#define SCE_RB_CHARACTER 7 -#define SCE_RB_CLASSNAME 8 -#define SCE_RB_DEFNAME 9 -#define SCE_RB_OPERATOR 10 -#define SCE_RB_IDENTIFIER 11 -#define SCE_RB_REGEX 12 -#define SCE_RB_GLOBAL 13 -#define SCE_RB_SYMBOL 14 -#define SCE_RB_MODULE_NAME 15 -#define SCE_RB_INSTANCE_VAR 16 -#define SCE_RB_CLASS_VAR 17 -#define SCE_RB_BACKTICKS 18 -#define SCE_RB_DATASECTION 19 -#define SCE_RB_HERE_DELIM 20 -#define SCE_RB_HERE_Q 21 -#define SCE_RB_HERE_QQ 22 -#define SCE_RB_HERE_QX 23 -#define SCE_RB_STRING_Q 24 -#define SCE_RB_STRING_QQ 25 -#define SCE_RB_STRING_QX 26 -#define SCE_RB_STRING_QR 27 -#define SCE_RB_STRING_QW 28 -#define SCE_RB_WORD_DEMOTED 29 -#define SCE_RB_STDIN 30 -#define SCE_RB_STDOUT 31 -#define SCE_RB_STDERR 40 -#define SCE_RB_UPPER_BOUND 41 -#define SCE_B_DEFAULT 0 -#define SCE_B_COMMENT 1 -#define SCE_B_NUMBER 2 -#define SCE_B_KEYWORD 3 -#define SCE_B_STRING 4 -#define SCE_B_PREPROCESSOR 5 -#define SCE_B_OPERATOR 6 -#define SCE_B_IDENTIFIER 7 -#define SCE_B_DATE 8 -#define SCE_B_STRINGEOL 9 -#define SCE_B_KEYWORD2 10 -#define SCE_B_KEYWORD3 11 -#define SCE_B_KEYWORD4 12 -#define SCE_B_CONSTANT 13 -#define SCE_B_ASM 14 -#define SCE_B_LABEL 15 -#define SCE_B_ERROR 16 -#define SCE_B_HEXNUMBER 17 -#define SCE_B_BINNUMBER 18 -#define SCE_B_COMMENTBLOCK 19 -#define SCE_B_DOCLINE 20 -#define SCE_B_DOCBLOCK 21 -#define SCE_B_DOCKEYWORD 22 -#define SCE_PROPS_DEFAULT 0 -#define SCE_PROPS_COMMENT 1 -#define SCE_PROPS_SECTION 2 -#define SCE_PROPS_ASSIGNMENT 3 -#define SCE_PROPS_DEFVAL 4 -#define SCE_PROPS_KEY 5 -#define SCE_L_DEFAULT 0 -#define SCE_L_COMMAND 1 -#define SCE_L_TAG 2 -#define SCE_L_MATH 3 -#define SCE_L_COMMENT 4 -#define SCE_L_TAG2 5 -#define SCE_L_MATH2 6 -#define SCE_L_COMMENT2 7 -#define SCE_L_VERBATIM 8 -#define SCE_L_SHORTCMD 9 -#define SCE_L_SPECIAL 10 -#define SCE_L_CMDOPT 11 -#define SCE_L_ERROR 12 -#define SCE_LUA_DEFAULT 0 -#define SCE_LUA_COMMENT 1 -#define SCE_LUA_COMMENTLINE 2 -#define SCE_LUA_COMMENTDOC 3 -#define SCE_LUA_NUMBER 4 -#define SCE_LUA_WORD 5 -#define SCE_LUA_STRING 6 -#define SCE_LUA_CHARACTER 7 -#define SCE_LUA_LITERALSTRING 8 -#define SCE_LUA_PREPROCESSOR 9 -#define SCE_LUA_OPERATOR 10 -#define SCE_LUA_IDENTIFIER 11 -#define SCE_LUA_STRINGEOL 12 -#define SCE_LUA_WORD2 13 -#define SCE_LUA_WORD3 14 -#define SCE_LUA_WORD4 15 -#define SCE_LUA_WORD5 16 -#define SCE_LUA_WORD6 17 -#define SCE_LUA_WORD7 18 -#define SCE_LUA_WORD8 19 -#define SCE_LUA_LABEL 20 -#define SCE_ERR_DEFAULT 0 -#define SCE_ERR_PYTHON 1 -#define SCE_ERR_GCC 2 -#define SCE_ERR_MS 3 -#define SCE_ERR_CMD 4 -#define SCE_ERR_BORLAND 5 -#define SCE_ERR_PERL 6 -#define SCE_ERR_NET 7 -#define SCE_ERR_LUA 8 -#define SCE_ERR_CTAG 9 -#define SCE_ERR_DIFF_CHANGED 10 -#define SCE_ERR_DIFF_ADDITION 11 -#define SCE_ERR_DIFF_DELETION 12 -#define SCE_ERR_DIFF_MESSAGE 13 -#define SCE_ERR_PHP 14 -#define SCE_ERR_ELF 15 -#define SCE_ERR_IFC 16 -#define SCE_ERR_IFORT 17 -#define SCE_ERR_ABSF 18 -#define SCE_ERR_TIDY 19 -#define SCE_ERR_JAVA_STACK 20 -#define SCE_ERR_VALUE 21 -#define SCE_ERR_GCC_INCLUDED_FROM 22 -#define SCE_ERR_ESCSEQ 23 -#define SCE_ERR_ESCSEQ_UNKNOWN 24 -#define SCE_ERR_ES_BLACK 40 -#define SCE_ERR_ES_RED 41 -#define SCE_ERR_ES_GREEN 42 -#define SCE_ERR_ES_BROWN 43 -#define SCE_ERR_ES_BLUE 44 -#define SCE_ERR_ES_MAGENTA 45 -#define SCE_ERR_ES_CYAN 46 -#define SCE_ERR_ES_GRAY 47 -#define SCE_ERR_ES_DARK_GRAY 48 -#define SCE_ERR_ES_BRIGHT_RED 49 -#define SCE_ERR_ES_BRIGHT_GREEN 50 -#define SCE_ERR_ES_YELLOW 51 -#define SCE_ERR_ES_BRIGHT_BLUE 52 -#define SCE_ERR_ES_BRIGHT_MAGENTA 53 -#define SCE_ERR_ES_BRIGHT_CYAN 54 -#define SCE_ERR_ES_WHITE 55 -#define SCE_BAT_DEFAULT 0 -#define SCE_BAT_COMMENT 1 -#define SCE_BAT_WORD 2 -#define SCE_BAT_LABEL 3 -#define SCE_BAT_HIDE 4 -#define SCE_BAT_COMMAND 5 -#define SCE_BAT_IDENTIFIER 6 -#define SCE_BAT_OPERATOR 7 -#define SCE_TCMD_DEFAULT 0 -#define SCE_TCMD_COMMENT 1 -#define SCE_TCMD_WORD 2 -#define SCE_TCMD_LABEL 3 -#define SCE_TCMD_HIDE 4 -#define SCE_TCMD_COMMAND 5 -#define SCE_TCMD_IDENTIFIER 6 -#define SCE_TCMD_OPERATOR 7 -#define SCE_TCMD_ENVIRONMENT 8 -#define SCE_TCMD_EXPANSION 9 -#define SCE_TCMD_CLABEL 10 -#define SCE_MAKE_DEFAULT 0 -#define SCE_MAKE_COMMENT 1 -#define SCE_MAKE_PREPROCESSOR 2 -#define SCE_MAKE_IDENTIFIER 3 -#define SCE_MAKE_OPERATOR 4 -#define SCE_MAKE_TARGET 5 -#define SCE_MAKE_IDEOL 9 -#define SCE_DIFF_DEFAULT 0 -#define SCE_DIFF_COMMENT 1 -#define SCE_DIFF_COMMAND 2 -#define SCE_DIFF_HEADER 3 -#define SCE_DIFF_POSITION 4 -#define SCE_DIFF_DELETED 5 -#define SCE_DIFF_ADDED 6 -#define SCE_DIFF_CHANGED 7 -#define SCE_DIFF_PATCH_ADD 8 -#define SCE_DIFF_PATCH_DELETE 9 -#define SCE_DIFF_REMOVED_PATCH_ADD 10 -#define SCE_DIFF_REMOVED_PATCH_DELETE 11 -#define SCE_CONF_DEFAULT 0 -#define SCE_CONF_COMMENT 1 -#define SCE_CONF_NUMBER 2 -#define SCE_CONF_IDENTIFIER 3 -#define SCE_CONF_EXTENSION 4 -#define SCE_CONF_PARAMETER 5 -#define SCE_CONF_STRING 6 -#define SCE_CONF_OPERATOR 7 -#define SCE_CONF_IP 8 -#define SCE_CONF_DIRECTIVE 9 -#define SCE_AVE_DEFAULT 0 -#define SCE_AVE_COMMENT 1 -#define SCE_AVE_NUMBER 2 -#define SCE_AVE_WORD 3 -#define SCE_AVE_STRING 6 -#define SCE_AVE_ENUM 7 -#define SCE_AVE_STRINGEOL 8 -#define SCE_AVE_IDENTIFIER 9 -#define SCE_AVE_OPERATOR 10 -#define SCE_AVE_WORD1 11 -#define SCE_AVE_WORD2 12 -#define SCE_AVE_WORD3 13 -#define SCE_AVE_WORD4 14 -#define SCE_AVE_WORD5 15 -#define SCE_AVE_WORD6 16 -#define SCE_ADA_DEFAULT 0 -#define SCE_ADA_WORD 1 -#define SCE_ADA_IDENTIFIER 2 -#define SCE_ADA_NUMBER 3 -#define SCE_ADA_DELIMITER 4 -#define SCE_ADA_CHARACTER 5 -#define SCE_ADA_CHARACTEREOL 6 -#define SCE_ADA_STRING 7 -#define SCE_ADA_STRINGEOL 8 -#define SCE_ADA_LABEL 9 -#define SCE_ADA_COMMENTLINE 10 -#define SCE_ADA_ILLEGAL 11 -#define SCE_BAAN_DEFAULT 0 -#define SCE_BAAN_COMMENT 1 -#define SCE_BAAN_COMMENTDOC 2 -#define SCE_BAAN_NUMBER 3 -#define SCE_BAAN_WORD 4 -#define SCE_BAAN_STRING 5 -#define SCE_BAAN_PREPROCESSOR 6 -#define SCE_BAAN_OPERATOR 7 -#define SCE_BAAN_IDENTIFIER 8 -#define SCE_BAAN_STRINGEOL 9 -#define SCE_BAAN_WORD2 10 -#define SCE_BAAN_WORD3 11 -#define SCE_BAAN_WORD4 12 -#define SCE_BAAN_WORD5 13 -#define SCE_BAAN_WORD6 14 -#define SCE_BAAN_WORD7 15 -#define SCE_BAAN_WORD8 16 -#define SCE_BAAN_WORD9 17 -#define SCE_BAAN_TABLEDEF 18 -#define SCE_BAAN_TABLESQL 19 -#define SCE_BAAN_FUNCTION 20 -#define SCE_BAAN_DOMDEF 21 -#define SCE_BAAN_FUNCDEF 22 -#define SCE_BAAN_OBJECTDEF 23 -#define SCE_BAAN_DEFINEDEF 24 -#define SCE_LISP_DEFAULT 0 -#define SCE_LISP_COMMENT 1 -#define SCE_LISP_NUMBER 2 -#define SCE_LISP_KEYWORD 3 -#define SCE_LISP_KEYWORD_KW 4 -#define SCE_LISP_SYMBOL 5 -#define SCE_LISP_STRING 6 -#define SCE_LISP_STRINGEOL 8 -#define SCE_LISP_IDENTIFIER 9 -#define SCE_LISP_OPERATOR 10 -#define SCE_LISP_SPECIAL 11 -#define SCE_LISP_MULTI_COMMENT 12 -#define SCE_EIFFEL_DEFAULT 0 -#define SCE_EIFFEL_COMMENTLINE 1 -#define SCE_EIFFEL_NUMBER 2 -#define SCE_EIFFEL_WORD 3 -#define SCE_EIFFEL_STRING 4 -#define SCE_EIFFEL_CHARACTER 5 -#define SCE_EIFFEL_OPERATOR 6 -#define SCE_EIFFEL_IDENTIFIER 7 -#define SCE_EIFFEL_STRINGEOL 8 -#define SCE_NNCRONTAB_DEFAULT 0 -#define SCE_NNCRONTAB_COMMENT 1 -#define SCE_NNCRONTAB_TASK 2 -#define SCE_NNCRONTAB_SECTION 3 -#define SCE_NNCRONTAB_KEYWORD 4 -#define SCE_NNCRONTAB_MODIFIER 5 -#define SCE_NNCRONTAB_ASTERISK 6 -#define SCE_NNCRONTAB_NUMBER 7 -#define SCE_NNCRONTAB_STRING 8 -#define SCE_NNCRONTAB_ENVIRONMENT 9 -#define SCE_NNCRONTAB_IDENTIFIER 10 -#define SCE_FORTH_DEFAULT 0 -#define SCE_FORTH_COMMENT 1 -#define SCE_FORTH_COMMENT_ML 2 -#define SCE_FORTH_IDENTIFIER 3 -#define SCE_FORTH_CONTROL 4 -#define SCE_FORTH_KEYWORD 5 -#define SCE_FORTH_DEFWORD 6 -#define SCE_FORTH_PREWORD1 7 -#define SCE_FORTH_PREWORD2 8 -#define SCE_FORTH_NUMBER 9 -#define SCE_FORTH_STRING 10 -#define SCE_FORTH_LOCALE 11 -#define SCE_MATLAB_DEFAULT 0 -#define SCE_MATLAB_COMMENT 1 -#define SCE_MATLAB_COMMAND 2 -#define SCE_MATLAB_NUMBER 3 -#define SCE_MATLAB_KEYWORD 4 -#define SCE_MATLAB_STRING 5 -#define SCE_MATLAB_OPERATOR 6 -#define SCE_MATLAB_IDENTIFIER 7 -#define SCE_MATLAB_DOUBLEQUOTESTRING 8 -#define SCE_MAXIMA_OPERATOR 0 -#define SCE_MAXIMA_COMMANDENDING 1 -#define SCE_MAXIMA_COMMENT 2 -#define SCE_MAXIMA_NUMBER 3 -#define SCE_MAXIMA_STRING 4 -#define SCE_MAXIMA_COMMAND 5 -#define SCE_MAXIMA_VARIABLE 6 -#define SCE_MAXIMA_UNKNOWN 7 -#define SCE_SCRIPTOL_DEFAULT 0 -#define SCE_SCRIPTOL_WHITE 1 -#define SCE_SCRIPTOL_COMMENTLINE 2 -#define SCE_SCRIPTOL_PERSISTENT 3 -#define SCE_SCRIPTOL_CSTYLE 4 -#define SCE_SCRIPTOL_COMMENTBLOCK 5 -#define SCE_SCRIPTOL_NUMBER 6 -#define SCE_SCRIPTOL_STRING 7 -#define SCE_SCRIPTOL_CHARACTER 8 -#define SCE_SCRIPTOL_STRINGEOL 9 -#define SCE_SCRIPTOL_KEYWORD 10 -#define SCE_SCRIPTOL_OPERATOR 11 -#define SCE_SCRIPTOL_IDENTIFIER 12 -#define SCE_SCRIPTOL_TRIPLE 13 -#define SCE_SCRIPTOL_CLASSNAME 14 -#define SCE_SCRIPTOL_PREPROCESSOR 15 -#define SCE_ASM_DEFAULT 0 -#define SCE_ASM_COMMENT 1 -#define SCE_ASM_NUMBER 2 -#define SCE_ASM_STRING 3 -#define SCE_ASM_OPERATOR 4 -#define SCE_ASM_IDENTIFIER 5 -#define SCE_ASM_CPUINSTRUCTION 6 -#define SCE_ASM_MATHINSTRUCTION 7 -#define SCE_ASM_REGISTER 8 -#define SCE_ASM_DIRECTIVE 9 -#define SCE_ASM_DIRECTIVEOPERAND 10 -#define SCE_ASM_COMMENTBLOCK 11 -#define SCE_ASM_CHARACTER 12 -#define SCE_ASM_STRINGEOL 13 -#define SCE_ASM_EXTINSTRUCTION 14 -#define SCE_ASM_COMMENTDIRECTIVE 15 -#define SCE_F_DEFAULT 0 -#define SCE_F_COMMENT 1 -#define SCE_F_NUMBER 2 -#define SCE_F_STRING1 3 -#define SCE_F_STRING2 4 -#define SCE_F_STRINGEOL 5 -#define SCE_F_OPERATOR 6 -#define SCE_F_IDENTIFIER 7 -#define SCE_F_WORD 8 -#define SCE_F_WORD2 9 -#define SCE_F_WORD3 10 -#define SCE_F_PREPROCESSOR 11 -#define SCE_F_OPERATOR2 12 -#define SCE_F_LABEL 13 -#define SCE_F_CONTINUATION 14 -#define SCE_CSS_DEFAULT 0 -#define SCE_CSS_TAG 1 -#define SCE_CSS_CLASS 2 -#define SCE_CSS_PSEUDOCLASS 3 -#define SCE_CSS_UNKNOWN_PSEUDOCLASS 4 -#define SCE_CSS_OPERATOR 5 -#define SCE_CSS_IDENTIFIER 6 -#define SCE_CSS_UNKNOWN_IDENTIFIER 7 -#define SCE_CSS_VALUE 8 -#define SCE_CSS_COMMENT 9 -#define SCE_CSS_ID 10 -#define SCE_CSS_IMPORTANT 11 -#define SCE_CSS_DIRECTIVE 12 -#define SCE_CSS_DOUBLESTRING 13 -#define SCE_CSS_SINGLESTRING 14 -#define SCE_CSS_IDENTIFIER2 15 -#define SCE_CSS_ATTRIBUTE 16 -#define SCE_CSS_IDENTIFIER3 17 -#define SCE_CSS_PSEUDOELEMENT 18 -#define SCE_CSS_EXTENDED_IDENTIFIER 19 -#define SCE_CSS_EXTENDED_PSEUDOCLASS 20 -#define SCE_CSS_EXTENDED_PSEUDOELEMENT 21 -#define SCE_CSS_MEDIA 22 -#define SCE_CSS_VARIABLE 23 -#define SCE_POV_DEFAULT 0 -#define SCE_POV_COMMENT 1 -#define SCE_POV_COMMENTLINE 2 -#define SCE_POV_NUMBER 3 -#define SCE_POV_OPERATOR 4 -#define SCE_POV_IDENTIFIER 5 -#define SCE_POV_STRING 6 -#define SCE_POV_STRINGEOL 7 -#define SCE_POV_DIRECTIVE 8 -#define SCE_POV_BADDIRECTIVE 9 -#define SCE_POV_WORD2 10 -#define SCE_POV_WORD3 11 -#define SCE_POV_WORD4 12 -#define SCE_POV_WORD5 13 -#define SCE_POV_WORD6 14 -#define SCE_POV_WORD7 15 -#define SCE_POV_WORD8 16 -#define SCE_LOUT_DEFAULT 0 -#define SCE_LOUT_COMMENT 1 -#define SCE_LOUT_NUMBER 2 -#define SCE_LOUT_WORD 3 -#define SCE_LOUT_WORD2 4 -#define SCE_LOUT_WORD3 5 -#define SCE_LOUT_WORD4 6 -#define SCE_LOUT_STRING 7 -#define SCE_LOUT_OPERATOR 8 -#define SCE_LOUT_IDENTIFIER 9 -#define SCE_LOUT_STRINGEOL 10 -#define SCE_ESCRIPT_DEFAULT 0 -#define SCE_ESCRIPT_COMMENT 1 -#define SCE_ESCRIPT_COMMENTLINE 2 -#define SCE_ESCRIPT_COMMENTDOC 3 -#define SCE_ESCRIPT_NUMBER 4 -#define SCE_ESCRIPT_WORD 5 -#define SCE_ESCRIPT_STRING 6 -#define SCE_ESCRIPT_OPERATOR 7 -#define SCE_ESCRIPT_IDENTIFIER 8 -#define SCE_ESCRIPT_BRACE 9 -#define SCE_ESCRIPT_WORD2 10 -#define SCE_ESCRIPT_WORD3 11 -#define SCE_PS_DEFAULT 0 -#define SCE_PS_COMMENT 1 -#define SCE_PS_DSC_COMMENT 2 -#define SCE_PS_DSC_VALUE 3 -#define SCE_PS_NUMBER 4 -#define SCE_PS_NAME 5 -#define SCE_PS_KEYWORD 6 -#define SCE_PS_LITERAL 7 -#define SCE_PS_IMMEVAL 8 -#define SCE_PS_PAREN_ARRAY 9 -#define SCE_PS_PAREN_DICT 10 -#define SCE_PS_PAREN_PROC 11 -#define SCE_PS_TEXT 12 -#define SCE_PS_HEXSTRING 13 -#define SCE_PS_BASE85STRING 14 -#define SCE_PS_BADSTRINGCHAR 15 -#define SCE_NSIS_DEFAULT 0 -#define SCE_NSIS_COMMENT 1 -#define SCE_NSIS_STRINGDQ 2 -#define SCE_NSIS_STRINGLQ 3 -#define SCE_NSIS_STRINGRQ 4 -#define SCE_NSIS_FUNCTION 5 -#define SCE_NSIS_VARIABLE 6 -#define SCE_NSIS_LABEL 7 -#define SCE_NSIS_USERDEFINED 8 -#define SCE_NSIS_SECTIONDEF 9 -#define SCE_NSIS_SUBSECTIONDEF 10 -#define SCE_NSIS_IFDEFINEDEF 11 -#define SCE_NSIS_MACRODEF 12 -#define SCE_NSIS_STRINGVAR 13 -#define SCE_NSIS_NUMBER 14 -#define SCE_NSIS_SECTIONGROUP 15 -#define SCE_NSIS_PAGEEX 16 -#define SCE_NSIS_FUNCTIONDEF 17 -#define SCE_NSIS_COMMENTBOX 18 -#define SCE_MMIXAL_LEADWS 0 -#define SCE_MMIXAL_COMMENT 1 -#define SCE_MMIXAL_LABEL 2 -#define SCE_MMIXAL_OPCODE 3 -#define SCE_MMIXAL_OPCODE_PRE 4 -#define SCE_MMIXAL_OPCODE_VALID 5 -#define SCE_MMIXAL_OPCODE_UNKNOWN 6 -#define SCE_MMIXAL_OPCODE_POST 7 -#define SCE_MMIXAL_OPERANDS 8 -#define SCE_MMIXAL_NUMBER 9 -#define SCE_MMIXAL_REF 10 -#define SCE_MMIXAL_CHAR 11 -#define SCE_MMIXAL_STRING 12 -#define SCE_MMIXAL_REGISTER 13 -#define SCE_MMIXAL_HEX 14 -#define SCE_MMIXAL_OPERATOR 15 -#define SCE_MMIXAL_SYMBOL 16 -#define SCE_MMIXAL_INCLUDE 17 -#define SCE_CLW_DEFAULT 0 -#define SCE_CLW_LABEL 1 -#define SCE_CLW_COMMENT 2 -#define SCE_CLW_STRING 3 -#define SCE_CLW_USER_IDENTIFIER 4 -#define SCE_CLW_INTEGER_CONSTANT 5 -#define SCE_CLW_REAL_CONSTANT 6 -#define SCE_CLW_PICTURE_STRING 7 -#define SCE_CLW_KEYWORD 8 -#define SCE_CLW_COMPILER_DIRECTIVE 9 -#define SCE_CLW_RUNTIME_EXPRESSIONS 10 -#define SCE_CLW_BUILTIN_PROCEDURES_FUNCTION 11 -#define SCE_CLW_STRUCTURE_DATA_TYPE 12 -#define SCE_CLW_ATTRIBUTE 13 -#define SCE_CLW_STANDARD_EQUATE 14 -#define SCE_CLW_ERROR 15 -#define SCE_CLW_DEPRECATED 16 -#define SCE_LOT_DEFAULT 0 -#define SCE_LOT_HEADER 1 -#define SCE_LOT_BREAK 2 -#define SCE_LOT_SET 3 -#define SCE_LOT_PASS 4 -#define SCE_LOT_FAIL 5 -#define SCE_LOT_ABORT 6 -#define SCE_YAML_DEFAULT 0 -#define SCE_YAML_COMMENT 1 -#define SCE_YAML_IDENTIFIER 2 -#define SCE_YAML_KEYWORD 3 -#define SCE_YAML_NUMBER 4 -#define SCE_YAML_REFERENCE 5 -#define SCE_YAML_DOCUMENT 6 -#define SCE_YAML_TEXT 7 -#define SCE_YAML_ERROR 8 -#define SCE_YAML_OPERATOR 9 -#define SCE_TEX_DEFAULT 0 -#define SCE_TEX_SPECIAL 1 -#define SCE_TEX_GROUP 2 -#define SCE_TEX_SYMBOL 3 -#define SCE_TEX_COMMAND 4 -#define SCE_TEX_TEXT 5 -#define SCE_METAPOST_DEFAULT 0 -#define SCE_METAPOST_SPECIAL 1 -#define SCE_METAPOST_GROUP 2 -#define SCE_METAPOST_SYMBOL 3 -#define SCE_METAPOST_COMMAND 4 -#define SCE_METAPOST_TEXT 5 -#define SCE_METAPOST_EXTRA 6 -#define SCE_ERLANG_DEFAULT 0 -#define SCE_ERLANG_COMMENT 1 -#define SCE_ERLANG_VARIABLE 2 -#define SCE_ERLANG_NUMBER 3 -#define SCE_ERLANG_KEYWORD 4 -#define SCE_ERLANG_STRING 5 -#define SCE_ERLANG_OPERATOR 6 -#define SCE_ERLANG_ATOM 7 -#define SCE_ERLANG_FUNCTION_NAME 8 -#define SCE_ERLANG_CHARACTER 9 -#define SCE_ERLANG_MACRO 10 -#define SCE_ERLANG_RECORD 11 -#define SCE_ERLANG_PREPROC 12 -#define SCE_ERLANG_NODE_NAME 13 -#define SCE_ERLANG_COMMENT_FUNCTION 14 -#define SCE_ERLANG_COMMENT_MODULE 15 -#define SCE_ERLANG_COMMENT_DOC 16 -#define SCE_ERLANG_COMMENT_DOC_MACRO 17 -#define SCE_ERLANG_ATOM_QUOTED 18 -#define SCE_ERLANG_MACRO_QUOTED 19 -#define SCE_ERLANG_RECORD_QUOTED 20 -#define SCE_ERLANG_NODE_NAME_QUOTED 21 -#define SCE_ERLANG_BIFS 22 -#define SCE_ERLANG_MODULES 23 -#define SCE_ERLANG_MODULES_ATT 24 -#define SCE_ERLANG_UNKNOWN 31 -#define SCE_MSSQL_DEFAULT 0 -#define SCE_MSSQL_COMMENT 1 -#define SCE_MSSQL_LINE_COMMENT 2 -#define SCE_MSSQL_NUMBER 3 -#define SCE_MSSQL_STRING 4 -#define SCE_MSSQL_OPERATOR 5 -#define SCE_MSSQL_IDENTIFIER 6 -#define SCE_MSSQL_VARIABLE 7 -#define SCE_MSSQL_COLUMN_NAME 8 -#define SCE_MSSQL_STATEMENT 9 -#define SCE_MSSQL_DATATYPE 10 -#define SCE_MSSQL_SYSTABLE 11 -#define SCE_MSSQL_GLOBAL_VARIABLE 12 -#define SCE_MSSQL_FUNCTION 13 -#define SCE_MSSQL_STORED_PROCEDURE 14 -#define SCE_MSSQL_DEFAULT_PREF_DATATYPE 15 -#define SCE_MSSQL_COLUMN_NAME_2 16 -#define SCE_V_DEFAULT 0 -#define SCE_V_COMMENT 1 -#define SCE_V_COMMENTLINE 2 -#define SCE_V_COMMENTLINEBANG 3 -#define SCE_V_NUMBER 4 -#define SCE_V_WORD 5 -#define SCE_V_STRING 6 -#define SCE_V_WORD2 7 -#define SCE_V_WORD3 8 -#define SCE_V_PREPROCESSOR 9 -#define SCE_V_OPERATOR 10 -#define SCE_V_IDENTIFIER 11 -#define SCE_V_STRINGEOL 12 -#define SCE_V_USER 19 -#define SCE_V_COMMENT_WORD 20 -#define SCE_V_INPUT 21 -#define SCE_V_OUTPUT 22 -#define SCE_V_INOUT 23 -#define SCE_V_PORT_CONNECT 24 -#define SCE_KIX_DEFAULT 0 -#define SCE_KIX_COMMENT 1 -#define SCE_KIX_STRING1 2 -#define SCE_KIX_STRING2 3 -#define SCE_KIX_NUMBER 4 -#define SCE_KIX_VAR 5 -#define SCE_KIX_MACRO 6 -#define SCE_KIX_KEYWORD 7 -#define SCE_KIX_FUNCTIONS 8 -#define SCE_KIX_OPERATOR 9 -#define SCE_KIX_COMMENTSTREAM 10 -#define SCE_KIX_IDENTIFIER 31 -#define SCE_GC_DEFAULT 0 -#define SCE_GC_COMMENTLINE 1 -#define SCE_GC_COMMENTBLOCK 2 -#define SCE_GC_GLOBAL 3 -#define SCE_GC_EVENT 4 -#define SCE_GC_ATTRIBUTE 5 -#define SCE_GC_CONTROL 6 -#define SCE_GC_COMMAND 7 -#define SCE_GC_STRING 8 -#define SCE_GC_OPERATOR 9 -#define SCE_SN_DEFAULT 0 -#define SCE_SN_CODE 1 -#define SCE_SN_COMMENTLINE 2 -#define SCE_SN_COMMENTLINEBANG 3 -#define SCE_SN_NUMBER 4 -#define SCE_SN_WORD 5 -#define SCE_SN_STRING 6 -#define SCE_SN_WORD2 7 -#define SCE_SN_WORD3 8 -#define SCE_SN_PREPROCESSOR 9 -#define SCE_SN_OPERATOR 10 -#define SCE_SN_IDENTIFIER 11 -#define SCE_SN_STRINGEOL 12 -#define SCE_SN_REGEXTAG 13 -#define SCE_SN_SIGNAL 14 -#define SCE_SN_USER 19 -#define SCE_AU3_DEFAULT 0 -#define SCE_AU3_COMMENT 1 -#define SCE_AU3_COMMENTBLOCK 2 -#define SCE_AU3_NUMBER 3 -#define SCE_AU3_FUNCTION 4 -#define SCE_AU3_KEYWORD 5 -#define SCE_AU3_MACRO 6 -#define SCE_AU3_STRING 7 -#define SCE_AU3_OPERATOR 8 -#define SCE_AU3_VARIABLE 9 -#define SCE_AU3_SENT 10 -#define SCE_AU3_PREPROCESSOR 11 -#define SCE_AU3_SPECIAL 12 -#define SCE_AU3_EXPAND 13 -#define SCE_AU3_COMOBJ 14 -#define SCE_AU3_UDF 15 -#define SCE_APDL_DEFAULT 0 -#define SCE_APDL_COMMENT 1 -#define SCE_APDL_COMMENTBLOCK 2 -#define SCE_APDL_NUMBER 3 -#define SCE_APDL_STRING 4 -#define SCE_APDL_OPERATOR 5 -#define SCE_APDL_WORD 6 -#define SCE_APDL_PROCESSOR 7 -#define SCE_APDL_COMMAND 8 -#define SCE_APDL_SLASHCOMMAND 9 -#define SCE_APDL_STARCOMMAND 10 -#define SCE_APDL_ARGUMENT 11 -#define SCE_APDL_FUNCTION 12 -#define SCE_SH_DEFAULT 0 -#define SCE_SH_ERROR 1 -#define SCE_SH_COMMENTLINE 2 -#define SCE_SH_NUMBER 3 -#define SCE_SH_WORD 4 -#define SCE_SH_STRING 5 -#define SCE_SH_CHARACTER 6 -#define SCE_SH_OPERATOR 7 -#define SCE_SH_IDENTIFIER 8 -#define SCE_SH_SCALAR 9 -#define SCE_SH_PARAM 10 -#define SCE_SH_BACKTICKS 11 -#define SCE_SH_HERE_DELIM 12 -#define SCE_SH_HERE_Q 13 -#define SCE_ASN1_DEFAULT 0 -#define SCE_ASN1_COMMENT 1 -#define SCE_ASN1_IDENTIFIER 2 -#define SCE_ASN1_STRING 3 -#define SCE_ASN1_OID 4 -#define SCE_ASN1_SCALAR 5 -#define SCE_ASN1_KEYWORD 6 -#define SCE_ASN1_ATTRIBUTE 7 -#define SCE_ASN1_DESCRIPTOR 8 -#define SCE_ASN1_TYPE 9 -#define SCE_ASN1_OPERATOR 10 -#define SCE_VHDL_DEFAULT 0 -#define SCE_VHDL_COMMENT 1 -#define SCE_VHDL_COMMENTLINEBANG 2 -#define SCE_VHDL_NUMBER 3 -#define SCE_VHDL_STRING 4 -#define SCE_VHDL_OPERATOR 5 -#define SCE_VHDL_IDENTIFIER 6 -#define SCE_VHDL_STRINGEOL 7 -#define SCE_VHDL_KEYWORD 8 -#define SCE_VHDL_STDOPERATOR 9 -#define SCE_VHDL_ATTRIBUTE 10 -#define SCE_VHDL_STDFUNCTION 11 -#define SCE_VHDL_STDPACKAGE 12 -#define SCE_VHDL_STDTYPE 13 -#define SCE_VHDL_USERWORD 14 -#define SCE_VHDL_BLOCK_COMMENT 15 -#define SCE_CAML_DEFAULT 0 -#define SCE_CAML_IDENTIFIER 1 -#define SCE_CAML_TAGNAME 2 -#define SCE_CAML_KEYWORD 3 -#define SCE_CAML_KEYWORD2 4 -#define SCE_CAML_KEYWORD3 5 -#define SCE_CAML_LINENUM 6 -#define SCE_CAML_OPERATOR 7 -#define SCE_CAML_NUMBER 8 -#define SCE_CAML_CHAR 9 -#define SCE_CAML_WHITE 10 -#define SCE_CAML_STRING 11 -#define SCE_CAML_COMMENT 12 -#define SCE_CAML_COMMENT1 13 -#define SCE_CAML_COMMENT2 14 -#define SCE_CAML_COMMENT3 15 -#define SCE_HA_DEFAULT 0 -#define SCE_HA_IDENTIFIER 1 -#define SCE_HA_KEYWORD 2 -#define SCE_HA_NUMBER 3 -#define SCE_HA_STRING 4 -#define SCE_HA_CHARACTER 5 -#define SCE_HA_CLASS 6 -#define SCE_HA_MODULE 7 -#define SCE_HA_CAPITAL 8 -#define SCE_HA_DATA 9 -#define SCE_HA_IMPORT 10 -#define SCE_HA_OPERATOR 11 -#define SCE_HA_INSTANCE 12 -#define SCE_HA_COMMENTLINE 13 -#define SCE_HA_COMMENTBLOCK 14 -#define SCE_HA_COMMENTBLOCK2 15 -#define SCE_HA_COMMENTBLOCK3 16 -#define SCE_HA_PRAGMA 17 -#define SCE_HA_PREPROCESSOR 18 -#define SCE_HA_STRINGEOL 19 -#define SCE_HA_RESERVED_OPERATOR 20 -#define SCE_HA_LITERATE_COMMENT 21 -#define SCE_HA_LITERATE_CODEDELIM 22 -#define SCE_T3_DEFAULT 0 -#define SCE_T3_X_DEFAULT 1 -#define SCE_T3_PREPROCESSOR 2 -#define SCE_T3_BLOCK_COMMENT 3 -#define SCE_T3_LINE_COMMENT 4 -#define SCE_T3_OPERATOR 5 -#define SCE_T3_KEYWORD 6 -#define SCE_T3_NUMBER 7 -#define SCE_T3_IDENTIFIER 8 -#define SCE_T3_S_STRING 9 -#define SCE_T3_D_STRING 10 -#define SCE_T3_X_STRING 11 -#define SCE_T3_LIB_DIRECTIVE 12 -#define SCE_T3_MSG_PARAM 13 -#define SCE_T3_HTML_TAG 14 -#define SCE_T3_HTML_DEFAULT 15 -#define SCE_T3_HTML_STRING 16 -#define SCE_T3_USER1 17 -#define SCE_T3_USER2 18 -#define SCE_T3_USER3 19 -#define SCE_T3_BRACE 20 -#define SCE_REBOL_DEFAULT 0 -#define SCE_REBOL_COMMENTLINE 1 -#define SCE_REBOL_COMMENTBLOCK 2 -#define SCE_REBOL_PREFACE 3 -#define SCE_REBOL_OPERATOR 4 -#define SCE_REBOL_CHARACTER 5 -#define SCE_REBOL_QUOTEDSTRING 6 -#define SCE_REBOL_BRACEDSTRING 7 -#define SCE_REBOL_NUMBER 8 -#define SCE_REBOL_PAIR 9 -#define SCE_REBOL_TUPLE 10 -#define SCE_REBOL_BINARY 11 -#define SCE_REBOL_MONEY 12 -#define SCE_REBOL_ISSUE 13 -#define SCE_REBOL_TAG 14 -#define SCE_REBOL_FILE 15 -#define SCE_REBOL_EMAIL 16 -#define SCE_REBOL_URL 17 -#define SCE_REBOL_DATE 18 -#define SCE_REBOL_TIME 19 -#define SCE_REBOL_IDENTIFIER 20 -#define SCE_REBOL_WORD 21 -#define SCE_REBOL_WORD2 22 -#define SCE_REBOL_WORD3 23 -#define SCE_REBOL_WORD4 24 -#define SCE_REBOL_WORD5 25 -#define SCE_REBOL_WORD6 26 -#define SCE_REBOL_WORD7 27 -#define SCE_REBOL_WORD8 28 -#define SCE_SQL_DEFAULT 0 -#define SCE_SQL_COMMENT 1 -#define SCE_SQL_COMMENTLINE 2 -#define SCE_SQL_COMMENTDOC 3 -#define SCE_SQL_NUMBER 4 -#define SCE_SQL_WORD 5 -#define SCE_SQL_STRING 6 -#define SCE_SQL_CHARACTER 7 -#define SCE_SQL_SQLPLUS 8 -#define SCE_SQL_SQLPLUS_PROMPT 9 -#define SCE_SQL_OPERATOR 10 -#define SCE_SQL_IDENTIFIER 11 -#define SCE_SQL_SQLPLUS_COMMENT 13 -#define SCE_SQL_COMMENTLINEDOC 15 -#define SCE_SQL_WORD2 16 -#define SCE_SQL_COMMENTDOCKEYWORD 17 -#define SCE_SQL_COMMENTDOCKEYWORDERROR 18 -#define SCE_SQL_USER1 19 -#define SCE_SQL_USER2 20 -#define SCE_SQL_USER3 21 -#define SCE_SQL_USER4 22 -#define SCE_SQL_QUOTEDIDENTIFIER 23 -#define SCE_SQL_QOPERATOR 24 -#define SCE_ST_DEFAULT 0 -#define SCE_ST_STRING 1 -#define SCE_ST_NUMBER 2 -#define SCE_ST_COMMENT 3 -#define SCE_ST_SYMBOL 4 -#define SCE_ST_BINARY 5 -#define SCE_ST_BOOL 6 -#define SCE_ST_SELF 7 -#define SCE_ST_SUPER 8 -#define SCE_ST_NIL 9 -#define SCE_ST_GLOBAL 10 -#define SCE_ST_RETURN 11 -#define SCE_ST_SPECIAL 12 -#define SCE_ST_KWSEND 13 -#define SCE_ST_ASSIGN 14 -#define SCE_ST_CHARACTER 15 -#define SCE_ST_SPEC_SEL 16 -#define SCE_FS_DEFAULT 0 -#define SCE_FS_COMMENT 1 -#define SCE_FS_COMMENTLINE 2 -#define SCE_FS_COMMENTDOC 3 -#define SCE_FS_COMMENTLINEDOC 4 -#define SCE_FS_COMMENTDOCKEYWORD 5 -#define SCE_FS_COMMENTDOCKEYWORDERROR 6 -#define SCE_FS_KEYWORD 7 -#define SCE_FS_KEYWORD2 8 -#define SCE_FS_KEYWORD3 9 -#define SCE_FS_KEYWORD4 10 -#define SCE_FS_NUMBER 11 -#define SCE_FS_STRING 12 -#define SCE_FS_PREPROCESSOR 13 -#define SCE_FS_OPERATOR 14 -#define SCE_FS_IDENTIFIER 15 -#define SCE_FS_DATE 16 -#define SCE_FS_STRINGEOL 17 -#define SCE_FS_CONSTANT 18 -#define SCE_FS_WORDOPERATOR 19 -#define SCE_FS_DISABLEDCODE 20 -#define SCE_FS_DEFAULT_C 21 -#define SCE_FS_COMMENTDOC_C 22 -#define SCE_FS_COMMENTLINEDOC_C 23 -#define SCE_FS_KEYWORD_C 24 -#define SCE_FS_KEYWORD2_C 25 -#define SCE_FS_NUMBER_C 26 -#define SCE_FS_STRING_C 27 -#define SCE_FS_PREPROCESSOR_C 28 -#define SCE_FS_OPERATOR_C 29 -#define SCE_FS_IDENTIFIER_C 30 -#define SCE_FS_STRINGEOL_C 31 -#define SCE_CSOUND_DEFAULT 0 -#define SCE_CSOUND_COMMENT 1 -#define SCE_CSOUND_NUMBER 2 -#define SCE_CSOUND_OPERATOR 3 -#define SCE_CSOUND_INSTR 4 -#define SCE_CSOUND_IDENTIFIER 5 -#define SCE_CSOUND_OPCODE 6 -#define SCE_CSOUND_HEADERSTMT 7 -#define SCE_CSOUND_USERKEYWORD 8 -#define SCE_CSOUND_COMMENTBLOCK 9 -#define SCE_CSOUND_PARAM 10 -#define SCE_CSOUND_ARATE_VAR 11 -#define SCE_CSOUND_KRATE_VAR 12 -#define SCE_CSOUND_IRATE_VAR 13 -#define SCE_CSOUND_GLOBAL_VAR 14 -#define SCE_CSOUND_STRINGEOL 15 -#define SCE_INNO_DEFAULT 0 -#define SCE_INNO_COMMENT 1 -#define SCE_INNO_KEYWORD 2 -#define SCE_INNO_PARAMETER 3 -#define SCE_INNO_SECTION 4 -#define SCE_INNO_PREPROC 5 -#define SCE_INNO_INLINE_EXPANSION 6 -#define SCE_INNO_COMMENT_PASCAL 7 -#define SCE_INNO_KEYWORD_PASCAL 8 -#define SCE_INNO_KEYWORD_USER 9 -#define SCE_INNO_STRING_DOUBLE 10 -#define SCE_INNO_STRING_SINGLE 11 -#define SCE_INNO_IDENTIFIER 12 -#define SCE_OPAL_SPACE 0 -#define SCE_OPAL_COMMENT_BLOCK 1 -#define SCE_OPAL_COMMENT_LINE 2 -#define SCE_OPAL_INTEGER 3 -#define SCE_OPAL_KEYWORD 4 -#define SCE_OPAL_SORT 5 -#define SCE_OPAL_STRING 6 -#define SCE_OPAL_PAR 7 -#define SCE_OPAL_BOOL_CONST 8 -#define SCE_OPAL_DEFAULT 32 -#define SCE_SPICE_DEFAULT 0 -#define SCE_SPICE_IDENTIFIER 1 -#define SCE_SPICE_KEYWORD 2 -#define SCE_SPICE_KEYWORD2 3 -#define SCE_SPICE_KEYWORD3 4 -#define SCE_SPICE_NUMBER 5 -#define SCE_SPICE_DELIMITER 6 -#define SCE_SPICE_VALUE 7 -#define SCE_SPICE_COMMENTLINE 8 -#define SCE_CMAKE_DEFAULT 0 -#define SCE_CMAKE_COMMENT 1 -#define SCE_CMAKE_STRINGDQ 2 -#define SCE_CMAKE_STRINGLQ 3 -#define SCE_CMAKE_STRINGRQ 4 -#define SCE_CMAKE_COMMANDS 5 -#define SCE_CMAKE_PARAMETERS 6 -#define SCE_CMAKE_VARIABLE 7 -#define SCE_CMAKE_USERDEFINED 8 -#define SCE_CMAKE_WHILEDEF 9 -#define SCE_CMAKE_FOREACHDEF 10 -#define SCE_CMAKE_IFDEFINEDEF 11 -#define SCE_CMAKE_MACRODEF 12 -#define SCE_CMAKE_STRINGVAR 13 -#define SCE_CMAKE_NUMBER 14 -#define SCE_GAP_DEFAULT 0 -#define SCE_GAP_IDENTIFIER 1 -#define SCE_GAP_KEYWORD 2 -#define SCE_GAP_KEYWORD2 3 -#define SCE_GAP_KEYWORD3 4 -#define SCE_GAP_KEYWORD4 5 -#define SCE_GAP_STRING 6 -#define SCE_GAP_CHAR 7 -#define SCE_GAP_OPERATOR 8 -#define SCE_GAP_COMMENT 9 -#define SCE_GAP_NUMBER 10 -#define SCE_GAP_STRINGEOL 11 -#define SCE_PLM_DEFAULT 0 -#define SCE_PLM_COMMENT 1 -#define SCE_PLM_STRING 2 -#define SCE_PLM_NUMBER 3 -#define SCE_PLM_IDENTIFIER 4 -#define SCE_PLM_OPERATOR 5 -#define SCE_PLM_CONTROL 6 -#define SCE_PLM_KEYWORD 7 -#define SCE_ABL_DEFAULT 0 -#define SCE_ABL_NUMBER 1 -#define SCE_ABL_WORD 2 -#define SCE_ABL_STRING 3 -#define SCE_ABL_CHARACTER 4 -#define SCE_ABL_PREPROCESSOR 5 -#define SCE_ABL_OPERATOR 6 -#define SCE_ABL_IDENTIFIER 7 -#define SCE_ABL_BLOCK 8 -#define SCE_ABL_END 9 -#define SCE_ABL_COMMENT 10 -#define SCE_ABL_TASKMARKER 11 -#define SCE_ABL_LINECOMMENT 12 -#define SCE_ABAQUS_DEFAULT 0 -#define SCE_ABAQUS_COMMENT 1 -#define SCE_ABAQUS_COMMENTBLOCK 2 -#define SCE_ABAQUS_NUMBER 3 -#define SCE_ABAQUS_STRING 4 -#define SCE_ABAQUS_OPERATOR 5 -#define SCE_ABAQUS_WORD 6 -#define SCE_ABAQUS_PROCESSOR 7 -#define SCE_ABAQUS_COMMAND 8 -#define SCE_ABAQUS_SLASHCOMMAND 9 -#define SCE_ABAQUS_STARCOMMAND 10 -#define SCE_ABAQUS_ARGUMENT 11 -#define SCE_ABAQUS_FUNCTION 12 -#define SCE_ASY_DEFAULT 0 -#define SCE_ASY_COMMENT 1 -#define SCE_ASY_COMMENTLINE 2 -#define SCE_ASY_NUMBER 3 -#define SCE_ASY_WORD 4 -#define SCE_ASY_STRING 5 -#define SCE_ASY_CHARACTER 6 -#define SCE_ASY_OPERATOR 7 -#define SCE_ASY_IDENTIFIER 8 -#define SCE_ASY_STRINGEOL 9 -#define SCE_ASY_COMMENTLINEDOC 10 -#define SCE_ASY_WORD2 11 -#define SCE_R_DEFAULT 0 -#define SCE_R_COMMENT 1 -#define SCE_R_KWORD 2 -#define SCE_R_BASEKWORD 3 -#define SCE_R_OTHERKWORD 4 -#define SCE_R_NUMBER 5 -#define SCE_R_STRING 6 -#define SCE_R_STRING2 7 -#define SCE_R_OPERATOR 8 -#define SCE_R_IDENTIFIER 9 -#define SCE_R_INFIX 10 -#define SCE_R_INFIXEOL 11 -#define SCE_MAGIK_DEFAULT 0 -#define SCE_MAGIK_COMMENT 1 -#define SCE_MAGIK_HYPER_COMMENT 16 -#define SCE_MAGIK_STRING 2 -#define SCE_MAGIK_CHARACTER 3 -#define SCE_MAGIK_NUMBER 4 -#define SCE_MAGIK_IDENTIFIER 5 -#define SCE_MAGIK_OPERATOR 6 -#define SCE_MAGIK_FLOW 7 -#define SCE_MAGIK_CONTAINER 8 -#define SCE_MAGIK_BRACKET_BLOCK 9 -#define SCE_MAGIK_BRACE_BLOCK 10 -#define SCE_MAGIK_SQBRACKET_BLOCK 11 -#define SCE_MAGIK_UNKNOWN_KEYWORD 12 -#define SCE_MAGIK_KEYWORD 13 -#define SCE_MAGIK_PRAGMA 14 -#define SCE_MAGIK_SYMBOL 15 -#define SCE_POWERSHELL_DEFAULT 0 -#define SCE_POWERSHELL_COMMENT 1 -#define SCE_POWERSHELL_STRING 2 -#define SCE_POWERSHELL_CHARACTER 3 -#define SCE_POWERSHELL_NUMBER 4 -#define SCE_POWERSHELL_VARIABLE 5 -#define SCE_POWERSHELL_OPERATOR 6 -#define SCE_POWERSHELL_IDENTIFIER 7 -#define SCE_POWERSHELL_KEYWORD 8 -#define SCE_POWERSHELL_CMDLET 9 -#define SCE_POWERSHELL_ALIAS 10 -#define SCE_POWERSHELL_FUNCTION 11 -#define SCE_POWERSHELL_USER1 12 -#define SCE_POWERSHELL_COMMENTSTREAM 13 -#define SCE_POWERSHELL_HERE_STRING 14 -#define SCE_POWERSHELL_HERE_CHARACTER 15 -#define SCE_POWERSHELL_COMMENTDOCKEYWORD 16 -#define SCE_MYSQL_DEFAULT 0 -#define SCE_MYSQL_COMMENT 1 -#define SCE_MYSQL_COMMENTLINE 2 -#define SCE_MYSQL_VARIABLE 3 -#define SCE_MYSQL_SYSTEMVARIABLE 4 -#define SCE_MYSQL_KNOWNSYSTEMVARIABLE 5 -#define SCE_MYSQL_NUMBER 6 -#define SCE_MYSQL_MAJORKEYWORD 7 -#define SCE_MYSQL_KEYWORD 8 -#define SCE_MYSQL_DATABASEOBJECT 9 -#define SCE_MYSQL_PROCEDUREKEYWORD 10 -#define SCE_MYSQL_STRING 11 -#define SCE_MYSQL_SQSTRING 12 -#define SCE_MYSQL_DQSTRING 13 -#define SCE_MYSQL_OPERATOR 14 -#define SCE_MYSQL_FUNCTION 15 -#define SCE_MYSQL_IDENTIFIER 16 -#define SCE_MYSQL_QUOTEDIDENTIFIER 17 -#define SCE_MYSQL_USER1 18 -#define SCE_MYSQL_USER2 19 -#define SCE_MYSQL_USER3 20 -#define SCE_MYSQL_HIDDENCOMMAND 21 -#define SCE_MYSQL_PLACEHOLDER 22 -#define SCE_PO_DEFAULT 0 -#define SCE_PO_COMMENT 1 -#define SCE_PO_MSGID 2 -#define SCE_PO_MSGID_TEXT 3 -#define SCE_PO_MSGSTR 4 -#define SCE_PO_MSGSTR_TEXT 5 -#define SCE_PO_MSGCTXT 6 -#define SCE_PO_MSGCTXT_TEXT 7 -#define SCE_PO_FUZZY 8 -#define SCE_PO_PROGRAMMER_COMMENT 9 -#define SCE_PO_REFERENCE 10 -#define SCE_PO_FLAGS 11 -#define SCE_PO_MSGID_TEXT_EOL 12 -#define SCE_PO_MSGSTR_TEXT_EOL 13 -#define SCE_PO_MSGCTXT_TEXT_EOL 14 -#define SCE_PO_ERROR 15 -#define SCE_PAS_DEFAULT 0 -#define SCE_PAS_IDENTIFIER 1 -#define SCE_PAS_COMMENT 2 -#define SCE_PAS_COMMENT2 3 -#define SCE_PAS_COMMENTLINE 4 -#define SCE_PAS_PREPROCESSOR 5 -#define SCE_PAS_PREPROCESSOR2 6 -#define SCE_PAS_NUMBER 7 -#define SCE_PAS_HEXNUMBER 8 -#define SCE_PAS_WORD 9 -#define SCE_PAS_STRING 10 -#define SCE_PAS_STRINGEOL 11 -#define SCE_PAS_CHARACTER 12 -#define SCE_PAS_OPERATOR 13 -#define SCE_PAS_ASM 14 -#define SCE_SORCUS_DEFAULT 0 -#define SCE_SORCUS_COMMAND 1 -#define SCE_SORCUS_PARAMETER 2 -#define SCE_SORCUS_COMMENTLINE 3 -#define SCE_SORCUS_STRING 4 -#define SCE_SORCUS_STRINGEOL 5 -#define SCE_SORCUS_IDENTIFIER 6 -#define SCE_SORCUS_OPERATOR 7 -#define SCE_SORCUS_NUMBER 8 -#define SCE_SORCUS_CONSTANT 9 -#define SCE_POWERPRO_DEFAULT 0 -#define SCE_POWERPRO_COMMENTBLOCK 1 -#define SCE_POWERPRO_COMMENTLINE 2 -#define SCE_POWERPRO_NUMBER 3 -#define SCE_POWERPRO_WORD 4 -#define SCE_POWERPRO_WORD2 5 -#define SCE_POWERPRO_WORD3 6 -#define SCE_POWERPRO_WORD4 7 -#define SCE_POWERPRO_DOUBLEQUOTEDSTRING 8 -#define SCE_POWERPRO_SINGLEQUOTEDSTRING 9 -#define SCE_POWERPRO_LINECONTINUE 10 -#define SCE_POWERPRO_OPERATOR 11 -#define SCE_POWERPRO_IDENTIFIER 12 -#define SCE_POWERPRO_STRINGEOL 13 -#define SCE_POWERPRO_VERBATIM 14 -#define SCE_POWERPRO_ALTQUOTE 15 -#define SCE_POWERPRO_FUNCTION 16 -#define SCE_SML_DEFAULT 0 -#define SCE_SML_IDENTIFIER 1 -#define SCE_SML_TAGNAME 2 -#define SCE_SML_KEYWORD 3 -#define SCE_SML_KEYWORD2 4 -#define SCE_SML_KEYWORD3 5 -#define SCE_SML_LINENUM 6 -#define SCE_SML_OPERATOR 7 -#define SCE_SML_NUMBER 8 -#define SCE_SML_CHAR 9 -#define SCE_SML_STRING 11 -#define SCE_SML_COMMENT 12 -#define SCE_SML_COMMENT1 13 -#define SCE_SML_COMMENT2 14 -#define SCE_SML_COMMENT3 15 -#define SCE_MARKDOWN_DEFAULT 0 -#define SCE_MARKDOWN_LINE_BEGIN 1 -#define SCE_MARKDOWN_STRONG1 2 -#define SCE_MARKDOWN_STRONG2 3 -#define SCE_MARKDOWN_EM1 4 -#define SCE_MARKDOWN_EM2 5 -#define SCE_MARKDOWN_HEADER1 6 -#define SCE_MARKDOWN_HEADER2 7 -#define SCE_MARKDOWN_HEADER3 8 -#define SCE_MARKDOWN_HEADER4 9 -#define SCE_MARKDOWN_HEADER5 10 -#define SCE_MARKDOWN_HEADER6 11 -#define SCE_MARKDOWN_PRECHAR 12 -#define SCE_MARKDOWN_ULIST_ITEM 13 -#define SCE_MARKDOWN_OLIST_ITEM 14 -#define SCE_MARKDOWN_BLOCKQUOTE 15 -#define SCE_MARKDOWN_STRIKEOUT 16 -#define SCE_MARKDOWN_HRULE 17 -#define SCE_MARKDOWN_LINK 18 -#define SCE_MARKDOWN_CODE 19 -#define SCE_MARKDOWN_CODE2 20 -#define SCE_MARKDOWN_CODEBK 21 -#define SCE_TXT2TAGS_DEFAULT 0 -#define SCE_TXT2TAGS_LINE_BEGIN 1 -#define SCE_TXT2TAGS_STRONG1 2 -#define SCE_TXT2TAGS_STRONG2 3 -#define SCE_TXT2TAGS_EM1 4 -#define SCE_TXT2TAGS_EM2 5 -#define SCE_TXT2TAGS_HEADER1 6 -#define SCE_TXT2TAGS_HEADER2 7 -#define SCE_TXT2TAGS_HEADER3 8 -#define SCE_TXT2TAGS_HEADER4 9 -#define SCE_TXT2TAGS_HEADER5 10 -#define SCE_TXT2TAGS_HEADER6 11 -#define SCE_TXT2TAGS_PRECHAR 12 -#define SCE_TXT2TAGS_ULIST_ITEM 13 -#define SCE_TXT2TAGS_OLIST_ITEM 14 -#define SCE_TXT2TAGS_BLOCKQUOTE 15 -#define SCE_TXT2TAGS_STRIKEOUT 16 -#define SCE_TXT2TAGS_HRULE 17 -#define SCE_TXT2TAGS_LINK 18 -#define SCE_TXT2TAGS_CODE 19 -#define SCE_TXT2TAGS_CODE2 20 -#define SCE_TXT2TAGS_CODEBK 21 -#define SCE_TXT2TAGS_COMMENT 22 -#define SCE_TXT2TAGS_OPTION 23 -#define SCE_TXT2TAGS_PREPROC 24 -#define SCE_TXT2TAGS_POSTPROC 25 -#define SCE_A68K_DEFAULT 0 -#define SCE_A68K_COMMENT 1 -#define SCE_A68K_NUMBER_DEC 2 -#define SCE_A68K_NUMBER_BIN 3 -#define SCE_A68K_NUMBER_HEX 4 -#define SCE_A68K_STRING1 5 -#define SCE_A68K_OPERATOR 6 -#define SCE_A68K_CPUINSTRUCTION 7 -#define SCE_A68K_EXTINSTRUCTION 8 -#define SCE_A68K_REGISTER 9 -#define SCE_A68K_DIRECTIVE 10 -#define SCE_A68K_MACRO_ARG 11 -#define SCE_A68K_LABEL 12 -#define SCE_A68K_STRING2 13 -#define SCE_A68K_IDENTIFIER 14 -#define SCE_A68K_MACRO_DECLARATION 15 -#define SCE_A68K_COMMENT_WORD 16 -#define SCE_A68K_COMMENT_SPECIAL 17 -#define SCE_A68K_COMMENT_DOXYGEN 18 -#define SCE_MODULA_DEFAULT 0 -#define SCE_MODULA_COMMENT 1 -#define SCE_MODULA_DOXYCOMM 2 -#define SCE_MODULA_DOXYKEY 3 -#define SCE_MODULA_KEYWORD 4 -#define SCE_MODULA_RESERVED 5 -#define SCE_MODULA_NUMBER 6 -#define SCE_MODULA_BASENUM 7 -#define SCE_MODULA_FLOAT 8 -#define SCE_MODULA_STRING 9 -#define SCE_MODULA_STRSPEC 10 -#define SCE_MODULA_CHAR 11 -#define SCE_MODULA_CHARSPEC 12 -#define SCE_MODULA_PROC 13 -#define SCE_MODULA_PRAGMA 14 -#define SCE_MODULA_PRGKEY 15 -#define SCE_MODULA_OPERATOR 16 -#define SCE_MODULA_BADSTR 17 -#define SCE_COFFEESCRIPT_DEFAULT 0 -#define SCE_COFFEESCRIPT_COMMENT 1 -#define SCE_COFFEESCRIPT_COMMENTLINE 2 -#define SCE_COFFEESCRIPT_COMMENTDOC 3 -#define SCE_COFFEESCRIPT_NUMBER 4 -#define SCE_COFFEESCRIPT_WORD 5 -#define SCE_COFFEESCRIPT_STRING 6 -#define SCE_COFFEESCRIPT_CHARACTER 7 -#define SCE_COFFEESCRIPT_UUID 8 -#define SCE_COFFEESCRIPT_PREPROCESSOR 9 -#define SCE_COFFEESCRIPT_OPERATOR 10 -#define SCE_COFFEESCRIPT_IDENTIFIER 11 -#define SCE_COFFEESCRIPT_STRINGEOL 12 -#define SCE_COFFEESCRIPT_VERBATIM 13 -#define SCE_COFFEESCRIPT_REGEX 14 -#define SCE_COFFEESCRIPT_COMMENTLINEDOC 15 -#define SCE_COFFEESCRIPT_WORD2 16 -#define SCE_COFFEESCRIPT_COMMENTDOCKEYWORD 17 -#define SCE_COFFEESCRIPT_COMMENTDOCKEYWORDERROR 18 -#define SCE_COFFEESCRIPT_GLOBALCLASS 19 -#define SCE_COFFEESCRIPT_STRINGRAW 20 -#define SCE_COFFEESCRIPT_TRIPLEVERBATIM 21 -#define SCE_COFFEESCRIPT_COMMENTBLOCK 22 -#define SCE_COFFEESCRIPT_VERBOSE_REGEX 23 -#define SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT 24 -#define SCE_COFFEESCRIPT_INSTANCEPROPERTY 25 -#define SCE_AVS_DEFAULT 0 -#define SCE_AVS_COMMENTBLOCK 1 -#define SCE_AVS_COMMENTBLOCKN 2 -#define SCE_AVS_COMMENTLINE 3 -#define SCE_AVS_NUMBER 4 -#define SCE_AVS_OPERATOR 5 -#define SCE_AVS_IDENTIFIER 6 -#define SCE_AVS_STRING 7 -#define SCE_AVS_TRIPLESTRING 8 -#define SCE_AVS_KEYWORD 9 -#define SCE_AVS_FILTER 10 -#define SCE_AVS_PLUGIN 11 -#define SCE_AVS_FUNCTION 12 -#define SCE_AVS_CLIPPROP 13 -#define SCE_AVS_USERDFN 14 -#define SCE_ECL_DEFAULT 0 -#define SCE_ECL_COMMENT 1 -#define SCE_ECL_COMMENTLINE 2 -#define SCE_ECL_NUMBER 3 -#define SCE_ECL_STRING 4 -#define SCE_ECL_WORD0 5 -#define SCE_ECL_OPERATOR 6 -#define SCE_ECL_CHARACTER 7 -#define SCE_ECL_UUID 8 -#define SCE_ECL_PREPROCESSOR 9 -#define SCE_ECL_UNKNOWN 10 -#define SCE_ECL_IDENTIFIER 11 -#define SCE_ECL_STRINGEOL 12 -#define SCE_ECL_VERBATIM 13 -#define SCE_ECL_REGEX 14 -#define SCE_ECL_COMMENTLINEDOC 15 -#define SCE_ECL_WORD1 16 -#define SCE_ECL_COMMENTDOCKEYWORD 17 -#define SCE_ECL_COMMENTDOCKEYWORDERROR 18 -#define SCE_ECL_WORD2 19 -#define SCE_ECL_WORD3 20 -#define SCE_ECL_WORD4 21 -#define SCE_ECL_WORD5 22 -#define SCE_ECL_COMMENTDOC 23 -#define SCE_ECL_ADDED 24 -#define SCE_ECL_DELETED 25 -#define SCE_ECL_CHANGED 26 -#define SCE_ECL_MOVED 27 -#define SCE_OSCRIPT_DEFAULT 0 -#define SCE_OSCRIPT_LINE_COMMENT 1 -#define SCE_OSCRIPT_BLOCK_COMMENT 2 -#define SCE_OSCRIPT_DOC_COMMENT 3 -#define SCE_OSCRIPT_PREPROCESSOR 4 -#define SCE_OSCRIPT_NUMBER 5 -#define SCE_OSCRIPT_SINGLEQUOTE_STRING 6 -#define SCE_OSCRIPT_DOUBLEQUOTE_STRING 7 -#define SCE_OSCRIPT_CONSTANT 8 -#define SCE_OSCRIPT_IDENTIFIER 9 -#define SCE_OSCRIPT_GLOBAL 10 -#define SCE_OSCRIPT_KEYWORD 11 -#define SCE_OSCRIPT_OPERATOR 12 -#define SCE_OSCRIPT_LABEL 13 -#define SCE_OSCRIPT_TYPE 14 -#define SCE_OSCRIPT_FUNCTION 15 -#define SCE_OSCRIPT_OBJECT 16 -#define SCE_OSCRIPT_PROPERTY 17 -#define SCE_OSCRIPT_METHOD 18 -#define SCE_VISUALPROLOG_DEFAULT 0 -#define SCE_VISUALPROLOG_KEY_MAJOR 1 -#define SCE_VISUALPROLOG_KEY_MINOR 2 -#define SCE_VISUALPROLOG_KEY_DIRECTIVE 3 -#define SCE_VISUALPROLOG_COMMENT_BLOCK 4 -#define SCE_VISUALPROLOG_COMMENT_LINE 5 -#define SCE_VISUALPROLOG_COMMENT_KEY 6 -#define SCE_VISUALPROLOG_COMMENT_KEY_ERROR 7 -#define SCE_VISUALPROLOG_IDENTIFIER 8 -#define SCE_VISUALPROLOG_VARIABLE 9 -#define SCE_VISUALPROLOG_ANONYMOUS 10 -#define SCE_VISUALPROLOG_NUMBER 11 -#define SCE_VISUALPROLOG_OPERATOR 12 -#define SCE_VISUALPROLOG_CHARACTER 13 -#define SCE_VISUALPROLOG_CHARACTER_TOO_MANY 14 -#define SCE_VISUALPROLOG_CHARACTER_ESCAPE_ERROR 15 -#define SCE_VISUALPROLOG_STRING 16 -#define SCE_VISUALPROLOG_STRING_ESCAPE 17 -#define SCE_VISUALPROLOG_STRING_ESCAPE_ERROR 18 -#define SCE_VISUALPROLOG_STRING_EOL_OPEN 19 -#define SCE_VISUALPROLOG_STRING_VERBATIM 20 -#define SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL 21 -#define SCE_VISUALPROLOG_STRING_VERBATIM_EOL 22 -#define SCE_STTXT_DEFAULT 0 -#define SCE_STTXT_COMMENT 1 -#define SCE_STTXT_COMMENTLINE 2 -#define SCE_STTXT_KEYWORD 3 -#define SCE_STTXT_TYPE 4 -#define SCE_STTXT_FUNCTION 5 -#define SCE_STTXT_FB 6 -#define SCE_STTXT_NUMBER 7 -#define SCE_STTXT_HEXNUMBER 8 -#define SCE_STTXT_PRAGMA 9 -#define SCE_STTXT_OPERATOR 10 -#define SCE_STTXT_CHARACTER 11 -#define SCE_STTXT_STRING1 12 -#define SCE_STTXT_STRING2 13 -#define SCE_STTXT_STRINGEOL 14 -#define SCE_STTXT_IDENTIFIER 15 -#define SCE_STTXT_DATETIME 16 -#define SCE_STTXT_VARS 17 -#define SCE_STTXT_PRAGMAS 18 -#define SCE_KVIRC_DEFAULT 0 -#define SCE_KVIRC_COMMENT 1 -#define SCE_KVIRC_COMMENTBLOCK 2 -#define SCE_KVIRC_STRING 3 -#define SCE_KVIRC_WORD 4 -#define SCE_KVIRC_KEYWORD 5 -#define SCE_KVIRC_FUNCTION_KEYWORD 6 -#define SCE_KVIRC_FUNCTION 7 -#define SCE_KVIRC_VARIABLE 8 -#define SCE_KVIRC_NUMBER 9 -#define SCE_KVIRC_OPERATOR 10 -#define SCE_KVIRC_STRING_FUNCTION 11 -#define SCE_KVIRC_STRING_VARIABLE 12 -#define SCE_RUST_DEFAULT 0 -#define SCE_RUST_COMMENTBLOCK 1 -#define SCE_RUST_COMMENTLINE 2 -#define SCE_RUST_COMMENTBLOCKDOC 3 -#define SCE_RUST_COMMENTLINEDOC 4 -#define SCE_RUST_NUMBER 5 -#define SCE_RUST_WORD 6 -#define SCE_RUST_WORD2 7 -#define SCE_RUST_WORD3 8 -#define SCE_RUST_WORD4 9 -#define SCE_RUST_WORD5 10 -#define SCE_RUST_WORD6 11 -#define SCE_RUST_WORD7 12 -#define SCE_RUST_STRING 13 -#define SCE_RUST_STRINGR 14 -#define SCE_RUST_CHARACTER 15 -#define SCE_RUST_OPERATOR 16 -#define SCE_RUST_IDENTIFIER 17 -#define SCE_RUST_LIFETIME 18 -#define SCE_RUST_MACRO 19 -#define SCE_RUST_LEXERROR 20 -#define SCE_RUST_BYTESTRING 21 -#define SCE_RUST_BYTESTRINGR 22 -#define SCE_RUST_BYTECHARACTER 23 -#define SCE_DMAP_DEFAULT 0 -#define SCE_DMAP_COMMENT 1 -#define SCE_DMAP_NUMBER 2 -#define SCE_DMAP_STRING1 3 -#define SCE_DMAP_STRING2 4 -#define SCE_DMAP_STRINGEOL 5 -#define SCE_DMAP_OPERATOR 6 -#define SCE_DMAP_IDENTIFIER 7 -#define SCE_DMAP_WORD 8 -#define SCE_DMAP_WORD2 9 -#define SCE_DMAP_WORD3 10 -#define SCE_DMIS_DEFAULT 0 -#define SCE_DMIS_COMMENT 1 -#define SCE_DMIS_STRING 2 -#define SCE_DMIS_NUMBER 3 -#define SCE_DMIS_KEYWORD 4 -#define SCE_DMIS_MAJORWORD 5 -#define SCE_DMIS_MINORWORD 6 -#define SCE_DMIS_UNSUPPORTED_MAJOR 7 -#define SCE_DMIS_UNSUPPORTED_MINOR 8 -#define SCE_DMIS_LABEL 9 -#define SCE_REG_DEFAULT 0 -#define SCE_REG_COMMENT 1 -#define SCE_REG_VALUENAME 2 -#define SCE_REG_STRING 3 -#define SCE_REG_HEXDIGIT 4 -#define SCE_REG_VALUETYPE 5 -#define SCE_REG_ADDEDKEY 6 -#define SCE_REG_DELETEDKEY 7 -#define SCE_REG_ESCAPED 8 -#define SCE_REG_KEYPATH_GUID 9 -#define SCE_REG_STRING_GUID 10 -#define SCE_REG_PARAMETER 11 -#define SCE_REG_OPERATOR 12 -#define SCE_BIBTEX_DEFAULT 0 -#define SCE_BIBTEX_ENTRY 1 -#define SCE_BIBTEX_UNKNOWN_ENTRY 2 -#define SCE_BIBTEX_KEY 3 -#define SCE_BIBTEX_PARAMETER 4 -#define SCE_BIBTEX_VALUE 5 -#define SCE_BIBTEX_COMMENT 6 -#define SCE_HEX_DEFAULT 0 -#define SCE_HEX_RECSTART 1 -#define SCE_HEX_RECTYPE 2 -#define SCE_HEX_RECTYPE_UNKNOWN 3 -#define SCE_HEX_BYTECOUNT 4 -#define SCE_HEX_BYTECOUNT_WRONG 5 -#define SCE_HEX_NOADDRESS 6 -#define SCE_HEX_DATAADDRESS 7 -#define SCE_HEX_RECCOUNT 8 -#define SCE_HEX_STARTADDRESS 9 -#define SCE_HEX_ADDRESSFIELD_UNKNOWN 10 -#define SCE_HEX_EXTENDEDADDRESS 11 -#define SCE_HEX_DATA_ODD 12 -#define SCE_HEX_DATA_EVEN 13 -#define SCE_HEX_DATA_UNKNOWN 14 -#define SCE_HEX_DATA_EMPTY 15 -#define SCE_HEX_CHECKSUM 16 -#define SCE_HEX_CHECKSUM_WRONG 17 -#define SCE_HEX_GARBAGE 18 -#define SCE_JSON_DEFAULT 0 -#define SCE_JSON_NUMBER 1 -#define SCE_JSON_STRING 2 -#define SCE_JSON_STRINGEOL 3 -#define SCE_JSON_PROPERTYNAME 4 -#define SCE_JSON_ESCAPESEQUENCE 5 -#define SCE_JSON_LINECOMMENT 6 -#define SCE_JSON_BLOCKCOMMENT 7 -#define SCE_JSON_OPERATOR 8 -#define SCE_JSON_URI 9 -#define SCE_JSON_COMPACTIRI 10 -#define SCE_JSON_KEYWORD 11 -#define SCE_JSON_LDKEYWORD 12 -#define SCE_JSON_ERROR 13 -#define SCE_EDI_DEFAULT 0 -#define SCE_EDI_SEGMENTSTART 1 -#define SCE_EDI_SEGMENTEND 2 -#define SCE_EDI_SEP_ELEMENT 3 -#define SCE_EDI_SEP_COMPOSITE 4 -#define SCE_EDI_SEP_RELEASE 5 -#define SCE_EDI_UNA 6 -#define SCE_EDI_UNH 7 -#define SCE_EDI_BADSEGMENT 8 -#define SCE_STATA_DEFAULT 0 -#define SCE_STATA_COMMENT 1 -#define SCE_STATA_COMMENTLINE 2 -#define SCE_STATA_COMMENTBLOCK 3 -#define SCE_STATA_NUMBER 4 -#define SCE_STATA_OPERATOR 5 -#define SCE_STATA_IDENTIFIER 6 -#define SCE_STATA_STRING 7 -#define SCE_STATA_TYPE 8 -#define SCE_STATA_WORD 9 -#define SCE_STATA_GLOBAL_MACRO 10 -#define SCE_STATA_MACRO 11 -#define SCE_SAS_DEFAULT 0 -#define SCE_SAS_COMMENT 1 -#define SCE_SAS_COMMENTLINE 2 -#define SCE_SAS_COMMENTBLOCK 3 -#define SCE_SAS_NUMBER 4 -#define SCE_SAS_OPERATOR 5 -#define SCE_SAS_IDENTIFIER 6 -#define SCE_SAS_STRING 7 -#define SCE_SAS_TYPE 8 -#define SCE_SAS_WORD 9 -#define SCE_SAS_GLOBAL_MACRO 10 -#define SCE_SAS_MACRO 11 -#define SCE_SAS_MACRO_KEYWORD 12 -#define SCE_SAS_BLOCK_KEYWORD 13 -#define SCE_SAS_MACRO_FUNCTION 14 -#define SCE_SAS_STATEMENT 15 -/* --Autogenerated -- end of section automatically generated from Scintilla.iface */ - -#endif diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/Sci_Position.h b/3rdparty/unioncode-qscintilla214/scintilla/include/Sci_Position.h deleted file mode 100644 index abd0f3408..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/Sci_Position.h +++ /dev/null @@ -1,29 +0,0 @@ -// Scintilla source code edit control -/** @file Sci_Position.h - ** Define the Sci_Position type used in Scintilla's external interfaces. - ** These need to be available to clients written in C so are not in a C++ namespace. - **/ -// Copyright 2015 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#ifndef SCI_POSITION_H -#define SCI_POSITION_H - -#include - -// Basic signed type used throughout interface -typedef ptrdiff_t Sci_Position; - -// Unsigned variant used for ILexer::Lex and ILexer::Fold -typedef size_t Sci_PositionU; - -// For Sci_CharacterRange which is defined as long to be compatible with Win32 CHARRANGE -typedef long Sci_PositionCR; - -#ifdef _WIN32 - #define SCI_METHOD __stdcall -#else - #define SCI_METHOD -#endif - -#endif diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/Scintilla.h b/3rdparty/unioncode-qscintilla214/scintilla/include/Scintilla.h deleted file mode 100644 index d148734a0..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/Scintilla.h +++ /dev/null @@ -1,1263 +0,0 @@ -/* Scintilla source code edit control */ -/** @file Scintilla.h - ** Interface to the edit control. - **/ -/* Copyright 1998-2003 by Neil Hodgson - * The License.txt file describes the conditions under which this software may be distributed. */ - -/* Most of this file is automatically generated from the Scintilla.iface interface definition - * file which contains any comments about the definitions. HFacer.py does the generation. */ - -#ifndef SCINTILLA_H -#define SCINTILLA_H - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) -/* Return false on failure: */ -int Scintilla_RegisterClasses(void *hInstance); -int Scintilla_ReleaseResources(void); -#endif -int Scintilla_LinkLexers(void); - -#ifdef __cplusplus -} -#endif - -// Include header that defines basic numeric types. -#include - -// Define uptr_t, an unsigned integer type large enough to hold a pointer. -typedef uintptr_t uptr_t; -// Define sptr_t, a signed integer large enough to hold a pointer. -typedef intptr_t sptr_t; - -#include "Sci_Position.h" - -typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam); - -/* ++Autogenerated -- start of section automatically generated from Scintilla.iface */ -#define INVALID_POSITION -1 -#define SCI_START 2000 -#define SCI_OPTIONAL_START 3000 -#define SCI_LEXER_START 4000 -#define SCI_ADDTEXT 2001 -#define SCI_ADDSTYLEDTEXT 2002 -#define SCI_INSERTTEXT 2003 -#define SCI_CHANGEINSERTION 2672 -#define SCI_CLEARALL 2004 -#define SCI_DELETERANGE 2645 -#define SCI_CLEARDOCUMENTSTYLE 2005 -#define SCI_GETLENGTH 2006 -#define SCI_GETCHARAT 2007 -#define SCI_GETCURRENTPOS 2008 -#define SCI_GETANCHOR 2009 -#define SCI_GETSTYLEAT 2010 -#define SCI_REDO 2011 -#define SCI_SETUNDOCOLLECTION 2012 -#define SCI_SELECTALL 2013 -#define SCI_SETSAVEPOINT 2014 -#define SCI_GETSTYLEDTEXT 2015 -#define SCI_CANREDO 2016 -#define SCI_MARKERLINEFROMHANDLE 2017 -#define SCI_MARKERDELETEHANDLE 2018 -#define SCI_GETUNDOCOLLECTION 2019 -#define SCWS_INVISIBLE 0 -#define SCWS_VISIBLEALWAYS 1 -#define SCWS_VISIBLEAFTERINDENT 2 -#define SCWS_VISIBLEONLYININDENT 3 -#define SCI_GETVIEWWS 2020 -#define SCI_SETVIEWWS 2021 -#define SCTD_LONGARROW 0 -#define SCTD_STRIKEOUT 1 -#define SCI_GETTABDRAWMODE 2698 -#define SCI_SETTABDRAWMODE 2699 -#define SCI_POSITIONFROMPOINT 2022 -#define SCI_POSITIONFROMPOINTCLOSE 2023 -#define SCI_GOTOLINE 2024 -#define SCI_GOTOPOS 2025 -#define SCI_SETANCHOR 2026 -#define SCI_GETCURLINE 2027 -#define SCI_GETENDSTYLED 2028 -#define SC_EOL_CRLF 0 -#define SC_EOL_CR 1 -#define SC_EOL_LF 2 -#define SCI_CONVERTEOLS 2029 -#define SCI_GETEOLMODE 2030 -#define SCI_SETEOLMODE 2031 -#define SCI_STARTSTYLING 2032 -#define SCI_SETSTYLING 2033 -#define SCI_GETBUFFEREDDRAW 2034 -#define SCI_SETBUFFEREDDRAW 2035 -#define SCI_SETTABWIDTH 2036 -#define SCI_GETTABWIDTH 2121 -#define SCI_CLEARTABSTOPS 2675 -#define SCI_ADDTABSTOP 2676 -#define SCI_GETNEXTTABSTOP 2677 -#define SC_CP_UTF8 65001 -#define SCI_SETCODEPAGE 2037 -#define SC_IME_WINDOWED 0 -#define SC_IME_INLINE 1 -#define SCI_GETIMEINTERACTION 2678 -#define SCI_SETIMEINTERACTION 2679 -#define MARKER_MAX 31 -#define SC_MARK_CIRCLE 0 -#define SC_MARK_ROUNDRECT 1 -#define SC_MARK_ARROW 2 -#define SC_MARK_SMALLRECT 3 -#define SC_MARK_SHORTARROW 4 -#define SC_MARK_EMPTY 5 -#define SC_MARK_ARROWDOWN 6 -#define SC_MARK_MINUS 7 -#define SC_MARK_PLUS 8 -#define SC_MARK_VLINE 9 -#define SC_MARK_LCORNER 10 -#define SC_MARK_TCORNER 11 -#define SC_MARK_BOXPLUS 12 -#define SC_MARK_BOXPLUSCONNECTED 13 -#define SC_MARK_BOXMINUS 14 -#define SC_MARK_BOXMINUSCONNECTED 15 -#define SC_MARK_LCORNERCURVE 16 -#define SC_MARK_TCORNERCURVE 17 -#define SC_MARK_CIRCLEPLUS 18 -#define SC_MARK_CIRCLEPLUSCONNECTED 19 -#define SC_MARK_CIRCLEMINUS 20 -#define SC_MARK_CIRCLEMINUSCONNECTED 21 -#define SC_MARK_BACKGROUND 22 -#define SC_MARK_DOTDOTDOT 23 -#define SC_MARK_ARROWS 24 -#define SC_MARK_PIXMAP 25 -#define SC_MARK_FULLRECT 26 -#define SC_MARK_LEFTRECT 27 -#define SC_MARK_AVAILABLE 28 -#define SC_MARK_UNDERLINE 29 -#define SC_MARK_RGBAIMAGE 30 -#define SC_MARK_BOOKMARK 31 -#define SC_MARK_CHARACTER 10000 -#define SC_MARKNUM_FOLDEREND 25 -#define SC_MARKNUM_FOLDEROPENMID 26 -#define SC_MARKNUM_FOLDERMIDTAIL 27 -#define SC_MARKNUM_FOLDERTAIL 28 -#define SC_MARKNUM_FOLDERSUB 29 -#define SC_MARKNUM_FOLDER 30 -#define SC_MARKNUM_FOLDEROPEN 31 -#define SC_MASK_FOLDERS 0xFE000000 -#define SCI_MARKERDEFINE 2040 -#define SCI_MARKERSETFORE 2041 -#define SCI_MARKERSETBACK 2042 -#define SCI_MARKERSETBACKSELECTED 2292 -#define SCI_MARKERENABLEHIGHLIGHT 2293 -#define SCI_MARKERADD 2043 -#define SCI_MARKERDELETE 2044 -#define SCI_MARKERDELETEALL 2045 -#define SCI_MARKERGET 2046 -#define SCI_MARKERNEXT 2047 -#define SCI_MARKERPREVIOUS 2048 -#define SCI_MARKERDEFINEPIXMAP 2049 -#define SCI_MARKERADDSET 2466 -#define SCI_MARKERSETALPHA 2476 -#define SC_MAX_MARGIN 4 -#define SC_MARGIN_SYMBOL 0 -#define SC_MARGIN_NUMBER 1 -#define SC_MARGIN_BACK 2 -#define SC_MARGIN_FORE 3 -#define SC_MARGIN_TEXT 4 -#define SC_MARGIN_RTEXT 5 -#define SC_MARGIN_COLOUR 6 -#define SCI_SETMARGINTYPEN 2240 -#define SCI_GETMARGINTYPEN 2241 -#define SCI_SETMARGINWIDTHN 2242 -#define SCI_GETMARGINWIDTHN 2243 -#define SCI_SETMARGINMASKN 2244 -#define SCI_GETMARGINMASKN 2245 -#define SCI_SETMARGINSENSITIVEN 2246 -#define SCI_GETMARGINSENSITIVEN 2247 -#define SCI_SETMARGINCURSORN 2248 -#define SCI_GETMARGINCURSORN 2249 -#define SCI_SETMARGINBACKN 2250 -#define SCI_GETMARGINBACKN 2251 -#define SCI_SETMARGINS 2252 -#define SCI_GETMARGINS 2253 -#define STYLE_DEFAULT 32 -#define STYLE_LINENUMBER 33 -#define STYLE_BRACELIGHT 34 -#define STYLE_BRACEBAD 35 -#define STYLE_CONTROLCHAR 36 -#define STYLE_INDENTGUIDE 37 -#define STYLE_CALLTIP 38 -#define STYLE_FOLDDISPLAYTEXT 39 -#define STYLE_LASTPREDEFINED 39 -#define STYLE_MAX 255 -#define SC_CHARSET_ANSI 0 -#define SC_CHARSET_DEFAULT 1 -#define SC_CHARSET_BALTIC 186 -#define SC_CHARSET_CHINESEBIG5 136 -#define SC_CHARSET_EASTEUROPE 238 -#define SC_CHARSET_GB2312 134 -#define SC_CHARSET_GREEK 161 -#define SC_CHARSET_HANGUL 129 -#define SC_CHARSET_MAC 77 -#define SC_CHARSET_OEM 255 -#define SC_CHARSET_RUSSIAN 204 -#define SC_CHARSET_OEM866 866 -#define SC_CHARSET_CYRILLIC 1251 -#define SC_CHARSET_SHIFTJIS 128 -#define SC_CHARSET_SYMBOL 2 -#define SC_CHARSET_TURKISH 162 -#define SC_CHARSET_JOHAB 130 -#define SC_CHARSET_HEBREW 177 -#define SC_CHARSET_ARABIC 178 -#define SC_CHARSET_VIETNAMESE 163 -#define SC_CHARSET_THAI 222 -#define SC_CHARSET_8859_15 1000 -#define SCI_STYLECLEARALL 2050 -#define SCI_STYLESETFORE 2051 -#define SCI_STYLESETBACK 2052 -#define SCI_STYLESETBOLD 2053 -#define SCI_STYLESETITALIC 2054 -#define SCI_STYLESETSIZE 2055 -#define SCI_STYLESETFONT 2056 -#define SCI_STYLESETEOLFILLED 2057 -#define SCI_STYLERESETDEFAULT 2058 -#define SCI_STYLESETUNDERLINE 2059 -#define SC_CASE_MIXED 0 -#define SC_CASE_UPPER 1 -#define SC_CASE_LOWER 2 -#define SC_CASE_CAMEL 3 -#define SCI_STYLEGETFORE 2481 -#define SCI_STYLEGETBACK 2482 -#define SCI_STYLEGETBOLD 2483 -#define SCI_STYLEGETITALIC 2484 -#define SCI_STYLEGETSIZE 2485 -#define SCI_STYLEGETFONT 2486 -#define SCI_STYLEGETEOLFILLED 2487 -#define SCI_STYLEGETUNDERLINE 2488 -#define SCI_STYLEGETCASE 2489 -#define SCI_STYLEGETCHARACTERSET 2490 -#define SCI_STYLEGETVISIBLE 2491 -#define SCI_STYLEGETCHANGEABLE 2492 -#define SCI_STYLEGETHOTSPOT 2493 -#define SCI_STYLESETCASE 2060 -#define SC_FONT_SIZE_MULTIPLIER 100 -#define SCI_STYLESETSIZEFRACTIONAL 2061 -#define SCI_STYLEGETSIZEFRACTIONAL 2062 -#define SC_WEIGHT_NORMAL 400 -#define SC_WEIGHT_SEMIBOLD 600 -#define SC_WEIGHT_BOLD 700 -#define SCI_STYLESETWEIGHT 2063 -#define SCI_STYLEGETWEIGHT 2064 -#define SCI_STYLESETCHARACTERSET 2066 -#define SCI_STYLESETHOTSPOT 2409 -#define SCI_SETSELFORE 2067 -#define SCI_SETSELBACK 2068 -#define SCI_GETSELALPHA 2477 -#define SCI_SETSELALPHA 2478 -#define SCI_GETSELEOLFILLED 2479 -#define SCI_SETSELEOLFILLED 2480 -#define SCI_SETCARETFORE 2069 -#define SCI_ASSIGNCMDKEY 2070 -#define SCI_CLEARCMDKEY 2071 -#define SCI_CLEARALLCMDKEYS 2072 -#define SCI_SETSTYLINGEX 2073 -#define SCI_STYLESETVISIBLE 2074 -#define SCI_GETCARETPERIOD 2075 -#define SCI_SETCARETPERIOD 2076 -#define SCI_SETWORDCHARS 2077 -#define SCI_GETWORDCHARS 2646 -#define SCI_BEGINUNDOACTION 2078 -#define SCI_ENDUNDOACTION 2079 -#define INDIC_PLAIN 0 -#define INDIC_SQUIGGLE 1 -#define INDIC_TT 2 -#define INDIC_DIAGONAL 3 -#define INDIC_STRIKE 4 -#define INDIC_HIDDEN 5 -#define INDIC_BOX 6 -#define INDIC_ROUNDBOX 7 -#define INDIC_STRAIGHTBOX 8 -#define INDIC_DASH 9 -#define INDIC_DOTS 10 -#define INDIC_SQUIGGLELOW 11 -#define INDIC_DOTBOX 12 -#define INDIC_SQUIGGLEPIXMAP 13 -#define INDIC_COMPOSITIONTHICK 14 -#define INDIC_COMPOSITIONTHIN 15 -#define INDIC_FULLBOX 16 -#define INDIC_TEXTFORE 17 -#define INDIC_POINT 18 -#define INDIC_POINTCHARACTER 19 -#define INDIC_GRADIENT 20 -#define INDIC_GRADIENTCENTRE 21 -#define INDIC_IME 32 -#define INDIC_IME_MAX 35 -#define INDIC_MAX 35 -#define INDIC_CONTAINER 8 -#define INDIC0_MASK 0x20 -#define INDIC1_MASK 0x40 -#define INDIC2_MASK 0x80 -#define INDICS_MASK 0xE0 -#define SCI_INDICSETSTYLE 2080 -#define SCI_INDICGETSTYLE 2081 -#define SCI_INDICSETFORE 2082 -#define SCI_INDICGETFORE 2083 -#define SCI_INDICSETUNDER 2510 -#define SCI_INDICGETUNDER 2511 -#define SCI_INDICSETHOVERSTYLE 2680 -#define SCI_INDICGETHOVERSTYLE 2681 -#define SCI_INDICSETHOVERFORE 2682 -#define SCI_INDICGETHOVERFORE 2683 -#define SC_INDICVALUEBIT 0x1000000 -#define SC_INDICVALUEMASK 0xFFFFFF -#define SC_INDICFLAG_VALUEFORE 1 -#define SCI_INDICSETFLAGS 2684 -#define SCI_INDICGETFLAGS 2685 -#define SCI_SETWHITESPACEFORE 2084 -#define SCI_SETWHITESPACEBACK 2085 -#define SCI_SETWHITESPACESIZE 2086 -#define SCI_GETWHITESPACESIZE 2087 -#define SCI_SETLINESTATE 2092 -#define SCI_GETLINESTATE 2093 -#define SCI_GETMAXLINESTATE 2094 -#define SCI_GETCARETLINEVISIBLE 2095 -#define SCI_SETCARETLINEVISIBLE 2096 -#define SCI_GETCARETLINEBACK 2097 -#define SCI_SETCARETLINEBACK 2098 -#define SCI_GETCARETLINEFRAME 2704 -#define SCI_SETCARETLINEFRAME 2705 -#define SCI_STYLESETCHANGEABLE 2099 -#define SCI_AUTOCSHOW 2100 -#define SCI_AUTOCCANCEL 2101 -#define SCI_AUTOCACTIVE 2102 -#define SCI_AUTOCPOSSTART 2103 -#define SCI_AUTOCCOMPLETE 2104 -#define SCI_AUTOCSTOPS 2105 -#define SCI_AUTOCSETSEPARATOR 2106 -#define SCI_AUTOCGETSEPARATOR 2107 -#define SCI_AUTOCSELECT 2108 -#define SCI_AUTOCSETCANCELATSTART 2110 -#define SCI_AUTOCGETCANCELATSTART 2111 -#define SCI_AUTOCSETFILLUPS 2112 -#define SCI_AUTOCSETCHOOSESINGLE 2113 -#define SCI_AUTOCGETCHOOSESINGLE 2114 -#define SCI_AUTOCSETIGNORECASE 2115 -#define SCI_AUTOCGETIGNORECASE 2116 -#define SCI_USERLISTSHOW 2117 -#define SCI_AUTOCSETAUTOHIDE 2118 -#define SCI_AUTOCGETAUTOHIDE 2119 -#define SCI_AUTOCSETDROPRESTOFWORD 2270 -#define SCI_AUTOCGETDROPRESTOFWORD 2271 -#define SCI_REGISTERIMAGE 2405 -#define SCI_CLEARREGISTEREDIMAGES 2408 -#define SCI_AUTOCGETTYPESEPARATOR 2285 -#define SCI_AUTOCSETTYPESEPARATOR 2286 -#define SCI_AUTOCSETMAXWIDTH 2208 -#define SCI_AUTOCGETMAXWIDTH 2209 -#define SCI_AUTOCSETMAXHEIGHT 2210 -#define SCI_AUTOCGETMAXHEIGHT 2211 -#define SCI_SETINDENT 2122 -#define SCI_GETINDENT 2123 -#define SCI_SETUSETABS 2124 -#define SCI_GETUSETABS 2125 -#define SCI_SETLINEINDENTATION 2126 -#define SCI_GETLINEINDENTATION 2127 -#define SCI_GETLINEINDENTPOSITION 2128 -#define SCI_GETCOLUMN 2129 -#define SCI_COUNTCHARACTERS 2633 -#define SCI_COUNTCODEUNITS 2715 -#define SCI_SETHSCROLLBAR 2130 -#define SCI_GETHSCROLLBAR 2131 -#define SC_IV_NONE 0 -#define SC_IV_REAL 1 -#define SC_IV_LOOKFORWARD 2 -#define SC_IV_LOOKBOTH 3 -#define SCI_SETINDENTATIONGUIDES 2132 -#define SCI_GETINDENTATIONGUIDES 2133 -#define SCI_SETHIGHLIGHTGUIDE 2134 -#define SCI_GETHIGHLIGHTGUIDE 2135 -#define SCI_GETLINEENDPOSITION 2136 -#define SCI_GETCODEPAGE 2137 -#define SCI_GETCARETFORE 2138 -#define SCI_GETREADONLY 2140 -#define SCI_SETCURRENTPOS 2141 -#define SCI_SETSELECTIONSTART 2142 -#define SCI_GETSELECTIONSTART 2143 -#define SCI_SETSELECTIONEND 2144 -#define SCI_GETSELECTIONEND 2145 -#define SCI_SETEMPTYSELECTION 2556 -#define SCI_SETPRINTMAGNIFICATION 2146 -#define SCI_GETPRINTMAGNIFICATION 2147 -#define SC_PRINT_NORMAL 0 -#define SC_PRINT_INVERTLIGHT 1 -#define SC_PRINT_BLACKONWHITE 2 -#define SC_PRINT_COLOURONWHITE 3 -#define SC_PRINT_COLOURONWHITEDEFAULTBG 4 -#define SC_PRINT_SCREENCOLOURS 5 -#define SCI_SETPRINTCOLOURMODE 2148 -#define SCI_GETPRINTCOLOURMODE 2149 -#define SCFIND_WHOLEWORD 0x2 -#define SCFIND_MATCHCASE 0x4 -#define SCFIND_WORDSTART 0x00100000 -#define SCFIND_REGEXP 0x00200000 -#define SCFIND_POSIX 0x00400000 -#define SCFIND_CXX11REGEX 0x00800000 -#define SCI_FINDTEXT 2150 -#define SCI_FORMATRANGE 2151 -#define SCI_GETFIRSTVISIBLELINE 2152 -#define SCI_GETLINE 2153 -#define SCI_GETLINECOUNT 2154 -#define SCI_SETMARGINLEFT 2155 -#define SCI_GETMARGINLEFT 2156 -#define SCI_SETMARGINRIGHT 2157 -#define SCI_GETMARGINRIGHT 2158 -#define SCI_GETMODIFY 2159 -#define SCI_SETSEL 2160 -#define SCI_GETSELTEXT 2161 -#define SCI_GETTEXTRANGE 2162 -#define SCI_HIDESELECTION 2163 -#define SCI_POINTXFROMPOSITION 2164 -#define SCI_POINTYFROMPOSITION 2165 -#define SCI_LINEFROMPOSITION 2166 -#define SCI_POSITIONFROMLINE 2167 -#define SCI_LINESCROLL 2168 -#define SCI_SCROLLCARET 2169 -#define SCI_SCROLLRANGE 2569 -#define SCI_REPLACESEL 2170 -#define SCI_SETREADONLY 2171 -#define SCI_NULL 2172 -#define SCI_CANPASTE 2173 -#define SCI_CANUNDO 2174 -#define SCI_EMPTYUNDOBUFFER 2175 -#define SCI_UNDO 2176 -#define SCI_CUT 2177 -#define SCI_COPY 2178 -#define SCI_PASTE 2179 -#define SCI_CLEAR 2180 -#define SCI_SETTEXT 2181 -#define SCI_GETTEXT 2182 -#define SCI_GETTEXTLENGTH 2183 -#define SCI_GETDIRECTFUNCTION 2184 -#define SCI_GETDIRECTPOINTER 2185 -#define SCI_SETOVERTYPE 2186 -#define SCI_GETOVERTYPE 2187 -#define SCI_SETCARETWIDTH 2188 -#define SCI_GETCARETWIDTH 2189 -#define SCI_SETTARGETSTART 2190 -#define SCI_GETTARGETSTART 2191 -#define SCI_SETTARGETEND 2192 -#define SCI_GETTARGETEND 2193 -#define SCI_SETTARGETRANGE 2686 -#define SCI_GETTARGETTEXT 2687 -#define SCI_TARGETFROMSELECTION 2287 -#define SCI_TARGETWHOLEDOCUMENT 2690 -#define SCI_REPLACETARGET 2194 -#define SCI_REPLACETARGETRE 2195 -#define SCI_SEARCHINTARGET 2197 -#define SCI_SETSEARCHFLAGS 2198 -#define SCI_GETSEARCHFLAGS 2199 -#define SCI_CALLTIPSHOW 2200 -#define SCI_CALLTIPCANCEL 2201 -#define SCI_CALLTIPACTIVE 2202 -#define SCI_CALLTIPPOSSTART 2203 -#define SCI_CALLTIPSETPOSSTART 2214 -#define SCI_CALLTIPSETHLT 2204 -#define SCI_CALLTIPSETBACK 2205 -#define SCI_CALLTIPSETFORE 2206 -#define SCI_CALLTIPSETFOREHLT 2207 -#define SCI_CALLTIPUSESTYLE 2212 -#define SCI_CALLTIPSETPOSITION 2213 -#define SCI_VISIBLEFROMDOCLINE 2220 -#define SCI_DOCLINEFROMVISIBLE 2221 -#define SCI_WRAPCOUNT 2235 -#define SC_FOLDLEVELBASE 0x400 -#define SC_FOLDLEVELWHITEFLAG 0x1000 -#define SC_FOLDLEVELHEADERFLAG 0x2000 -#define SC_FOLDLEVELNUMBERMASK 0x0FFF -#define SCI_SETFOLDLEVEL 2222 -#define SCI_GETFOLDLEVEL 2223 -#define SCI_GETLASTCHILD 2224 -#define SCI_GETFOLDPARENT 2225 -#define SCI_SHOWLINES 2226 -#define SCI_HIDELINES 2227 -#define SCI_GETLINEVISIBLE 2228 -#define SCI_GETALLLINESVISIBLE 2236 -#define SCI_SETFOLDEXPANDED 2229 -#define SCI_GETFOLDEXPANDED 2230 -#define SCI_TOGGLEFOLD 2231 -#define SCI_TOGGLEFOLDSHOWTEXT 2700 -#define SC_FOLDDISPLAYTEXT_HIDDEN 0 -#define SC_FOLDDISPLAYTEXT_STANDARD 1 -#define SC_FOLDDISPLAYTEXT_BOXED 2 -#define SCI_FOLDDISPLAYTEXTSETSTYLE 2701 -#define SC_FOLDACTION_CONTRACT 0 -#define SC_FOLDACTION_EXPAND 1 -#define SC_FOLDACTION_TOGGLE 2 -#define SCI_FOLDLINE 2237 -#define SCI_FOLDCHILDREN 2238 -#define SCI_EXPANDCHILDREN 2239 -#define SCI_FOLDALL 2662 -#define SCI_ENSUREVISIBLE 2232 -#define SC_AUTOMATICFOLD_SHOW 0x0001 -#define SC_AUTOMATICFOLD_CLICK 0x0002 -#define SC_AUTOMATICFOLD_CHANGE 0x0004 -#define SCI_SETAUTOMATICFOLD 2663 -#define SCI_GETAUTOMATICFOLD 2664 -#define SC_FOLDFLAG_LINEBEFORE_EXPANDED 0x0002 -#define SC_FOLDFLAG_LINEBEFORE_CONTRACTED 0x0004 -#define SC_FOLDFLAG_LINEAFTER_EXPANDED 0x0008 -#define SC_FOLDFLAG_LINEAFTER_CONTRACTED 0x0010 -#define SC_FOLDFLAG_LEVELNUMBERS 0x0040 -#define SC_FOLDFLAG_LINESTATE 0x0080 -#define SCI_SETFOLDFLAGS 2233 -#define SCI_ENSUREVISIBLEENFORCEPOLICY 2234 -#define SCI_SETTABINDENTS 2260 -#define SCI_GETTABINDENTS 2261 -#define SCI_SETBACKSPACEUNINDENTS 2262 -#define SCI_GETBACKSPACEUNINDENTS 2263 -#define SC_TIME_FOREVER 10000000 -#define SCI_SETMOUSEDWELLTIME 2264 -#define SCI_GETMOUSEDWELLTIME 2265 -#define SCI_WORDSTARTPOSITION 2266 -#define SCI_WORDENDPOSITION 2267 -#define SCI_ISRANGEWORD 2691 -#define SC_IDLESTYLING_NONE 0 -#define SC_IDLESTYLING_TOVISIBLE 1 -#define SC_IDLESTYLING_AFTERVISIBLE 2 -#define SC_IDLESTYLING_ALL 3 -#define SCI_SETIDLESTYLING 2692 -#define SCI_GETIDLESTYLING 2693 -#define SC_WRAP_NONE 0 -#define SC_WRAP_WORD 1 -#define SC_WRAP_CHAR 2 -#define SC_WRAP_WHITESPACE 3 -#define SCI_SETWRAPMODE 2268 -#define SCI_GETWRAPMODE 2269 -#define SC_WRAPVISUALFLAG_NONE 0x0000 -#define SC_WRAPVISUALFLAG_END 0x0001 -#define SC_WRAPVISUALFLAG_START 0x0002 -#define SC_WRAPVISUALFLAG_MARGIN 0x0004 -#define SCI_SETWRAPVISUALFLAGS 2460 -#define SCI_GETWRAPVISUALFLAGS 2461 -#define SC_WRAPVISUALFLAGLOC_DEFAULT 0x0000 -#define SC_WRAPVISUALFLAGLOC_END_BY_TEXT 0x0001 -#define SC_WRAPVISUALFLAGLOC_START_BY_TEXT 0x0002 -#define SCI_SETWRAPVISUALFLAGSLOCATION 2462 -#define SCI_GETWRAPVISUALFLAGSLOCATION 2463 -#define SCI_SETWRAPSTARTINDENT 2464 -#define SCI_GETWRAPSTARTINDENT 2465 -#define SC_WRAPINDENT_FIXED 0 -#define SC_WRAPINDENT_SAME 1 -#define SC_WRAPINDENT_INDENT 2 -#define SC_WRAPINDENT_DEEPINDENT 3 -#define SCI_SETWRAPINDENTMODE 2472 -#define SCI_GETWRAPINDENTMODE 2473 -#define SC_CACHE_NONE 0 -#define SC_CACHE_CARET 1 -#define SC_CACHE_PAGE 2 -#define SC_CACHE_DOCUMENT 3 -#define SCI_SETLAYOUTCACHE 2272 -#define SCI_GETLAYOUTCACHE 2273 -#define SCI_SETSCROLLWIDTH 2274 -#define SCI_GETSCROLLWIDTH 2275 -#define SCI_SETSCROLLWIDTHTRACKING 2516 -#define SCI_GETSCROLLWIDTHTRACKING 2517 -#define SCI_TEXTWIDTH 2276 -#define SCI_SETENDATLASTLINE 2277 -#define SCI_GETENDATLASTLINE 2278 -#define SCI_TEXTHEIGHT 2279 -#define SCI_SETVSCROLLBAR 2280 -#define SCI_GETVSCROLLBAR 2281 -#define SCI_APPENDTEXT 2282 -#define SCI_GETTWOPHASEDRAW 2283 -#define SCI_SETTWOPHASEDRAW 2284 -#define SC_PHASES_ONE 0 -#define SC_PHASES_TWO 1 -#define SC_PHASES_MULTIPLE 2 -#define SCI_GETPHASESDRAW 2673 -#define SCI_SETPHASESDRAW 2674 -#define SC_EFF_QUALITY_MASK 0xF -#define SC_EFF_QUALITY_DEFAULT 0 -#define SC_EFF_QUALITY_NON_ANTIALIASED 1 -#define SC_EFF_QUALITY_ANTIALIASED 2 -#define SC_EFF_QUALITY_LCD_OPTIMIZED 3 -#define SCI_SETFONTQUALITY 2611 -#define SCI_GETFONTQUALITY 2612 -#define SCI_SETFIRSTVISIBLELINE 2613 -#define SC_MULTIPASTE_ONCE 0 -#define SC_MULTIPASTE_EACH 1 -#define SCI_SETMULTIPASTE 2614 -#define SCI_GETMULTIPASTE 2615 -#define SCI_GETTAG 2616 -#define SCI_LINESJOIN 2288 -#define SCI_LINESSPLIT 2289 -#define SCI_SETFOLDMARGINCOLOUR 2290 -#define SCI_SETFOLDMARGINHICOLOUR 2291 -#define SC_ACCESSIBILITY_DISABLED 0 -#define SC_ACCESSIBILITY_ENABLED 1 -#define SCI_SETACCESSIBILITY 2702 -#define SCI_GETACCESSIBILITY 2703 -#define SCI_LINEDOWN 2300 -#define SCI_LINEDOWNEXTEND 2301 -#define SCI_LINEUP 2302 -#define SCI_LINEUPEXTEND 2303 -#define SCI_CHARLEFT 2304 -#define SCI_CHARLEFTEXTEND 2305 -#define SCI_CHARRIGHT 2306 -#define SCI_CHARRIGHTEXTEND 2307 -#define SCI_WORDLEFT 2308 -#define SCI_WORDLEFTEXTEND 2309 -#define SCI_WORDRIGHT 2310 -#define SCI_WORDRIGHTEXTEND 2311 -#define SCI_HOME 2312 -#define SCI_HOMEEXTEND 2313 -#define SCI_LINEEND 2314 -#define SCI_LINEENDEXTEND 2315 -#define SCI_DOCUMENTSTART 2316 -#define SCI_DOCUMENTSTARTEXTEND 2317 -#define SCI_DOCUMENTEND 2318 -#define SCI_DOCUMENTENDEXTEND 2319 -#define SCI_PAGEUP 2320 -#define SCI_PAGEUPEXTEND 2321 -#define SCI_PAGEDOWN 2322 -#define SCI_PAGEDOWNEXTEND 2323 -#define SCI_EDITTOGGLEOVERTYPE 2324 -#define SCI_CANCEL 2325 -#define SCI_DELETEBACK 2326 -#define SCI_TAB 2327 -#define SCI_BACKTAB 2328 -#define SCI_NEWLINE 2329 -#define SCI_FORMFEED 2330 -#define SCI_VCHOME 2331 -#define SCI_VCHOMEEXTEND 2332 -#define SCI_ZOOMIN 2333 -#define SCI_ZOOMOUT 2334 -#define SCI_DELWORDLEFT 2335 -#define SCI_DELWORDRIGHT 2336 -#define SCI_DELWORDRIGHTEND 2518 -#define SCI_LINECUT 2337 -#define SCI_LINEDELETE 2338 -#define SCI_LINETRANSPOSE 2339 -#define SCI_LINEREVERSE 2354 -#define SCI_LINEDUPLICATE 2404 -#define SCI_LOWERCASE 2340 -#define SCI_UPPERCASE 2341 -#define SCI_LINESCROLLDOWN 2342 -#define SCI_LINESCROLLUP 2343 -#define SCI_DELETEBACKNOTLINE 2344 -#define SCI_HOMEDISPLAY 2345 -#define SCI_HOMEDISPLAYEXTEND 2346 -#define SCI_LINEENDDISPLAY 2347 -#define SCI_LINEENDDISPLAYEXTEND 2348 -#define SCI_HOMEWRAP 2349 -#define SCI_HOMEWRAPEXTEND 2450 -#define SCI_LINEENDWRAP 2451 -#define SCI_LINEENDWRAPEXTEND 2452 -#define SCI_VCHOMEWRAP 2453 -#define SCI_VCHOMEWRAPEXTEND 2454 -#define SCI_LINECOPY 2455 -#define SCI_MOVECARETINSIDEVIEW 2401 -#define SCI_LINELENGTH 2350 -#define SCI_BRACEHIGHLIGHT 2351 -#define SCI_BRACEHIGHLIGHTINDICATOR 2498 -#define SCI_BRACEBADLIGHT 2352 -#define SCI_BRACEBADLIGHTINDICATOR 2499 -#define SCI_BRACEMATCH 2353 -#define SCI_GETVIEWEOL 2355 -#define SCI_SETVIEWEOL 2356 -#define SCI_GETDOCPOINTER 2357 -#define SCI_SETDOCPOINTER 2358 -#define SCI_SETMODEVENTMASK 2359 -#define EDGE_NONE 0 -#define EDGE_LINE 1 -#define EDGE_BACKGROUND 2 -#define EDGE_MULTILINE 3 -#define SCI_GETEDGECOLUMN 2360 -#define SCI_SETEDGECOLUMN 2361 -#define SCI_GETEDGEMODE 2362 -#define SCI_SETEDGEMODE 2363 -#define SCI_GETEDGECOLOUR 2364 -#define SCI_SETEDGECOLOUR 2365 -#define SCI_MULTIEDGEADDLINE 2694 -#define SCI_MULTIEDGECLEARALL 2695 -#define SCI_SEARCHANCHOR 2366 -#define SCI_SEARCHNEXT 2367 -#define SCI_SEARCHPREV 2368 -#define SCI_LINESONSCREEN 2370 -#define SC_POPUP_NEVER 0 -#define SC_POPUP_ALL 1 -#define SC_POPUP_TEXT 2 -#define SCI_USEPOPUP 2371 -#define SCI_SELECTIONISRECTANGLE 2372 -#define SCI_SETZOOM 2373 -#define SCI_GETZOOM 2374 -#define SC_DOCUMENTOPTION_DEFAULT 0 -#define SC_DOCUMENTOPTION_STYLES_NONE 0x1 -#define SC_DOCUMENTOPTION_TEXT_LARGE 0x100 -#define SCI_CREATEDOCUMENT 2375 -#define SCI_ADDREFDOCUMENT 2376 -#define SCI_RELEASEDOCUMENT 2377 -#define SCI_GETDOCUMENTOPTIONS 2379 -#define SCI_GETMODEVENTMASK 2378 -#define SCI_SETCOMMANDEVENTS 2717 -#define SCI_GETCOMMANDEVENTS 2718 -#define SCI_SETFOCUS 2380 -#define SCI_GETFOCUS 2381 -#define SC_STATUS_OK 0 -#define SC_STATUS_FAILURE 1 -#define SC_STATUS_BADALLOC 2 -#define SC_STATUS_WARN_START 1000 -#define SC_STATUS_WARN_REGEX 1001 -#define SCI_SETSTATUS 2382 -#define SCI_GETSTATUS 2383 -#define SCI_SETMOUSEDOWNCAPTURES 2384 -#define SCI_GETMOUSEDOWNCAPTURES 2385 -#define SCI_SETMOUSEWHEELCAPTURES 2696 -#define SCI_GETMOUSEWHEELCAPTURES 2697 -#define SC_CURSORNORMAL -1 -#define SC_CURSORARROW 2 -#define SC_CURSORWAIT 4 -#define SC_CURSORREVERSEARROW 7 -#define SCI_SETCURSOR 2386 -#define SCI_GETCURSOR 2387 -#define SCI_SETCONTROLCHARSYMBOL 2388 -#define SCI_GETCONTROLCHARSYMBOL 2389 -#define SCI_WORDPARTLEFT 2390 -#define SCI_WORDPARTLEFTEXTEND 2391 -#define SCI_WORDPARTRIGHT 2392 -#define SCI_WORDPARTRIGHTEXTEND 2393 -#define VISIBLE_SLOP 0x01 -#define VISIBLE_STRICT 0x04 -#define SCI_SETVISIBLEPOLICY 2394 -#define SCI_DELLINELEFT 2395 -#define SCI_DELLINERIGHT 2396 -#define SCI_SETXOFFSET 2397 -#define SCI_GETXOFFSET 2398 -#define SCI_CHOOSECARETX 2399 -#define SCI_GRABFOCUS 2400 -#define CARET_SLOP 0x01 -#define CARET_STRICT 0x04 -#define CARET_JUMPS 0x10 -#define CARET_EVEN 0x08 -#define SCI_SETXCARETPOLICY 2402 -#define SCI_SETYCARETPOLICY 2403 -#define SCI_SETPRINTWRAPMODE 2406 -#define SCI_GETPRINTWRAPMODE 2407 -#define SCI_SETHOTSPOTACTIVEFORE 2410 -#define SCI_GETHOTSPOTACTIVEFORE 2494 -#define SCI_SETHOTSPOTACTIVEBACK 2411 -#define SCI_GETHOTSPOTACTIVEBACK 2495 -#define SCI_SETHOTSPOTACTIVEUNDERLINE 2412 -#define SCI_GETHOTSPOTACTIVEUNDERLINE 2496 -#define SCI_SETHOTSPOTSINGLELINE 2421 -#define SCI_GETHOTSPOTSINGLELINE 2497 -#define SCI_PARADOWN 2413 -#define SCI_PARADOWNEXTEND 2414 -#define SCI_PARAUP 2415 -#define SCI_PARAUPEXTEND 2416 -#define SCI_POSITIONBEFORE 2417 -#define SCI_POSITIONAFTER 2418 -#define SCI_POSITIONRELATIVE 2670 -#define SCI_POSITIONRELATIVECODEUNITS 2716 -#define SCI_COPYRANGE 2419 -#define SCI_COPYTEXT 2420 -#define SC_SEL_STREAM 0 -#define SC_SEL_RECTANGLE 1 -#define SC_SEL_LINES 2 -#define SC_SEL_THIN 3 -#define SCI_SETSELECTIONMODE 2422 -#define SCI_GETSELECTIONMODE 2423 -#define SCI_GETMOVEEXTENDSSELECTION 2706 -#define SCI_GETLINESELSTARTPOSITION 2424 -#define SCI_GETLINESELENDPOSITION 2425 -#define SCI_LINEDOWNRECTEXTEND 2426 -#define SCI_LINEUPRECTEXTEND 2427 -#define SCI_CHARLEFTRECTEXTEND 2428 -#define SCI_CHARRIGHTRECTEXTEND 2429 -#define SCI_HOMERECTEXTEND 2430 -#define SCI_VCHOMERECTEXTEND 2431 -#define SCI_LINEENDRECTEXTEND 2432 -#define SCI_PAGEUPRECTEXTEND 2433 -#define SCI_PAGEDOWNRECTEXTEND 2434 -#define SCI_STUTTEREDPAGEUP 2435 -#define SCI_STUTTEREDPAGEUPEXTEND 2436 -#define SCI_STUTTEREDPAGEDOWN 2437 -#define SCI_STUTTEREDPAGEDOWNEXTEND 2438 -#define SCI_WORDLEFTEND 2439 -#define SCI_WORDLEFTENDEXTEND 2440 -#define SCI_WORDRIGHTEND 2441 -#define SCI_WORDRIGHTENDEXTEND 2442 -#define SCI_SETWHITESPACECHARS 2443 -#define SCI_GETWHITESPACECHARS 2647 -#define SCI_SETPUNCTUATIONCHARS 2648 -#define SCI_GETPUNCTUATIONCHARS 2649 -#define SCI_SETCHARSDEFAULT 2444 -#define SCI_AUTOCGETCURRENT 2445 -#define SCI_AUTOCGETCURRENTTEXT 2610 -#define SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE 0 -#define SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE 1 -#define SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR 2634 -#define SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR 2635 -#define SC_MULTIAUTOC_ONCE 0 -#define SC_MULTIAUTOC_EACH 1 -#define SCI_AUTOCSETMULTI 2636 -#define SCI_AUTOCGETMULTI 2637 -#define SC_ORDER_PRESORTED 0 -#define SC_ORDER_PERFORMSORT 1 -#define SC_ORDER_CUSTOM 2 -#define SCI_AUTOCSETORDER 2660 -#define SCI_AUTOCGETORDER 2661 -#define SCI_ALLOCATE 2446 -#define SCI_TARGETASUTF8 2447 -#define SCI_SETLENGTHFORENCODE 2448 -#define SCI_ENCODEDFROMUTF8 2449 -#define SCI_FINDCOLUMN 2456 -#define SCI_GETCARETSTICKY 2457 -#define SCI_SETCARETSTICKY 2458 -#define SC_CARETSTICKY_OFF 0 -#define SC_CARETSTICKY_ON 1 -#define SC_CARETSTICKY_WHITESPACE 2 -#define SCI_TOGGLECARETSTICKY 2459 -#define SCI_SETPASTECONVERTENDINGS 2467 -#define SCI_GETPASTECONVERTENDINGS 2468 -#define SCI_SELECTIONDUPLICATE 2469 -#define SC_ALPHA_TRANSPARENT 0 -#define SC_ALPHA_OPAQUE 255 -#define SC_ALPHA_NOALPHA 256 -#define SCI_SETCARETLINEBACKALPHA 2470 -#define SCI_GETCARETLINEBACKALPHA 2471 -#define CARETSTYLE_INVISIBLE 0 -#define CARETSTYLE_LINE 1 -#define CARETSTYLE_BLOCK 2 -#define SCI_SETCARETSTYLE 2512 -#define SCI_GETCARETSTYLE 2513 -#define SCI_SETINDICATORCURRENT 2500 -#define SCI_GETINDICATORCURRENT 2501 -#define SCI_SETINDICATORVALUE 2502 -#define SCI_GETINDICATORVALUE 2503 -#define SCI_INDICATORFILLRANGE 2504 -#define SCI_INDICATORCLEARRANGE 2505 -#define SCI_INDICATORALLONFOR 2506 -#define SCI_INDICATORVALUEAT 2507 -#define SCI_INDICATORSTART 2508 -#define SCI_INDICATOREND 2509 -#define SCI_SETPOSITIONCACHE 2514 -#define SCI_GETPOSITIONCACHE 2515 -#define SCI_COPYALLOWLINE 2519 -#define SCI_GETCHARACTERPOINTER 2520 -#define SCI_GETRANGEPOINTER 2643 -#define SCI_GETGAPPOSITION 2644 -#define SCI_INDICSETALPHA 2523 -#define SCI_INDICGETALPHA 2524 -#define SCI_INDICSETOUTLINEALPHA 2558 -#define SCI_INDICGETOUTLINEALPHA 2559 -#define SCI_SETEXTRAASCENT 2525 -#define SCI_GETEXTRAASCENT 2526 -#define SCI_SETEXTRADESCENT 2527 -#define SCI_GETEXTRADESCENT 2528 -#define SCI_MARKERSYMBOLDEFINED 2529 -#define SCI_MARGINSETTEXT 2530 -#define SCI_MARGINGETTEXT 2531 -#define SCI_MARGINSETSTYLE 2532 -#define SCI_MARGINGETSTYLE 2533 -#define SCI_MARGINSETSTYLES 2534 -#define SCI_MARGINGETSTYLES 2535 -#define SCI_MARGINTEXTCLEARALL 2536 -#define SCI_MARGINSETSTYLEOFFSET 2537 -#define SCI_MARGINGETSTYLEOFFSET 2538 -#define SC_MARGINOPTION_NONE 0 -#define SC_MARGINOPTION_SUBLINESELECT 1 -#define SCI_SETMARGINOPTIONS 2539 -#define SCI_GETMARGINOPTIONS 2557 -#define SCI_ANNOTATIONSETTEXT 2540 -#define SCI_ANNOTATIONGETTEXT 2541 -#define SCI_ANNOTATIONSETSTYLE 2542 -#define SCI_ANNOTATIONGETSTYLE 2543 -#define SCI_ANNOTATIONSETSTYLES 2544 -#define SCI_ANNOTATIONGETSTYLES 2545 -#define SCI_ANNOTATIONGETLINES 2546 -#define SCI_ANNOTATIONCLEARALL 2547 -#define ANNOTATION_HIDDEN 0 -#define ANNOTATION_STANDARD 1 -#define ANNOTATION_BOXED 2 -#define ANNOTATION_INDENTED 3 -#define SCI_ANNOTATIONSETVISIBLE 2548 -#define SCI_ANNOTATIONGETVISIBLE 2549 -#define SCI_ANNOTATIONSETSTYLEOFFSET 2550 -#define SCI_ANNOTATIONGETSTYLEOFFSET 2551 - -#define SCI_EOLANNOTATIONSETTEXT 2740 -#define SCI_EOLANNOTATIONGETTEXT 2741 -#define SCI_EOLANNOTATIONSETSTYLE 2742 -#define SCI_EOLANNOTATIONGETSTYLE 2743 -#define SCI_EOLANNOTATIONCLEARALL 2744 -#define EOLANNOTATION_HIDDEN 0x0 -#define EOLANNOTATION_STANDARD 0x1 -#define EOLANNOTATION_BOXED 0x2 -#define EOLANNOTATION_STADIUM 0x100 -#define EOLANNOTATION_FLAT_CIRCLE 0x101 -#define EOLANNOTATION_ANGLE_CIRCLE 0x102 -#define EOLANNOTATION_CIRCLE_FLAT 0x110 -#define EOLANNOTATION_FLATS 0x111 -#define EOLANNOTATION_ANGLE_FLAT 0x112 -#define EOLANNOTATION_CIRCLE_ANGLE 0x120 -#define EOLANNOTATION_FLAT_ANGLE 0x121 -#define EOLANNOTATION_ANGLES 0x122 -#define SCI_EOLANNOTATIONSETVISIBLE 2745 -#define SCI_EOLANNOTATIONGETVISIBLE 2746 -#define SCI_EOLANNOTATIONSETSTYLEOFFSET 2747 -#define SCI_EOLANNOTATIONGETSTYLEOFFSET 2748 - -#define SCI_RELEASEALLEXTENDEDSTYLES 2552 -#define SCI_ALLOCATEEXTENDEDSTYLES 2553 -#define UNDO_MAY_COALESCE 1 -#define SCI_ADDUNDOACTION 2560 -#define SCI_CHARPOSITIONFROMPOINT 2561 -#define SCI_CHARPOSITIONFROMPOINTCLOSE 2562 -#define SCI_SETMOUSESELECTIONRECTANGULARSWITCH 2668 -#define SCI_GETMOUSESELECTIONRECTANGULARSWITCH 2669 -#define SCI_SETMULTIPLESELECTION 2563 -#define SCI_GETMULTIPLESELECTION 2564 -#define SCI_SETADDITIONALSELECTIONTYPING 2565 -#define SCI_GETADDITIONALSELECTIONTYPING 2566 -#define SCI_SETADDITIONALCARETSBLINK 2567 -#define SCI_GETADDITIONALCARETSBLINK 2568 -#define SCI_SETADDITIONALCARETSVISIBLE 2608 -#define SCI_GETADDITIONALCARETSVISIBLE 2609 -#define SCI_GETSELECTIONS 2570 -#define SCI_GETSELECTIONEMPTY 2650 -#define SCI_CLEARSELECTIONS 2571 -#define SCI_SETSELECTION 2572 -#define SCI_ADDSELECTION 2573 -#define SCI_DROPSELECTIONN 2671 -#define SCI_SETMAINSELECTION 2574 -#define SCI_GETMAINSELECTION 2575 -#define SCI_SETSELECTIONNCARET 2576 -#define SCI_GETSELECTIONNCARET 2577 -#define SCI_SETSELECTIONNANCHOR 2578 -#define SCI_GETSELECTIONNANCHOR 2579 -#define SCI_SETSELECTIONNCARETVIRTUALSPACE 2580 -#define SCI_GETSELECTIONNCARETVIRTUALSPACE 2581 -#define SCI_SETSELECTIONNANCHORVIRTUALSPACE 2582 -#define SCI_GETSELECTIONNANCHORVIRTUALSPACE 2583 -#define SCI_SETSELECTIONNSTART 2584 -#define SCI_GETSELECTIONNSTART 2585 -#define SCI_SETSELECTIONNEND 2586 -#define SCI_GETSELECTIONNEND 2587 -#define SCI_SETRECTANGULARSELECTIONCARET 2588 -#define SCI_GETRECTANGULARSELECTIONCARET 2589 -#define SCI_SETRECTANGULARSELECTIONANCHOR 2590 -#define SCI_GETRECTANGULARSELECTIONANCHOR 2591 -#define SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE 2592 -#define SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE 2593 -#define SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE 2594 -#define SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE 2595 -#define SCVS_NONE 0 -#define SCVS_RECTANGULARSELECTION 1 -#define SCVS_USERACCESSIBLE 2 -#define SCVS_NOWRAPLINESTART 4 -#define SCI_SETVIRTUALSPACEOPTIONS 2596 -#define SCI_GETVIRTUALSPACEOPTIONS 2597 -#define SCI_SETRECTANGULARSELECTIONMODIFIER 2598 -#define SCI_GETRECTANGULARSELECTIONMODIFIER 2599 -#define SCI_SETADDITIONALSELFORE 2600 -#define SCI_SETADDITIONALSELBACK 2601 -#define SCI_SETADDITIONALSELALPHA 2602 -#define SCI_GETADDITIONALSELALPHA 2603 -#define SCI_SETADDITIONALCARETFORE 2604 -#define SCI_GETADDITIONALCARETFORE 2605 -#define SCI_ROTATESELECTION 2606 -#define SCI_SWAPMAINANCHORCARET 2607 -#define SCI_MULTIPLESELECTADDNEXT 2688 -#define SCI_MULTIPLESELECTADDEACH 2689 -#define SCI_CHANGELEXERSTATE 2617 -#define SCI_CONTRACTEDFOLDNEXT 2618 -#define SCI_VERTICALCENTRECARET 2619 -#define SCI_MOVESELECTEDLINESUP 2620 -#define SCI_MOVESELECTEDLINESDOWN 2621 -#define SCI_SETIDENTIFIER 2622 -#define SCI_GETIDENTIFIER 2623 -#define SCI_RGBAIMAGESETWIDTH 2624 -#define SCI_RGBAIMAGESETHEIGHT 2625 -#define SCI_RGBAIMAGESETSCALE 2651 -#define SCI_MARKERDEFINERGBAIMAGE 2626 -#define SCI_REGISTERRGBAIMAGE 2627 -#define SCI_SCROLLTOSTART 2628 -#define SCI_SCROLLTOEND 2629 -#define SC_TECHNOLOGY_DEFAULT 0 -#define SC_TECHNOLOGY_DIRECTWRITE 1 -#define SC_TECHNOLOGY_DIRECTWRITERETAIN 2 -#define SC_TECHNOLOGY_DIRECTWRITEDC 3 -#define SCI_SETTECHNOLOGY 2630 -#define SCI_GETTECHNOLOGY 2631 -#define SCI_CREATELOADER 2632 -#define SCI_FINDINDICATORSHOW 2640 -#define SCI_FINDINDICATORFLASH 2641 -#define SCI_FINDINDICATORHIDE 2642 -#define SCI_VCHOMEDISPLAY 2652 -#define SCI_VCHOMEDISPLAYEXTEND 2653 -#define SCI_GETCARETLINEVISIBLEALWAYS 2654 -#define SCI_SETCARETLINEVISIBLEALWAYS 2655 -#define SC_LINE_END_TYPE_DEFAULT 0 -#define SC_LINE_END_TYPE_UNICODE 1 -#define SCI_SETLINEENDTYPESALLOWED 2656 -#define SCI_GETLINEENDTYPESALLOWED 2657 -#define SCI_GETLINEENDTYPESACTIVE 2658 -#define SCI_SETREPRESENTATION 2665 -#define SCI_GETREPRESENTATION 2666 -#define SCI_CLEARREPRESENTATION 2667 -#define SCI_STARTRECORD 3001 -#define SCI_STOPRECORD 3002 -#define SCI_SETLEXER 4001 -#define SCI_GETLEXER 4002 -#define SCI_COLOURISE 4003 -#define SCI_SETPROPERTY 4004 -#define KEYWORDSET_MAX 8 -#define SCI_SETKEYWORDS 4005 -#define SCI_SETLEXERLANGUAGE 4006 -#define SCI_LOADLEXERLIBRARY 4007 -#define SCI_GETPROPERTY 4008 -#define SCI_GETPROPERTYEXPANDED 4009 -#define SCI_GETPROPERTYINT 4010 -#define SCI_GETLEXERLANGUAGE 4012 -#define SCI_PRIVATELEXERCALL 4013 -#define SCI_PROPERTYNAMES 4014 -#define SC_TYPE_BOOLEAN 0 -#define SC_TYPE_INTEGER 1 -#define SC_TYPE_STRING 2 -#define SCI_PROPERTYTYPE 4015 -#define SCI_DESCRIBEPROPERTY 4016 -#define SCI_DESCRIBEKEYWORDSETS 4017 -#define SCI_GETLINEENDTYPESSUPPORTED 4018 -#define SCI_ALLOCATESUBSTYLES 4020 -#define SCI_GETSUBSTYLESSTART 4021 -#define SCI_GETSUBSTYLESLENGTH 4022 -#define SCI_GETSTYLEFROMSUBSTYLE 4027 -#define SCI_GETPRIMARYSTYLEFROMSTYLE 4028 -#define SCI_FREESUBSTYLES 4023 -#define SCI_SETIDENTIFIERS 4024 -#define SCI_DISTANCETOSECONDARYSTYLES 4025 -#define SCI_GETSUBSTYLEBASES 4026 -#define SCI_GETNAMEDSTYLES 4029 -#define SCI_NAMEOFSTYLE 4030 -#define SCI_TAGSOFSTYLE 4031 -#define SCI_DESCRIPTIONOFSTYLE 4032 -#define SC_MOD_INSERTTEXT 0x1 -#define SC_MOD_DELETETEXT 0x2 -#define SC_MOD_CHANGESTYLE 0x4 -#define SC_MOD_CHANGEFOLD 0x8 -#define SC_PERFORMED_USER 0x10 -#define SC_PERFORMED_UNDO 0x20 -#define SC_PERFORMED_REDO 0x40 -#define SC_MULTISTEPUNDOREDO 0x80 -#define SC_LASTSTEPINUNDOREDO 0x100 -#define SC_MOD_CHANGEMARKER 0x200 -#define SC_MOD_BEFOREINSERT 0x400 -#define SC_MOD_BEFOREDELETE 0x800 -#define SC_MULTILINEUNDOREDO 0x1000 -#define SC_STARTACTION 0x2000 -#define SC_MOD_CHANGEINDICATOR 0x4000 -#define SC_MOD_CHANGELINESTATE 0x8000 -#define SC_MOD_CHANGEMARGIN 0x10000 -#define SC_MOD_CHANGEANNOTATION 0x20000 -#define SC_MOD_CONTAINER 0x40000 -#define SC_MOD_LEXERSTATE 0x80000 -#define SC_MOD_INSERTCHECK 0x100000 -#define SC_MOD_CHANGETABSTOPS 0x200000 -#define SC_MOD_CHANGEEOLANNOTATION 0x400000 -#define SC_MODEVENTMASKALL 0x3FFFFF -#define SC_UPDATE_CONTENT 0x1 -#define SC_UPDATE_SELECTION 0x2 -#define SC_UPDATE_V_SCROLL 0x4 -#define SC_UPDATE_H_SCROLL 0x8 -#define SCEN_CHANGE 768 -#define SCEN_SETFOCUS 512 -#define SCEN_KILLFOCUS 256 -#define SCK_DOWN 300 -#define SCK_UP 301 -#define SCK_LEFT 302 -#define SCK_RIGHT 303 -#define SCK_HOME 304 -#define SCK_END 305 -#define SCK_PRIOR 306 -#define SCK_NEXT 307 -#define SCK_DELETE 308 -#define SCK_INSERT 309 -#define SCK_ESCAPE 7 -#define SCK_BACK 8 -#define SCK_TAB 9 -#define SCK_RETURN 13 -#define SCK_ADD 310 -#define SCK_SUBTRACT 311 -#define SCK_DIVIDE 312 -#define SCK_WIN 313 -#define SCK_RWIN 314 -#define SCK_MENU 315 -#define SCMOD_NORM 0 -#define SCMOD_SHIFT 1 -#define SCMOD_CTRL 2 -#define SCMOD_ALT 4 -#define SCMOD_SUPER 8 -#define SCMOD_META 16 -#define SC_AC_FILLUP 1 -#define SC_AC_DOUBLECLICK 2 -#define SC_AC_TAB 3 -#define SC_AC_NEWLINE 4 -#define SC_AC_COMMAND 5 -#define SCN_STYLENEEDED 2000 -#define SCN_CHARADDED 2001 -#define SCN_SAVEPOINTREACHED 2002 -#define SCN_SAVEPOINTLEFT 2003 -#define SCN_MODIFYATTEMPTRO 2004 -#define SCN_KEY 2005 -#define SCN_DOUBLECLICK 2006 -#define SCN_UPDATEUI 2007 -#define SCN_MODIFIED 2008 -#define SCN_MACRORECORD 2009 -#define SCN_MARGINCLICK 2010 -#define SCN_NEEDSHOWN 2011 -#define SCN_PAINTED 2013 -#define SCN_USERLISTSELECTION 2014 -#define SCN_URIDROPPED 2015 -#define SCN_DWELLSTART 2016 -#define SCN_DWELLEND 2017 -#define SCN_ZOOM 2018 -#define SCN_HOTSPOTCLICK 2019 -#define SCN_HOTSPOTDOUBLECLICK 2020 -#define SCN_CALLTIPCLICK 2021 -#define SCN_AUTOCSELECTION 2022 -#define SCN_INDICATORCLICK 2023 -#define SCN_INDICATORRELEASE 2024 -#define SCN_AUTOCCANCELLED 2025 -#define SCN_AUTOCCHARDELETED 2026 -#define SCN_HOTSPOTRELEASECLICK 2027 -#define SCN_FOCUSIN 2028 -#define SCN_FOCUSOUT 2029 -#define SCN_AUTOCCOMPLETED 2030 -#define SCN_MARGINRIGHTCLICK 2031 -#define SCN_AUTOCSELECTIONCHANGE 2032 -#ifndef SCI_DISABLE_PROVISIONAL -#define SC_LINECHARACTERINDEX_NONE 0 -#define SC_LINECHARACTERINDEX_UTF32 1 -#define SC_LINECHARACTERINDEX_UTF16 2 -#define SCI_GETLINECHARACTERINDEX 2710 -#define SCI_ALLOCATELINECHARACTERINDEX 2711 -#define SCI_RELEASELINECHARACTERINDEX 2712 -#define SCI_LINEFROMINDEXPOSITION 2713 -#define SCI_INDEXPOSITIONFROMLINE 2714 -#endif -/* --Autogenerated -- end of section automatically generated from Scintilla.iface */ - -/* These structures are defined to be exactly the same shape as the Win32 - * CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs. - * So older code that treats Scintilla as a RichEdit will work. */ - -struct Sci_CharacterRange { - Sci_PositionCR cpMin; - Sci_PositionCR cpMax; -}; - -struct Sci_TextRange { - struct Sci_CharacterRange chrg; - char *lpstrText; -}; - -struct Sci_TextToFind { - struct Sci_CharacterRange chrg; - const char *lpstrText; - struct Sci_CharacterRange chrgText; -}; - -typedef void *Sci_SurfaceID; - -struct Sci_Rectangle { - int left; - int top; - int right; - int bottom; -}; - -/* This structure is used in printing and requires some of the graphics types - * from Platform.h. Not needed by most client code. */ - -struct Sci_RangeToFormat { - Sci_SurfaceID hdc; - Sci_SurfaceID hdcTarget; - struct Sci_Rectangle rc; - struct Sci_Rectangle rcPage; - struct Sci_CharacterRange chrg; -}; - -#ifndef __cplusplus -/* For the GTK+ platform, g-ir-scanner needs to have these typedefs. This - * is not required in C++ code and actually seems to break ScintillaEditPy */ -typedef struct Sci_NotifyHeader Sci_NotifyHeader; -typedef struct SCNotification SCNotification; -#endif - -struct Sci_NotifyHeader { - /* Compatible with Windows NMHDR. - * hwndFrom is really an environment specific window handle or pointer - * but most clients of Scintilla.h do not have this type visible. */ - void *hwndFrom; - uptr_t idFrom; - unsigned int code; -}; - -struct SCNotification { - Sci_NotifyHeader nmhdr; - Sci_Position position; - /* SCN_STYLENEEDED, SCN_DOUBLECLICK, SCN_MODIFIED, SCN_MARGINCLICK, */ - /* SCN_NEEDSHOWN, SCN_DWELLSTART, SCN_DWELLEND, SCN_CALLTIPCLICK, */ - /* SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK, SCN_HOTSPOTRELEASECLICK, */ - /* SCN_INDICATORCLICK, SCN_INDICATORRELEASE, */ - /* SCN_USERLISTSELECTION, SCN_AUTOCSELECTION */ - - int ch; - /* SCN_CHARADDED, SCN_KEY, SCN_AUTOCCOMPLETED, SCN_AUTOCSELECTION, */ - /* SCN_USERLISTSELECTION */ - int modifiers; - /* SCN_KEY, SCN_DOUBLECLICK, SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK, */ - /* SCN_HOTSPOTRELEASECLICK, SCN_INDICATORCLICK, SCN_INDICATORRELEASE, */ - - int modificationType; /* SCN_MODIFIED */ - const char *text; - /* SCN_MODIFIED, SCN_USERLISTSELECTION, SCN_AUTOCSELECTION, SCN_URIDROPPED */ - - Sci_Position length; /* SCN_MODIFIED */ - Sci_Position linesAdded; /* SCN_MODIFIED */ - int message; /* SCN_MACRORECORD */ - uptr_t wParam; /* SCN_MACRORECORD */ - sptr_t lParam; /* SCN_MACRORECORD */ - Sci_Position line; /* SCN_MODIFIED */ - int foldLevelNow; /* SCN_MODIFIED */ - int foldLevelPrev; /* SCN_MODIFIED */ - int margin; /* SCN_MARGINCLICK */ - int listType; /* SCN_USERLISTSELECTION */ - int x; /* SCN_DWELLSTART, SCN_DWELLEND */ - int y; /* SCN_DWELLSTART, SCN_DWELLEND */ - int token; /* SCN_MODIFIED with SC_MOD_CONTAINER */ - Sci_Position annotationLinesAdded; /* SCN_MODIFIED with SC_MOD_CHANGEANNOTATION */ - int updated; /* SCN_UPDATEUI */ - int listCompletionMethod; - /* SCN_AUTOCSELECTION, SCN_AUTOCCOMPLETED, SCN_USERLISTSELECTION, */ -}; - -#ifdef INCLUDE_DEPRECATED_FEATURES - -#define SCI_SETKEYSUNICODE 2521 -#define SCI_GETKEYSUNICODE 2522 - -#define CharacterRange Sci_CharacterRange -#define TextRange Sci_TextRange -#define TextToFind Sci_TextToFind -#define RangeToFormat Sci_RangeToFormat -#define NotifyHeader Sci_NotifyHeader - -#define SCI_SETSTYLEBITS 2090 -#define SCI_GETSTYLEBITS 2091 -#define SCI_GETSTYLEBITSNEEDED 4011 - -#endif - -#endif diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/Scintilla.iface b/3rdparty/unioncode-qscintilla214/scintilla/include/Scintilla.iface deleted file mode 100644 index 0281f92f5..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/Scintilla.iface +++ /dev/null @@ -1,4990 +0,0 @@ -## First line may be used for shbang - -## This file defines the interface to Scintilla - -## Copyright 2000-2003 by Neil Hodgson -## The License.txt file describes the conditions under which this software may be distributed. - -## A line starting with ## is a pure comment and should be stripped by readers. -## A line starting with #! is for future shbang use -## A line starting with # followed by a space is a documentation comment and refers -## to the next feature definition. - -## Each feature is defined by a line starting with fun, get, set, val or evt. -## cat -> start a category -## fun -> a function -## get -> a property get function -## set -> a property set function -## val -> definition of a constant -## evt -> an event -## enu -> associate an enumeration with a set of vals with a prefix -## lex -> associate a lexer with the lexical classes it produces -## -## All other feature names should be ignored. They may be defined in the future. -## A property may have a set function, a get function or both. Each will have -## "Get" or "Set" in their names and the corresponding name will have the obvious switch. -## A property may be subscripted, in which case the first parameter is the subscript. -## fun, get, and set features have a strict syntax: -## [=,) -## where stands for white space. -## param may be empty (null value) or is [=] -## Additional white space is allowed between elements. -## The syntax for evt is [=[,]*]) -## Feature names that contain an underscore are defined by Windows, so in these -## cases, using the Windows definition is preferred where available. -## The feature numbers are stable so features will not be renumbered. -## Features may be removed but they will go through a period of deprecation -## before removal which is signalled by moving them into the Deprecated category. -## -## enu has the syntax enu=[]* where all the val -## features in this file starting with a given are considered part of the -## enumeration. -## -## lex has the syntax lex=[]* -## where name is a reasonably capitalised (Python, XML) identifier or UI name, -## lexerVal is the val used to specify the lexer, and the list of prefixes is similar -## to enu. The name may not be the same as that used within the lexer so the lexerVal -## should be used to tie these entities together. - -## Types: -## void -## int -## bool -> integer, 1=true, 0=false -## position -> integer position in a document -## colour -> colour integer containing red, green and blue bytes. -## string -> pointer to const character -## stringresult -> pointer to character, NULL-> return size of result -## cells -> pointer to array of cells, each cell containing a style byte and character byte -## textrange -> range of a min and a max position with an output string -## findtext -> searchrange, text -> foundposition -## keymod -> integer containing key in low half and modifiers in high half -## formatrange -## Types no longer used: -## findtextex -> searchrange -## charrange -> range of a min and a max position -## charrangeresult -> like charrange, but output param -## countedstring -## point -> x,y -## pointresult -> like point, but output param -## rectangle -> left,top,right,bottom -## Client code should ignore definitions containing types it does not understand, except -## for possibly #defining the constants - -## Line numbers and positions start at 0. -## String arguments may contain NUL ('\0') characters where the calls provide a length -## argument and retrieve NUL characters. APIs marked as NUL-terminated also have a -## NUL appended but client code should calculate the size that will be returned rather -## than relying upon the NUL whenever possible. Allow for the extra NUL character when -## allocating buffers. The size to allocate for a stringresult (not including NUL) can be -## determined by calling with a NULL (0) pointer. - -cat Basics - -################################################ -## For Scintilla.h -val INVALID_POSITION=-1 -# Define start of Scintilla messages to be greater than all Windows edit (EM_*) messages -# as many EM_ messages can be used although that use is deprecated. -val SCI_START=2000 -val SCI_OPTIONAL_START=3000 -val SCI_LEXER_START=4000 - -# Add text to the document at current position. -fun void AddText=2001(int length, string text) - -# Add array of cells to document. -fun void AddStyledText=2002(int length, cells c) - -# Insert string at a position. -fun void InsertText=2003(position pos, string text) - -# Change the text that is being inserted in response to SC_MOD_INSERTCHECK -fun void ChangeInsertion=2672(int length, string text) - -# Delete all text in the document. -fun void ClearAll=2004(,) - -# Delete a range of text in the document. -fun void DeleteRange=2645(position start, int lengthDelete) - -# Set all style bytes to 0, remove all folding information. -fun void ClearDocumentStyle=2005(,) - -# Returns the number of bytes in the document. -get int GetLength=2006(,) - -# Returns the character byte at the position. -get int GetCharAt=2007(position pos,) - -# Returns the position of the caret. -get position GetCurrentPos=2008(,) - -# Returns the position of the opposite end of the selection to the caret. -get position GetAnchor=2009(,) - -# Returns the style byte at the position. -get int GetStyleAt=2010(position pos,) - -# Redoes the next action on the undo history. -fun void Redo=2011(,) - -# Choose between collecting actions into the undo -# history and discarding them. -set void SetUndoCollection=2012(bool collectUndo,) - -# Select all the text in the document. -fun void SelectAll=2013(,) - -# Remember the current position in the undo history as the position -# at which the document was saved. -fun void SetSavePoint=2014(,) - -# Retrieve a buffer of cells. -# Returns the number of bytes in the buffer not including terminating NULs. -fun int GetStyledText=2015(, textrange tr) - -# Are there any redoable actions in the undo history? -fun bool CanRedo=2016(,) - -# Retrieve the line number at which a particular marker is located. -fun int MarkerLineFromHandle=2017(int markerHandle,) - -# Delete a marker. -fun void MarkerDeleteHandle=2018(int markerHandle,) - -# Is undo history being collected? -get bool GetUndoCollection=2019(,) - -enu WhiteSpace=SCWS_ -val SCWS_INVISIBLE=0 -val SCWS_VISIBLEALWAYS=1 -val SCWS_VISIBLEAFTERINDENT=2 -val SCWS_VISIBLEONLYININDENT=3 - -# Are white space characters currently visible? -# Returns one of SCWS_* constants. -get int GetViewWS=2020(,) - -# Make white space characters invisible, always visible or visible outside indentation. -set void SetViewWS=2021(int viewWS,) - -enu TabDrawMode=SCTD_ -val SCTD_LONGARROW=0 -val SCTD_STRIKEOUT=1 - -# Retrieve the current tab draw mode. -# Returns one of SCTD_* constants. -get int GetTabDrawMode=2698(,) - -# Set how tabs are drawn when visible. -set void SetTabDrawMode=2699(int tabDrawMode,) - -# Find the position from a point within the window. -fun position PositionFromPoint=2022(int x, int y) - -# Find the position from a point within the window but return -# INVALID_POSITION if not close to text. -fun position PositionFromPointClose=2023(int x, int y) - -# Set caret to start of a line and ensure it is visible. -fun void GotoLine=2024(int line,) - -# Set caret to a position and ensure it is visible. -fun void GotoPos=2025(position caret,) - -# Set the selection anchor to a position. The anchor is the opposite -# end of the selection from the caret. -set void SetAnchor=2026(position anchor,) - -# Retrieve the text of the line containing the caret. -# Returns the index of the caret on the line. -# Result is NUL-terminated. -fun int GetCurLine=2027(int length, stringresult text) - -# Retrieve the position of the last correctly styled character. -get position GetEndStyled=2028(,) - -enu EndOfLine=SC_EOL_ -val SC_EOL_CRLF=0 -val SC_EOL_CR=1 -val SC_EOL_LF=2 - -# Convert all line endings in the document to one mode. -fun void ConvertEOLs=2029(int eolMode,) - -# Retrieve the current end of line mode - one of CRLF, CR, or LF. -get int GetEOLMode=2030(,) - -# Set the current end of line mode. -set void SetEOLMode=2031(int eolMode,) - -# Set the current styling position to start. -# The unused parameter is no longer used and should be set to 0. -fun void StartStyling=2032(position start, int unused) - -# Change style from current styling position for length characters to a style -# and move the current styling position to after this newly styled segment. -fun void SetStyling=2033(int length, int style) - -# Is drawing done first into a buffer or direct to the screen? -get bool GetBufferedDraw=2034(,) - -# If drawing is buffered then each line of text is drawn into a bitmap buffer -# before drawing it to the screen to avoid flicker. -set void SetBufferedDraw=2035(bool buffered,) - -# Change the visible size of a tab to be a multiple of the width of a space character. -set void SetTabWidth=2036(int tabWidth,) - -# Retrieve the visible size of a tab. -get int GetTabWidth=2121(,) - -# Clear explicit tabstops on a line. -fun void ClearTabStops=2675(int line,) - -# Add an explicit tab stop for a line. -fun void AddTabStop=2676(int line, int x) - -# Find the next explicit tab stop position on a line after a position. -fun int GetNextTabStop=2677(int line, int x) - -# The SC_CP_UTF8 value can be used to enter Unicode mode. -# This is the same value as CP_UTF8 in Windows -val SC_CP_UTF8=65001 - -# Set the code page used to interpret the bytes of the document as characters. -# The SC_CP_UTF8 value can be used to enter Unicode mode. -set void SetCodePage=2037(int codePage,) - -enu IMEInteraction=SC_IME_ -val SC_IME_WINDOWED=0 -val SC_IME_INLINE=1 - -# Is the IME displayed in a window or inline? -get int GetIMEInteraction=2678(,) - -# Choose to display the the IME in a winow or inline. -set void SetIMEInteraction=2679(int imeInteraction,) - -enu MarkerSymbol=SC_MARK_ -val MARKER_MAX=31 -val SC_MARK_CIRCLE=0 -val SC_MARK_ROUNDRECT=1 -val SC_MARK_ARROW=2 -val SC_MARK_SMALLRECT=3 -val SC_MARK_SHORTARROW=4 -val SC_MARK_EMPTY=5 -val SC_MARK_ARROWDOWN=6 -val SC_MARK_MINUS=7 -val SC_MARK_PLUS=8 - -# Shapes used for outlining column. -val SC_MARK_VLINE=9 -val SC_MARK_LCORNER=10 -val SC_MARK_TCORNER=11 -val SC_MARK_BOXPLUS=12 -val SC_MARK_BOXPLUSCONNECTED=13 -val SC_MARK_BOXMINUS=14 -val SC_MARK_BOXMINUSCONNECTED=15 -val SC_MARK_LCORNERCURVE=16 -val SC_MARK_TCORNERCURVE=17 -val SC_MARK_CIRCLEPLUS=18 -val SC_MARK_CIRCLEPLUSCONNECTED=19 -val SC_MARK_CIRCLEMINUS=20 -val SC_MARK_CIRCLEMINUSCONNECTED=21 - -# Invisible mark that only sets the line background colour. -val SC_MARK_BACKGROUND=22 -val SC_MARK_DOTDOTDOT=23 -val SC_MARK_ARROWS=24 -val SC_MARK_PIXMAP=25 -val SC_MARK_FULLRECT=26 -val SC_MARK_LEFTRECT=27 -val SC_MARK_AVAILABLE=28 -val SC_MARK_UNDERLINE=29 -val SC_MARK_RGBAIMAGE=30 -val SC_MARK_BOOKMARK=31 - -val SC_MARK_CHARACTER=10000 - -enu MarkerOutline=SC_MARKNUM_ -# Markers used for outlining column. -val SC_MARKNUM_FOLDEREND=25 -val SC_MARKNUM_FOLDEROPENMID=26 -val SC_MARKNUM_FOLDERMIDTAIL=27 -val SC_MARKNUM_FOLDERTAIL=28 -val SC_MARKNUM_FOLDERSUB=29 -val SC_MARKNUM_FOLDER=30 -val SC_MARKNUM_FOLDEROPEN=31 - -val SC_MASK_FOLDERS=0xFE000000 - -# Set the symbol used for a particular marker number. -fun void MarkerDefine=2040(int markerNumber, int markerSymbol) - -# Set the foreground colour used for a particular marker number. -set void MarkerSetFore=2041(int markerNumber, colour fore) - -# Set the background colour used for a particular marker number. -set void MarkerSetBack=2042(int markerNumber, colour back) - -# Set the background colour used for a particular marker number when its folding block is selected. -set void MarkerSetBackSelected=2292(int markerNumber, colour back) - -# Enable/disable highlight for current folding bloc (smallest one that contains the caret) -fun void MarkerEnableHighlight=2293(bool enabled,) - -# Add a marker to a line, returning an ID which can be used to find or delete the marker. -fun int MarkerAdd=2043(int line, int markerNumber) - -# Delete a marker from a line. -fun void MarkerDelete=2044(int line, int markerNumber) - -# Delete all markers with a particular number from all lines. -fun void MarkerDeleteAll=2045(int markerNumber,) - -# Get a bit mask of all the markers set on a line. -fun int MarkerGet=2046(int line,) - -# Find the next line at or after lineStart that includes a marker in mask. -# Return -1 when no more lines. -fun int MarkerNext=2047(int lineStart, int markerMask) - -# Find the previous line before lineStart that includes a marker in mask. -fun int MarkerPrevious=2048(int lineStart, int markerMask) - -# Define a marker from a pixmap. -fun void MarkerDefinePixmap=2049(int markerNumber, string pixmap) - -# Add a set of markers to a line. -fun void MarkerAddSet=2466(int line, int markerSet) - -# Set the alpha used for a marker that is drawn in the text area, not the margin. -set void MarkerSetAlpha=2476(int markerNumber, int alpha) - -val SC_MAX_MARGIN=4 - -enu MarginType=SC_MARGIN_ -val SC_MARGIN_SYMBOL=0 -val SC_MARGIN_NUMBER=1 -val SC_MARGIN_BACK=2 -val SC_MARGIN_FORE=3 -val SC_MARGIN_TEXT=4 -val SC_MARGIN_RTEXT=5 -val SC_MARGIN_COLOUR=6 - -# Set a margin to be either numeric or symbolic. -set void SetMarginTypeN=2240(int margin, int marginType) - -# Retrieve the type of a margin. -get int GetMarginTypeN=2241(int margin,) - -# Set the width of a margin to a width expressed in pixels. -set void SetMarginWidthN=2242(int margin, int pixelWidth) - -# Retrieve the width of a margin in pixels. -get int GetMarginWidthN=2243(int margin,) - -# Set a mask that determines which markers are displayed in a margin. -set void SetMarginMaskN=2244(int margin, int mask) - -# Retrieve the marker mask of a margin. -get int GetMarginMaskN=2245(int margin,) - -# Make a margin sensitive or insensitive to mouse clicks. -set void SetMarginSensitiveN=2246(int margin, bool sensitive) - -# Retrieve the mouse click sensitivity of a margin. -get bool GetMarginSensitiveN=2247(int margin,) - -# Set the cursor shown when the mouse is inside a margin. -set void SetMarginCursorN=2248(int margin, int cursor) - -# Retrieve the cursor shown in a margin. -get int GetMarginCursorN=2249(int margin,) - -# Set the background colour of a margin. Only visible for SC_MARGIN_COLOUR. -set void SetMarginBackN=2250(int margin, colour back) - -# Retrieve the background colour of a margin -get colour GetMarginBackN=2251(int margin,) - -# Allocate a non-standard number of margins. -set void SetMargins=2252(int margins,) - -# How many margins are there?. -get int GetMargins=2253(,) - -# Styles in range 32..39 are predefined for parts of the UI and are not used as normal styles. -enu StylesCommon=STYLE_ -val STYLE_DEFAULT=32 -val STYLE_LINENUMBER=33 -val STYLE_BRACELIGHT=34 -val STYLE_BRACEBAD=35 -val STYLE_CONTROLCHAR=36 -val STYLE_INDENTGUIDE=37 -val STYLE_CALLTIP=38 -val STYLE_FOLDDISPLAYTEXT=39 -val STYLE_LASTPREDEFINED=39 -val STYLE_MAX=255 - -# Character set identifiers are used in StyleSetCharacterSet. -# The values are the same as the Windows *_CHARSET values. -enu CharacterSet=SC_CHARSET_ -val SC_CHARSET_ANSI=0 -val SC_CHARSET_DEFAULT=1 -val SC_CHARSET_BALTIC=186 -val SC_CHARSET_CHINESEBIG5=136 -val SC_CHARSET_EASTEUROPE=238 -val SC_CHARSET_GB2312=134 -val SC_CHARSET_GREEK=161 -val SC_CHARSET_HANGUL=129 -val SC_CHARSET_MAC=77 -val SC_CHARSET_OEM=255 -val SC_CHARSET_RUSSIAN=204 -val SC_CHARSET_OEM866=866 -val SC_CHARSET_CYRILLIC=1251 -val SC_CHARSET_SHIFTJIS=128 -val SC_CHARSET_SYMBOL=2 -val SC_CHARSET_TURKISH=162 -val SC_CHARSET_JOHAB=130 -val SC_CHARSET_HEBREW=177 -val SC_CHARSET_ARABIC=178 -val SC_CHARSET_VIETNAMESE=163 -val SC_CHARSET_THAI=222 -val SC_CHARSET_8859_15=1000 - -# Clear all the styles and make equivalent to the global default style. -fun void StyleClearAll=2050(,) - -# Set the foreground colour of a style. -set void StyleSetFore=2051(int style, colour fore) - -# Set the background colour of a style. -set void StyleSetBack=2052(int style, colour back) - -# Set a style to be bold or not. -set void StyleSetBold=2053(int style, bool bold) - -# Set a style to be italic or not. -set void StyleSetItalic=2054(int style, bool italic) - -# Set the size of characters of a style. -set void StyleSetSize=2055(int style, int sizePoints) - -# Set the font of a style. -set void StyleSetFont=2056(int style, string fontName) - -# Set a style to have its end of line filled or not. -set void StyleSetEOLFilled=2057(int style, bool eolFilled) - -# Reset the default style to its state at startup -fun void StyleResetDefault=2058(,) - -# Set a style to be underlined or not. -set void StyleSetUnderline=2059(int style, bool underline) - -enu CaseVisible=SC_CASE_ -val SC_CASE_MIXED=0 -val SC_CASE_UPPER=1 -val SC_CASE_LOWER=2 -val SC_CASE_CAMEL=3 - -# Get the foreground colour of a style. -get colour StyleGetFore=2481(int style,) - -# Get the background colour of a style. -get colour StyleGetBack=2482(int style,) - -# Get is a style bold or not. -get bool StyleGetBold=2483(int style,) - -# Get is a style italic or not. -get bool StyleGetItalic=2484(int style,) - -# Get the size of characters of a style. -get int StyleGetSize=2485(int style,) - -# Get the font of a style. -# Returns the length of the fontName -# Result is NUL-terminated. -get int StyleGetFont=2486(int style, stringresult fontName) - -# Get is a style to have its end of line filled or not. -get bool StyleGetEOLFilled=2487(int style,) - -# Get is a style underlined or not. -get bool StyleGetUnderline=2488(int style,) - -# Get is a style mixed case, or to force upper or lower case. -get int StyleGetCase=2489(int style,) - -# Get the character get of the font in a style. -get int StyleGetCharacterSet=2490(int style,) - -# Get is a style visible or not. -get bool StyleGetVisible=2491(int style,) - -# Get is a style changeable or not (read only). -# Experimental feature, currently buggy. -get bool StyleGetChangeable=2492(int style,) - -# Get is a style a hotspot or not. -get bool StyleGetHotSpot=2493(int style,) - -# Set a style to be mixed case, or to force upper or lower case. -set void StyleSetCase=2060(int style, int caseVisible) - -val SC_FONT_SIZE_MULTIPLIER=100 - -# Set the size of characters of a style. Size is in points multiplied by 100. -set void StyleSetSizeFractional=2061(int style, int sizeHundredthPoints) - -# Get the size of characters of a style in points multiplied by 100 -get int StyleGetSizeFractional=2062(int style,) - -enu FontWeight=SC_WEIGHT_ -val SC_WEIGHT_NORMAL=400 -val SC_WEIGHT_SEMIBOLD=600 -val SC_WEIGHT_BOLD=700 - -# Set the weight of characters of a style. -set void StyleSetWeight=2063(int style, int weight) - -# Get the weight of characters of a style. -get int StyleGetWeight=2064(int style,) - -# Set the character set of the font in a style. -set void StyleSetCharacterSet=2066(int style, int characterSet) - -# Set a style to be a hotspot or not. -set void StyleSetHotSpot=2409(int style, bool hotspot) - -# Set the foreground colour of the main and additional selections and whether to use this setting. -fun void SetSelFore=2067(bool useSetting, colour fore) - -# Set the background colour of the main and additional selections and whether to use this setting. -fun void SetSelBack=2068(bool useSetting, colour back) - -# Get the alpha of the selection. -get int GetSelAlpha=2477(,) - -# Set the alpha of the selection. -set void SetSelAlpha=2478(int alpha,) - -# Is the selection end of line filled? -get bool GetSelEOLFilled=2479(,) - -# Set the selection to have its end of line filled or not. -set void SetSelEOLFilled=2480(bool filled,) - -# Set the foreground colour of the caret. -set void SetCaretFore=2069(colour fore,) - -# When key+modifier combination keyDefinition is pressed perform sciCommand. -fun void AssignCmdKey=2070(keymod keyDefinition, int sciCommand) - -# When key+modifier combination keyDefinition is pressed do nothing. -fun void ClearCmdKey=2071(keymod keyDefinition,) - -# Drop all key mappings. -fun void ClearAllCmdKeys=2072(,) - -# Set the styles for a segment of the document. -fun void SetStylingEx=2073(int length, string styles) - -# Set a style to be visible or not. -set void StyleSetVisible=2074(int style, bool visible) - -# Get the time in milliseconds that the caret is on and off. -get int GetCaretPeriod=2075(,) - -# Get the time in milliseconds that the caret is on and off. 0 = steady on. -set void SetCaretPeriod=2076(int periodMilliseconds,) - -# Set the set of characters making up words for when moving or selecting by word. -# First sets defaults like SetCharsDefault. -set void SetWordChars=2077(, string characters) - -# Get the set of characters making up words for when moving or selecting by word. -# Returns the number of characters -get int GetWordChars=2646(, stringresult characters) - -# Start a sequence of actions that is undone and redone as a unit. -# May be nested. -fun void BeginUndoAction=2078(,) - -# End a sequence of actions that is undone and redone as a unit. -fun void EndUndoAction=2079(,) - -# Indicator style enumeration and some constants -enu IndicatorStyle=INDIC_ -val INDIC_PLAIN=0 -val INDIC_SQUIGGLE=1 -val INDIC_TT=2 -val INDIC_DIAGONAL=3 -val INDIC_STRIKE=4 -val INDIC_HIDDEN=5 -val INDIC_BOX=6 -val INDIC_ROUNDBOX=7 -val INDIC_STRAIGHTBOX=8 -val INDIC_DASH=9 -val INDIC_DOTS=10 -val INDIC_SQUIGGLELOW=11 -val INDIC_DOTBOX=12 -val INDIC_SQUIGGLEPIXMAP=13 -val INDIC_COMPOSITIONTHICK=14 -val INDIC_COMPOSITIONTHIN=15 -val INDIC_FULLBOX=16 -val INDIC_TEXTFORE=17 -val INDIC_POINT=18 -val INDIC_POINTCHARACTER=19 -val INDIC_GRADIENT=20 -val INDIC_GRADIENTCENTRE=21 -val INDIC_IME=32 -val INDIC_IME_MAX=35 -val INDIC_MAX=35 -val INDIC_CONTAINER=8 -val INDIC0_MASK=0x20 -val INDIC1_MASK=0x40 -val INDIC2_MASK=0x80 -val INDICS_MASK=0xE0 - -# Set an indicator to plain, squiggle or TT. -set void IndicSetStyle=2080(int indicator, int indicatorStyle) - -# Retrieve the style of an indicator. -get int IndicGetStyle=2081(int indicator,) - -# Set the foreground colour of an indicator. -set void IndicSetFore=2082(int indicator, colour fore) - -# Retrieve the foreground colour of an indicator. -get colour IndicGetFore=2083(int indicator,) - -# Set an indicator to draw under text or over(default). -set void IndicSetUnder=2510(int indicator, bool under) - -# Retrieve whether indicator drawn under or over text. -get bool IndicGetUnder=2511(int indicator,) - -# Set a hover indicator to plain, squiggle or TT. -set void IndicSetHoverStyle=2680(int indicator, int indicatorStyle) - -# Retrieve the hover style of an indicator. -get int IndicGetHoverStyle=2681(int indicator,) - -# Set the foreground hover colour of an indicator. -set void IndicSetHoverFore=2682(int indicator, colour fore) - -# Retrieve the foreground hover colour of an indicator. -get colour IndicGetHoverFore=2683(int indicator,) - -val SC_INDICVALUEBIT=0x1000000 -val SC_INDICVALUEMASK=0xFFFFFF - -enu IndicFlag=SC_INDICFLAG_ -val SC_INDICFLAG_VALUEFORE=1 - -# Set the attributes of an indicator. -set void IndicSetFlags=2684(int indicator, int flags) - -# Retrieve the attributes of an indicator. -get int IndicGetFlags=2685(int indicator,) - -# Set the foreground colour of all whitespace and whether to use this setting. -fun void SetWhitespaceFore=2084(bool useSetting, colour fore) - -# Set the background colour of all whitespace and whether to use this setting. -fun void SetWhitespaceBack=2085(bool useSetting, colour back) - -# Set the size of the dots used to mark space characters. -set void SetWhitespaceSize=2086(int size,) - -# Get the size of the dots used to mark space characters. -get int GetWhitespaceSize=2087(,) - -# Used to hold extra styling information for each line. -set void SetLineState=2092(int line, int state) - -# Retrieve the extra styling information for a line. -get int GetLineState=2093(int line,) - -# Retrieve the last line number that has line state. -get int GetMaxLineState=2094(,) - -# Is the background of the line containing the caret in a different colour? -get bool GetCaretLineVisible=2095(,) - -# Display the background of the line containing the caret in a different colour. -set void SetCaretLineVisible=2096(bool show,) - -# Get the colour of the background of the line containing the caret. -get colour GetCaretLineBack=2097(,) - -# Set the colour of the background of the line containing the caret. -set void SetCaretLineBack=2098(colour back,) - -# Retrieve the caret line frame width. -# Width = 0 means this option is disabled. -get int GetCaretLineFrame=2704(,) - -# Display the caret line framed. -# Set width != 0 to enable this option and width = 0 to disable it. -set void SetCaretLineFrame=2705(int width,) - -# Set a style to be changeable or not (read only). -# Experimental feature, currently buggy. -set void StyleSetChangeable=2099(int style, bool changeable) - -# Display a auto-completion list. -# The lengthEntered parameter indicates how many characters before -# the caret should be used to provide context. -fun void AutoCShow=2100(int lengthEntered, string itemList) - -# Remove the auto-completion list from the screen. -fun void AutoCCancel=2101(,) - -# Is there an auto-completion list visible? -fun bool AutoCActive=2102(,) - -# Retrieve the position of the caret when the auto-completion list was displayed. -fun position AutoCPosStart=2103(,) - -# User has selected an item so remove the list and insert the selection. -fun void AutoCComplete=2104(,) - -# Define a set of character that when typed cancel the auto-completion list. -fun void AutoCStops=2105(, string characterSet) - -# Change the separator character in the string setting up an auto-completion list. -# Default is space but can be changed if items contain space. -set void AutoCSetSeparator=2106(int separatorCharacter,) - -# Retrieve the auto-completion list separator character. -get int AutoCGetSeparator=2107(,) - -# Select the item in the auto-completion list that starts with a string. -fun void AutoCSelect=2108(, string select) - -# Should the auto-completion list be cancelled if the user backspaces to a -# position before where the box was created. -set void AutoCSetCancelAtStart=2110(bool cancel,) - -# Retrieve whether auto-completion cancelled by backspacing before start. -get bool AutoCGetCancelAtStart=2111(,) - -# Define a set of characters that when typed will cause the autocompletion to -# choose the selected item. -set void AutoCSetFillUps=2112(, string characterSet) - -# Should a single item auto-completion list automatically choose the item. -set void AutoCSetChooseSingle=2113(bool chooseSingle,) - -# Retrieve whether a single item auto-completion list automatically choose the item. -get bool AutoCGetChooseSingle=2114(,) - -# Set whether case is significant when performing auto-completion searches. -set void AutoCSetIgnoreCase=2115(bool ignoreCase,) - -# Retrieve state of ignore case flag. -get bool AutoCGetIgnoreCase=2116(,) - -# Display a list of strings and send notification when user chooses one. -fun void UserListShow=2117(int listType, string itemList) - -# Set whether or not autocompletion is hidden automatically when nothing matches. -set void AutoCSetAutoHide=2118(bool autoHide,) - -# Retrieve whether or not autocompletion is hidden automatically when nothing matches. -get bool AutoCGetAutoHide=2119(,) - -# Set whether or not autocompletion deletes any word characters -# after the inserted text upon completion. -set void AutoCSetDropRestOfWord=2270(bool dropRestOfWord,) - -# Retrieve whether or not autocompletion deletes any word characters -# after the inserted text upon completion. -get bool AutoCGetDropRestOfWord=2271(,) - -# Register an XPM image for use in autocompletion lists. -fun void RegisterImage=2405(int type, string xpmData) - -# Clear all the registered XPM images. -fun void ClearRegisteredImages=2408(,) - -# Retrieve the auto-completion list type-separator character. -get int AutoCGetTypeSeparator=2285(,) - -# Change the type-separator character in the string setting up an auto-completion list. -# Default is '?' but can be changed if items contain '?'. -set void AutoCSetTypeSeparator=2286(int separatorCharacter,) - -# Set the maximum width, in characters, of auto-completion and user lists. -# Set to 0 to autosize to fit longest item, which is the default. -set void AutoCSetMaxWidth=2208(int characterCount,) - -# Get the maximum width, in characters, of auto-completion and user lists. -get int AutoCGetMaxWidth=2209(,) - -# Set the maximum height, in rows, of auto-completion and user lists. -# The default is 5 rows. -set void AutoCSetMaxHeight=2210(int rowCount,) - -# Set the maximum height, in rows, of auto-completion and user lists. -get int AutoCGetMaxHeight=2211(,) - -# Set the number of spaces used for one level of indentation. -set void SetIndent=2122(int indentSize,) - -# Retrieve indentation size. -get int GetIndent=2123(,) - -# Indentation will only use space characters if useTabs is false, otherwise -# it will use a combination of tabs and spaces. -set void SetUseTabs=2124(bool useTabs,) - -# Retrieve whether tabs will be used in indentation. -get bool GetUseTabs=2125(,) - -# Change the indentation of a line to a number of columns. -set void SetLineIndentation=2126(int line, int indentation) - -# Retrieve the number of columns that a line is indented. -get int GetLineIndentation=2127(int line,) - -# Retrieve the position before the first non indentation character on a line. -get position GetLineIndentPosition=2128(int line,) - -# Retrieve the column number of a position, taking tab width into account. -get int GetColumn=2129(position pos,) - -# Count characters between two positions. -fun int CountCharacters=2633(position start, position end) - -# Count code units between two positions. -fun int CountCodeUnits=2715(position start, position end) - -# Show or hide the horizontal scroll bar. -set void SetHScrollBar=2130(bool visible,) -# Is the horizontal scroll bar visible? -get bool GetHScrollBar=2131(,) - -enu IndentView=SC_IV_ -val SC_IV_NONE=0 -val SC_IV_REAL=1 -val SC_IV_LOOKFORWARD=2 -val SC_IV_LOOKBOTH=3 - -# Show or hide indentation guides. -set void SetIndentationGuides=2132(int indentView,) - -# Are the indentation guides visible? -get int GetIndentationGuides=2133(,) - -# Set the highlighted indentation guide column. -# 0 = no highlighted guide. -set void SetHighlightGuide=2134(int column,) - -# Get the highlighted indentation guide column. -get int GetHighlightGuide=2135(,) - -# Get the position after the last visible characters on a line. -get position GetLineEndPosition=2136(int line,) - -# Get the code page used to interpret the bytes of the document as characters. -get int GetCodePage=2137(,) - -# Get the foreground colour of the caret. -get colour GetCaretFore=2138(,) - -# In read-only mode? -get bool GetReadOnly=2140(,) - -# Sets the position of the caret. -set void SetCurrentPos=2141(position caret,) - -# Sets the position that starts the selection - this becomes the anchor. -set void SetSelectionStart=2142(position anchor,) - -# Returns the position at the start of the selection. -get position GetSelectionStart=2143(,) - -# Sets the position that ends the selection - this becomes the caret. -set void SetSelectionEnd=2144(position caret,) - -# Returns the position at the end of the selection. -get position GetSelectionEnd=2145(,) - -# Set caret to a position, while removing any existing selection. -fun void SetEmptySelection=2556(position caret,) - -# Sets the print magnification added to the point size of each style for printing. -set void SetPrintMagnification=2146(int magnification,) - -# Returns the print magnification. -get int GetPrintMagnification=2147(,) - -enu PrintOption=SC_PRINT_ -# PrintColourMode - use same colours as screen. -# with the exception of line number margins, which use a white background -val SC_PRINT_NORMAL=0 -# PrintColourMode - invert the light value of each style for printing. -val SC_PRINT_INVERTLIGHT=1 -# PrintColourMode - force black text on white background for printing. -val SC_PRINT_BLACKONWHITE=2 -# PrintColourMode - text stays coloured, but all background is forced to be white for printing. -val SC_PRINT_COLOURONWHITE=3 -# PrintColourMode - only the default-background is forced to be white for printing. -val SC_PRINT_COLOURONWHITEDEFAULTBG=4 -# PrintColourMode - use same colours as screen, including line number margins. -val SC_PRINT_SCREENCOLOURS=5 - -# Modify colours when printing for clearer printed text. -set void SetPrintColourMode=2148(int mode,) - -# Returns the print colour mode. -get int GetPrintColourMode=2149(,) - -enu FindOption=SCFIND_ -val SCFIND_WHOLEWORD=0x2 -val SCFIND_MATCHCASE=0x4 -val SCFIND_WORDSTART=0x00100000 -val SCFIND_REGEXP=0x00200000 -val SCFIND_POSIX=0x00400000 -val SCFIND_CXX11REGEX=0x00800000 - -# Find some text in the document. -fun position FindText=2150(int searchFlags, findtext ft) - -# On Windows, will draw the document into a display context such as a printer. -fun position FormatRange=2151(bool draw, formatrange fr) - -# Retrieve the display line at the top of the display. -get int GetFirstVisibleLine=2152(,) - -# Retrieve the contents of a line. -# Returns the length of the line. -fun int GetLine=2153(int line, stringresult text) - -# Returns the number of lines in the document. There is always at least one. -get int GetLineCount=2154(,) - -# Sets the size in pixels of the left margin. -set void SetMarginLeft=2155(, int pixelWidth) - -# Returns the size in pixels of the left margin. -get int GetMarginLeft=2156(,) - -# Sets the size in pixels of the right margin. -set void SetMarginRight=2157(, int pixelWidth) - -# Returns the size in pixels of the right margin. -get int GetMarginRight=2158(,) - -# Is the document different from when it was last saved? -get bool GetModify=2159(,) - -# Select a range of text. -fun void SetSel=2160(position anchor, position caret) - -# Retrieve the selected text. -# Return the length of the text. -# Result is NUL-terminated. -fun int GetSelText=2161(, stringresult text) - -# Retrieve a range of text. -# Return the length of the text. -fun int GetTextRange=2162(, textrange tr) - -# Draw the selection either highlighted or in normal (non-highlighted) style. -fun void HideSelection=2163(bool hide,) - -# Retrieve the x value of the point in the window where a position is displayed. -fun int PointXFromPosition=2164(, position pos) - -# Retrieve the y value of the point in the window where a position is displayed. -fun int PointYFromPosition=2165(, position pos) - -# Retrieve the line containing a position. -fun int LineFromPosition=2166(position pos,) - -# Retrieve the position at the start of a line. -fun position PositionFromLine=2167(int line,) - -# Scroll horizontally and vertically. -fun void LineScroll=2168(int columns, int lines) - -# Ensure the caret is visible. -fun void ScrollCaret=2169(,) - -# Scroll the argument positions and the range between them into view giving -# priority to the primary position then the secondary position. -# This may be used to make a search match visible. -fun void ScrollRange=2569(position secondary, position primary) - -# Replace the selected text with the argument text. -fun void ReplaceSel=2170(, string text) - -# Set to read only or read write. -set void SetReadOnly=2171(bool readOnly,) - -# Null operation. -fun void Null=2172(,) - -# Will a paste succeed? -fun bool CanPaste=2173(,) - -# Are there any undoable actions in the undo history? -fun bool CanUndo=2174(,) - -# Delete the undo history. -fun void EmptyUndoBuffer=2175(,) - -# Undo one action in the undo history. -fun void Undo=2176(,) - -# Cut the selection to the clipboard. -fun void Cut=2177(,) - -# Copy the selection to the clipboard. -fun void Copy=2178(,) - -# Paste the contents of the clipboard into the document replacing the selection. -fun void Paste=2179(,) - -# Clear the selection. -fun void Clear=2180(,) - -# Replace the contents of the document with the argument text. -fun void SetText=2181(, string text) - -# Retrieve all the text in the document. -# Returns number of characters retrieved. -# Result is NUL-terminated. -fun int GetText=2182(int length, stringresult text) - -# Retrieve the number of characters in the document. -get int GetTextLength=2183(,) - -# Retrieve a pointer to a function that processes messages for this Scintilla. -get int GetDirectFunction=2184(,) - -# Retrieve a pointer value to use as the first argument when calling -# the function returned by GetDirectFunction. -get int GetDirectPointer=2185(,) - -# Set to overtype (true) or insert mode. -set void SetOvertype=2186(bool overType,) - -# Returns true if overtype mode is active otherwise false is returned. -get bool GetOvertype=2187(,) - -# Set the width of the insert mode caret. -set void SetCaretWidth=2188(int pixelWidth,) - -# Returns the width of the insert mode caret. -get int GetCaretWidth=2189(,) - -# Sets the position that starts the target which is used for updating the -# document without affecting the scroll position. -set void SetTargetStart=2190(position start,) - -# Get the position that starts the target. -get position GetTargetStart=2191(,) - -# Sets the position that ends the target which is used for updating the -# document without affecting the scroll position. -set void SetTargetEnd=2192(position end,) - -# Get the position that ends the target. -get position GetTargetEnd=2193(,) - -# Sets both the start and end of the target in one call. -fun void SetTargetRange=2686(position start, position end) - -# Retrieve the text in the target. -get int GetTargetText=2687(, stringresult text) - -# Make the target range start and end be the same as the selection range start and end. -fun void TargetFromSelection=2287(,) - -# Sets the target to the whole document. -fun void TargetWholeDocument=2690(,) - -# Replace the target text with the argument text. -# Text is counted so it can contain NULs. -# Returns the length of the replacement text. -fun int ReplaceTarget=2194(int length, string text) - -# Replace the target text with the argument text after \d processing. -# Text is counted so it can contain NULs. -# Looks for \d where d is between 1 and 9 and replaces these with the strings -# matched in the last search operation which were surrounded by \( and \). -# Returns the length of the replacement text including any change -# caused by processing the \d patterns. -fun int ReplaceTargetRE=2195(int length, string text) - -# Search for a counted string in the target and set the target to the found -# range. Text is counted so it can contain NULs. -# Returns length of range or -1 for failure in which case target is not moved. -fun int SearchInTarget=2197(int length, string text) - -# Set the search flags used by SearchInTarget. -set void SetSearchFlags=2198(int searchFlags,) - -# Get the search flags used by SearchInTarget. -get int GetSearchFlags=2199(,) - -# Show a call tip containing a definition near position pos. -fun void CallTipShow=2200(position pos, string definition) - -# Remove the call tip from the screen. -fun void CallTipCancel=2201(,) - -# Is there an active call tip? -fun bool CallTipActive=2202(,) - -# Retrieve the position where the caret was before displaying the call tip. -fun position CallTipPosStart=2203(,) - -# Set the start position in order to change when backspacing removes the calltip. -set void CallTipSetPosStart=2214(int posStart,) - -# Highlight a segment of the definition. -fun void CallTipSetHlt=2204(int highlightStart, int highlightEnd) - -# Set the background colour for the call tip. -set void CallTipSetBack=2205(colour back,) - -# Set the foreground colour for the call tip. -set void CallTipSetFore=2206(colour fore,) - -# Set the foreground colour for the highlighted part of the call tip. -set void CallTipSetForeHlt=2207(colour fore,) - -# Enable use of STYLE_CALLTIP and set call tip tab size in pixels. -set void CallTipUseStyle=2212(int tabSize,) - -# Set position of calltip, above or below text. -set void CallTipSetPosition=2213(bool above,) - -# Find the display line of a document line taking hidden lines into account. -fun int VisibleFromDocLine=2220(int docLine,) - -# Find the document line of a display line taking hidden lines into account. -fun int DocLineFromVisible=2221(int displayLine,) - -# The number of display lines needed to wrap a document line -fun int WrapCount=2235(int docLine,) - -enu FoldLevel=SC_FOLDLEVEL -val SC_FOLDLEVELBASE=0x400 -val SC_FOLDLEVELWHITEFLAG=0x1000 -val SC_FOLDLEVELHEADERFLAG=0x2000 -val SC_FOLDLEVELNUMBERMASK=0x0FFF - -# Set the fold level of a line. -# This encodes an integer level along with flags indicating whether the -# line is a header and whether it is effectively white space. -set void SetFoldLevel=2222(int line, int level) - -# Retrieve the fold level of a line. -get int GetFoldLevel=2223(int line,) - -# Find the last child line of a header line. -get int GetLastChild=2224(int line, int level) - -# Find the parent line of a child line. -get int GetFoldParent=2225(int line,) - -# Make a range of lines visible. -fun void ShowLines=2226(int lineStart, int lineEnd) - -# Make a range of lines invisible. -fun void HideLines=2227(int lineStart, int lineEnd) - -# Is a line visible? -get bool GetLineVisible=2228(int line,) - -# Are all lines visible? -get bool GetAllLinesVisible=2236(,) - -# Show the children of a header line. -set void SetFoldExpanded=2229(int line, bool expanded) - -# Is a header line expanded? -get bool GetFoldExpanded=2230(int line,) - -# Switch a header line between expanded and contracted. -fun void ToggleFold=2231(int line,) - -# Switch a header line between expanded and contracted and show some text after the line. -fun void ToggleFoldShowText=2700(int line, string text) - -enu FoldDisplayTextStyle=SC_FOLDDISPLAYTEXT_ -val SC_FOLDDISPLAYTEXT_HIDDEN=0 -val SC_FOLDDISPLAYTEXT_STANDARD=1 -val SC_FOLDDISPLAYTEXT_BOXED=2 - -# Set the style of fold display text -set void FoldDisplayTextSetStyle=2701(int style,) - -enu FoldAction=SC_FOLDACTION_ -val SC_FOLDACTION_CONTRACT=0 -val SC_FOLDACTION_EXPAND=1 -val SC_FOLDACTION_TOGGLE=2 - -# Expand or contract a fold header. -fun void FoldLine=2237(int line, int action) - -# Expand or contract a fold header and its children. -fun void FoldChildren=2238(int line, int action) - -# Expand a fold header and all children. Use the level argument instead of the line's current level. -fun void ExpandChildren=2239(int line, int level) - -# Expand or contract all fold headers. -fun void FoldAll=2662(int action,) - -# Ensure a particular line is visible by expanding any header line hiding it. -fun void EnsureVisible=2232(int line,) - -enu AutomaticFold=SC_AUTOMATICFOLD_ -val SC_AUTOMATICFOLD_SHOW=0x0001 -val SC_AUTOMATICFOLD_CLICK=0x0002 -val SC_AUTOMATICFOLD_CHANGE=0x0004 - -# Set automatic folding behaviours. -set void SetAutomaticFold=2663(int automaticFold,) - -# Get automatic folding behaviours. -get int GetAutomaticFold=2664(,) - -enu FoldFlag=SC_FOLDFLAG_ -val SC_FOLDFLAG_LINEBEFORE_EXPANDED=0x0002 -val SC_FOLDFLAG_LINEBEFORE_CONTRACTED=0x0004 -val SC_FOLDFLAG_LINEAFTER_EXPANDED=0x0008 -val SC_FOLDFLAG_LINEAFTER_CONTRACTED=0x0010 -val SC_FOLDFLAG_LEVELNUMBERS=0x0040 -val SC_FOLDFLAG_LINESTATE=0x0080 - -# Set some style options for folding. -set void SetFoldFlags=2233(int flags,) - -# Ensure a particular line is visible by expanding any header line hiding it. -# Use the currently set visibility policy to determine which range to display. -fun void EnsureVisibleEnforcePolicy=2234(int line,) - -# Sets whether a tab pressed when caret is within indentation indents. -set void SetTabIndents=2260(bool tabIndents,) - -# Does a tab pressed when caret is within indentation indent? -get bool GetTabIndents=2261(,) - -# Sets whether a backspace pressed when caret is within indentation unindents. -set void SetBackSpaceUnIndents=2262(bool bsUnIndents,) - -# Does a backspace pressed when caret is within indentation unindent? -get bool GetBackSpaceUnIndents=2263(,) - -val SC_TIME_FOREVER=10000000 - -# Sets the time the mouse must sit still to generate a mouse dwell event. -set void SetMouseDwellTime=2264(int periodMilliseconds,) - -# Retrieve the time the mouse must sit still to generate a mouse dwell event. -get int GetMouseDwellTime=2265(,) - -# Get position of start of word. -fun int WordStartPosition=2266(position pos, bool onlyWordCharacters) - -# Get position of end of word. -fun int WordEndPosition=2267(position pos, bool onlyWordCharacters) - -# Is the range start..end considered a word? -fun bool IsRangeWord=2691(position start, position end) - -enu IdleStyling=SC_IDLESTYLING_ -val SC_IDLESTYLING_NONE=0 -val SC_IDLESTYLING_TOVISIBLE=1 -val SC_IDLESTYLING_AFTERVISIBLE=2 -val SC_IDLESTYLING_ALL=3 - -# Sets limits to idle styling. -set void SetIdleStyling=2692(int idleStyling,) - -# Retrieve the limits to idle styling. -get int GetIdleStyling=2693(,) - -enu Wrap=SC_WRAP_ -val SC_WRAP_NONE=0 -val SC_WRAP_WORD=1 -val SC_WRAP_CHAR=2 -val SC_WRAP_WHITESPACE=3 - -# Sets whether text is word wrapped. -set void SetWrapMode=2268(int wrapMode,) - -# Retrieve whether text is word wrapped. -get int GetWrapMode=2269(,) - -enu WrapVisualFlag=SC_WRAPVISUALFLAG_ -val SC_WRAPVISUALFLAG_NONE=0x0000 -val SC_WRAPVISUALFLAG_END=0x0001 -val SC_WRAPVISUALFLAG_START=0x0002 -val SC_WRAPVISUALFLAG_MARGIN=0x0004 - -# Set the display mode of visual flags for wrapped lines. -set void SetWrapVisualFlags=2460(int wrapVisualFlags,) - -# Retrive the display mode of visual flags for wrapped lines. -get int GetWrapVisualFlags=2461(,) - -enu WrapVisualLocation=SC_WRAPVISUALFLAGLOC_ -val SC_WRAPVISUALFLAGLOC_DEFAULT=0x0000 -val SC_WRAPVISUALFLAGLOC_END_BY_TEXT=0x0001 -val SC_WRAPVISUALFLAGLOC_START_BY_TEXT=0x0002 - -# Set the location of visual flags for wrapped lines. -set void SetWrapVisualFlagsLocation=2462(int wrapVisualFlagsLocation,) - -# Retrive the location of visual flags for wrapped lines. -get int GetWrapVisualFlagsLocation=2463(,) - -# Set the start indent for wrapped lines. -set void SetWrapStartIndent=2464(int indent,) - -# Retrive the start indent for wrapped lines. -get int GetWrapStartIndent=2465(,) - -enu WrapIndentMode=SC_WRAPINDENT_ -val SC_WRAPINDENT_FIXED=0 -val SC_WRAPINDENT_SAME=1 -val SC_WRAPINDENT_INDENT=2 -val SC_WRAPINDENT_DEEPINDENT=3 - -# Sets how wrapped sublines are placed. Default is fixed. -set void SetWrapIndentMode=2472(int wrapIndentMode,) - -# Retrieve how wrapped sublines are placed. Default is fixed. -get int GetWrapIndentMode=2473(,) - -enu LineCache=SC_CACHE_ -val SC_CACHE_NONE=0 -val SC_CACHE_CARET=1 -val SC_CACHE_PAGE=2 -val SC_CACHE_DOCUMENT=3 - -# Sets the degree of caching of layout information. -set void SetLayoutCache=2272(int cacheMode,) - -# Retrieve the degree of caching of layout information. -get int GetLayoutCache=2273(,) - -# Sets the document width assumed for scrolling. -set void SetScrollWidth=2274(int pixelWidth,) - -# Retrieve the document width assumed for scrolling. -get int GetScrollWidth=2275(,) - -# Sets whether the maximum width line displayed is used to set scroll width. -set void SetScrollWidthTracking=2516(bool tracking,) - -# Retrieve whether the scroll width tracks wide lines. -get bool GetScrollWidthTracking=2517(,) - -# Measure the pixel width of some text in a particular style. -# NUL terminated text argument. -# Does not handle tab or control characters. -fun int TextWidth=2276(int style, string text) - -# Sets the scroll range so that maximum scroll position has -# the last line at the bottom of the view (default). -# Setting this to false allows scrolling one page below the last line. -set void SetEndAtLastLine=2277(bool endAtLastLine,) - -# Retrieve whether the maximum scroll position has the last -# line at the bottom of the view. -get bool GetEndAtLastLine=2278(,) - -# Retrieve the height of a particular line of text in pixels. -fun int TextHeight=2279(int line,) - -# Show or hide the vertical scroll bar. -set void SetVScrollBar=2280(bool visible,) - -# Is the vertical scroll bar visible? -get bool GetVScrollBar=2281(,) - -# Append a string to the end of the document without changing the selection. -fun void AppendText=2282(int length, string text) - -# Is drawing done in two phases with backgrounds drawn before foregrounds? -get bool GetTwoPhaseDraw=2283(,) - -# In twoPhaseDraw mode, drawing is performed in two phases, first the background -# and then the foreground. This avoids chopping off characters that overlap the next run. -set void SetTwoPhaseDraw=2284(bool twoPhase,) - -enu PhasesDraw=SC_PHASES_ -val SC_PHASES_ONE=0 -val SC_PHASES_TWO=1 -val SC_PHASES_MULTIPLE=2 - -# How many phases is drawing done in? -get int GetPhasesDraw=2673(,) - -# In one phase draw, text is drawn in a series of rectangular blocks with no overlap. -# In two phase draw, text is drawn in a series of lines allowing runs to overlap horizontally. -# In multiple phase draw, each element is drawn over the whole drawing area, allowing text -# to overlap from one line to the next. -set void SetPhasesDraw=2674(int phases,) - -# Control font anti-aliasing. - -enu FontQuality=SC_EFF_ -val SC_EFF_QUALITY_MASK=0xF -val SC_EFF_QUALITY_DEFAULT=0 -val SC_EFF_QUALITY_NON_ANTIALIASED=1 -val SC_EFF_QUALITY_ANTIALIASED=2 -val SC_EFF_QUALITY_LCD_OPTIMIZED=3 - -# Choose the quality level for text from the FontQuality enumeration. -set void SetFontQuality=2611(int fontQuality,) - -# Retrieve the quality level for text. -get int GetFontQuality=2612(,) - -# Scroll so that a display line is at the top of the display. -set void SetFirstVisibleLine=2613(int displayLine,) - -enu MultiPaste=SC_MULTIPASTE_ -val SC_MULTIPASTE_ONCE=0 -val SC_MULTIPASTE_EACH=1 - -# Change the effect of pasting when there are multiple selections. -set void SetMultiPaste=2614(int multiPaste,) - -# Retrieve the effect of pasting when there are multiple selections. -get int GetMultiPaste=2615(,) - -# Retrieve the value of a tag from a regular expression search. -# Result is NUL-terminated. -get int GetTag=2616(int tagNumber, stringresult tagValue) - -# Join the lines in the target. -fun void LinesJoin=2288(,) - -# Split the lines in the target into lines that are less wide than pixelWidth -# where possible. -fun void LinesSplit=2289(int pixelWidth,) - -# Set one of the colours used as a chequerboard pattern in the fold margin -fun void SetFoldMarginColour=2290(bool useSetting, colour back) -# Set the other colour used as a chequerboard pattern in the fold margin -fun void SetFoldMarginHiColour=2291(bool useSetting, colour fore) - -enu Accessibility=SC_ACCESSIBILITY_ -val SC_ACCESSIBILITY_DISABLED=0 -val SC_ACCESSIBILITY_ENABLED=1 - -# Enable or disable accessibility. -set void SetAccessibility=2702(int accessibility,) - -# Report accessibility status. -get int GetAccessibility=2703(,) - -## New messages go here - -## Start of key messages -# Move caret down one line. -fun void LineDown=2300(,) - -# Move caret down one line extending selection to new caret position. -fun void LineDownExtend=2301(,) - -# Move caret up one line. -fun void LineUp=2302(,) - -# Move caret up one line extending selection to new caret position. -fun void LineUpExtend=2303(,) - -# Move caret left one character. -fun void CharLeft=2304(,) - -# Move caret left one character extending selection to new caret position. -fun void CharLeftExtend=2305(,) - -# Move caret right one character. -fun void CharRight=2306(,) - -# Move caret right one character extending selection to new caret position. -fun void CharRightExtend=2307(,) - -# Move caret left one word. -fun void WordLeft=2308(,) - -# Move caret left one word extending selection to new caret position. -fun void WordLeftExtend=2309(,) - -# Move caret right one word. -fun void WordRight=2310(,) - -# Move caret right one word extending selection to new caret position. -fun void WordRightExtend=2311(,) - -# Move caret to first position on line. -fun void Home=2312(,) - -# Move caret to first position on line extending selection to new caret position. -fun void HomeExtend=2313(,) - -# Move caret to last position on line. -fun void LineEnd=2314(,) - -# Move caret to last position on line extending selection to new caret position. -fun void LineEndExtend=2315(,) - -# Move caret to first position in document. -fun void DocumentStart=2316(,) - -# Move caret to first position in document extending selection to new caret position. -fun void DocumentStartExtend=2317(,) - -# Move caret to last position in document. -fun void DocumentEnd=2318(,) - -# Move caret to last position in document extending selection to new caret position. -fun void DocumentEndExtend=2319(,) - -# Move caret one page up. -fun void PageUp=2320(,) - -# Move caret one page up extending selection to new caret position. -fun void PageUpExtend=2321(,) - -# Move caret one page down. -fun void PageDown=2322(,) - -# Move caret one page down extending selection to new caret position. -fun void PageDownExtend=2323(,) - -# Switch from insert to overtype mode or the reverse. -fun void EditToggleOvertype=2324(,) - -# Cancel any modes such as call tip or auto-completion list display. -fun void Cancel=2325(,) - -# Delete the selection or if no selection, the character before the caret. -fun void DeleteBack=2326(,) - -# If selection is empty or all on one line replace the selection with a tab character. -# If more than one line selected, indent the lines. -fun void Tab=2327(,) - -# Dedent the selected lines. -fun void BackTab=2328(,) - -# Insert a new line, may use a CRLF, CR or LF depending on EOL mode. -fun void NewLine=2329(,) - -# Insert a Form Feed character. -fun void FormFeed=2330(,) - -# Move caret to before first visible character on line. -# If already there move to first character on line. -fun void VCHome=2331(,) - -# Like VCHome but extending selection to new caret position. -fun void VCHomeExtend=2332(,) - -# Magnify the displayed text by increasing the sizes by 1 point. -fun void ZoomIn=2333(,) - -# Make the displayed text smaller by decreasing the sizes by 1 point. -fun void ZoomOut=2334(,) - -# Delete the word to the left of the caret. -fun void DelWordLeft=2335(,) - -# Delete the word to the right of the caret. -fun void DelWordRight=2336(,) - -# Delete the word to the right of the caret, but not the trailing non-word characters. -fun void DelWordRightEnd=2518(,) - -# Cut the line containing the caret. -fun void LineCut=2337(,) - -# Delete the line containing the caret. -fun void LineDelete=2338(,) - -# Switch the current line with the previous. -fun void LineTranspose=2339(,) - -# Reverse order of selected lines. -fun void LineReverse=2354(,) - -# Duplicate the current line. -fun void LineDuplicate=2404(,) - -# Transform the selection to lower case. -fun void LowerCase=2340(,) - -# Transform the selection to upper case. -fun void UpperCase=2341(,) - -# Scroll the document down, keeping the caret visible. -fun void LineScrollDown=2342(,) - -# Scroll the document up, keeping the caret visible. -fun void LineScrollUp=2343(,) - -# Delete the selection or if no selection, the character before the caret. -# Will not delete the character before at the start of a line. -fun void DeleteBackNotLine=2344(,) - -# Move caret to first position on display line. -fun void HomeDisplay=2345(,) - -# Move caret to first position on display line extending selection to -# new caret position. -fun void HomeDisplayExtend=2346(,) - -# Move caret to last position on display line. -fun void LineEndDisplay=2347(,) - -# Move caret to last position on display line extending selection to new -# caret position. -fun void LineEndDisplayExtend=2348(,) - -# Like Home but when word-wrap is enabled goes first to start of display line -# HomeDisplay, then to start of document line Home. -fun void HomeWrap=2349(,) - -# Like HomeExtend but when word-wrap is enabled extends first to start of display line -# HomeDisplayExtend, then to start of document line HomeExtend. -fun void HomeWrapExtend=2450(,) - -# Like LineEnd but when word-wrap is enabled goes first to end of display line -# LineEndDisplay, then to start of document line LineEnd. -fun void LineEndWrap=2451(,) - -# Like LineEndExtend but when word-wrap is enabled extends first to end of display line -# LineEndDisplayExtend, then to start of document line LineEndExtend. -fun void LineEndWrapExtend=2452(,) - -# Like VCHome but when word-wrap is enabled goes first to start of display line -# VCHomeDisplay, then behaves like VCHome. -fun void VCHomeWrap=2453(,) - -# Like VCHomeExtend but when word-wrap is enabled extends first to start of display line -# VCHomeDisplayExtend, then behaves like VCHomeExtend. -fun void VCHomeWrapExtend=2454(,) - -# Copy the line containing the caret. -fun void LineCopy=2455(,) - -# Move the caret inside current view if it's not there already. -fun void MoveCaretInsideView=2401(,) - -# How many characters are on a line, including end of line characters? -fun int LineLength=2350(int line,) - -# Highlight the characters at two positions. -fun void BraceHighlight=2351(position posA, position posB) - -# Use specified indicator to highlight matching braces instead of changing their style. -fun void BraceHighlightIndicator=2498(bool useSetting, int indicator) - -# Highlight the character at a position indicating there is no matching brace. -fun void BraceBadLight=2352(position pos,) - -# Use specified indicator to highlight non matching brace instead of changing its style. -fun void BraceBadLightIndicator=2499(bool useSetting, int indicator) - -# Find the position of a matching brace or INVALID_POSITION if no match. -# The maxReStyle must be 0 for now. It may be defined in a future release. -fun position BraceMatch=2353(position pos, int maxReStyle) - -# Are the end of line characters visible? -get bool GetViewEOL=2355(,) - -# Make the end of line characters visible or invisible. -set void SetViewEOL=2356(bool visible,) - -# Retrieve a pointer to the document object. -get int GetDocPointer=2357(,) - -# Change the document object used. -set void SetDocPointer=2358(, int doc) - -# Set which document modification events are sent to the container. -set void SetModEventMask=2359(int eventMask,) - -enu EdgeVisualStyle=EDGE_ -val EDGE_NONE=0 -val EDGE_LINE=1 -val EDGE_BACKGROUND=2 -val EDGE_MULTILINE=3 - -# Retrieve the column number which text should be kept within. -get int GetEdgeColumn=2360(,) - -# Set the column number of the edge. -# If text goes past the edge then it is highlighted. -set void SetEdgeColumn=2361(int column,) - -# Retrieve the edge highlight mode. -get int GetEdgeMode=2362(,) - -# The edge may be displayed by a line (EDGE_LINE/EDGE_MULTILINE) or by highlighting text that -# goes beyond it (EDGE_BACKGROUND) or not displayed at all (EDGE_NONE). -set void SetEdgeMode=2363(int edgeMode,) - -# Retrieve the colour used in edge indication. -get colour GetEdgeColour=2364(,) - -# Change the colour used in edge indication. -set void SetEdgeColour=2365(colour edgeColour,) - -# Add a new vertical edge to the view. -fun void MultiEdgeAddLine=2694(int column, colour edgeColour) - -# Clear all vertical edges. -fun void MultiEdgeClearAll=2695(,) - -# Sets the current caret position to be the search anchor. -fun void SearchAnchor=2366(,) - -# Find some text starting at the search anchor. -# Does not ensure the selection is visible. -fun int SearchNext=2367(int searchFlags, string text) - -# Find some text starting at the search anchor and moving backwards. -# Does not ensure the selection is visible. -fun int SearchPrev=2368(int searchFlags, string text) - -# Retrieves the number of lines completely visible. -get int LinesOnScreen=2370(,) - -enu PopUp=SC_POPUP_ -val SC_POPUP_NEVER=0 -val SC_POPUP_ALL=1 -val SC_POPUP_TEXT=2 - -# Set whether a pop up menu is displayed automatically when the user presses -# the wrong mouse button on certain areas. -fun void UsePopUp=2371(int popUpMode,) - -# Is the selection rectangular? The alternative is the more common stream selection. -get bool SelectionIsRectangle=2372(,) - -# Set the zoom level. This number of points is added to the size of all fonts. -# It may be positive to magnify or negative to reduce. -set void SetZoom=2373(int zoomInPoints,) -# Retrieve the zoom level. -get int GetZoom=2374(,) - -enu DocumentOption=SC_DOCUMENTOPTION_ -val SC_DOCUMENTOPTION_DEFAULT=0 -val SC_DOCUMENTOPTION_STYLES_NONE=0x1 -val SC_DOCUMENTOPTION_TEXT_LARGE=0x100 - -# Create a new document object. -# Starts with reference count of 1 and not selected into editor. -fun int CreateDocument=2375(int bytes, int documentOptions) -# Extend life of document. -fun void AddRefDocument=2376(, int doc) -# Release a reference to the document, deleting document if it fades to black. -fun void ReleaseDocument=2377(, int doc) - -# Get which document options are set. -get int GetDocumentOptions=2379(,) - -# Get which document modification events are sent to the container. -get int GetModEventMask=2378(,) - -# Set whether command events are sent to the container. -set void SetCommandEvents=2717(bool commandEvents,) - -# Get whether command events are sent to the container. -get bool GetCommandEvents=2718(,) - -# Change internal focus flag. -set void SetFocus=2380(bool focus,) -# Get internal focus flag. -get bool GetFocus=2381(,) - -enu Status=SC_STATUS_ -val SC_STATUS_OK=0 -val SC_STATUS_FAILURE=1 -val SC_STATUS_BADALLOC=2 -val SC_STATUS_WARN_START=1000 -val SC_STATUS_WARN_REGEX=1001 - -# Change error status - 0 = OK. -set void SetStatus=2382(int status,) -# Get error status. -get int GetStatus=2383(,) - -# Set whether the mouse is captured when its button is pressed. -set void SetMouseDownCaptures=2384(bool captures,) -# Get whether mouse gets captured. -get bool GetMouseDownCaptures=2385(,) - -# Set whether the mouse wheel can be active outside the window. -set void SetMouseWheelCaptures=2696(bool captures,) -# Get whether mouse wheel can be active outside the window. -get bool GetMouseWheelCaptures=2697(,) - -enu CursorShape=SC_CURSOR -val SC_CURSORNORMAL=-1 -val SC_CURSORARROW=2 -val SC_CURSORWAIT=4 -val SC_CURSORREVERSEARROW=7 -# Sets the cursor to one of the SC_CURSOR* values. -set void SetCursor=2386(int cursorType,) -# Get cursor type. -get int GetCursor=2387(,) - -# Change the way control characters are displayed: -# If symbol is < 32, keep the drawn way, else, use the given character. -set void SetControlCharSymbol=2388(int symbol,) -# Get the way control characters are displayed. -get int GetControlCharSymbol=2389(,) - -# Move to the previous change in capitalisation. -fun void WordPartLeft=2390(,) -# Move to the previous change in capitalisation extending selection -# to new caret position. -fun void WordPartLeftExtend=2391(,) -# Move to the change next in capitalisation. -fun void WordPartRight=2392(,) -# Move to the next change in capitalisation extending selection -# to new caret position. -fun void WordPartRightExtend=2393(,) - -# Constants for use with SetVisiblePolicy, similar to SetCaretPolicy. -enu VisiblePolicy=VISIBLE_ -val VISIBLE_SLOP=0x01 -val VISIBLE_STRICT=0x04 -# Set the way the display area is determined when a particular line -# is to be moved to by Find, FindNext, GotoLine, etc. -fun void SetVisiblePolicy=2394(int visiblePolicy, int visibleSlop) - -# Delete back from the current position to the start of the line. -fun void DelLineLeft=2395(,) - -# Delete forwards from the current position to the end of the line. -fun void DelLineRight=2396(,) - -# Set the xOffset (ie, horizontal scroll position). -set void SetXOffset=2397(int xOffset,) - -# Get the xOffset (ie, horizontal scroll position). -get int GetXOffset=2398(,) - -# Set the last x chosen value to be the caret x position. -fun void ChooseCaretX=2399(,) - -# Set the focus to this Scintilla widget. -fun void GrabFocus=2400(,) - -enu CaretPolicy=CARET_ -# Caret policy, used by SetXCaretPolicy and SetYCaretPolicy. -# If CARET_SLOP is set, we can define a slop value: caretSlop. -# This value defines an unwanted zone (UZ) where the caret is... unwanted. -# This zone is defined as a number of pixels near the vertical margins, -# and as a number of lines near the horizontal margins. -# By keeping the caret away from the edges, it is seen within its context, -# so it is likely that the identifier that the caret is on can be completely seen, -# and that the current line is seen with some of the lines following it which are -# often dependent on that line. -val CARET_SLOP=0x01 -# If CARET_STRICT is set, the policy is enforced... strictly. -# The caret is centred on the display if slop is not set, -# and cannot go in the UZ if slop is set. -val CARET_STRICT=0x04 -# If CARET_JUMPS is set, the display is moved more energetically -# so the caret can move in the same direction longer before the policy is applied again. -val CARET_JUMPS=0x10 -# If CARET_EVEN is not set, instead of having symmetrical UZs, -# the left and bottom UZs are extended up to right and top UZs respectively. -# This way, we favour the displaying of useful information: the beginning of lines, -# where most code reside, and the lines after the caret, eg. the body of a function. -val CARET_EVEN=0x08 - -# Set the way the caret is kept visible when going sideways. -# The exclusion zone is given in pixels. -fun void SetXCaretPolicy=2402(int caretPolicy, int caretSlop) - -# Set the way the line the caret is on is kept visible. -# The exclusion zone is given in lines. -fun void SetYCaretPolicy=2403(int caretPolicy, int caretSlop) - -# Set printing to line wrapped (SC_WRAP_WORD) or not line wrapped (SC_WRAP_NONE). -set void SetPrintWrapMode=2406(int wrapMode,) - -# Is printing line wrapped? -get int GetPrintWrapMode=2407(,) - -# Set a fore colour for active hotspots. -set void SetHotspotActiveFore=2410(bool useSetting, colour fore) - -# Get the fore colour for active hotspots. -get colour GetHotspotActiveFore=2494(,) - -# Set a back colour for active hotspots. -set void SetHotspotActiveBack=2411(bool useSetting, colour back) - -# Get the back colour for active hotspots. -get colour GetHotspotActiveBack=2495(,) - -# Enable / Disable underlining active hotspots. -set void SetHotspotActiveUnderline=2412(bool underline,) - -# Get whether underlining for active hotspots. -get bool GetHotspotActiveUnderline=2496(,) - -# Limit hotspots to single line so hotspots on two lines don't merge. -set void SetHotspotSingleLine=2421(bool singleLine,) - -# Get the HotspotSingleLine property -get bool GetHotspotSingleLine=2497(,) - -# Move caret down one paragraph (delimited by empty lines). -fun void ParaDown=2413(,) -# Extend selection down one paragraph (delimited by empty lines). -fun void ParaDownExtend=2414(,) -# Move caret up one paragraph (delimited by empty lines). -fun void ParaUp=2415(,) -# Extend selection up one paragraph (delimited by empty lines). -fun void ParaUpExtend=2416(,) - -# Given a valid document position, return the previous position taking code -# page into account. Returns 0 if passed 0. -fun position PositionBefore=2417(position pos,) - -# Given a valid document position, return the next position taking code -# page into account. Maximum value returned is the last position in the document. -fun position PositionAfter=2418(position pos,) - -# Given a valid document position, return a position that differs in a number -# of characters. Returned value is always between 0 and last position in document. -fun position PositionRelative=2670(position pos, int relative) - -# Given a valid document position, return a position that differs in a number -# of UTF-16 code units. Returned value is always between 0 and last position in document. -# The result may point half way (2 bytes) inside a non-BMP character. -fun position PositionRelativeCodeUnits=2716(position pos, int relative) - -# Copy a range of text to the clipboard. Positions are clipped into the document. -fun void CopyRange=2419(position start, position end) - -# Copy argument text to the clipboard. -fun void CopyText=2420(int length, string text) - -enu SelectionMode=SC_SEL_ -val SC_SEL_STREAM=0 -val SC_SEL_RECTANGLE=1 -val SC_SEL_LINES=2 -val SC_SEL_THIN=3 - -# Set the selection mode to stream (SC_SEL_STREAM) or rectangular (SC_SEL_RECTANGLE/SC_SEL_THIN) or -# by lines (SC_SEL_LINES). -set void SetSelectionMode=2422(int selectionMode,) - -# Get the mode of the current selection. -get int GetSelectionMode=2423(,) - -# Get whether or not regular caret moves will extend or reduce the selection. -get bool GetMoveExtendsSelection=2706(,) - -# Retrieve the position of the start of the selection at the given line (INVALID_POSITION if no selection on this line). -fun position GetLineSelStartPosition=2424(int line,) - -# Retrieve the position of the end of the selection at the given line (INVALID_POSITION if no selection on this line). -fun position GetLineSelEndPosition=2425(int line,) - -## RectExtended rectangular selection moves -# Move caret down one line, extending rectangular selection to new caret position. -fun void LineDownRectExtend=2426(,) - -# Move caret up one line, extending rectangular selection to new caret position. -fun void LineUpRectExtend=2427(,) - -# Move caret left one character, extending rectangular selection to new caret position. -fun void CharLeftRectExtend=2428(,) - -# Move caret right one character, extending rectangular selection to new caret position. -fun void CharRightRectExtend=2429(,) - -# Move caret to first position on line, extending rectangular selection to new caret position. -fun void HomeRectExtend=2430(,) - -# Move caret to before first visible character on line. -# If already there move to first character on line. -# In either case, extend rectangular selection to new caret position. -fun void VCHomeRectExtend=2431(,) - -# Move caret to last position on line, extending rectangular selection to new caret position. -fun void LineEndRectExtend=2432(,) - -# Move caret one page up, extending rectangular selection to new caret position. -fun void PageUpRectExtend=2433(,) - -# Move caret one page down, extending rectangular selection to new caret position. -fun void PageDownRectExtend=2434(,) - - -# Move caret to top of page, or one page up if already at top of page. -fun void StutteredPageUp=2435(,) - -# Move caret to top of page, or one page up if already at top of page, extending selection to new caret position. -fun void StutteredPageUpExtend=2436(,) - -# Move caret to bottom of page, or one page down if already at bottom of page. -fun void StutteredPageDown=2437(,) - -# Move caret to bottom of page, or one page down if already at bottom of page, extending selection to new caret position. -fun void StutteredPageDownExtend=2438(,) - - -# Move caret left one word, position cursor at end of word. -fun void WordLeftEnd=2439(,) - -# Move caret left one word, position cursor at end of word, extending selection to new caret position. -fun void WordLeftEndExtend=2440(,) - -# Move caret right one word, position cursor at end of word. -fun void WordRightEnd=2441(,) - -# Move caret right one word, position cursor at end of word, extending selection to new caret position. -fun void WordRightEndExtend=2442(,) - -# Set the set of characters making up whitespace for when moving or selecting by word. -# Should be called after SetWordChars. -set void SetWhitespaceChars=2443(, string characters) - -# Get the set of characters making up whitespace for when moving or selecting by word. -get int GetWhitespaceChars=2647(, stringresult characters) - -# Set the set of characters making up punctuation characters -# Should be called after SetWordChars. -set void SetPunctuationChars=2648(, string characters) - -# Get the set of characters making up punctuation characters -get int GetPunctuationChars=2649(, stringresult characters) - -# Reset the set of characters for whitespace and word characters to the defaults. -fun void SetCharsDefault=2444(,) - -# Get currently selected item position in the auto-completion list -get int AutoCGetCurrent=2445(,) - -# Get currently selected item text in the auto-completion list -# Returns the length of the item text -# Result is NUL-terminated. -get int AutoCGetCurrentText=2610(, stringresult text) - -enu CaseInsensitiveBehaviour=SC_CASEINSENSITIVEBEHAVIOUR_ -val SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE=0 -val SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE=1 - -# Set auto-completion case insensitive behaviour to either prefer case-sensitive matches or have no preference. -set void AutoCSetCaseInsensitiveBehaviour=2634(int behaviour,) - -# Get auto-completion case insensitive behaviour. -get int AutoCGetCaseInsensitiveBehaviour=2635(,) - -enu MultiAutoComplete=SC_MULTIAUTOC_ -val SC_MULTIAUTOC_ONCE=0 -val SC_MULTIAUTOC_EACH=1 - -# Change the effect of autocompleting when there are multiple selections. -set void AutoCSetMulti=2636(int multi,) - -# Retrieve the effect of autocompleting when there are multiple selections. -get int AutoCGetMulti=2637(,) - -enu Ordering=SC_ORDER_ -val SC_ORDER_PRESORTED=0 -val SC_ORDER_PERFORMSORT=1 -val SC_ORDER_CUSTOM=2 - -# Set the way autocompletion lists are ordered. -set void AutoCSetOrder=2660(int order,) - -# Get the way autocompletion lists are ordered. -get int AutoCGetOrder=2661(,) - -# Enlarge the document to a particular size of text bytes. -fun void Allocate=2446(int bytes,) - -# Returns the target converted to UTF8. -# Return the length in bytes. -fun int TargetAsUTF8=2447(, stringresult s) - -# Set the length of the utf8 argument for calling EncodedFromUTF8. -# Set to -1 and the string will be measured to the first nul. -fun void SetLengthForEncode=2448(int bytes,) - -# Translates a UTF8 string into the document encoding. -# Return the length of the result in bytes. -# On error return 0. -fun int EncodedFromUTF8=2449(string utf8, stringresult encoded) - -# Find the position of a column on a line taking into account tabs and -# multi-byte characters. If beyond end of line, return line end position. -fun int FindColumn=2456(int line, int column) - -# Can the caret preferred x position only be changed by explicit movement commands? -get int GetCaretSticky=2457(,) - -# Stop the caret preferred x position changing when the user types. -set void SetCaretSticky=2458(int useCaretStickyBehaviour,) - -enu CaretSticky=SC_CARETSTICKY_ -val SC_CARETSTICKY_OFF=0 -val SC_CARETSTICKY_ON=1 -val SC_CARETSTICKY_WHITESPACE=2 - -# Switch between sticky and non-sticky: meant to be bound to a key. -fun void ToggleCaretSticky=2459(,) - -# Enable/Disable convert-on-paste for line endings -set void SetPasteConvertEndings=2467(bool convert,) - -# Get convert-on-paste setting -get bool GetPasteConvertEndings=2468(,) - -# Duplicate the selection. If selection empty duplicate the line containing the caret. -fun void SelectionDuplicate=2469(,) - -enu Alpha=SC_ALPHA_ -val SC_ALPHA_TRANSPARENT=0 -val SC_ALPHA_OPAQUE=255 -val SC_ALPHA_NOALPHA=256 - -# Set background alpha of the caret line. -set void SetCaretLineBackAlpha=2470(int alpha,) - -# Get the background alpha of the caret line. -get int GetCaretLineBackAlpha=2471(,) - -enu CaretStyle=CARETSTYLE_ -val CARETSTYLE_INVISIBLE=0 -val CARETSTYLE_LINE=1 -val CARETSTYLE_BLOCK=2 - -# Set the style of the caret to be drawn. -set void SetCaretStyle=2512(int caretStyle,) - -# Returns the current style of the caret. -get int GetCaretStyle=2513(,) - -# Set the indicator used for IndicatorFillRange and IndicatorClearRange -set void SetIndicatorCurrent=2500(int indicator,) - -# Get the current indicator -get int GetIndicatorCurrent=2501(,) - -# Set the value used for IndicatorFillRange -set void SetIndicatorValue=2502(int value,) - -# Get the current indicator value -get int GetIndicatorValue=2503(,) - -# Turn a indicator on over a range. -fun void IndicatorFillRange=2504(position start, int lengthFill) - -# Turn a indicator off over a range. -fun void IndicatorClearRange=2505(position start, int lengthClear) - -# Are any indicators present at pos? -fun int IndicatorAllOnFor=2506(position pos,) - -# What value does a particular indicator have at a position? -fun int IndicatorValueAt=2507(int indicator, position pos) - -# Where does a particular indicator start? -fun int IndicatorStart=2508(int indicator, position pos) - -# Where does a particular indicator end? -fun int IndicatorEnd=2509(int indicator, position pos) - -# Set number of entries in position cache -set void SetPositionCache=2514(int size,) - -# How many entries are allocated to the position cache? -get int GetPositionCache=2515(,) - -# Copy the selection, if selection empty copy the line with the caret -fun void CopyAllowLine=2519(,) - -# Compact the document buffer and return a read-only pointer to the -# characters in the document. -get int GetCharacterPointer=2520(,) - -# Return a read-only pointer to a range of characters in the document. -# May move the gap so that the range is contiguous, but will only move up -# to lengthRange bytes. -get int GetRangePointer=2643(position start, int lengthRange) - -# Return a position which, to avoid performance costs, should not be within -# the range of a call to GetRangePointer. -get position GetGapPosition=2644(,) - -# Set the alpha fill colour of the given indicator. -set void IndicSetAlpha=2523(int indicator, int alpha) - -# Get the alpha fill colour of the given indicator. -get int IndicGetAlpha=2524(int indicator,) - -# Set the alpha outline colour of the given indicator. -set void IndicSetOutlineAlpha=2558(int indicator, int alpha) - -# Get the alpha outline colour of the given indicator. -get int IndicGetOutlineAlpha=2559(int indicator,) - -# Set extra ascent for each line -set void SetExtraAscent=2525(int extraAscent,) - -# Get extra ascent for each line -get int GetExtraAscent=2526(,) - -# Set extra descent for each line -set void SetExtraDescent=2527(int extraDescent,) - -# Get extra descent for each line -get int GetExtraDescent=2528(,) - -# Which symbol was defined for markerNumber with MarkerDefine -fun int MarkerSymbolDefined=2529(int markerNumber,) - -# Set the text in the text margin for a line -set void MarginSetText=2530(int line, string text) - -# Get the text in the text margin for a line -get int MarginGetText=2531(int line, stringresult text) - -# Set the style number for the text margin for a line -set void MarginSetStyle=2532(int line, int style) - -# Get the style number for the text margin for a line -get int MarginGetStyle=2533(int line,) - -# Set the style in the text margin for a line -set void MarginSetStyles=2534(int line, string styles) - -# Get the styles in the text margin for a line -get int MarginGetStyles=2535(int line, stringresult styles) - -# Clear the margin text on all lines -fun void MarginTextClearAll=2536(,) - -# Get the start of the range of style numbers used for margin text -set void MarginSetStyleOffset=2537(int style,) - -# Get the start of the range of style numbers used for margin text -get int MarginGetStyleOffset=2538(,) - -enu MarginOption=SC_MARGINOPTION_ -val SC_MARGINOPTION_NONE=0 -val SC_MARGINOPTION_SUBLINESELECT=1 - -# Set the margin options. -set void SetMarginOptions=2539(int marginOptions,) - -# Get the margin options. -get int GetMarginOptions=2557(,) - -# Set the annotation text for a line -set void AnnotationSetText=2540(int line, string text) - -# Get the annotation text for a line -get int AnnotationGetText=2541(int line, stringresult text) - -# Set the style number for the annotations for a line -set void AnnotationSetStyle=2542(int line, int style) - -# Get the style number for the annotations for a line -get int AnnotationGetStyle=2543(int line,) - -# Set the annotation styles for a line -set void AnnotationSetStyles=2544(int line, string styles) - -# Get the annotation styles for a line -get int AnnotationGetStyles=2545(int line, stringresult styles) - -# Get the number of annotation lines for a line -get int AnnotationGetLines=2546(int line,) - -# Clear the annotations from all lines -fun void AnnotationClearAll=2547(,) - -enu AnnotationVisible=ANNOTATION_ -val ANNOTATION_HIDDEN=0 -val ANNOTATION_STANDARD=1 -val ANNOTATION_BOXED=2 -val ANNOTATION_INDENTED=3 - -# Set the visibility for the annotations for a view -set void AnnotationSetVisible=2548(int visible,) - -# Get the visibility for the annotations for a view -get int AnnotationGetVisible=2549(,) - -# Get the start of the range of style numbers used for annotations -set void AnnotationSetStyleOffset=2550(int style,) - -# Get the start of the range of style numbers used for annotations -get int AnnotationGetStyleOffset=2551(,) - -# Release all extended (>255) style numbers -fun void ReleaseAllExtendedStyles=2552(,) - -# Allocate some extended (>255) style numbers and return the start of the range -fun int AllocateExtendedStyles=2553(int numberStyles,) - -val UNDO_MAY_COALESCE=1 - -# Add a container action to the undo stack -fun void AddUndoAction=2560(int token, int flags) - -# Find the position of a character from a point within the window. -fun position CharPositionFromPoint=2561(int x, int y) - -# Find the position of a character from a point within the window. -# Return INVALID_POSITION if not close to text. -fun position CharPositionFromPointClose=2562(int x, int y) - -# Set whether switching to rectangular mode while selecting with the mouse is allowed. -set void SetMouseSelectionRectangularSwitch=2668(bool mouseSelectionRectangularSwitch,) - -# Whether switching to rectangular mode while selecting with the mouse is allowed. -get bool GetMouseSelectionRectangularSwitch=2669(,) - -# Set whether multiple selections can be made -set void SetMultipleSelection=2563(bool multipleSelection,) - -# Whether multiple selections can be made -get bool GetMultipleSelection=2564(,) - -# Set whether typing can be performed into multiple selections -set void SetAdditionalSelectionTyping=2565(bool additionalSelectionTyping,) - -# Whether typing can be performed into multiple selections -get bool GetAdditionalSelectionTyping=2566(,) - -# Set whether additional carets will blink -set void SetAdditionalCaretsBlink=2567(bool additionalCaretsBlink,) - -# Whether additional carets will blink -get bool GetAdditionalCaretsBlink=2568(,) - -# Set whether additional carets are visible -set void SetAdditionalCaretsVisible=2608(bool additionalCaretsVisible,) - -# Whether additional carets are visible -get bool GetAdditionalCaretsVisible=2609(,) - -# How many selections are there? -get int GetSelections=2570(,) - -# Is every selected range empty? -get bool GetSelectionEmpty=2650(,) - -# Clear selections to a single empty stream selection -fun void ClearSelections=2571(,) - -# Set a simple selection -fun void SetSelection=2572(position caret, position anchor) - -# Add a selection -fun void AddSelection=2573(position caret, position anchor) - -# Drop one selection -fun void DropSelectionN=2671(int selection,) - -# Set the main selection -set void SetMainSelection=2574(int selection,) - -# Which selection is the main selection -get int GetMainSelection=2575(,) - -# Set the caret position of the nth selection. -set void SetSelectionNCaret=2576(int selection, position caret) -# Return the caret position of the nth selection. -get position GetSelectionNCaret=2577(int selection,) -# Set the anchor position of the nth selection. -set void SetSelectionNAnchor=2578(int selection, position anchor) -# Return the anchor position of the nth selection. -get position GetSelectionNAnchor=2579(int selection,) -# Set the virtual space of the caret of the nth selection. -set void SetSelectionNCaretVirtualSpace=2580(int selection, int space) -# Return the virtual space of the caret of the nth selection. -get int GetSelectionNCaretVirtualSpace=2581(int selection,) -# Set the virtual space of the anchor of the nth selection. -set void SetSelectionNAnchorVirtualSpace=2582(int selection, int space) -# Return the virtual space of the anchor of the nth selection. -get int GetSelectionNAnchorVirtualSpace=2583(int selection,) - -# Sets the position that starts the selection - this becomes the anchor. -set void SetSelectionNStart=2584(int selection, position anchor) - -# Returns the position at the start of the selection. -get position GetSelectionNStart=2585(int selection,) - -# Sets the position that ends the selection - this becomes the currentPosition. -set void SetSelectionNEnd=2586(int selection, position caret) - -# Returns the position at the end of the selection. -get position GetSelectionNEnd=2587(int selection,) - -# Set the caret position of the rectangular selection. -set void SetRectangularSelectionCaret=2588(position caret,) -# Return the caret position of the rectangular selection. -get position GetRectangularSelectionCaret=2589(,) -# Set the anchor position of the rectangular selection. -set void SetRectangularSelectionAnchor=2590(position anchor,) -# Return the anchor position of the rectangular selection. -get position GetRectangularSelectionAnchor=2591(,) -# Set the virtual space of the caret of the rectangular selection. -set void SetRectangularSelectionCaretVirtualSpace=2592(int space,) -# Return the virtual space of the caret of the rectangular selection. -get int GetRectangularSelectionCaretVirtualSpace=2593(,) -# Set the virtual space of the anchor of the rectangular selection. -set void SetRectangularSelectionAnchorVirtualSpace=2594(int space,) -# Return the virtual space of the anchor of the rectangular selection. -get int GetRectangularSelectionAnchorVirtualSpace=2595(,) - -enu VirtualSpace=SCVS_ -val SCVS_NONE=0 -val SCVS_RECTANGULARSELECTION=1 -val SCVS_USERACCESSIBLE=2 -val SCVS_NOWRAPLINESTART=4 - -# Set options for virtual space behaviour. -set void SetVirtualSpaceOptions=2596(int virtualSpaceOptions,) -# Return options for virtual space behaviour. -get int GetVirtualSpaceOptions=2597(,) - -# On GTK+, allow selecting the modifier key to use for mouse-based -# rectangular selection. Often the window manager requires Alt+Mouse Drag -# for moving windows. -# Valid values are SCMOD_CTRL(default), SCMOD_ALT, or SCMOD_SUPER. - -set void SetRectangularSelectionModifier=2598(int modifier,) - -# Get the modifier key used for rectangular selection. -get int GetRectangularSelectionModifier=2599(,) - -# Set the foreground colour of additional selections. -# Must have previously called SetSelFore with non-zero first argument for this to have an effect. -set void SetAdditionalSelFore=2600(colour fore,) - -# Set the background colour of additional selections. -# Must have previously called SetSelBack with non-zero first argument for this to have an effect. -set void SetAdditionalSelBack=2601(colour back,) - -# Set the alpha of the selection. -set void SetAdditionalSelAlpha=2602(int alpha,) - -# Get the alpha of the selection. -get int GetAdditionalSelAlpha=2603(,) - -# Set the foreground colour of additional carets. -set void SetAdditionalCaretFore=2604(colour fore,) - -# Get the foreground colour of additional carets. -get colour GetAdditionalCaretFore=2605(,) - -# Set the main selection to the next selection. -fun void RotateSelection=2606(,) - -# Swap that caret and anchor of the main selection. -fun void SwapMainAnchorCaret=2607(,) - -# Add the next occurrence of the main selection to the set of selections as main. -# If the current selection is empty then select word around caret. -fun void MultipleSelectAddNext=2688(,) - -# Add each occurrence of the main selection in the target to the set of selections. -# If the current selection is empty then select word around caret. -fun void MultipleSelectAddEach=2689(,) - -# Indicate that the internal state of a lexer has changed over a range and therefore -# there may be a need to redraw. -fun int ChangeLexerState=2617(position start, position end) - -# Find the next line at or after lineStart that is a contracted fold header line. -# Return -1 when no more lines. -fun int ContractedFoldNext=2618(int lineStart,) - -# Centre current line in window. -fun void VerticalCentreCaret=2619(,) - -# Move the selected lines up one line, shifting the line above after the selection -fun void MoveSelectedLinesUp=2620(,) - -# Move the selected lines down one line, shifting the line below before the selection -fun void MoveSelectedLinesDown=2621(,) - -# Set the identifier reported as idFrom in notification messages. -set void SetIdentifier=2622(int identifier,) - -# Get the identifier. -get int GetIdentifier=2623(,) - -# Set the width for future RGBA image data. -set void RGBAImageSetWidth=2624(int width,) - -# Set the height for future RGBA image data. -set void RGBAImageSetHeight=2625(int height,) - -# Set the scale factor in percent for future RGBA image data. -set void RGBAImageSetScale=2651(int scalePercent,) - -# Define a marker from RGBA data. -# It has the width and height from RGBAImageSetWidth/Height -fun void MarkerDefineRGBAImage=2626(int markerNumber, string pixels) - -# Register an RGBA image for use in autocompletion lists. -# It has the width and height from RGBAImageSetWidth/Height -fun void RegisterRGBAImage=2627(int type, string pixels) - -# Scroll to start of document. -fun void ScrollToStart=2628(,) - -# Scroll to end of document. -fun void ScrollToEnd=2629(,) - -enu Technology=SC_TECHNOLOGY_ -val SC_TECHNOLOGY_DEFAULT=0 -val SC_TECHNOLOGY_DIRECTWRITE=1 -val SC_TECHNOLOGY_DIRECTWRITERETAIN=2 -val SC_TECHNOLOGY_DIRECTWRITEDC=3 - -# Set the technology used. -set void SetTechnology=2630(int technology,) - -# Get the tech. -get int GetTechnology=2631(,) - -# Create an ILoader*. -fun int CreateLoader=2632(int bytes, int documentOptions) - -# On OS X, show a find indicator. -fun void FindIndicatorShow=2640(position start, position end) - -# On OS X, flash a find indicator, then fade out. -fun void FindIndicatorFlash=2641(position start, position end) - -# On OS X, hide the find indicator. -fun void FindIndicatorHide=2642(,) - -# Move caret to before first visible character on display line. -# If already there move to first character on display line. -fun void VCHomeDisplay=2652(,) - -# Like VCHomeDisplay but extending selection to new caret position. -fun void VCHomeDisplayExtend=2653(,) - -# Is the caret line always visible? -get bool GetCaretLineVisibleAlways=2654(,) - -# Sets the caret line to always visible. -set void SetCaretLineVisibleAlways=2655(bool alwaysVisible,) - -# Line end types which may be used in addition to LF, CR, and CRLF -# SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator, -# U+2029 Paragraph Separator, and U+0085 Next Line -enu LineEndType=SC_LINE_END_TYPE_ -val SC_LINE_END_TYPE_DEFAULT=0 -val SC_LINE_END_TYPE_UNICODE=1 - -# Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding. -set void SetLineEndTypesAllowed=2656(int lineEndBitSet,) - -# Get the line end types currently allowed. -get int GetLineEndTypesAllowed=2657(,) - -# Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation. -get int GetLineEndTypesActive=2658(,) - -# Set the way a character is drawn. -set void SetRepresentation=2665(string encodedCharacter, string representation) - -# Set the way a character is drawn. -# Result is NUL-terminated. -get int GetRepresentation=2666(string encodedCharacter, stringresult representation) - -# Remove a character representation. -fun void ClearRepresentation=2667(string encodedCharacter,) - -# Start notifying the container of all key presses and commands. -fun void StartRecord=3001(,) - -# Stop notifying the container of all key presses and commands. -fun void StopRecord=3002(,) - -# Set the lexing language of the document. -set void SetLexer=4001(int lexer,) - -# Retrieve the lexing language of the document. -get int GetLexer=4002(,) - -# Colourise a segment of the document using the current lexing language. -fun void Colourise=4003(position start, position end) - -# Set up a value that may be used by a lexer for some optional feature. -set void SetProperty=4004(string key, string value) - -# Maximum value of keywordSet parameter of SetKeyWords. -val KEYWORDSET_MAX=8 - -# Set up the key words used by the lexer. -set void SetKeyWords=4005(int keyWordSet, string keyWords) - -# Set the lexing language of the document based on string name. -set void SetLexerLanguage=4006(, string language) - -# Load a lexer library (dll / so). -fun void LoadLexerLibrary=4007(, string path) - -# Retrieve a "property" value previously set with SetProperty. -# Result is NUL-terminated. -get int GetProperty=4008(string key, stringresult value) - -# Retrieve a "property" value previously set with SetProperty, -# with "$()" variable replacement on returned buffer. -# Result is NUL-terminated. -get int GetPropertyExpanded=4009(string key, stringresult value) - -# Retrieve a "property" value previously set with SetProperty, -# interpreted as an int AFTER any "$()" variable replacement. -get int GetPropertyInt=4010(string key, int defaultValue) - -# Retrieve the name of the lexer. -# Return the length of the text. -# Result is NUL-terminated. -get int GetLexerLanguage=4012(, stringresult language) - -# For private communication between an application and a known lexer. -fun int PrivateLexerCall=4013(int operation, int pointer) - -# Retrieve a '\n' separated list of properties understood by the current lexer. -# Result is NUL-terminated. -fun int PropertyNames=4014(, stringresult names) - -enu TypeProperty=SC_TYPE_ -val SC_TYPE_BOOLEAN=0 -val SC_TYPE_INTEGER=1 -val SC_TYPE_STRING=2 - -# Retrieve the type of a property. -fun int PropertyType=4015(string name,) - -# Describe a property. -# Result is NUL-terminated. -fun int DescribeProperty=4016(string name, stringresult description) - -# Retrieve a '\n' separated list of descriptions of the keyword sets understood by the current lexer. -# Result is NUL-terminated. -fun int DescribeKeyWordSets=4017(, stringresult descriptions) - -# Bit set of LineEndType enumertion for which line ends beyond the standard -# LF, CR, and CRLF are supported by the lexer. -get int GetLineEndTypesSupported=4018(,) - -# Allocate a set of sub styles for a particular base style, returning start of range -fun int AllocateSubStyles=4020(int styleBase, int numberStyles) - -# The starting style number for the sub styles associated with a base style -get int GetSubStylesStart=4021(int styleBase,) - -# The number of sub styles associated with a base style -get int GetSubStylesLength=4022(int styleBase,) - -# For a sub style, return the base style, else return the argument. -get int GetStyleFromSubStyle=4027(int subStyle,) - -# For a secondary style, return the primary style, else return the argument. -get int GetPrimaryStyleFromStyle=4028(int style,) - -# Free allocated sub styles -fun void FreeSubStyles=4023(,) - -# Set the identifiers that are shown in a particular style -set void SetIdentifiers=4024(int style, string identifiers) - -# Where styles are duplicated by a feature such as active/inactive code -# return the distance between the two types. -get int DistanceToSecondaryStyles=4025(,) - -# Get the set of base styles that can be extended with sub styles -# Result is NUL-terminated. -get int GetSubStyleBases=4026(, stringresult styles) - -# Retrieve the number of named styles for the lexer. -get int GetNamedStyles=4029(,) - -# Retrieve the name of a style. -# Result is NUL-terminated. -fun int NameOfStyle=4030(int style, stringresult name) - -# Retrieve a ' ' separated list of style tags like "literal quoted string". -# Result is NUL-terminated. -fun int TagsOfStyle=4031(int style, stringresult tags) - -# Retrieve a description of a style. -# Result is NUL-terminated. -fun int DescriptionOfStyle=4032(int style, stringresult description) - -# Notifications -# Type of modification and the action which caused the modification. -# These are defined as a bit mask to make it easy to specify which notifications are wanted. -# One bit is set from each of SC_MOD_* and SC_PERFORMED_*. -enu ModificationFlags=SC_MOD_ SC_PERFORMED_ SC_MULTISTEPUNDOREDO SC_LASTSTEPINUNDOREDO SC_MULTILINEUNDOREDO SC_STARTACTION SC_MODEVENTMASKALL -val SC_MOD_INSERTTEXT=0x1 -val SC_MOD_DELETETEXT=0x2 -val SC_MOD_CHANGESTYLE=0x4 -val SC_MOD_CHANGEFOLD=0x8 -val SC_PERFORMED_USER=0x10 -val SC_PERFORMED_UNDO=0x20 -val SC_PERFORMED_REDO=0x40 -val SC_MULTISTEPUNDOREDO=0x80 -val SC_LASTSTEPINUNDOREDO=0x100 -val SC_MOD_CHANGEMARKER=0x200 -val SC_MOD_BEFOREINSERT=0x400 -val SC_MOD_BEFOREDELETE=0x800 -val SC_MULTILINEUNDOREDO=0x1000 -val SC_STARTACTION=0x2000 -val SC_MOD_CHANGEINDICATOR=0x4000 -val SC_MOD_CHANGELINESTATE=0x8000 -val SC_MOD_CHANGEMARGIN=0x10000 -val SC_MOD_CHANGEANNOTATION=0x20000 -val SC_MOD_CONTAINER=0x40000 -val SC_MOD_LEXERSTATE=0x80000 -val SC_MOD_INSERTCHECK=0x100000 -val SC_MOD_CHANGETABSTOPS=0x200000 -val SC_MODEVENTMASKALL=0x3FFFFF - -enu Update=SC_UPDATE_ -val SC_UPDATE_CONTENT=0x1 -val SC_UPDATE_SELECTION=0x2 -val SC_UPDATE_V_SCROLL=0x4 -val SC_UPDATE_H_SCROLL=0x8 - -# For compatibility, these go through the COMMAND notification rather than NOTIFY -# and should have had exactly the same values as the EN_* constants. -# Unfortunately the SETFOCUS and KILLFOCUS are flipped over from EN_* -# As clients depend on these constants, this will not be changed. -val SCEN_CHANGE=768 -val SCEN_SETFOCUS=512 -val SCEN_KILLFOCUS=256 - -# Symbolic key codes and modifier flags. -# ASCII and other printable characters below 256. -# Extended keys above 300. - -enu Keys=SCK_ -val SCK_DOWN=300 -val SCK_UP=301 -val SCK_LEFT=302 -val SCK_RIGHT=303 -val SCK_HOME=304 -val SCK_END=305 -val SCK_PRIOR=306 -val SCK_NEXT=307 -val SCK_DELETE=308 -val SCK_INSERT=309 -val SCK_ESCAPE=7 -val SCK_BACK=8 -val SCK_TAB=9 -val SCK_RETURN=13 -val SCK_ADD=310 -val SCK_SUBTRACT=311 -val SCK_DIVIDE=312 -val SCK_WIN=313 -val SCK_RWIN=314 -val SCK_MENU=315 - -enu KeyMod=SCMOD_ -val SCMOD_NORM=0 -val SCMOD_SHIFT=1 -val SCMOD_CTRL=2 -val SCMOD_ALT=4 -val SCMOD_SUPER=8 -val SCMOD_META=16 - -enu CompletionMethods=SC_AC_ -val SC_AC_FILLUP=1 -val SC_AC_DOUBLECLICK=2 -val SC_AC_TAB=3 -val SC_AC_NEWLINE=4 -val SC_AC_COMMAND=5 - -################################################ -# For SciLexer.h -enu Lexer=SCLEX_ -val SCLEX_CONTAINER=0 -val SCLEX_NULL=1 -val SCLEX_PYTHON=2 -val SCLEX_CPP=3 -val SCLEX_HTML=4 -val SCLEX_XML=5 -val SCLEX_PERL=6 -val SCLEX_SQL=7 -val SCLEX_VB=8 -val SCLEX_PROPERTIES=9 -val SCLEX_ERRORLIST=10 -val SCLEX_MAKEFILE=11 -val SCLEX_BATCH=12 -val SCLEX_XCODE=13 -val SCLEX_LATEX=14 -val SCLEX_LUA=15 -val SCLEX_DIFF=16 -val SCLEX_CONF=17 -val SCLEX_PASCAL=18 -val SCLEX_AVE=19 -val SCLEX_ADA=20 -val SCLEX_LISP=21 -val SCLEX_RUBY=22 -val SCLEX_EIFFEL=23 -val SCLEX_EIFFELKW=24 -val SCLEX_TCL=25 -val SCLEX_NNCRONTAB=26 -val SCLEX_BULLANT=27 -val SCLEX_VBSCRIPT=28 -val SCLEX_BAAN=31 -val SCLEX_MATLAB=32 -val SCLEX_SCRIPTOL=33 -val SCLEX_ASM=34 -val SCLEX_CPPNOCASE=35 -val SCLEX_FORTRAN=36 -val SCLEX_F77=37 -val SCLEX_CSS=38 -val SCLEX_POV=39 -val SCLEX_LOUT=40 -val SCLEX_ESCRIPT=41 -val SCLEX_PS=42 -val SCLEX_NSIS=43 -val SCLEX_MMIXAL=44 -val SCLEX_CLW=45 -val SCLEX_CLWNOCASE=46 -val SCLEX_LOT=47 -val SCLEX_YAML=48 -val SCLEX_TEX=49 -val SCLEX_METAPOST=50 -val SCLEX_POWERBASIC=51 -val SCLEX_FORTH=52 -val SCLEX_ERLANG=53 -val SCLEX_OCTAVE=54 -val SCLEX_MSSQL=55 -val SCLEX_VERILOG=56 -val SCLEX_KIX=57 -val SCLEX_GUI4CLI=58 -val SCLEX_SPECMAN=59 -val SCLEX_AU3=60 -val SCLEX_APDL=61 -val SCLEX_BASH=62 -val SCLEX_ASN1=63 -val SCLEX_VHDL=64 -val SCLEX_CAML=65 -val SCLEX_BLITZBASIC=66 -val SCLEX_PUREBASIC=67 -val SCLEX_HASKELL=68 -val SCLEX_PHPSCRIPT=69 -val SCLEX_TADS3=70 -val SCLEX_REBOL=71 -val SCLEX_SMALLTALK=72 -val SCLEX_FLAGSHIP=73 -val SCLEX_CSOUND=74 -val SCLEX_FREEBASIC=75 -val SCLEX_INNOSETUP=76 -val SCLEX_OPAL=77 -val SCLEX_SPICE=78 -val SCLEX_D=79 -val SCLEX_CMAKE=80 -val SCLEX_GAP=81 -val SCLEX_PLM=82 -val SCLEX_PROGRESS=83 -val SCLEX_ABAQUS=84 -val SCLEX_ASYMPTOTE=85 -val SCLEX_R=86 -val SCLEX_MAGIK=87 -val SCLEX_POWERSHELL=88 -val SCLEX_MYSQL=89 -val SCLEX_PO=90 -val SCLEX_TAL=91 -val SCLEX_COBOL=92 -val SCLEX_TACL=93 -val SCLEX_SORCUS=94 -val SCLEX_POWERPRO=95 -val SCLEX_NIMROD=96 -val SCLEX_SML=97 -val SCLEX_MARKDOWN=98 -val SCLEX_TXT2TAGS=99 -val SCLEX_A68K=100 -val SCLEX_MODULA=101 -val SCLEX_COFFEESCRIPT=102 -val SCLEX_TCMD=103 -val SCLEX_AVS=104 -val SCLEX_ECL=105 -val SCLEX_OSCRIPT=106 -val SCLEX_VISUALPROLOG=107 -val SCLEX_LITERATEHASKELL=108 -val SCLEX_STTXT=109 -val SCLEX_KVIRC=110 -val SCLEX_RUST=111 -val SCLEX_DMAP=112 -val SCLEX_AS=113 -val SCLEX_DMIS=114 -val SCLEX_REGISTRY=115 -val SCLEX_BIBTEX=116 -val SCLEX_SREC=117 -val SCLEX_IHEX=118 -val SCLEX_TEHEX=119 -val SCLEX_JSON=120 -val SCLEX_EDIFACT=121 -val SCLEX_INDENT=122 -val SCLEX_MAXIMA=123 -val SCLEX_STATA=124 -val SCLEX_SAS=125 -val SCLEX_LPEG=999 - -# When a lexer specifies its language as SCLEX_AUTOMATIC it receives a -# value assigned in sequence from SCLEX_AUTOMATIC+1. -val SCLEX_AUTOMATIC=1000 -# Lexical states for SCLEX_PYTHON -lex Python=SCLEX_PYTHON SCE_P_ -lex Nimrod=SCLEX_NIMROD SCE_P_ -val SCE_P_DEFAULT=0 -val SCE_P_COMMENTLINE=1 -val SCE_P_NUMBER=2 -val SCE_P_STRING=3 -val SCE_P_CHARACTER=4 -val SCE_P_WORD=5 -val SCE_P_TRIPLE=6 -val SCE_P_TRIPLEDOUBLE=7 -val SCE_P_CLASSNAME=8 -val SCE_P_DEFNAME=9 -val SCE_P_OPERATOR=10 -val SCE_P_IDENTIFIER=11 -val SCE_P_COMMENTBLOCK=12 -val SCE_P_STRINGEOL=13 -val SCE_P_WORD2=14 -val SCE_P_DECORATOR=15 -val SCE_P_FSTRING=16 -val SCE_P_FCHARACTER=17 -val SCE_P_FTRIPLE=18 -val SCE_P_FTRIPLEDOUBLE=19 -# Lexical states for SCLEX_CPP -# Lexical states for SCLEX_BULLANT -# Lexical states for SCLEX_COBOL -# Lexical states for SCLEX_TACL -# Lexical states for SCLEX_TAL -lex Cpp=SCLEX_CPP SCE_C_ -lex BullAnt=SCLEX_BULLANT SCE_C_ -lex COBOL=SCLEX_COBOL SCE_C_ -lex TACL=SCLEX_TACL SCE_C_ -lex TAL=SCLEX_TAL SCE_C_ -val SCE_C_DEFAULT=0 -val SCE_C_COMMENT=1 -val SCE_C_COMMENTLINE=2 -val SCE_C_COMMENTDOC=3 -val SCE_C_NUMBER=4 -val SCE_C_WORD=5 -val SCE_C_STRING=6 -val SCE_C_CHARACTER=7 -val SCE_C_UUID=8 -val SCE_C_PREPROCESSOR=9 -val SCE_C_OPERATOR=10 -val SCE_C_IDENTIFIER=11 -val SCE_C_STRINGEOL=12 -val SCE_C_VERBATIM=13 -val SCE_C_REGEX=14 -val SCE_C_COMMENTLINEDOC=15 -val SCE_C_WORD2=16 -val SCE_C_COMMENTDOCKEYWORD=17 -val SCE_C_COMMENTDOCKEYWORDERROR=18 -val SCE_C_GLOBALCLASS=19 -val SCE_C_STRINGRAW=20 -val SCE_C_TRIPLEVERBATIM=21 -val SCE_C_HASHQUOTEDSTRING=22 -val SCE_C_PREPROCESSORCOMMENT=23 -val SCE_C_PREPROCESSORCOMMENTDOC=24 -val SCE_C_USERLITERAL=25 -val SCE_C_TASKMARKER=26 -val SCE_C_ESCAPESEQUENCE=27 -# Lexical states for SCLEX_D -lex D=SCLEX_D SCE_D_ -val SCE_D_DEFAULT=0 -val SCE_D_COMMENT=1 -val SCE_D_COMMENTLINE=2 -val SCE_D_COMMENTDOC=3 -val SCE_D_COMMENTNESTED=4 -val SCE_D_NUMBER=5 -val SCE_D_WORD=6 -val SCE_D_WORD2=7 -val SCE_D_WORD3=8 -val SCE_D_TYPEDEF=9 -val SCE_D_STRING=10 -val SCE_D_STRINGEOL=11 -val SCE_D_CHARACTER=12 -val SCE_D_OPERATOR=13 -val SCE_D_IDENTIFIER=14 -val SCE_D_COMMENTLINEDOC=15 -val SCE_D_COMMENTDOCKEYWORD=16 -val SCE_D_COMMENTDOCKEYWORDERROR=17 -val SCE_D_STRINGB=18 -val SCE_D_STRINGR=19 -val SCE_D_WORD5=20 -val SCE_D_WORD6=21 -val SCE_D_WORD7=22 -# Lexical states for SCLEX_TCL -lex TCL=SCLEX_TCL SCE_TCL_ -val SCE_TCL_DEFAULT=0 -val SCE_TCL_COMMENT=1 -val SCE_TCL_COMMENTLINE=2 -val SCE_TCL_NUMBER=3 -val SCE_TCL_WORD_IN_QUOTE=4 -val SCE_TCL_IN_QUOTE=5 -val SCE_TCL_OPERATOR=6 -val SCE_TCL_IDENTIFIER=7 -val SCE_TCL_SUBSTITUTION=8 -val SCE_TCL_SUB_BRACE=9 -val SCE_TCL_MODIFIER=10 -val SCE_TCL_EXPAND=11 -val SCE_TCL_WORD=12 -val SCE_TCL_WORD2=13 -val SCE_TCL_WORD3=14 -val SCE_TCL_WORD4=15 -val SCE_TCL_WORD5=16 -val SCE_TCL_WORD6=17 -val SCE_TCL_WORD7=18 -val SCE_TCL_WORD8=19 -val SCE_TCL_COMMENT_BOX=20 -val SCE_TCL_BLOCK_COMMENT=21 -# Lexical states for SCLEX_HTML, SCLEX_XML -lex HTML=SCLEX_HTML SCE_H_ SCE_HJ_ SCE_HJA_ SCE_HB_ SCE_HBA_ SCE_HP_ SCE_HPHP_ SCE_HPA_ -lex XML=SCLEX_XML SCE_H_ SCE_HJ_ SCE_HJA_ SCE_HB_ SCE_HBA_ SCE_HP_ SCE_HPHP_ SCE_HPA_ -val SCE_H_DEFAULT=0 -val SCE_H_TAG=1 -val SCE_H_TAGUNKNOWN=2 -val SCE_H_ATTRIBUTE=3 -val SCE_H_ATTRIBUTEUNKNOWN=4 -val SCE_H_NUMBER=5 -val SCE_H_DOUBLESTRING=6 -val SCE_H_SINGLESTRING=7 -val SCE_H_OTHER=8 -val SCE_H_COMMENT=9 -val SCE_H_ENTITY=10 -# XML and ASP -val SCE_H_TAGEND=11 -val SCE_H_XMLSTART=12 -val SCE_H_XMLEND=13 -val SCE_H_SCRIPT=14 -val SCE_H_ASP=15 -val SCE_H_ASPAT=16 -val SCE_H_CDATA=17 -val SCE_H_QUESTION=18 -# More HTML -val SCE_H_VALUE=19 -# X-Code -val SCE_H_XCCOMMENT=20 -# SGML -val SCE_H_SGML_DEFAULT=21 -val SCE_H_SGML_COMMAND=22 -val SCE_H_SGML_1ST_PARAM=23 -val SCE_H_SGML_DOUBLESTRING=24 -val SCE_H_SGML_SIMPLESTRING=25 -val SCE_H_SGML_ERROR=26 -val SCE_H_SGML_SPECIAL=27 -val SCE_H_SGML_ENTITY=28 -val SCE_H_SGML_COMMENT=29 -val SCE_H_SGML_1ST_PARAM_COMMENT=30 -val SCE_H_SGML_BLOCK_DEFAULT=31 -# Embedded Javascript -val SCE_HJ_START=40 -val SCE_HJ_DEFAULT=41 -val SCE_HJ_COMMENT=42 -val SCE_HJ_COMMENTLINE=43 -val SCE_HJ_COMMENTDOC=44 -val SCE_HJ_NUMBER=45 -val SCE_HJ_WORD=46 -val SCE_HJ_KEYWORD=47 -val SCE_HJ_DOUBLESTRING=48 -val SCE_HJ_SINGLESTRING=49 -val SCE_HJ_SYMBOLS=50 -val SCE_HJ_STRINGEOL=51 -val SCE_HJ_REGEX=52 -# ASP Javascript -val SCE_HJA_START=55 -val SCE_HJA_DEFAULT=56 -val SCE_HJA_COMMENT=57 -val SCE_HJA_COMMENTLINE=58 -val SCE_HJA_COMMENTDOC=59 -val SCE_HJA_NUMBER=60 -val SCE_HJA_WORD=61 -val SCE_HJA_KEYWORD=62 -val SCE_HJA_DOUBLESTRING=63 -val SCE_HJA_SINGLESTRING=64 -val SCE_HJA_SYMBOLS=65 -val SCE_HJA_STRINGEOL=66 -val SCE_HJA_REGEX=67 -# Embedded VBScript -val SCE_HB_START=70 -val SCE_HB_DEFAULT=71 -val SCE_HB_COMMENTLINE=72 -val SCE_HB_NUMBER=73 -val SCE_HB_WORD=74 -val SCE_HB_STRING=75 -val SCE_HB_IDENTIFIER=76 -val SCE_HB_STRINGEOL=77 -# ASP VBScript -val SCE_HBA_START=80 -val SCE_HBA_DEFAULT=81 -val SCE_HBA_COMMENTLINE=82 -val SCE_HBA_NUMBER=83 -val SCE_HBA_WORD=84 -val SCE_HBA_STRING=85 -val SCE_HBA_IDENTIFIER=86 -val SCE_HBA_STRINGEOL=87 -# Embedded Python -val SCE_HP_START=90 -val SCE_HP_DEFAULT=91 -val SCE_HP_COMMENTLINE=92 -val SCE_HP_NUMBER=93 -val SCE_HP_STRING=94 -val SCE_HP_CHARACTER=95 -val SCE_HP_WORD=96 -val SCE_HP_TRIPLE=97 -val SCE_HP_TRIPLEDOUBLE=98 -val SCE_HP_CLASSNAME=99 -val SCE_HP_DEFNAME=100 -val SCE_HP_OPERATOR=101 -val SCE_HP_IDENTIFIER=102 -# PHP -val SCE_HPHP_COMPLEX_VARIABLE=104 -# ASP Python -val SCE_HPA_START=105 -val SCE_HPA_DEFAULT=106 -val SCE_HPA_COMMENTLINE=107 -val SCE_HPA_NUMBER=108 -val SCE_HPA_STRING=109 -val SCE_HPA_CHARACTER=110 -val SCE_HPA_WORD=111 -val SCE_HPA_TRIPLE=112 -val SCE_HPA_TRIPLEDOUBLE=113 -val SCE_HPA_CLASSNAME=114 -val SCE_HPA_DEFNAME=115 -val SCE_HPA_OPERATOR=116 -val SCE_HPA_IDENTIFIER=117 -# PHP -val SCE_HPHP_DEFAULT=118 -val SCE_HPHP_HSTRING=119 -val SCE_HPHP_SIMPLESTRING=120 -val SCE_HPHP_WORD=121 -val SCE_HPHP_NUMBER=122 -val SCE_HPHP_VARIABLE=123 -val SCE_HPHP_COMMENT=124 -val SCE_HPHP_COMMENTLINE=125 -val SCE_HPHP_HSTRING_VARIABLE=126 -val SCE_HPHP_OPERATOR=127 -# Lexical states for SCLEX_PERL -lex Perl=SCLEX_PERL SCE_PL_ -val SCE_PL_DEFAULT=0 -val SCE_PL_ERROR=1 -val SCE_PL_COMMENTLINE=2 -val SCE_PL_POD=3 -val SCE_PL_NUMBER=4 -val SCE_PL_WORD=5 -val SCE_PL_STRING=6 -val SCE_PL_CHARACTER=7 -val SCE_PL_PUNCTUATION=8 -val SCE_PL_PREPROCESSOR=9 -val SCE_PL_OPERATOR=10 -val SCE_PL_IDENTIFIER=11 -val SCE_PL_SCALAR=12 -val SCE_PL_ARRAY=13 -val SCE_PL_HASH=14 -val SCE_PL_SYMBOLTABLE=15 -val SCE_PL_VARIABLE_INDEXER=16 -val SCE_PL_REGEX=17 -val SCE_PL_REGSUBST=18 -val SCE_PL_LONGQUOTE=19 -val SCE_PL_BACKTICKS=20 -val SCE_PL_DATASECTION=21 -val SCE_PL_HERE_DELIM=22 -val SCE_PL_HERE_Q=23 -val SCE_PL_HERE_QQ=24 -val SCE_PL_HERE_QX=25 -val SCE_PL_STRING_Q=26 -val SCE_PL_STRING_QQ=27 -val SCE_PL_STRING_QX=28 -val SCE_PL_STRING_QR=29 -val SCE_PL_STRING_QW=30 -val SCE_PL_POD_VERB=31 -val SCE_PL_SUB_PROTOTYPE=40 -val SCE_PL_FORMAT_IDENT=41 -val SCE_PL_FORMAT=42 -val SCE_PL_STRING_VAR=43 -val SCE_PL_XLAT=44 -val SCE_PL_REGEX_VAR=54 -val SCE_PL_REGSUBST_VAR=55 -val SCE_PL_BACKTICKS_VAR=57 -val SCE_PL_HERE_QQ_VAR=61 -val SCE_PL_HERE_QX_VAR=62 -val SCE_PL_STRING_QQ_VAR=64 -val SCE_PL_STRING_QX_VAR=65 -val SCE_PL_STRING_QR_VAR=66 -# Lexical states for SCLEX_RUBY -lex Ruby=SCLEX_RUBY SCE_RB_ -val SCE_RB_DEFAULT=0 -val SCE_RB_ERROR=1 -val SCE_RB_COMMENTLINE=2 -val SCE_RB_POD=3 -val SCE_RB_NUMBER=4 -val SCE_RB_WORD=5 -val SCE_RB_STRING=6 -val SCE_RB_CHARACTER=7 -val SCE_RB_CLASSNAME=8 -val SCE_RB_DEFNAME=9 -val SCE_RB_OPERATOR=10 -val SCE_RB_IDENTIFIER=11 -val SCE_RB_REGEX=12 -val SCE_RB_GLOBAL=13 -val SCE_RB_SYMBOL=14 -val SCE_RB_MODULE_NAME=15 -val SCE_RB_INSTANCE_VAR=16 -val SCE_RB_CLASS_VAR=17 -val SCE_RB_BACKTICKS=18 -val SCE_RB_DATASECTION=19 -val SCE_RB_HERE_DELIM=20 -val SCE_RB_HERE_Q=21 -val SCE_RB_HERE_QQ=22 -val SCE_RB_HERE_QX=23 -val SCE_RB_STRING_Q=24 -val SCE_RB_STRING_QQ=25 -val SCE_RB_STRING_QX=26 -val SCE_RB_STRING_QR=27 -val SCE_RB_STRING_QW=28 -val SCE_RB_WORD_DEMOTED=29 -val SCE_RB_STDIN=30 -val SCE_RB_STDOUT=31 -val SCE_RB_STDERR=40 -val SCE_RB_UPPER_BOUND=41 -# Lexical states for SCLEX_VB, SCLEX_VBSCRIPT, SCLEX_POWERBASIC, SCLEX_BLITZBASIC, SCLEX_PUREBASIC, SCLEX_FREEBASIC -lex VB=SCLEX_VB SCE_B_ -lex VBScript=SCLEX_VBSCRIPT SCE_B_ -lex PowerBasic=SCLEX_POWERBASIC SCE_B_ -lex BlitzBasic=SCLEX_BLITZBASIC SCE_B_ -lex PureBasic=SCLEX_PUREBASIC SCE_B_ -lex FreeBasic=SCLEX_FREEBASIC SCE_B_ -val SCE_B_DEFAULT=0 -val SCE_B_COMMENT=1 -val SCE_B_NUMBER=2 -val SCE_B_KEYWORD=3 -val SCE_B_STRING=4 -val SCE_B_PREPROCESSOR=5 -val SCE_B_OPERATOR=6 -val SCE_B_IDENTIFIER=7 -val SCE_B_DATE=8 -val SCE_B_STRINGEOL=9 -val SCE_B_KEYWORD2=10 -val SCE_B_KEYWORD3=11 -val SCE_B_KEYWORD4=12 -val SCE_B_CONSTANT=13 -val SCE_B_ASM=14 -val SCE_B_LABEL=15 -val SCE_B_ERROR=16 -val SCE_B_HEXNUMBER=17 -val SCE_B_BINNUMBER=18 -val SCE_B_COMMENTBLOCK=19 -val SCE_B_DOCLINE=20 -val SCE_B_DOCBLOCK=21 -val SCE_B_DOCKEYWORD=22 -# Lexical states for SCLEX_PROPERTIES -lex Properties=SCLEX_PROPERTIES SCE_PROPS_ -val SCE_PROPS_DEFAULT=0 -val SCE_PROPS_COMMENT=1 -val SCE_PROPS_SECTION=2 -val SCE_PROPS_ASSIGNMENT=3 -val SCE_PROPS_DEFVAL=4 -val SCE_PROPS_KEY=5 -# Lexical states for SCLEX_LATEX -lex LaTeX=SCLEX_LATEX SCE_L_ -val SCE_L_DEFAULT=0 -val SCE_L_COMMAND=1 -val SCE_L_TAG=2 -val SCE_L_MATH=3 -val SCE_L_COMMENT=4 -val SCE_L_TAG2=5 -val SCE_L_MATH2=6 -val SCE_L_COMMENT2=7 -val SCE_L_VERBATIM=8 -val SCE_L_SHORTCMD=9 -val SCE_L_SPECIAL=10 -val SCE_L_CMDOPT=11 -val SCE_L_ERROR=12 -# Lexical states for SCLEX_LUA -lex Lua=SCLEX_LUA SCE_LUA_ -val SCE_LUA_DEFAULT=0 -val SCE_LUA_COMMENT=1 -val SCE_LUA_COMMENTLINE=2 -val SCE_LUA_COMMENTDOC=3 -val SCE_LUA_NUMBER=4 -val SCE_LUA_WORD=5 -val SCE_LUA_STRING=6 -val SCE_LUA_CHARACTER=7 -val SCE_LUA_LITERALSTRING=8 -val SCE_LUA_PREPROCESSOR=9 -val SCE_LUA_OPERATOR=10 -val SCE_LUA_IDENTIFIER=11 -val SCE_LUA_STRINGEOL=12 -val SCE_LUA_WORD2=13 -val SCE_LUA_WORD3=14 -val SCE_LUA_WORD4=15 -val SCE_LUA_WORD5=16 -val SCE_LUA_WORD6=17 -val SCE_LUA_WORD7=18 -val SCE_LUA_WORD8=19 -val SCE_LUA_LABEL=20 -# Lexical states for SCLEX_ERRORLIST -lex ErrorList=SCLEX_ERRORLIST SCE_ERR_ -val SCE_ERR_DEFAULT=0 -val SCE_ERR_PYTHON=1 -val SCE_ERR_GCC=2 -val SCE_ERR_MS=3 -val SCE_ERR_CMD=4 -val SCE_ERR_BORLAND=5 -val SCE_ERR_PERL=6 -val SCE_ERR_NET=7 -val SCE_ERR_LUA=8 -val SCE_ERR_CTAG=9 -val SCE_ERR_DIFF_CHANGED=10 -val SCE_ERR_DIFF_ADDITION=11 -val SCE_ERR_DIFF_DELETION=12 -val SCE_ERR_DIFF_MESSAGE=13 -val SCE_ERR_PHP=14 -val SCE_ERR_ELF=15 -val SCE_ERR_IFC=16 -val SCE_ERR_IFORT=17 -val SCE_ERR_ABSF=18 -val SCE_ERR_TIDY=19 -val SCE_ERR_JAVA_STACK=20 -val SCE_ERR_VALUE=21 -val SCE_ERR_GCC_INCLUDED_FROM=22 -val SCE_ERR_ESCSEQ=23 -val SCE_ERR_ESCSEQ_UNKNOWN=24 -val SCE_ERR_ES_BLACK=40 -val SCE_ERR_ES_RED=41 -val SCE_ERR_ES_GREEN=42 -val SCE_ERR_ES_BROWN=43 -val SCE_ERR_ES_BLUE=44 -val SCE_ERR_ES_MAGENTA=45 -val SCE_ERR_ES_CYAN=46 -val SCE_ERR_ES_GRAY=47 -val SCE_ERR_ES_DARK_GRAY=48 -val SCE_ERR_ES_BRIGHT_RED=49 -val SCE_ERR_ES_BRIGHT_GREEN=50 -val SCE_ERR_ES_YELLOW=51 -val SCE_ERR_ES_BRIGHT_BLUE=52 -val SCE_ERR_ES_BRIGHT_MAGENTA=53 -val SCE_ERR_ES_BRIGHT_CYAN=54 -val SCE_ERR_ES_WHITE=55 -# Lexical states for SCLEX_BATCH -lex Batch=SCLEX_BATCH SCE_BAT_ -val SCE_BAT_DEFAULT=0 -val SCE_BAT_COMMENT=1 -val SCE_BAT_WORD=2 -val SCE_BAT_LABEL=3 -val SCE_BAT_HIDE=4 -val SCE_BAT_COMMAND=5 -val SCE_BAT_IDENTIFIER=6 -val SCE_BAT_OPERATOR=7 -# Lexical states for SCLEX_TCMD -lex TCMD=SCLEX_TCMD SCE_TCMD_ -val SCE_TCMD_DEFAULT=0 -val SCE_TCMD_COMMENT=1 -val SCE_TCMD_WORD=2 -val SCE_TCMD_LABEL=3 -val SCE_TCMD_HIDE=4 -val SCE_TCMD_COMMAND=5 -val SCE_TCMD_IDENTIFIER=6 -val SCE_TCMD_OPERATOR=7 -val SCE_TCMD_ENVIRONMENT=8 -val SCE_TCMD_EXPANSION=9 -val SCE_TCMD_CLABEL=10 -# Lexical states for SCLEX_MAKEFILE -lex MakeFile=SCLEX_MAKEFILE SCE_MAKE_ -val SCE_MAKE_DEFAULT=0 -val SCE_MAKE_COMMENT=1 -val SCE_MAKE_PREPROCESSOR=2 -val SCE_MAKE_IDENTIFIER=3 -val SCE_MAKE_OPERATOR=4 -val SCE_MAKE_TARGET=5 -val SCE_MAKE_IDEOL=9 -# Lexical states for SCLEX_DIFF -lex Diff=SCLEX_DIFF SCE_DIFF_ -val SCE_DIFF_DEFAULT=0 -val SCE_DIFF_COMMENT=1 -val SCE_DIFF_COMMAND=2 -val SCE_DIFF_HEADER=3 -val SCE_DIFF_POSITION=4 -val SCE_DIFF_DELETED=5 -val SCE_DIFF_ADDED=6 -val SCE_DIFF_CHANGED=7 -val SCE_DIFF_PATCH_ADD=8 -val SCE_DIFF_PATCH_DELETE=9 -val SCE_DIFF_REMOVED_PATCH_ADD=10 -val SCE_DIFF_REMOVED_PATCH_DELETE=11 -# Lexical states for SCLEX_CONF (Apache Configuration Files Lexer) -lex Conf=SCLEX_CONF SCE_CONF_ -val SCE_CONF_DEFAULT=0 -val SCE_CONF_COMMENT=1 -val SCE_CONF_NUMBER=2 -val SCE_CONF_IDENTIFIER=3 -val SCE_CONF_EXTENSION=4 -val SCE_CONF_PARAMETER=5 -val SCE_CONF_STRING=6 -val SCE_CONF_OPERATOR=7 -val SCE_CONF_IP=8 -val SCE_CONF_DIRECTIVE=9 -# Lexical states for SCLEX_AVE, Avenue -lex Avenue=SCLEX_AVE SCE_AVE_ -val SCE_AVE_DEFAULT=0 -val SCE_AVE_COMMENT=1 -val SCE_AVE_NUMBER=2 -val SCE_AVE_WORD=3 -val SCE_AVE_STRING=6 -val SCE_AVE_ENUM=7 -val SCE_AVE_STRINGEOL=8 -val SCE_AVE_IDENTIFIER=9 -val SCE_AVE_OPERATOR=10 -val SCE_AVE_WORD1=11 -val SCE_AVE_WORD2=12 -val SCE_AVE_WORD3=13 -val SCE_AVE_WORD4=14 -val SCE_AVE_WORD5=15 -val SCE_AVE_WORD6=16 -# Lexical states for SCLEX_ADA -lex Ada=SCLEX_ADA SCE_ADA_ -val SCE_ADA_DEFAULT=0 -val SCE_ADA_WORD=1 -val SCE_ADA_IDENTIFIER=2 -val SCE_ADA_NUMBER=3 -val SCE_ADA_DELIMITER=4 -val SCE_ADA_CHARACTER=5 -val SCE_ADA_CHARACTEREOL=6 -val SCE_ADA_STRING=7 -val SCE_ADA_STRINGEOL=8 -val SCE_ADA_LABEL=9 -val SCE_ADA_COMMENTLINE=10 -val SCE_ADA_ILLEGAL=11 -# Lexical states for SCLEX_BAAN -lex Baan=SCLEX_BAAN SCE_BAAN_ -val SCE_BAAN_DEFAULT=0 -val SCE_BAAN_COMMENT=1 -val SCE_BAAN_COMMENTDOC=2 -val SCE_BAAN_NUMBER=3 -val SCE_BAAN_WORD=4 -val SCE_BAAN_STRING=5 -val SCE_BAAN_PREPROCESSOR=6 -val SCE_BAAN_OPERATOR=7 -val SCE_BAAN_IDENTIFIER=8 -val SCE_BAAN_STRINGEOL=9 -val SCE_BAAN_WORD2=10 -val SCE_BAAN_WORD3=11 -val SCE_BAAN_WORD4=12 -val SCE_BAAN_WORD5=13 -val SCE_BAAN_WORD6=14 -val SCE_BAAN_WORD7=15 -val SCE_BAAN_WORD8=16 -val SCE_BAAN_WORD9=17 -val SCE_BAAN_TABLEDEF=18 -val SCE_BAAN_TABLESQL=19 -val SCE_BAAN_FUNCTION=20 -val SCE_BAAN_DOMDEF=21 -val SCE_BAAN_FUNCDEF=22 -val SCE_BAAN_OBJECTDEF=23 -val SCE_BAAN_DEFINEDEF=24 -# Lexical states for SCLEX_LISP -lex Lisp=SCLEX_LISP SCE_LISP_ -val SCE_LISP_DEFAULT=0 -val SCE_LISP_COMMENT=1 -val SCE_LISP_NUMBER=2 -val SCE_LISP_KEYWORD=3 -val SCE_LISP_KEYWORD_KW=4 -val SCE_LISP_SYMBOL=5 -val SCE_LISP_STRING=6 -val SCE_LISP_STRINGEOL=8 -val SCE_LISP_IDENTIFIER=9 -val SCE_LISP_OPERATOR=10 -val SCE_LISP_SPECIAL=11 -val SCE_LISP_MULTI_COMMENT=12 -# Lexical states for SCLEX_EIFFEL and SCLEX_EIFFELKW -lex Eiffel=SCLEX_EIFFEL SCE_EIFFEL_ -lex EiffelKW=SCLEX_EIFFELKW SCE_EIFFEL_ -val SCE_EIFFEL_DEFAULT=0 -val SCE_EIFFEL_COMMENTLINE=1 -val SCE_EIFFEL_NUMBER=2 -val SCE_EIFFEL_WORD=3 -val SCE_EIFFEL_STRING=4 -val SCE_EIFFEL_CHARACTER=5 -val SCE_EIFFEL_OPERATOR=6 -val SCE_EIFFEL_IDENTIFIER=7 -val SCE_EIFFEL_STRINGEOL=8 -# Lexical states for SCLEX_NNCRONTAB (nnCron crontab Lexer) -lex NNCronTab=SCLEX_NNCRONTAB SCE_NNCRONTAB_ -val SCE_NNCRONTAB_DEFAULT=0 -val SCE_NNCRONTAB_COMMENT=1 -val SCE_NNCRONTAB_TASK=2 -val SCE_NNCRONTAB_SECTION=3 -val SCE_NNCRONTAB_KEYWORD=4 -val SCE_NNCRONTAB_MODIFIER=5 -val SCE_NNCRONTAB_ASTERISK=6 -val SCE_NNCRONTAB_NUMBER=7 -val SCE_NNCRONTAB_STRING=8 -val SCE_NNCRONTAB_ENVIRONMENT=9 -val SCE_NNCRONTAB_IDENTIFIER=10 -# Lexical states for SCLEX_FORTH (Forth Lexer) -lex Forth=SCLEX_FORTH SCE_FORTH_ -val SCE_FORTH_DEFAULT=0 -val SCE_FORTH_COMMENT=1 -val SCE_FORTH_COMMENT_ML=2 -val SCE_FORTH_IDENTIFIER=3 -val SCE_FORTH_CONTROL=4 -val SCE_FORTH_KEYWORD=5 -val SCE_FORTH_DEFWORD=6 -val SCE_FORTH_PREWORD1=7 -val SCE_FORTH_PREWORD2=8 -val SCE_FORTH_NUMBER=9 -val SCE_FORTH_STRING=10 -val SCE_FORTH_LOCALE=11 -# Lexical states for SCLEX_MATLAB -lex MatLab=SCLEX_MATLAB SCE_MATLAB_ -val SCE_MATLAB_DEFAULT=0 -val SCE_MATLAB_COMMENT=1 -val SCE_MATLAB_COMMAND=2 -val SCE_MATLAB_NUMBER=3 -val SCE_MATLAB_KEYWORD=4 -# single quoted string -val SCE_MATLAB_STRING=5 -val SCE_MATLAB_OPERATOR=6 -val SCE_MATLAB_IDENTIFIER=7 -val SCE_MATLAB_DOUBLEQUOTESTRING=8 -# Lexical states for SCLEX_MAXIMA -lex Maxima=SCLEX_MAXIMA SCE_MAXIMA_ -val SCE_MAXIMA_OPERATOR=0 -val SCE_MAXIMA_COMMANDENDING=1 -val SCE_MAXIMA_COMMENT=2 -val SCE_MAXIMA_NUMBER=3 -val SCE_MAXIMA_STRING=4 -val SCE_MAXIMA_COMMAND=5 -val SCE_MAXIMA_VARIABLE=6 -val SCE_MAXIMA_UNKNOWN=7 -# Lexical states for SCLEX_SCRIPTOL -lex Sol=SCLEX_SCRIPTOL SCE_SCRIPTOL_ -val SCE_SCRIPTOL_DEFAULT=0 -val SCE_SCRIPTOL_WHITE=1 -val SCE_SCRIPTOL_COMMENTLINE=2 -val SCE_SCRIPTOL_PERSISTENT=3 -val SCE_SCRIPTOL_CSTYLE=4 -val SCE_SCRIPTOL_COMMENTBLOCK=5 -val SCE_SCRIPTOL_NUMBER=6 -val SCE_SCRIPTOL_STRING=7 -val SCE_SCRIPTOL_CHARACTER=8 -val SCE_SCRIPTOL_STRINGEOL=9 -val SCE_SCRIPTOL_KEYWORD=10 -val SCE_SCRIPTOL_OPERATOR=11 -val SCE_SCRIPTOL_IDENTIFIER=12 -val SCE_SCRIPTOL_TRIPLE=13 -val SCE_SCRIPTOL_CLASSNAME=14 -val SCE_SCRIPTOL_PREPROCESSOR=15 -# Lexical states for SCLEX_ASM, SCLEX_AS -lex Asm=SCLEX_ASM SCE_ASM_ -lex As=SCLEX_AS SCE_ASM_ -val SCE_ASM_DEFAULT=0 -val SCE_ASM_COMMENT=1 -val SCE_ASM_NUMBER=2 -val SCE_ASM_STRING=3 -val SCE_ASM_OPERATOR=4 -val SCE_ASM_IDENTIFIER=5 -val SCE_ASM_CPUINSTRUCTION=6 -val SCE_ASM_MATHINSTRUCTION=7 -val SCE_ASM_REGISTER=8 -val SCE_ASM_DIRECTIVE=9 -val SCE_ASM_DIRECTIVEOPERAND=10 -val SCE_ASM_COMMENTBLOCK=11 -val SCE_ASM_CHARACTER=12 -val SCE_ASM_STRINGEOL=13 -val SCE_ASM_EXTINSTRUCTION=14 -val SCE_ASM_COMMENTDIRECTIVE=15 -# Lexical states for SCLEX_FORTRAN -lex Fortran=SCLEX_FORTRAN SCE_F_ -lex F77=SCLEX_F77 SCE_F_ -val SCE_F_DEFAULT=0 -val SCE_F_COMMENT=1 -val SCE_F_NUMBER=2 -val SCE_F_STRING1=3 -val SCE_F_STRING2=4 -val SCE_F_STRINGEOL=5 -val SCE_F_OPERATOR=6 -val SCE_F_IDENTIFIER=7 -val SCE_F_WORD=8 -val SCE_F_WORD2=9 -val SCE_F_WORD3=10 -val SCE_F_PREPROCESSOR=11 -val SCE_F_OPERATOR2=12 -val SCE_F_LABEL=13 -val SCE_F_CONTINUATION=14 -# Lexical states for SCLEX_CSS -lex CSS=SCLEX_CSS SCE_CSS_ -val SCE_CSS_DEFAULT=0 -val SCE_CSS_TAG=1 -val SCE_CSS_CLASS=2 -val SCE_CSS_PSEUDOCLASS=3 -val SCE_CSS_UNKNOWN_PSEUDOCLASS=4 -val SCE_CSS_OPERATOR=5 -val SCE_CSS_IDENTIFIER=6 -val SCE_CSS_UNKNOWN_IDENTIFIER=7 -val SCE_CSS_VALUE=8 -val SCE_CSS_COMMENT=9 -val SCE_CSS_ID=10 -val SCE_CSS_IMPORTANT=11 -val SCE_CSS_DIRECTIVE=12 -val SCE_CSS_DOUBLESTRING=13 -val SCE_CSS_SINGLESTRING=14 -val SCE_CSS_IDENTIFIER2=15 -val SCE_CSS_ATTRIBUTE=16 -val SCE_CSS_IDENTIFIER3=17 -val SCE_CSS_PSEUDOELEMENT=18 -val SCE_CSS_EXTENDED_IDENTIFIER=19 -val SCE_CSS_EXTENDED_PSEUDOCLASS=20 -val SCE_CSS_EXTENDED_PSEUDOELEMENT=21 -val SCE_CSS_MEDIA=22 -val SCE_CSS_VARIABLE=23 -# Lexical states for SCLEX_POV -lex POV=SCLEX_POV SCE_POV_ -val SCE_POV_DEFAULT=0 -val SCE_POV_COMMENT=1 -val SCE_POV_COMMENTLINE=2 -val SCE_POV_NUMBER=3 -val SCE_POV_OPERATOR=4 -val SCE_POV_IDENTIFIER=5 -val SCE_POV_STRING=6 -val SCE_POV_STRINGEOL=7 -val SCE_POV_DIRECTIVE=8 -val SCE_POV_BADDIRECTIVE=9 -val SCE_POV_WORD2=10 -val SCE_POV_WORD3=11 -val SCE_POV_WORD4=12 -val SCE_POV_WORD5=13 -val SCE_POV_WORD6=14 -val SCE_POV_WORD7=15 -val SCE_POV_WORD8=16 -# Lexical states for SCLEX_LOUT -lex LOUT=SCLEX_LOUT SCE_LOUT_ -val SCE_LOUT_DEFAULT=0 -val SCE_LOUT_COMMENT=1 -val SCE_LOUT_NUMBER=2 -val SCE_LOUT_WORD=3 -val SCE_LOUT_WORD2=4 -val SCE_LOUT_WORD3=5 -val SCE_LOUT_WORD4=6 -val SCE_LOUT_STRING=7 -val SCE_LOUT_OPERATOR=8 -val SCE_LOUT_IDENTIFIER=9 -val SCE_LOUT_STRINGEOL=10 -# Lexical states for SCLEX_ESCRIPT -lex ESCRIPT=SCLEX_ESCRIPT SCE_ESCRIPT_ -val SCE_ESCRIPT_DEFAULT=0 -val SCE_ESCRIPT_COMMENT=1 -val SCE_ESCRIPT_COMMENTLINE=2 -val SCE_ESCRIPT_COMMENTDOC=3 -val SCE_ESCRIPT_NUMBER=4 -val SCE_ESCRIPT_WORD=5 -val SCE_ESCRIPT_STRING=6 -val SCE_ESCRIPT_OPERATOR=7 -val SCE_ESCRIPT_IDENTIFIER=8 -val SCE_ESCRIPT_BRACE=9 -val SCE_ESCRIPT_WORD2=10 -val SCE_ESCRIPT_WORD3=11 -# Lexical states for SCLEX_PS -lex PS=SCLEX_PS SCE_PS_ -val SCE_PS_DEFAULT=0 -val SCE_PS_COMMENT=1 -val SCE_PS_DSC_COMMENT=2 -val SCE_PS_DSC_VALUE=3 -val SCE_PS_NUMBER=4 -val SCE_PS_NAME=5 -val SCE_PS_KEYWORD=6 -val SCE_PS_LITERAL=7 -val SCE_PS_IMMEVAL=8 -val SCE_PS_PAREN_ARRAY=9 -val SCE_PS_PAREN_DICT=10 -val SCE_PS_PAREN_PROC=11 -val SCE_PS_TEXT=12 -val SCE_PS_HEXSTRING=13 -val SCE_PS_BASE85STRING=14 -val SCE_PS_BADSTRINGCHAR=15 -# Lexical states for SCLEX_NSIS -lex NSIS=SCLEX_NSIS SCE_NSIS_ -val SCE_NSIS_DEFAULT=0 -val SCE_NSIS_COMMENT=1 -val SCE_NSIS_STRINGDQ=2 -val SCE_NSIS_STRINGLQ=3 -val SCE_NSIS_STRINGRQ=4 -val SCE_NSIS_FUNCTION=5 -val SCE_NSIS_VARIABLE=6 -val SCE_NSIS_LABEL=7 -val SCE_NSIS_USERDEFINED=8 -val SCE_NSIS_SECTIONDEF=9 -val SCE_NSIS_SUBSECTIONDEF=10 -val SCE_NSIS_IFDEFINEDEF=11 -val SCE_NSIS_MACRODEF=12 -val SCE_NSIS_STRINGVAR=13 -val SCE_NSIS_NUMBER=14 -val SCE_NSIS_SECTIONGROUP=15 -val SCE_NSIS_PAGEEX=16 -val SCE_NSIS_FUNCTIONDEF=17 -val SCE_NSIS_COMMENTBOX=18 -# Lexical states for SCLEX_MMIXAL -lex MMIXAL=SCLEX_MMIXAL SCE_MMIXAL_ -val SCE_MMIXAL_LEADWS=0 -val SCE_MMIXAL_COMMENT=1 -val SCE_MMIXAL_LABEL=2 -val SCE_MMIXAL_OPCODE=3 -val SCE_MMIXAL_OPCODE_PRE=4 -val SCE_MMIXAL_OPCODE_VALID=5 -val SCE_MMIXAL_OPCODE_UNKNOWN=6 -val SCE_MMIXAL_OPCODE_POST=7 -val SCE_MMIXAL_OPERANDS=8 -val SCE_MMIXAL_NUMBER=9 -val SCE_MMIXAL_REF=10 -val SCE_MMIXAL_CHAR=11 -val SCE_MMIXAL_STRING=12 -val SCE_MMIXAL_REGISTER=13 -val SCE_MMIXAL_HEX=14 -val SCE_MMIXAL_OPERATOR=15 -val SCE_MMIXAL_SYMBOL=16 -val SCE_MMIXAL_INCLUDE=17 -# Lexical states for SCLEX_CLW -lex Clarion=SCLEX_CLW SCE_CLW_ -val SCE_CLW_DEFAULT=0 -val SCE_CLW_LABEL=1 -val SCE_CLW_COMMENT=2 -val SCE_CLW_STRING=3 -val SCE_CLW_USER_IDENTIFIER=4 -val SCE_CLW_INTEGER_CONSTANT=5 -val SCE_CLW_REAL_CONSTANT=6 -val SCE_CLW_PICTURE_STRING=7 -val SCE_CLW_KEYWORD=8 -val SCE_CLW_COMPILER_DIRECTIVE=9 -val SCE_CLW_RUNTIME_EXPRESSIONS=10 -val SCE_CLW_BUILTIN_PROCEDURES_FUNCTION=11 -val SCE_CLW_STRUCTURE_DATA_TYPE=12 -val SCE_CLW_ATTRIBUTE=13 -val SCE_CLW_STANDARD_EQUATE=14 -val SCE_CLW_ERROR=15 -val SCE_CLW_DEPRECATED=16 -# Lexical states for SCLEX_LOT -lex LOT=SCLEX_LOT SCE_LOT_ -val SCE_LOT_DEFAULT=0 -val SCE_LOT_HEADER=1 -val SCE_LOT_BREAK=2 -val SCE_LOT_SET=3 -val SCE_LOT_PASS=4 -val SCE_LOT_FAIL=5 -val SCE_LOT_ABORT=6 -# Lexical states for SCLEX_YAML -lex YAML=SCLEX_YAML SCE_YAML_ -val SCE_YAML_DEFAULT=0 -val SCE_YAML_COMMENT=1 -val SCE_YAML_IDENTIFIER=2 -val SCE_YAML_KEYWORD=3 -val SCE_YAML_NUMBER=4 -val SCE_YAML_REFERENCE=5 -val SCE_YAML_DOCUMENT=6 -val SCE_YAML_TEXT=7 -val SCE_YAML_ERROR=8 -val SCE_YAML_OPERATOR=9 -# Lexical states for SCLEX_TEX -lex TeX=SCLEX_TEX SCE_TEX_ -val SCE_TEX_DEFAULT=0 -val SCE_TEX_SPECIAL=1 -val SCE_TEX_GROUP=2 -val SCE_TEX_SYMBOL=3 -val SCE_TEX_COMMAND=4 -val SCE_TEX_TEXT=5 -lex Metapost=SCLEX_METAPOST SCE_METAPOST_ -val SCE_METAPOST_DEFAULT=0 -val SCE_METAPOST_SPECIAL=1 -val SCE_METAPOST_GROUP=2 -val SCE_METAPOST_SYMBOL=3 -val SCE_METAPOST_COMMAND=4 -val SCE_METAPOST_TEXT=5 -val SCE_METAPOST_EXTRA=6 -# Lexical states for SCLEX_ERLANG -lex Erlang=SCLEX_ERLANG SCE_ERLANG_ -val SCE_ERLANG_DEFAULT=0 -val SCE_ERLANG_COMMENT=1 -val SCE_ERLANG_VARIABLE=2 -val SCE_ERLANG_NUMBER=3 -val SCE_ERLANG_KEYWORD=4 -val SCE_ERLANG_STRING=5 -val SCE_ERLANG_OPERATOR=6 -val SCE_ERLANG_ATOM=7 -val SCE_ERLANG_FUNCTION_NAME=8 -val SCE_ERLANG_CHARACTER=9 -val SCE_ERLANG_MACRO=10 -val SCE_ERLANG_RECORD=11 -val SCE_ERLANG_PREPROC=12 -val SCE_ERLANG_NODE_NAME=13 -val SCE_ERLANG_COMMENT_FUNCTION=14 -val SCE_ERLANG_COMMENT_MODULE=15 -val SCE_ERLANG_COMMENT_DOC=16 -val SCE_ERLANG_COMMENT_DOC_MACRO=17 -val SCE_ERLANG_ATOM_QUOTED=18 -val SCE_ERLANG_MACRO_QUOTED=19 -val SCE_ERLANG_RECORD_QUOTED=20 -val SCE_ERLANG_NODE_NAME_QUOTED=21 -val SCE_ERLANG_BIFS=22 -val SCE_ERLANG_MODULES=23 -val SCE_ERLANG_MODULES_ATT=24 -val SCE_ERLANG_UNKNOWN=31 -# Lexical states for SCLEX_OCTAVE are identical to MatLab -lex Octave=SCLEX_OCTAVE SCE_MATLAB_ -# Lexical states for SCLEX_MSSQL -lex MSSQL=SCLEX_MSSQL SCE_MSSQL_ -val SCE_MSSQL_DEFAULT=0 -val SCE_MSSQL_COMMENT=1 -val SCE_MSSQL_LINE_COMMENT=2 -val SCE_MSSQL_NUMBER=3 -val SCE_MSSQL_STRING=4 -val SCE_MSSQL_OPERATOR=5 -val SCE_MSSQL_IDENTIFIER=6 -val SCE_MSSQL_VARIABLE=7 -val SCE_MSSQL_COLUMN_NAME=8 -val SCE_MSSQL_STATEMENT=9 -val SCE_MSSQL_DATATYPE=10 -val SCE_MSSQL_SYSTABLE=11 -val SCE_MSSQL_GLOBAL_VARIABLE=12 -val SCE_MSSQL_FUNCTION=13 -val SCE_MSSQL_STORED_PROCEDURE=14 -val SCE_MSSQL_DEFAULT_PREF_DATATYPE=15 -val SCE_MSSQL_COLUMN_NAME_2=16 -# Lexical states for SCLEX_VERILOG -lex Verilog=SCLEX_VERILOG SCE_V_ -val SCE_V_DEFAULT=0 -val SCE_V_COMMENT=1 -val SCE_V_COMMENTLINE=2 -val SCE_V_COMMENTLINEBANG=3 -val SCE_V_NUMBER=4 -val SCE_V_WORD=5 -val SCE_V_STRING=6 -val SCE_V_WORD2=7 -val SCE_V_WORD3=8 -val SCE_V_PREPROCESSOR=9 -val SCE_V_OPERATOR=10 -val SCE_V_IDENTIFIER=11 -val SCE_V_STRINGEOL=12 -val SCE_V_USER=19 -val SCE_V_COMMENT_WORD=20 -val SCE_V_INPUT=21 -val SCE_V_OUTPUT=22 -val SCE_V_INOUT=23 -val SCE_V_PORT_CONNECT=24 -# Lexical states for SCLEX_KIX -lex Kix=SCLEX_KIX SCE_KIX_ -val SCE_KIX_DEFAULT=0 -val SCE_KIX_COMMENT=1 -val SCE_KIX_STRING1=2 -val SCE_KIX_STRING2=3 -val SCE_KIX_NUMBER=4 -val SCE_KIX_VAR=5 -val SCE_KIX_MACRO=6 -val SCE_KIX_KEYWORD=7 -val SCE_KIX_FUNCTIONS=8 -val SCE_KIX_OPERATOR=9 -val SCE_KIX_COMMENTSTREAM=10 -val SCE_KIX_IDENTIFIER=31 -# Lexical states for SCLEX_GUI4CLI -lex Gui4Cli=SCLEX_GUI4CLI SCE_GC_ -val SCE_GC_DEFAULT=0 -val SCE_GC_COMMENTLINE=1 -val SCE_GC_COMMENTBLOCK=2 -val SCE_GC_GLOBAL=3 -val SCE_GC_EVENT=4 -val SCE_GC_ATTRIBUTE=5 -val SCE_GC_CONTROL=6 -val SCE_GC_COMMAND=7 -val SCE_GC_STRING=8 -val SCE_GC_OPERATOR=9 -# Lexical states for SCLEX_SPECMAN -lex Specman=SCLEX_SPECMAN SCE_SN_ -val SCE_SN_DEFAULT=0 -val SCE_SN_CODE=1 -val SCE_SN_COMMENTLINE=2 -val SCE_SN_COMMENTLINEBANG=3 -val SCE_SN_NUMBER=4 -val SCE_SN_WORD=5 -val SCE_SN_STRING=6 -val SCE_SN_WORD2=7 -val SCE_SN_WORD3=8 -val SCE_SN_PREPROCESSOR=9 -val SCE_SN_OPERATOR=10 -val SCE_SN_IDENTIFIER=11 -val SCE_SN_STRINGEOL=12 -val SCE_SN_REGEXTAG=13 -val SCE_SN_SIGNAL=14 -val SCE_SN_USER=19 -# Lexical states for SCLEX_AU3 -lex Au3=SCLEX_AU3 SCE_AU3_ -val SCE_AU3_DEFAULT=0 -val SCE_AU3_COMMENT=1 -val SCE_AU3_COMMENTBLOCK=2 -val SCE_AU3_NUMBER=3 -val SCE_AU3_FUNCTION=4 -val SCE_AU3_KEYWORD=5 -val SCE_AU3_MACRO=6 -val SCE_AU3_STRING=7 -val SCE_AU3_OPERATOR=8 -val SCE_AU3_VARIABLE=9 -val SCE_AU3_SENT=10 -val SCE_AU3_PREPROCESSOR=11 -val SCE_AU3_SPECIAL=12 -val SCE_AU3_EXPAND=13 -val SCE_AU3_COMOBJ=14 -val SCE_AU3_UDF=15 -# Lexical states for SCLEX_APDL -lex APDL=SCLEX_APDL SCE_APDL_ -val SCE_APDL_DEFAULT=0 -val SCE_APDL_COMMENT=1 -val SCE_APDL_COMMENTBLOCK=2 -val SCE_APDL_NUMBER=3 -val SCE_APDL_STRING=4 -val SCE_APDL_OPERATOR=5 -val SCE_APDL_WORD=6 -val SCE_APDL_PROCESSOR=7 -val SCE_APDL_COMMAND=8 -val SCE_APDL_SLASHCOMMAND=9 -val SCE_APDL_STARCOMMAND=10 -val SCE_APDL_ARGUMENT=11 -val SCE_APDL_FUNCTION=12 -# Lexical states for SCLEX_BASH -lex Bash=SCLEX_BASH SCE_SH_ -val SCE_SH_DEFAULT=0 -val SCE_SH_ERROR=1 -val SCE_SH_COMMENTLINE=2 -val SCE_SH_NUMBER=3 -val SCE_SH_WORD=4 -val SCE_SH_STRING=5 -val SCE_SH_CHARACTER=6 -val SCE_SH_OPERATOR=7 -val SCE_SH_IDENTIFIER=8 -val SCE_SH_SCALAR=9 -val SCE_SH_PARAM=10 -val SCE_SH_BACKTICKS=11 -val SCE_SH_HERE_DELIM=12 -val SCE_SH_HERE_Q=13 -# Lexical states for SCLEX_ASN1 -lex Asn1=SCLEX_ASN1 SCE_ASN1_ -val SCE_ASN1_DEFAULT=0 -val SCE_ASN1_COMMENT=1 -val SCE_ASN1_IDENTIFIER=2 -val SCE_ASN1_STRING=3 -val SCE_ASN1_OID=4 -val SCE_ASN1_SCALAR=5 -val SCE_ASN1_KEYWORD=6 -val SCE_ASN1_ATTRIBUTE=7 -val SCE_ASN1_DESCRIPTOR=8 -val SCE_ASN1_TYPE=9 -val SCE_ASN1_OPERATOR=10 -# Lexical states for SCLEX_VHDL -lex VHDL=SCLEX_VHDL SCE_VHDL_ -val SCE_VHDL_DEFAULT=0 -val SCE_VHDL_COMMENT=1 -val SCE_VHDL_COMMENTLINEBANG=2 -val SCE_VHDL_NUMBER=3 -val SCE_VHDL_STRING=4 -val SCE_VHDL_OPERATOR=5 -val SCE_VHDL_IDENTIFIER=6 -val SCE_VHDL_STRINGEOL=7 -val SCE_VHDL_KEYWORD=8 -val SCE_VHDL_STDOPERATOR=9 -val SCE_VHDL_ATTRIBUTE=10 -val SCE_VHDL_STDFUNCTION=11 -val SCE_VHDL_STDPACKAGE=12 -val SCE_VHDL_STDTYPE=13 -val SCE_VHDL_USERWORD=14 -val SCE_VHDL_BLOCK_COMMENT=15 -# Lexical states for SCLEX_CAML -lex Caml=SCLEX_CAML SCE_CAML_ -val SCE_CAML_DEFAULT=0 -val SCE_CAML_IDENTIFIER=1 -val SCE_CAML_TAGNAME=2 -val SCE_CAML_KEYWORD=3 -val SCE_CAML_KEYWORD2=4 -val SCE_CAML_KEYWORD3=5 -val SCE_CAML_LINENUM=6 -val SCE_CAML_OPERATOR=7 -val SCE_CAML_NUMBER=8 -val SCE_CAML_CHAR=9 -val SCE_CAML_WHITE=10 -val SCE_CAML_STRING=11 -val SCE_CAML_COMMENT=12 -val SCE_CAML_COMMENT1=13 -val SCE_CAML_COMMENT2=14 -val SCE_CAML_COMMENT3=15 -# Lexical states for SCLEX_HASKELL -lex Haskell=SCLEX_HASKELL SCE_HA_ -val SCE_HA_DEFAULT=0 -val SCE_HA_IDENTIFIER=1 -val SCE_HA_KEYWORD=2 -val SCE_HA_NUMBER=3 -val SCE_HA_STRING=4 -val SCE_HA_CHARACTER=5 -val SCE_HA_CLASS=6 -val SCE_HA_MODULE=7 -val SCE_HA_CAPITAL=8 -val SCE_HA_DATA=9 -val SCE_HA_IMPORT=10 -val SCE_HA_OPERATOR=11 -val SCE_HA_INSTANCE=12 -val SCE_HA_COMMENTLINE=13 -val SCE_HA_COMMENTBLOCK=14 -val SCE_HA_COMMENTBLOCK2=15 -val SCE_HA_COMMENTBLOCK3=16 -val SCE_HA_PRAGMA=17 -val SCE_HA_PREPROCESSOR=18 -val SCE_HA_STRINGEOL=19 -val SCE_HA_RESERVED_OPERATOR=20 -val SCE_HA_LITERATE_COMMENT=21 -val SCE_HA_LITERATE_CODEDELIM=22 -# Lexical states of SCLEX_TADS3 -lex TADS3=SCLEX_TADS3 SCE_T3_ -val SCE_T3_DEFAULT=0 -val SCE_T3_X_DEFAULT=1 -val SCE_T3_PREPROCESSOR=2 -val SCE_T3_BLOCK_COMMENT=3 -val SCE_T3_LINE_COMMENT=4 -val SCE_T3_OPERATOR=5 -val SCE_T3_KEYWORD=6 -val SCE_T3_NUMBER=7 -val SCE_T3_IDENTIFIER=8 -val SCE_T3_S_STRING=9 -val SCE_T3_D_STRING=10 -val SCE_T3_X_STRING=11 -val SCE_T3_LIB_DIRECTIVE=12 -val SCE_T3_MSG_PARAM=13 -val SCE_T3_HTML_TAG=14 -val SCE_T3_HTML_DEFAULT=15 -val SCE_T3_HTML_STRING=16 -val SCE_T3_USER1=17 -val SCE_T3_USER2=18 -val SCE_T3_USER3=19 -val SCE_T3_BRACE=20 -# Lexical states for SCLEX_REBOL -lex Rebol=SCLEX_REBOL SCE_REBOL_ -val SCE_REBOL_DEFAULT=0 -val SCE_REBOL_COMMENTLINE=1 -val SCE_REBOL_COMMENTBLOCK=2 -val SCE_REBOL_PREFACE=3 -val SCE_REBOL_OPERATOR=4 -val SCE_REBOL_CHARACTER=5 -val SCE_REBOL_QUOTEDSTRING=6 -val SCE_REBOL_BRACEDSTRING=7 -val SCE_REBOL_NUMBER=8 -val SCE_REBOL_PAIR=9 -val SCE_REBOL_TUPLE=10 -val SCE_REBOL_BINARY=11 -val SCE_REBOL_MONEY=12 -val SCE_REBOL_ISSUE=13 -val SCE_REBOL_TAG=14 -val SCE_REBOL_FILE=15 -val SCE_REBOL_EMAIL=16 -val SCE_REBOL_URL=17 -val SCE_REBOL_DATE=18 -val SCE_REBOL_TIME=19 -val SCE_REBOL_IDENTIFIER=20 -val SCE_REBOL_WORD=21 -val SCE_REBOL_WORD2=22 -val SCE_REBOL_WORD3=23 -val SCE_REBOL_WORD4=24 -val SCE_REBOL_WORD5=25 -val SCE_REBOL_WORD6=26 -val SCE_REBOL_WORD7=27 -val SCE_REBOL_WORD8=28 -# Lexical states for SCLEX_SQL -lex SQL=SCLEX_SQL SCE_SQL_ -val SCE_SQL_DEFAULT=0 -val SCE_SQL_COMMENT=1 -val SCE_SQL_COMMENTLINE=2 -val SCE_SQL_COMMENTDOC=3 -val SCE_SQL_NUMBER=4 -val SCE_SQL_WORD=5 -val SCE_SQL_STRING=6 -val SCE_SQL_CHARACTER=7 -val SCE_SQL_SQLPLUS=8 -val SCE_SQL_SQLPLUS_PROMPT=9 -val SCE_SQL_OPERATOR=10 -val SCE_SQL_IDENTIFIER=11 -val SCE_SQL_SQLPLUS_COMMENT=13 -val SCE_SQL_COMMENTLINEDOC=15 -val SCE_SQL_WORD2=16 -val SCE_SQL_COMMENTDOCKEYWORD=17 -val SCE_SQL_COMMENTDOCKEYWORDERROR=18 -val SCE_SQL_USER1=19 -val SCE_SQL_USER2=20 -val SCE_SQL_USER3=21 -val SCE_SQL_USER4=22 -val SCE_SQL_QUOTEDIDENTIFIER=23 -val SCE_SQL_QOPERATOR=24 -# Lexical states for SCLEX_SMALLTALK -lex Smalltalk=SCLEX_SMALLTALK SCE_ST_ -val SCE_ST_DEFAULT=0 -val SCE_ST_STRING=1 -val SCE_ST_NUMBER=2 -val SCE_ST_COMMENT=3 -val SCE_ST_SYMBOL=4 -val SCE_ST_BINARY=5 -val SCE_ST_BOOL=6 -val SCE_ST_SELF=7 -val SCE_ST_SUPER=8 -val SCE_ST_NIL=9 -val SCE_ST_GLOBAL=10 -val SCE_ST_RETURN=11 -val SCE_ST_SPECIAL=12 -val SCE_ST_KWSEND=13 -val SCE_ST_ASSIGN=14 -val SCE_ST_CHARACTER=15 -val SCE_ST_SPEC_SEL=16 -# Lexical states for SCLEX_FLAGSHIP (clipper) -lex FlagShip=SCLEX_FLAGSHIP SCE_FS_ -val SCE_FS_DEFAULT=0 -val SCE_FS_COMMENT=1 -val SCE_FS_COMMENTLINE=2 -val SCE_FS_COMMENTDOC=3 -val SCE_FS_COMMENTLINEDOC=4 -val SCE_FS_COMMENTDOCKEYWORD=5 -val SCE_FS_COMMENTDOCKEYWORDERROR=6 -val SCE_FS_KEYWORD=7 -val SCE_FS_KEYWORD2=8 -val SCE_FS_KEYWORD3=9 -val SCE_FS_KEYWORD4=10 -val SCE_FS_NUMBER=11 -val SCE_FS_STRING=12 -val SCE_FS_PREPROCESSOR=13 -val SCE_FS_OPERATOR=14 -val SCE_FS_IDENTIFIER=15 -val SCE_FS_DATE=16 -val SCE_FS_STRINGEOL=17 -val SCE_FS_CONSTANT=18 -val SCE_FS_WORDOPERATOR=19 -val SCE_FS_DISABLEDCODE=20 -val SCE_FS_DEFAULT_C=21 -val SCE_FS_COMMENTDOC_C=22 -val SCE_FS_COMMENTLINEDOC_C=23 -val SCE_FS_KEYWORD_C=24 -val SCE_FS_KEYWORD2_C=25 -val SCE_FS_NUMBER_C=26 -val SCE_FS_STRING_C=27 -val SCE_FS_PREPROCESSOR_C=28 -val SCE_FS_OPERATOR_C=29 -val SCE_FS_IDENTIFIER_C=30 -val SCE_FS_STRINGEOL_C=31 -# Lexical states for SCLEX_CSOUND -lex Csound=SCLEX_CSOUND SCE_CSOUND_ -val SCE_CSOUND_DEFAULT=0 -val SCE_CSOUND_COMMENT=1 -val SCE_CSOUND_NUMBER=2 -val SCE_CSOUND_OPERATOR=3 -val SCE_CSOUND_INSTR=4 -val SCE_CSOUND_IDENTIFIER=5 -val SCE_CSOUND_OPCODE=6 -val SCE_CSOUND_HEADERSTMT=7 -val SCE_CSOUND_USERKEYWORD=8 -val SCE_CSOUND_COMMENTBLOCK=9 -val SCE_CSOUND_PARAM=10 -val SCE_CSOUND_ARATE_VAR=11 -val SCE_CSOUND_KRATE_VAR=12 -val SCE_CSOUND_IRATE_VAR=13 -val SCE_CSOUND_GLOBAL_VAR=14 -val SCE_CSOUND_STRINGEOL=15 -# Lexical states for SCLEX_INNOSETUP -lex Inno=SCLEX_INNOSETUP SCE_INNO_ -val SCE_INNO_DEFAULT=0 -val SCE_INNO_COMMENT=1 -val SCE_INNO_KEYWORD=2 -val SCE_INNO_PARAMETER=3 -val SCE_INNO_SECTION=4 -val SCE_INNO_PREPROC=5 -val SCE_INNO_INLINE_EXPANSION=6 -val SCE_INNO_COMMENT_PASCAL=7 -val SCE_INNO_KEYWORD_PASCAL=8 -val SCE_INNO_KEYWORD_USER=9 -val SCE_INNO_STRING_DOUBLE=10 -val SCE_INNO_STRING_SINGLE=11 -val SCE_INNO_IDENTIFIER=12 -# Lexical states for SCLEX_OPAL -lex Opal=SCLEX_OPAL SCE_OPAL_ -val SCE_OPAL_SPACE=0 -val SCE_OPAL_COMMENT_BLOCK=1 -val SCE_OPAL_COMMENT_LINE=2 -val SCE_OPAL_INTEGER=3 -val SCE_OPAL_KEYWORD=4 -val SCE_OPAL_SORT=5 -val SCE_OPAL_STRING=6 -val SCE_OPAL_PAR=7 -val SCE_OPAL_BOOL_CONST=8 -val SCE_OPAL_DEFAULT=32 -# Lexical states for SCLEX_SPICE -lex Spice=SCLEX_SPICE SCE_SPICE_ -val SCE_SPICE_DEFAULT=0 -val SCE_SPICE_IDENTIFIER=1 -val SCE_SPICE_KEYWORD=2 -val SCE_SPICE_KEYWORD2=3 -val SCE_SPICE_KEYWORD3=4 -val SCE_SPICE_NUMBER=5 -val SCE_SPICE_DELIMITER=6 -val SCE_SPICE_VALUE=7 -val SCE_SPICE_COMMENTLINE=8 -# Lexical states for SCLEX_CMAKE -lex CMAKE=SCLEX_CMAKE SCE_CMAKE_ -val SCE_CMAKE_DEFAULT=0 -val SCE_CMAKE_COMMENT=1 -val SCE_CMAKE_STRINGDQ=2 -val SCE_CMAKE_STRINGLQ=3 -val SCE_CMAKE_STRINGRQ=4 -val SCE_CMAKE_COMMANDS=5 -val SCE_CMAKE_PARAMETERS=6 -val SCE_CMAKE_VARIABLE=7 -val SCE_CMAKE_USERDEFINED=8 -val SCE_CMAKE_WHILEDEF=9 -val SCE_CMAKE_FOREACHDEF=10 -val SCE_CMAKE_IFDEFINEDEF=11 -val SCE_CMAKE_MACRODEF=12 -val SCE_CMAKE_STRINGVAR=13 -val SCE_CMAKE_NUMBER=14 -# Lexical states for SCLEX_GAP -lex Gap=SCLEX_GAP SCE_GAP_ -val SCE_GAP_DEFAULT=0 -val SCE_GAP_IDENTIFIER=1 -val SCE_GAP_KEYWORD=2 -val SCE_GAP_KEYWORD2=3 -val SCE_GAP_KEYWORD3=4 -val SCE_GAP_KEYWORD4=5 -val SCE_GAP_STRING=6 -val SCE_GAP_CHAR=7 -val SCE_GAP_OPERATOR=8 -val SCE_GAP_COMMENT=9 -val SCE_GAP_NUMBER=10 -val SCE_GAP_STRINGEOL=11 -# Lexical state for SCLEX_PLM -lex PLM=SCLEX_PLM SCE_PLM_ -val SCE_PLM_DEFAULT=0 -val SCE_PLM_COMMENT=1 -val SCE_PLM_STRING=2 -val SCE_PLM_NUMBER=3 -val SCE_PLM_IDENTIFIER=4 -val SCE_PLM_OPERATOR=5 -val SCE_PLM_CONTROL=6 -val SCE_PLM_KEYWORD=7 -# Lexical state for SCLEX_PROGRESS -lex Progress=SCLEX_PROGRESS SCE_ABL_ -val SCE_ABL_DEFAULT=0 -val SCE_ABL_NUMBER=1 -val SCE_ABL_WORD=2 -val SCE_ABL_STRING=3 -val SCE_ABL_CHARACTER=4 -val SCE_ABL_PREPROCESSOR=5 -val SCE_ABL_OPERATOR=6 -val SCE_ABL_IDENTIFIER=7 -val SCE_ABL_BLOCK=8 -val SCE_ABL_END=9 -val SCE_ABL_COMMENT=10 -val SCE_ABL_TASKMARKER=11 -val SCE_ABL_LINECOMMENT=12 -# Lexical states for SCLEX_ABAQUS -lex ABAQUS=SCLEX_ABAQUS SCE_ABAQUS_ -val SCE_ABAQUS_DEFAULT=0 -val SCE_ABAQUS_COMMENT=1 -val SCE_ABAQUS_COMMENTBLOCK=2 -val SCE_ABAQUS_NUMBER=3 -val SCE_ABAQUS_STRING=4 -val SCE_ABAQUS_OPERATOR=5 -val SCE_ABAQUS_WORD=6 -val SCE_ABAQUS_PROCESSOR=7 -val SCE_ABAQUS_COMMAND=8 -val SCE_ABAQUS_SLASHCOMMAND=9 -val SCE_ABAQUS_STARCOMMAND=10 -val SCE_ABAQUS_ARGUMENT=11 -val SCE_ABAQUS_FUNCTION=12 -# Lexical states for SCLEX_ASYMPTOTE -lex Asymptote=SCLEX_ASYMPTOTE SCE_ASY_ -val SCE_ASY_DEFAULT=0 -val SCE_ASY_COMMENT=1 -val SCE_ASY_COMMENTLINE=2 -val SCE_ASY_NUMBER=3 -val SCE_ASY_WORD=4 -val SCE_ASY_STRING=5 -val SCE_ASY_CHARACTER=6 -val SCE_ASY_OPERATOR=7 -val SCE_ASY_IDENTIFIER=8 -val SCE_ASY_STRINGEOL=9 -val SCE_ASY_COMMENTLINEDOC=10 -val SCE_ASY_WORD2=11 -# Lexical states for SCLEX_R -lex R=SCLEX_R SCE_R_ -val SCE_R_DEFAULT=0 -val SCE_R_COMMENT=1 -val SCE_R_KWORD=2 -val SCE_R_BASEKWORD=3 -val SCE_R_OTHERKWORD=4 -val SCE_R_NUMBER=5 -val SCE_R_STRING=6 -val SCE_R_STRING2=7 -val SCE_R_OPERATOR=8 -val SCE_R_IDENTIFIER=9 -val SCE_R_INFIX=10 -val SCE_R_INFIXEOL=11 -# Lexical state for SCLEX_MAGIK -lex MagikSF=SCLEX_MAGIK SCE_MAGIK_ -val SCE_MAGIK_DEFAULT=0 -val SCE_MAGIK_COMMENT=1 -val SCE_MAGIK_HYPER_COMMENT=16 -val SCE_MAGIK_STRING=2 -val SCE_MAGIK_CHARACTER=3 -val SCE_MAGIK_NUMBER=4 -val SCE_MAGIK_IDENTIFIER=5 -val SCE_MAGIK_OPERATOR=6 -val SCE_MAGIK_FLOW=7 -val SCE_MAGIK_CONTAINER=8 -val SCE_MAGIK_BRACKET_BLOCK=9 -val SCE_MAGIK_BRACE_BLOCK=10 -val SCE_MAGIK_SQBRACKET_BLOCK=11 -val SCE_MAGIK_UNKNOWN_KEYWORD=12 -val SCE_MAGIK_KEYWORD=13 -val SCE_MAGIK_PRAGMA=14 -val SCE_MAGIK_SYMBOL=15 -# Lexical state for SCLEX_POWERSHELL -lex PowerShell=SCLEX_POWERSHELL SCE_POWERSHELL_ -val SCE_POWERSHELL_DEFAULT=0 -val SCE_POWERSHELL_COMMENT=1 -val SCE_POWERSHELL_STRING=2 -val SCE_POWERSHELL_CHARACTER=3 -val SCE_POWERSHELL_NUMBER=4 -val SCE_POWERSHELL_VARIABLE=5 -val SCE_POWERSHELL_OPERATOR=6 -val SCE_POWERSHELL_IDENTIFIER=7 -val SCE_POWERSHELL_KEYWORD=8 -val SCE_POWERSHELL_CMDLET=9 -val SCE_POWERSHELL_ALIAS=10 -val SCE_POWERSHELL_FUNCTION=11 -val SCE_POWERSHELL_USER1=12 -val SCE_POWERSHELL_COMMENTSTREAM=13 -val SCE_POWERSHELL_HERE_STRING=14 -val SCE_POWERSHELL_HERE_CHARACTER=15 -val SCE_POWERSHELL_COMMENTDOCKEYWORD=16 -# Lexical state for SCLEX_MYSQL -lex MySQL=SCLEX_MYSQL SCE_MYSQL_ -val SCE_MYSQL_DEFAULT=0 -val SCE_MYSQL_COMMENT=1 -val SCE_MYSQL_COMMENTLINE=2 -val SCE_MYSQL_VARIABLE=3 -val SCE_MYSQL_SYSTEMVARIABLE=4 -val SCE_MYSQL_KNOWNSYSTEMVARIABLE=5 -val SCE_MYSQL_NUMBER=6 -val SCE_MYSQL_MAJORKEYWORD=7 -val SCE_MYSQL_KEYWORD=8 -val SCE_MYSQL_DATABASEOBJECT=9 -val SCE_MYSQL_PROCEDUREKEYWORD=10 -val SCE_MYSQL_STRING=11 -val SCE_MYSQL_SQSTRING=12 -val SCE_MYSQL_DQSTRING=13 -val SCE_MYSQL_OPERATOR=14 -val SCE_MYSQL_FUNCTION=15 -val SCE_MYSQL_IDENTIFIER=16 -val SCE_MYSQL_QUOTEDIDENTIFIER=17 -val SCE_MYSQL_USER1=18 -val SCE_MYSQL_USER2=19 -val SCE_MYSQL_USER3=20 -val SCE_MYSQL_HIDDENCOMMAND=21 -val SCE_MYSQL_PLACEHOLDER=22 -# Lexical state for SCLEX_PO -lex Po=SCLEX_PO SCE_PO_ -val SCE_PO_DEFAULT=0 -val SCE_PO_COMMENT=1 -val SCE_PO_MSGID=2 -val SCE_PO_MSGID_TEXT=3 -val SCE_PO_MSGSTR=4 -val SCE_PO_MSGSTR_TEXT=5 -val SCE_PO_MSGCTXT=6 -val SCE_PO_MSGCTXT_TEXT=7 -val SCE_PO_FUZZY=8 -val SCE_PO_PROGRAMMER_COMMENT=9 -val SCE_PO_REFERENCE=10 -val SCE_PO_FLAGS=11 -val SCE_PO_MSGID_TEXT_EOL=12 -val SCE_PO_MSGSTR_TEXT_EOL=13 -val SCE_PO_MSGCTXT_TEXT_EOL=14 -val SCE_PO_ERROR=15 -# Lexical states for SCLEX_PASCAL -lex Pascal=SCLEX_PASCAL SCE_PAS_ -val SCE_PAS_DEFAULT=0 -val SCE_PAS_IDENTIFIER=1 -val SCE_PAS_COMMENT=2 -val SCE_PAS_COMMENT2=3 -val SCE_PAS_COMMENTLINE=4 -val SCE_PAS_PREPROCESSOR=5 -val SCE_PAS_PREPROCESSOR2=6 -val SCE_PAS_NUMBER=7 -val SCE_PAS_HEXNUMBER=8 -val SCE_PAS_WORD=9 -val SCE_PAS_STRING=10 -val SCE_PAS_STRINGEOL=11 -val SCE_PAS_CHARACTER=12 -val SCE_PAS_OPERATOR=13 -val SCE_PAS_ASM=14 -# Lexical state for SCLEX_SORCUS -lex SORCUS=SCLEX_SORCUS SCE_SORCUS_ -val SCE_SORCUS_DEFAULT=0 -val SCE_SORCUS_COMMAND=1 -val SCE_SORCUS_PARAMETER=2 -val SCE_SORCUS_COMMENTLINE=3 -val SCE_SORCUS_STRING=4 -val SCE_SORCUS_STRINGEOL=5 -val SCE_SORCUS_IDENTIFIER=6 -val SCE_SORCUS_OPERATOR=7 -val SCE_SORCUS_NUMBER=8 -val SCE_SORCUS_CONSTANT=9 -# Lexical state for SCLEX_POWERPRO -lex PowerPro=SCLEX_POWERPRO SCE_POWERPRO_ -val SCE_POWERPRO_DEFAULT=0 -val SCE_POWERPRO_COMMENTBLOCK=1 -val SCE_POWERPRO_COMMENTLINE=2 -val SCE_POWERPRO_NUMBER=3 -val SCE_POWERPRO_WORD=4 -val SCE_POWERPRO_WORD2=5 -val SCE_POWERPRO_WORD3=6 -val SCE_POWERPRO_WORD4=7 -val SCE_POWERPRO_DOUBLEQUOTEDSTRING=8 -val SCE_POWERPRO_SINGLEQUOTEDSTRING=9 -val SCE_POWERPRO_LINECONTINUE=10 -val SCE_POWERPRO_OPERATOR=11 -val SCE_POWERPRO_IDENTIFIER=12 -val SCE_POWERPRO_STRINGEOL=13 -val SCE_POWERPRO_VERBATIM=14 -val SCE_POWERPRO_ALTQUOTE=15 -val SCE_POWERPRO_FUNCTION=16 -# Lexical states for SCLEX_SML -lex SML=SCLEX_SML SCE_SML_ -val SCE_SML_DEFAULT=0 -val SCE_SML_IDENTIFIER=1 -val SCE_SML_TAGNAME=2 -val SCE_SML_KEYWORD=3 -val SCE_SML_KEYWORD2=4 -val SCE_SML_KEYWORD3=5 -val SCE_SML_LINENUM=6 -val SCE_SML_OPERATOR=7 -val SCE_SML_NUMBER=8 -val SCE_SML_CHAR=9 -val SCE_SML_STRING=11 -val SCE_SML_COMMENT=12 -val SCE_SML_COMMENT1=13 -val SCE_SML_COMMENT2=14 -val SCE_SML_COMMENT3=15 -# Lexical state for SCLEX_MARKDOWN -lex Markdown=SCLEX_MARKDOWN SCE_MARKDOWN_ -val SCE_MARKDOWN_DEFAULT=0 -val SCE_MARKDOWN_LINE_BEGIN=1 -val SCE_MARKDOWN_STRONG1=2 -val SCE_MARKDOWN_STRONG2=3 -val SCE_MARKDOWN_EM1=4 -val SCE_MARKDOWN_EM2=5 -val SCE_MARKDOWN_HEADER1=6 -val SCE_MARKDOWN_HEADER2=7 -val SCE_MARKDOWN_HEADER3=8 -val SCE_MARKDOWN_HEADER4=9 -val SCE_MARKDOWN_HEADER5=10 -val SCE_MARKDOWN_HEADER6=11 -val SCE_MARKDOWN_PRECHAR=12 -val SCE_MARKDOWN_ULIST_ITEM=13 -val SCE_MARKDOWN_OLIST_ITEM=14 -val SCE_MARKDOWN_BLOCKQUOTE=15 -val SCE_MARKDOWN_STRIKEOUT=16 -val SCE_MARKDOWN_HRULE=17 -val SCE_MARKDOWN_LINK=18 -val SCE_MARKDOWN_CODE=19 -val SCE_MARKDOWN_CODE2=20 -val SCE_MARKDOWN_CODEBK=21 -# Lexical state for SCLEX_TXT2TAGS -lex Txt2tags=SCLEX_TXT2TAGS SCE_TXT2TAGS_ -val SCE_TXT2TAGS_DEFAULT=0 -val SCE_TXT2TAGS_LINE_BEGIN=1 -val SCE_TXT2TAGS_STRONG1=2 -val SCE_TXT2TAGS_STRONG2=3 -val SCE_TXT2TAGS_EM1=4 -val SCE_TXT2TAGS_EM2=5 -val SCE_TXT2TAGS_HEADER1=6 -val SCE_TXT2TAGS_HEADER2=7 -val SCE_TXT2TAGS_HEADER3=8 -val SCE_TXT2TAGS_HEADER4=9 -val SCE_TXT2TAGS_HEADER5=10 -val SCE_TXT2TAGS_HEADER6=11 -val SCE_TXT2TAGS_PRECHAR=12 -val SCE_TXT2TAGS_ULIST_ITEM=13 -val SCE_TXT2TAGS_OLIST_ITEM=14 -val SCE_TXT2TAGS_BLOCKQUOTE=15 -val SCE_TXT2TAGS_STRIKEOUT=16 -val SCE_TXT2TAGS_HRULE=17 -val SCE_TXT2TAGS_LINK=18 -val SCE_TXT2TAGS_CODE=19 -val SCE_TXT2TAGS_CODE2=20 -val SCE_TXT2TAGS_CODEBK=21 -val SCE_TXT2TAGS_COMMENT=22 -val SCE_TXT2TAGS_OPTION=23 -val SCE_TXT2TAGS_PREPROC=24 -val SCE_TXT2TAGS_POSTPROC=25 -# Lexical states for SCLEX_A68K -lex A68k=SCLEX_A68K SCE_A68K_ -val SCE_A68K_DEFAULT=0 -val SCE_A68K_COMMENT=1 -val SCE_A68K_NUMBER_DEC=2 -val SCE_A68K_NUMBER_BIN=3 -val SCE_A68K_NUMBER_HEX=4 -val SCE_A68K_STRING1=5 -val SCE_A68K_OPERATOR=6 -val SCE_A68K_CPUINSTRUCTION=7 -val SCE_A68K_EXTINSTRUCTION=8 -val SCE_A68K_REGISTER=9 -val SCE_A68K_DIRECTIVE=10 -val SCE_A68K_MACRO_ARG=11 -val SCE_A68K_LABEL=12 -val SCE_A68K_STRING2=13 -val SCE_A68K_IDENTIFIER=14 -val SCE_A68K_MACRO_DECLARATION=15 -val SCE_A68K_COMMENT_WORD=16 -val SCE_A68K_COMMENT_SPECIAL=17 -val SCE_A68K_COMMENT_DOXYGEN=18 -# Lexical states for SCLEX_MODULA -lex Modula=SCLEX_MODULA SCE_MODULA_ -val SCE_MODULA_DEFAULT=0 -val SCE_MODULA_COMMENT=1 -val SCE_MODULA_DOXYCOMM=2 -val SCE_MODULA_DOXYKEY=3 -val SCE_MODULA_KEYWORD=4 -val SCE_MODULA_RESERVED=5 -val SCE_MODULA_NUMBER=6 -val SCE_MODULA_BASENUM=7 -val SCE_MODULA_FLOAT=8 -val SCE_MODULA_STRING=9 -val SCE_MODULA_STRSPEC=10 -val SCE_MODULA_CHAR=11 -val SCE_MODULA_CHARSPEC=12 -val SCE_MODULA_PROC=13 -val SCE_MODULA_PRAGMA=14 -val SCE_MODULA_PRGKEY=15 -val SCE_MODULA_OPERATOR=16 -val SCE_MODULA_BADSTR=17 -# Lexical states for SCLEX_COFFEESCRIPT -lex CoffeeScript=SCLEX_COFFEESCRIPT SCE_COFFEESCRIPT_ -val SCE_COFFEESCRIPT_DEFAULT=0 -val SCE_COFFEESCRIPT_COMMENT=1 -val SCE_COFFEESCRIPT_COMMENTLINE=2 -val SCE_COFFEESCRIPT_COMMENTDOC=3 -val SCE_COFFEESCRIPT_NUMBER=4 -val SCE_COFFEESCRIPT_WORD=5 -val SCE_COFFEESCRIPT_STRING=6 -val SCE_COFFEESCRIPT_CHARACTER=7 -val SCE_COFFEESCRIPT_UUID=8 -val SCE_COFFEESCRIPT_PREPROCESSOR=9 -val SCE_COFFEESCRIPT_OPERATOR=10 -val SCE_COFFEESCRIPT_IDENTIFIER=11 -val SCE_COFFEESCRIPT_STRINGEOL=12 -val SCE_COFFEESCRIPT_VERBATIM=13 -val SCE_COFFEESCRIPT_REGEX=14 -val SCE_COFFEESCRIPT_COMMENTLINEDOC=15 -val SCE_COFFEESCRIPT_WORD2=16 -val SCE_COFFEESCRIPT_COMMENTDOCKEYWORD=17 -val SCE_COFFEESCRIPT_COMMENTDOCKEYWORDERROR=18 -val SCE_COFFEESCRIPT_GLOBALCLASS=19 -val SCE_COFFEESCRIPT_STRINGRAW=20 -val SCE_COFFEESCRIPT_TRIPLEVERBATIM=21 -val SCE_COFFEESCRIPT_COMMENTBLOCK=22 -val SCE_COFFEESCRIPT_VERBOSE_REGEX=23 -val SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT=24 -val SCE_COFFEESCRIPT_INSTANCEPROPERTY=25 -# Lexical states for SCLEX_AVS -lex AVS=SCLEX_AVS SCE_AVS_ -val SCE_AVS_DEFAULT=0 -val SCE_AVS_COMMENTBLOCK=1 -val SCE_AVS_COMMENTBLOCKN=2 -val SCE_AVS_COMMENTLINE=3 -val SCE_AVS_NUMBER=4 -val SCE_AVS_OPERATOR=5 -val SCE_AVS_IDENTIFIER=6 -val SCE_AVS_STRING=7 -val SCE_AVS_TRIPLESTRING=8 -val SCE_AVS_KEYWORD=9 -val SCE_AVS_FILTER=10 -val SCE_AVS_PLUGIN=11 -val SCE_AVS_FUNCTION=12 -val SCE_AVS_CLIPPROP=13 -val SCE_AVS_USERDFN=14 -# Lexical states for SCLEX_ECL -lex ECL=SCLEX_ECL SCE_ECL_ -val SCE_ECL_DEFAULT=0 -val SCE_ECL_COMMENT=1 -val SCE_ECL_COMMENTLINE=2 -val SCE_ECL_NUMBER=3 -val SCE_ECL_STRING=4 -val SCE_ECL_WORD0=5 -val SCE_ECL_OPERATOR=6 -val SCE_ECL_CHARACTER=7 -val SCE_ECL_UUID=8 -val SCE_ECL_PREPROCESSOR=9 -val SCE_ECL_UNKNOWN=10 -val SCE_ECL_IDENTIFIER=11 -val SCE_ECL_STRINGEOL=12 -val SCE_ECL_VERBATIM=13 -val SCE_ECL_REGEX=14 -val SCE_ECL_COMMENTLINEDOC=15 -val SCE_ECL_WORD1=16 -val SCE_ECL_COMMENTDOCKEYWORD=17 -val SCE_ECL_COMMENTDOCKEYWORDERROR=18 -val SCE_ECL_WORD2=19 -val SCE_ECL_WORD3=20 -val SCE_ECL_WORD4=21 -val SCE_ECL_WORD5=22 -val SCE_ECL_COMMENTDOC=23 -val SCE_ECL_ADDED=24 -val SCE_ECL_DELETED=25 -val SCE_ECL_CHANGED=26 -val SCE_ECL_MOVED=27 -# Lexical states for SCLEX_OSCRIPT -lex OScript=SCLEX_OSCRIPT SCE_OSCRIPT_ -val SCE_OSCRIPT_DEFAULT=0 -val SCE_OSCRIPT_LINE_COMMENT=1 -val SCE_OSCRIPT_BLOCK_COMMENT=2 -val SCE_OSCRIPT_DOC_COMMENT=3 -val SCE_OSCRIPT_PREPROCESSOR=4 -val SCE_OSCRIPT_NUMBER=5 -val SCE_OSCRIPT_SINGLEQUOTE_STRING=6 -val SCE_OSCRIPT_DOUBLEQUOTE_STRING=7 -val SCE_OSCRIPT_CONSTANT=8 -val SCE_OSCRIPT_IDENTIFIER=9 -val SCE_OSCRIPT_GLOBAL=10 -val SCE_OSCRIPT_KEYWORD=11 -val SCE_OSCRIPT_OPERATOR=12 -val SCE_OSCRIPT_LABEL=13 -val SCE_OSCRIPT_TYPE=14 -val SCE_OSCRIPT_FUNCTION=15 -val SCE_OSCRIPT_OBJECT=16 -val SCE_OSCRIPT_PROPERTY=17 -val SCE_OSCRIPT_METHOD=18 -# Lexical states for SCLEX_VISUALPROLOG -lex VisualProlog=SCLEX_VISUALPROLOG SCE_VISUALPROLOG_ -val SCE_VISUALPROLOG_DEFAULT=0 -val SCE_VISUALPROLOG_KEY_MAJOR=1 -val SCE_VISUALPROLOG_KEY_MINOR=2 -val SCE_VISUALPROLOG_KEY_DIRECTIVE=3 -val SCE_VISUALPROLOG_COMMENT_BLOCK=4 -val SCE_VISUALPROLOG_COMMENT_LINE=5 -val SCE_VISUALPROLOG_COMMENT_KEY=6 -val SCE_VISUALPROLOG_COMMENT_KEY_ERROR=7 -val SCE_VISUALPROLOG_IDENTIFIER=8 -val SCE_VISUALPROLOG_VARIABLE=9 -val SCE_VISUALPROLOG_ANONYMOUS=10 -val SCE_VISUALPROLOG_NUMBER=11 -val SCE_VISUALPROLOG_OPERATOR=12 -val SCE_VISUALPROLOG_CHARACTER=13 -val SCE_VISUALPROLOG_CHARACTER_TOO_MANY=14 -val SCE_VISUALPROLOG_CHARACTER_ESCAPE_ERROR=15 -val SCE_VISUALPROLOG_STRING=16 -val SCE_VISUALPROLOG_STRING_ESCAPE=17 -val SCE_VISUALPROLOG_STRING_ESCAPE_ERROR=18 -val SCE_VISUALPROLOG_STRING_EOL_OPEN=19 -val SCE_VISUALPROLOG_STRING_VERBATIM=20 -val SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL=21 -val SCE_VISUALPROLOG_STRING_VERBATIM_EOL=22 -# Lexical states for SCLEX_STTXT -lex StructuredText=SCLEX_STTXT SCE_STTXT_ -val SCE_STTXT_DEFAULT=0 -val SCE_STTXT_COMMENT=1 -val SCE_STTXT_COMMENTLINE=2 -val SCE_STTXT_KEYWORD=3 -val SCE_STTXT_TYPE=4 -val SCE_STTXT_FUNCTION=5 -val SCE_STTXT_FB=6 -val SCE_STTXT_NUMBER=7 -val SCE_STTXT_HEXNUMBER=8 -val SCE_STTXT_PRAGMA=9 -val SCE_STTXT_OPERATOR=10 -val SCE_STTXT_CHARACTER=11 -val SCE_STTXT_STRING1=12 -val SCE_STTXT_STRING2=13 -val SCE_STTXT_STRINGEOL=14 -val SCE_STTXT_IDENTIFIER=15 -val SCE_STTXT_DATETIME=16 -val SCE_STTXT_VARS=17 -val SCE_STTXT_PRAGMAS=18 -# Lexical states for SCLEX_KVIRC -lex KVIrc=SCLEX_KVIRC SCE_KVIRC_ -val SCE_KVIRC_DEFAULT=0 -val SCE_KVIRC_COMMENT=1 -val SCE_KVIRC_COMMENTBLOCK=2 -val SCE_KVIRC_STRING=3 -val SCE_KVIRC_WORD=4 -val SCE_KVIRC_KEYWORD=5 -val SCE_KVIRC_FUNCTION_KEYWORD=6 -val SCE_KVIRC_FUNCTION=7 -val SCE_KVIRC_VARIABLE=8 -val SCE_KVIRC_NUMBER=9 -val SCE_KVIRC_OPERATOR=10 -val SCE_KVIRC_STRING_FUNCTION=11 -val SCE_KVIRC_STRING_VARIABLE=12 -# Lexical states for SCLEX_RUST -lex Rust=SCLEX_RUST SCE_RUST_ -val SCE_RUST_DEFAULT=0 -val SCE_RUST_COMMENTBLOCK=1 -val SCE_RUST_COMMENTLINE=2 -val SCE_RUST_COMMENTBLOCKDOC=3 -val SCE_RUST_COMMENTLINEDOC=4 -val SCE_RUST_NUMBER=5 -val SCE_RUST_WORD=6 -val SCE_RUST_WORD2=7 -val SCE_RUST_WORD3=8 -val SCE_RUST_WORD4=9 -val SCE_RUST_WORD5=10 -val SCE_RUST_WORD6=11 -val SCE_RUST_WORD7=12 -val SCE_RUST_STRING=13 -val SCE_RUST_STRINGR=14 -val SCE_RUST_CHARACTER=15 -val SCE_RUST_OPERATOR=16 -val SCE_RUST_IDENTIFIER=17 -val SCE_RUST_LIFETIME=18 -val SCE_RUST_MACRO=19 -val SCE_RUST_LEXERROR=20 -val SCE_RUST_BYTESTRING=21 -val SCE_RUST_BYTESTRINGR=22 -val SCE_RUST_BYTECHARACTER=23 -# Lexical states for SCLEX_DMAP -lex DMAP=SCLEX_DMAP SCE_DMAP_ -val SCE_DMAP_DEFAULT=0 -val SCE_DMAP_COMMENT=1 -val SCE_DMAP_NUMBER=2 -val SCE_DMAP_STRING1=3 -val SCE_DMAP_STRING2=4 -val SCE_DMAP_STRINGEOL=5 -val SCE_DMAP_OPERATOR=6 -val SCE_DMAP_IDENTIFIER=7 -val SCE_DMAP_WORD=8 -val SCE_DMAP_WORD2=9 -val SCE_DMAP_WORD3=10 -# Lexical states for SCLEX_DMIS -lex DMIS=SCLEX_DMIS SCE_DMIS_ -val SCE_DMIS_DEFAULT=0 -val SCE_DMIS_COMMENT=1 -val SCE_DMIS_STRING=2 -val SCE_DMIS_NUMBER=3 -val SCE_DMIS_KEYWORD=4 -val SCE_DMIS_MAJORWORD=5 -val SCE_DMIS_MINORWORD=6 -val SCE_DMIS_UNSUPPORTED_MAJOR=7 -val SCE_DMIS_UNSUPPORTED_MINOR=8 -val SCE_DMIS_LABEL=9 -# Lexical states for SCLEX_REGISTRY -lex REG=SCLEX_REGISTRY SCE_REG_ -val SCE_REG_DEFAULT=0 -val SCE_REG_COMMENT=1 -val SCE_REG_VALUENAME=2 -val SCE_REG_STRING=3 -val SCE_REG_HEXDIGIT=4 -val SCE_REG_VALUETYPE=5 -val SCE_REG_ADDEDKEY=6 -val SCE_REG_DELETEDKEY=7 -val SCE_REG_ESCAPED=8 -val SCE_REG_KEYPATH_GUID=9 -val SCE_REG_STRING_GUID=10 -val SCE_REG_PARAMETER=11 -val SCE_REG_OPERATOR=12 -# Lexical state for SCLEX_BIBTEX -lex BibTeX=SCLEX_BIBTEX SCE_BIBTEX_ -val SCE_BIBTEX_DEFAULT=0 -val SCE_BIBTEX_ENTRY=1 -val SCE_BIBTEX_UNKNOWN_ENTRY=2 -val SCE_BIBTEX_KEY=3 -val SCE_BIBTEX_PARAMETER=4 -val SCE_BIBTEX_VALUE=5 -val SCE_BIBTEX_COMMENT=6 -# Lexical state for SCLEX_SREC -lex Srec=SCLEX_SREC SCE_HEX_ -val SCE_HEX_DEFAULT=0 -val SCE_HEX_RECSTART=1 -val SCE_HEX_RECTYPE=2 -val SCE_HEX_RECTYPE_UNKNOWN=3 -val SCE_HEX_BYTECOUNT=4 -val SCE_HEX_BYTECOUNT_WRONG=5 -val SCE_HEX_NOADDRESS=6 -val SCE_HEX_DATAADDRESS=7 -val SCE_HEX_RECCOUNT=8 -val SCE_HEX_STARTADDRESS=9 -val SCE_HEX_ADDRESSFIELD_UNKNOWN=10 -val SCE_HEX_EXTENDEDADDRESS=11 -val SCE_HEX_DATA_ODD=12 -val SCE_HEX_DATA_EVEN=13 -val SCE_HEX_DATA_UNKNOWN=14 -val SCE_HEX_DATA_EMPTY=15 -val SCE_HEX_CHECKSUM=16 -val SCE_HEX_CHECKSUM_WRONG=17 -val SCE_HEX_GARBAGE=18 -# Lexical state for SCLEX_IHEX (shared with Srec) -lex IHex=SCLEX_IHEX SCE_HEX_ -# Lexical state for SCLEX_TEHEX (shared with Srec) -lex TEHex=SCLEX_TEHEX SCE_HEX_ -# Lexical states for SCLEX_JSON -lex JSON=SCLEX_JSON SCE_JSON_ -val SCE_JSON_DEFAULT=0 -val SCE_JSON_NUMBER=1 -val SCE_JSON_STRING=2 -val SCE_JSON_STRINGEOL=3 -val SCE_JSON_PROPERTYNAME=4 -val SCE_JSON_ESCAPESEQUENCE=5 -val SCE_JSON_LINECOMMENT=6 -val SCE_JSON_BLOCKCOMMENT=7 -val SCE_JSON_OPERATOR=8 -val SCE_JSON_URI=9 -val SCE_JSON_COMPACTIRI=10 -val SCE_JSON_KEYWORD=11 -val SCE_JSON_LDKEYWORD=12 -val SCE_JSON_ERROR=13 -lex EDIFACT=SCLEX_EDIFACT SCE_EDI_ -val SCE_EDI_DEFAULT=0 -val SCE_EDI_SEGMENTSTART=1 -val SCE_EDI_SEGMENTEND=2 -val SCE_EDI_SEP_ELEMENT=3 -val SCE_EDI_SEP_COMPOSITE=4 -val SCE_EDI_SEP_RELEASE=5 -val SCE_EDI_UNA=6 -val SCE_EDI_UNH=7 -val SCE_EDI_BADSEGMENT=8 -# Lexical states for SCLEX_STATA -lex STATA=SCLEX_STATA SCE_STATA_ -val SCE_STATA_DEFAULT=0 -val SCE_STATA_COMMENT=1 -val SCE_STATA_COMMENTLINE=2 -val SCE_STATA_COMMENTBLOCK=3 -val SCE_STATA_NUMBER=4 -val SCE_STATA_OPERATOR=5 -val SCE_STATA_IDENTIFIER=6 -val SCE_STATA_STRING=7 -val SCE_STATA_TYPE=8 -val SCE_STATA_WORD=9 -val SCE_STATA_GLOBAL_MACRO=10 -val SCE_STATA_MACRO=11 -# Lexical states for SCLEX_SAS -lex SAS=SCLEX_SAS SCE_SAS_ -val SCE_SAS_DEFAULT=0 -val SCE_SAS_COMMENT=1 -val SCE_SAS_COMMENTLINE=2 -val SCE_SAS_COMMENTBLOCK=3 -val SCE_SAS_NUMBER=4 -val SCE_SAS_OPERATOR=5 -val SCE_SAS_IDENTIFIER=6 -val SCE_SAS_STRING=7 -val SCE_SAS_TYPE=8 -val SCE_SAS_WORD=9 -val SCE_SAS_GLOBAL_MACRO=10 -val SCE_SAS_MACRO=11 -val SCE_SAS_MACRO_KEYWORD=12 -val SCE_SAS_BLOCK_KEYWORD=13 -val SCE_SAS_MACRO_FUNCTION=14 -val SCE_SAS_STATEMENT=15 - -# Events - -evt void StyleNeeded=2000(int position) -evt void CharAdded=2001(int ch) -evt void SavePointReached=2002(void) -evt void SavePointLeft=2003(void) -evt void ModifyAttemptRO=2004(void) -# GTK+ Specific to work around focus and accelerator problems: -evt void Key=2005(int ch, int modifiers) -evt void DoubleClick=2006(int modifiers, int position, int line) -evt void UpdateUI=2007(int updated) -evt void Modified=2008(int position, int modificationType, string text, int length, int linesAdded, int line, int foldLevelNow, int foldLevelPrev, int token, int annotationLinesAdded) -evt void MacroRecord=2009(int message, int wParam, int lParam) -evt void MarginClick=2010(int modifiers, int position, int margin) -evt void NeedShown=2011(int position, int length) -evt void Painted=2013(void) -evt void UserListSelection=2014(int listType, string text, int position, int ch, CompletionMethods listCompletionMethod) -evt void URIDropped=2015(string text) -evt void DwellStart=2016(int position, int x, int y) -evt void DwellEnd=2017(int position, int x, int y) -evt void Zoom=2018(void) -evt void HotSpotClick=2019(int modifiers, int position) -evt void HotSpotDoubleClick=2020(int modifiers, int position) -evt void CallTipClick=2021(int position) -evt void AutoCSelection=2022(string text, int position, int ch, CompletionMethods listCompletionMethod) -evt void IndicatorClick=2023(int modifiers, int position) -evt void IndicatorRelease=2024(int modifiers, int position) -evt void AutoCCancelled=2025(void) -evt void AutoCCharDeleted=2026(void) -evt void HotSpotReleaseClick=2027(int modifiers, int position) -evt void FocusIn=2028(void) -evt void FocusOut=2029(void) -evt void AutoCCompleted=2030(string text, int position, int ch, CompletionMethods listCompletionMethod) -evt void MarginRightClick=2031(int modifiers, int position, int margin) -evt void AutoCSelectionChange=2032(int listType, string text, int position) - -cat Provisional - -enu LineCharacterIndexType=SC_LINECHARACTERINDEX_ -val SC_LINECHARACTERINDEX_NONE=0 -val SC_LINECHARACTERINDEX_UTF32=1 -val SC_LINECHARACTERINDEX_UTF16=2 - -# Retrieve line character index state. -get int GetLineCharacterIndex=2710(,) - -# Request line character index be created or its use count increased. -fun void AllocateLineCharacterIndex=2711(int lineCharacterIndex,) - -# Decrease use count of line character index and remove if 0. -fun void ReleaseLineCharacterIndex=2712(int lineCharacterIndex,) - -# Retrieve the document line containing a position measured in index units. -fun int LineFromIndexPosition=2713(position pos, int lineCharacterIndex) - -# Retrieve the position measured in index units at the start of a document line. -fun position IndexPositionFromLine=2714(int line, int lineCharacterIndex) - -cat Deprecated - -# Divide each styling byte into lexical class bits (default: 5) and indicator -# bits (default: 3). If a lexer requires more than 32 lexical states, then this -# is used to expand the possible states. -set void SetStyleBits=2090(int bits,) - -# Retrieve number of bits in style bytes used to hold the lexical state. -get int GetStyleBits=2091(,) - -# Retrieve the number of bits the current lexer needs for styling. -get int GetStyleBitsNeeded=4011(,) - -# Deprecated in 3.5.5 - -# Always interpret keyboard input as Unicode -set void SetKeysUnicode=2521(bool keysUnicode,) - -# Are keys always interpreted as Unicode? -get bool GetKeysUnicode=2522(,) diff --git a/3rdparty/unioncode-qscintilla214/scintilla/include/ScintillaWidget.h b/3rdparty/unioncode-qscintilla214/scintilla/include/ScintillaWidget.h deleted file mode 100644 index 1721f65d9..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/include/ScintillaWidget.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Scintilla source code edit control */ -/* @file ScintillaWidget.h - * Definition of Scintilla widget for GTK+. - * Only needed by GTK+ code but is harmless on other platforms. - * This comment is not a doc-comment as that causes warnings from g-ir-scanner. - */ -/* Copyright 1998-2001 by Neil Hodgson - * The License.txt file describes the conditions under which this software may be distributed. */ - -#ifndef SCINTILLAWIDGET_H -#define SCINTILLAWIDGET_H - -#if defined(GTK) - -#ifdef __cplusplus -extern "C" { -#endif - -#define SCINTILLA(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, scintilla_get_type (), ScintillaObject) -#define SCINTILLA_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, scintilla_get_type (), ScintillaClass) -#define IS_SCINTILLA(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, scintilla_get_type ()) - -#define SCINTILLA_TYPE_OBJECT (scintilla_object_get_type()) -#define SCINTILLA_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SCINTILLA_TYPE_OBJECT, ScintillaObject)) -#define SCINTILLA_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCINTILLA_TYPE_OBJECT)) -#define SCINTILLA_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SCINTILLA_TYPE_OBJECT, ScintillaObjectClass)) -#define SCINTILLA_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SCINTILLA_TYPE_OBJECT)) -#define SCINTILLA_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), SCINTILLA_TYPE_OBJECT, ScintillaObjectClass)) - -typedef struct _ScintillaObject ScintillaObject; -typedef struct _ScintillaClass ScintillaObjectClass; - -struct _ScintillaObject { - GtkContainer cont; - void *pscin; -}; - -struct _ScintillaClass { - GtkContainerClass parent_class; - - void (* command) (ScintillaObject *sci, int cmd, GtkWidget *window); - void (* notify) (ScintillaObject *sci, int id, SCNotification *scn); -}; - -GType scintilla_object_get_type (void); -GtkWidget* scintilla_object_new (void); -gintptr scintilla_object_send_message (ScintillaObject *sci, unsigned int iMessage, guintptr wParam, gintptr lParam); - - -GType scnotification_get_type (void); -#define SCINTILLA_TYPE_NOTIFICATION (scnotification_get_type()) - -#ifndef G_IR_SCANNING -/* The legacy names confuse the g-ir-scanner program */ -typedef struct _ScintillaClass ScintillaClass; - -GType scintilla_get_type (void); -GtkWidget* scintilla_new (void); -void scintilla_set_id (ScintillaObject *sci, uptr_t id); -sptr_t scintilla_send_message (ScintillaObject *sci,unsigned int iMessage, uptr_t wParam, sptr_t lParam); -void scintilla_release_resources(void); -#endif - -#define SCINTILLA_NOTIFY "sci-notify" - -#ifdef __cplusplus -} -#endif - -#endif - -#endif diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexA68k.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexA68k.cpp deleted file mode 100644 index 1475ad078..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexA68k.cpp +++ /dev/null @@ -1,345 +0,0 @@ -// Scintilla source code edit control -/** @file LexA68k.cxx - ** Lexer for Assembler, just for the MASM syntax - ** Written by Martial Demolins AKA Folco - **/ -// Copyright 2010 Martial Demolins -// The License.txt file describes the conditions under which this software -// may be distributed. - - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - - -// Return values for GetOperatorType -#define NO_OPERATOR 0 -#define OPERATOR_1CHAR 1 -#define OPERATOR_2CHAR 2 - - -/** - * IsIdentifierStart - * - * Return true if the given char is a valid identifier first char - */ - -static inline bool IsIdentifierStart (const int ch) -{ - return (isalpha(ch) || (ch == '_') || (ch == '\\')); -} - - -/** - * IsIdentifierChar - * - * Return true if the given char is a valid identifier char - */ - -static inline bool IsIdentifierChar (const int ch) -{ - return (isalnum(ch) || (ch == '_') || (ch == '@') || (ch == ':') || (ch == '.')); -} - - -/** - * GetOperatorType - * - * Return: - * NO_OPERATOR if char is not an operator - * OPERATOR_1CHAR if the operator is one char long - * OPERATOR_2CHAR if the operator is two chars long - */ - -static inline int GetOperatorType (const int ch1, const int ch2) -{ - int OpType = NO_OPERATOR; - - if ((ch1 == '+') || (ch1 == '-') || (ch1 == '*') || (ch1 == '/') || (ch1 == '#') || - (ch1 == '(') || (ch1 == ')') || (ch1 == '~') || (ch1 == '&') || (ch1 == '|') || (ch1 == ',')) - OpType = OPERATOR_1CHAR; - - else if ((ch1 == ch2) && (ch1 == '<' || ch1 == '>')) - OpType = OPERATOR_2CHAR; - - return OpType; -} - - -/** - * IsBin - * - * Return true if the given char is 0 or 1 - */ - -static inline bool IsBin (const int ch) -{ - return (ch == '0') || (ch == '1'); -} - - -/** - * IsDoxygenChar - * - * Return true if the char may be part of a Doxygen keyword - */ - -static inline bool IsDoxygenChar (const int ch) -{ - return isalpha(ch) || (ch == '$') || (ch == '[') || (ch == ']') || (ch == '{') || (ch == '}'); -} - - -/** - * ColouriseA68kDoc - * - * Main function, which colourises a 68k source - */ - -static void ColouriseA68kDoc (Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) -{ - // Used to buffer a string, to be able to compare it using built-in functions - char Buffer[100]; - - - // Used to know the length of an operator - int OpType; - - - // Get references to keywords lists - WordList &cpuInstruction = *keywordlists[0]; - WordList ®isters = *keywordlists[1]; - WordList &directive = *keywordlists[2]; - WordList &extInstruction = *keywordlists[3]; - WordList &alert = *keywordlists[4]; - WordList &doxygenKeyword = *keywordlists[5]; - - - // Instanciate a context for our source - StyleContext sc(startPos, length, initStyle, styler); - - - /************************************************************ - * - * Parse the source - * - ************************************************************/ - - for ( ; sc.More(); sc.Forward()) - { - /************************************************************ - * - * A style always terminates at the end of a line, even for - * comments (no multi-lines comments) - * - ************************************************************/ - if (sc.atLineStart) { - sc.SetState(SCE_A68K_DEFAULT); - } - - - /************************************************************ - * - * If we are not in "default style", check if the style continues - * In this case, we just have to loop - * - ************************************************************/ - - if (sc.state != SCE_A68K_DEFAULT) - { - if ( ((sc.state == SCE_A68K_NUMBER_DEC) && isdigit(sc.ch)) // Decimal number - || ((sc.state == SCE_A68K_NUMBER_BIN) && IsBin(sc.ch)) // Binary number - || ((sc.state == SCE_A68K_NUMBER_HEX) && isxdigit(sc.ch)) // Hexa number - || ((sc.state == SCE_A68K_MACRO_ARG) && isdigit(sc.ch)) // Macro argument - || ((sc.state == SCE_A68K_STRING1) && (sc.ch != '\'')) // String single-quoted - || ((sc.state == SCE_A68K_STRING2) && (sc.ch != '\"')) // String double-quoted - || ((sc.state == SCE_A68K_MACRO_DECLARATION) && IsIdentifierChar(sc.ch)) // Macro declaration (or global label, we don't know at this point) - || ((sc.state == SCE_A68K_IDENTIFIER) && IsIdentifierChar(sc.ch)) // Identifier - || ((sc.state == SCE_A68K_LABEL) && IsIdentifierChar(sc.ch)) // Label (local) - || ((sc.state == SCE_A68K_COMMENT_DOXYGEN) && IsDoxygenChar(sc.ch)) // Doxygen keyword - || ((sc.state == SCE_A68K_COMMENT_SPECIAL) && isalpha(sc.ch)) // Alert - || ((sc.state == SCE_A68K_COMMENT) && !isalpha(sc.ch) && (sc.ch != '\\'))) // Normal comment - { - continue; - } - - /************************************************************ - * - * Check if current state terminates - * - ************************************************************/ - - // Strings: include terminal ' or " in the current string by skipping it - if ((sc.state == SCE_A68K_STRING1) || (sc.state == SCE_A68K_STRING2)) { - sc.Forward(); - } - - - // If a macro declaration was terminated with ':', it was a label - else if ((sc.state == SCE_A68K_MACRO_DECLARATION) && (sc.chPrev == ':')) { - sc.ChangeState(SCE_A68K_LABEL); - } - - - // If it wasn't a Doxygen keyword, change it to normal comment - else if (sc.state == SCE_A68K_COMMENT_DOXYGEN) { - sc.GetCurrent(Buffer, sizeof(Buffer)); - if (!doxygenKeyword.InList(Buffer)) { - sc.ChangeState(SCE_A68K_COMMENT); - } - sc.SetState(SCE_A68K_COMMENT); - continue; - } - - - // If it wasn't an Alert, change it to normal comment - else if (sc.state == SCE_A68K_COMMENT_SPECIAL) { - sc.GetCurrent(Buffer, sizeof(Buffer)); - if (!alert.InList(Buffer)) { - sc.ChangeState(SCE_A68K_COMMENT); - } - // Reset style to normal comment, or to Doxygen keyword if it begins with '\' - if (sc.ch == '\\') { - sc.SetState(SCE_A68K_COMMENT_DOXYGEN); - } - else { - sc.SetState(SCE_A68K_COMMENT); - } - continue; - } - - - // If we are in a comment, it's a Doxygen keyword or an Alert - else if (sc.state == SCE_A68K_COMMENT) { - if (sc.ch == '\\') { - sc.SetState(SCE_A68K_COMMENT_DOXYGEN); - } - else { - sc.SetState(SCE_A68K_COMMENT_SPECIAL); - } - continue; - } - - - // Check if we are at the end of an identifier - // In this case, colourise it if was a keyword. - else if ((sc.state == SCE_A68K_IDENTIFIER) && !IsIdentifierChar(sc.ch)) { - sc.GetCurrentLowered(Buffer, sizeof(Buffer)); // Buffer the string of the current context - if (cpuInstruction.InList(Buffer)) { // And check if it belongs to a keyword list - sc.ChangeState(SCE_A68K_CPUINSTRUCTION); - } - else if (extInstruction.InList(Buffer)) { - sc.ChangeState(SCE_A68K_EXTINSTRUCTION); - } - else if (registers.InList(Buffer)) { - sc.ChangeState(SCE_A68K_REGISTER); - } - else if (directive.InList(Buffer)) { - sc.ChangeState(SCE_A68K_DIRECTIVE); - } - } - - // All special contexts are now handled.Come back to default style - sc.SetState(SCE_A68K_DEFAULT); - } - - - /************************************************************ - * - * Check if we must enter a new state - * - ************************************************************/ - - // Something which begins at the beginning of a line, and with - // - '\' + an identifier start char, or - // - '\\@' + an identifier start char - // is a local label (second case is used for macro local labels). We set it already as a label, it can't be a macro/equ declaration - if (sc.atLineStart && (sc.ch < 0x80) && IsIdentifierStart(sc.chNext) && (sc.ch == '\\')) { - sc.SetState(SCE_A68K_LABEL); - } - - if (sc.atLineStart && (sc.ch < 0x80) && (sc.ch == '\\') && (sc.chNext == '\\')) { - sc.Forward(2); - if ((sc.ch == '@') && IsIdentifierStart(sc.chNext)) { - sc.ChangeState(SCE_A68K_LABEL); - sc.SetState(SCE_A68K_LABEL); - } - } - - // Label and macro identifiers start at the beginning of a line - // We set both as a macro id, but if it wasn't one (':' at the end), - // it will be changed as a label. - if (sc.atLineStart && (sc.ch < 0x80) && IsIdentifierStart(sc.ch)) { - sc.SetState(SCE_A68K_MACRO_DECLARATION); - } - else if ((sc.ch < 0x80) && (sc.ch == ';')) { // Default: alert in a comment. If it doesn't match - sc.SetState(SCE_A68K_COMMENT); // with an alert, it will be toggle to a normal comment - } - else if ((sc.ch < 0x80) && isdigit(sc.ch)) { // Decimal numbers haven't prefix - sc.SetState(SCE_A68K_NUMBER_DEC); - } - else if ((sc.ch < 0x80) && (sc.ch == '%')) { // Binary numbers are prefixed with '%' - sc.SetState(SCE_A68K_NUMBER_BIN); - } - else if ((sc.ch < 0x80) && (sc.ch == '$')) { // Hexadecimal numbers are prefixed with '$' - sc.SetState(SCE_A68K_NUMBER_HEX); - } - else if ((sc.ch < 0x80) && (sc.ch == '\'')) { // String (single-quoted) - sc.SetState(SCE_A68K_STRING1); - } - else if ((sc.ch < 0x80) && (sc.ch == '\"')) { // String (double-quoted) - sc.SetState(SCE_A68K_STRING2); - } - else if ((sc.ch < 0x80) && (sc.ch == '\\') && (isdigit(sc.chNext))) { // Replacement symbols in macro are prefixed with '\' - sc.SetState(SCE_A68K_MACRO_ARG); - } - else if ((sc.ch < 0x80) && IsIdentifierStart(sc.ch)) { // An identifier: constant, label, etc... - sc.SetState(SCE_A68K_IDENTIFIER); - } - else { - if (sc.ch < 0x80) { - OpType = GetOperatorType(sc.ch, sc.chNext); // Check if current char is an operator - if (OpType != NO_OPERATOR) { - sc.SetState(SCE_A68K_OPERATOR); - if (OpType == OPERATOR_2CHAR) { // Check if the operator is 2 bytes long - sc.ForwardSetState(SCE_A68K_OPERATOR); // (>> or <<) - } - } - } - } - } // End of for() - sc.Complete(); -} - - -// Names of the keyword lists - -static const char * const a68kWordListDesc[] = -{ - "CPU instructions", - "Registers", - "Directives", - "Extended instructions", - "Comment special words", - "Doxygen keywords", - 0 -}; - -LexerModule lmA68k(SCLEX_A68K, ColouriseA68kDoc, "a68k", 0, a68kWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAPDL.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAPDL.cpp deleted file mode 100644 index 447e40d58..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAPDL.cpp +++ /dev/null @@ -1,257 +0,0 @@ -// Scintilla source code edit control -/** @file LexAPDL.cxx - ** Lexer for APDL. Based on the lexer for Assembler by The Black Horus. - ** By Hadar Raz. - **/ -// Copyright 1998-2003 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80 && (isalnum(ch) || ch == '_')); -} - -static inline bool IsAnOperator(char ch) { - // '.' left out as it is used to make up numbers - if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || - ch == '(' || ch == ')' || ch == '=' || ch == '^' || - ch == '[' || ch == ']' || ch == '<' || ch == '&' || - ch == '>' || ch == ',' || ch == '|' || ch == '~' || - ch == '$' || ch == ':' || ch == '%') - return true; - return false; -} - -static void ColouriseAPDLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - - int stringStart = ' '; - - WordList &processors = *keywordlists[0]; - WordList &commands = *keywordlists[1]; - WordList &slashcommands = *keywordlists[2]; - WordList &starcommands = *keywordlists[3]; - WordList &arguments = *keywordlists[4]; - WordList &functions = *keywordlists[5]; - - // Do not leak onto next line - initStyle = SCE_APDL_DEFAULT; - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - // Determine if the current state should terminate. - if (sc.state == SCE_APDL_NUMBER) { - if (!(IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') || - ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) { - sc.SetState(SCE_APDL_DEFAULT); - } - } else if (sc.state == SCE_APDL_COMMENT) { - if (sc.atLineEnd) { - sc.SetState(SCE_APDL_DEFAULT); - } - } else if (sc.state == SCE_APDL_COMMENTBLOCK) { - if (sc.atLineEnd) { - if (sc.ch == '\r') { - sc.Forward(); - } - sc.ForwardSetState(SCE_APDL_DEFAULT); - } - } else if (sc.state == SCE_APDL_STRING) { - if (sc.atLineEnd) { - sc.SetState(SCE_APDL_DEFAULT); - } else if ((sc.ch == '\'' && stringStart == '\'') || (sc.ch == '\"' && stringStart == '\"')) { - sc.ForwardSetState(SCE_APDL_DEFAULT); - } - } else if (sc.state == SCE_APDL_WORD) { - if (!IsAWordChar(sc.ch)) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - if (processors.InList(s)) { - sc.ChangeState(SCE_APDL_PROCESSOR); - } else if (slashcommands.InList(s)) { - sc.ChangeState(SCE_APDL_SLASHCOMMAND); - } else if (starcommands.InList(s)) { - sc.ChangeState(SCE_APDL_STARCOMMAND); - } else if (commands.InList(s)) { - sc.ChangeState(SCE_APDL_COMMAND); - } else if (arguments.InList(s)) { - sc.ChangeState(SCE_APDL_ARGUMENT); - } else if (functions.InList(s)) { - sc.ChangeState(SCE_APDL_FUNCTION); - } - sc.SetState(SCE_APDL_DEFAULT); - } - } else if (sc.state == SCE_APDL_OPERATOR) { - if (!IsAnOperator(static_cast(sc.ch))) { - sc.SetState(SCE_APDL_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_APDL_DEFAULT) { - if (sc.ch == '!' && sc.chNext == '!') { - sc.SetState(SCE_APDL_COMMENTBLOCK); - } else if (sc.ch == '!') { - sc.SetState(SCE_APDL_COMMENT); - } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_APDL_NUMBER); - } else if (sc.ch == '\'' || sc.ch == '\"') { - sc.SetState(SCE_APDL_STRING); - stringStart = sc.ch; - } else if (IsAWordChar(sc.ch) || ((sc.ch == '*' || sc.ch == '/') && !isgraph(sc.chPrev))) { - sc.SetState(SCE_APDL_WORD); - } else if (IsAnOperator(static_cast(sc.ch))) { - sc.SetState(SCE_APDL_OPERATOR); - } - } - } - sc.Complete(); -} - -//------------------------------------------------------------------------------ -// 06-27-07 Sergio Lucato -// - Included code folding for Ansys APDL lexer -// - Copyied from LexBasic.cxx and modified for APDL -//------------------------------------------------------------------------------ - -/* Bits: - * 1 - whitespace - * 2 - operator - * 4 - identifier - * 8 - decimal digit - * 16 - hex digit - * 32 - bin digit - */ -static int character_classification[128] = -{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 10, 6, - 60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2, - 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, - 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0 -}; - -static bool IsSpace(int c) { - return c < 128 && (character_classification[c] & 1); -} - -static bool IsIdentifier(int c) { - return c < 128 && (character_classification[c] & 4); -} - -static int LowerCase(int c) -{ - if (c >= 'A' && c <= 'Z') - return 'a' + c - 'A'; - return c; -} - -static int CheckAPDLFoldPoint(char const *token, int &level) { - if (!strcmp(token, "*if") || - !strcmp(token, "*do") || - !strcmp(token, "*dowhile") ) { - level |= SC_FOLDLEVELHEADERFLAG; - return 1; - } - if (!strcmp(token, "*endif") || - !strcmp(token, "*enddo") ) { - return -1; - } - return 0; -} - -static void FoldAPDLDoc(Sci_PositionU startPos, Sci_Position length, int, - WordList *[], Accessor &styler) { - - Sci_Position line = styler.GetLine(startPos); - int level = styler.LevelAt(line); - int go = 0, done = 0; - Sci_Position endPos = startPos + length; - char word[256]; - int wordlen = 0; - Sci_Position i; - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - // Scan for tokens at the start of the line (they may include - // whitespace, for tokens like "End Function" - for (i = startPos; i < endPos; i++) { - int c = styler.SafeGetCharAt(i); - if (!done && !go) { - if (wordlen) { // are we scanning a token already? - word[wordlen] = static_cast(LowerCase(c)); - if (!IsIdentifier(c)) { // done with token - word[wordlen] = '\0'; - go = CheckAPDLFoldPoint(word, level); - if (!go) { - // Treat any whitespace as single blank, for - // things like "End Function". - if (IsSpace(c) && IsIdentifier(word[wordlen - 1])) { - word[wordlen] = ' '; - if (wordlen < 255) - wordlen++; - } - else // done with this line - done = 1; - } - } else if (wordlen < 255) { - wordlen++; - } - } else { // start scanning at first non-whitespace character - if (!IsSpace(c)) { - if (IsIdentifier(c)) { - word[0] = static_cast(LowerCase(c)); - wordlen = 1; - } else // done with this line - done = 1; - } - } - } - if (c == '\n') { // line end - if (!done && wordlen == 0 && foldCompact) // line was only space - level |= SC_FOLDLEVELWHITEFLAG; - if (level != styler.LevelAt(line)) - styler.SetLevel(line, level); - level += go; - line++; - // reset state - wordlen = 0; - level &= ~SC_FOLDLEVELHEADERFLAG; - level &= ~SC_FOLDLEVELWHITEFLAG; - go = 0; - done = 0; - } - } -} - -static const char * const apdlWordListDesc[] = { - "processors", - "commands", - "slashommands", - "starcommands", - "arguments", - "functions", - 0 -}; - -LexerModule lmAPDL(SCLEX_APDL, ColouriseAPDLDoc, "apdl", FoldAPDLDoc, apdlWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexASY.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexASY.cpp deleted file mode 100644 index 3ec522729..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexASY.cpp +++ /dev/null @@ -1,269 +0,0 @@ -// Scintilla source code edit control -//Author: instanton (email: soft_share126com) -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static void ColouriseAsyDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - - CharacterSet setWordStart(CharacterSet::setAlpha, "_", 0x80, true); - CharacterSet setWord(CharacterSet::setAlphaNum, "._", 0x80, true); - - int visibleChars = 0; - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - - if (sc.atLineStart) { - if (sc.state == SCE_ASY_STRING) { - sc.SetState(SCE_ASY_STRING); - } - visibleChars = 0; - } - - if (sc.ch == '\\') { - if (sc.chNext == '\n' || sc.chNext == '\r') { - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - sc.Forward(); - } -// continuationLine = true; - continue; - } - } - - // Determine if the current state should terminate. - switch (sc.state) { - case SCE_ASY_OPERATOR: - sc.SetState(SCE_ASY_DEFAULT); - break; - case SCE_ASY_NUMBER: - if (!setWord.Contains(sc.ch)) { - sc.SetState(SCE_ASY_DEFAULT); - } - break; - case SCE_ASY_IDENTIFIER: - if (!setWord.Contains(sc.ch) || (sc.ch == '.')) { - char s[1000]; - sc.GetCurrentLowered(s, sizeof(s)); - if (keywords.InList(s)) { - sc.ChangeState(SCE_ASY_WORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_ASY_WORD2); - } - sc.SetState(SCE_ASY_DEFAULT); - } - break; - case SCE_ASY_COMMENT: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_ASY_DEFAULT); - } - break; - case SCE_ASY_COMMENTLINE: - if (sc.atLineStart) { - sc.SetState(SCE_ASY_DEFAULT); - } - break; - case SCE_ASY_STRING: - if (sc.atLineEnd) { - sc.ChangeState(SCE_ASY_STRINGEOL); - } else if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\"') { - sc.ForwardSetState(SCE_ASY_DEFAULT); - } - break; - case SCE_ASY_CHARACTER: - if (sc.atLineEnd) { - sc.ChangeState(SCE_ASY_STRINGEOL); - } else if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\'') { - sc.ForwardSetState(SCE_ASY_DEFAULT); - } - break; - } - - // Determine if a new state should be entered. - if (sc.state == SCE_ASY_DEFAULT) { - if (setWordStart.Contains(sc.ch) || (sc.ch == '@')) { - sc.SetState(SCE_ASY_IDENTIFIER); - } else if (sc.Match('/', '*')) { - sc.SetState(SCE_ASY_COMMENT); - sc.Forward(); // - } else if (sc.Match('/', '/')) { - sc.SetState(SCE_ASY_COMMENTLINE); - } else if (sc.ch == '\"') { - sc.SetState(SCE_ASY_STRING); - } else if (sc.ch == '\'') { - sc.SetState(SCE_ASY_CHARACTER); - } else if (sc.ch == '#' && visibleChars == 0) { - do { - sc.Forward(); - } while ((sc.ch == ' ' || sc.ch == '\t') && sc.More()); - if (sc.atLineEnd) { - sc.SetState(SCE_ASY_DEFAULT); - } - } else if (isoperator(static_cast(sc.ch))) { - sc.SetState(SCE_ASY_OPERATOR); - } - } - - } - sc.Complete(); -} - -static bool IsAsyCommentStyle(int style) { - return style == SCE_ASY_COMMENT; -} - - -static inline bool isASYidentifier(int ch) { - return - ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) ; -} - -static int ParseASYWord(Sci_PositionU pos, Accessor &styler, char *word) -{ - int length=0; - char ch=styler.SafeGetCharAt(pos); - *word=0; - - while(isASYidentifier(ch) && length<100){ - word[length]=ch; - length++; - ch=styler.SafeGetCharAt(pos+length); - } - word[length]=0; - return length; -} - -static bool IsASYDrawingLine(Sci_Position line, Accessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - - Sci_Position startpos = pos; - char buffer[100]=""; - - while (startpos 0) - levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; - int levelMinCurrent = levelCurrent; - int levelNext = levelCurrent; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (foldComment && IsAsyCommentStyle(style)) { - if (!IsAsyCommentStyle(stylePrev) && (stylePrev != SCE_ASY_COMMENTLINEDOC)) { - levelNext++; - } else if (!IsAsyCommentStyle(styleNext) && (styleNext != SCE_ASY_COMMENTLINEDOC) && !atEOL) { - levelNext--; - } - } - if (style == SCE_ASY_OPERATOR) { - if (ch == '{') { - if (levelMinCurrent > levelNext) { - levelMinCurrent = levelNext; - } - levelNext++; - } else if (ch == '}') { - levelNext--; - } - } - - if (atEOL && IsASYDrawingLine(lineCurrent, styler)){ - if (lineCurrent==0 && IsASYDrawingLine(lineCurrent + 1, styler)) - levelNext++; - else if (lineCurrent!=0 && !IsASYDrawingLine(lineCurrent - 1, styler) - && IsASYDrawingLine(lineCurrent + 1, styler) - ) - levelNext++; - else if (lineCurrent!=0 && IsASYDrawingLine(lineCurrent - 1, styler) && - !IsASYDrawingLine(lineCurrent+1, styler)) - levelNext--; - } - - if (atEOL) { - int levelUse = levelCurrent; - if (foldAtElse) { - levelUse = levelMinCurrent; - } - int lev = levelUse | levelNext << 16; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if (levelUse < levelNext) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelCurrent = levelNext; - levelMinCurrent = levelCurrent; - visibleChars = 0; - } - if (!IsASpace(ch)) - visibleChars++; - } -} - -static const char * const asyWordLists[] = { - "Primary keywords and identifiers", - "Secondary keywords and identifiers", - 0, - }; - -LexerModule lmASY(SCLEX_ASYMPTOTE, ColouriseAsyDoc, "asy", FoldAsyDoc, asyWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAU3.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAU3.cpp deleted file mode 100644 index b4029413c..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAU3.cpp +++ /dev/null @@ -1,908 +0,0 @@ -// Scintilla source code edit control -// @file LexAU3.cxx -// Lexer for AutoIt3 http://www.hiddensoft.com/autoit3 -// by Jos van der Zande, jvdzande@yahoo.com -// -// Changes: -// March 28, 2004 - Added the standard Folding code -// April 21, 2004 - Added Preprosessor Table + Syntax Highlighting -// Fixed Number highlighting -// Changed default isoperator to IsAOperator to have a better match to AutoIt3 -// Fixed "#comments_start" -> "#comments-start" -// Fixed "#comments_end" -> "#comments-end" -// Fixed Sendkeys in Strings when not terminated with } -// Added support for Sendkey strings that have second parameter e.g. {UP 5} or {a down} -// April 26, 2004 - Fixed # pre-processor statement inside of comment block would invalidly change the color. -// Added logic for #include to treat the <> as string -// Added underscore to IsAOperator. -// May 17, 2004 - Changed the folding logic from indent to keyword folding. -// Added Folding logic for blocks of single-commentlines or commentblock. -// triggered by: fold.comment=1 -// Added Folding logic for preprocessor blocks triggered by fold.preprocessor=1 -// Added Special for #region - #endregion syntax highlight and folding. -// May 30, 2004 - Fixed issue with continuation lines on If statements. -// June 5, 2004 - Added comma to Operators for better readability. -// Added fold.compact support set with fold.compact=1 -// Changed folding inside of #cs-#ce. Default is no keyword folding inside comment blocks when fold.comment=1 -// it will now only happen when fold.comment=2. -// Sep 5, 2004 - Added logic to handle colourizing words on the last line. -// Typed Characters now show as "default" till they match any table. -// Oct 10, 2004 - Added logic to show Comments in "Special" directives. -// Nov 1, 2004 - Added better testing for Numbers supporting x and e notation. -// Nov 28, 2004 - Added logic to handle continuation lines for syntax highlighting. -// Jan 10, 2005 - Added Abbreviations Keyword used for expansion -// Mar 24, 2005 - Updated Abbreviations Keywords to fix when followed by Operator. -// Apr 18, 2005 - Updated #CE/#Comment-End logic to take a linecomment ";" into account -// - Added folding support for With...EndWith -// - Added support for a DOT in variable names -// - Fixed Underscore in CommentBlock -// May 23, 2005 - Fixed the SentKey lexing in case of a missing } -// Aug 11, 2005 - Fixed possible bug with s_save length > 100. -// Aug 23, 2005 - Added Switch/endswitch support to the folding logic. -// Sep 27, 2005 - Fixed the SentKey lexing logic in case of multiple sentkeys. -// Mar 12, 2006 - Fixed issue with <> coloring as String in stead of Operator in rare occasions. -// Apr 8, 2006 - Added support for AutoIt3 Standard UDF library (SCE_AU3_UDF) -// Mar 9, 2007 - Fixed bug with + following a String getting the wrong Color. -// Jun 20, 2007 - Fixed Commentblock issue when LF's are used as EOL. -// Jul 26, 2007 - Fixed #endregion undetected bug. -// -// Copyright for Scintilla: 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. -// Scintilla source code edit control - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsTypeCharacter(const int ch) -{ - return ch == '$'; -} -static inline bool IsAWordChar(const int ch) -{ - return (ch < 0x80) && (isalnum(ch) || ch == '_'); -} - -static inline bool IsAWordStart(const int ch) -{ - return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '@' || ch == '#' || ch == '$' || ch == '.'); -} - -static inline bool IsAOperator(char ch) { - if (IsASCII(ch) && isalnum(ch)) - return false; - if (ch == '+' || ch == '-' || ch == '*' || ch == '/' || - ch == '&' || ch == '^' || ch == '=' || ch == '<' || ch == '>' || - ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == ',' ) - return true; - return false; -} - -/////////////////////////////////////////////////////////////////////////////// -// GetSendKey() filters the portion before and after a/multiple space(s) -// and return the first portion to be looked-up in the table -// also check if the second portion is valid... (up,down.on.off,toggle or a number) -/////////////////////////////////////////////////////////////////////////////// - -static int GetSendKey(const char *szLine, char *szKey) -{ - int nFlag = 0; - int nStartFound = 0; - int nKeyPos = 0; - int nSpecPos= 0; - int nSpecNum= 1; - int nPos = 0; - char cTemp; - char szSpecial[100]; - - // split the portion of the sendkey in the part before and after the spaces - while ( ( (cTemp = szLine[nPos]) != '\0')) - { - // skip leading Ctrl/Shift/Alt state - if (cTemp == '{') { - nStartFound = 1; - } - // - if (nStartFound == 1) { - if ((cTemp == ' ') && (nFlag == 0) ) // get the stuff till first space - { - nFlag = 1; - // Add } to the end of the first bit for table lookup later. - szKey[nKeyPos++] = '}'; - } - else if (cTemp == ' ') - { - // skip other spaces - } - else if (nFlag == 0) - { - // save first portion into var till space or } is hit - szKey[nKeyPos++] = cTemp; - } - else if ((nFlag == 1) && (cTemp != '}')) - { - // Save second portion into var... - szSpecial[nSpecPos++] = cTemp; - // check if Second portion is all numbers for repeat fuction - if (isdigit(cTemp) == false) {nSpecNum = 0;} - } - } - nPos++; // skip to next char - - } // End While - - - // Check if the second portion is either a number or one of these keywords - szKey[nKeyPos] = '\0'; - szSpecial[nSpecPos] = '\0'; - if (strcmp(szSpecial,"down")== 0 || strcmp(szSpecial,"up")== 0 || - strcmp(szSpecial,"on")== 0 || strcmp(szSpecial,"off")== 0 || - strcmp(szSpecial,"toggle")== 0 || nSpecNum == 1 ) - { - nFlag = 0; - } - else - { - nFlag = 1; - } - return nFlag; // 1 is bad, 0 is good - -} // GetSendKey() - -// -// Routine to check the last "none comment" character on a line to see if its a continuation -// -static bool IsContinuationLine(Sci_PositionU szLine, Accessor &styler) -{ - Sci_Position nsPos = styler.LineStart(szLine); - Sci_Position nePos = styler.LineStart(szLine+1) - 2; - //int stylech = styler.StyleAt(nsPos); - while (nsPos < nePos) - { - //stylech = styler.StyleAt(nePos); - int stylech = styler.StyleAt(nsPos); - if (!(stylech == SCE_AU3_COMMENT)) { - char ch = styler.SafeGetCharAt(nePos); - if (!isspacechar(ch)) { - if (ch == '_') - return true; - else - return false; - } - } - nePos--; // skip to next char - } // End While - return false; -} // IsContinuationLine() - -// -// syntax highlighting logic -static void ColouriseAU3Doc(Sci_PositionU startPos, - Sci_Position length, int initStyle, - WordList *keywordlists[], - Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; - WordList &keywords4 = *keywordlists[3]; - WordList &keywords5 = *keywordlists[4]; - WordList &keywords6 = *keywordlists[5]; - WordList &keywords7 = *keywordlists[6]; - WordList &keywords8 = *keywordlists[7]; - // find the first previous line without continuation character at the end - Sci_Position lineCurrent = styler.GetLine(startPos); - Sci_Position s_startPos = startPos; - // When not inside a Block comment: find First line without _ - if (!(initStyle==SCE_AU3_COMMENTBLOCK)) { - while ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) || - (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) { - lineCurrent--; - startPos = styler.LineStart(lineCurrent); // get start position - initStyle = 0; // reset the start style to 0 - } - } - // Set the new length to include it from the start and set the start position - length = length + s_startPos - startPos; // correct the total length to process - styler.StartAt(startPos); - - StyleContext sc(startPos, length, initStyle, styler); - char si; // string indicator "=1 '=2 - char ni; // Numeric indicator error=9 normal=0 normal+dec=1 hex=2 Enot=3 - char ci; // comment indicator 0=not linecomment(;) - char s_save[100] = ""; - si=0; - ni=0; - ci=0; - //$$$ - for (; sc.More(); sc.Forward()) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - // ********************************************** - // save the total current word for eof processing - if (IsAWordChar(sc.ch) || sc.ch == '}') - { - strcpy(s_save,s); - int tp = static_cast(strlen(s_save)); - if (tp < 99) { - s_save[tp] = static_cast(tolower(sc.ch)); - s_save[tp+1] = '\0'; - } - } - // ********************************************** - // - switch (sc.state) - { - case SCE_AU3_COMMENTBLOCK: - { - //Reset at line end - if (sc.atLineEnd) { - ci=0; - if (strcmp(s, "#ce")== 0 || strcmp(s, "#comments-end")== 0) { - if (sc.atLineEnd) - sc.SetState(SCE_AU3_DEFAULT); - else - sc.SetState(SCE_AU3_COMMENTBLOCK); - } - break; - } - //skip rest of line when a ; is encountered - if (sc.chPrev == ';') { - ci=2; - sc.SetState(SCE_AU3_COMMENTBLOCK); - } - // skip rest of the line - if (ci==2) - break; - // check when first character is detected on the line - if (ci==0) { - if (IsAWordStart(static_cast(sc.ch)) || IsAOperator(static_cast(sc.ch))) { - ci=1; - sc.SetState(SCE_AU3_COMMENTBLOCK); - } - break; - } - if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && strcmp(s, "#comments") == 0))) { - if ((strcmp(s, "#ce")== 0 || strcmp(s, "#comments-end")== 0)) - sc.SetState(SCE_AU3_COMMENT); // set to comment line for the rest of the line - else - ci=2; // line doesn't begin with #CE so skip the rest of the line - } - break; - } - case SCE_AU3_COMMENT: - { - if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);} - break; - } - case SCE_AU3_OPERATOR: - { - // check if its a COMobject - if (sc.chPrev == '.' && IsAWordChar(sc.ch)) { - sc.SetState(SCE_AU3_COMOBJ); - } - else { - sc.SetState(SCE_AU3_DEFAULT); - } - break; - } - case SCE_AU3_SPECIAL: - { - if (sc.ch == ';') {sc.SetState(SCE_AU3_COMMENT);} - if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);} - break; - } - case SCE_AU3_KEYWORD: - { - if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && (strcmp(s, "#comments") == 0 || strcmp(s, "#include") == 0)))) - { - if (!IsTypeCharacter(sc.ch)) - { - if (strcmp(s, "#cs")== 0 || strcmp(s, "#comments-start")== 0 ) - { - sc.ChangeState(SCE_AU3_COMMENTBLOCK); - sc.SetState(SCE_AU3_COMMENTBLOCK); - break; - } - else if (keywords.InList(s)) { - sc.ChangeState(SCE_AU3_KEYWORD); - sc.SetState(SCE_AU3_DEFAULT); - } - else if (keywords2.InList(s)) { - sc.ChangeState(SCE_AU3_FUNCTION); - sc.SetState(SCE_AU3_DEFAULT); - } - else if (keywords3.InList(s)) { - sc.ChangeState(SCE_AU3_MACRO); - sc.SetState(SCE_AU3_DEFAULT); - } - else if (keywords5.InList(s)) { - sc.ChangeState(SCE_AU3_PREPROCESSOR); - sc.SetState(SCE_AU3_DEFAULT); - if (strcmp(s, "#include")== 0) - { - si = 3; // use to determine string start for #inlude <> - } - } - else if (keywords6.InList(s)) { - sc.ChangeState(SCE_AU3_SPECIAL); - sc.SetState(SCE_AU3_SPECIAL); - } - else if ((keywords7.InList(s)) && (!IsAOperator(static_cast(sc.ch)))) { - sc.ChangeState(SCE_AU3_EXPAND); - sc.SetState(SCE_AU3_DEFAULT); - } - else if (keywords8.InList(s)) { - sc.ChangeState(SCE_AU3_UDF); - sc.SetState(SCE_AU3_DEFAULT); - } - else if (strcmp(s, "_") == 0) { - sc.ChangeState(SCE_AU3_OPERATOR); - sc.SetState(SCE_AU3_DEFAULT); - } - else if (!IsAWordChar(sc.ch)) { - sc.ChangeState(SCE_AU3_DEFAULT); - sc.SetState(SCE_AU3_DEFAULT); - } - } - } - if (sc.atLineEnd) { - sc.SetState(SCE_AU3_DEFAULT);} - break; - } - case SCE_AU3_NUMBER: - { - // Numeric indicator error=9 normal=0 normal+dec=1 hex=2 E-not=3 - // - // test for Hex notation - if (strcmp(s, "0") == 0 && (sc.ch == 'x' || sc.ch == 'X') && ni == 0) - { - ni = 2; - break; - } - // test for E notation - if (IsADigit(sc.chPrev) && (sc.ch == 'e' || sc.ch == 'E') && ni <= 1) - { - ni = 3; - break; - } - // Allow Hex characters inside hex numeric strings - if ((ni == 2) && - (sc.ch == 'a' || sc.ch == 'b' || sc.ch == 'c' || sc.ch == 'd' || sc.ch == 'e' || sc.ch == 'f' || - sc.ch == 'A' || sc.ch == 'B' || sc.ch == 'C' || sc.ch == 'D' || sc.ch == 'E' || sc.ch == 'F' )) - { - break; - } - // test for 1 dec point only - if (sc.ch == '.') - { - if (ni==0) - { - ni=1; - } - else - { - ni=9; - } - break; - } - // end of numeric string ? - if (!(IsADigit(sc.ch))) - { - if (ni==9) - { - sc.ChangeState(SCE_AU3_DEFAULT); - } - sc.SetState(SCE_AU3_DEFAULT); - } - break; - } - case SCE_AU3_VARIABLE: - { - // Check if its a COMObject - if (sc.ch == '.' && !IsADigit(sc.chNext)) { - sc.SetState(SCE_AU3_OPERATOR); - } - else if (!IsAWordChar(sc.ch)) { - sc.SetState(SCE_AU3_DEFAULT); - } - break; - } - case SCE_AU3_COMOBJ: - { - if (!(IsAWordChar(sc.ch))) { - sc.SetState(SCE_AU3_DEFAULT); - } - break; - } - case SCE_AU3_STRING: - { - // check for " to end a double qouted string or - // check for ' to end a single qouted string - if ((si == 1 && sc.ch == '\"') || (si == 2 && sc.ch == '\'') || (si == 3 && sc.ch == '>')) - { - sc.ForwardSetState(SCE_AU3_DEFAULT); - si=0; - break; - } - if (sc.atLineEnd) - { - si=0; - // at line end and not found a continuation char then reset to default - Sci_Position lineCurrent = styler.GetLine(sc.currentPos); - if (!IsContinuationLine(lineCurrent,styler)) - { - sc.SetState(SCE_AU3_DEFAULT); - break; - } - } - // find Sendkeys in a STRING - if (sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' ) { - sc.SetState(SCE_AU3_SENT);} - break; - } - - case SCE_AU3_SENT: - { - // Send key string ended - if (sc.chPrev == '}' && sc.ch != '}') - { - // set color to SENDKEY when valid sendkey .. else set back to regular string - char sk[100]; - // split {111 222} and return {111} and check if 222 is valid. - // if return code = 1 then invalid 222 so must be string - if (GetSendKey(s,sk)) - { - sc.ChangeState(SCE_AU3_STRING); - } - // if single char between {?} then its ok as sendkey for a single character - else if (strlen(sk) == 3) - { - sc.ChangeState(SCE_AU3_SENT); - } - // if sendkey {111} is in table then ok as sendkey - else if (keywords4.InList(sk)) - { - sc.ChangeState(SCE_AU3_SENT); - } - else - { - sc.ChangeState(SCE_AU3_STRING); - } - sc.SetState(SCE_AU3_STRING); - } - else - { - // check if the start is a valid SendKey start - Sci_Position nPos = 0; - int nState = 1; - char cTemp; - while (!(nState == 2) && ((cTemp = s[nPos]) != '\0')) - { - if (cTemp == '{' && nState == 1) - { - nState = 2; - } - if (nState == 1 && !(cTemp == '+' || cTemp == '!' || cTemp == '^' || cTemp == '#' )) - { - nState = 0; - } - nPos++; - } - //Verify characters infront of { ... if not assume regular string - if (nState == 1 && (!(sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' ))) { - sc.ChangeState(SCE_AU3_STRING); - sc.SetState(SCE_AU3_STRING); - } - // If invalid character found then assume its a regular string - if (nState == 0) { - sc.ChangeState(SCE_AU3_STRING); - sc.SetState(SCE_AU3_STRING); - } - } - // check if next portion is again a sendkey - if (sc.atLineEnd) - { - sc.ChangeState(SCE_AU3_STRING); - sc.SetState(SCE_AU3_DEFAULT); - si = 0; // reset string indicator - } - //* check in next characters following a sentkey are again a sent key - // Need this test incase of 2 sentkeys like {F1}{ENTER} but not detect {{} - if (sc.state == SCE_AU3_STRING && (sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' )) { - sc.SetState(SCE_AU3_SENT);} - // check to see if the string ended... - // Sendkey string isn't complete but the string ended.... - if ((si == 1 && sc.ch == '\"') || (si == 2 && sc.ch == '\'')) - { - sc.ChangeState(SCE_AU3_STRING); - sc.ForwardSetState(SCE_AU3_DEFAULT); - } - break; - } - } //switch (sc.state) - - // Determine if a new state should be entered: - - if (sc.state == SCE_AU3_DEFAULT) - { - if (sc.ch == ';') {sc.SetState(SCE_AU3_COMMENT);} - else if (sc.ch == '#') {sc.SetState(SCE_AU3_KEYWORD);} - else if (sc.ch == '$') {sc.SetState(SCE_AU3_VARIABLE);} - else if (sc.ch == '.' && !IsADigit(sc.chNext)) {sc.SetState(SCE_AU3_OPERATOR);} - else if (sc.ch == '@') {sc.SetState(SCE_AU3_KEYWORD);} - //else if (sc.ch == '_') {sc.SetState(SCE_AU3_KEYWORD);} - else if (sc.ch == '<' && si==3) {sc.SetState(SCE_AU3_STRING);} // string after #include - else if (sc.ch == '\"') { - sc.SetState(SCE_AU3_STRING); - si = 1; } - else if (sc.ch == '\'') { - sc.SetState(SCE_AU3_STRING); - si = 2; } - else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) - { - sc.SetState(SCE_AU3_NUMBER); - ni = 0; - } - else if (IsAWordStart(sc.ch)) {sc.SetState(SCE_AU3_KEYWORD);} - else if (IsAOperator(static_cast(sc.ch))) {sc.SetState(SCE_AU3_OPERATOR);} - else if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);} - } - } //for (; sc.More(); sc.Forward()) - - //************************************* - // Colourize the last word correctly - //************************************* - if (sc.state == SCE_AU3_KEYWORD) - { - if (strcmp(s_save, "#cs")== 0 || strcmp(s_save, "#comments-start")== 0 ) - { - sc.ChangeState(SCE_AU3_COMMENTBLOCK); - sc.SetState(SCE_AU3_COMMENTBLOCK); - } - else if (keywords.InList(s_save)) { - sc.ChangeState(SCE_AU3_KEYWORD); - sc.SetState(SCE_AU3_KEYWORD); - } - else if (keywords2.InList(s_save)) { - sc.ChangeState(SCE_AU3_FUNCTION); - sc.SetState(SCE_AU3_FUNCTION); - } - else if (keywords3.InList(s_save)) { - sc.ChangeState(SCE_AU3_MACRO); - sc.SetState(SCE_AU3_MACRO); - } - else if (keywords5.InList(s_save)) { - sc.ChangeState(SCE_AU3_PREPROCESSOR); - sc.SetState(SCE_AU3_PREPROCESSOR); - } - else if (keywords6.InList(s_save)) { - sc.ChangeState(SCE_AU3_SPECIAL); - sc.SetState(SCE_AU3_SPECIAL); - } - else if (keywords7.InList(s_save) && sc.atLineEnd) { - sc.ChangeState(SCE_AU3_EXPAND); - sc.SetState(SCE_AU3_EXPAND); - } - else if (keywords8.InList(s_save)) { - sc.ChangeState(SCE_AU3_UDF); - sc.SetState(SCE_AU3_UDF); - } - else { - sc.ChangeState(SCE_AU3_DEFAULT); - sc.SetState(SCE_AU3_DEFAULT); - } - } - if (sc.state == SCE_AU3_SENT) - { - // Send key string ended - if (sc.chPrev == '}' && sc.ch != '}') - { - // set color to SENDKEY when valid sendkey .. else set back to regular string - char sk[100]; - // split {111 222} and return {111} and check if 222 is valid. - // if return code = 1 then invalid 222 so must be string - if (GetSendKey(s_save,sk)) - { - sc.ChangeState(SCE_AU3_STRING); - } - // if single char between {?} then its ok as sendkey for a single character - else if (strlen(sk) == 3) - { - sc.ChangeState(SCE_AU3_SENT); - } - // if sendkey {111} is in table then ok as sendkey - else if (keywords4.InList(sk)) - { - sc.ChangeState(SCE_AU3_SENT); - } - else - { - sc.ChangeState(SCE_AU3_STRING); - } - sc.SetState(SCE_AU3_STRING); - } - // check if next portion is again a sendkey - if (sc.atLineEnd) - { - sc.ChangeState(SCE_AU3_STRING); - sc.SetState(SCE_AU3_DEFAULT); - } - } - //************************************* - sc.Complete(); -} - -// -static bool IsStreamCommentStyle(int style) { - return style == SCE_AU3_COMMENT || style == SCE_AU3_COMMENTBLOCK; -} - -// -// Routine to find first none space on the current line and return its Style -// needed for comment lines not starting on pos 1 -static int GetStyleFirstWord(Sci_PositionU szLine, Accessor &styler) -{ - Sci_Position nsPos = styler.LineStart(szLine); - Sci_Position nePos = styler.LineStart(szLine+1) - 1; - while (isspacechar(styler.SafeGetCharAt(nsPos)) && nsPos < nePos) - { - nsPos++; // skip to next char - - } // End While - return styler.StyleAt(nsPos); - -} // GetStyleFirstWord() - - -// -static void FoldAU3Doc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) -{ - Sci_Position endPos = startPos + length; - // get settings from the config files for folding comments and preprocessor lines - bool foldComment = styler.GetPropertyInt("fold.comment") != 0; - bool foldInComment = styler.GetPropertyInt("fold.comment") == 2; - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - bool foldpreprocessor = styler.GetPropertyInt("fold.preprocessor") != 0; - // Backtrack to previous line in case need to fix its fold status - Sci_Position lineCurrent = styler.GetLine(startPos); - if (startPos > 0) { - if (lineCurrent > 0) { - lineCurrent--; - startPos = styler.LineStart(lineCurrent); - } - } - // vars for style of previous/current/next lines - int style = GetStyleFirstWord(lineCurrent,styler); - int stylePrev = 0; - // find the first previous line without continuation character at the end - while ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) || - (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) { - lineCurrent--; - startPos = styler.LineStart(lineCurrent); - } - if (lineCurrent > 0) { - stylePrev = GetStyleFirstWord(lineCurrent-1,styler); - } - // vars for getting first word to check for keywords - bool FirstWordStart = false; - bool FirstWordEnd = false; - char szKeyword[11]=""; - int szKeywordlen = 0; - char szThen[5]=""; - int szThenlen = 0; - bool ThenFoundLast = false; - // var for indentlevel - int levelCurrent = SC_FOLDLEVELBASE; - if (lineCurrent > 0) - levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; - int levelNext = levelCurrent; - // - int visibleChars = 0; - char chNext = styler.SafeGetCharAt(startPos); - char chPrev = ' '; - // - for (Sci_Position i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - if (IsAWordChar(ch)) { - visibleChars++; - } - // get the syle for the current character neede to check in comment - int stylech = styler.StyleAt(i); - // get first word for the line for indent check max 9 characters - if (FirstWordStart && (!(FirstWordEnd))) { - if (!IsAWordChar(ch)) { - FirstWordEnd = true; - szKeyword[szKeywordlen] = '\0'; - } - else { - if (szKeywordlen < 10) { - szKeyword[szKeywordlen++] = static_cast(tolower(ch)); - } - } - } - // start the capture of the first word - if (!(FirstWordStart)) { - if (IsAWordChar(ch) || IsAWordStart(ch) || ch == ';') { - FirstWordStart = true; - szKeyword[szKeywordlen++] = static_cast(tolower(ch)); - } - } - // only process this logic when not in comment section - if (!(stylech == SCE_AU3_COMMENT)) { - if (ThenFoundLast) { - if (IsAWordChar(ch)) { - ThenFoundLast = false; - } - } - // find out if the word "then" is the last on a "if" line - if (FirstWordEnd && strcmp(szKeyword,"if") == 0) { - if (szThenlen == 4) { - szThen[0] = szThen[1]; - szThen[1] = szThen[2]; - szThen[2] = szThen[3]; - szThen[3] = static_cast(tolower(ch)); - if (strcmp(szThen,"then") == 0 ) { - ThenFoundLast = true; - } - } - else { - szThen[szThenlen++] = static_cast(tolower(ch)); - if (szThenlen == 5) { - szThen[4] = '\0'; - } - } - } - } - // End of Line found so process the information - if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == endPos)) { - // ************************** - // Folding logic for Keywords - // ************************** - // if a keyword is found on the current line and the line doesn't end with _ (continuation) - // and we are not inside a commentblock. - if (szKeywordlen > 0 && (!(chPrev == '_')) && - ((!(IsStreamCommentStyle(style)) || foldInComment)) ) { - szKeyword[szKeywordlen] = '\0'; - // only fold "if" last keyword is "then" (else its a one line if) - if (strcmp(szKeyword,"if") == 0 && ThenFoundLast) { - levelNext++; - } - // create new fold for these words - if (strcmp(szKeyword,"do") == 0 || strcmp(szKeyword,"for") == 0 || - strcmp(szKeyword,"func") == 0 || strcmp(szKeyword,"while") == 0|| - strcmp(szKeyword,"with") == 0 || strcmp(szKeyword,"#region") == 0 ) { - levelNext++; - } - // create double Fold for select&switch because Case will subtract one of the current level - if (strcmp(szKeyword,"select") == 0 || strcmp(szKeyword,"switch") == 0) { - levelNext++; - levelNext++; - } - // end the fold for these words before the current line - if (strcmp(szKeyword,"endfunc") == 0 || strcmp(szKeyword,"endif") == 0 || - strcmp(szKeyword,"next") == 0 || strcmp(szKeyword,"until") == 0 || - strcmp(szKeyword,"endwith") == 0 ||strcmp(szKeyword,"wend") == 0){ - levelNext--; - levelCurrent--; - } - // end the fold for these words before the current line and Start new fold - if (strcmp(szKeyword,"case") == 0 || strcmp(szKeyword,"else") == 0 || - strcmp(szKeyword,"elseif") == 0 ) { - levelCurrent--; - } - // end the double fold for this word before the current line - if (strcmp(szKeyword,"endselect") == 0 || strcmp(szKeyword,"endswitch") == 0 ) { - levelNext--; - levelNext--; - levelCurrent--; - levelCurrent--; - } - // end the fold for these words on the current line - if (strcmp(szKeyword,"#endregion") == 0 ) { - levelNext--; - } - } - // Preprocessor and Comment folding - int styleNext = GetStyleFirstWord(lineCurrent + 1,styler); - // ************************************* - // Folding logic for preprocessor blocks - // ************************************* - // process preprosessor line - if (foldpreprocessor && style == SCE_AU3_PREPROCESSOR) { - if (!(stylePrev == SCE_AU3_PREPROCESSOR) && (styleNext == SCE_AU3_PREPROCESSOR)) { - levelNext++; - } - // fold till the last line for normal comment lines - else if (stylePrev == SCE_AU3_PREPROCESSOR && !(styleNext == SCE_AU3_PREPROCESSOR)) { - levelNext--; - } - } - // ********************************* - // Folding logic for Comment blocks - // ********************************* - if (foldComment && IsStreamCommentStyle(style)) { - // Start of a comment block - if (!(stylePrev==style) && IsStreamCommentStyle(styleNext) && styleNext==style) { - levelNext++; - } - // fold till the last line for normal comment lines - else if (IsStreamCommentStyle(stylePrev) - && !(styleNext == SCE_AU3_COMMENT) - && stylePrev == SCE_AU3_COMMENT - && style == SCE_AU3_COMMENT) { - levelNext--; - } - // fold till the one but last line for Blockcomment lines - else if (IsStreamCommentStyle(stylePrev) - && !(styleNext == SCE_AU3_COMMENTBLOCK) - && style == SCE_AU3_COMMENTBLOCK) { - levelNext--; - levelCurrent--; - } - } - int levelUse = levelCurrent; - int lev = levelUse | levelNext << 16; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if (levelUse < levelNext) { - lev |= SC_FOLDLEVELHEADERFLAG; - } - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - // reset values for the next line - lineCurrent++; - stylePrev = style; - style = styleNext; - levelCurrent = levelNext; - visibleChars = 0; - // if the last character is an Underscore then don't reset since the line continues on the next line. - if (!(chPrev == '_')) { - szKeywordlen = 0; - szThenlen = 0; - FirstWordStart = false; - FirstWordEnd = false; - ThenFoundLast = false; - } - } - // save the last processed character - if (!isspacechar(ch)) { - chPrev = ch; - visibleChars++; - } - } -} - - -// - -static const char * const AU3WordLists[] = { - "#autoit keywords", - "#autoit functions", - "#autoit macros", - "#autoit Sent keys", - "#autoit Pre-processors", - "#autoit Special", - "#autoit Expand", - "#autoit UDF", - 0 -}; -LexerModule lmAU3(SCLEX_AU3, ColouriseAU3Doc, "au3", FoldAU3Doc , AU3WordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAVE.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAVE.cpp deleted file mode 100644 index b976734ae..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAVE.cpp +++ /dev/null @@ -1,229 +0,0 @@ -// SciTE - Scintilla based Text Editor -/** @file LexAVE.cxx - ** Lexer for Avenue. - ** - ** Written by Alexey Yutkin . - **/ -// Copyright 1998-2002 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_'); -} -static inline bool IsEnumChar(const int ch) { - return (ch < 0x80) && (isalnum(ch)|| ch == '_'); -} -static inline bool IsANumberChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '.' ); -} - -inline bool IsAWordStart(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_'); -} - -inline bool isAveOperator(char ch) { - if (IsASCII(ch) && isalnum(ch)) - return false; - // '.' left out as it is used to make up numbers - if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || - ch == '(' || ch == ')' || ch == '=' || - ch == '{' || ch == '}' || - ch == '[' || ch == ']' || ch == ';' || - ch == '<' || ch == '>' || ch == ',' || - ch == '.' ) - return true; - return false; -} - -static void ColouriseAveDoc( - Sci_PositionU startPos, - Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; - WordList &keywords4 = *keywordlists[3]; - WordList &keywords5 = *keywordlists[4]; - WordList &keywords6 = *keywordlists[5]; - - // Do not leak onto next line - if (initStyle == SCE_AVE_STRINGEOL) { - initStyle = SCE_AVE_DEFAULT; - } - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - if (sc.atLineEnd) { - // Update the line state, so it can be seen by next line - Sci_Position currentLine = styler.GetLine(sc.currentPos); - styler.SetLineState(currentLine, 0); - } - if (sc.atLineStart && (sc.state == SCE_AVE_STRING)) { - // Prevent SCE_AVE_STRINGEOL from leaking back to previous line - sc.SetState(SCE_AVE_STRING); - } - - - // Determine if the current state should terminate. - if (sc.state == SCE_AVE_OPERATOR) { - sc.SetState(SCE_AVE_DEFAULT); - } else if (sc.state == SCE_AVE_NUMBER) { - if (!IsANumberChar(sc.ch)) { - sc.SetState(SCE_AVE_DEFAULT); - } - } else if (sc.state == SCE_AVE_ENUM) { - if (!IsEnumChar(sc.ch)) { - sc.SetState(SCE_AVE_DEFAULT); - } - } else if (sc.state == SCE_AVE_IDENTIFIER) { - if (!IsAWordChar(sc.ch) || (sc.ch == '.')) { - char s[100]; - //sc.GetCurrent(s, sizeof(s)); - sc.GetCurrentLowered(s, sizeof(s)); - if (keywords.InList(s)) { - sc.ChangeState(SCE_AVE_WORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_AVE_WORD2); - } else if (keywords3.InList(s)) { - sc.ChangeState(SCE_AVE_WORD3); - } else if (keywords4.InList(s)) { - sc.ChangeState(SCE_AVE_WORD4); - } else if (keywords5.InList(s)) { - sc.ChangeState(SCE_AVE_WORD5); - } else if (keywords6.InList(s)) { - sc.ChangeState(SCE_AVE_WORD6); - } - sc.SetState(SCE_AVE_DEFAULT); - } - } else if (sc.state == SCE_AVE_COMMENT) { - if (sc.atLineEnd) { - sc.SetState(SCE_AVE_DEFAULT); - } - } else if (sc.state == SCE_AVE_STRING) { - if (sc.ch == '\"') { - sc.ForwardSetState(SCE_AVE_DEFAULT); - } else if (sc.atLineEnd) { - sc.ChangeState(SCE_AVE_STRINGEOL); - sc.ForwardSetState(SCE_AVE_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_AVE_DEFAULT) { - if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_AVE_NUMBER); - } else if (IsAWordStart(sc.ch)) { - sc.SetState(SCE_AVE_IDENTIFIER); - } else if (sc.Match('\"')) { - sc.SetState(SCE_AVE_STRING); - } else if (sc.Match('\'')) { - sc.SetState(SCE_AVE_COMMENT); - sc.Forward(); - } else if (isAveOperator(static_cast(sc.ch))) { - sc.SetState(SCE_AVE_OPERATOR); - } else if (sc.Match('#')) { - sc.SetState(SCE_AVE_ENUM); - sc.Forward(); - } - } - } - sc.Complete(); -} - -static void FoldAveDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], - Accessor &styler) { - Sci_PositionU lengthDoc = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = static_cast(tolower(styler[startPos])); - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - int styleNext = styler.StyleAt(startPos); - char s[10] = ""; - - for (Sci_PositionU i = startPos; i < lengthDoc; i++) { - char ch = static_cast(tolower(chNext)); - chNext = static_cast(tolower(styler.SafeGetCharAt(i + 1))); - int style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (style == SCE_AVE_WORD) { - if (ch == 't' || ch == 'f' || ch == 'w' || ch == 'e') { - for (unsigned int j = 0; j < 6; j++) { - if (!iswordchar(styler[i + j])) { - break; - } - s[j] = static_cast(tolower(styler[i + j])); - s[j + 1] = '\0'; - } - - if ((strcmp(s, "then") == 0) || (strcmp(s, "for") == 0) || (strcmp(s, "while") == 0)) { - levelCurrent++; - } - if ((strcmp(s, "end") == 0) || (strcmp(s, "elseif") == 0)) { - // Normally "elseif" and "then" will be on the same line and will cancel - // each other out. // As implemented, this does not support fold.at.else. - levelCurrent--; - } - } - } else if (style == SCE_AVE_OPERATOR) { - if (ch == '{' || ch == '(') { - levelCurrent++; - } else if (ch == '}' || ch == ')') { - levelCurrent--; - } - } - - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0 && foldCompact) { - lev |= SC_FOLDLEVELWHITEFLAG; - } - if ((levelCurrent > levelPrev) && (visibleChars > 0)) { - lev |= SC_FOLDLEVELHEADERFLAG; - } - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - if (!isspacechar(ch)) { - visibleChars++; - } - } - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -LexerModule lmAVE(SCLEX_AVE, ColouriseAveDoc, "ave", FoldAveDoc); - diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAVS.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAVS.cpp deleted file mode 100644 index df5223f8d..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAVS.cpp +++ /dev/null @@ -1,291 +0,0 @@ -// Scintilla source code edit control -/** @file LexAVS.cxx - ** Lexer for AviSynth. - **/ -// Copyright 2012 by Bruno Barbieri -// Heavily based on LexPOV by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_'); -} - -static inline bool IsAWordStart(int ch) { - return isalpha(ch) || (ch != ' ' && ch != '\n' && ch != '(' && ch != '.' && ch != ','); -} - -static inline bool IsANumberChar(int ch) { - // Not exactly following number definition (several dots are seen as OK, etc.) - // but probably enough in most cases. - return (ch < 0x80) && - (isdigit(ch) || ch == '.' || ch == '-' || ch == '+'); -} - -static void ColouriseAvsDoc( - Sci_PositionU startPos, - Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &filters = *keywordlists[1]; - WordList &plugins = *keywordlists[2]; - WordList &functions = *keywordlists[3]; - WordList &clipProperties = *keywordlists[4]; - WordList &userDefined = *keywordlists[5]; - - Sci_Position currentLine = styler.GetLine(startPos); - // Initialize the block comment nesting level, if we are inside such a comment. - int blockCommentLevel = 0; - if (initStyle == SCE_AVS_COMMENTBLOCK || initStyle == SCE_AVS_COMMENTBLOCKN) { - blockCommentLevel = styler.GetLineState(currentLine - 1); - } - - // Do not leak onto next line - if (initStyle == SCE_AVS_COMMENTLINE) { - initStyle = SCE_AVS_DEFAULT; - } - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - if (sc.atLineEnd) { - // Update the line state, so it can be seen by next line - currentLine = styler.GetLine(sc.currentPos); - if (sc.state == SCE_AVS_COMMENTBLOCK || sc.state == SCE_AVS_COMMENTBLOCKN) { - // Inside a block comment, we set the line state - styler.SetLineState(currentLine, blockCommentLevel); - } else { - // Reset the line state - styler.SetLineState(currentLine, 0); - } - } - - // Determine if the current state should terminate. - if (sc.state == SCE_AVS_OPERATOR) { - sc.SetState(SCE_AVS_DEFAULT); - } else if (sc.state == SCE_AVS_NUMBER) { - // We stop the number definition on non-numerical non-dot non-sign char - if (!IsANumberChar(sc.ch)) { - sc.SetState(SCE_AVS_DEFAULT); - } - } else if (sc.state == SCE_AVS_IDENTIFIER) { - if (!IsAWordChar(sc.ch)) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - - if (keywords.InList(s)) { - sc.ChangeState(SCE_AVS_KEYWORD); - } else if (filters.InList(s)) { - sc.ChangeState(SCE_AVS_FILTER); - } else if (plugins.InList(s)) { - sc.ChangeState(SCE_AVS_PLUGIN); - } else if (functions.InList(s)) { - sc.ChangeState(SCE_AVS_FUNCTION); - } else if (clipProperties.InList(s)) { - sc.ChangeState(SCE_AVS_CLIPPROP); - } else if (userDefined.InList(s)) { - sc.ChangeState(SCE_AVS_USERDFN); - } - sc.SetState(SCE_AVS_DEFAULT); - } - } else if (sc.state == SCE_AVS_COMMENTBLOCK) { - if (sc.Match('/', '*')) { - blockCommentLevel++; - sc.Forward(); - } else if (sc.Match('*', '/') && blockCommentLevel > 0) { - blockCommentLevel--; - sc.Forward(); - if (blockCommentLevel == 0) { - sc.ForwardSetState(SCE_AVS_DEFAULT); - } - } - } else if (sc.state == SCE_AVS_COMMENTBLOCKN) { - if (sc.Match('[', '*')) { - blockCommentLevel++; - sc.Forward(); - } else if (sc.Match('*', ']') && blockCommentLevel > 0) { - blockCommentLevel--; - sc.Forward(); - if (blockCommentLevel == 0) { - sc.ForwardSetState(SCE_AVS_DEFAULT); - } - } - } else if (sc.state == SCE_AVS_COMMENTLINE) { - if (sc.atLineEnd) { - sc.ForwardSetState(SCE_AVS_DEFAULT); - } - } else if (sc.state == SCE_AVS_STRING) { - if (sc.ch == '\"') { - sc.ForwardSetState(SCE_AVS_DEFAULT); - } - } else if (sc.state == SCE_AVS_TRIPLESTRING) { - if (sc.Match("\"\"\"")) { - sc.Forward(); - sc.Forward(); - sc.ForwardSetState(SCE_AVS_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_AVS_DEFAULT) { - if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_AVS_NUMBER); - } else if (IsADigit(sc.ch) || (sc.ch == ',' && IsADigit(sc.chNext))) { - sc.Forward(); - sc.SetState(SCE_AVS_NUMBER); - } else if (sc.Match('/', '*')) { - blockCommentLevel = 1; - sc.SetState(SCE_AVS_COMMENTBLOCK); - sc.Forward(); // Eat the * so it isn't used for the end of the comment - } else if (sc.Match('[', '*')) { - blockCommentLevel = 1; - sc.SetState(SCE_AVS_COMMENTBLOCKN); - sc.Forward(); // Eat the * so it isn't used for the end of the comment - } else if (sc.ch == '#') { - sc.SetState(SCE_AVS_COMMENTLINE); - } else if (sc.ch == '\"') { - if (sc.Match("\"\"\"")) { - sc.SetState(SCE_AVS_TRIPLESTRING); - } else { - sc.SetState(SCE_AVS_STRING); - } - } else if (isoperator(static_cast(sc.ch))) { - sc.SetState(SCE_AVS_OPERATOR); - } else if (IsAWordStart(sc.ch)) { - sc.SetState(SCE_AVS_IDENTIFIER); - } - } - } - - // End of file: complete any pending changeState - if (sc.state == SCE_AVS_IDENTIFIER) { - if (!IsAWordChar(sc.ch)) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - - if (keywords.InList(s)) { - sc.ChangeState(SCE_AVS_KEYWORD); - } else if (filters.InList(s)) { - sc.ChangeState(SCE_AVS_FILTER); - } else if (plugins.InList(s)) { - sc.ChangeState(SCE_AVS_PLUGIN); - } else if (functions.InList(s)) { - sc.ChangeState(SCE_AVS_FUNCTION); - } else if (clipProperties.InList(s)) { - sc.ChangeState(SCE_AVS_CLIPPROP); - } else if (userDefined.InList(s)) { - sc.ChangeState(SCE_AVS_USERDFN); - } - sc.SetState(SCE_AVS_DEFAULT); - } - } - - sc.Complete(); -} - -static void FoldAvsDoc( - Sci_PositionU startPos, - Sci_Position length, - int initStyle, - WordList *[], - Accessor &styler) { - - bool foldComment = styler.GetPropertyInt("fold.comment") != 0; - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (foldComment && style == SCE_AVS_COMMENTBLOCK) { - if (stylePrev != SCE_AVS_COMMENTBLOCK) { - levelCurrent++; - } else if ((styleNext != SCE_AVS_COMMENTBLOCK) && !atEOL) { - // Comments don't end at end of line and the next character may be unstyled. - levelCurrent--; - } - } - - if (foldComment && style == SCE_AVS_COMMENTBLOCKN) { - if (stylePrev != SCE_AVS_COMMENTBLOCKN) { - levelCurrent++; - } else if ((styleNext != SCE_AVS_COMMENTBLOCKN) && !atEOL) { - // Comments don't end at end of line and the next character may be unstyled. - levelCurrent--; - } - } - - if (style == SCE_AVS_OPERATOR) { - if (ch == '{') { - levelCurrent++; - } else if (ch == '}') { - levelCurrent--; - } - } - - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - - if (!isspacechar(ch)) - visibleChars++; - } - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -static const char * const avsWordLists[] = { - "Keywords", - "Filters", - "Plugins", - "Functions", - "Clip properties", - "User defined functions", - 0, -}; - -LexerModule lmAVS(SCLEX_AVS, ColouriseAvsDoc, "avs", FoldAvsDoc, avsWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAbaqus.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAbaqus.cpp deleted file mode 100644 index 96a7b886e..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAbaqus.cpp +++ /dev/null @@ -1,603 +0,0 @@ -// Scintilla source code edit control -/** @file LexABAQUS.cxx - ** Lexer for ABAQUS. Based on the lexer for APDL by Hadar Raz. - ** By Sergio Lucato. - ** Sort of completely rewritten by Gertjan Kloosterman - **/ -// The License.txt file describes the conditions under which this software may be distributed. - -// Code folding copyied and modified from LexBasic.cxx - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsAKeywordChar(const int ch) { - return (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == ' '))); -} - -static inline bool IsASetChar(const int ch) { - return (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == '.') || (ch == '-'))); -} - -static void ColouriseABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList*[] /* *keywordlists[] */, - Accessor &styler) { - enum localState { KW_LINE_KW, KW_LINE_COMMA, KW_LINE_PAR, KW_LINE_EQ, KW_LINE_VAL, \ - DAT_LINE_VAL, DAT_LINE_COMMA,\ - COMMENT_LINE,\ - ST_ERROR, LINE_END } state ; - - // Do not leak onto next line - state = LINE_END ; - initStyle = SCE_ABAQUS_DEFAULT; - StyleContext sc(startPos, length, initStyle, styler); - - // Things are actually quite simple - // we have commentlines - // keywordlines and datalines - // On a data line there will only be colouring of numbers - // a keyword line is constructed as - // *word,[ paramname[=paramvalue]]* - // if the line ends with a , the keyword line continues onto the new line - - for (; sc.More(); sc.Forward()) { - switch ( state ) { - case KW_LINE_KW : - if ( sc.atLineEnd ) { - // finished the line in keyword state, switch to LINE_END - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = LINE_END ; - } else if ( IsAKeywordChar(sc.ch) ) { - // nothing changes - state = KW_LINE_KW ; - } else if ( sc.ch == ',' ) { - // Well well we say a comma, arguments *MUST* follow - sc.SetState(SCE_ABAQUS_OPERATOR) ; - state = KW_LINE_COMMA ; - } else { - // Flag an error - sc.SetState(SCE_ABAQUS_PROCESSOR) ; - state = ST_ERROR ; - } - // Done with processing - break ; - case KW_LINE_COMMA : - // acomma on a keywordline was seen - if ( IsAKeywordChar(sc.ch)) { - sc.SetState(SCE_ABAQUS_ARGUMENT) ; - state = KW_LINE_PAR ; - } else if ( sc.atLineEnd || (sc.ch == ',') ) { - // we remain in keyword mode - state = KW_LINE_COMMA ; - } else if ( sc.ch == ' ' ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = KW_LINE_COMMA ; - } else { - // Anything else constitutes an error - sc.SetState(SCE_ABAQUS_PROCESSOR) ; - state = ST_ERROR ; - } - break ; - case KW_LINE_PAR : - if ( sc.atLineEnd ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = LINE_END ; - } else if ( IsAKeywordChar(sc.ch) || (sc.ch == '-') ) { - // remain in this state - state = KW_LINE_PAR ; - } else if ( sc.ch == ',' ) { - sc.SetState(SCE_ABAQUS_OPERATOR) ; - state = KW_LINE_COMMA ; - } else if ( sc.ch == '=' ) { - sc.SetState(SCE_ABAQUS_OPERATOR) ; - state = KW_LINE_EQ ; - } else { - // Anything else constitutes an error - sc.SetState(SCE_ABAQUS_PROCESSOR) ; - state = ST_ERROR ; - } - break ; - case KW_LINE_EQ : - if ( sc.ch == ' ' ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - // remain in this state - state = KW_LINE_EQ ; - } else if ( IsADigit(sc.ch) || (sc.ch == '-') || (sc.ch == '.' && IsADigit(sc.chNext)) ) { - sc.SetState(SCE_ABAQUS_NUMBER) ; - state = KW_LINE_VAL ; - } else if ( IsAKeywordChar(sc.ch) ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = KW_LINE_VAL ; - } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) { - sc.SetState(SCE_ABAQUS_STRING) ; - state = KW_LINE_VAL ; - } else { - sc.SetState(SCE_ABAQUS_PROCESSOR) ; - state = ST_ERROR ; - } - break ; - case KW_LINE_VAL : - if ( sc.atLineEnd ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = LINE_END ; - } else if ( IsASetChar(sc.ch) && (sc.state == SCE_ABAQUS_DEFAULT) ) { - // nothing changes - state = KW_LINE_VAL ; - } else if (( (IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') || - ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) && - (sc.state == SCE_ABAQUS_NUMBER)) { - // remain in number mode - state = KW_LINE_VAL ; - } else if (sc.state == SCE_ABAQUS_STRING) { - // accept everything until a closing quote - if ( sc.ch == '\'' || sc.ch == '\"' ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = KW_LINE_VAL ; - } - } else if ( sc.ch == ',' ) { - sc.SetState(SCE_ABAQUS_OPERATOR) ; - state = KW_LINE_COMMA ; - } else { - // anything else is an error - sc.SetState(SCE_ABAQUS_PROCESSOR) ; - state = ST_ERROR ; - } - break ; - case DAT_LINE_VAL : - if ( sc.atLineEnd ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = LINE_END ; - } else if ( IsASetChar(sc.ch) && (sc.state == SCE_ABAQUS_DEFAULT) ) { - // nothing changes - state = DAT_LINE_VAL ; - } else if (( (IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') || - ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) && - (sc.state == SCE_ABAQUS_NUMBER)) { - // remain in number mode - state = DAT_LINE_VAL ; - } else if (sc.state == SCE_ABAQUS_STRING) { - // accept everything until a closing quote - if ( sc.ch == '\'' || sc.ch == '\"' ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = DAT_LINE_VAL ; - } - } else if ( sc.ch == ',' ) { - sc.SetState(SCE_ABAQUS_OPERATOR) ; - state = DAT_LINE_COMMA ; - } else { - // anything else is an error - sc.SetState(SCE_ABAQUS_PROCESSOR) ; - state = ST_ERROR ; - } - break ; - case DAT_LINE_COMMA : - // a comma on a data line was seen - if ( sc.atLineEnd ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = LINE_END ; - } else if ( sc.ch == ' ' ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = DAT_LINE_COMMA ; - } else if (sc.ch == ',') { - sc.SetState(SCE_ABAQUS_OPERATOR) ; - state = DAT_LINE_COMMA ; - } else if ( IsADigit(sc.ch) || (sc.ch == '-')|| (sc.ch == '.' && IsADigit(sc.chNext)) ) { - sc.SetState(SCE_ABAQUS_NUMBER) ; - state = DAT_LINE_VAL ; - } else if ( IsAKeywordChar(sc.ch) ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = DAT_LINE_VAL ; - } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) { - sc.SetState(SCE_ABAQUS_STRING) ; - state = DAT_LINE_VAL ; - } else { - sc.SetState(SCE_ABAQUS_PROCESSOR) ; - state = ST_ERROR ; - } - break ; - case COMMENT_LINE : - if ( sc.atLineEnd ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = LINE_END ; - } - break ; - case ST_ERROR : - if ( sc.atLineEnd ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = LINE_END ; - } - break ; - case LINE_END : - if ( sc.atLineEnd || sc.ch == ' ' ) { - // nothing changes - state = LINE_END ; - } else if ( sc.ch == '*' ) { - if ( sc.chNext == '*' ) { - state = COMMENT_LINE ; - sc.SetState(SCE_ABAQUS_COMMENT) ; - } else { - state = KW_LINE_KW ; - sc.SetState(SCE_ABAQUS_STARCOMMAND) ; - } - } else { - // it must be a data line, things are as if we are in DAT_LINE_COMMA - if ( sc.ch == ',' ) { - sc.SetState(SCE_ABAQUS_OPERATOR) ; - state = DAT_LINE_COMMA ; - } else if ( IsADigit(sc.ch) || (sc.ch == '-')|| (sc.ch == '.' && IsADigit(sc.chNext)) ) { - sc.SetState(SCE_ABAQUS_NUMBER) ; - state = DAT_LINE_VAL ; - } else if ( IsAKeywordChar(sc.ch) ) { - sc.SetState(SCE_ABAQUS_DEFAULT) ; - state = DAT_LINE_VAL ; - } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) { - sc.SetState(SCE_ABAQUS_STRING) ; - state = DAT_LINE_VAL ; - } else { - sc.SetState(SCE_ABAQUS_PROCESSOR) ; - state = ST_ERROR ; - } - } - break ; - } - } - sc.Complete(); -} - -//------------------------------------------------------------------------------ -// This copyied and modified from LexBasic.cxx -//------------------------------------------------------------------------------ - -/* Bits: - * 1 - whitespace - * 2 - operator - * 4 - identifier - * 8 - decimal digit - * 16 - hex digit - * 32 - bin digit - */ -static int character_classification[128] = -{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 10, 6, - 60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2, - 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, - 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0 -}; - -static bool IsSpace(int c) { - return c < 128 && (character_classification[c] & 1); -} - -static bool IsIdentifier(int c) { - return c < 128 && (character_classification[c] & 4); -} - -static int LowerCase(int c) -{ - if (c >= 'A' && c <= 'Z') - return 'a' + c - 'A'; - return c; -} - -static Sci_Position LineEnd(Sci_Position line, Accessor &styler) -{ - const Sci_Position docLines = styler.GetLine(styler.Length() - 1); // Available last line - Sci_Position eol_pos ; - // if the line is the last line, the eol_pos is styler.Length() - // eol will contain a new line, or a virtual new line - if ( docLines == line ) - eol_pos = styler.Length() ; - else - eol_pos = styler.LineStart(line + 1) - 1; - return eol_pos ; -} - -static Sci_Position LineStart(Sci_Position line, Accessor &styler) -{ - return styler.LineStart(line) ; -} - -// LineType -// -// bits determines the line type -// 1 : data line -// 2 : only whitespace -// 3 : data line with only whitespace -// 4 : keyword line -// 5 : block open keyword line -// 6 : block close keyword line -// 7 : keyword line in error -// 8 : comment line -static int LineType(Sci_Position line, Accessor &styler) { - Sci_Position pos = LineStart(line, styler) ; - Sci_Position eol_pos = LineEnd(line, styler) ; - - int c ; - char ch = ' '; - - Sci_Position i = pos ; - while ( i < eol_pos ) { - c = styler.SafeGetCharAt(i); - ch = static_cast(LowerCase(c)); - // We can say something as soon as no whitespace - // was encountered - if ( !IsSpace(c) ) - break ; - i++ ; - } - - if ( i >= eol_pos ) { - // This is a whitespace line, currently - // classifies as data line - return 3 ; - } - - if ( ch != '*' ) { - // This is a data line - return 1 ; - } - - if ( i == eol_pos - 1 ) { - // Only a single *, error but make keyword line - return 4+3 ; - } - - // This means we can have a second character - // if that is also a * this means a comment - // otherwise it is a keyword. - c = styler.SafeGetCharAt(i+1); - ch = static_cast(LowerCase(c)); - if ( ch == '*' ) { - return 8 ; - } - - // At this point we know this is a keyword line - // the character at position i is a * - // it is not a comment line - char word[256] ; - int wlen = 0; - - word[wlen] = '*' ; - wlen++ ; - - i++ ; - while ( (i < eol_pos) && (wlen < 255) ) { - c = styler.SafeGetCharAt(i); - ch = static_cast(LowerCase(c)); - - if ( (!IsSpace(c)) && (!IsIdentifier(c)) ) - break ; - - if ( IsIdentifier(c) ) { - word[wlen] = ch ; - wlen++ ; - } - - i++ ; - } - - word[wlen] = 0 ; - - // Make a comparison - if ( !strcmp(word, "*step") || - !strcmp(word, "*part") || - !strcmp(word, "*instance") || - !strcmp(word, "*assembly")) { - return 4+1 ; - } - - if ( !strcmp(word, "*endstep") || - !strcmp(word, "*endpart") || - !strcmp(word, "*endinstance") || - !strcmp(word, "*endassembly")) { - return 4+2 ; - } - - return 4 ; -} - -static void SafeSetLevel(Sci_Position line, int level, Accessor &styler) -{ - if ( line < 0 ) - return ; - - int mask = ((~SC_FOLDLEVELHEADERFLAG) | (~SC_FOLDLEVELWHITEFLAG)); - - if ( (level & mask) < 0 ) - return ; - - if ( styler.LevelAt(line) != level ) - styler.SetLevel(line, level) ; -} - -static void FoldABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int, -WordList *[], Accessor &styler) { - Sci_Position startLine = styler.GetLine(startPos) ; - Sci_Position endLine = styler.GetLine(startPos+length-1) ; - - // bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - // We want to deal with all the cases - // To know the correct indentlevel, we need to look back to the - // previous command line indentation level - // order of formatting keyline datalines commentlines - Sci_Position beginData = -1 ; - Sci_Position beginComment = -1 ; - Sci_Position prvKeyLine = startLine ; - Sci_Position prvKeyLineTp = 0 ; - - // Scan until we find the previous keyword line - // this will give us the level reference that we need - while ( prvKeyLine > 0 ) { - prvKeyLine-- ; - prvKeyLineTp = LineType(prvKeyLine, styler) ; - if ( prvKeyLineTp & 4 ) - break ; - } - - // Determine the base line level of all lines following - // the previous keyword - // new keyword lines are placed on this level - //if ( prvKeyLineTp & 4 ) { - int level = styler.LevelAt(prvKeyLine) & ~SC_FOLDLEVELHEADERFLAG ; - //} - - // uncomment line below if weird behaviour continues - prvKeyLine = -1 ; - - // Now start scanning over the lines. - for ( Sci_Position line = startLine; line <= endLine; line++ ) { - int lineType = LineType(line, styler) ; - - // Check for comment line - if ( lineType == 8 ) { - if ( beginComment < 0 ) { - beginComment = line ; - } - } - - // Check for data line - if ( (lineType == 1) || (lineType == 3) ) { - if ( beginData < 0 ) { - if ( beginComment >= 0 ) { - beginData = beginComment ; - } else { - beginData = line ; - } - } - beginComment = -1 ; - } - - // Check for keywordline. - // As soon as a keyword line is encountered, we can set the - // levels of everything from the previous keyword line to this one - if ( lineType & 4 ) { - // this is a keyword, we can now place the previous keyword - // all its data lines and the remainder - - // Write comments and data line - if ( beginComment < 0 ) { - beginComment = line ; - } - - if ( beginData < 0 ) { - beginData = beginComment ; - if ( prvKeyLineTp != 5 ) - SafeSetLevel(prvKeyLine, level, styler) ; - else - SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ; - } else { - SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ; - } - - int datLevel = level + 1 ; - if ( !(prvKeyLineTp & 4) ) { - datLevel = level ; - } - - for ( Sci_Position ll = beginData; ll < beginComment; ll++ ) - SafeSetLevel(ll, datLevel, styler) ; - - // The keyword we just found is going to be written at another level - // if we have a type 5 and type 6 - if ( prvKeyLineTp == 5 ) { - level += 1 ; - } - - if ( prvKeyLineTp == 6 ) { - level -= 1 ; - if ( level < 0 ) { - level = 0 ; - } - } - - for ( Sci_Position lll = beginComment; lll < line; lll++ ) - SafeSetLevel(lll, level, styler) ; - - // wrap and reset - beginComment = -1 ; - beginData = -1 ; - prvKeyLine = line ; - prvKeyLineTp = lineType ; - } - - } - - if ( beginComment < 0 ) { - beginComment = endLine + 1 ; - } else { - // We need to find out whether this comment block is followed by - // a data line or a keyword line - const Sci_Position docLines = styler.GetLine(styler.Length() - 1); - - for ( Sci_Position line = endLine + 1; line <= docLines; line++ ) { - Sci_Position lineType = LineType(line, styler) ; - - if ( lineType != 8 ) { - if ( !(lineType & 4) ) { - beginComment = endLine + 1 ; - } - break ; - } - } - } - - if ( beginData < 0 ) { - beginData = beginComment ; - if ( prvKeyLineTp != 5 ) - SafeSetLevel(prvKeyLine, level, styler) ; - else - SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ; - } else { - SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ; - } - - int datLevel = level + 1 ; - if ( !(prvKeyLineTp & 4) ) { - datLevel = level ; - } - - for ( Sci_Position ll = beginData; ll < beginComment; ll++ ) - SafeSetLevel(ll, datLevel, styler) ; - - if ( prvKeyLineTp == 5 ) { - level += 1 ; - } - - if ( prvKeyLineTp == 6 ) { - level -= 1 ; - } - for ( Sci_Position m = beginComment; m <= endLine; m++ ) - SafeSetLevel(m, level, styler) ; -} - -static const char * const abaqusWordListDesc[] = { - "processors", - "commands", - "slashommands", - "starcommands", - "arguments", - "functions", - 0 -}; - -LexerModule lmAbaqus(SCLEX_ABAQUS, ColouriseABAQUSDoc, "abaqus", FoldABAQUSDoc, abaqusWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAda.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAda.cpp deleted file mode 100644 index 9d7f5d0f7..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAda.cpp +++ /dev/null @@ -1,513 +0,0 @@ -// Scintilla source code edit control -/** @file LexAda.cxx - ** Lexer for Ada 95 - **/ -// Copyright 2002 by Sergey Koshcheyev -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -/* - * Interface - */ - -static void ColouriseDocument( - Sci_PositionU startPos, - Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler); - -static const char * const adaWordListDesc[] = { - "Keywords", - 0 -}; - -LexerModule lmAda(SCLEX_ADA, ColouriseDocument, "ada", NULL, adaWordListDesc); - -/* - * Implementation - */ - -// Functions that have apostropheStartsAttribute as a parameter set it according to whether -// an apostrophe encountered after processing the current token will start an attribute or -// a character literal. -static void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsAttribute); -static void ColouriseComment(StyleContext& sc, bool& apostropheStartsAttribute); -static void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL); -static void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute); -static void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute); -static void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute); -static void ColouriseString(StyleContext& sc, bool& apostropheStartsAttribute); -static void ColouriseWhiteSpace(StyleContext& sc, bool& apostropheStartsAttribute); -static void ColouriseWord(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute); - -static inline bool IsDelimiterCharacter(int ch); -static inline bool IsSeparatorOrDelimiterCharacter(int ch); -static bool IsValidIdentifier(const std::string& identifier); -static bool IsValidNumber(const std::string& number); -static inline bool IsWordStartCharacter(int ch); -static inline bool IsWordCharacter(int ch); - -static void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsAttribute) { - apostropheStartsAttribute = true; - - sc.SetState(SCE_ADA_CHARACTER); - - // Skip the apostrophe and one more character (so that '' is shown as non-terminated and ''' - // is handled correctly) - sc.Forward(); - sc.Forward(); - - ColouriseContext(sc, '\'', SCE_ADA_CHARACTEREOL); -} - -static void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL) { - while (!sc.atLineEnd && !sc.Match(chEnd)) { - sc.Forward(); - } - - if (!sc.atLineEnd) { - sc.ForwardSetState(SCE_ADA_DEFAULT); - } else { - sc.ChangeState(stateEOL); - } -} - -static void ColouriseComment(StyleContext& sc, bool& /*apostropheStartsAttribute*/) { - // Apostrophe meaning is not changed, but the parameter is present for uniformity - - sc.SetState(SCE_ADA_COMMENTLINE); - - while (!sc.atLineEnd) { - sc.Forward(); - } -} - -static void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute) { - apostropheStartsAttribute = sc.Match (')'); - sc.SetState(SCE_ADA_DELIMITER); - sc.ForwardSetState(SCE_ADA_DEFAULT); -} - -static void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute) { - apostropheStartsAttribute = false; - - sc.SetState(SCE_ADA_LABEL); - - // Skip "<<" - sc.Forward(); - sc.Forward(); - - std::string identifier; - - while (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) { - identifier += static_cast(tolower(sc.ch)); - sc.Forward(); - } - - // Skip ">>" - if (sc.Match('>', '>')) { - sc.Forward(); - sc.Forward(); - } else { - sc.ChangeState(SCE_ADA_ILLEGAL); - } - - // If the name is an invalid identifier or a keyword, then make it invalid label - if (!IsValidIdentifier(identifier) || keywords.InList(identifier.c_str())) { - sc.ChangeState(SCE_ADA_ILLEGAL); - } - - sc.SetState(SCE_ADA_DEFAULT); - -} - -static void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute) { - apostropheStartsAttribute = true; - - std::string number; - sc.SetState(SCE_ADA_NUMBER); - - // Get all characters up to a delimiter or a separator, including points, but excluding - // double points (ranges). - while (!IsSeparatorOrDelimiterCharacter(sc.ch) || (sc.ch == '.' && sc.chNext != '.')) { - number += static_cast(sc.ch); - sc.Forward(); - } - - // Special case: exponent with sign - if ((sc.chPrev == 'e' || sc.chPrev == 'E') && - (sc.ch == '+' || sc.ch == '-')) { - number += static_cast(sc.ch); - sc.Forward (); - - while (!IsSeparatorOrDelimiterCharacter(sc.ch)) { - number += static_cast(sc.ch); - sc.Forward(); - } - } - - if (!IsValidNumber(number)) { - sc.ChangeState(SCE_ADA_ILLEGAL); - } - - sc.SetState(SCE_ADA_DEFAULT); -} - -static void ColouriseString(StyleContext& sc, bool& apostropheStartsAttribute) { - apostropheStartsAttribute = true; - - sc.SetState(SCE_ADA_STRING); - sc.Forward(); - - ColouriseContext(sc, '"', SCE_ADA_STRINGEOL); -} - -static void ColouriseWhiteSpace(StyleContext& sc, bool& /*apostropheStartsAttribute*/) { - // Apostrophe meaning is not changed, but the parameter is present for uniformity - sc.SetState(SCE_ADA_DEFAULT); - sc.ForwardSetState(SCE_ADA_DEFAULT); -} - -static void ColouriseWord(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute) { - apostropheStartsAttribute = true; - sc.SetState(SCE_ADA_IDENTIFIER); - - std::string word; - - while (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) { - word += static_cast(tolower(sc.ch)); - sc.Forward(); - } - - if (!IsValidIdentifier(word)) { - sc.ChangeState(SCE_ADA_ILLEGAL); - - } else if (keywords.InList(word.c_str())) { - sc.ChangeState(SCE_ADA_WORD); - - if (word != "all") { - apostropheStartsAttribute = false; - } - } - - sc.SetState(SCE_ADA_DEFAULT); -} - -// -// ColouriseDocument -// - -static void ColouriseDocument( - Sci_PositionU startPos, - Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler) { - WordList &keywords = *keywordlists[0]; - - StyleContext sc(startPos, length, initStyle, styler); - - Sci_Position lineCurrent = styler.GetLine(startPos); - bool apostropheStartsAttribute = (styler.GetLineState(lineCurrent) & 1) != 0; - - while (sc.More()) { - if (sc.atLineEnd) { - // Go to the next line - sc.Forward(); - lineCurrent++; - - // Remember the line state for future incremental lexing - styler.SetLineState(lineCurrent, apostropheStartsAttribute); - - // Don't continue any styles on the next line - sc.SetState(SCE_ADA_DEFAULT); - } - - // Comments - if (sc.Match('-', '-')) { - ColouriseComment(sc, apostropheStartsAttribute); - - // Strings - } else if (sc.Match('"')) { - ColouriseString(sc, apostropheStartsAttribute); - - // Characters - } else if (sc.Match('\'') && !apostropheStartsAttribute) { - ColouriseCharacter(sc, apostropheStartsAttribute); - - // Labels - } else if (sc.Match('<', '<')) { - ColouriseLabel(sc, keywords, apostropheStartsAttribute); - - // Whitespace - } else if (IsASpace(sc.ch)) { - ColouriseWhiteSpace(sc, apostropheStartsAttribute); - - // Delimiters - } else if (IsDelimiterCharacter(sc.ch)) { - ColouriseDelimiter(sc, apostropheStartsAttribute); - - // Numbers - } else if (IsADigit(sc.ch) || sc.ch == '#') { - ColouriseNumber(sc, apostropheStartsAttribute); - - // Keywords or identifiers - } else { - ColouriseWord(sc, keywords, apostropheStartsAttribute); - } - } - - sc.Complete(); -} - -static inline bool IsDelimiterCharacter(int ch) { - switch (ch) { - case '&': - case '\'': - case '(': - case ')': - case '*': - case '+': - case ',': - case '-': - case '.': - case '/': - case ':': - case ';': - case '<': - case '=': - case '>': - case '|': - return true; - default: - return false; - } -} - -static inline bool IsSeparatorOrDelimiterCharacter(int ch) { - return IsASpace(ch) || IsDelimiterCharacter(ch); -} - -static bool IsValidIdentifier(const std::string& identifier) { - // First character can't be '_', so initialize the flag to true - bool lastWasUnderscore = true; - - size_t length = identifier.length(); - - // Zero-length identifiers are not valid (these can occur inside labels) - if (length == 0) { - return false; - } - - // Check for valid character at the start - if (!IsWordStartCharacter(identifier[0])) { - return false; - } - - // Check for only valid characters and no double underscores - for (size_t i = 0; i < length; i++) { - if (!IsWordCharacter(identifier[i]) || - (identifier[i] == '_' && lastWasUnderscore)) { - return false; - } - lastWasUnderscore = identifier[i] == '_'; - } - - // Check for underscore at the end - if (lastWasUnderscore == true) { - return false; - } - - // All checks passed - return true; -} - -static bool IsValidNumber(const std::string& number) { - size_t hashPos = number.find("#"); - bool seenDot = false; - - size_t i = 0; - size_t length = number.length(); - - if (length == 0) - return false; // Just in case - - // Decimal number - if (hashPos == std::string::npos) { - bool canBeSpecial = false; - - for (; i < length; i++) { - if (number[i] == '_') { - if (!canBeSpecial) { - return false; - } - canBeSpecial = false; - } else if (number[i] == '.') { - if (!canBeSpecial || seenDot) { - return false; - } - canBeSpecial = false; - seenDot = true; - } else if (IsADigit(number[i])) { - canBeSpecial = true; - } else { - break; - } - } - - if (!canBeSpecial) - return false; - } else { - // Based number - bool canBeSpecial = false; - int base = 0; - - // Parse base - for (; i < length; i++) { - int ch = number[i]; - if (ch == '_') { - if (!canBeSpecial) - return false; - canBeSpecial = false; - } else if (IsADigit(ch)) { - base = base * 10 + (ch - '0'); - if (base > 16) - return false; - canBeSpecial = true; - } else if (ch == '#' && canBeSpecial) { - break; - } else { - return false; - } - } - - if (base < 2) - return false; - if (i == length) - return false; - - i++; // Skip over '#' - - // Parse number - canBeSpecial = false; - - for (; i < length; i++) { - int ch = tolower(number[i]); - - if (ch == '_') { - if (!canBeSpecial) { - return false; - } - canBeSpecial = false; - - } else if (ch == '.') { - if (!canBeSpecial || seenDot) { - return false; - } - canBeSpecial = false; - seenDot = true; - - } else if (IsADigit(ch)) { - if (ch - '0' >= base) { - return false; - } - canBeSpecial = true; - - } else if (ch >= 'a' && ch <= 'f') { - if (ch - 'a' + 10 >= base) { - return false; - } - canBeSpecial = true; - - } else if (ch == '#' && canBeSpecial) { - break; - - } else { - return false; - } - } - - if (i == length) { - return false; - } - - i++; - } - - // Exponent (optional) - if (i < length) { - if (number[i] != 'e' && number[i] != 'E') - return false; - - i++; // Move past 'E' - - if (i == length) { - return false; - } - - if (number[i] == '+') - i++; - else if (number[i] == '-') { - if (seenDot) { - i++; - } else { - return false; // Integer literals should not have negative exponents - } - } - - if (i == length) { - return false; - } - - bool canBeSpecial = false; - - for (; i < length; i++) { - if (number[i] == '_') { - if (!canBeSpecial) { - return false; - } - canBeSpecial = false; - } else if (IsADigit(number[i])) { - canBeSpecial = true; - } else { - return false; - } - } - - if (!canBeSpecial) - return false; - } - - // if i == length, number was parsed successfully. - return i == length; -} - -static inline bool IsWordCharacter(int ch) { - return IsWordStartCharacter(ch) || IsADigit(ch); -} - -static inline bool IsWordStartCharacter(int ch) { - return (IsASCII(ch) && isalpha(ch)) || ch == '_'; -} diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAsm.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAsm.cpp deleted file mode 100644 index bd82b1621..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAsm.cpp +++ /dev/null @@ -1,466 +0,0 @@ -// Scintilla source code edit control -/** @file LexAsm.cxx - ** Lexer for Assembler, just for the MASM syntax - ** Written by The Black Horus - ** Enhancements and NASM stuff by Kein-Hong Man, 2003-10 - ** SCE_ASM_COMMENTBLOCK and SCE_ASM_CHARACTER are for future GNU as colouring - ** Converted to lexer object and added further folding features/properties by "Udo Lechner" - **/ -// Copyright 1998-2003 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "OptionSet.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '.' || - ch == '_' || ch == '?'); -} - -static inline bool IsAWordStart(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' || - ch == '%' || ch == '@' || ch == '$' || ch == '?'); -} - -static inline bool IsAsmOperator(const int ch) { - if ((ch < 0x80) && (isalnum(ch))) - return false; - // '.' left out as it is used to make up numbers - if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || - ch == '(' || ch == ')' || ch == '=' || ch == '^' || - ch == '[' || ch == ']' || ch == '<' || ch == '&' || - ch == '>' || ch == ',' || ch == '|' || ch == '~' || - ch == '%' || ch == ':') - return true; - return false; -} - -static bool IsStreamCommentStyle(int style) { - return style == SCE_ASM_COMMENTDIRECTIVE || style == SCE_ASM_COMMENTBLOCK; -} - -static inline int LowerCase(int c) { - if (c >= 'A' && c <= 'Z') - return 'a' + c - 'A'; - return c; -} - -// An individual named option for use in an OptionSet - -// Options used for LexerAsm -struct OptionsAsm { - std::string delimiter; - bool fold; - bool foldSyntaxBased; - bool foldCommentMultiline; - bool foldCommentExplicit; - std::string foldExplicitStart; - std::string foldExplicitEnd; - bool foldExplicitAnywhere; - bool foldCompact; - OptionsAsm() { - delimiter = ""; - fold = false; - foldSyntaxBased = true; - foldCommentMultiline = false; - foldCommentExplicit = false; - foldExplicitStart = ""; - foldExplicitEnd = ""; - foldExplicitAnywhere = false; - foldCompact = true; - } -}; - -static const char * const asmWordListDesc[] = { - "CPU instructions", - "FPU instructions", - "Registers", - "Directives", - "Directive operands", - "Extended instructions", - "Directives4Foldstart", - "Directives4Foldend", - 0 -}; - -struct OptionSetAsm : public OptionSet { - OptionSetAsm() { - DefineProperty("lexer.asm.comment.delimiter", &OptionsAsm::delimiter, - "Character used for COMMENT directive's delimiter, replacing the standard \"~\"."); - - DefineProperty("fold", &OptionsAsm::fold); - - DefineProperty("fold.asm.syntax.based", &OptionsAsm::foldSyntaxBased, - "Set this property to 0 to disable syntax based folding."); - - DefineProperty("fold.asm.comment.multiline", &OptionsAsm::foldCommentMultiline, - "Set this property to 1 to enable folding multi-line comments."); - - DefineProperty("fold.asm.comment.explicit", &OptionsAsm::foldCommentExplicit, - "This option enables folding explicit fold points when using the Asm lexer. " - "Explicit fold points allows adding extra folding by placing a ;{ comment at the start and a ;} " - "at the end of a section that should fold."); - - DefineProperty("fold.asm.explicit.start", &OptionsAsm::foldExplicitStart, - "The string to use for explicit fold start points, replacing the standard ;{."); - - DefineProperty("fold.asm.explicit.end", &OptionsAsm::foldExplicitEnd, - "The string to use for explicit fold end points, replacing the standard ;}."); - - DefineProperty("fold.asm.explicit.anywhere", &OptionsAsm::foldExplicitAnywhere, - "Set this property to 1 to enable explicit fold points anywhere, not just in line comments."); - - DefineProperty("fold.compact", &OptionsAsm::foldCompact); - - DefineWordListSets(asmWordListDesc); - } -}; - -class LexerAsm : public DefaultLexer { - WordList cpuInstruction; - WordList mathInstruction; - WordList registers; - WordList directive; - WordList directiveOperand; - WordList extInstruction; - WordList directives4foldstart; - WordList directives4foldend; - OptionsAsm options; - OptionSetAsm osAsm; - int commentChar; -public: - LexerAsm(int commentChar_) { - commentChar = commentChar_; - } - virtual ~LexerAsm() { - } - void SCI_METHOD Release() override { - delete this; - } - int SCI_METHOD Version() const override { - return lvOriginal; - } - const char * SCI_METHOD PropertyNames() override { - return osAsm.PropertyNames(); - } - int SCI_METHOD PropertyType(const char *name) override { - return osAsm.PropertyType(name); - } - const char * SCI_METHOD DescribeProperty(const char *name) override { - return osAsm.DescribeProperty(name); - } - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; - const char * SCI_METHOD DescribeWordListSets() override { - return osAsm.DescribeWordListSets(); - } - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - - void * SCI_METHOD PrivateCall(int, void *) override { - return 0; - } - - static ILexer *LexerFactoryAsm() { - return new LexerAsm(';'); - } - - static ILexer *LexerFactoryAs() { - return new LexerAsm('#'); - } -}; - -Sci_Position SCI_METHOD LexerAsm::PropertySet(const char *key, const char *val) { - if (osAsm.PropertySet(&options, key, val)) { - return 0; - } - return -1; -} - -Sci_Position SCI_METHOD LexerAsm::WordListSet(int n, const char *wl) { - WordList *wordListN = 0; - switch (n) { - case 0: - wordListN = &cpuInstruction; - break; - case 1: - wordListN = &mathInstruction; - break; - case 2: - wordListN = ®isters; - break; - case 3: - wordListN = &directive; - break; - case 4: - wordListN = &directiveOperand; - break; - case 5: - wordListN = &extInstruction; - break; - case 6: - wordListN = &directives4foldstart; - break; - case 7: - wordListN = &directives4foldend; - break; - } - Sci_Position firstModification = -1; - if (wordListN) { - WordList wlNew; - wlNew.Set(wl); - if (*wordListN != wlNew) { - wordListN->Set(wl); - firstModification = 0; - } - } - return firstModification; -} - -void SCI_METHOD LexerAsm::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - LexAccessor styler(pAccess); - - // Do not leak onto next line - if (initStyle == SCE_ASM_STRINGEOL) - initStyle = SCE_ASM_DEFAULT; - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) - { - - // Prevent SCE_ASM_STRINGEOL from leaking back to previous line - if (sc.atLineStart && (sc.state == SCE_ASM_STRING)) { - sc.SetState(SCE_ASM_STRING); - } else if (sc.atLineStart && (sc.state == SCE_ASM_CHARACTER)) { - sc.SetState(SCE_ASM_CHARACTER); - } - - // Handle line continuation generically. - if (sc.ch == '\\') { - if (sc.chNext == '\n' || sc.chNext == '\r') { - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - sc.Forward(); - } - continue; - } - } - - // Determine if the current state should terminate. - if (sc.state == SCE_ASM_OPERATOR) { - if (!IsAsmOperator(sc.ch)) { - sc.SetState(SCE_ASM_DEFAULT); - } - } else if (sc.state == SCE_ASM_NUMBER) { - if (!IsAWordChar(sc.ch)) { - sc.SetState(SCE_ASM_DEFAULT); - } - } else if (sc.state == SCE_ASM_IDENTIFIER) { - if (!IsAWordChar(sc.ch) ) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - bool IsDirective = false; - - if (cpuInstruction.InList(s)) { - sc.ChangeState(SCE_ASM_CPUINSTRUCTION); - } else if (mathInstruction.InList(s)) { - sc.ChangeState(SCE_ASM_MATHINSTRUCTION); - } else if (registers.InList(s)) { - sc.ChangeState(SCE_ASM_REGISTER); - } else if (directive.InList(s)) { - sc.ChangeState(SCE_ASM_DIRECTIVE); - IsDirective = true; - } else if (directiveOperand.InList(s)) { - sc.ChangeState(SCE_ASM_DIRECTIVEOPERAND); - } else if (extInstruction.InList(s)) { - sc.ChangeState(SCE_ASM_EXTINSTRUCTION); - } - sc.SetState(SCE_ASM_DEFAULT); - if (IsDirective && !strcmp(s, "comment")) { - char delimiter = options.delimiter.empty() ? '~' : options.delimiter.c_str()[0]; - while (IsASpaceOrTab(sc.ch) && !sc.atLineEnd) { - sc.ForwardSetState(SCE_ASM_DEFAULT); - } - if (sc.ch == delimiter) { - sc.SetState(SCE_ASM_COMMENTDIRECTIVE); - } - } - } - } else if (sc.state == SCE_ASM_COMMENTDIRECTIVE) { - char delimiter = options.delimiter.empty() ? '~' : options.delimiter.c_str()[0]; - if (sc.ch == delimiter) { - while (!sc.atLineEnd) { - sc.Forward(); - } - sc.SetState(SCE_ASM_DEFAULT); - } - } else if (sc.state == SCE_ASM_COMMENT ) { - if (sc.atLineEnd) { - sc.SetState(SCE_ASM_DEFAULT); - } - } else if (sc.state == SCE_ASM_STRING) { - if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\"') { - sc.ForwardSetState(SCE_ASM_DEFAULT); - } else if (sc.atLineEnd) { - sc.ChangeState(SCE_ASM_STRINGEOL); - sc.ForwardSetState(SCE_ASM_DEFAULT); - } - } else if (sc.state == SCE_ASM_CHARACTER) { - if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\'') { - sc.ForwardSetState(SCE_ASM_DEFAULT); - } else if (sc.atLineEnd) { - sc.ChangeState(SCE_ASM_STRINGEOL); - sc.ForwardSetState(SCE_ASM_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_ASM_DEFAULT) { - if (sc.ch == commentChar){ - sc.SetState(SCE_ASM_COMMENT); - } else if (IsASCII(sc.ch) && (isdigit(sc.ch) || (sc.ch == '.' && IsASCII(sc.chNext) && isdigit(sc.chNext)))) { - sc.SetState(SCE_ASM_NUMBER); - } else if (IsAWordStart(sc.ch)) { - sc.SetState(SCE_ASM_IDENTIFIER); - } else if (sc.ch == '\"') { - sc.SetState(SCE_ASM_STRING); - } else if (sc.ch == '\'') { - sc.SetState(SCE_ASM_CHARACTER); - } else if (IsAsmOperator(sc.ch)) { - sc.SetState(SCE_ASM_OPERATOR); - } - } - - } - sc.Complete(); -} - -// Store both the current line's fold level and the next lines in the -// level store to make it easy to pick up with each increment -// and to make it possible to fiddle the current level for "else". - -void SCI_METHOD LexerAsm::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - - if (!options.fold) - return; - - LexAccessor styler(pAccess); - - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelCurrent = SC_FOLDLEVELBASE; - if (lineCurrent > 0) - levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; - int levelNext = levelCurrent; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - char word[100]; - int wordlen = 0; - const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty(); - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (options.foldCommentMultiline && IsStreamCommentStyle(style)) { - if (!IsStreamCommentStyle(stylePrev)) { - levelNext++; - } else if (!IsStreamCommentStyle(styleNext) && !atEOL) { - // Comments don't end at end of line and the next character may be unstyled. - levelNext--; - } - } - if (options.foldCommentExplicit && ((style == SCE_ASM_COMMENT) || options.foldExplicitAnywhere)) { - if (userDefinedFoldMarkers) { - if (styler.Match(i, options.foldExplicitStart.c_str())) { - levelNext++; - } else if (styler.Match(i, options.foldExplicitEnd.c_str())) { - levelNext--; - } - } else { - if (ch == ';') { - if (chNext == '{') { - levelNext++; - } else if (chNext == '}') { - levelNext--; - } - } - } - } - if (options.foldSyntaxBased && (style == SCE_ASM_DIRECTIVE)) { - word[wordlen++] = static_cast(LowerCase(ch)); - if (wordlen == 100) { // prevent overflow - word[0] = '\0'; - wordlen = 1; - } - if (styleNext != SCE_ASM_DIRECTIVE) { // reading directive ready - word[wordlen] = '\0'; - wordlen = 0; - if (directives4foldstart.InList(word)) { - levelNext++; - } else if (directives4foldend.InList(word)){ - levelNext--; - } - } - } - if (!IsASpace(ch)) - visibleChars++; - if (atEOL || (i == endPos-1)) { - int levelUse = levelCurrent; - int lev = levelUse | levelNext << 16; - if (visibleChars == 0 && options.foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if (levelUse < levelNext) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelCurrent = levelNext; - if (atEOL && (i == static_cast(styler.Length() - 1))) { - // There is an empty line at end of file so give it same level and empty - styler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG); - } - visibleChars = 0; - } - } -} - -LexerModule lmAsm(SCLEX_ASM, LexerAsm::LexerFactoryAsm, "asm", asmWordListDesc); -LexerModule lmAs(SCLEX_AS, LexerAsm::LexerFactoryAs, "as", asmWordListDesc); - diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAsn1.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAsn1.cpp deleted file mode 100644 index 0ec2a0636..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexAsn1.cpp +++ /dev/null @@ -1,186 +0,0 @@ -// Scintilla source code edit control -/** @file LexAsn1.cxx - ** Lexer for ASN.1 - **/ -// Copyright 2004 by Herr Pfarrer rpfarrer yahoo de -// Last Updated: 20/07/2004 -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -// Some char test functions -static bool isAsn1Number(int ch) -{ - return (ch >= '0' && ch <= '9'); -} - -static bool isAsn1Letter(int ch) -{ - return (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'); -} - -static bool isAsn1Char(int ch) -{ - return (ch == '-' ) || isAsn1Number(ch) || isAsn1Letter (ch); -} - -// -// Function determining the color of a given code portion -// Based on a "state" -// -static void ColouriseAsn1Doc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordLists[], Accessor &styler) -{ - // The keywords - WordList &Keywords = *keywordLists[0]; - WordList &Attributes = *keywordLists[1]; - WordList &Descriptors = *keywordLists[2]; - WordList &Types = *keywordLists[3]; - - // Parse the whole buffer character by character using StyleContext - StyleContext sc(startPos, length, initStyle, styler); - for (; sc.More(); sc.Forward()) - { - // The state engine - switch (sc.state) - { - case SCE_ASN1_DEFAULT: // Plain characters -asn1_default: - if (sc.ch == '-' && sc.chNext == '-') - // A comment begins here - sc.SetState(SCE_ASN1_COMMENT); - else if (sc.ch == '"') - // A string begins here - sc.SetState(SCE_ASN1_STRING); - else if (isAsn1Number (sc.ch)) - // A number starts here (identifier should start with a letter in ASN.1) - sc.SetState(SCE_ASN1_SCALAR); - else if (isAsn1Char (sc.ch)) - // An identifier starts here (identifier always start with a letter) - sc.SetState(SCE_ASN1_IDENTIFIER); - else if (sc.ch == ':') - // A ::= operator starts here - sc.SetState(SCE_ASN1_OPERATOR); - break; - case SCE_ASN1_COMMENT: // A comment - if (sc.ch == '\r' || sc.ch == '\n') - // A comment ends here - sc.SetState(SCE_ASN1_DEFAULT); - break; - case SCE_ASN1_IDENTIFIER: // An identifier (keyword, attribute, descriptor or type) - if (!isAsn1Char (sc.ch)) - { - // The end of identifier is here: we can look for it in lists by now and change its state - char s[100]; - sc.GetCurrent(s, sizeof(s)); - if (Keywords.InList(s)) - // It's a keyword, change its state - sc.ChangeState(SCE_ASN1_KEYWORD); - else if (Attributes.InList(s)) - // It's an attribute, change its state - sc.ChangeState(SCE_ASN1_ATTRIBUTE); - else if (Descriptors.InList(s)) - // It's a descriptor, change its state - sc.ChangeState(SCE_ASN1_DESCRIPTOR); - else if (Types.InList(s)) - // It's a type, change its state - sc.ChangeState(SCE_ASN1_TYPE); - - // Set to default now - sc.SetState(SCE_ASN1_DEFAULT); - } - break; - case SCE_ASN1_STRING: // A string delimited by "" - if (sc.ch == '"') - { - // A string ends here - sc.ForwardSetState(SCE_ASN1_DEFAULT); - - // To correctly manage a char sticking to the string quote - goto asn1_default; - } - break; - case SCE_ASN1_SCALAR: // A plain number - if (!isAsn1Number (sc.ch)) - // A number ends here - sc.SetState(SCE_ASN1_DEFAULT); - break; - case SCE_ASN1_OPERATOR: // The affectation operator ::= and wath follows (eg: ::= { org 6 } OID or ::= 12 trap) - if (sc.ch == '{') - { - // An OID definition starts here: enter the sub loop - for (; sc.More(); sc.Forward()) - { - if (isAsn1Number (sc.ch) && (!isAsn1Char (sc.chPrev) || isAsn1Number (sc.chPrev))) - // The OID number is highlighted - sc.SetState(SCE_ASN1_OID); - else if (isAsn1Char (sc.ch)) - // The OID parent identifier is plain - sc.SetState(SCE_ASN1_IDENTIFIER); - else - sc.SetState(SCE_ASN1_DEFAULT); - - if (sc.ch == '}') - // Here ends the OID and the operator sub loop: go back to main loop - break; - } - } - else if (isAsn1Number (sc.ch)) - { - // A trap number definition starts here: enter the sub loop - for (; sc.More(); sc.Forward()) - { - if (isAsn1Number (sc.ch)) - // The trap number is highlighted - sc.SetState(SCE_ASN1_OID); - else - { - // The number ends here: go back to main loop - sc.SetState(SCE_ASN1_DEFAULT); - break; - } - } - } - else if (sc.ch != ':' && sc.ch != '=' && sc.ch != ' ') - // The operator doesn't imply an OID definition nor a trap, back to main loop - goto asn1_default; // To be sure to handle actually the state change - break; - } - } - sc.Complete(); -} - -static void FoldAsn1Doc(Sci_PositionU, Sci_Position, int, WordList *[], Accessor &styler) -{ - // No folding enabled, no reason to continue... - if( styler.GetPropertyInt("fold") == 0 ) - return; - - // No folding implemented: doesn't make sense for ASN.1 -} - -static const char * const asn1WordLists[] = { - "Keywords", - "Attributes", - "Descriptors", - "Types", - 0, }; - - -LexerModule lmAsn1(SCLEX_ASN1, ColouriseAsn1Doc, "asn1", FoldAsn1Doc, asn1WordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBaan.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBaan.cpp deleted file mode 100644 index fa8b46302..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBaan.cpp +++ /dev/null @@ -1,988 +0,0 @@ -// Scintilla source code edit control -/** @file LexBaan.cxx -** Lexer for Baan. -** Based heavily on LexCPP.cxx -**/ -// Copyright 2001- by Vamsi Potluru & Praveen Ambekar -// Maintainer Email: oirfeodent@yahoo.co.in -// The License.txt file describes the conditions under which this software may be distributed. - -// C standard library -#include -#include - -// C++ wrappers of C standard library -#include - -// C++ standard library -#include -#include - -// Scintilla headers - -// Non-platform-specific headers - -// include -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -// lexlib -#include "WordList.h" -#include "LexAccessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "OptionSet.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - -namespace { -// Use an unnamed namespace to protect the functions and classes from name conflicts - -// Options used for LexerBaan -struct OptionsBaan { - bool fold; - bool foldComment; - bool foldPreprocessor; - bool foldCompact; - bool baanFoldSyntaxBased; - bool baanFoldKeywordsBased; - bool baanFoldSections; - bool baanFoldInnerLevel; - bool baanStylingWithinPreprocessor; - OptionsBaan() { - fold = false; - foldComment = false; - foldPreprocessor = false; - foldCompact = false; - baanFoldSyntaxBased = false; - baanFoldKeywordsBased = false; - baanFoldSections = false; - baanFoldInnerLevel = false; - baanStylingWithinPreprocessor = false; - } -}; - -const char *const baanWordLists[] = { - "Baan & BaanSQL Reserved Keywords ", - "Baan Standard functions", - "Baan Functions Abridged", - "Baan Main Sections ", - "Baan Sub Sections", - "PreDefined Variables", - "PreDefined Attributes", - "Enumerates", - 0, -}; - -struct OptionSetBaan : public OptionSet { - OptionSetBaan() { - DefineProperty("fold", &OptionsBaan::fold); - - DefineProperty("fold.comment", &OptionsBaan::foldComment); - - DefineProperty("fold.preprocessor", &OptionsBaan::foldPreprocessor); - - DefineProperty("fold.compact", &OptionsBaan::foldCompact); - - DefineProperty("fold.baan.syntax.based", &OptionsBaan::baanFoldSyntaxBased, - "Set this property to 0 to disable syntax based folding, which is folding based on '{' & '('."); - - DefineProperty("fold.baan.keywords.based", &OptionsBaan::baanFoldKeywordsBased, - "Set this property to 0 to disable keywords based folding, which is folding based on " - " for, if, on (case), repeat, select, while and fold ends based on endfor, endif, endcase, until, endselect, endwhile respectively." - "Also folds declarations which are grouped together."); - - DefineProperty("fold.baan.sections", &OptionsBaan::baanFoldSections, - "Set this property to 0 to disable folding of Main Sections as well as Sub Sections."); - - DefineProperty("fold.baan.inner.level", &OptionsBaan::baanFoldInnerLevel, - "Set this property to 1 to enable folding of inner levels of select statements." - "Disabled by default. case and if statements are also eligible" ); - - DefineProperty("lexer.baan.styling.within.preprocessor", &OptionsBaan::baanStylingWithinPreprocessor, - "For Baan code, determines whether all preprocessor code is styled in the " - "preprocessor style (0, the default) or only from the initial # to the end " - "of the command word(1)."); - - DefineWordListSets(baanWordLists); - } -}; - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch == '$'); -} - -static inline bool IsAnOperator(int ch) { - if (IsAlphaNumeric(ch)) - return false; - if (ch == '#' || ch == '^' || ch == '&' || ch == '*' || - ch == '(' || ch == ')' || ch == '-' || ch == '+' || - ch == '=' || ch == '|' || ch == '{' || ch == '}' || - ch == '[' || ch == ']' || ch == ':' || ch == ';' || - ch == '<' || ch == '>' || ch == ',' || ch == '/' || - ch == '?' || ch == '!' || ch == '"' || ch == '~' || - ch == '\\') - return true; - return false; -} - -static inline int IsAnyOtherIdentifier(char *s, Sci_Position sLength) { - - /* IsAnyOtherIdentifier uses standard templates used in baan. - The matching template is shown as comments just above the return condition. - ^ - refers to any character [a-z]. - # - refers to any number [0-9]. - Other characters shown are compared as is. - Tried implementing with Regex... it was too complicated for me. - Any other implementation suggestion welcome. - */ - switch (sLength) { - case 8: - if (isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { - //^^^^^### - return(SCE_BAAN_TABLEDEF); - } - break; - case 9: - if (s[0] == 't' && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && isalpha(s[5]) && IsADigit(s[6]) && IsADigit(s[7]) && IsADigit(s[8])) { - //t^^^^^### - return(SCE_BAAN_TABLEDEF); - } - else if (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { - //^^^^^###. - return(SCE_BAAN_TABLESQL); - } - break; - case 13: - if (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { - //^^^^^###.**** - return(SCE_BAAN_TABLESQL); - } - else if (s[0] == 'r' && s[1] == 'c' && s[2] == 'd' && s[3] == '.' && s[4] == 't' && isalpha(s[5]) && isalpha(s[6]) && isalpha(s[7]) && isalpha(s[8]) && isalpha(s[9]) && IsADigit(s[10]) && IsADigit(s[11]) && IsADigit(s[12])) { - //rcd.t^^^^^### - return(SCE_BAAN_TABLEDEF); - } - break; - case 14: - case 15: - if (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { - if (s[13] != ':') { - //^^^^^###.****** - return(SCE_BAAN_TABLESQL); - } - } - break; - case 16: - case 17: - if (s[8] == '.' && s[9] == '_' && s[10] == 'i' && s[11] == 'n' && s[12] == 'd' && s[13] == 'e' && s[14] == 'x' && IsADigit(s[15]) && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { - //^^^^^###._index## - return(SCE_BAAN_TABLEDEF); - } - else if (s[8] == '.' && s[9] == '_' && s[10] == 'c' && s[11] == 'o' && s[12] == 'm' && s[13] == 'p' && s[14] == 'n' && s[15] == 'r' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { - //^^^^^###._compnr - return(SCE_BAAN_TABLEDEF); - } - break; - default: - break; - } - if (sLength > 14 && s[5] == '.' && s[6] == 'd' && s[7] == 'l' && s[8] == 'l' && s[13] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[9]) && IsADigit(s[10]) && IsADigit(s[11]) && IsADigit(s[12])) { - //^^^^^.dll####. - return(SCE_BAAN_FUNCTION); - } - else if (sLength > 15 && s[2] == 'i' && s[3] == 'n' && s[4] == 't' && s[5] == '.' && s[6] == 'd' && s[7] == 'l' && s[8] == 'l' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[9]) && isalpha(s[10]) && isalpha(s[11]) && isalpha(s[12]) && isalpha(s[13])) { - //^^int.dll^^^^^. - return(SCE_BAAN_FUNCTION); - } - else if (sLength > 11 && s[0] == 'i' && s[10] == '.' && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && isalpha(s[5]) && IsADigit(s[6]) && IsADigit(s[7]) && IsADigit(s[8]) && IsADigit(s[9])) { - //i^^^^^####. - return(SCE_BAAN_FUNCTION); - } - - return(SCE_BAAN_DEFAULT); -} - -static bool IsCommentLine(Sci_Position line, LexAccessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - int style = styler.StyleAt(i); - if (ch == '|' && style == SCE_BAAN_COMMENT) - return true; - else if (!IsASpaceOrTab(ch)) - return false; - } - return false; -} - -static bool IsPreProcLine(Sci_Position line, LexAccessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - int style = styler.StyleAt(i); - if (ch == '#' && style == SCE_BAAN_PREPROCESSOR) { - if (styler.Match(i, "#elif") || styler.Match(i, "#else") || styler.Match(i, "#endif") - || styler.Match(i, "#if") || styler.Match(i, "#ifdef") || styler.Match(i, "#ifndef")) - // Above PreProcessors has a seperate fold mechanism. - return false; - else - return true; - } - else if (ch == '^') - return true; - else if (!IsASpaceOrTab(ch)) - return false; - } - return false; -} - -static int mainOrSubSectionLine(Sci_Position line, LexAccessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - int style = styler.StyleAt(i); - if (style == SCE_BAAN_WORD5 || style == SCE_BAAN_WORD4) - return style; - else if (IsASpaceOrTab(ch)) - continue; - else - break; - } - return 0; -} - -static bool priorSectionIsSubSection(Sci_Position line, LexAccessor &styler){ - while (line > 0) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - int style = styler.StyleAt(i); - if (style == SCE_BAAN_WORD4) - return true; - else if (style == SCE_BAAN_WORD5) - return false; - else if (IsASpaceOrTab(ch)) - continue; - else - break; - } - line--; - } - return false; -} - -static bool nextSectionIsSubSection(Sci_Position line, LexAccessor &styler) { - while (line > 0) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - int style = styler.StyleAt(i); - if (style == SCE_BAAN_WORD4) - return true; - else if (style == SCE_BAAN_WORD5) - return false; - else if (IsASpaceOrTab(ch)) - continue; - else - break; - } - line++; - } - return false; -} - -static bool IsDeclarationLine(Sci_Position line, LexAccessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - int style = styler.StyleAt(i); - if (style == SCE_BAAN_WORD) { - if (styler.Match(i, "table") || styler.Match(i, "extern") || styler.Match(i, "long") - || styler.Match(i, "double") || styler.Match(i, "boolean") || styler.Match(i, "string") - || styler.Match(i, "domain")) { - for (Sci_Position j = eol_pos; j > pos; j--) { - int styleFromEnd = styler.StyleAt(j); - if (styleFromEnd == SCE_BAAN_COMMENT) - continue; - else if (IsASpace(styler[j])) - continue; - else if (styler[j] != ',') - //Above conditions ensures, Declaration is not part of any function parameters. - return true; - else - return false; - } - } - else - return false; - } - else if (!IsASpaceOrTab(ch)) - return false; - } - return false; -} - -static bool IsInnerLevelFold(Sci_Position line, LexAccessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - int style = styler.StyleAt(i); - if (style == SCE_BAAN_WORD && (styler.Match(i, "else" ) || styler.Match(i, "case") - || styler.Match(i, "default") || styler.Match(i, "selectdo") || styler.Match(i, "selecteos") - || styler.Match(i, "selectempty") || styler.Match(i, "selecterror"))) - return true; - else if (IsASpaceOrTab(ch)) - continue; - else - return false; - } - return false; -} - -static inline bool wordInArray(const std::string& value, std::string *array, int length) -{ - for (int i = 0; i < length; i++) - { - if (value == array[i]) - { - return true; - } - } - - return false; -} - -class WordListAbridged : public WordList { -public: - WordListAbridged() { - kwAbridged = false; - kwHasSection = false; - }; - ~WordListAbridged() { - Clear(); - }; - bool kwAbridged; - bool kwHasSection; - bool Contains(const char *s) { - return kwAbridged ? InListAbridged(s, '~') : InList(s); - }; -}; - -} - -class LexerBaan : public DefaultLexer { - WordListAbridged keywords; - WordListAbridged keywords2; - WordListAbridged keywords3; - WordListAbridged keywords4; - WordListAbridged keywords5; - WordListAbridged keywords6; - WordListAbridged keywords7; - WordListAbridged keywords8; - WordListAbridged keywords9; - OptionsBaan options; - OptionSetBaan osBaan; -public: - LexerBaan() { - } - - virtual ~LexerBaan() { - } - - int SCI_METHOD Version() const override { - return lvOriginal; - } - - void SCI_METHOD Release() override { - delete this; - } - - const char * SCI_METHOD PropertyNames() override { - return osBaan.PropertyNames(); - } - - int SCI_METHOD PropertyType(const char * name) override { - return osBaan.PropertyType(name); - } - - const char * SCI_METHOD DescribeProperty(const char * name) override { - return osBaan.DescribeProperty(name); - } - - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; - - const char * SCI_METHOD DescribeWordListSets() override { - return osBaan.DescribeWordListSets(); - } - - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; - - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - - void * SCI_METHOD PrivateCall(int, void *) override { - return NULL; - } - - static ILexer * LexerFactoryBaan() { - return new LexerBaan(); - } -}; - -Sci_Position SCI_METHOD LexerBaan::PropertySet(const char *key, const char *val) { - if (osBaan.PropertySet(&options, key, val)) { - return 0; - } - return -1; -} - -Sci_Position SCI_METHOD LexerBaan::WordListSet(int n, const char *wl) { - WordListAbridged *WordListAbridgedN = 0; - switch (n) { - case 0: - WordListAbridgedN = &keywords; - break; - case 1: - WordListAbridgedN = &keywords2; - break; - case 2: - WordListAbridgedN = &keywords3; - break; - case 3: - WordListAbridgedN = &keywords4; - break; - case 4: - WordListAbridgedN = &keywords5; - break; - case 5: - WordListAbridgedN = &keywords6; - break; - case 6: - WordListAbridgedN = &keywords7; - break; - case 7: - WordListAbridgedN = &keywords8; - break; - case 8: - WordListAbridgedN = &keywords9; - break; - } - Sci_Position firstModification = -1; - if (WordListAbridgedN) { - WordListAbridged wlNew; - wlNew.Set(wl); - if (*WordListAbridgedN != wlNew) { - WordListAbridgedN->Set(wl); - WordListAbridgedN->kwAbridged = strchr(wl, '~') != NULL; - WordListAbridgedN->kwHasSection = strchr(wl, ':') != NULL; - - firstModification = 0; - } - } - return firstModification; -} - -void SCI_METHOD LexerBaan::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - - if (initStyle == SCE_BAAN_STRINGEOL) // Does not leak onto next line - initStyle = SCE_BAAN_DEFAULT; - - int visibleChars = 0; - bool lineHasDomain = false; - bool lineHasFunction = false; - bool lineHasPreProc = false; - bool lineIgnoreString = false; - bool lineHasDefines = false; - bool numberIsHex = false; - char word[1000]; - int wordlen = 0; - - std::string preProcessorTags[13] = { "#context_off", "#context_on", - "#define", "#elif", "#else", "#endif", - "#ident", "#if", "#ifdef", "#ifndef", - "#include", "#pragma", "#undef" }; - LexAccessor styler(pAccess); - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - - // Determine if the current state should terminate. - switch (sc.state) { - case SCE_BAAN_OPERATOR: - sc.SetState(SCE_BAAN_DEFAULT); - break; - case SCE_BAAN_NUMBER: - if (IsASpaceOrTab(sc.ch) || sc.ch == '\r' || sc.ch == '\n' || IsAnOperator(sc.ch)) { - sc.SetState(SCE_BAAN_DEFAULT); - } - else if ((numberIsHex && !(MakeLowerCase(sc.ch) == 'x' || MakeLowerCase(sc.ch) == 'e' || - IsADigit(sc.ch, 16) || sc.ch == '.' || sc.ch == '-' || sc.ch == '+')) || - (!numberIsHex && !(MakeLowerCase(sc.ch) == 'e' || IsADigit(sc.ch) - || sc.ch == '.' || sc.ch == '-' || sc.ch == '+'))) { - // check '-' for possible -10e-5. Add '+' as well. - numberIsHex = false; - sc.ChangeState(SCE_BAAN_IDENTIFIER); - sc.SetState(SCE_BAAN_DEFAULT); - } - break; - case SCE_BAAN_IDENTIFIER: - if (!IsAWordChar(sc.ch)) { - char s[1000]; - char s1[1000]; - sc.GetCurrentLowered(s, sizeof(s)); - if (sc.ch == ':') { - memcpy(s1, s, sizeof(s)); - s1[sc.LengthCurrent()] = sc.ch; - s1[sc.LengthCurrent() + 1] = '\0'; - } - if ((keywords.kwHasSection && (sc.ch == ':')) ? keywords.Contains(s1) : keywords.Contains(s)) { - sc.ChangeState(SCE_BAAN_WORD); - if (0 == strcmp(s, "domain")) { - lineHasDomain = true; - } - else if (0 == strcmp(s, "function")) { - lineHasFunction = true; - } - } - else if (lineHasDomain) { - sc.ChangeState(SCE_BAAN_DOMDEF); - lineHasDomain = false; - } - else if (lineHasFunction) { - sc.ChangeState(SCE_BAAN_FUNCDEF); - lineHasFunction = false; - } - else if ((keywords2.kwHasSection && (sc.ch == ':')) ? keywords2.Contains(s1) : keywords2.Contains(s)) { - sc.ChangeState(SCE_BAAN_WORD2); - } - else if ((keywords3.kwHasSection && (sc.ch == ':')) ? keywords3.Contains(s1) : keywords3.Contains(s)) { - if (sc.ch == '(') - sc.ChangeState(SCE_BAAN_WORD3); - else - sc.ChangeState(SCE_BAAN_IDENTIFIER); - } - else if ((keywords4.kwHasSection && (sc.ch == ':')) ? keywords4.Contains(s1) : keywords4.Contains(s)) { - sc.ChangeState(SCE_BAAN_WORD4); - } - else if ((keywords5.kwHasSection && (sc.ch == ':')) ? keywords5.Contains(s1) : keywords5.Contains(s)) { - sc.ChangeState(SCE_BAAN_WORD5); - } - else if ((keywords6.kwHasSection && (sc.ch == ':')) ? keywords6.Contains(s1) : keywords6.Contains(s)) { - sc.ChangeState(SCE_BAAN_WORD6); - } - else if ((keywords7.kwHasSection && (sc.ch == ':')) ? keywords7.Contains(s1) : keywords7.Contains(s)) { - sc.ChangeState(SCE_BAAN_WORD7); - } - else if ((keywords8.kwHasSection && (sc.ch == ':')) ? keywords8.Contains(s1) : keywords8.Contains(s)) { - sc.ChangeState(SCE_BAAN_WORD8); - } - else if ((keywords9.kwHasSection && (sc.ch == ':')) ? keywords9.Contains(s1) : keywords9.Contains(s)) { - sc.ChangeState(SCE_BAAN_WORD9); - } - else if (lineHasPreProc) { - sc.ChangeState(SCE_BAAN_OBJECTDEF); - lineHasPreProc = false; - } - else if (lineHasDefines) { - sc.ChangeState(SCE_BAAN_DEFINEDEF); - lineHasDefines = false; - } - else { - int state = IsAnyOtherIdentifier(s, sc.LengthCurrent()); - if (state > 0) { - sc.ChangeState(state); - } - } - sc.SetState(SCE_BAAN_DEFAULT); - } - break; - case SCE_BAAN_PREPROCESSOR: - if (options.baanStylingWithinPreprocessor) { - if (IsASpace(sc.ch) || IsAnOperator(sc.ch)) { - sc.SetState(SCE_BAAN_DEFAULT); - } - } - else { - if (sc.atLineEnd && (sc.chNext != '^')) { - sc.SetState(SCE_BAAN_DEFAULT); - } - } - break; - case SCE_BAAN_COMMENT: - if (sc.ch == '\r' || sc.ch == '\n') { - sc.SetState(SCE_BAAN_DEFAULT); - } - break; - case SCE_BAAN_COMMENTDOC: - if (sc.MatchIgnoreCase("enddllusage")) { - for (unsigned int i = 0; i < 10; i++) { - sc.Forward(); - } - sc.ForwardSetState(SCE_BAAN_DEFAULT); - } - else if (sc.MatchIgnoreCase("endfunctionusage")) { - for (unsigned int i = 0; i < 15; i++) { - sc.Forward(); - } - sc.ForwardSetState(SCE_BAAN_DEFAULT); - } - break; - case SCE_BAAN_STRING: - if (sc.ch == '\"') { - sc.ForwardSetState(SCE_BAAN_DEFAULT); - } - else if ((sc.atLineEnd) && (sc.chNext != '^')) { - sc.ChangeState(SCE_BAAN_STRINGEOL); - sc.ForwardSetState(SCE_BAAN_DEFAULT); - visibleChars = 0; - } - break; - } - - // Determine if a new state should be entered. - if (sc.state == SCE_BAAN_DEFAULT) { - if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)) - || ((sc.ch == '-' || sc.ch == '+') && (IsADigit(sc.chNext) || sc.chNext == '.')) - || (MakeLowerCase(sc.ch) == 'e' && (IsADigit(sc.chNext) || sc.chNext == '+' || sc.chNext == '-'))) { - if ((sc.ch == '0' && MakeLowerCase(sc.chNext) == 'x') || - ((sc.ch == '-' || sc.ch == '+') && sc.chNext == '0' && MakeLowerCase(sc.GetRelativeCharacter(2)) == 'x')){ - numberIsHex = true; - } - sc.SetState(SCE_BAAN_NUMBER); - } - else if (sc.MatchIgnoreCase("dllusage") || sc.MatchIgnoreCase("functionusage")) { - sc.SetState(SCE_BAAN_COMMENTDOC); - do { - sc.Forward(); - } while ((!sc.atLineEnd) && sc.More()); - } - else if (iswordstart(sc.ch)) { - sc.SetState(SCE_BAAN_IDENTIFIER); - } - else if (sc.Match('|')) { - sc.SetState(SCE_BAAN_COMMENT); - } - else if (sc.ch == '\"' && !(lineIgnoreString)) { - sc.SetState(SCE_BAAN_STRING); - } - else if (sc.ch == '#' && visibleChars == 0) { - // Preprocessor commands are alone on their line - sc.SetState(SCE_BAAN_PREPROCESSOR); - word[0] = '\0'; - wordlen = 0; - while (sc.More() && !(IsASpace(sc.chNext) || IsAnOperator(sc.chNext))) { - sc.Forward(); - wordlen++; - } - sc.GetCurrentLowered(word, sizeof(word)); - if (!sc.atLineEnd) { - word[wordlen++] = sc.ch; - word[wordlen++] = '\0'; - } - if (!wordInArray(word, preProcessorTags, 13)) - // Colorise only preprocessor built in Baan. - sc.ChangeState(SCE_BAAN_IDENTIFIER); - if (strcmp(word, "#pragma") == 0 || strcmp(word, "#include") == 0) { - lineHasPreProc = true; - lineIgnoreString = true; - } - else if (strcmp(word, "#define") == 0 || strcmp(word, "#undef") == 0 || - strcmp(word, "#ifdef") == 0 || strcmp(word, "#if") == 0 || strcmp(word, "#ifndef") == 0) { - lineHasDefines = true; - lineIgnoreString = false; - } - } - else if (IsAnOperator(static_cast(sc.ch))) { - sc.SetState(SCE_BAAN_OPERATOR); - } - } - - if (sc.atLineEnd) { - // Reset states to begining of colourise so no surprises - // if different sets of lines lexed. - visibleChars = 0; - lineHasDomain = false; - lineHasFunction = false; - lineHasPreProc = false; - lineIgnoreString = false; - lineHasDefines = false; - numberIsHex = false; - } - if (!IsASpace(sc.ch)) { - visibleChars++; - } - } - sc.Complete(); -} - -void SCI_METHOD LexerBaan::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - if (!options.fold) - return; - - char word[100]; - int wordlen = 0; - bool foldStart = true; - bool foldNextSelect = true; - bool afterFunctionSection = false; - bool beforeDeclarationSection = false; - int currLineStyle = 0; - int nextLineStyle = 0; - - std::string startTags[6] = { "for", "if", "on", "repeat", "select", "while" }; - std::string endTags[6] = { "endcase", "endfor", "endif", "endselect", "endwhile", "until" }; - std::string selectCloseTags[5] = { "selectdo", "selecteos", "selectempty", "selecterror", "endselect" }; - - LexAccessor styler(pAccess); - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - - // Backtrack to previous line in case need to fix its fold status - if (startPos > 0) { - if (lineCurrent > 0) { - lineCurrent--; - startPos = styler.LineStart(lineCurrent); - } - } - - int levelPrev = SC_FOLDLEVELBASE; - if (lineCurrent > 0) - levelPrev = styler.LevelAt(lineCurrent - 1) >> 16; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int style = initStyle; - int styleNext = styler.StyleAt(startPos); - - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - style = styleNext; - styleNext = styler.StyleAt(i + 1); - int stylePrev = (i) ? styler.StyleAt(i - 1) : SCE_BAAN_DEFAULT; - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - - // Comment folding - if (options.foldComment && style == SCE_BAAN_COMMENTDOC) { - if (style != stylePrev) { - levelCurrent++; - } - else if (style != styleNext) { - levelCurrent--; - } - } - if (options.foldComment && atEOL && IsCommentLine(lineCurrent, styler)) { - if (!IsCommentLine(lineCurrent - 1, styler) - && IsCommentLine(lineCurrent + 1, styler)) - levelCurrent++; - else if (IsCommentLine(lineCurrent - 1, styler) - && !IsCommentLine(lineCurrent + 1, styler)) - levelCurrent--; - } - // PreProcessor Folding - if (options.foldPreprocessor) { - if (atEOL && IsPreProcLine(lineCurrent, styler)) { - if (!IsPreProcLine(lineCurrent - 1, styler) - && IsPreProcLine(lineCurrent + 1, styler)) - levelCurrent++; - else if (IsPreProcLine(lineCurrent - 1, styler) - && !IsPreProcLine(lineCurrent + 1, styler)) - levelCurrent--; - } - else if (style == SCE_BAAN_PREPROCESSOR) { - // folds #ifdef/#if/#ifndef - they are not part of the IsPreProcLine folding. - if (ch == '#') { - if (styler.Match(i, "#ifdef") || styler.Match(i, "#if") || styler.Match(i, "#ifndef") - || styler.Match(i, "#context_on")) - levelCurrent++; - else if (styler.Match(i, "#endif") || styler.Match(i, "#context_off")) - levelCurrent--; - } - } - } - //Syntax Folding - if (options.baanFoldSyntaxBased && (style == SCE_BAAN_OPERATOR)) { - if (ch == '{' || ch == '(') { - levelCurrent++; - } - else if (ch == '}' || ch == ')') { - levelCurrent--; - } - } - //Keywords Folding - if (options.baanFoldKeywordsBased) { - if (atEOL && IsDeclarationLine(lineCurrent, styler)) { - if (!IsDeclarationLine(lineCurrent - 1, styler) - && IsDeclarationLine(lineCurrent + 1, styler)) - levelCurrent++; - else if (IsDeclarationLine(lineCurrent - 1, styler) - && !IsDeclarationLine(lineCurrent + 1, styler)) - levelCurrent--; - } - else if (style == SCE_BAAN_WORD) { - word[wordlen++] = static_cast(MakeLowerCase(ch)); - if (wordlen == 100) { // prevent overflow - word[0] = '\0'; - wordlen = 1; - } - if (styleNext != SCE_BAAN_WORD) { - word[wordlen] = '\0'; - wordlen = 0; - if (strcmp(word, "for") == 0) { - Sci_PositionU j = i + 1; - while ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { - j++; - } - if (styler.Match(j, "update")) { - // Means this is a "for update" used by Select which is already folded. - foldStart = false; - } - } - else if (strcmp(word, "on") == 0) { - Sci_PositionU j = i + 1; - while ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { - j++; - } - if (!styler.Match(j, "case")) { - // Means this is not a "on Case" statement... could be "on" used by index. - foldStart = false; - } - } - else if (strcmp(word, "select") == 0) { - if (foldNextSelect) { - // Next Selects are sub-clause till reach of selectCloseTags[] array. - foldNextSelect = false; - foldStart = true; - } - else { - foldNextSelect = false; - foldStart = false; - } - } - else if (wordInArray(word, selectCloseTags, 5)) { - // select clause ends, next select clause can be folded. - foldNextSelect = true; - foldStart = true; - } - else { - foldStart = true; - } - if (foldStart) { - if (wordInArray(word, startTags, 6)) { - levelCurrent++; - } - else if (wordInArray(word, endTags, 6)) { - levelCurrent--; - } - } - } - } - } - // Fold inner level of if/select/case statements - if (options.baanFoldInnerLevel && atEOL) { - bool currLineInnerLevel = IsInnerLevelFold(lineCurrent, styler); - bool nextLineInnerLevel = IsInnerLevelFold(lineCurrent + 1, styler); - if (currLineInnerLevel && currLineInnerLevel != nextLineInnerLevel) { - levelCurrent++; - } - else if (nextLineInnerLevel && nextLineInnerLevel != currLineInnerLevel) { - levelCurrent--; - } - } - // Section Foldings. - // One way of implementing Section Foldings, as there is no END markings of sections. - // first section ends on the previous line of next section. - // Re-written whole folding to accomodate this. - if (options.baanFoldSections && atEOL) { - currLineStyle = mainOrSubSectionLine(lineCurrent, styler); - nextLineStyle = mainOrSubSectionLine(lineCurrent + 1, styler); - if (currLineStyle != 0 && currLineStyle != nextLineStyle) { - if (levelCurrent < levelPrev) - --levelPrev; - for (Sci_Position j = styler.LineStart(lineCurrent); j < styler.LineStart(lineCurrent + 1) - 1; j++) { - if (IsASpaceOrTab(styler[j])) - continue; - else if (styler.StyleAt(j) == SCE_BAAN_WORD5) { - if (styler.Match(j, "functions:")) { - // Means functions: is the end of MainSections. - // Nothing to fold after this. - afterFunctionSection = true; - break; - } - else { - afterFunctionSection = false; - break; - } - } - else { - afterFunctionSection = false; - break; - } - } - if (!afterFunctionSection) - levelCurrent++; - } - else if (nextLineStyle != 0 && currLineStyle != nextLineStyle - && (priorSectionIsSubSection(lineCurrent -1 ,styler) - || !nextSectionIsSubSection(lineCurrent + 1, styler))) { - for (Sci_Position j = styler.LineStart(lineCurrent + 1); j < styler.LineStart(lineCurrent + 1 + 1) - 1; j++) { - if (IsASpaceOrTab(styler[j])) - continue; - else if (styler.StyleAt(j) == SCE_BAAN_WORD5) { - if (styler.Match(j, "declaration:")) { - // Means declaration: is the start of MainSections. - // Nothing to fold before this. - beforeDeclarationSection = true; - break; - } - else { - beforeDeclarationSection = false; - break; - } - } - else { - beforeDeclarationSection = false; - break; - } - } - if (!beforeDeclarationSection) { - levelCurrent--; - if (nextLineStyle == SCE_BAAN_WORD5 && priorSectionIsSubSection(lineCurrent-1, styler)) - // next levelCurrent--; is to unfold previous subsection fold. - // On reaching the next main section, the previous main as well sub section ends. - levelCurrent--; - } - } - } - if (atEOL) { - int lev = levelPrev; - lev |= levelCurrent << 16; - if (visibleChars == 0 && options.foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - if (!isspacechar(ch)) - visibleChars++; - } - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -LexerModule lmBaan(SCLEX_BAAN, LexerBaan::LexerFactoryBaan, "baan", baanWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBash.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBash.cpp deleted file mode 100644 index 5bbd563d5..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBash.cpp +++ /dev/null @@ -1,907 +0,0 @@ -// Scintilla source code edit control -/** @file LexBash.cxx - ** Lexer for Bash. - **/ -// Copyright 2004-2012 by Neil Hodgson -// Adapted from LexPerl by Kein-Hong Man 2004 -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -#define HERE_DELIM_MAX 256 - -// define this if you want 'invalid octals' to be marked as errors -// usually, this is not a good idea, permissive lexing is better -#undef PEDANTIC_OCTAL - -#define BASH_BASE_ERROR 65 -#define BASH_BASE_DECIMAL 66 -#define BASH_BASE_HEX 67 -#ifdef PEDANTIC_OCTAL -#define BASH_BASE_OCTAL 68 -#define BASH_BASE_OCTAL_ERROR 69 -#endif - -// state constants for parts of a bash command segment -#define BASH_CMD_BODY 0 -#define BASH_CMD_START 1 -#define BASH_CMD_WORD 2 -#define BASH_CMD_TEST 3 -#define BASH_CMD_ARITH 4 -#define BASH_CMD_DELIM 5 - -// state constants for nested delimiter pairs, used by -// SCE_SH_STRING and SCE_SH_BACKTICKS processing -#define BASH_DELIM_LITERAL 0 -#define BASH_DELIM_STRING 1 -#define BASH_DELIM_CSTRING 2 -#define BASH_DELIM_LSTRING 3 -#define BASH_DELIM_COMMAND 4 -#define BASH_DELIM_BACKTICK 5 - -#define BASH_DELIM_STACK_MAX 7 - -static inline int translateBashDigit(int ch) { - if (ch >= '0' && ch <= '9') { - return ch - '0'; - } else if (ch >= 'a' && ch <= 'z') { - return ch - 'a' + 10; - } else if (ch >= 'A' && ch <= 'Z') { - return ch - 'A' + 36; - } else if (ch == '@') { - return 62; - } else if (ch == '_') { - return 63; - } - return BASH_BASE_ERROR; -} - -static inline int getBashNumberBase(char *s) { - int i = 0; - int base = 0; - while (*s) { - base = base * 10 + (*s++ - '0'); - i++; - } - if (base > 64 || i > 2) { - return BASH_BASE_ERROR; - } - return base; -} - -static int opposite(int ch) { - if (ch == '(') return ')'; - if (ch == '[') return ']'; - if (ch == '{') return '}'; - if (ch == '<') return '>'; - return ch; -} - -static int GlobScan(StyleContext &sc) { - // forward scan for zsh globs, disambiguate versus bash arrays - // complex expressions may still fail, e.g. unbalanced () '' "" etc - int c, sLen = 0; - int pCount = 0; - int hash = 0; - while ((c = sc.GetRelativeCharacter(++sLen)) != 0) { - if (IsASpace(c)) { - return 0; - } else if (c == '\'' || c == '\"') { - if (hash != 2) return 0; - } else if (c == '#' && hash == 0) { - hash = (sLen == 1) ? 2:1; - } else if (c == '(') { - pCount++; - } else if (c == ')') { - if (pCount == 0) { - if (hash) return sLen; - return 0; - } - pCount--; - } - } - return 0; -} - -static void ColouriseBashDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList cmdDelimiter, bashStruct, bashStruct_in; - cmdDelimiter.Set("| || |& & && ; ;; ( ) { }"); - bashStruct.Set("if elif fi while until else then do done esac eval"); - bashStruct_in.Set("for case select"); - - CharacterSet setWordStart(CharacterSet::setAlpha, "_"); - // note that [+-] are often parts of identifiers in shell scripts - CharacterSet setWord(CharacterSet::setAlphaNum, "._+-"); - CharacterSet setMetaCharacter(CharacterSet::setNone, "|&;()<> \t\r\n"); - setMetaCharacter.Add(0); - CharacterSet setBashOperator(CharacterSet::setNone, "^&%()-+=|{}[]:;>,*/(ch); - Delimiter[DelimiterLength] = '\0'; - } - ~HereDocCls() { - } - }; - HereDocCls HereDoc; - - class QuoteCls { // Class to manage quote pairs (simplified vs LexPerl) - public: - int Count; - int Up, Down; - QuoteCls() { - Count = 0; - Up = '\0'; - Down = '\0'; - } - void Open(int u) { - Count++; - Up = u; - Down = opposite(Up); - } - void Start(int u) { - Count = 0; - Open(u); - } - }; - QuoteCls Quote; - - class QuoteStackCls { // Class to manage quote pairs that nest - public: - int Count; - int Up, Down; - int Style; - int Depth; // levels pushed - int CountStack[BASH_DELIM_STACK_MAX]; - int UpStack [BASH_DELIM_STACK_MAX]; - int StyleStack[BASH_DELIM_STACK_MAX]; - QuoteStackCls() { - Count = 0; - Up = '\0'; - Down = '\0'; - Style = 0; - Depth = 0; - } - void Start(int u, int s) { - Count = 1; - Up = u; - Down = opposite(Up); - Style = s; - } - void Push(int u, int s) { - if (Depth >= BASH_DELIM_STACK_MAX) - return; - CountStack[Depth] = Count; - UpStack [Depth] = Up; - StyleStack[Depth] = Style; - Depth++; - Count = 1; - Up = u; - Down = opposite(Up); - Style = s; - } - void Pop(void) { - if (Depth <= 0) - return; - Depth--; - Count = CountStack[Depth]; - Up = UpStack [Depth]; - Style = StyleStack[Depth]; - Down = opposite(Up); - } - ~QuoteStackCls() { - } - }; - QuoteStackCls QuoteStack; - - int numBase = 0; - int digit; - Sci_PositionU endPos = startPos + length; - int cmdState = BASH_CMD_START; - int testExprType = 0; - - // Always backtracks to the start of a line that is not a continuation - // of the previous line (i.e. start of a bash command segment) - Sci_Position ln = styler.GetLine(startPos); - if (ln > 0 && startPos == static_cast(styler.LineStart(ln))) - ln--; - for (;;) { - startPos = styler.LineStart(ln); - if (ln == 0 || styler.GetLineState(ln) == BASH_CMD_START) - break; - ln--; - } - initStyle = SCE_SH_DEFAULT; - - StyleContext sc(startPos, endPos - startPos, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - - // handle line continuation, updates per-line stored state - if (sc.atLineStart) { - ln = styler.GetLine(sc.currentPos); - if (sc.state == SCE_SH_STRING - || sc.state == SCE_SH_BACKTICKS - || sc.state == SCE_SH_CHARACTER - || sc.state == SCE_SH_HERE_Q - || sc.state == SCE_SH_COMMENTLINE - || sc.state == SCE_SH_PARAM) { - // force backtrack while retaining cmdState - styler.SetLineState(ln, BASH_CMD_BODY); - } else { - if (ln > 0) { - if ((sc.GetRelative(-3) == '\\' && sc.GetRelative(-2) == '\r' && sc.chPrev == '\n') - || sc.GetRelative(-2) == '\\') { // handle '\' line continuation - // retain last line's state - } else - cmdState = BASH_CMD_START; - } - styler.SetLineState(ln, cmdState); - } - } - - // controls change of cmdState at the end of a non-whitespace element - // states BODY|TEST|ARITH persist until the end of a command segment - // state WORD persist, but ends with 'in' or 'do' construct keywords - int cmdStateNew = BASH_CMD_BODY; - if (cmdState == BASH_CMD_TEST || cmdState == BASH_CMD_ARITH || cmdState == BASH_CMD_WORD) - cmdStateNew = cmdState; - int stylePrev = sc.state; - - // Determine if the current state should terminate. - switch (sc.state) { - case SCE_SH_OPERATOR: - sc.SetState(SCE_SH_DEFAULT); - if (cmdState == BASH_CMD_DELIM) // if command delimiter, start new command - cmdStateNew = BASH_CMD_START; - else if (sc.chPrev == '\\') // propagate command state if line continued - cmdStateNew = cmdState; - break; - case SCE_SH_WORD: - // "." never used in Bash variable names but used in file names - if (!setWord.Contains(sc.ch)) { - char s[500]; - char s2[10]; - sc.GetCurrent(s, sizeof(s)); - // allow keywords ending in a whitespace or command delimiter - s2[0] = static_cast(sc.ch); - s2[1] = '\0'; - bool keywordEnds = IsASpace(sc.ch) || cmdDelimiter.InList(s2); - // 'in' or 'do' may be construct keywords - if (cmdState == BASH_CMD_WORD) { - if (strcmp(s, "in") == 0 && keywordEnds) - cmdStateNew = BASH_CMD_BODY; - else if (strcmp(s, "do") == 0 && keywordEnds) - cmdStateNew = BASH_CMD_START; - else - sc.ChangeState(SCE_SH_IDENTIFIER); - sc.SetState(SCE_SH_DEFAULT); - break; - } - // a 'test' keyword starts a test expression - if (strcmp(s, "test") == 0) { - if (cmdState == BASH_CMD_START && keywordEnds) { - cmdStateNew = BASH_CMD_TEST; - testExprType = 0; - } else - sc.ChangeState(SCE_SH_IDENTIFIER); - } - // detect bash construct keywords - else if (bashStruct.InList(s)) { - if (cmdState == BASH_CMD_START && keywordEnds) - cmdStateNew = BASH_CMD_START; - else - sc.ChangeState(SCE_SH_IDENTIFIER); - } - // 'for'|'case'|'select' needs 'in'|'do' to be highlighted later - else if (bashStruct_in.InList(s)) { - if (cmdState == BASH_CMD_START && keywordEnds) - cmdStateNew = BASH_CMD_WORD; - else - sc.ChangeState(SCE_SH_IDENTIFIER); - } - // disambiguate option items and file test operators - else if (s[0] == '-') { - if (cmdState != BASH_CMD_TEST) - sc.ChangeState(SCE_SH_IDENTIFIER); - } - // disambiguate keywords and identifiers - else if (cmdState != BASH_CMD_START - || !(keywords.InList(s) && keywordEnds)) { - sc.ChangeState(SCE_SH_IDENTIFIER); - } - sc.SetState(SCE_SH_DEFAULT); - } - break; - case SCE_SH_IDENTIFIER: - if (sc.chPrev == '\\') { // for escaped chars - sc.ForwardSetState(SCE_SH_DEFAULT); - } else if (!setWord.Contains(sc.ch)) { - sc.SetState(SCE_SH_DEFAULT); - } else if (cmdState == BASH_CMD_ARITH && !setWordStart.Contains(sc.ch)) { - sc.SetState(SCE_SH_DEFAULT); - } - break; - case SCE_SH_NUMBER: - digit = translateBashDigit(sc.ch); - if (numBase == BASH_BASE_DECIMAL) { - if (sc.ch == '#') { - char s[10]; - sc.GetCurrent(s, sizeof(s)); - numBase = getBashNumberBase(s); - if (numBase != BASH_BASE_ERROR) - break; - } else if (IsADigit(sc.ch)) - break; - } else if (numBase == BASH_BASE_HEX) { - if (IsADigit(sc.ch, 16)) - break; -#ifdef PEDANTIC_OCTAL - } else if (numBase == BASH_BASE_OCTAL || - numBase == BASH_BASE_OCTAL_ERROR) { - if (digit <= 7) - break; - if (digit <= 9) { - numBase = BASH_BASE_OCTAL_ERROR; - break; - } -#endif - } else if (numBase == BASH_BASE_ERROR) { - if (digit <= 9) - break; - } else { // DD#DDDD number style handling - if (digit != BASH_BASE_ERROR) { - if (numBase <= 36) { - // case-insensitive if base<=36 - if (digit >= 36) digit -= 26; - } - if (digit < numBase) - break; - if (digit <= 9) { - numBase = BASH_BASE_ERROR; - break; - } - } - } - // fallthrough when number is at an end or error - if (numBase == BASH_BASE_ERROR -#ifdef PEDANTIC_OCTAL - || numBase == BASH_BASE_OCTAL_ERROR -#endif - ) { - sc.ChangeState(SCE_SH_ERROR); - } - sc.SetState(SCE_SH_DEFAULT); - break; - case SCE_SH_COMMENTLINE: - if (sc.atLineEnd && sc.chPrev != '\\') { - sc.SetState(SCE_SH_DEFAULT); - } - break; - case SCE_SH_HERE_DELIM: - // From Bash info: - // --------------- - // Specifier format is: <<[-]WORD - // Optional '-' is for removal of leading tabs from here-doc. - // Whitespace acceptable after <<[-] operator - // - if (HereDoc.State == 0) { // '<<' encountered - HereDoc.Quote = sc.chNext; - HereDoc.Quoted = false; - HereDoc.DelimiterLength = 0; - HereDoc.Delimiter[HereDoc.DelimiterLength] = '\0'; - if (sc.chNext == '\'' || sc.chNext == '\"') { // a quoted here-doc delimiter (' or ") - sc.Forward(); - HereDoc.Quoted = true; - HereDoc.State = 1; - } else if (setHereDoc.Contains(sc.chNext) || - (sc.chNext == '=' && cmdState != BASH_CMD_ARITH)) { - // an unquoted here-doc delimiter, no special handling - HereDoc.State = 1; - } else if (sc.chNext == '<') { // HERE string <<< - sc.Forward(); - sc.ForwardSetState(SCE_SH_DEFAULT); - } else if (IsASpace(sc.chNext)) { - // eat whitespace - } else if (setLeftShift.Contains(sc.chNext) || - (sc.chNext == '=' && cmdState == BASH_CMD_ARITH)) { - // left shift <<$var or <<= cases - sc.ChangeState(SCE_SH_OPERATOR); - sc.ForwardSetState(SCE_SH_DEFAULT); - } else { - // symbols terminates; deprecated zero-length delimiter - HereDoc.State = 1; - } - } else if (HereDoc.State == 1) { // collect the delimiter - // * if single quoted, there's no escape - // * if double quoted, there are \\ and \" escapes - if ((HereDoc.Quote == '\'' && sc.ch != HereDoc.Quote) || - (HereDoc.Quoted && sc.ch != HereDoc.Quote && sc.ch != '\\') || - (HereDoc.Quote != '\'' && sc.chPrev == '\\') || - (setHereDoc2.Contains(sc.ch))) { - HereDoc.Append(sc.ch); - } else if (HereDoc.Quoted && sc.ch == HereDoc.Quote) { // closing quote => end of delimiter - sc.ForwardSetState(SCE_SH_DEFAULT); - } else if (sc.ch == '\\') { - if (HereDoc.Quoted && sc.chNext != HereDoc.Quote && sc.chNext != '\\') { - // in quoted prefixes only \ and the quote eat the escape - HereDoc.Append(sc.ch); - } else { - // skip escape prefix - } - } else if (!HereDoc.Quoted) { - sc.SetState(SCE_SH_DEFAULT); - } - if (HereDoc.DelimiterLength >= HERE_DELIM_MAX - 1) { // force blowup - sc.SetState(SCE_SH_ERROR); - HereDoc.State = 0; - } - } - break; - case SCE_SH_HERE_Q: - // HereDoc.State == 2 - if (sc.atLineStart) { - sc.SetState(SCE_SH_HERE_Q); - int prefixws = 0; - while (sc.ch == '\t' && !sc.atLineEnd) { // tabulation prefix - sc.Forward(); - prefixws++; - } - if (prefixws > 0) - sc.SetState(SCE_SH_HERE_Q); - while (!sc.atLineEnd) { - sc.Forward(); - } - char s[HERE_DELIM_MAX]; - sc.GetCurrent(s, sizeof(s)); - if (sc.LengthCurrent() == 0) { // '' or "" delimiters - if ((prefixws == 0 || HereDoc.Indent) && - HereDoc.Quoted && HereDoc.DelimiterLength == 0) - sc.SetState(SCE_SH_DEFAULT); - break; - } - if (s[strlen(s) - 1] == '\r') - s[strlen(s) - 1] = '\0'; - if (strcmp(HereDoc.Delimiter, s) == 0) { - if ((prefixws == 0) || // indentation rule - (prefixws > 0 && HereDoc.Indent)) { - sc.SetState(SCE_SH_DEFAULT); - break; - } - } - } - break; - case SCE_SH_SCALAR: // variable names - if (!setParam.Contains(sc.ch)) { - if (sc.LengthCurrent() == 1) { - // Special variable: $(, $_ etc. - sc.ForwardSetState(SCE_SH_DEFAULT); - } else { - sc.SetState(SCE_SH_DEFAULT); - } - } - break; - case SCE_SH_STRING: // delimited styles, can nest - case SCE_SH_BACKTICKS: - if (sc.ch == '\\' && QuoteStack.Up != '\\') { - if (QuoteStack.Style != BASH_DELIM_LITERAL) - sc.Forward(); - } else if (sc.ch == QuoteStack.Down) { - QuoteStack.Count--; - if (QuoteStack.Count == 0) { - if (QuoteStack.Depth > 0) { - QuoteStack.Pop(); - } else - sc.ForwardSetState(SCE_SH_DEFAULT); - } - } else if (sc.ch == QuoteStack.Up) { - QuoteStack.Count++; - } else { - if (QuoteStack.Style == BASH_DELIM_STRING || - QuoteStack.Style == BASH_DELIM_LSTRING - ) { // do nesting for "string", $"locale-string" - if (sc.ch == '`') { - QuoteStack.Push(sc.ch, BASH_DELIM_BACKTICK); - } else if (sc.ch == '$' && sc.chNext == '(') { - sc.Forward(); - QuoteStack.Push(sc.ch, BASH_DELIM_COMMAND); - } - } else if (QuoteStack.Style == BASH_DELIM_COMMAND || - QuoteStack.Style == BASH_DELIM_BACKTICK - ) { // do nesting for $(command), `command` - if (sc.ch == '\'') { - QuoteStack.Push(sc.ch, BASH_DELIM_LITERAL); - } else if (sc.ch == '\"') { - QuoteStack.Push(sc.ch, BASH_DELIM_STRING); - } else if (sc.ch == '`') { - QuoteStack.Push(sc.ch, BASH_DELIM_BACKTICK); - } else if (sc.ch == '$') { - if (sc.chNext == '\'') { - sc.Forward(); - QuoteStack.Push(sc.ch, BASH_DELIM_CSTRING); - } else if (sc.chNext == '\"') { - sc.Forward(); - QuoteStack.Push(sc.ch, BASH_DELIM_LSTRING); - } else if (sc.chNext == '(') { - sc.Forward(); - QuoteStack.Push(sc.ch, BASH_DELIM_COMMAND); - } - } - } - } - break; - case SCE_SH_PARAM: // ${parameter} - if (sc.ch == '\\' && Quote.Up != '\\') { - sc.Forward(); - } else if (sc.ch == Quote.Down) { - Quote.Count--; - if (Quote.Count == 0) { - sc.ForwardSetState(SCE_SH_DEFAULT); - } - } else if (sc.ch == Quote.Up) { - Quote.Count++; - } - break; - case SCE_SH_CHARACTER: // singly-quoted strings - if (sc.ch == Quote.Down) { - Quote.Count--; - if (Quote.Count == 0) { - sc.ForwardSetState(SCE_SH_DEFAULT); - } - } - break; - } - - // Must check end of HereDoc state 1 before default state is handled - if (HereDoc.State == 1 && sc.atLineEnd) { - // Begin of here-doc (the line after the here-doc delimiter): - // Lexically, the here-doc starts from the next line after the >>, but the - // first line of here-doc seem to follow the style of the last EOL sequence - HereDoc.State = 2; - if (HereDoc.Quoted) { - if (sc.state == SCE_SH_HERE_DELIM) { - // Missing quote at end of string! Syntax error in bash 4.3 - // Mark this bit as an error, do not colour any here-doc - sc.ChangeState(SCE_SH_ERROR); - sc.SetState(SCE_SH_DEFAULT); - } else { - // HereDoc.Quote always == '\'' - sc.SetState(SCE_SH_HERE_Q); - } - } else if (HereDoc.DelimiterLength == 0) { - // no delimiter, illegal (but '' and "" are legal) - sc.ChangeState(SCE_SH_ERROR); - sc.SetState(SCE_SH_DEFAULT); - } else { - sc.SetState(SCE_SH_HERE_Q); - } - } - - // update cmdState about the current command segment - if (stylePrev != SCE_SH_DEFAULT && sc.state == SCE_SH_DEFAULT) { - cmdState = cmdStateNew; - } - // Determine if a new state should be entered. - if (sc.state == SCE_SH_DEFAULT) { - if (sc.ch == '\\') { - // Bash can escape any non-newline as a literal - sc.SetState(SCE_SH_IDENTIFIER); - if (sc.chNext == '\r' || sc.chNext == '\n') - sc.SetState(SCE_SH_OPERATOR); - } else if (IsADigit(sc.ch)) { - sc.SetState(SCE_SH_NUMBER); - numBase = BASH_BASE_DECIMAL; - if (sc.ch == '0') { // hex,octal - if (sc.chNext == 'x' || sc.chNext == 'X') { - numBase = BASH_BASE_HEX; - sc.Forward(); - } else if (IsADigit(sc.chNext)) { -#ifdef PEDANTIC_OCTAL - numBase = BASH_BASE_OCTAL; -#else - numBase = BASH_BASE_HEX; -#endif - } - } - } else if (setWordStart.Contains(sc.ch)) { - sc.SetState(SCE_SH_WORD); - } else if (sc.ch == '#') { - if (stylePrev != SCE_SH_WORD && stylePrev != SCE_SH_IDENTIFIER && - (sc.currentPos == 0 || setMetaCharacter.Contains(sc.chPrev))) { - sc.SetState(SCE_SH_COMMENTLINE); - } else { - sc.SetState(SCE_SH_WORD); - } - // handle some zsh features within arithmetic expressions only - if (cmdState == BASH_CMD_ARITH) { - if (sc.chPrev == '[') { // [#8] [##8] output digit setting - sc.SetState(SCE_SH_WORD); - if (sc.chNext == '#') { - sc.Forward(); - } - } else if (sc.Match("##^") && IsUpperCase(sc.GetRelative(3))) { // ##^A - sc.SetState(SCE_SH_IDENTIFIER); - sc.Forward(3); - } else if (sc.chNext == '#' && !IsASpace(sc.GetRelative(2))) { // ##a - sc.SetState(SCE_SH_IDENTIFIER); - sc.Forward(2); - } else if (setWordStart.Contains(sc.chNext)) { // #name - sc.SetState(SCE_SH_IDENTIFIER); - } - } - } else if (sc.ch == '\"') { - sc.SetState(SCE_SH_STRING); - QuoteStack.Start(sc.ch, BASH_DELIM_STRING); - } else if (sc.ch == '\'') { - sc.SetState(SCE_SH_CHARACTER); - Quote.Start(sc.ch); - } else if (sc.ch == '`') { - sc.SetState(SCE_SH_BACKTICKS); - QuoteStack.Start(sc.ch, BASH_DELIM_BACKTICK); - } else if (sc.ch == '$') { - if (sc.Match("$((")) { - sc.SetState(SCE_SH_OPERATOR); // handle '((' later - continue; - } - sc.SetState(SCE_SH_SCALAR); - sc.Forward(); - if (sc.ch == '{') { - sc.ChangeState(SCE_SH_PARAM); - Quote.Start(sc.ch); - } else if (sc.ch == '\'') { - sc.ChangeState(SCE_SH_STRING); - QuoteStack.Start(sc.ch, BASH_DELIM_CSTRING); - } else if (sc.ch == '"') { - sc.ChangeState(SCE_SH_STRING); - QuoteStack.Start(sc.ch, BASH_DELIM_LSTRING); - } else if (sc.ch == '(') { - sc.ChangeState(SCE_SH_BACKTICKS); - QuoteStack.Start(sc.ch, BASH_DELIM_COMMAND); - } else if (sc.ch == '`') { // $` seen in a configure script, valid? - sc.ChangeState(SCE_SH_BACKTICKS); - QuoteStack.Start(sc.ch, BASH_DELIM_BACKTICK); - } else { - continue; // scalar has no delimiter pair - } - } else if (sc.Match('<', '<')) { - sc.SetState(SCE_SH_HERE_DELIM); - HereDoc.State = 0; - if (sc.GetRelative(2) == '-') { // <<- indent case - HereDoc.Indent = true; - sc.Forward(); - } else { - HereDoc.Indent = false; - } - } else if (sc.ch == '-' && // one-char file test operators - setSingleCharOp.Contains(sc.chNext) && - !setWord.Contains(sc.GetRelative(2)) && - IsASpace(sc.chPrev)) { - sc.SetState(SCE_SH_WORD); - sc.Forward(); - } else if (setBashOperator.Contains(sc.ch)) { - char s[10]; - bool isCmdDelim = false; - sc.SetState(SCE_SH_OPERATOR); - // globs have no whitespace, do not appear in arithmetic expressions - if (cmdState != BASH_CMD_ARITH && sc.ch == '(' && sc.chNext != '(') { - int i = GlobScan(sc); - if (i > 1) { - sc.SetState(SCE_SH_IDENTIFIER); - sc.Forward(i); - continue; - } - } - // handle opening delimiters for test/arithmetic expressions - ((,[[,[ - if (cmdState == BASH_CMD_START - || cmdState == BASH_CMD_BODY) { - if (sc.Match('(', '(')) { - cmdState = BASH_CMD_ARITH; - sc.Forward(); - } else if (sc.Match('[', '[') && IsASpace(sc.GetRelative(2))) { - cmdState = BASH_CMD_TEST; - testExprType = 1; - sc.Forward(); - } else if (sc.ch == '[' && IsASpace(sc.chNext)) { - cmdState = BASH_CMD_TEST; - testExprType = 2; - } - } - // special state -- for ((x;y;z)) in ... looping - if (cmdState == BASH_CMD_WORD && sc.Match('(', '(')) { - cmdState = BASH_CMD_ARITH; - sc.Forward(); - continue; - } - // handle command delimiters in command START|BODY|WORD state, also TEST if 'test' - if (cmdState == BASH_CMD_START - || cmdState == BASH_CMD_BODY - || cmdState == BASH_CMD_WORD - || (cmdState == BASH_CMD_TEST && testExprType == 0)) { - s[0] = static_cast(sc.ch); - if (setBashOperator.Contains(sc.chNext)) { - s[1] = static_cast(sc.chNext); - s[2] = '\0'; - isCmdDelim = cmdDelimiter.InList(s); - if (isCmdDelim) - sc.Forward(); - } - if (!isCmdDelim) { - s[1] = '\0'; - isCmdDelim = cmdDelimiter.InList(s); - } - if (isCmdDelim) { - cmdState = BASH_CMD_DELIM; - continue; - } - } - // handle closing delimiters for test/arithmetic expressions - )),]],] - if (cmdState == BASH_CMD_ARITH && sc.Match(')', ')')) { - cmdState = BASH_CMD_BODY; - sc.Forward(); - } else if (cmdState == BASH_CMD_TEST && IsASpace(sc.chPrev)) { - if (sc.Match(']', ']') && testExprType == 1) { - sc.Forward(); - cmdState = BASH_CMD_BODY; - } else if (sc.ch == ']' && testExprType == 2) { - cmdState = BASH_CMD_BODY; - } - } - } - }// sc.state - } - sc.Complete(); - if (sc.state == SCE_SH_HERE_Q) { - styler.ChangeLexerState(sc.currentPos, styler.Length()); - } - sc.Complete(); -} - -static bool IsCommentLine(Sci_Position line, Accessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - if (ch == '#') - return true; - else if (ch != ' ' && ch != '\t') - return false; - } - return false; -} - -static void FoldBashDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], - Accessor &styler) { - bool foldComment = styler.GetPropertyInt("fold.comment") != 0; - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - int skipHereCh = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - char word[8] = { '\0' }; // we're not interested in long words anyway - unsigned int wordlen = 0; - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - // Comment folding - if (foldComment && atEOL && IsCommentLine(lineCurrent, styler)) - { - if (!IsCommentLine(lineCurrent - 1, styler) - && IsCommentLine(lineCurrent + 1, styler)) - levelCurrent++; - else if (IsCommentLine(lineCurrent - 1, styler) - && !IsCommentLine(lineCurrent + 1, styler)) - levelCurrent--; - } - if (style == SCE_SH_WORD) { - if ((wordlen + 1) < sizeof(word)) - word[wordlen++] = ch; - if (styleNext != style) { - word[wordlen] = '\0'; - wordlen = 0; - if (strcmp(word, "if") == 0 || strcmp(word, "case") == 0 || strcmp(word, "do") == 0) { - levelCurrent++; - } else if (strcmp(word, "fi") == 0 || strcmp(word, "esac") == 0 || strcmp(word, "done") == 0) { - levelCurrent--; - } - } - } - if (style == SCE_SH_OPERATOR) { - if (ch == '{') { - levelCurrent++; - } else if (ch == '}') { - levelCurrent--; - } - } - // Here Document folding - if (style == SCE_SH_HERE_DELIM) { - if (ch == '<' && chNext == '<') { - if (styler.SafeGetCharAt(i + 2) == '<') { - skipHereCh = 1; - } else { - if (skipHereCh == 0) { - levelCurrent++; - } else { - skipHereCh = 0; - } - } - } - } else if (style == SCE_SH_HERE_Q && styler.StyleAt(i+1) == SCE_SH_DEFAULT) { - levelCurrent--; - } - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - if (!isspacechar(ch)) - visibleChars++; - } - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -static const char * const bashWordListDesc[] = { - "Keywords", - 0 -}; - -LexerModule lmBash(SCLEX_BASH, ColouriseBashDoc, "bash", FoldBashDoc, bashWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBasic.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBasic.cpp deleted file mode 100644 index 4ec58dcdd..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBasic.cpp +++ /dev/null @@ -1,565 +0,0 @@ -// Scintilla source code edit control -/** @file LexBasic.cxx - ** Lexer for BlitzBasic and PureBasic. - ** Converted to lexer object and added further folding features/properties by "Udo Lechner" - **/ -// Copyright 1998-2003 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -// This tries to be a unified Lexer/Folder for all the BlitzBasic/BlitzMax/PurBasic basics -// and derivatives. Once they diverge enough, might want to split it into multiple -// lexers for more code clearity. -// -// Mail me (elias users sf net) for any bugs. - -// Folding only works for simple things like functions or types. - -// You may want to have a look at my ctags lexer as well, if you additionally to coloring -// and folding need to extract things like label tags in your editor. - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "OptionSet.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - -/* Bits: - * 1 - whitespace - * 2 - operator - * 4 - identifier - * 8 - decimal digit - * 16 - hex digit - * 32 - bin digit - * 64 - letter - */ -static int character_classification[128] = -{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 2, - 60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2, - 2, 84, 84, 84, 84, 84, 84, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 2, 2, 2, 2, 68, - 2, 84, 84, 84, 84, 84, 84, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 2, 2, 2, 2, 0 -}; - -static bool IsSpace(int c) { - return c < 128 && (character_classification[c] & 1); -} - -static bool IsOperator(int c) { - return c < 128 && (character_classification[c] & 2); -} - -static bool IsIdentifier(int c) { - return c < 128 && (character_classification[c] & 4); -} - -static bool IsDigit(int c) { - return c < 128 && (character_classification[c] & 8); -} - -static bool IsHexDigit(int c) { - return c < 128 && (character_classification[c] & 16); -} - -static bool IsBinDigit(int c) { - return c < 128 && (character_classification[c] & 32); -} - -static bool IsLetter(int c) { - return c < 128 && (character_classification[c] & 64); -} - -static int LowerCase(int c) -{ - if (c >= 'A' && c <= 'Z') - return 'a' + c - 'A'; - return c; -} - -static int CheckBlitzFoldPoint(char const *token, int &level) { - if (!strcmp(token, "function") || - !strcmp(token, "type")) { - level |= SC_FOLDLEVELHEADERFLAG; - return 1; - } - if (!strcmp(token, "end function") || - !strcmp(token, "end type")) { - return -1; - } - return 0; -} - -static int CheckPureFoldPoint(char const *token, int &level) { - if (!strcmp(token, "procedure") || - !strcmp(token, "enumeration") || - !strcmp(token, "interface") || - !strcmp(token, "structure")) { - level |= SC_FOLDLEVELHEADERFLAG; - return 1; - } - if (!strcmp(token, "endprocedure") || - !strcmp(token, "endenumeration") || - !strcmp(token, "endinterface") || - !strcmp(token, "endstructure")) { - return -1; - } - return 0; -} - -static int CheckFreeFoldPoint(char const *token, int &level) { - if (!strcmp(token, "function") || - !strcmp(token, "sub") || - !strcmp(token, "enum") || - !strcmp(token, "type") || - !strcmp(token, "union") || - !strcmp(token, "property") || - !strcmp(token, "destructor") || - !strcmp(token, "constructor")) { - level |= SC_FOLDLEVELHEADERFLAG; - return 1; - } - if (!strcmp(token, "end function") || - !strcmp(token, "end sub") || - !strcmp(token, "end enum") || - !strcmp(token, "end type") || - !strcmp(token, "end union") || - !strcmp(token, "end property") || - !strcmp(token, "end destructor") || - !strcmp(token, "end constructor")) { - return -1; - } - return 0; -} - -// An individual named option for use in an OptionSet - -// Options used for LexerBasic -struct OptionsBasic { - bool fold; - bool foldSyntaxBased; - bool foldCommentExplicit; - std::string foldExplicitStart; - std::string foldExplicitEnd; - bool foldExplicitAnywhere; - bool foldCompact; - OptionsBasic() { - fold = false; - foldSyntaxBased = true; - foldCommentExplicit = false; - foldExplicitStart = ""; - foldExplicitEnd = ""; - foldExplicitAnywhere = false; - foldCompact = true; - } -}; - -static const char * const blitzbasicWordListDesc[] = { - "BlitzBasic Keywords", - "user1", - "user2", - "user3", - 0 -}; - -static const char * const purebasicWordListDesc[] = { - "PureBasic Keywords", - "PureBasic PreProcessor Keywords", - "user defined 1", - "user defined 2", - 0 -}; - -static const char * const freebasicWordListDesc[] = { - "FreeBasic Keywords", - "FreeBasic PreProcessor Keywords", - "user defined 1", - "user defined 2", - 0 -}; - -struct OptionSetBasic : public OptionSet { - OptionSetBasic(const char * const wordListDescriptions[]) { - DefineProperty("fold", &OptionsBasic::fold); - - DefineProperty("fold.basic.syntax.based", &OptionsBasic::foldSyntaxBased, - "Set this property to 0 to disable syntax based folding."); - - DefineProperty("fold.basic.comment.explicit", &OptionsBasic::foldCommentExplicit, - "This option enables folding explicit fold points when using the Basic lexer. " - "Explicit fold points allows adding extra folding by placing a ;{ (BB/PB) or '{ (FB) comment at the start " - "and a ;} (BB/PB) or '} (FB) at the end of a section that should be folded."); - - DefineProperty("fold.basic.explicit.start", &OptionsBasic::foldExplicitStart, - "The string to use for explicit fold start points, replacing the standard ;{ (BB/PB) or '{ (FB)."); - - DefineProperty("fold.basic.explicit.end", &OptionsBasic::foldExplicitEnd, - "The string to use for explicit fold end points, replacing the standard ;} (BB/PB) or '} (FB)."); - - DefineProperty("fold.basic.explicit.anywhere", &OptionsBasic::foldExplicitAnywhere, - "Set this property to 1 to enable explicit fold points anywhere, not just in line comments."); - - DefineProperty("fold.compact", &OptionsBasic::foldCompact); - - DefineWordListSets(wordListDescriptions); - } -}; - -class LexerBasic : public DefaultLexer { - char comment_char; - int (*CheckFoldPoint)(char const *, int &); - WordList keywordlists[4]; - OptionsBasic options; - OptionSetBasic osBasic; -public: - LexerBasic(char comment_char_, int (*CheckFoldPoint_)(char const *, int &), const char * const wordListDescriptions[]) : - comment_char(comment_char_), - CheckFoldPoint(CheckFoldPoint_), - osBasic(wordListDescriptions) { - } - virtual ~LexerBasic() { - } - void SCI_METHOD Release() override { - delete this; - } - int SCI_METHOD Version() const override { - return lvOriginal; - } - const char * SCI_METHOD PropertyNames() override { - return osBasic.PropertyNames(); - } - int SCI_METHOD PropertyType(const char *name) override { - return osBasic.PropertyType(name); - } - const char * SCI_METHOD DescribeProperty(const char *name) override { - return osBasic.DescribeProperty(name); - } - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; - const char * SCI_METHOD DescribeWordListSets() override { - return osBasic.DescribeWordListSets(); - } - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - - void * SCI_METHOD PrivateCall(int, void *) override { - return 0; - } - static ILexer *LexerFactoryBlitzBasic() { - return new LexerBasic(';', CheckBlitzFoldPoint, blitzbasicWordListDesc); - } - static ILexer *LexerFactoryPureBasic() { - return new LexerBasic(';', CheckPureFoldPoint, purebasicWordListDesc); - } - static ILexer *LexerFactoryFreeBasic() { - return new LexerBasic('\'', CheckFreeFoldPoint, freebasicWordListDesc ); - } -}; - -Sci_Position SCI_METHOD LexerBasic::PropertySet(const char *key, const char *val) { - if (osBasic.PropertySet(&options, key, val)) { - return 0; - } - return -1; -} - -Sci_Position SCI_METHOD LexerBasic::WordListSet(int n, const char *wl) { - WordList *wordListN = 0; - switch (n) { - case 0: - wordListN = &keywordlists[0]; - break; - case 1: - wordListN = &keywordlists[1]; - break; - case 2: - wordListN = &keywordlists[2]; - break; - case 3: - wordListN = &keywordlists[3]; - break; - } - Sci_Position firstModification = -1; - if (wordListN) { - WordList wlNew; - wlNew.Set(wl); - if (*wordListN != wlNew) { - wordListN->Set(wl); - firstModification = 0; - } - } - return firstModification; -} - -void SCI_METHOD LexerBasic::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - LexAccessor styler(pAccess); - - bool wasfirst = true, isfirst = true; // true if first token in a line - styler.StartAt(startPos); - int styleBeforeKeyword = SCE_B_DEFAULT; - - StyleContext sc(startPos, length, initStyle, styler); - - // Can't use sc.More() here else we miss the last character - for (; ; sc.Forward()) { - if (sc.state == SCE_B_IDENTIFIER) { - if (!IsIdentifier(sc.ch)) { - // Labels - if (wasfirst && sc.Match(':')) { - sc.ChangeState(SCE_B_LABEL); - sc.ForwardSetState(SCE_B_DEFAULT); - } else { - char s[100]; - int kstates[4] = { - SCE_B_KEYWORD, - SCE_B_KEYWORD2, - SCE_B_KEYWORD3, - SCE_B_KEYWORD4, - }; - sc.GetCurrentLowered(s, sizeof(s)); - for (int i = 0; i < 4; i++) { - if (keywordlists[i].InList(s)) { - sc.ChangeState(kstates[i]); - } - } - // Types, must set them as operator else they will be - // matched as number/constant - if (sc.Match('.') || sc.Match('$') || sc.Match('%') || - sc.Match('#')) { - sc.SetState(SCE_B_OPERATOR); - } else { - sc.SetState(SCE_B_DEFAULT); - } - } - } - } else if (sc.state == SCE_B_OPERATOR) { - if (!IsOperator(sc.ch) || sc.Match('#')) - sc.SetState(SCE_B_DEFAULT); - } else if (sc.state == SCE_B_LABEL) { - if (!IsIdentifier(sc.ch)) - sc.SetState(SCE_B_DEFAULT); - } else if (sc.state == SCE_B_CONSTANT) { - if (!IsIdentifier(sc.ch)) - sc.SetState(SCE_B_DEFAULT); - } else if (sc.state == SCE_B_NUMBER) { - if (!IsDigit(sc.ch)) - sc.SetState(SCE_B_DEFAULT); - } else if (sc.state == SCE_B_HEXNUMBER) { - if (!IsHexDigit(sc.ch)) - sc.SetState(SCE_B_DEFAULT); - } else if (sc.state == SCE_B_BINNUMBER) { - if (!IsBinDigit(sc.ch)) - sc.SetState(SCE_B_DEFAULT); - } else if (sc.state == SCE_B_STRING) { - if (sc.ch == '"') { - sc.ForwardSetState(SCE_B_DEFAULT); - } - if (sc.atLineEnd) { - sc.ChangeState(SCE_B_ERROR); - sc.SetState(SCE_B_DEFAULT); - } - } else if (sc.state == SCE_B_COMMENT || sc.state == SCE_B_PREPROCESSOR) { - if (sc.atLineEnd) { - sc.SetState(SCE_B_DEFAULT); - } - } else if (sc.state == SCE_B_DOCLINE) { - if (sc.atLineEnd) { - sc.SetState(SCE_B_DEFAULT); - } else if (sc.ch == '\\' || sc.ch == '@') { - if (IsLetter(sc.chNext) && sc.chPrev != '\\') { - styleBeforeKeyword = sc.state; - sc.SetState(SCE_B_DOCKEYWORD); - }; - } - } else if (sc.state == SCE_B_DOCKEYWORD) { - if (IsSpace(sc.ch)) { - sc.SetState(styleBeforeKeyword); - } else if (sc.atLineEnd && styleBeforeKeyword == SCE_B_DOCLINE) { - sc.SetState(SCE_B_DEFAULT); - } - } else if (sc.state == SCE_B_COMMENTBLOCK) { - if (sc.Match("\'/")) { - sc.Forward(); - sc.ForwardSetState(SCE_B_DEFAULT); - } - } else if (sc.state == SCE_B_DOCBLOCK) { - if (sc.Match("\'/")) { - sc.Forward(); - sc.ForwardSetState(SCE_B_DEFAULT); - } else if (sc.ch == '\\' || sc.ch == '@') { - if (IsLetter(sc.chNext) && sc.chPrev != '\\') { - styleBeforeKeyword = sc.state; - sc.SetState(SCE_B_DOCKEYWORD); - }; - } - } - - if (sc.atLineStart) - isfirst = true; - - if (sc.state == SCE_B_DEFAULT || sc.state == SCE_B_ERROR) { - if (isfirst && sc.Match('.') && comment_char != '\'') { - sc.SetState(SCE_B_LABEL); - } else if (isfirst && sc.Match('#')) { - wasfirst = isfirst; - sc.SetState(SCE_B_IDENTIFIER); - } else if (sc.Match(comment_char)) { - // Hack to make deprecated QBASIC '$Include show - // up in freebasic with SCE_B_PREPROCESSOR. - if (comment_char == '\'' && sc.Match(comment_char, '$')) - sc.SetState(SCE_B_PREPROCESSOR); - else if (sc.Match("\'*") || sc.Match("\'!")) { - sc.SetState(SCE_B_DOCLINE); - } else { - sc.SetState(SCE_B_COMMENT); - } - } else if (sc.Match("/\'")) { - if (sc.Match("/\'*") || sc.Match("/\'!")) { // Support of gtk-doc/Doxygen doc. style - sc.SetState(SCE_B_DOCBLOCK); - } else { - sc.SetState(SCE_B_COMMENTBLOCK); - } - sc.Forward(); // Eat the ' so it isn't used for the end of the comment - } else if (sc.Match('"')) { - sc.SetState(SCE_B_STRING); - } else if (IsDigit(sc.ch)) { - sc.SetState(SCE_B_NUMBER); - } else if (sc.Match('$') || sc.Match("&h") || sc.Match("&H") || sc.Match("&o") || sc.Match("&O")) { - sc.SetState(SCE_B_HEXNUMBER); - } else if (sc.Match('%') || sc.Match("&b") || sc.Match("&B")) { - sc.SetState(SCE_B_BINNUMBER); - } else if (sc.Match('#')) { - sc.SetState(SCE_B_CONSTANT); - } else if (IsOperator(sc.ch)) { - sc.SetState(SCE_B_OPERATOR); - } else if (IsIdentifier(sc.ch)) { - wasfirst = isfirst; - sc.SetState(SCE_B_IDENTIFIER); - } else if (!IsSpace(sc.ch)) { - sc.SetState(SCE_B_ERROR); - } - } - - if (!IsSpace(sc.ch)) - isfirst = false; - - if (!sc.More()) - break; - } - sc.Complete(); -} - - -void SCI_METHOD LexerBasic::Fold(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, IDocument *pAccess) { - - if (!options.fold) - return; - - LexAccessor styler(pAccess); - - Sci_Position line = styler.GetLine(startPos); - int level = styler.LevelAt(line); - int go = 0, done = 0; - Sci_Position endPos = startPos + length; - char word[256]; - int wordlen = 0; - const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty(); - int cNext = styler[startPos]; - - // Scan for tokens at the start of the line (they may include - // whitespace, for tokens like "End Function" - for (Sci_Position i = startPos; i < endPos; i++) { - int c = cNext; - cNext = styler.SafeGetCharAt(i + 1); - bool atEOL = (c == '\r' && cNext != '\n') || (c == '\n'); - if (options.foldSyntaxBased && !done && !go) { - if (wordlen) { // are we scanning a token already? - word[wordlen] = static_cast(LowerCase(c)); - if (!IsIdentifier(c)) { // done with token - word[wordlen] = '\0'; - go = CheckFoldPoint(word, level); - if (!go) { - // Treat any whitespace as single blank, for - // things like "End Function". - if (IsSpace(c) && IsIdentifier(word[wordlen - 1])) { - word[wordlen] = ' '; - if (wordlen < 255) - wordlen++; - } - else // done with this line - done = 1; - } - } else if (wordlen < 255) { - wordlen++; - } - } else { // start scanning at first non-whitespace character - if (!IsSpace(c)) { - if (IsIdentifier(c)) { - word[0] = static_cast(LowerCase(c)); - wordlen = 1; - } else // done with this line - done = 1; - } - } - } - if (options.foldCommentExplicit && ((styler.StyleAt(i) == SCE_B_COMMENT) || options.foldExplicitAnywhere)) { - if (userDefinedFoldMarkers) { - if (styler.Match(i, options.foldExplicitStart.c_str())) { - level |= SC_FOLDLEVELHEADERFLAG; - go = 1; - } else if (styler.Match(i, options.foldExplicitEnd.c_str())) { - go = -1; - } - } else { - if (c == comment_char) { - if (cNext == '{') { - level |= SC_FOLDLEVELHEADERFLAG; - go = 1; - } else if (cNext == '}') { - go = -1; - } - } - } - } - if (atEOL) { // line end - if (!done && wordlen == 0 && options.foldCompact) // line was only space - level |= SC_FOLDLEVELWHITEFLAG; - if (level != styler.LevelAt(line)) - styler.SetLevel(line, level); - level += go; - line++; - // reset state - wordlen = 0; - level &= ~SC_FOLDLEVELHEADERFLAG; - level &= ~SC_FOLDLEVELWHITEFLAG; - go = 0; - done = 0; - } - } -} - -LexerModule lmBlitzBasic(SCLEX_BLITZBASIC, LexerBasic::LexerFactoryBlitzBasic, "blitzbasic", blitzbasicWordListDesc); - -LexerModule lmPureBasic(SCLEX_PUREBASIC, LexerBasic::LexerFactoryPureBasic, "purebasic", purebasicWordListDesc); - -LexerModule lmFreeBasic(SCLEX_FREEBASIC, LexerBasic::LexerFactoryFreeBasic, "freebasic", freebasicWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBatch.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBatch.cpp deleted file mode 100644 index db7e37688..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBatch.cpp +++ /dev/null @@ -1,498 +0,0 @@ -// Scintilla source code edit control -/** @file LexBatch.cxx - ** Lexer for batch files. - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static bool Is0To9(char ch) { - return (ch >= '0') && (ch <= '9'); -} - -static bool IsAlphabetic(int ch) { - return IsASCII(ch) && isalpha(ch); -} - -static inline bool AtEOL(Accessor &styler, Sci_PositionU i) { - return (styler[i] == '\n') || - ((styler[i] == '\r') && (styler.SafeGetCharAt(i + 1) != '\n')); -} - -// Tests for BATCH Operators -static bool IsBOperator(char ch) { - return (ch == '=') || (ch == '+') || (ch == '>') || (ch == '<') || - (ch == '|') || (ch == '?') || (ch == '*'); -} - -// Tests for BATCH Separators -static bool IsBSeparator(char ch) { - return (ch == '\\') || (ch == '.') || (ch == ';') || - (ch == '\"') || (ch == '\'') || (ch == '/'); -} - -static void ColouriseBatchLine( - char *lineBuffer, - Sci_PositionU lengthLine, - Sci_PositionU startLine, - Sci_PositionU endPos, - WordList *keywordlists[], - Accessor &styler) { - - Sci_PositionU offset = 0; // Line Buffer Offset - Sci_PositionU cmdLoc; // External Command / Program Location - char wordBuffer[81]; // Word Buffer - large to catch long paths - Sci_PositionU wbl; // Word Buffer Length - Sci_PositionU wbo; // Word Buffer Offset - also Special Keyword Buffer Length - WordList &keywords = *keywordlists[0]; // Internal Commands - WordList &keywords2 = *keywordlists[1]; // External Commands (optional) - - // CHOICE, ECHO, GOTO, PROMPT and SET have Default Text that may contain Regular Keywords - // Toggling Regular Keyword Checking off improves readability - // Other Regular Keywords and External Commands / Programs might also benefit from toggling - // Need a more robust algorithm to properly toggle Regular Keyword Checking - bool continueProcessing = true; // Used to toggle Regular Keyword Checking - // Special Keywords are those that allow certain characters without whitespace after the command - // Examples are: cd. cd\ md. rd. dir| dir> echo: echo. path= - // Special Keyword Buffer used to determine if the first n characters is a Keyword - char sKeywordBuffer[10]; // Special Keyword Buffer - bool sKeywordFound; // Exit Special Keyword for-loop if found - - // Skip initial spaces - while ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) { - offset++; - } - // Colorize Default Text - styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); - // Set External Command / Program Location - cmdLoc = offset; - - // Check for Fake Label (Comment) or Real Label - return if found - if (lineBuffer[offset] == ':') { - if (lineBuffer[offset + 1] == ':') { - // Colorize Fake Label (Comment) - :: is similar to REM, see http://content.techweb.com/winmag/columns/explorer/2000/21.htm - styler.ColourTo(endPos, SCE_BAT_COMMENT); - } else { - // Colorize Real Label - styler.ColourTo(endPos, SCE_BAT_LABEL); - } - return; - // Check for Drive Change (Drive Change is internal command) - return if found - } else if ((IsAlphabetic(lineBuffer[offset])) && - (lineBuffer[offset + 1] == ':') && - ((isspacechar(lineBuffer[offset + 2])) || - (((lineBuffer[offset + 2] == '\\')) && - (isspacechar(lineBuffer[offset + 3]))))) { - // Colorize Regular Keyword - styler.ColourTo(endPos, SCE_BAT_WORD); - return; - } - - // Check for Hide Command (@ECHO OFF/ON) - if (lineBuffer[offset] == '@') { - styler.ColourTo(startLine + offset, SCE_BAT_HIDE); - offset++; - } - // Skip next spaces - while ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) { - offset++; - } - - // Read remainder of line word-at-a-time or remainder-of-word-at-a-time - while (offset < lengthLine) { - if (offset > startLine) { - // Colorize Default Text - styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); - } - // Copy word from Line Buffer into Word Buffer - wbl = 0; - for (; offset < lengthLine && wbl < 80 && - !isspacechar(lineBuffer[offset]); wbl++, offset++) { - wordBuffer[wbl] = static_cast(tolower(lineBuffer[offset])); - } - wordBuffer[wbl] = '\0'; - wbo = 0; - - // Check for Comment - return if found - if (CompareCaseInsensitive(wordBuffer, "rem") == 0) { - styler.ColourTo(endPos, SCE_BAT_COMMENT); - return; - } - // Check for Separator - if (IsBSeparator(wordBuffer[0])) { - // Check for External Command / Program - if ((cmdLoc == offset - wbl) && - ((wordBuffer[0] == ':') || - (wordBuffer[0] == '\\') || - (wordBuffer[0] == '.'))) { - // Reset Offset to re-process remainder of word - offset -= (wbl - 1); - // Colorize External Command / Program - if (!keywords2) { - styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND); - } else if (keywords2.InList(wordBuffer)) { - styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND); - } else { - styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); - } - // Reset External Command / Program Location - cmdLoc = offset; - } else { - // Reset Offset to re-process remainder of word - offset -= (wbl - 1); - // Colorize Default Text - styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); - } - // Check for Regular Keyword in list - } else if ((keywords.InList(wordBuffer)) && - (continueProcessing)) { - // ECHO, GOTO, PROMPT and SET require no further Regular Keyword Checking - if ((CompareCaseInsensitive(wordBuffer, "echo") == 0) || - (CompareCaseInsensitive(wordBuffer, "goto") == 0) || - (CompareCaseInsensitive(wordBuffer, "prompt") == 0) || - (CompareCaseInsensitive(wordBuffer, "set") == 0)) { - continueProcessing = false; - } - // Identify External Command / Program Location for ERRORLEVEL, and EXIST - if ((CompareCaseInsensitive(wordBuffer, "errorlevel") == 0) || - (CompareCaseInsensitive(wordBuffer, "exist") == 0)) { - // Reset External Command / Program Location - cmdLoc = offset; - // Skip next spaces - while ((cmdLoc < lengthLine) && - (isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - // Skip comparison - while ((cmdLoc < lengthLine) && - (!isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - // Skip next spaces - while ((cmdLoc < lengthLine) && - (isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - // Identify External Command / Program Location for CALL, DO, LOADHIGH and LH - } else if ((CompareCaseInsensitive(wordBuffer, "call") == 0) || - (CompareCaseInsensitive(wordBuffer, "do") == 0) || - (CompareCaseInsensitive(wordBuffer, "loadhigh") == 0) || - (CompareCaseInsensitive(wordBuffer, "lh") == 0)) { - // Reset External Command / Program Location - cmdLoc = offset; - // Skip next spaces - while ((cmdLoc < lengthLine) && - (isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - } - // Colorize Regular keyword - styler.ColourTo(startLine + offset - 1, SCE_BAT_WORD); - // No need to Reset Offset - // Check for Special Keyword in list, External Command / Program, or Default Text - } else if ((wordBuffer[0] != '%') && - (wordBuffer[0] != '!') && - (!IsBOperator(wordBuffer[0])) && - (continueProcessing)) { - // Check for Special Keyword - // Affected Commands are in Length range 2-6 - // Good that ERRORLEVEL, EXIST, CALL, DO, LOADHIGH, and LH are unaffected - sKeywordFound = false; - for (Sci_PositionU keywordLength = 2; keywordLength < wbl && keywordLength < 7 && !sKeywordFound; keywordLength++) { - wbo = 0; - // Copy Keyword Length from Word Buffer into Special Keyword Buffer - for (; wbo < keywordLength; wbo++) { - sKeywordBuffer[wbo] = static_cast(wordBuffer[wbo]); - } - sKeywordBuffer[wbo] = '\0'; - // Check for Special Keyword in list - if ((keywords.InList(sKeywordBuffer)) && - ((IsBOperator(wordBuffer[wbo])) || - (IsBSeparator(wordBuffer[wbo])))) { - sKeywordFound = true; - // ECHO requires no further Regular Keyword Checking - if (CompareCaseInsensitive(sKeywordBuffer, "echo") == 0) { - continueProcessing = false; - } - // Colorize Special Keyword as Regular Keyword - styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_WORD); - // Reset Offset to re-process remainder of word - offset -= (wbl - wbo); - } - } - // Check for External Command / Program or Default Text - if (!sKeywordFound) { - wbo = 0; - // Check for External Command / Program - if (cmdLoc == offset - wbl) { - // Read up to %, Operator or Separator - while ((wbo < wbl) && - (wordBuffer[wbo] != '%') && - (wordBuffer[wbo] != '!') && - (!IsBOperator(wordBuffer[wbo])) && - (!IsBSeparator(wordBuffer[wbo]))) { - wbo++; - } - // Reset External Command / Program Location - cmdLoc = offset - (wbl - wbo); - // Reset Offset to re-process remainder of word - offset -= (wbl - wbo); - // CHOICE requires no further Regular Keyword Checking - if (CompareCaseInsensitive(wordBuffer, "choice") == 0) { - continueProcessing = false; - } - // Check for START (and its switches) - What follows is External Command \ Program - if (CompareCaseInsensitive(wordBuffer, "start") == 0) { - // Reset External Command / Program Location - cmdLoc = offset; - // Skip next spaces - while ((cmdLoc < lengthLine) && - (isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - // Reset External Command / Program Location if command switch detected - if (lineBuffer[cmdLoc] == '/') { - // Skip command switch - while ((cmdLoc < lengthLine) && - (!isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - // Skip next spaces - while ((cmdLoc < lengthLine) && - (isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - } - } - // Colorize External Command / Program - if (!keywords2) { - styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND); - } else if (keywords2.InList(wordBuffer)) { - styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND); - } else { - styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); - } - // No need to Reset Offset - // Check for Default Text - } else { - // Read up to %, Operator or Separator - while ((wbo < wbl) && - (wordBuffer[wbo] != '%') && - (wordBuffer[wbo] != '!') && - (!IsBOperator(wordBuffer[wbo])) && - (!IsBSeparator(wordBuffer[wbo]))) { - wbo++; - } - // Colorize Default Text - styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_DEFAULT); - // Reset Offset to re-process remainder of word - offset -= (wbl - wbo); - } - } - // Check for Argument (%n), Environment Variable (%x...%) or Local Variable (%%a) - } else if (wordBuffer[0] == '%') { - // Colorize Default Text - styler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT); - wbo++; - // Search to end of word for second % (can be a long path) - while ((wbo < wbl) && - (wordBuffer[wbo] != '%') && - (!IsBOperator(wordBuffer[wbo])) && - (!IsBSeparator(wordBuffer[wbo]))) { - wbo++; - } - // Check for Argument (%n) or (%*) - if (((Is0To9(wordBuffer[1])) || (wordBuffer[1] == '*')) && - (wordBuffer[wbo] != '%')) { - // Check for External Command / Program - if (cmdLoc == offset - wbl) { - cmdLoc = offset - (wbl - 2); - } - // Colorize Argument - styler.ColourTo(startLine + offset - 1 - (wbl - 2), SCE_BAT_IDENTIFIER); - // Reset Offset to re-process remainder of word - offset -= (wbl - 2); - // Check for Expanded Argument (%~...) / Variable (%%~...) - } else if (((wbl > 1) && (wordBuffer[1] == '~')) || - ((wbl > 2) && (wordBuffer[1] == '%') && (wordBuffer[2] == '~'))) { - // Check for External Command / Program - if (cmdLoc == offset - wbl) { - cmdLoc = offset - (wbl - wbo); - } - // Colorize Expanded Argument / Variable - styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER); - // Reset Offset to re-process remainder of word - offset -= (wbl - wbo); - // Check for Environment Variable (%x...%) - } else if ((wordBuffer[1] != '%') && - (wordBuffer[wbo] == '%')) { - wbo++; - // Check for External Command / Program - if (cmdLoc == offset - wbl) { - cmdLoc = offset - (wbl - wbo); - } - // Colorize Environment Variable - styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER); - // Reset Offset to re-process remainder of word - offset -= (wbl - wbo); - // Check for Local Variable (%%a) - } else if ( - (wbl > 2) && - (wordBuffer[1] == '%') && - (wordBuffer[2] != '%') && - (!IsBOperator(wordBuffer[2])) && - (!IsBSeparator(wordBuffer[2]))) { - // Check for External Command / Program - if (cmdLoc == offset - wbl) { - cmdLoc = offset - (wbl - 3); - } - // Colorize Local Variable - styler.ColourTo(startLine + offset - 1 - (wbl - 3), SCE_BAT_IDENTIFIER); - // Reset Offset to re-process remainder of word - offset -= (wbl - 3); - } - // Check for Environment Variable (!x...!) - } else if (wordBuffer[0] == '!') { - // Colorize Default Text - styler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT); - wbo++; - // Search to end of word for second ! (can be a long path) - while ((wbo < wbl) && - (wordBuffer[wbo] != '!') && - (!IsBOperator(wordBuffer[wbo])) && - (!IsBSeparator(wordBuffer[wbo]))) { - wbo++; - } - if (wordBuffer[wbo] == '!') { - wbo++; - // Check for External Command / Program - if (cmdLoc == offset - wbl) { - cmdLoc = offset - (wbl - wbo); - } - // Colorize Environment Variable - styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER); - // Reset Offset to re-process remainder of word - offset -= (wbl - wbo); - } - // Check for Operator - } else if (IsBOperator(wordBuffer[0])) { - // Colorize Default Text - styler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT); - // Check for Comparison Operator - if ((wordBuffer[0] == '=') && (wordBuffer[1] == '=')) { - // Identify External Command / Program Location for IF - cmdLoc = offset; - // Skip next spaces - while ((cmdLoc < lengthLine) && - (isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - // Colorize Comparison Operator - styler.ColourTo(startLine + offset - 1 - (wbl - 2), SCE_BAT_OPERATOR); - // Reset Offset to re-process remainder of word - offset -= (wbl - 2); - // Check for Pipe Operator - } else if (wordBuffer[0] == '|') { - // Reset External Command / Program Location - cmdLoc = offset - wbl + 1; - // Skip next spaces - while ((cmdLoc < lengthLine) && - (isspacechar(lineBuffer[cmdLoc]))) { - cmdLoc++; - } - // Colorize Pipe Operator - styler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_BAT_OPERATOR); - // Reset Offset to re-process remainder of word - offset -= (wbl - 1); - // Check for Other Operator - } else { - // Check for > Operator - if (wordBuffer[0] == '>') { - // Turn Keyword and External Command / Program checking back on - continueProcessing = true; - } - // Colorize Other Operator - styler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_BAT_OPERATOR); - // Reset Offset to re-process remainder of word - offset -= (wbl - 1); - } - // Check for Default Text - } else { - // Read up to %, Operator or Separator - while ((wbo < wbl) && - (wordBuffer[wbo] != '%') && - (wordBuffer[wbo] != '!') && - (!IsBOperator(wordBuffer[wbo])) && - (!IsBSeparator(wordBuffer[wbo]))) { - wbo++; - } - // Colorize Default Text - styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_DEFAULT); - // Reset Offset to re-process remainder of word - offset -= (wbl - wbo); - } - // Skip next spaces - nothing happens if Offset was Reset - while ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) { - offset++; - } - } - // Colorize Default Text for remainder of line - currently not lexed - styler.ColourTo(endPos, SCE_BAT_DEFAULT); -} - -static void ColouriseBatchDoc( - Sci_PositionU startPos, - Sci_Position length, - int /*initStyle*/, - WordList *keywordlists[], - Accessor &styler) { - - char lineBuffer[1024]; - - styler.StartAt(startPos); - styler.StartSegment(startPos); - Sci_PositionU linePos = 0; - Sci_PositionU startLine = startPos; - for (Sci_PositionU i = startPos; i < startPos + length; i++) { - lineBuffer[linePos++] = styler[i]; - if (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) { - // End of line (or of line buffer) met, colourise it - lineBuffer[linePos] = '\0'; - ColouriseBatchLine(lineBuffer, linePos, startLine, i, keywordlists, styler); - linePos = 0; - startLine = i + 1; - } - } - if (linePos > 0) { // Last line does not have ending characters - lineBuffer[linePos] = '\0'; - ColouriseBatchLine(lineBuffer, linePos, startLine, startPos + length - 1, - keywordlists, styler); - } -} - -static const char *const batchWordListDesc[] = { - "Internal Commands", - "External Commands", - 0 -}; - -LexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc, "batch", 0, batchWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBibTeX.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBibTeX.cpp deleted file mode 100644 index 7e4cb9fc1..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBibTeX.cpp +++ /dev/null @@ -1,308 +0,0 @@ -// Copyright 2008-2010 Sergiu Dotenco. The License.txt file describes the -// conditions under which this software may be distributed. - -/** - * @file LexBibTeX.cxx - * @brief General BibTeX coloring scheme. - * @author Sergiu Dotenco - * @date April 18, 2009 - */ - -#include -#include - -#include -#include - -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "PropSetSimple.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -namespace { - bool IsAlphabetic(unsigned int ch) - { - return IsASCII(ch) && std::isalpha(ch) != 0; - } - bool IsAlphaNumeric(char ch) - { - return IsASCII(ch) && std::isalnum(ch); - } - - bool EqualCaseInsensitive(const char* a, const char* b) - { - return CompareCaseInsensitive(a, b) == 0; - } - - bool EntryWithoutKey(const char* name) - { - return EqualCaseInsensitive(name,"string"); - } - - char GetClosingBrace(char openbrace) - { - char result = openbrace; - - switch (openbrace) { - case '(': result = ')'; break; - case '{': result = '}'; break; - } - - return result; - } - - bool IsEntryStart(char prev, char ch) - { - return prev != '\\' && ch == '@'; - } - - bool IsEntryStart(const StyleContext& sc) - { - return IsEntryStart(sc.chPrev, sc.ch); - } - - void ColorizeBibTeX(Sci_PositionU start_pos, Sci_Position length, int /*init_style*/, WordList* keywordlists[], Accessor& styler) - { - WordList &EntryNames = *keywordlists[0]; - bool fold_compact = styler.GetPropertyInt("fold.compact", 1) != 0; - - std::string buffer; - buffer.reserve(25); - - // We always colorize a section from the beginning, so let's - // search for the @ character which isn't escaped, i.e. \@ - while (start_pos > 0 && !IsEntryStart(styler.SafeGetCharAt(start_pos - 1), - styler.SafeGetCharAt(start_pos))) { - --start_pos; ++length; - } - - styler.StartAt(start_pos); - styler.StartSegment(start_pos); - - Sci_Position current_line = styler.GetLine(start_pos); - int prev_level = styler.LevelAt(current_line) & SC_FOLDLEVELNUMBERMASK; - int current_level = prev_level; - int visible_chars = 0; - - bool in_comment = false ; - StyleContext sc(start_pos, length, SCE_BIBTEX_DEFAULT, styler); - - bool going = sc.More(); // needed because of a fuzzy end of file state - char closing_brace = 0; - bool collect_entry_name = false; - - for (; going; sc.Forward()) { - if (!sc.More()) - going = false; // we need to go one behind the end of text - - if (in_comment) { - if (sc.atLineEnd) { - sc.SetState(SCE_BIBTEX_DEFAULT); - in_comment = false; - } - } - else { - // Found @entry - if (IsEntryStart(sc)) { - sc.SetState(SCE_BIBTEX_UNKNOWN_ENTRY); - sc.Forward(); - ++current_level; - - buffer.clear(); - collect_entry_name = true; - } - else if ((sc.state == SCE_BIBTEX_ENTRY || sc.state == SCE_BIBTEX_UNKNOWN_ENTRY) - && (sc.ch == '{' || sc.ch == '(')) { - // Entry name colorization done - // Found either a { or a ( after entry's name, e.g. @entry(...) @entry{...} - // Closing counterpart needs to be stored. - closing_brace = GetClosingBrace(sc.ch); - - sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize { ( - - // @string doesn't have any key - if (EntryWithoutKey(buffer.c_str())) - sc.ForwardSetState(SCE_BIBTEX_PARAMETER); - else - sc.ForwardSetState(SCE_BIBTEX_KEY); // Key/label colorization - } - - // Need to handle the case where entry's key is empty - // e.g. @book{,...} - if (sc.state == SCE_BIBTEX_KEY && sc.ch == ',') { - // Key/label colorization done - sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize the , - sc.ForwardSetState(SCE_BIBTEX_PARAMETER); // Parameter colorization - } - else if (sc.state == SCE_BIBTEX_PARAMETER && sc.ch == '=') { - sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize the = - sc.ForwardSetState(SCE_BIBTEX_VALUE); // Parameter value colorization - - Sci_Position start = sc.currentPos; - - // We need to handle multiple situations: - // 1. name"one two {three}" - // 2. name={one {one two {two}} three} - // 3. year=2005 - - // Skip ", { until we encounter the first alphanumerical character - while (sc.More() && !(IsAlphaNumeric(sc.ch) || sc.ch == '"' || sc.ch == '{')) - sc.Forward(); - - if (sc.More()) { - // Store " or { - char ch = sc.ch; - - // Not interested in alphanumerical characters - if (IsAlphaNumeric(ch)) - ch = 0; - - int skipped = 0; - - if (ch) { - // Skip preceding " or { such as in name={{test}}. - // Remember how many characters have been skipped - // Make sure that empty values, i.e. "" are also handled correctly - while (sc.More() && (sc.ch == ch && (ch != '"' || skipped < 1))) { - sc.Forward(); - ++skipped; - } - } - - // Closing counterpart for " is the same character - if (ch == '{') - ch = '}'; - - // We have reached the parameter value - // In case the open character was a alnum char, skip until , is found - // otherwise until skipped == 0 - while (sc.More() && (skipped > 0 || (!ch && !(sc.ch == ',' || sc.ch == closing_brace)))) { - // Make sure the character isn't escaped - if (sc.chPrev != '\\') { - // Parameter value contains a { which is the 2nd case described above - if (sc.ch == '{') - ++skipped; // Remember it - else if (sc.ch == '}') - --skipped; - else if (skipped == 1 && sc.ch == ch && ch == '"') // Don't ignore cases like {"o} - skipped = 0; - } - - sc.Forward(); - } - } - - // Don't colorize the , - sc.SetState(SCE_BIBTEX_DEFAULT); - - // Skip until the , or entry's closing closing_brace is found - // since this parameter might be the last one - while (sc.More() && !(sc.ch == ',' || sc.ch == closing_brace)) - sc.Forward(); - - int state = SCE_BIBTEX_PARAMETER; // The might be more parameters - - // We've reached the closing closing_brace for the bib entry - // in case no " or {} has been used to enclose the value, - // as in 3rd case described above - if (sc.ch == closing_brace) { - --current_level; - // Make sure the text between entries is not colored - // using parameter's style - state = SCE_BIBTEX_DEFAULT; - } - - Sci_Position end = sc.currentPos; - current_line = styler.GetLine(end); - - // We have possibly skipped some lines, so the folding levels - // have to be adjusted separately - for (Sci_Position i = styler.GetLine(start); i <= styler.GetLine(end); ++i) - styler.SetLevel(i, prev_level); - - sc.ForwardSetState(state); - } - - if (sc.state == SCE_BIBTEX_PARAMETER && sc.ch == closing_brace) { - sc.SetState(SCE_BIBTEX_DEFAULT); - --current_level; - } - - // Non escaped % found which represents a comment until the end of the line - if (sc.chPrev != '\\' && sc.ch == '%') { - in_comment = true; - sc.SetState(SCE_BIBTEX_COMMENT); - } - } - - if (sc.state == SCE_BIBTEX_UNKNOWN_ENTRY || sc.state == SCE_BIBTEX_ENTRY) { - if (!IsAlphabetic(sc.ch) && collect_entry_name) - collect_entry_name = false; - - if (collect_entry_name) { - buffer += static_cast(tolower(sc.ch)); - if (EntryNames.InList(buffer.c_str())) - sc.ChangeState(SCE_BIBTEX_ENTRY); - else - sc.ChangeState(SCE_BIBTEX_UNKNOWN_ENTRY); - } - } - - if (sc.atLineEnd) { - int level = prev_level; - - if (visible_chars == 0 && fold_compact) - level |= SC_FOLDLEVELWHITEFLAG; - - if ((current_level > prev_level)) - level |= SC_FOLDLEVELHEADERFLAG; - // else if (current_level < prev_level) - // level |= SC_FOLDLEVELBOXFOOTERFLAG; // Deprecated - - if (level != styler.LevelAt(current_line)) { - styler.SetLevel(current_line, level); - } - - ++current_line; - prev_level = current_level; - visible_chars = 0; - } - - if (!isspacechar(sc.ch)) - ++visible_chars; - } - - sc.Complete(); - - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(current_line) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(current_line, prev_level | flagsNext); - } -} -static const char * const BibTeXWordLists[] = { - "Entry Names", - 0, -}; - - -LexerModule lmBibTeX(SCLEX_BIBTEX, ColorizeBibTeX, "bib", 0, BibTeXWordLists); - -// Entry Names -// article, book, booklet, conference, inbook, -// incollection, inproceedings, manual, mastersthesis, -// misc, phdthesis, proceedings, techreport, unpublished, -// string, url - diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBullant.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBullant.cpp deleted file mode 100644 index 2386d2252..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexBullant.cpp +++ /dev/null @@ -1,231 +0,0 @@ -// SciTE - Scintilla based Text Editor -// LexBullant.cxx - lexer for Bullant - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static int classifyWordBullant(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) { - char s[100]; - s[0] = '\0'; - for (Sci_PositionU i = 0; i < end - start + 1 && i < 30; i++) { - s[i] = static_cast(tolower(styler[start + i])); - s[i + 1] = '\0'; - } - int lev= 0; - char chAttr = SCE_C_IDENTIFIER; - if (isdigit(s[0]) || (s[0] == '.')){ - chAttr = SCE_C_NUMBER; - } - else { - if (keywords.InList(s)) { - chAttr = SCE_C_WORD; - if (strcmp(s, "end") == 0) - lev = -1; - else if (strcmp(s, "method") == 0 || - strcmp(s, "case") == 0 || - strcmp(s, "class") == 0 || - strcmp(s, "debug") == 0 || - strcmp(s, "test") == 0 || - strcmp(s, "if") == 0 || - strcmp(s, "lock") == 0 || - strcmp(s, "transaction") == 0 || - strcmp(s, "trap") == 0 || - strcmp(s, "until") == 0 || - strcmp(s, "while") == 0) - lev = 1; - } - } - styler.ColourTo(end, chAttr); - return lev; -} - -static void ColouriseBullantDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - WordList &keywords = *keywordlists[0]; - - styler.StartAt(startPos); - - bool fold = styler.GetPropertyInt("fold") != 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - - int state = initStyle; - if (state == SCE_C_STRINGEOL) // Does not leak onto next line - state = SCE_C_DEFAULT; - char chPrev = ' '; - char chNext = styler[startPos]; - Sci_PositionU lengthDoc = startPos + length; - int visibleChars = 0; - styler.StartSegment(startPos); - int endFoundThisLine = 0; - for (Sci_PositionU i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - if ((ch == '\r' && chNext != '\n') || (ch == '\n')) { - // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix) - // Avoid triggering two times on Dos/Win - // End of line - endFoundThisLine = 0; - if (state == SCE_C_STRINGEOL) { - styler.ColourTo(i, state); - state = SCE_C_DEFAULT; - } - if (fold) { - int lev = levelPrev; - if (visibleChars == 0) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - styler.SetLevel(lineCurrent, lev); - lineCurrent++; - levelPrev = levelCurrent; - } - visibleChars = 0; - -/* int indentBlock = GetLineIndentation(lineCurrent); - if (blockChange==1){ - lineCurrent++; - int pos=SetLineIndentation(lineCurrent, indentBlock + indentSize); - } else if (blockChange==-1) { - indentBlock -= indentSize; - if (indentBlock < 0) - indentBlock = 0; - SetLineIndentation(lineCurrent, indentBlock); - lineCurrent++; - } - blockChange=0; -*/ } - if (!(IsASCII(ch) && isspace(ch))) - visibleChars++; - - if (styler.IsLeadByte(ch)) { - chNext = styler.SafeGetCharAt(i + 2); - chPrev = ' '; - i += 1; - continue; - } - - if (state == SCE_C_DEFAULT) { - if (iswordstart(ch)) { - styler.ColourTo(i-1, state); - state = SCE_C_IDENTIFIER; - } else if (ch == '@' && chNext == 'o') { - if ((styler.SafeGetCharAt(i+2) =='f') && (styler.SafeGetCharAt(i+3) == 'f')) { - styler.ColourTo(i-1, state); - state = SCE_C_COMMENT; - } - } else if (ch == '#') { - styler.ColourTo(i-1, state); - state = SCE_C_COMMENTLINE; - } else if (ch == '\"') { - styler.ColourTo(i-1, state); - state = SCE_C_STRING; - } else if (ch == '\'') { - styler.ColourTo(i-1, state); - state = SCE_C_CHARACTER; - } else if (isoperator(ch)) { - styler.ColourTo(i-1, state); - styler.ColourTo(i, SCE_C_OPERATOR); - } - } else if (state == SCE_C_IDENTIFIER) { - if (!iswordchar(ch)) { - int levelChange = classifyWordBullant(styler.GetStartSegment(), i - 1, keywords, styler); - state = SCE_C_DEFAULT; - chNext = styler.SafeGetCharAt(i + 1); - if (ch == '#') { - state = SCE_C_COMMENTLINE; - } else if (ch == '\"') { - state = SCE_C_STRING; - } else if (ch == '\'') { - state = SCE_C_CHARACTER; - } else if (isoperator(ch)) { - styler.ColourTo(i, SCE_C_OPERATOR); - } - if (endFoundThisLine == 0) - levelCurrent+=levelChange; - if (levelChange == -1) - endFoundThisLine=1; - } - } else if (state == SCE_C_COMMENT) { - if (ch == '@' && chNext == 'o') { - if (styler.SafeGetCharAt(i+2) == 'n') { - styler.ColourTo(i+2, state); - state = SCE_C_DEFAULT; - i+=2; - } - } - } else if (state == SCE_C_COMMENTLINE) { - if (ch == '\r' || ch == '\n') { - endFoundThisLine = 0; - styler.ColourTo(i-1, state); - state = SCE_C_DEFAULT; - } - } else if (state == SCE_C_STRING) { - if (ch == '\\') { - if (chNext == '\"' || chNext == '\'' || chNext == '\\') { - i++; - ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - } - } else if (ch == '\"') { - styler.ColourTo(i, state); - state = SCE_C_DEFAULT; - } else if (chNext == '\r' || chNext == '\n') { - endFoundThisLine = 0; - styler.ColourTo(i-1, SCE_C_STRINGEOL); - state = SCE_C_STRINGEOL; - } - } else if (state == SCE_C_CHARACTER) { - if ((ch == '\r' || ch == '\n') && (chPrev != '\\')) { - endFoundThisLine = 0; - styler.ColourTo(i-1, SCE_C_STRINGEOL); - state = SCE_C_STRINGEOL; - } else if (ch == '\\') { - if (chNext == '\"' || chNext == '\'' || chNext == '\\') { - i++; - ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - } - } else if (ch == '\'') { - styler.ColourTo(i, state); - state = SCE_C_DEFAULT; - } - } - chPrev = ch; - } - styler.ColourTo(lengthDoc - 1, state); - - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - if (fold) { - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - //styler.SetLevel(lineCurrent, levelCurrent | flagsNext); - styler.SetLevel(lineCurrent, levelPrev | flagsNext); - - } -} - -static const char * const bullantWordListDesc[] = { - "Keywords", - 0 -}; - -LexerModule lmBullant(SCLEX_BULLANT, ColouriseBullantDoc, "bullant", 0, bullantWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCLW.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCLW.cpp deleted file mode 100644 index d469d6bfd..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCLW.cpp +++ /dev/null @@ -1,680 +0,0 @@ -// Scintilla source code edit control -/** @file LexClw.cxx - ** Lexer for Clarion. - ** 2004/12/17 Updated Lexer - **/ -// Copyright 2003-2004 by Ron Schofield -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -// Is an end of line character -inline bool IsEOL(const int ch) { - - return(ch == '\n'); -} - -// Convert character to uppercase -static char CharacterUpper(char chChar) { - - if (chChar < 'a' || chChar > 'z') { - return(chChar); - } - else { - return(static_cast(chChar - 'a' + 'A')); - } -} - -// Convert string to uppercase -static void StringUpper(char *szString) { - - while (*szString) { - *szString = CharacterUpper(*szString); - szString++; - } -} - -// Is a label start character -inline bool IsALabelStart(const int iChar) { - - return(isalpha(iChar) || iChar == '_'); -} - -// Is a label character -inline bool IsALabelCharacter(const int iChar) { - - return(isalnum(iChar) || iChar == '_' || iChar == ':'); -} - -// Is the character is a ! and the the next character is not a ! -inline bool IsACommentStart(const int iChar) { - - return(iChar == '!'); -} - -// Is the character a Clarion hex character (ABCDEF) -inline bool IsAHexCharacter(const int iChar, bool bCaseSensitive) { - - // Case insensitive. - if (!bCaseSensitive) { - if (strchr("ABCDEFabcdef", iChar) != NULL) { - return(true); - } - } - // Case sensitive - else { - if (strchr("ABCDEF", iChar) != NULL) { - return(true); - } - } - return(false); -} - -// Is the character a Clarion base character (B=Binary, O=Octal, H=Hex) -inline bool IsANumericBaseCharacter(const int iChar, bool bCaseSensitive) { - - // Case insensitive. - if (!bCaseSensitive) { - // If character is a numeric base character - if (strchr("BOHboh", iChar) != NULL) { - return(true); - } - } - // Case sensitive - else { - // If character is a numeric base character - if (strchr("BOH", iChar) != NULL) { - return(true); - } - } - return(false); -} - -// Set the correct numeric constant state -inline bool SetNumericConstantState(StyleContext &scDoc) { - - int iPoints = 0; // Point counter - char cNumericString[512]; // Numeric string buffer - - // Buffer the current numberic string - scDoc.GetCurrent(cNumericString, sizeof(cNumericString)); - // Loop through the string until end of string (NULL termination) - for (int iIndex = 0; cNumericString[iIndex] != '\0'; iIndex++) { - // Depending on the character - switch (cNumericString[iIndex]) { - // Is a . (point) - case '.' : - // Increment point counter - iPoints++; - break; - default : - break; - } - } - // If points found (can be more than one for improper formatted number - if (iPoints > 0) { - return(true); - } - // Else no points found - else { - return(false); - } -} - -// Get the next word in uppercase from the current position (keyword lookahead) -inline bool GetNextWordUpper(Accessor &styler, Sci_PositionU uiStartPos, Sci_Position iLength, char *cWord) { - - Sci_PositionU iIndex = 0; // Buffer Index - - // Loop through the remaining string from the current position - for (Sci_Position iOffset = uiStartPos; iOffset < iLength; iOffset++) { - // Get the character from the buffer using the offset - char cCharacter = styler[iOffset]; - if (IsEOL(cCharacter)) { - break; - } - // If the character is alphabet character - if (isalpha(cCharacter)) { - // Add UPPERCASE character to the word buffer - cWord[iIndex++] = CharacterUpper(cCharacter); - } - } - // Add null termination - cWord[iIndex] = '\0'; - // If no word was found - if (iIndex == 0) { - // Return failure - return(false); - } - // Else word was found - else { - // Return success - return(true); - } -} - -// Clarion Language Colouring Procedure -static void ColouriseClarionDoc(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler, bool bCaseSensitive) { - - int iParenthesesLevel = 0; // Parenthese Level - int iColumn1Label = false; // Label starts in Column 1 - - WordList &wlClarionKeywords = *wlKeywords[0]; // Clarion Keywords - WordList &wlCompilerDirectives = *wlKeywords[1]; // Compiler Directives - WordList &wlRuntimeExpressions = *wlKeywords[2]; // Runtime Expressions - WordList &wlBuiltInProcsFuncs = *wlKeywords[3]; // Builtin Procedures and Functions - WordList &wlStructsDataTypes = *wlKeywords[4]; // Structures and Data Types - WordList &wlAttributes = *wlKeywords[5]; // Procedure Attributes - WordList &wlStandardEquates = *wlKeywords[6]; // Standard Equates - WordList &wlLabelReservedWords = *wlKeywords[7]; // Clarion Reserved Keywords (Labels) - WordList &wlProcLabelReservedWords = *wlKeywords[8]; // Clarion Reserved Keywords (Procedure Labels) - - const char wlProcReservedKeywordList[] = - "PROCEDURE FUNCTION"; - WordList wlProcReservedKeywords; - wlProcReservedKeywords.Set(wlProcReservedKeywordList); - - const char wlCompilerKeywordList[] = - "COMPILE OMIT"; - WordList wlCompilerKeywords; - wlCompilerKeywords.Set(wlCompilerKeywordList); - - const char wlLegacyStatementsList[] = - "BOF EOF FUNCTION POINTER SHARE"; - WordList wlLegacyStatements; - wlLegacyStatements.Set(wlLegacyStatementsList); - - StyleContext scDoc(uiStartPos, iLength, iInitStyle, accStyler); - - // lex source code - for (; scDoc.More(); scDoc.Forward()) - { - // - // Determine if the current state should terminate. - // - - // Label State Handling - if (scDoc.state == SCE_CLW_LABEL) { - // If the character is not a valid label - if (!IsALabelCharacter(scDoc.ch)) { - // If the character is a . (dot syntax) - if (scDoc.ch == '.') { - // Turn off column 1 label flag as label now cannot be reserved work - iColumn1Label = false; - // Uncolour the . (dot) to default state, move forward one character, - // and change back to the label state. - scDoc.SetState(SCE_CLW_DEFAULT); - scDoc.Forward(); - scDoc.SetState(SCE_CLW_LABEL); - } - // Else check label - else { - char cLabel[512]; // Label buffer - // Buffer the current label string - scDoc.GetCurrent(cLabel,sizeof(cLabel)); - // If case insensitive, convert string to UPPERCASE to match passed keywords. - if (!bCaseSensitive) { - StringUpper(cLabel); - } - // Else if UPPERCASE label string is in the Clarion compiler keyword list - if (wlCompilerKeywords.InList(cLabel) && iColumn1Label){ - // change the label to error state - scDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE); - } - // Else if UPPERCASE label string is in the Clarion reserved keyword list - else if (wlLabelReservedWords.InList(cLabel) && iColumn1Label){ - // change the label to error state - scDoc.ChangeState(SCE_CLW_ERROR); - } - // Else if UPPERCASE label string is - else if (wlProcLabelReservedWords.InList(cLabel) && iColumn1Label) { - char cWord[512]; // Word buffer - // Get the next word from the current position - if (GetNextWordUpper(accStyler,scDoc.currentPos,uiStartPos+iLength,cWord)) { - // If the next word is a procedure reserved word - if (wlProcReservedKeywords.InList(cWord)) { - // Change the label to error state - scDoc.ChangeState(SCE_CLW_ERROR); - } - } - } - // Else if label string is in the compiler directive keyword list - else if (wlCompilerDirectives.InList(cLabel)) { - // change the state to compiler directive state - scDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE); - } - // Terminate the label state and set to default state - scDoc.SetState(SCE_CLW_DEFAULT); - } - } - } - // Keyword State Handling - else if (scDoc.state == SCE_CLW_KEYWORD) { - // If character is : (colon) - if (scDoc.ch == ':') { - char cEquate[512]; // Equate buffer - // Move forward to include : (colon) in buffer - scDoc.Forward(); - // Buffer the equate string - scDoc.GetCurrent(cEquate,sizeof(cEquate)); - // If case insensitive, convert string to UPPERCASE to match passed keywords. - if (!bCaseSensitive) { - StringUpper(cEquate); - } - // If statement string is in the equate list - if (wlStandardEquates.InList(cEquate)) { - // Change to equate state - scDoc.ChangeState(SCE_CLW_STANDARD_EQUATE); - } - } - // If the character is not a valid label character - else if (!IsALabelCharacter(scDoc.ch)) { - char cStatement[512]; // Statement buffer - // Buffer the statement string - scDoc.GetCurrent(cStatement,sizeof(cStatement)); - // If case insensitive, convert string to UPPERCASE to match passed keywords. - if (!bCaseSensitive) { - StringUpper(cStatement); - } - // If statement string is in the Clarion keyword list - if (wlClarionKeywords.InList(cStatement)) { - // Change the statement string to the Clarion keyword state - scDoc.ChangeState(SCE_CLW_KEYWORD); - } - // Else if statement string is in the compiler directive keyword list - else if (wlCompilerDirectives.InList(cStatement)) { - // Change the statement string to the compiler directive state - scDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE); - } - // Else if statement string is in the runtime expressions keyword list - else if (wlRuntimeExpressions.InList(cStatement)) { - // Change the statement string to the runtime expressions state - scDoc.ChangeState(SCE_CLW_RUNTIME_EXPRESSIONS); - } - // Else if statement string is in the builtin procedures and functions keyword list - else if (wlBuiltInProcsFuncs.InList(cStatement)) { - // Change the statement string to the builtin procedures and functions state - scDoc.ChangeState(SCE_CLW_BUILTIN_PROCEDURES_FUNCTION); - } - // Else if statement string is in the tructures and data types keyword list - else if (wlStructsDataTypes.InList(cStatement)) { - // Change the statement string to the structures and data types state - scDoc.ChangeState(SCE_CLW_STRUCTURE_DATA_TYPE); - } - // Else if statement string is in the procedure attribute keyword list - else if (wlAttributes.InList(cStatement)) { - // Change the statement string to the procedure attribute state - scDoc.ChangeState(SCE_CLW_ATTRIBUTE); - } - // Else if statement string is in the standard equate keyword list - else if (wlStandardEquates.InList(cStatement)) { - // Change the statement string to the standard equate state - scDoc.ChangeState(SCE_CLW_STANDARD_EQUATE); - } - // Else if statement string is in the deprecated or legacy keyword list - else if (wlLegacyStatements.InList(cStatement)) { - // Change the statement string to the standard equate state - scDoc.ChangeState(SCE_CLW_DEPRECATED); - } - // Else the statement string doesn't match any work list - else { - // Change the statement string to the default state - scDoc.ChangeState(SCE_CLW_DEFAULT); - } - // Terminate the keyword state and set to default state - scDoc.SetState(SCE_CLW_DEFAULT); - } - } - // String State Handling - else if (scDoc.state == SCE_CLW_STRING) { - // If the character is an ' (single quote) - if (scDoc.ch == '\'') { - // Set the state to default and move forward colouring - // the ' (single quote) as default state - // terminating the string state - scDoc.SetState(SCE_CLW_DEFAULT); - scDoc.Forward(); - } - // If the next character is an ' (single quote) - if (scDoc.chNext == '\'') { - // Move forward one character and set to default state - // colouring the next ' (single quote) as default state - // terminating the string state - scDoc.ForwardSetState(SCE_CLW_DEFAULT); - scDoc.Forward(); - } - } - // Picture String State Handling - else if (scDoc.state == SCE_CLW_PICTURE_STRING) { - // If the character is an ( (open parenthese) - if (scDoc.ch == '(') { - // Increment the parenthese level - iParenthesesLevel++; - } - // Else if the character is a ) (close parenthese) - else if (scDoc.ch == ')') { - // If the parenthese level is set to zero - // parentheses matched - if (!iParenthesesLevel) { - scDoc.SetState(SCE_CLW_DEFAULT); - } - // Else parenthese level is greater than zero - // still looking for matching parentheses - else { - // Decrement the parenthese level - iParenthesesLevel--; - } - } - } - // Standard Equate State Handling - else if (scDoc.state == SCE_CLW_STANDARD_EQUATE) { - if (!isalnum(scDoc.ch)) { - scDoc.SetState(SCE_CLW_DEFAULT); - } - } - // Integer Constant State Handling - else if (scDoc.state == SCE_CLW_INTEGER_CONSTANT) { - // If the character is not a digit (0-9) - // or character is not a hexidecimal character (A-F) - // or character is not a . (point) - // or character is not a numberic base character (B,O,H) - if (!(isdigit(scDoc.ch) - || IsAHexCharacter(scDoc.ch, bCaseSensitive) - || scDoc.ch == '.' - || IsANumericBaseCharacter(scDoc.ch, bCaseSensitive))) { - // If the number was a real - if (SetNumericConstantState(scDoc)) { - // Colour the matched string to the real constant state - scDoc.ChangeState(SCE_CLW_REAL_CONSTANT); - } - // Else the number was an integer - else { - // Colour the matched string to an integer constant state - scDoc.ChangeState(SCE_CLW_INTEGER_CONSTANT); - } - // Terminate the integer constant state and set to default state - scDoc.SetState(SCE_CLW_DEFAULT); - } - } - - // - // Determine if a new state should be entered. - // - - // Beginning of Line Handling - if (scDoc.atLineStart) { - // Reset the column 1 label flag - iColumn1Label = false; - // If column 1 character is a label start character - if (IsALabelStart(scDoc.ch)) { - // Label character is found in column 1 - // so set column 1 label flag and clear last column 1 label - iColumn1Label = true; - // Set the state to label - scDoc.SetState(SCE_CLW_LABEL); - } - // else if character is a space or tab - else if (IsASpace(scDoc.ch)){ - // Set to default state - scDoc.SetState(SCE_CLW_DEFAULT); - } - // else if comment start (!) or is an * (asterisk) - else if (IsACommentStart(scDoc.ch) || scDoc.ch == '*' ) { - // then set the state to comment. - scDoc.SetState(SCE_CLW_COMMENT); - } - // else the character is a ? (question mark) - else if (scDoc.ch == '?') { - // Change to the compiler directive state, move forward, - // colouring the ? (question mark), change back to default state. - scDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE); - scDoc.Forward(); - scDoc.SetState(SCE_CLW_DEFAULT); - } - // else an invalid character in column 1 - else { - // Set to error state - scDoc.SetState(SCE_CLW_ERROR); - } - } - // End of Line Handling - else if (scDoc.atLineEnd) { - // Reset to the default state at the end of each line. - scDoc.SetState(SCE_CLW_DEFAULT); - } - // Default Handling - else { - // If in default state - if (scDoc.state == SCE_CLW_DEFAULT) { - // If is a letter could be a possible statement - if (isalpha(scDoc.ch)) { - // Set the state to Clarion Keyword and verify later - scDoc.SetState(SCE_CLW_KEYWORD); - } - // else is a number - else if (isdigit(scDoc.ch)) { - // Set the state to Integer Constant and verify later - scDoc.SetState(SCE_CLW_INTEGER_CONSTANT); - } - // else if the start of a comment or a | (line continuation) - else if (IsACommentStart(scDoc.ch) || scDoc.ch == '|') { - // then set the state to comment. - scDoc.SetState(SCE_CLW_COMMENT); - } - // else if the character is a ' (single quote) - else if (scDoc.ch == '\'') { - // If the character is also a ' (single quote) - // Embedded Apostrophe - if (scDoc.chNext == '\'') { - // Move forward colouring it as default state - scDoc.ForwardSetState(SCE_CLW_DEFAULT); - } - else { - // move to the next character and then set the state to comment. - scDoc.ForwardSetState(SCE_CLW_STRING); - } - } - // else the character is an @ (ampersand) - else if (scDoc.ch == '@') { - // Case insensitive. - if (!bCaseSensitive) { - // If character is a valid picture token character - if (strchr("DEKNPSTdeknpst", scDoc.chNext) != NULL) { - // Set to the picture string state - scDoc.SetState(SCE_CLW_PICTURE_STRING); - } - } - // Case sensitive - else { - // If character is a valid picture token character - if (strchr("DEKNPST", scDoc.chNext) != NULL) { - // Set the picture string state - scDoc.SetState(SCE_CLW_PICTURE_STRING); - } - } - } - } - } - } - // lexing complete - scDoc.Complete(); -} - -// Clarion Language Case Sensitive Colouring Procedure -static void ColouriseClarionDocSensitive(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler) { - - ColouriseClarionDoc(uiStartPos, iLength, iInitStyle, wlKeywords, accStyler, true); -} - -// Clarion Language Case Insensitive Colouring Procedure -static void ColouriseClarionDocInsensitive(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler) { - - ColouriseClarionDoc(uiStartPos, iLength, iInitStyle, wlKeywords, accStyler, false); -} - -// Fill Buffer - -static void FillBuffer(Sci_PositionU uiStart, Sci_PositionU uiEnd, Accessor &accStyler, char *szBuffer, Sci_PositionU uiLength) { - - Sci_PositionU uiPos = 0; - - while ((uiPos < uiEnd - uiStart + 1) && (uiPos < uiLength-1)) { - szBuffer[uiPos] = static_cast(toupper(accStyler[uiStart + uiPos])); - uiPos++; - } - szBuffer[uiPos] = '\0'; -} - -// Classify Clarion Fold Point - -static int ClassifyClarionFoldPoint(int iLevel, const char* szString) { - - if (!(isdigit(szString[0]) || (szString[0] == '.'))) { - if (strcmp(szString, "PROCEDURE") == 0) { - // iLevel = SC_FOLDLEVELBASE + 1; - } - else if (strcmp(szString, "MAP") == 0 || - strcmp(szString,"ACCEPT") == 0 || - strcmp(szString,"BEGIN") == 0 || - strcmp(szString,"CASE") == 0 || - strcmp(szString,"EXECUTE") == 0 || - strcmp(szString,"IF") == 0 || - strcmp(szString,"ITEMIZE") == 0 || - strcmp(szString,"INTERFACE") == 0 || - strcmp(szString,"JOIN") == 0 || - strcmp(szString,"LOOP") == 0 || - strcmp(szString,"MODULE") == 0 || - strcmp(szString,"RECORD") == 0) { - iLevel++; - } - else if (strcmp(szString, "APPLICATION") == 0 || - strcmp(szString, "CLASS") == 0 || - strcmp(szString, "DETAIL") == 0 || - strcmp(szString, "FILE") == 0 || - strcmp(szString, "FOOTER") == 0 || - strcmp(szString, "FORM") == 0 || - strcmp(szString, "GROUP") == 0 || - strcmp(szString, "HEADER") == 0 || - strcmp(szString, "INTERFACE") == 0 || - strcmp(szString, "MENU") == 0 || - strcmp(szString, "MENUBAR") == 0 || - strcmp(szString, "OLE") == 0 || - strcmp(szString, "OPTION") == 0 || - strcmp(szString, "QUEUE") == 0 || - strcmp(szString, "REPORT") == 0 || - strcmp(szString, "SHEET") == 0 || - strcmp(szString, "TAB") == 0 || - strcmp(szString, "TOOLBAR") == 0 || - strcmp(szString, "VIEW") == 0 || - strcmp(szString, "WINDOW") == 0) { - iLevel++; - } - else if (strcmp(szString, "END") == 0 || - strcmp(szString, "UNTIL") == 0 || - strcmp(szString, "WHILE") == 0) { - iLevel--; - } - } - return(iLevel); -} - -// Clarion Language Folding Procedure -static void FoldClarionDoc(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *[], Accessor &accStyler) { - - Sci_PositionU uiEndPos = uiStartPos + iLength; - Sci_Position iLineCurrent = accStyler.GetLine(uiStartPos); - int iLevelPrev = accStyler.LevelAt(iLineCurrent) & SC_FOLDLEVELNUMBERMASK; - int iLevelCurrent = iLevelPrev; - char chNext = accStyler[uiStartPos]; - int iStyle = iInitStyle; - int iStyleNext = accStyler.StyleAt(uiStartPos); - int iVisibleChars = 0; - Sci_Position iLastStart = 0; - - for (Sci_PositionU uiPos = uiStartPos; uiPos < uiEndPos; uiPos++) { - - char chChar = chNext; - chNext = accStyler.SafeGetCharAt(uiPos + 1); - int iStylePrev = iStyle; - iStyle = iStyleNext; - iStyleNext = accStyler.StyleAt(uiPos + 1); - bool bEOL = (chChar == '\r' && chNext != '\n') || (chChar == '\n'); - - if (iStylePrev == SCE_CLW_DEFAULT) { - if (iStyle == SCE_CLW_KEYWORD || iStyle == SCE_CLW_STRUCTURE_DATA_TYPE) { - // Store last word start point. - iLastStart = uiPos; - } - } - - if (iStylePrev == SCE_CLW_KEYWORD || iStylePrev == SCE_CLW_STRUCTURE_DATA_TYPE) { - if(iswordchar(chChar) && !iswordchar(chNext)) { - char chBuffer[100]; - FillBuffer(iLastStart, uiPos, accStyler, chBuffer, sizeof(chBuffer)); - iLevelCurrent = ClassifyClarionFoldPoint(iLevelCurrent,chBuffer); - // if ((iLevelCurrent == SC_FOLDLEVELBASE + 1) && iLineCurrent > 1) { - // accStyler.SetLevel(iLineCurrent-1,SC_FOLDLEVELBASE); - // iLevelPrev = SC_FOLDLEVELBASE; - // } - } - } - - if (bEOL) { - int iLevel = iLevelPrev; - if ((iLevelCurrent > iLevelPrev) && (iVisibleChars > 0)) - iLevel |= SC_FOLDLEVELHEADERFLAG; - if (iLevel != accStyler.LevelAt(iLineCurrent)) { - accStyler.SetLevel(iLineCurrent,iLevel); - } - iLineCurrent++; - iLevelPrev = iLevelCurrent; - iVisibleChars = 0; - } - - if (!isspacechar(chChar)) - iVisibleChars++; - } - - // Fill in the real level of the next line, keeping the current flags - // as they will be filled in later. - int iFlagsNext = accStyler.LevelAt(iLineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - accStyler.SetLevel(iLineCurrent, iLevelPrev | iFlagsNext); -} - -// Word List Descriptions -static const char * const rgWordListDescriptions[] = { - "Clarion Keywords", - "Compiler Directives", - "Built-in Procedures and Functions", - "Runtime Expressions", - "Structure and Data Types", - "Attributes", - "Standard Equates", - "Reserved Words (Labels)", - "Reserved Words (Procedure Labels)", - 0, -}; - -// Case Sensitive Clarion Language Lexer -LexerModule lmClw(SCLEX_CLW, ColouriseClarionDocSensitive, "clarion", FoldClarionDoc, rgWordListDescriptions); - -// Case Insensitive Clarion Language Lexer -LexerModule lmClwNoCase(SCLEX_CLWNOCASE, ColouriseClarionDocInsensitive, "clarionnocase", FoldClarionDoc, rgWordListDescriptions); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCOBOL.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCOBOL.cpp deleted file mode 100644 index f0374824f..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCOBOL.cpp +++ /dev/null @@ -1,379 +0,0 @@ -// Scintilla source code edit control -/** @file LexCOBOL.cxx - ** Lexer for COBOL - ** Based on LexPascal.cxx - ** Written by Laurent le Tynevez - ** Updated by Simon Steele September 2002 - ** Updated by Mathias Rauen May 2003 (Delphi adjustments) - ** Updated by Rod Falck, Aug 2006 Converted to COBOL - **/ - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -#define IN_DIVISION 0x01 -#define IN_DECLARATIVES 0x02 -#define IN_SECTION 0x04 -#define IN_PARAGRAPH 0x08 -#define IN_FLAGS 0xF -#define NOT_HEADER 0x10 - -inline bool isCOBOLoperator(char ch) - { - return isoperator(ch); - } - -inline bool isCOBOLwordchar(char ch) - { - return IsASCII(ch) && (isalnum(ch) || ch == '-'); - - } - -inline bool isCOBOLwordstart(char ch) - { - return IsASCII(ch) && isalnum(ch); - } - -static int CountBits(int nBits) - { - int count = 0; - for (int i = 0; i < 32; ++i) - { - count += nBits & 1; - nBits >>= 1; - } - return count; - } - -static void getRange(Sci_PositionU start, - Sci_PositionU end, - Accessor &styler, - char *s, - Sci_PositionU len) { - Sci_PositionU i = 0; - while ((i < end - start + 1) && (i < len-1)) { - s[i] = static_cast(tolower(styler[start + i])); - i++; - } - s[i] = '\0'; -} - -static void ColourTo(Accessor &styler, Sci_PositionU end, unsigned int attr) { - styler.ColourTo(end, attr); -} - - -static int classifyWordCOBOL(Sci_PositionU start, Sci_PositionU end, /*WordList &keywords*/WordList *keywordlists[], Accessor &styler, int nContainment, bool *bAarea) { - int ret = 0; - - WordList& a_keywords = *keywordlists[0]; - WordList& b_keywords = *keywordlists[1]; - WordList& c_keywords = *keywordlists[2]; - - char s[100]; - s[0] = '\0'; - s[1] = '\0'; - getRange(start, end, styler, s, sizeof(s)); - - char chAttr = SCE_C_IDENTIFIER; - if (isdigit(s[0]) || (s[0] == '.') || (s[0] == 'v')) { - chAttr = SCE_C_NUMBER; - char *p = s + 1; - while (*p) { - if ((!isdigit(*p) && (*p) != 'v') && isCOBOLwordchar(*p)) { - chAttr = SCE_C_IDENTIFIER; - break; - } - ++p; - } - } - else { - if (a_keywords.InList(s)) { - chAttr = SCE_C_WORD; - } - else if (b_keywords.InList(s)) { - chAttr = SCE_C_WORD2; - } - else if (c_keywords.InList(s)) { - chAttr = SCE_C_UUID; - } - } - if (*bAarea) { - if (strcmp(s, "division") == 0) { - ret = IN_DIVISION; - // we've determined the containment, anything else is just ignored for those purposes - *bAarea = false; - } else if (strcmp(s, "declaratives") == 0) { - ret = IN_DIVISION | IN_DECLARATIVES; - if (nContainment & IN_DECLARATIVES) - ret |= NOT_HEADER | IN_SECTION; - // we've determined the containment, anything else is just ignored for those purposes - *bAarea = false; - } else if (strcmp(s, "section") == 0) { - ret = (nContainment &~ IN_PARAGRAPH) | IN_SECTION; - // we've determined the containment, anything else is just ignored for those purposes - *bAarea = false; - } else if (strcmp(s, "end") == 0 && (nContainment & IN_DECLARATIVES)) { - ret = IN_DIVISION | IN_DECLARATIVES | IN_SECTION | NOT_HEADER; - } else { - ret = nContainment | IN_PARAGRAPH; - } - } - ColourTo(styler, end, chAttr); - return ret; -} - -static void ColouriseCOBOLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - - styler.StartAt(startPos); - - int state = initStyle; - if (state == SCE_C_CHARACTER) // Does not leak onto next line - state = SCE_C_DEFAULT; - char chPrev = ' '; - char chNext = styler[startPos]; - Sci_PositionU lengthDoc = startPos + length; - - int nContainment; - - Sci_Position currentLine = styler.GetLine(startPos); - if (currentLine > 0) { - styler.SetLineState(currentLine, styler.GetLineState(currentLine-1)); - nContainment = styler.GetLineState(currentLine); - nContainment &= ~NOT_HEADER; - } else { - styler.SetLineState(currentLine, 0); - nContainment = 0; - } - - styler.StartSegment(startPos); - bool bNewLine = true; - bool bAarea = !isspacechar(chNext); - int column = 0; - for (Sci_PositionU i = startPos; i < lengthDoc; i++) { - char ch = chNext; - - chNext = styler.SafeGetCharAt(i + 1); - - ++column; - - if (bNewLine) { - column = 0; - } - if (column <= 1 && !bAarea) { - bAarea = !isspacechar(ch); - } - bool bSetNewLine = false; - if ((ch == '\r' && chNext != '\n') || (ch == '\n')) { - // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix) - // Avoid triggering two times on Dos/Win - // End of line - if (state == SCE_C_CHARACTER) { - ColourTo(styler, i, state); - state = SCE_C_DEFAULT; - } - styler.SetLineState(currentLine, nContainment); - currentLine++; - bSetNewLine = true; - if (nContainment & NOT_HEADER) - nContainment &= ~(NOT_HEADER | IN_DECLARATIVES | IN_SECTION); - } - - if (styler.IsLeadByte(ch)) { - chNext = styler.SafeGetCharAt(i + 2); - chPrev = ' '; - i += 1; - continue; - } - - if (state == SCE_C_DEFAULT) { - if (isCOBOLwordstart(ch) || (ch == '$' && IsASCII(chNext) && isalpha(chNext))) { - ColourTo(styler, i-1, state); - state = SCE_C_IDENTIFIER; - } else if (column == 6 && ch == '*') { - // Cobol comment line: asterisk in column 7. - ColourTo(styler, i-1, state); - state = SCE_C_COMMENTLINE; - } else if (ch == '*' && chNext == '>') { - // Cobol inline comment: asterisk, followed by greater than. - ColourTo(styler, i-1, state); - state = SCE_C_COMMENTLINE; - } else if (column == 0 && ch == '*' && chNext != '*') { - ColourTo(styler, i-1, state); - state = SCE_C_COMMENTLINE; - } else if (column == 0 && ch == '/' && chNext != '*') { - ColourTo(styler, i-1, state); - state = SCE_C_COMMENTLINE; - } else if (column == 0 && ch == '*' && chNext == '*') { - ColourTo(styler, i-1, state); - state = SCE_C_COMMENTDOC; - } else if (column == 0 && ch == '/' && chNext == '*') { - ColourTo(styler, i-1, state); - state = SCE_C_COMMENTDOC; - } else if (ch == '"') { - ColourTo(styler, i-1, state); - state = SCE_C_STRING; - } else if (ch == '\'') { - ColourTo(styler, i-1, state); - state = SCE_C_CHARACTER; - } else if (ch == '?' && column == 0) { - ColourTo(styler, i-1, state); - state = SCE_C_PREPROCESSOR; - } else if (isCOBOLoperator(ch)) { - ColourTo(styler, i-1, state); - ColourTo(styler, i, SCE_C_OPERATOR); - } - } else if (state == SCE_C_IDENTIFIER) { - if (!isCOBOLwordchar(ch)) { - int lStateChange = classifyWordCOBOL(styler.GetStartSegment(), i - 1, keywordlists, styler, nContainment, &bAarea); - - if(lStateChange != 0) { - styler.SetLineState(currentLine, lStateChange); - nContainment = lStateChange; - } - - state = SCE_C_DEFAULT; - chNext = styler.SafeGetCharAt(i + 1); - if (ch == '"') { - state = SCE_C_STRING; - } else if (ch == '\'') { - state = SCE_C_CHARACTER; - } else if (isCOBOLoperator(ch)) { - ColourTo(styler, i, SCE_C_OPERATOR); - } - } - } else { - if (state == SCE_C_PREPROCESSOR) { - if ((ch == '\r' || ch == '\n') && !(chPrev == '\\' || chPrev == '\r')) { - ColourTo(styler, i-1, state); - state = SCE_C_DEFAULT; - } - } else if (state == SCE_C_COMMENT) { - if (ch == '\r' || ch == '\n') { - ColourTo(styler, i, state); - state = SCE_C_DEFAULT; - } - } else if (state == SCE_C_COMMENTDOC) { - if (ch == '\r' || ch == '\n') { - if (((i > styler.GetStartSegment() + 2) || ( - (initStyle == SCE_C_COMMENTDOC) && - (styler.GetStartSegment() == static_cast(startPos))))) { - ColourTo(styler, i, state); - state = SCE_C_DEFAULT; - } - } - } else if (state == SCE_C_COMMENTLINE) { - if (ch == '\r' || ch == '\n') { - ColourTo(styler, i-1, state); - state = SCE_C_DEFAULT; - } - } else if (state == SCE_C_STRING) { - if (ch == '"') { - ColourTo(styler, i, state); - state = SCE_C_DEFAULT; - } - } else if (state == SCE_C_CHARACTER) { - if (ch == '\'') { - ColourTo(styler, i, state); - state = SCE_C_DEFAULT; - } - } - } - chPrev = ch; - bNewLine = bSetNewLine; - if (bNewLine) - { - bAarea = false; - } - } - ColourTo(styler, lengthDoc - 1, state); -} - -static void FoldCOBOLDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], - Accessor &styler) { - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = lineCurrent > 0 ? styler.LevelAt(lineCurrent - 1) & SC_FOLDLEVELNUMBERMASK : 0xFFF; - char chNext = styler[startPos]; - - bool bNewLine = true; - bool bAarea = !isspacechar(chNext); - int column = 0; - bool bComment = false; - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - ++column; - - if (bNewLine) { - column = 0; - bComment = (ch == '*' || ch == '/' || ch == '?'); - } - if (column <= 1 && !bAarea) { - bAarea = !isspacechar(ch); - } - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (atEOL) { - int nContainment = styler.GetLineState(lineCurrent); - int lev = CountBits(nContainment & IN_FLAGS) | SC_FOLDLEVELBASE; - if (bAarea && !bComment) - --lev; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((bAarea) && (visibleChars > 0) && !(nContainment & NOT_HEADER) && !bComment) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - if ((lev & SC_FOLDLEVELNUMBERMASK) <= (levelPrev & SC_FOLDLEVELNUMBERMASK)) { - // this level is at the same level or less than the previous line - // therefore these is nothing for the previous header to collapse, so remove the header - styler.SetLevel(lineCurrent - 1, levelPrev & ~SC_FOLDLEVELHEADERFLAG); - } - levelPrev = lev; - visibleChars = 0; - bAarea = false; - bNewLine = true; - lineCurrent++; - } else { - bNewLine = false; - } - - - if (!isspacechar(ch)) - visibleChars++; - } - - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -static const char * const COBOLWordListDesc[] = { - "A Keywords", - "B Keywords", - "Extended Keywords", - 0 -}; - -LexerModule lmCOBOL(SCLEX_COBOL, ColouriseCOBOLDoc, "COBOL", FoldCOBOLDoc, COBOLWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCPP.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCPP.cpp deleted file mode 100644 index 3dac142ab..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCPP.cpp +++ /dev/null @@ -1,1725 +0,0 @@ -// Scintilla source code edit control -/** @file LexCPP.cxx - ** Lexer for C++, C, Java, and JavaScript. - ** Further folding features and configuration properties added by "Udo Lechner" - **/ -// Copyright 1998-2005 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "StringCopy.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "OptionSet.h" -#include "SparseState.h" -#include "SubStyles.h" - -using namespace Scintilla; - -namespace { - // Use an unnamed namespace to protect the functions and classes from name conflicts - -bool IsSpaceEquiv(int state) noexcept { - return (state <= SCE_C_COMMENTDOC) || - // including SCE_C_DEFAULT, SCE_C_COMMENT, SCE_C_COMMENTLINE - (state == SCE_C_COMMENTLINEDOC) || (state == SCE_C_COMMENTDOCKEYWORD) || - (state == SCE_C_COMMENTDOCKEYWORDERROR); -} - -// Preconditions: sc.currentPos points to a character after '+' or '-'. -// The test for pos reaching 0 should be redundant, -// and is in only for safety measures. -// Limitation: this code will give the incorrect answer for code like -// a = b+++/ptn/... -// Putting a space between the '++' post-inc operator and the '+' binary op -// fixes this, and is highly recommended for readability anyway. -bool FollowsPostfixOperator(const StyleContext &sc, LexAccessor &styler) { - Sci_Position pos = sc.currentPos; - while (--pos > 0) { - const char ch = styler[pos]; - if (ch == '+' || ch == '-') { - return styler[pos - 1] == ch; - } - } - return false; -} - -bool followsReturnKeyword(const StyleContext &sc, LexAccessor &styler) { - // Don't look at styles, so no need to flush. - Sci_Position pos = sc.currentPos; - const Sci_Position currentLine = styler.GetLine(pos); - const Sci_Position lineStartPos = styler.LineStart(currentLine); - while (--pos > lineStartPos) { - const char ch = styler.SafeGetCharAt(pos); - if (ch != ' ' && ch != '\t') { - break; - } - } - const char *retBack = "nruter"; - const char *s = retBack; - while (*s - && pos >= lineStartPos - && styler.SafeGetCharAt(pos) == *s) { - s++; - pos--; - } - return !*s; -} - -bool IsSpaceOrTab(int ch) noexcept { - return ch == ' ' || ch == '\t'; -} - -bool OnlySpaceOrTab(const std::string &s) noexcept { - for (const char ch : s) { - if (!IsSpaceOrTab(ch)) - return false; - } - return true; -} - -std::vector StringSplit(const std::string &text, int separator) { - std::vector vs(text.empty() ? 0 : 1); - for (const char ch : text) { - if (ch == separator) { - vs.emplace_back(); - } else { - vs.back() += ch; - } - } - return vs; -} - -struct BracketPair { - std::vector::iterator itBracket; - std::vector::iterator itEndBracket; -}; - -BracketPair FindBracketPair(std::vector &tokens) { - BracketPair bp; - std::vector::iterator itTok = std::find(tokens.begin(), tokens.end(), "("); - bp.itBracket = tokens.end(); - bp.itEndBracket = tokens.end(); - if (itTok != tokens.end()) { - bp.itBracket = itTok; - size_t nest = 0; - while (itTok != tokens.end()) { - if (*itTok == "(") { - nest++; - } else if (*itTok == ")") { - nest--; - if (nest == 0) { - bp.itEndBracket = itTok; - return bp; - } - } - ++itTok; - } - } - bp.itBracket = tokens.end(); - return bp; -} - -void highlightTaskMarker(StyleContext &sc, LexAccessor &styler, - int activity, const WordList &markerList, bool caseSensitive){ - if ((isoperator(sc.chPrev) || IsASpace(sc.chPrev)) && markerList.Length()) { - const int lengthMarker = 50; - char marker[lengthMarker+1] = ""; - const Sci_Position currPos = static_cast(sc.currentPos); - int i = 0; - while (i < lengthMarker) { - const char ch = styler.SafeGetCharAt(currPos + i); - if (IsASpace(ch) || isoperator(ch)) { - break; - } - if (caseSensitive) - marker[i] = ch; - else - marker[i] = MakeLowerCase(ch); - i++; - } - marker[i] = '\0'; - if (markerList.InList(marker)) { - sc.SetState(SCE_C_TASKMARKER|activity); - } - } -} - -struct EscapeSequence { - int digitsLeft; - CharacterSet setHexDigits; - CharacterSet setOctDigits; - CharacterSet setNoneNumeric; - CharacterSet *escapeSetValid; - EscapeSequence() { - digitsLeft = 0; - escapeSetValid = 0; - setHexDigits = CharacterSet(CharacterSet::setDigits, "ABCDEFabcdef"); - setOctDigits = CharacterSet(CharacterSet::setNone, "01234567"); - } - void resetEscapeState(int nextChar) { - digitsLeft = 0; - escapeSetValid = &setNoneNumeric; - if (nextChar == 'U') { - digitsLeft = 9; - escapeSetValid = &setHexDigits; - } else if (nextChar == 'u') { - digitsLeft = 5; - escapeSetValid = &setHexDigits; - } else if (nextChar == 'x') { - digitsLeft = 5; - escapeSetValid = &setHexDigits; - } else if (setOctDigits.Contains(nextChar)) { - digitsLeft = 3; - escapeSetValid = &setOctDigits; - } - } - bool atEscapeEnd(int currChar) const { - return (digitsLeft <= 0) || !escapeSetValid->Contains(currChar); - } -}; - -std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpace) { - std::string restOfLine; - Sci_Position i =0; - char ch = styler.SafeGetCharAt(start, '\n'); - const Sci_Position endLine = styler.LineEnd(styler.GetLine(start)); - while (((start+i) < endLine) && (ch != '\r')) { - const char chNext = styler.SafeGetCharAt(start + i + 1, '\n'); - if (ch == '/' && (chNext == '/' || chNext == '*')) - break; - if (allowSpace || (ch != ' ')) - restOfLine += ch; - i++; - ch = chNext; - } - return restOfLine; -} - -bool IsStreamCommentStyle(int style) noexcept { - return style == SCE_C_COMMENT || - style == SCE_C_COMMENTDOC || - style == SCE_C_COMMENTDOCKEYWORD || - style == SCE_C_COMMENTDOCKEYWORDERROR; -} - -struct PPDefinition { - Sci_Position line; - std::string key; - std::string value; - bool isUndef; - std::string arguments; - PPDefinition(Sci_Position line_, const std::string &key_, const std::string &value_, bool isUndef_ = false, const std::string &arguments_="") : - line(line_), key(key_), value(value_), isUndef(isUndef_), arguments(arguments_) { - } -}; - -class LinePPState { - int state; - int ifTaken; - int level; - bool ValidLevel() const noexcept { - return level >= 0 && level < 32; - } - int maskLevel() const noexcept { - if (level >= 0) { - return 1 << level; - } else { - return 1; - } - } -public: - LinePPState() : state(0), ifTaken(0), level(-1) { - } - bool IsInactive() const noexcept { - return state != 0; - } - bool CurrentIfTaken() const noexcept { - return (ifTaken & maskLevel()) != 0; - } - void StartSection(bool on) noexcept { - level++; - if (ValidLevel()) { - if (on) { - state &= ~maskLevel(); - ifTaken |= maskLevel(); - } else { - state |= maskLevel(); - ifTaken &= ~maskLevel(); - } - } - } - void EndSection() noexcept { - if (ValidLevel()) { - state &= ~maskLevel(); - ifTaken &= ~maskLevel(); - } - level--; - } - void InvertCurrentLevel() noexcept { - if (ValidLevel()) { - state ^= maskLevel(); - ifTaken |= maskLevel(); - } - } -}; - -// Hold the preprocessor state for each line seen. -// Currently one entry per line but could become sparse with just one entry per preprocessor line. -class PPStates { - std::vector vlls; -public: - LinePPState ForLine(Sci_Position line) const { - if ((line > 0) && (vlls.size() > static_cast(line))) { - return vlls[line]; - } else { - return LinePPState(); - } - } - void Add(Sci_Position line, LinePPState lls) { - vlls.resize(line+1); - vlls[line] = lls; - } -}; - -// An individual named option for use in an OptionSet - -// Options used for LexerCPP -struct OptionsCPP { - bool stylingWithinPreprocessor; - bool identifiersAllowDollars; - bool trackPreprocessor; - bool updatePreprocessor; - bool verbatimStringsAllowEscapes; - bool triplequotedStrings; - bool hashquotedStrings; - bool backQuotedStrings; - bool escapeSequence; - bool fold; - bool foldSyntaxBased; - bool foldComment; - bool foldCommentMultiline; - bool foldCommentExplicit; - std::string foldExplicitStart; - std::string foldExplicitEnd; - bool foldExplicitAnywhere; - bool foldPreprocessor; - bool foldPreprocessorAtElse; - bool foldCompact; - bool foldAtElse; - OptionsCPP() { - stylingWithinPreprocessor = false; - identifiersAllowDollars = true; - trackPreprocessor = true; - updatePreprocessor = true; - verbatimStringsAllowEscapes = false; - triplequotedStrings = false; - hashquotedStrings = false; - backQuotedStrings = false; - escapeSequence = false; - fold = false; - foldSyntaxBased = true; - foldComment = false; - foldCommentMultiline = true; - foldCommentExplicit = true; - foldExplicitStart = ""; - foldExplicitEnd = ""; - foldExplicitAnywhere = false; - foldPreprocessor = false; - foldPreprocessorAtElse = false; - foldCompact = false; - foldAtElse = false; - } -}; - -const char *const cppWordLists[] = { - "Primary keywords and identifiers", - "Secondary keywords and identifiers", - "Documentation comment keywords", - "Global classes and typedefs", - "Preprocessor definitions", - "Task marker and error marker keywords", - 0, -}; - -struct OptionSetCPP : public OptionSet { - OptionSetCPP() { - DefineProperty("styling.within.preprocessor", &OptionsCPP::stylingWithinPreprocessor, - "For C++ code, determines whether all preprocessor code is styled in the " - "preprocessor style (0, the default) or only from the initial # to the end " - "of the command word(1)."); - - DefineProperty("lexer.cpp.allow.dollars", &OptionsCPP::identifiersAllowDollars, - "Set to 0 to disallow the '$' character in identifiers with the cpp lexer."); - - DefineProperty("lexer.cpp.track.preprocessor", &OptionsCPP::trackPreprocessor, - "Set to 1 to interpret #if/#else/#endif to grey out code that is not active."); - - DefineProperty("lexer.cpp.update.preprocessor", &OptionsCPP::updatePreprocessor, - "Set to 1 to update preprocessor definitions when #define found."); - - DefineProperty("lexer.cpp.verbatim.strings.allow.escapes", &OptionsCPP::verbatimStringsAllowEscapes, - "Set to 1 to allow verbatim strings to contain escape sequences."); - - DefineProperty("lexer.cpp.triplequoted.strings", &OptionsCPP::triplequotedStrings, - "Set to 1 to enable highlighting of triple-quoted strings."); - - DefineProperty("lexer.cpp.hashquoted.strings", &OptionsCPP::hashquotedStrings, - "Set to 1 to enable highlighting of hash-quoted strings."); - - DefineProperty("lexer.cpp.backquoted.strings", &OptionsCPP::backQuotedStrings, - "Set to 1 to enable highlighting of back-quoted raw strings ."); - - DefineProperty("lexer.cpp.escape.sequence", &OptionsCPP::escapeSequence, - "Set to 1 to enable highlighting of escape sequences in strings"); - - DefineProperty("fold", &OptionsCPP::fold); - - DefineProperty("fold.cpp.syntax.based", &OptionsCPP::foldSyntaxBased, - "Set this property to 0 to disable syntax based folding."); - - DefineProperty("fold.comment", &OptionsCPP::foldComment, - "This option enables folding multi-line comments and explicit fold points when using the C++ lexer. " - "Explicit fold points allows adding extra folding by placing a //{ comment at the start and a //} " - "at the end of a section that should fold."); - - DefineProperty("fold.cpp.comment.multiline", &OptionsCPP::foldCommentMultiline, - "Set this property to 0 to disable folding multi-line comments when fold.comment=1."); - - DefineProperty("fold.cpp.comment.explicit", &OptionsCPP::foldCommentExplicit, - "Set this property to 0 to disable folding explicit fold points when fold.comment=1."); - - DefineProperty("fold.cpp.explicit.start", &OptionsCPP::foldExplicitStart, - "The string to use for explicit fold start points, replacing the standard //{."); - - DefineProperty("fold.cpp.explicit.end", &OptionsCPP::foldExplicitEnd, - "The string to use for explicit fold end points, replacing the standard //}."); - - DefineProperty("fold.cpp.explicit.anywhere", &OptionsCPP::foldExplicitAnywhere, - "Set this property to 1 to enable explicit fold points anywhere, not just in line comments."); - - DefineProperty("fold.cpp.preprocessor.at.else", &OptionsCPP::foldPreprocessorAtElse, - "This option enables folding on a preprocessor #else or #endif line of an #if statement."); - - DefineProperty("fold.preprocessor", &OptionsCPP::foldPreprocessor, - "This option enables folding preprocessor directives when using the C++ lexer. " - "Includes C#'s explicit #region and #endregion folding directives."); - - DefineProperty("fold.compact", &OptionsCPP::foldCompact); - - DefineProperty("fold.at.else", &OptionsCPP::foldAtElse, - "This option enables C++ folding on a \"} else {\" line of an if statement."); - - DefineWordListSets(cppWordLists); - } -}; - -const char styleSubable[] = {SCE_C_IDENTIFIER, SCE_C_COMMENTDOCKEYWORD, 0}; - -LexicalClass lexicalClasses[] = { - // Lexer Cpp SCLEX_CPP SCE_C_: - 0, "SCE_C_DEFAULT", "default", "White space", - 1, "SCE_C_COMMENT", "comment", "Comment: /* */.", - 2, "SCE_C_COMMENTLINE", "comment line", "Line Comment: //.", - 3, "SCE_C_COMMENTDOC", "comment documentation", "Doc comment: block comments beginning with /** or /*!", - 4, "SCE_C_NUMBER", "literal numeric", "Number", - 5, "SCE_C_WORD", "keyword", "Keyword", - 6, "SCE_C_STRING", "literal string", "Double quoted string", - 7, "SCE_C_CHARACTER", "literal string character", "Single quoted string", - 8, "SCE_C_UUID", "literal uuid", "UUIDs (only in IDL)", - 9, "SCE_C_PREPROCESSOR", "preprocessor", "Preprocessor", - 10, "SCE_C_OPERATOR", "operator", "Operators", - 11, "SCE_C_IDENTIFIER", "identifier", "Identifiers", - 12, "SCE_C_STRINGEOL", "error literal string", "End of line where string is not closed", - 13, "SCE_C_VERBATIM", "literal string multiline raw", "Verbatim strings for C#", - 14, "SCE_C_REGEX", "literal regex", "Regular expressions for JavaScript", - 15, "SCE_C_COMMENTLINEDOC", "comment documentation line", "Doc Comment Line: line comments beginning with /// or //!.", - 16, "SCE_C_WORD2", "identifier", "Keywords2", - 17, "SCE_C_COMMENTDOCKEYWORD", "comment documentation keyword", "Comment keyword", - 18, "SCE_C_COMMENTDOCKEYWORDERROR", "error comment documentation keyword", "Comment keyword error", - 19, "SCE_C_GLOBALCLASS", "identifier", "Global class", - 20, "SCE_C_STRINGRAW", "literal string multiline raw", "Raw strings for C++0x", - 21, "SCE_C_TRIPLEVERBATIM", "literal string multiline raw", "Triple-quoted strings for Vala", - 22, "SCE_C_HASHQUOTEDSTRING", "literal string", "Hash-quoted strings for Pike", - 23, "SCE_C_PREPROCESSORCOMMENT", "comment preprocessor", "Preprocessor stream comment", - 24, "SCE_C_PREPROCESSORCOMMENTDOC", "comment preprocessor documentation", "Preprocessor stream doc comment", - 25, "SCE_C_USERLITERAL", "literal", "User defined literals", - 26, "SCE_C_TASKMARKER", "comment taskmarker", "Task Marker", - 27, "SCE_C_ESCAPESEQUENCE", "literal string escapesequence", "Escape sequence", -}; - -} - -class LexerCPP : public ILexerWithMetaData { - bool caseSensitive; - CharacterSet setWord; - CharacterSet setNegationOp; - CharacterSet setArithmethicOp; - CharacterSet setRelOp; - CharacterSet setLogicalOp; - CharacterSet setWordStart; - PPStates vlls; - std::vector ppDefineHistory; - WordList keywords; - WordList keywords2; - WordList keywords3; - WordList keywords4; - WordList ppDefinitions; - WordList markerList; - struct SymbolValue { - std::string value; - std::string arguments; - SymbolValue(const std::string &value_="", const std::string &arguments_="") : value(value_), arguments(arguments_) { - } - SymbolValue &operator = (const std::string &value_) { - value = value_; - arguments.clear(); - return *this; - } - bool IsMacro() const noexcept { - return !arguments.empty(); - } - }; - typedef std::map SymbolTable; - SymbolTable preprocessorDefinitionsStart; - OptionsCPP options; - OptionSetCPP osCPP; - EscapeSequence escapeSeq; - SparseState rawStringTerminators; - enum { activeFlag = 0x40 }; - enum { ssIdentifier, ssDocKeyword }; - SubStyles subStyles; - std::string returnBuffer; -public: - explicit LexerCPP(bool caseSensitive_) : - caseSensitive(caseSensitive_), - setWord(CharacterSet::setAlphaNum, "._", 0x80, true), - setNegationOp(CharacterSet::setNone, "!"), - setArithmethicOp(CharacterSet::setNone, "+-/*%"), - setRelOp(CharacterSet::setNone, "=!<>"), - setLogicalOp(CharacterSet::setNone, "|&"), - subStyles(styleSubable, 0x80, 0x40, activeFlag) { - } - virtual ~LexerCPP() { - } - void SCI_METHOD Release() override { - delete this; - } - int SCI_METHOD Version() const override { - return lvMetaData; - } - const char * SCI_METHOD PropertyNames() override { - return osCPP.PropertyNames(); - } - int SCI_METHOD PropertyType(const char *name) override { - return osCPP.PropertyType(name); - } - const char * SCI_METHOD DescribeProperty(const char *name) override { - return osCPP.DescribeProperty(name); - } - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; - const char * SCI_METHOD DescribeWordListSets() override { - return osCPP.DescribeWordListSets(); - } - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - - void * SCI_METHOD PrivateCall(int, void *) override { - return 0; - } - - int SCI_METHOD LineEndTypesSupported() override { - return SC_LINE_END_TYPE_UNICODE; - } - - int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override { - return subStyles.Allocate(styleBase, numberStyles); - } - int SCI_METHOD SubStylesStart(int styleBase) override { - return subStyles.Start(styleBase); - } - int SCI_METHOD SubStylesLength(int styleBase) override { - return subStyles.Length(styleBase); - } - int SCI_METHOD StyleFromSubStyle(int subStyle) override { - const int styleBase = subStyles.BaseStyle(MaskActive(subStyle)); - const int active = subStyle & activeFlag; - return styleBase | active; - } - int SCI_METHOD PrimaryStyleFromStyle(int style) override { - return MaskActive(style); - } - void SCI_METHOD FreeSubStyles() override { - subStyles.Free(); - } - void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override { - subStyles.SetIdentifiers(style, identifiers); - } - int SCI_METHOD DistanceToSecondaryStyles() override { - return activeFlag; - } - const char * SCI_METHOD GetSubStyleBases() override { - return styleSubable; - } - int SCI_METHOD NamedStyles() override { - return std::max(subStyles.LastAllocated() + 1, - static_cast(ELEMENTS(lexicalClasses))) + - activeFlag; - } - const char * SCI_METHOD NameOfStyle(int style) override { - if (style >= NamedStyles()) - return ""; - if (style < static_cast(ELEMENTS(lexicalClasses))) - return lexicalClasses[style].name; - // TODO: inactive and substyles - return ""; - } - const char * SCI_METHOD TagsOfStyle(int style) override { - if (style >= NamedStyles()) - return "Excess"; - returnBuffer.clear(); - const int firstSubStyle = subStyles.FirstAllocated(); - if (firstSubStyle >= 0) { - const int lastSubStyle = subStyles.LastAllocated(); - if (((style >= firstSubStyle) && (style <= (lastSubStyle))) || - ((style >= firstSubStyle + activeFlag) && (style <= (lastSubStyle + activeFlag)))) { - int styleActive = style; - if (style > lastSubStyle) { - returnBuffer = "inactive "; - styleActive -= activeFlag; - } - const int styleMain = StyleFromSubStyle(styleActive); - returnBuffer += lexicalClasses[styleMain].tags; - return returnBuffer.c_str(); - } - } - if (style < static_cast(ELEMENTS(lexicalClasses))) - return lexicalClasses[style].tags; - if (style >= activeFlag) { - returnBuffer = "inactive "; - const int styleActive = style - activeFlag; - if (styleActive < static_cast(ELEMENTS(lexicalClasses))) - returnBuffer += lexicalClasses[styleActive].tags; - else - returnBuffer = ""; - return returnBuffer.c_str(); - } - return ""; - } - const char * SCI_METHOD DescriptionOfStyle(int style) override { - if (style >= NamedStyles()) - return ""; - if (style < static_cast(ELEMENTS(lexicalClasses))) - return lexicalClasses[style].description; - // TODO: inactive and substyles - return ""; - } - - static ILexer *LexerFactoryCPP() { - return new LexerCPP(true); - } - static ILexer *LexerFactoryCPPInsensitive() { - return new LexerCPP(false); - } - static int MaskActive(int style) noexcept { - return style & ~activeFlag; - } - void EvaluateTokens(std::vector &tokens, const SymbolTable &preprocessorDefinitions); - std::vector Tokenize(const std::string &expr) const; - bool EvaluateExpression(const std::string &expr, const SymbolTable &preprocessorDefinitions); -}; - -Sci_Position SCI_METHOD LexerCPP::PropertySet(const char *key, const char *val) { - if (osCPP.PropertySet(&options, key, val)) { - if (strcmp(key, "lexer.cpp.allow.dollars") == 0) { - setWord = CharacterSet(CharacterSet::setAlphaNum, "._", 0x80, true); - if (options.identifiersAllowDollars) { - setWord.Add('$'); - } - } - return 0; - } - return -1; -} - -Sci_Position SCI_METHOD LexerCPP::WordListSet(int n, const char *wl) { - WordList *wordListN = 0; - switch (n) { - case 0: - wordListN = &keywords; - break; - case 1: - wordListN = &keywords2; - break; - case 2: - wordListN = &keywords3; - break; - case 3: - wordListN = &keywords4; - break; - case 4: - wordListN = &ppDefinitions; - break; - case 5: - wordListN = &markerList; - break; - } - Sci_Position firstModification = -1; - if (wordListN) { - WordList wlNew; - wlNew.Set(wl); - if (*wordListN != wlNew) { - wordListN->Set(wl); - firstModification = 0; - if (n == 4) { - // Rebuild preprocessorDefinitions - preprocessorDefinitionsStart.clear(); - for (int nDefinition = 0; nDefinition < ppDefinitions.Length(); nDefinition++) { - const char *cpDefinition = ppDefinitions.WordAt(nDefinition); - const char *cpEquals = strchr(cpDefinition, '='); - if (cpEquals) { - std::string name(cpDefinition, cpEquals - cpDefinition); - std::string val(cpEquals+1); - const size_t bracket = name.find('('); - const size_t bracketEnd = name.find(')'); - if ((bracket != std::string::npos) && (bracketEnd != std::string::npos)) { - // Macro - std::string args = name.substr(bracket + 1, bracketEnd - bracket - 1); - name = name.substr(0, bracket); - preprocessorDefinitionsStart[name] = SymbolValue(val, args); - } else { - preprocessorDefinitionsStart[name] = val; - } - } else { - std::string name(cpDefinition); - std::string val("1"); - preprocessorDefinitionsStart[name] = val; - } - } - } - } - } - return firstModification; -} - -void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - LexAccessor styler(pAccess); - - CharacterSet setOKBeforeRE(CharacterSet::setNone, "([{=,:;!%^&*|?~+-"); - CharacterSet setCouldBePostOp(CharacterSet::setNone, "+-"); - - CharacterSet setDoxygen(CharacterSet::setAlpha, "$@\\&<>#{}[]"); - - setWordStart = CharacterSet(CharacterSet::setAlpha, "_", 0x80, true); - - CharacterSet setInvalidRawFirst(CharacterSet::setNone, " )\\\t\v\f\n"); - - if (options.identifiersAllowDollars) { - setWordStart.Add('$'); - } - - int chPrevNonWhite = ' '; - int visibleChars = 0; - bool lastWordWasUUID = false; - int styleBeforeDCKeyword = SCE_C_DEFAULT; - int styleBeforeTaskMarker = SCE_C_DEFAULT; - bool continuationLine = false; - bool isIncludePreprocessor = false; - bool isStringInPreprocessor = false; - bool inRERange = false; - bool seenDocKeyBrace = false; - - Sci_Position lineCurrent = styler.GetLine(startPos); - if ((MaskActive(initStyle) == SCE_C_PREPROCESSOR) || - (MaskActive(initStyle) == SCE_C_COMMENTLINE) || - (MaskActive(initStyle) == SCE_C_COMMENTLINEDOC)) { - // Set continuationLine if last character of previous line is '\' - if (lineCurrent > 0) { - const Sci_Position endLinePrevious = styler.LineEnd(lineCurrent - 1); - if (endLinePrevious > 0) { - continuationLine = styler.SafeGetCharAt(endLinePrevious-1) == '\\'; - } - } - } - - // look back to set chPrevNonWhite properly for better regex colouring - if (startPos > 0) { - Sci_Position back = startPos; - while (--back && IsSpaceEquiv(MaskActive(styler.StyleAt(back)))) - ; - if (MaskActive(styler.StyleAt(back)) == SCE_C_OPERATOR) { - chPrevNonWhite = styler.SafeGetCharAt(back); - } - } - - StyleContext sc(startPos, length, initStyle, styler); - LinePPState preproc = vlls.ForLine(lineCurrent); - - bool definitionsChanged = false; - - // Truncate ppDefineHistory before current line - - if (!options.updatePreprocessor) - ppDefineHistory.clear(); - - std::vector::iterator itInvalid = std::find_if(ppDefineHistory.begin(), ppDefineHistory.end(), - [lineCurrent](const PPDefinition &p) { return p.line >= lineCurrent; }); - if (itInvalid != ppDefineHistory.end()) { - ppDefineHistory.erase(itInvalid, ppDefineHistory.end()); - definitionsChanged = true; - } - - SymbolTable preprocessorDefinitions = preprocessorDefinitionsStart; - for (const PPDefinition &ppDef : ppDefineHistory) { - if (ppDef.isUndef) - preprocessorDefinitions.erase(ppDef.key); - else - preprocessorDefinitions[ppDef.key] = SymbolValue(ppDef.value, ppDef.arguments); - } - - std::string rawStringTerminator = rawStringTerminators.ValueAt(lineCurrent-1); - SparseState rawSTNew(lineCurrent); - - int activitySet = preproc.IsInactive() ? activeFlag : 0; - - const WordClassifier &classifierIdentifiers = subStyles.Classifier(SCE_C_IDENTIFIER); - const WordClassifier &classifierDocKeyWords = subStyles.Classifier(SCE_C_COMMENTDOCKEYWORD); - - Sci_Position lineEndNext = styler.LineEnd(lineCurrent); - - for (; sc.More();) { - - if (sc.atLineStart) { - // Using MaskActive() is not needed in the following statement. - // Inside inactive preprocessor declaration, state will be reset anyway at the end of this block. - if ((sc.state == SCE_C_STRING) || (sc.state == SCE_C_CHARACTER)) { - // Prevent SCE_C_STRINGEOL from leaking back to previous line which - // ends with a line continuation by locking in the state up to this position. - sc.SetState(sc.state); - } - if ((MaskActive(sc.state) == SCE_C_PREPROCESSOR) && (!continuationLine)) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } - // Reset states to beginning of colourise so no surprises - // if different sets of lines lexed. - visibleChars = 0; - lastWordWasUUID = false; - isIncludePreprocessor = false; - inRERange = false; - if (preproc.IsInactive()) { - activitySet = activeFlag; - sc.SetState(sc.state | activitySet); - } - } - - if (sc.atLineEnd) { - lineCurrent++; - lineEndNext = styler.LineEnd(lineCurrent); - vlls.Add(lineCurrent, preproc); - if (rawStringTerminator != "") { - rawSTNew.Set(lineCurrent-1, rawStringTerminator); - } - } - - // Handle line continuation generically. - if (sc.ch == '\\') { - if (static_cast((sc.currentPos+1)) >= lineEndNext) { - lineCurrent++; - lineEndNext = styler.LineEnd(lineCurrent); - vlls.Add(lineCurrent, preproc); - if (rawStringTerminator != "") { - rawSTNew.Set(lineCurrent-1, rawStringTerminator); - } - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - // Even in UTF-8, \r and \n are separate - sc.Forward(); - } - continuationLine = true; - sc.Forward(); - continue; - } - } - - const bool atLineEndBeforeSwitch = sc.atLineEnd; - - // Determine if the current state should terminate. - switch (MaskActive(sc.state)) { - case SCE_C_OPERATOR: - sc.SetState(SCE_C_DEFAULT|activitySet); - break; - case SCE_C_NUMBER: - // We accept almost anything because of hex. and number suffixes - if (sc.ch == '_') { - sc.ChangeState(SCE_C_USERLITERAL|activitySet); - } else if (!(setWord.Contains(sc.ch) - || (sc.ch == '\'') - || ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E' || - sc.chPrev == 'p' || sc.chPrev == 'P')))) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } - break; - case SCE_C_USERLITERAL: - if (!(setWord.Contains(sc.ch))) - sc.SetState(SCE_C_DEFAULT|activitySet); - break; - case SCE_C_IDENTIFIER: - if (sc.atLineStart || sc.atLineEnd || !setWord.Contains(sc.ch) || (sc.ch == '.')) { - char s[1000]; - if (caseSensitive) { - sc.GetCurrent(s, sizeof(s)); - } else { - sc.GetCurrentLowered(s, sizeof(s)); - } - if (keywords.InList(s)) { - lastWordWasUUID = strcmp(s, "uuid") == 0; - sc.ChangeState(SCE_C_WORD|activitySet); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_C_WORD2|activitySet); - } else if (keywords4.InList(s)) { - sc.ChangeState(SCE_C_GLOBALCLASS|activitySet); - } else { - int subStyle = classifierIdentifiers.ValueFor(s); - if (subStyle >= 0) { - sc.ChangeState(subStyle|activitySet); - } - } - const bool literalString = sc.ch == '\"'; - if (literalString || sc.ch == '\'') { - size_t lenS = strlen(s); - const bool raw = literalString && sc.chPrev == 'R' && !setInvalidRawFirst.Contains(sc.chNext); - if (raw) - s[lenS--] = '\0'; - const bool valid = - (lenS == 0) || - ((lenS == 1) && ((s[0] == 'L') || (s[0] == 'u') || (s[0] == 'U'))) || - ((lenS == 2) && literalString && (s[0] == 'u') && (s[1] == '8')); - if (valid) { - if (literalString) { - if (raw) { - // Set the style of the string prefix to SCE_C_STRINGRAW but then change to - // SCE_C_DEFAULT as that allows the raw string start code to run. - sc.ChangeState(SCE_C_STRINGRAW|activitySet); - sc.SetState(SCE_C_DEFAULT|activitySet); - } else { - sc.ChangeState(SCE_C_STRING|activitySet); - } - } else { - sc.ChangeState(SCE_C_CHARACTER|activitySet); - } - } else { - sc.SetState(SCE_C_DEFAULT | activitySet); - } - } else { - sc.SetState(SCE_C_DEFAULT|activitySet); - } - } - break; - case SCE_C_PREPROCESSOR: - if (options.stylingWithinPreprocessor) { - if (IsASpace(sc.ch)) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } - } else if (isStringInPreprocessor && (sc.Match('>') || sc.Match('\"') || sc.atLineEnd)) { - isStringInPreprocessor = false; - } else if (!isStringInPreprocessor) { - if ((isIncludePreprocessor && sc.Match('<')) || sc.Match('\"')) { - isStringInPreprocessor = true; - } else if (sc.Match('/', '*')) { - if (sc.Match("/**") || sc.Match("/*!")) { - sc.SetState(SCE_C_PREPROCESSORCOMMENTDOC|activitySet); - } else { - sc.SetState(SCE_C_PREPROCESSORCOMMENT|activitySet); - } - sc.Forward(); // Eat the * - } else if (sc.Match('/', '/')) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } - } - break; - case SCE_C_PREPROCESSORCOMMENT: - case SCE_C_PREPROCESSORCOMMENTDOC: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_C_PREPROCESSOR|activitySet); - continue; // Without advancing in case of '\'. - } - break; - case SCE_C_COMMENT: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - } else { - styleBeforeTaskMarker = SCE_C_COMMENT; - highlightTaskMarker(sc, styler, activitySet, markerList, caseSensitive); - } - break; - case SCE_C_COMMENTDOC: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support - // Verify that we have the conditions to mark a comment-doc-keyword - if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) { - styleBeforeDCKeyword = SCE_C_COMMENTDOC; - sc.SetState(SCE_C_COMMENTDOCKEYWORD|activitySet); - } - } - break; - case SCE_C_COMMENTLINE: - if (sc.atLineStart && !continuationLine) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } else { - styleBeforeTaskMarker = SCE_C_COMMENTLINE; - highlightTaskMarker(sc, styler, activitySet, markerList, caseSensitive); - } - break; - case SCE_C_COMMENTLINEDOC: - if (sc.atLineStart && !continuationLine) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support - // Verify that we have the conditions to mark a comment-doc-keyword - if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) { - styleBeforeDCKeyword = SCE_C_COMMENTLINEDOC; - sc.SetState(SCE_C_COMMENTDOCKEYWORD|activitySet); - } - } - break; - case SCE_C_COMMENTDOCKEYWORD: - if ((styleBeforeDCKeyword == SCE_C_COMMENTDOC) && sc.Match('*', '/')) { - sc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR); - sc.Forward(); - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - seenDocKeyBrace = false; - } else if (sc.ch == '[' || sc.ch == '{') { - seenDocKeyBrace = true; - } else if (!setDoxygen.Contains(sc.ch) - && !(seenDocKeyBrace && (sc.ch == ',' || sc.ch == '.'))) { - char s[100]; - if (caseSensitive) { - sc.GetCurrent(s, sizeof(s)); - } else { - sc.GetCurrentLowered(s, sizeof(s)); - } - if (!(IsASpace(sc.ch) || (sc.ch == 0))) { - sc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR|activitySet); - } else if (!keywords3.InList(s + 1)) { - int subStyleCDKW = classifierDocKeyWords.ValueFor(s+1); - if (subStyleCDKW >= 0) { - sc.ChangeState(subStyleCDKW|activitySet); - } else { - sc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR|activitySet); - } - } - sc.SetState(styleBeforeDCKeyword|activitySet); - seenDocKeyBrace = false; - } - break; - case SCE_C_STRING: - if (sc.atLineEnd) { - sc.ChangeState(SCE_C_STRINGEOL|activitySet); - } else if (isIncludePreprocessor) { - if (sc.ch == '>') { - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - isIncludePreprocessor = false; - } - } else if (sc.ch == '\\') { - if (options.escapeSequence) { - sc.SetState(SCE_C_ESCAPESEQUENCE|activitySet); - escapeSeq.resetEscapeState(sc.chNext); - } - sc.Forward(); // Skip all characters after the backslash - } else if (sc.ch == '\"') { - if (sc.chNext == '_') { - sc.ChangeState(SCE_C_USERLITERAL|activitySet); - } else { - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - } - } - break; - case SCE_C_ESCAPESEQUENCE: - escapeSeq.digitsLeft--; - if (!escapeSeq.atEscapeEnd(sc.ch)) { - break; - } - if (sc.ch == '"') { - sc.SetState(SCE_C_STRING|activitySet); - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - } else if (sc.ch == '\\') { - escapeSeq.resetEscapeState(sc.chNext); - sc.Forward(); - } else { - sc.SetState(SCE_C_STRING|activitySet); - if (sc.atLineEnd) { - sc.ChangeState(SCE_C_STRINGEOL|activitySet); - } - } - break; - case SCE_C_HASHQUOTEDSTRING: - if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\"') { - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - } - break; - case SCE_C_STRINGRAW: - if (sc.Match(rawStringTerminator.c_str())) { - for (size_t termPos=rawStringTerminator.size(); termPos; termPos--) - sc.Forward(); - sc.SetState(SCE_C_DEFAULT|activitySet); - rawStringTerminator = ""; - } - break; - case SCE_C_CHARACTER: - if (sc.atLineEnd) { - sc.ChangeState(SCE_C_STRINGEOL|activitySet); - } else if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\'') { - if (sc.chNext == '_') { - sc.ChangeState(SCE_C_USERLITERAL|activitySet); - } else { - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - } - } - break; - case SCE_C_REGEX: - if (sc.atLineStart) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } else if (! inRERange && sc.ch == '/') { - sc.Forward(); - while ((sc.ch < 0x80) && islower(sc.ch)) - sc.Forward(); // gobble regex flags - sc.SetState(SCE_C_DEFAULT|activitySet); - } else if (sc.ch == '\\' && (static_cast(sc.currentPos+1) < lineEndNext)) { - // Gobble up the escaped character - sc.Forward(); - } else if (sc.ch == '[') { - inRERange = true; - } else if (sc.ch == ']') { - inRERange = false; - } - break; - case SCE_C_STRINGEOL: - if (sc.atLineStart) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } - break; - case SCE_C_VERBATIM: - if (options.verbatimStringsAllowEscapes && (sc.ch == '\\')) { - sc.Forward(); // Skip all characters after the backslash - } else if (sc.ch == '\"') { - if (sc.chNext == '\"') { - sc.Forward(); - } else { - sc.ForwardSetState(SCE_C_DEFAULT|activitySet); - } - } - break; - case SCE_C_TRIPLEVERBATIM: - if (sc.Match(R"(""")")) { - while (sc.Match('"')) { - sc.Forward(); - } - sc.SetState(SCE_C_DEFAULT|activitySet); - } - break; - case SCE_C_UUID: - if (sc.atLineEnd || sc.ch == ')') { - sc.SetState(SCE_C_DEFAULT|activitySet); - } - break; - case SCE_C_TASKMARKER: - if (isoperator(sc.ch) || IsASpace(sc.ch)) { - sc.SetState(styleBeforeTaskMarker|activitySet); - styleBeforeTaskMarker = SCE_C_DEFAULT; - } - } - - if (sc.atLineEnd && !atLineEndBeforeSwitch) { - // State exit processing consumed characters up to end of line. - lineCurrent++; - lineEndNext = styler.LineEnd(lineCurrent); - vlls.Add(lineCurrent, preproc); - } - - // Determine if a new state should be entered. - if (MaskActive(sc.state) == SCE_C_DEFAULT) { - if (sc.Match('@', '\"')) { - sc.SetState(SCE_C_VERBATIM|activitySet); - sc.Forward(); - } else if (options.triplequotedStrings && sc.Match(R"(""")")) { - sc.SetState(SCE_C_TRIPLEVERBATIM|activitySet); - sc.Forward(2); - } else if (options.hashquotedStrings && sc.Match('#', '\"')) { - sc.SetState(SCE_C_HASHQUOTEDSTRING|activitySet); - sc.Forward(); - } else if (options.backQuotedStrings && sc.Match('`')) { - sc.SetState(SCE_C_STRINGRAW|activitySet); - rawStringTerminator = "`"; - } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - if (lastWordWasUUID) { - sc.SetState(SCE_C_UUID|activitySet); - lastWordWasUUID = false; - } else { - sc.SetState(SCE_C_NUMBER|activitySet); - } - } else if (!sc.atLineEnd && (setWordStart.Contains(sc.ch) || (sc.ch == '@'))) { - if (lastWordWasUUID) { - sc.SetState(SCE_C_UUID|activitySet); - lastWordWasUUID = false; - } else { - sc.SetState(SCE_C_IDENTIFIER|activitySet); - } - } else if (sc.Match('/', '*')) { - if (sc.Match("/**") || sc.Match("/*!")) { // Support of Qt/Doxygen doc. style - sc.SetState(SCE_C_COMMENTDOC|activitySet); - } else { - sc.SetState(SCE_C_COMMENT|activitySet); - } - sc.Forward(); // Eat the * so it isn't used for the end of the comment - } else if (sc.Match('/', '/')) { - if ((sc.Match("///") && !sc.Match("////")) || sc.Match("//!")) - // Support of Qt/Doxygen doc. style - sc.SetState(SCE_C_COMMENTLINEDOC|activitySet); - else - sc.SetState(SCE_C_COMMENTLINE|activitySet); - } else if (sc.ch == '/' - && (setOKBeforeRE.Contains(chPrevNonWhite) - || followsReturnKeyword(sc, styler)) - && (!setCouldBePostOp.Contains(chPrevNonWhite) - || !FollowsPostfixOperator(sc, styler))) { - sc.SetState(SCE_C_REGEX|activitySet); // JavaScript's RegEx - inRERange = false; - } else if (sc.ch == '\"') { - if (sc.chPrev == 'R') { - styler.Flush(); - if (MaskActive(styler.StyleAt(sc.currentPos - 1)) == SCE_C_STRINGRAW) { - sc.SetState(SCE_C_STRINGRAW|activitySet); - rawStringTerminator = ")"; - for (Sci_Position termPos = sc.currentPos + 1;; termPos++) { - const char chTerminator = styler.SafeGetCharAt(termPos, '('); - if (chTerminator == '(') - break; - rawStringTerminator += chTerminator; - } - rawStringTerminator += '\"'; - } else { - sc.SetState(SCE_C_STRING|activitySet); - } - } else { - sc.SetState(SCE_C_STRING|activitySet); - } - isIncludePreprocessor = false; // ensure that '>' won't end the string - } else if (isIncludePreprocessor && sc.ch == '<') { - sc.SetState(SCE_C_STRING|activitySet); - } else if (sc.ch == '\'') { - sc.SetState(SCE_C_CHARACTER|activitySet); - } else if (sc.ch == '#' && visibleChars == 0) { - // Preprocessor commands are alone on their line - sc.SetState(SCE_C_PREPROCESSOR|activitySet); - // Skip whitespace between # and preprocessor word - do { - sc.Forward(); - } while ((sc.ch == ' ' || sc.ch == '\t') && sc.More()); - if (sc.atLineEnd) { - sc.SetState(SCE_C_DEFAULT|activitySet); - } else if (sc.Match("include")) { - isIncludePreprocessor = true; - } else { - if (options.trackPreprocessor) { - if (sc.Match("ifdef") || sc.Match("ifndef")) { - const bool isIfDef = sc.Match("ifdef"); - const int startRest = isIfDef ? 5 : 6; - std::string restOfLine = GetRestOfLine(styler, sc.currentPos + startRest + 1, false); - bool foundDef = preprocessorDefinitions.find(restOfLine) != preprocessorDefinitions.end(); - preproc.StartSection(isIfDef == foundDef); - } else if (sc.Match("if")) { - std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 2, true); - const bool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions); - preproc.StartSection(ifGood); - } else if (sc.Match("else")) { - if (!preproc.CurrentIfTaken()) { - preproc.InvertCurrentLevel(); - activitySet = preproc.IsInactive() ? activeFlag : 0; - if (!activitySet) - sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); - } else if (!preproc.IsInactive()) { - preproc.InvertCurrentLevel(); - activitySet = preproc.IsInactive() ? activeFlag : 0; - if (!activitySet) - sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); - } - } else if (sc.Match("elif")) { - // Ensure only one chosen out of #if .. #elif .. #elif .. #else .. #endif - if (!preproc.CurrentIfTaken()) { - // Similar to #if - std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 4, true); - const bool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions); - if (ifGood) { - preproc.InvertCurrentLevel(); - activitySet = preproc.IsInactive() ? activeFlag : 0; - if (!activitySet) - sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); - } - } else if (!preproc.IsInactive()) { - preproc.InvertCurrentLevel(); - activitySet = preproc.IsInactive() ? activeFlag : 0; - if (!activitySet) - sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); - } - } else if (sc.Match("endif")) { - preproc.EndSection(); - activitySet = preproc.IsInactive() ? activeFlag : 0; - sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); - } else if (sc.Match("define")) { - if (options.updatePreprocessor && !preproc.IsInactive()) { - std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 6, true); - size_t startName = 0; - while ((startName < restOfLine.length()) && IsSpaceOrTab(restOfLine[startName])) - startName++; - size_t endName = startName; - while ((endName < restOfLine.length()) && setWord.Contains(static_cast(restOfLine[endName]))) - endName++; - std::string key = restOfLine.substr(startName, endName-startName); - if ((endName < restOfLine.length()) && (restOfLine.at(endName) == '(')) { - // Macro - size_t endArgs = endName; - while ((endArgs < restOfLine.length()) && (restOfLine[endArgs] != ')')) - endArgs++; - std::string args = restOfLine.substr(endName + 1, endArgs - endName - 1); - size_t startValue = endArgs+1; - while ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue])) - startValue++; - std::string value; - if (startValue < restOfLine.length()) - value = restOfLine.substr(startValue); - preprocessorDefinitions[key] = SymbolValue(value, args); - ppDefineHistory.push_back(PPDefinition(lineCurrent, key, value, false, args)); - definitionsChanged = true; - } else { - // Value - size_t startValue = endName; - while ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue])) - startValue++; - std::string value = restOfLine.substr(startValue); - if (OnlySpaceOrTab(value)) - value = "1"; // No value defaults to 1 - preprocessorDefinitions[key] = value; - ppDefineHistory.push_back(PPDefinition(lineCurrent, key, value)); - definitionsChanged = true; - } - } - } else if (sc.Match("undef")) { - if (options.updatePreprocessor && !preproc.IsInactive()) { - const std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 5, false); - std::vector tokens = Tokenize(restOfLine); - if (tokens.size() >= 1) { - const std::string key = tokens[0]; - preprocessorDefinitions.erase(key); - ppDefineHistory.push_back(PPDefinition(lineCurrent, key, "", true)); - definitionsChanged = true; - } - } - } - } - } - } else if (isoperator(sc.ch)) { - sc.SetState(SCE_C_OPERATOR|activitySet); - } - } - - if (!IsASpace(sc.ch) && !IsSpaceEquiv(MaskActive(sc.state))) { - chPrevNonWhite = sc.ch; - visibleChars++; - } - continuationLine = false; - sc.Forward(); - } - const bool rawStringsChanged = rawStringTerminators.Merge(rawSTNew, lineCurrent); - if (definitionsChanged || rawStringsChanged) - styler.ChangeLexerState(startPos, startPos + length); - sc.Complete(); -} - -// Store both the current line's fold level and the next lines in the -// level store to make it easy to pick up with each increment -// and to make it possible to fiddle the current level for "} else {". - -void SCI_METHOD LexerCPP::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - - if (!options.fold) - return; - - LexAccessor styler(pAccess); - - const Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - bool inLineComment = false; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelCurrent = SC_FOLDLEVELBASE; - if (lineCurrent > 0) - levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; - Sci_PositionU lineStartNext = styler.LineStart(lineCurrent+1); - int levelMinCurrent = levelCurrent; - int levelNext = levelCurrent; - char chNext = styler[startPos]; - int styleNext = MaskActive(styler.StyleAt(startPos)); - int style = MaskActive(initStyle); - const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty(); - for (Sci_PositionU i = startPos; i < endPos; i++) { - const char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - const int stylePrev = style; - style = styleNext; - styleNext = MaskActive(styler.StyleAt(i + 1)); - const bool atEOL = i == (lineStartNext-1); - if ((style == SCE_C_COMMENTLINE) || (style == SCE_C_COMMENTLINEDOC)) - inLineComment = true; - if (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style) && !inLineComment) { - if (!IsStreamCommentStyle(stylePrev)) { - levelNext++; - } else if (!IsStreamCommentStyle(styleNext) && !atEOL) { - // Comments don't end at end of line and the next character may be unstyled. - levelNext--; - } - } - if (options.foldComment && options.foldCommentExplicit && ((style == SCE_C_COMMENTLINE) || options.foldExplicitAnywhere)) { - if (userDefinedFoldMarkers) { - if (styler.Match(i, options.foldExplicitStart.c_str())) { - levelNext++; - } else if (styler.Match(i, options.foldExplicitEnd.c_str())) { - levelNext--; - } - } else { - if ((ch == '/') && (chNext == '/')) { - const char chNext2 = styler.SafeGetCharAt(i + 2); - if (chNext2 == '{') { - levelNext++; - } else if (chNext2 == '}') { - levelNext--; - } - } - } - } - if (options.foldPreprocessor && (style == SCE_C_PREPROCESSOR)) { - if (ch == '#') { - Sci_PositionU j = i + 1; - while ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { - j++; - } - if (styler.Match(j, "region") || styler.Match(j, "if")) { - levelNext++; - } else if (styler.Match(j, "end")) { - levelNext--; - } - - if (options.foldPreprocessorAtElse && (styler.Match(j, "else") || styler.Match(j, "elif"))) { - levelMinCurrent--; - } - } - } - if (options.foldSyntaxBased && (style == SCE_C_OPERATOR)) { - if (ch == '{' || ch == '[' || ch == '(') { - // Measure the minimum before a '{' to allow - // folding on "} else {" - if (options.foldAtElse && levelMinCurrent > levelNext) { - levelMinCurrent = levelNext; - } - levelNext++; - } else if (ch == '}' || ch == ']' || ch == ')') { - levelNext--; - } - } - if (!IsASpace(ch)) - visibleChars++; - if (atEOL || (i == endPos-1)) { - int levelUse = levelCurrent; - if ((options.foldSyntaxBased && options.foldAtElse) || - (options.foldPreprocessor && options.foldPreprocessorAtElse) - ) { - levelUse = levelMinCurrent; - } - int lev = levelUse | levelNext << 16; - if (visibleChars == 0 && options.foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if (levelUse < levelNext) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - lineStartNext = styler.LineStart(lineCurrent+1); - levelCurrent = levelNext; - levelMinCurrent = levelCurrent; - if (atEOL && (i == static_cast(styler.Length()-1))) { - // There is an empty line at end of file so give it same level and empty - styler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG); - } - visibleChars = 0; - inLineComment = false; - } - } -} - -void LexerCPP::EvaluateTokens(std::vector &tokens, const SymbolTable &preprocessorDefinitions) { - - // Remove whitespace tokens - tokens.erase(std::remove_if(tokens.begin(), tokens.end(), OnlySpaceOrTab), tokens.end()); - - // Evaluate defined statements to either 0 or 1 - for (size_t i=0; (i+1)) - SymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i+2]); - if (it != preprocessorDefinitions.end()) { - val = "1"; - } - tokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 4); - } else { - // Spurious '(' so erase as more likely to result in false - tokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 2); - } - } else { - // defined - SymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i+1]); - if (it != preprocessorDefinitions.end()) { - val = "1"; - } - tokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 2); - } - tokens[i] = val; - } else { - i++; - } - } - - // Evaluate identifiers - const size_t maxIterations = 100; - size_t iterations = 0; // Limit number of iterations in case there is a recursive macro. - for (size_t i = 0; (i(tokens[i][0]))) { - SymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i]); - if (it != preprocessorDefinitions.end()) { - // Tokenize value - std::vector macroTokens = Tokenize(it->second.value); - if (it->second.IsMacro()) { - if ((i + 1 < tokens.size()) && (tokens.at(i + 1) == "(")) { - // Create map of argument name to value - std::vector argumentNames = StringSplit(it->second.arguments, ','); - std::map arguments; - size_t arg = 0; - size_t tok = i+2; - while ((tok < tokens.size()) && (arg < argumentNames.size()) && (tokens.at(tok) != ")")) { - if (tokens.at(tok) != ",") { - arguments[argumentNames.at(arg)] = tokens.at(tok); - arg++; - } - tok++; - } - - // Remove invocation - tokens.erase(tokens.begin() + i, tokens.begin() + tok + 1); - - // Substitute values into macro - macroTokens.erase(std::remove_if(macroTokens.begin(), macroTokens.end(), OnlySpaceOrTab), macroTokens.end()); - - for (size_t iMacro = 0; iMacro < macroTokens.size();) { - if (setWordStart.Contains(static_cast(macroTokens[iMacro][0]))) { - std::map::const_iterator itFind = arguments.find(macroTokens[iMacro]); - if (itFind != arguments.end()) { - // TODO: Possible that value will be expression so should insert tokenized form - macroTokens[iMacro] = itFind->second; - } - } - iMacro++; - } - - // Insert results back into tokens - tokens.insert(tokens.begin() + i, macroTokens.begin(), macroTokens.end()); - - } else { - i++; - } - } else { - // Remove invocation - tokens.erase(tokens.begin() + i); - // Insert results back into tokens - tokens.insert(tokens.begin() + i, macroTokens.begin(), macroTokens.end()); - } - } else { - // Identifier not found and value defaults to zero - tokens[i] = "0"; - } - } else { - i++; - } - } - - // Find bracketed subexpressions and recurse on them - BracketPair bracketPair = FindBracketPair(tokens); - while (bracketPair.itBracket != tokens.end()) { - std::vector inBracket(bracketPair.itBracket + 1, bracketPair.itEndBracket); - EvaluateTokens(inBracket, preprocessorDefinitions); - - // The insertion is done before the removal because there were failures with the opposite approach - tokens.insert(bracketPair.itBracket, inBracket.begin(), inBracket.end()); - - bracketPair = FindBracketPair(tokens); - tokens.erase(bracketPair.itBracket, bracketPair.itEndBracket + 1); - - bracketPair = FindBracketPair(tokens); - } - - // Evaluate logical negations - for (size_t j=0; (j+1)::iterator itInsert = - tokens.erase(tokens.begin() + j, tokens.begin() + j + 2); - tokens.insert(itInsert, isTrue ? "1" : "0"); - } else { - j++; - } - } - - // Evaluate expressions in precedence order - enum precedence { precArithmetic, precRelative, precLogical }; - for (int prec=precArithmetic; prec <= precLogical; prec++) { - // Looking at 3 tokens at a time so end at 2 before end - for (size_t k=0; (k+2)") - result = valA > valB; - else if (tokens[k+1] == ">=") - result = valA >= valB; - else if (tokens[k+1] == "==") - result = valA == valB; - else if (tokens[k+1] == "!=") - result = valA != valB; - else if (tokens[k+1] == "||") - result = valA || valB; - else if (tokens[k+1] == "&&") - result = valA && valB; - char sResult[30]; - sprintf(sResult, "%d", result); - std::vector::iterator itInsert = - tokens.erase(tokens.begin() + k, tokens.begin() + k + 3); - tokens.insert(itInsert, sResult); - } else { - k++; - } - } - } -} - -std::vector LexerCPP::Tokenize(const std::string &expr) const { - // Break into tokens - std::vector tokens; - const char *cp = expr.c_str(); - while (*cp) { - std::string word; - if (setWord.Contains(static_cast(*cp))) { - // Identifiers and numbers - while (setWord.Contains(static_cast(*cp))) { - word += *cp; - cp++; - } - } else if (IsSpaceOrTab(*cp)) { - while (IsSpaceOrTab(*cp)) { - word += *cp; - cp++; - } - } else if (setRelOp.Contains(static_cast(*cp))) { - word += *cp; - cp++; - if (setRelOp.Contains(static_cast(*cp))) { - word += *cp; - cp++; - } - } else if (setLogicalOp.Contains(static_cast(*cp))) { - word += *cp; - cp++; - if (setLogicalOp.Contains(static_cast(*cp))) { - word += *cp; - cp++; - } - } else { - // Should handle strings, characters, and comments here - word += *cp; - cp++; - } - tokens.push_back(word); - } - return tokens; -} - -bool LexerCPP::EvaluateExpression(const std::string &expr, const SymbolTable &preprocessorDefinitions) { - std::vector tokens = Tokenize(expr); - - EvaluateTokens(tokens, preprocessorDefinitions); - - // "0" or "" -> false else true - const bool isFalse = tokens.empty() || - ((tokens.size() == 1) && ((tokens[0] == "") || tokens[0] == "0")); - return !isFalse; -} - -LexerModule lmCPP(SCLEX_CPP, LexerCPP::LexerFactoryCPP, "cpp", cppWordLists); -LexerModule lmCPPNoCase(SCLEX_CPPNOCASE, LexerCPP::LexerFactoryCPPInsensitive, "cppnocase", cppWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCSS.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCSS.cpp deleted file mode 100644 index c1a86f537..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCSS.cpp +++ /dev/null @@ -1,567 +0,0 @@ -// Scintilla source code edit control -// Encoding: UTF-8 -/** @file LexCSS.cxx - ** Lexer for Cascading Style Sheets - ** Written by Jakub Vrána - ** Improved by Philippe Lhoste (CSS2) - ** Improved by Ross McKay (SCSS mode; see http://sass-lang.com/ ) - **/ -// Copyright 1998-2002 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -// TODO: handle SCSS nested properties like font: { weight: bold; size: 1em; } -// TODO: handle SCSS interpolation: #{} -// TODO: add features for Less if somebody feels like contributing; http://lesscss.org/ -// TODO: refactor this monster so that the next poor slob can read it! - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - - -static inline bool IsAWordChar(const unsigned int ch) { - /* FIXME: - * The CSS spec allows "ISO 10646 characters U+00A1 and higher" to be treated as word chars. - * Unfortunately, we are only getting string bytes here, and not full unicode characters. We cannot guarantee - * that our byte is between U+0080 - U+00A0 (to return false), so we have to allow all characters U+0080 and higher - */ - return ch >= 0x80 || isalnum(ch) || ch == '-' || ch == '_'; -} - -inline bool IsCssOperator(const int ch) { - if (!((ch < 0x80) && isalnum(ch)) && - (ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' || - ch == '.' || ch == '#' || ch == '!' || ch == '@' || - /* CSS2 */ - ch == '*' || ch == '>' || ch == '+' || ch == '=' || ch == '~' || ch == '|' || - ch == '[' || ch == ']' || ch == '(' || ch == ')')) { - return true; - } - return false; -} - -// look behind (from start of document to our start position) to determine current nesting level -inline int NestingLevelLookBehind(Sci_PositionU startPos, Accessor &styler) { - int ch; - int nestingLevel = 0; - - for (Sci_PositionU i = 0; i < startPos; i++) { - ch = styler.SafeGetCharAt(i); - if (ch == '{') - nestingLevel++; - else if (ch == '}') - nestingLevel--; - } - - return nestingLevel; -} - -static void ColouriseCssDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) { - WordList &css1Props = *keywordlists[0]; - WordList &pseudoClasses = *keywordlists[1]; - WordList &css2Props = *keywordlists[2]; - WordList &css3Props = *keywordlists[3]; - WordList &pseudoElements = *keywordlists[4]; - WordList &exProps = *keywordlists[5]; - WordList &exPseudoClasses = *keywordlists[6]; - WordList &exPseudoElements = *keywordlists[7]; - - StyleContext sc(startPos, length, initStyle, styler); - - int lastState = -1; // before operator - int lastStateC = -1; // before comment - int lastStateS = -1; // before single-quoted/double-quoted string - int lastStateVar = -1; // before variable (SCSS) - int lastStateVal = -1; // before value (SCSS) - int op = ' '; // last operator - int opPrev = ' '; // last operator - bool insideParentheses = false; // true if currently in a CSS url() or similar construct - - // property lexer.css.scss.language - // Set to 1 for Sassy CSS (.scss) - bool isScssDocument = styler.GetPropertyInt("lexer.css.scss.language") != 0; - - // property lexer.css.less.language - // Set to 1 for Less CSS (.less) - bool isLessDocument = styler.GetPropertyInt("lexer.css.less.language") != 0; - - // property lexer.css.hss.language - // Set to 1 for HSS (.hss) - bool isHssDocument = styler.GetPropertyInt("lexer.css.hss.language") != 0; - - // SCSS/LESS/HSS have the concept of variable - bool hasVariables = isScssDocument || isLessDocument || isHssDocument; - char varPrefix = 0; - if (hasVariables) - varPrefix = isLessDocument ? '@' : '$'; - - // SCSS/LESS/HSS support single-line comments - typedef enum _CommentModes { eCommentBlock = 0, eCommentLine = 1} CommentMode; - CommentMode comment_mode = eCommentBlock; - bool hasSingleLineComments = isScssDocument || isLessDocument || isHssDocument; - - // must keep track of nesting level in document types that support it (SCSS/LESS/HSS) - bool hasNesting = false; - int nestingLevel = 0; - if (isScssDocument || isLessDocument || isHssDocument) { - hasNesting = true; - nestingLevel = NestingLevelLookBehind(startPos, styler); - } - - // "the loop" - for (; sc.More(); sc.Forward()) { - if (sc.state == SCE_CSS_COMMENT && ((comment_mode == eCommentBlock && sc.Match('*', '/')) || (comment_mode == eCommentLine && sc.atLineEnd))) { - if (lastStateC == -1) { - // backtrack to get last state: - // comments are like whitespace, so we must return to the previous state - Sci_PositionU i = startPos; - for (; i > 0; i--) { - if ((lastStateC = styler.StyleAt(i-1)) != SCE_CSS_COMMENT) { - if (lastStateC == SCE_CSS_OPERATOR) { - op = styler.SafeGetCharAt(i-1); - opPrev = styler.SafeGetCharAt(i-2); - while (--i) { - lastState = styler.StyleAt(i-1); - if (lastState != SCE_CSS_OPERATOR && lastState != SCE_CSS_COMMENT) - break; - } - if (i == 0) - lastState = SCE_CSS_DEFAULT; - } - break; - } - } - if (i == 0) - lastStateC = SCE_CSS_DEFAULT; - } - if (comment_mode == eCommentBlock) { - sc.Forward(); - sc.ForwardSetState(lastStateC); - } else /* eCommentLine */ { - sc.SetState(lastStateC); - } - } - - if (sc.state == SCE_CSS_COMMENT) - continue; - - if (sc.state == SCE_CSS_DOUBLESTRING || sc.state == SCE_CSS_SINGLESTRING) { - if (sc.ch != (sc.state == SCE_CSS_DOUBLESTRING ? '\"' : '\'')) - continue; - Sci_PositionU i = sc.currentPos; - while (i && styler[i-1] == '\\') - i--; - if ((sc.currentPos - i) % 2 == 1) - continue; - sc.ForwardSetState(lastStateS); - } - - if (sc.state == SCE_CSS_OPERATOR) { - if (op == ' ') { - Sci_PositionU i = startPos; - op = styler.SafeGetCharAt(i-1); - opPrev = styler.SafeGetCharAt(i-2); - while (--i) { - lastState = styler.StyleAt(i-1); - if (lastState != SCE_CSS_OPERATOR && lastState != SCE_CSS_COMMENT) - break; - } - } - switch (op) { - case '@': - if (lastState == SCE_CSS_DEFAULT || hasNesting) - sc.SetState(SCE_CSS_DIRECTIVE); - break; - case '>': - case '+': - if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || - lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS) - sc.SetState(SCE_CSS_DEFAULT); - break; - case '[': - if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || - lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS) - sc.SetState(SCE_CSS_ATTRIBUTE); - break; - case ']': - if (lastState == SCE_CSS_ATTRIBUTE) - sc.SetState(SCE_CSS_TAG); - break; - case '{': - nestingLevel++; - switch (lastState) { - case SCE_CSS_MEDIA: - sc.SetState(SCE_CSS_DEFAULT); - break; - case SCE_CSS_TAG: - case SCE_CSS_DIRECTIVE: - sc.SetState(SCE_CSS_IDENTIFIER); - break; - } - break; - case '}': - if (--nestingLevel < 0) - nestingLevel = 0; - switch (lastState) { - case SCE_CSS_DEFAULT: - case SCE_CSS_VALUE: - case SCE_CSS_IMPORTANT: - case SCE_CSS_IDENTIFIER: - case SCE_CSS_IDENTIFIER2: - case SCE_CSS_IDENTIFIER3: - if (hasNesting) - sc.SetState(nestingLevel > 0 ? SCE_CSS_IDENTIFIER : SCE_CSS_DEFAULT); - else - sc.SetState(SCE_CSS_DEFAULT); - break; - } - break; - case '(': - if (lastState == SCE_CSS_PSEUDOCLASS) - sc.SetState(SCE_CSS_TAG); - else if (lastState == SCE_CSS_EXTENDED_PSEUDOCLASS) - sc.SetState(SCE_CSS_EXTENDED_PSEUDOCLASS); - break; - case ')': - if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || - lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS || - lastState == SCE_CSS_PSEUDOELEMENT || lastState == SCE_CSS_EXTENDED_PSEUDOELEMENT) - sc.SetState(SCE_CSS_TAG); - break; - case ':': - switch (lastState) { - case SCE_CSS_TAG: - case SCE_CSS_DEFAULT: - case SCE_CSS_CLASS: - case SCE_CSS_ID: - case SCE_CSS_PSEUDOCLASS: - case SCE_CSS_EXTENDED_PSEUDOCLASS: - case SCE_CSS_UNKNOWN_PSEUDOCLASS: - case SCE_CSS_PSEUDOELEMENT: - case SCE_CSS_EXTENDED_PSEUDOELEMENT: - sc.SetState(SCE_CSS_PSEUDOCLASS); - break; - case SCE_CSS_IDENTIFIER: - case SCE_CSS_IDENTIFIER2: - case SCE_CSS_IDENTIFIER3: - case SCE_CSS_EXTENDED_IDENTIFIER: - case SCE_CSS_UNKNOWN_IDENTIFIER: - case SCE_CSS_VARIABLE: - sc.SetState(SCE_CSS_VALUE); - lastStateVal = lastState; - break; - } - break; - case '.': - if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || - lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS) - sc.SetState(SCE_CSS_CLASS); - break; - case '#': - if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || - lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS) - sc.SetState(SCE_CSS_ID); - break; - case ',': - case '|': - case '~': - if (lastState == SCE_CSS_TAG) - sc.SetState(SCE_CSS_DEFAULT); - break; - case ';': - switch (lastState) { - case SCE_CSS_DIRECTIVE: - if (hasNesting) { - sc.SetState(nestingLevel > 0 ? SCE_CSS_IDENTIFIER : SCE_CSS_DEFAULT); - } else { - sc.SetState(SCE_CSS_DEFAULT); - } - break; - case SCE_CSS_VALUE: - case SCE_CSS_IMPORTANT: - // data URLs can have semicolons; simplistically check for wrapping parentheses and move along - if (insideParentheses) { - sc.SetState(lastState); - } else { - if (lastStateVal == SCE_CSS_VARIABLE) { - sc.SetState(SCE_CSS_DEFAULT); - } else { - sc.SetState(SCE_CSS_IDENTIFIER); - } - } - break; - case SCE_CSS_VARIABLE: - if (lastStateVar == SCE_CSS_VALUE) { - // data URLs can have semicolons; simplistically check for wrapping parentheses and move along - if (insideParentheses) { - sc.SetState(SCE_CSS_VALUE); - } else { - sc.SetState(SCE_CSS_IDENTIFIER); - } - } else { - sc.SetState(SCE_CSS_DEFAULT); - } - break; - } - break; - case '!': - if (lastState == SCE_CSS_VALUE) - sc.SetState(SCE_CSS_IMPORTANT); - break; - } - } - - if (sc.ch == '*' && sc.state == SCE_CSS_DEFAULT) { - sc.SetState(SCE_CSS_TAG); - continue; - } - - // check for inside parentheses (whether part of an "operator" or not) - if (sc.ch == '(') - insideParentheses = true; - else if (sc.ch == ')') - insideParentheses = false; - - // SCSS special modes - if (hasVariables) { - // variable name - if (sc.ch == varPrefix) { - switch (sc.state) { - case SCE_CSS_DEFAULT: - if (isLessDocument) // give priority to pseudo elements - break; - // Falls through. - case SCE_CSS_VALUE: - lastStateVar = sc.state; - sc.SetState(SCE_CSS_VARIABLE); - continue; - } - } - if (sc.state == SCE_CSS_VARIABLE) { - if (IsAWordChar(sc.ch)) { - // still looking at the variable name - continue; - } - if (lastStateVar == SCE_CSS_VALUE) { - // not looking at the variable name any more, and it was part of a value - sc.SetState(SCE_CSS_VALUE); - } - } - - // nested rule parent selector - if (sc.ch == '&') { - switch (sc.state) { - case SCE_CSS_DEFAULT: - case SCE_CSS_IDENTIFIER: - sc.SetState(SCE_CSS_TAG); - continue; - } - } - } - - // nesting rules that apply to SCSS and Less - if (hasNesting) { - // check for nested rule selector - if (sc.state == SCE_CSS_IDENTIFIER && (IsAWordChar(sc.ch) || sc.ch == ':' || sc.ch == '.' || sc.ch == '#')) { - // look ahead to see whether { comes before next ; and } - Sci_PositionU endPos = startPos + length; - int ch; - - for (Sci_PositionU i = sc.currentPos; i < endPos; i++) { - ch = styler.SafeGetCharAt(i); - if (ch == ';' || ch == '}') - break; - if (ch == '{') { - sc.SetState(SCE_CSS_DEFAULT); - continue; - } - } - } - - } - - if (IsAWordChar(sc.ch)) { - if (sc.state == SCE_CSS_DEFAULT) - sc.SetState(SCE_CSS_TAG); - continue; - } - - if (IsAWordChar(sc.chPrev) && ( - sc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_IDENTIFIER2 || - sc.state == SCE_CSS_IDENTIFIER3 || sc.state == SCE_CSS_EXTENDED_IDENTIFIER || - sc.state == SCE_CSS_UNKNOWN_IDENTIFIER || - sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_PSEUDOELEMENT || - sc.state == SCE_CSS_EXTENDED_PSEUDOCLASS || sc.state == SCE_CSS_EXTENDED_PSEUDOELEMENT || - sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS || - sc.state == SCE_CSS_IMPORTANT || - sc.state == SCE_CSS_DIRECTIVE - )) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - char *s2 = s; - while (*s2 && !IsAWordChar(*s2)) - s2++; - switch (sc.state) { - case SCE_CSS_IDENTIFIER: - case SCE_CSS_IDENTIFIER2: - case SCE_CSS_IDENTIFIER3: - case SCE_CSS_EXTENDED_IDENTIFIER: - case SCE_CSS_UNKNOWN_IDENTIFIER: - if (css1Props.InList(s2)) - sc.ChangeState(SCE_CSS_IDENTIFIER); - else if (css2Props.InList(s2)) - sc.ChangeState(SCE_CSS_IDENTIFIER2); - else if (css3Props.InList(s2)) - sc.ChangeState(SCE_CSS_IDENTIFIER3); - else if (exProps.InList(s2)) - sc.ChangeState(SCE_CSS_EXTENDED_IDENTIFIER); - else - sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER); - break; - case SCE_CSS_PSEUDOCLASS: - case SCE_CSS_PSEUDOELEMENT: - case SCE_CSS_EXTENDED_PSEUDOCLASS: - case SCE_CSS_EXTENDED_PSEUDOELEMENT: - case SCE_CSS_UNKNOWN_PSEUDOCLASS: - if (op == ':' && opPrev != ':' && pseudoClasses.InList(s2)) - sc.ChangeState(SCE_CSS_PSEUDOCLASS); - else if (opPrev == ':' && pseudoElements.InList(s2)) - sc.ChangeState(SCE_CSS_PSEUDOELEMENT); - else if ((op == ':' || (op == '(' && lastState == SCE_CSS_EXTENDED_PSEUDOCLASS)) && opPrev != ':' && exPseudoClasses.InList(s2)) - sc.ChangeState(SCE_CSS_EXTENDED_PSEUDOCLASS); - else if (opPrev == ':' && exPseudoElements.InList(s2)) - sc.ChangeState(SCE_CSS_EXTENDED_PSEUDOELEMENT); - else - sc.ChangeState(SCE_CSS_UNKNOWN_PSEUDOCLASS); - break; - case SCE_CSS_IMPORTANT: - if (strcmp(s2, "important") != 0) - sc.ChangeState(SCE_CSS_VALUE); - break; - case SCE_CSS_DIRECTIVE: - if (op == '@' && strcmp(s2, "media") == 0) - sc.ChangeState(SCE_CSS_MEDIA); - break; - } - } - - if (sc.ch != '.' && sc.ch != ':' && sc.ch != '#' && ( - sc.state == SCE_CSS_CLASS || sc.state == SCE_CSS_ID || - (sc.ch != '(' && sc.ch != ')' && ( /* This line of the condition makes it possible to extend pseudo-classes with parentheses */ - sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_PSEUDOELEMENT || - sc.state == SCE_CSS_EXTENDED_PSEUDOCLASS || sc.state == SCE_CSS_EXTENDED_PSEUDOELEMENT || - sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS - )) - )) - sc.SetState(SCE_CSS_TAG); - - if (sc.Match('/', '*')) { - lastStateC = sc.state; - comment_mode = eCommentBlock; - sc.SetState(SCE_CSS_COMMENT); - sc.Forward(); - } else if (hasSingleLineComments && sc.Match('/', '/') && !insideParentheses) { - // note that we've had to treat ([...]// as the start of a URL not a comment, e.g. url(http://example.com), url(//example.com) - lastStateC = sc.state; - comment_mode = eCommentLine; - sc.SetState(SCE_CSS_COMMENT); - sc.Forward(); - } else if ((sc.state == SCE_CSS_VALUE || sc.state == SCE_CSS_ATTRIBUTE) - && (sc.ch == '\"' || sc.ch == '\'')) { - lastStateS = sc.state; - sc.SetState((sc.ch == '\"' ? SCE_CSS_DOUBLESTRING : SCE_CSS_SINGLESTRING)); - } else if (IsCssOperator(sc.ch) - && (sc.state != SCE_CSS_ATTRIBUTE || sc.ch == ']') - && (sc.state != SCE_CSS_VALUE || sc.ch == ';' || sc.ch == '}' || sc.ch == '!') - && ((sc.state != SCE_CSS_DIRECTIVE && sc.state != SCE_CSS_MEDIA) || sc.ch == ';' || sc.ch == '{') - ) { - if (sc.state != SCE_CSS_OPERATOR) - lastState = sc.state; - sc.SetState(SCE_CSS_OPERATOR); - op = sc.ch; - opPrev = sc.chPrev; - } - } - - sc.Complete(); -} - -static void FoldCSSDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { - bool foldComment = styler.GetPropertyInt("fold.comment") != 0; - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - bool inComment = (styler.StyleAt(startPos-1) == SCE_CSS_COMMENT); - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int style = styler.StyleAt(i); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (foldComment) { - if (!inComment && (style == SCE_CSS_COMMENT)) - levelCurrent++; - else if (inComment && (style != SCE_CSS_COMMENT)) - levelCurrent--; - inComment = (style == SCE_CSS_COMMENT); - } - if (style == SCE_CSS_OPERATOR) { - if (ch == '{') { - levelCurrent++; - } else if (ch == '}') { - levelCurrent--; - } - } - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - if (!isspacechar(ch)) - visibleChars++; - } - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -static const char * const cssWordListDesc[] = { - "CSS1 Properties", - "Pseudo-classes", - "CSS2 Properties", - "CSS3 Properties", - "Pseudo-elements", - "Browser-Specific CSS Properties", - "Browser-Specific Pseudo-classes", - "Browser-Specific Pseudo-elements", - 0 -}; - -LexerModule lmCss(SCLEX_CSS, ColouriseCssDoc, "css", FoldCSSDoc, cssWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCaml.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCaml.cpp deleted file mode 100644 index 1339b5dcc..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCaml.cpp +++ /dev/null @@ -1,460 +0,0 @@ -// Scintilla source code edit control -/** @file LexCaml.cxx - ** Lexer for Objective Caml. - **/ -// Copyright 2005-2009 by Robert Roessler -// The License.txt file describes the conditions under which this software may be distributed. -/* Release History - 20050204 Initial release. - 20050205 Quick compiler standards/"cleanliness" adjustment. - 20050206 Added cast for IsLeadByte(). - 20050209 Changes to "external" build support. - 20050306 Fix for 1st-char-in-doc "corner" case. - 20050502 Fix for [harmless] one-past-the-end coloring. - 20050515 Refined numeric token recognition logic. - 20051125 Added 2nd "optional" keywords class. - 20051129 Support "magic" (read-only) comments for RCaml. - 20051204 Swtich to using StyleContext infrastructure. - 20090629 Add full Standard ML '97 support. -*/ - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "PropSetSimple.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -#if defined(__clang__) -#pragma clang diagnostic ignored "-Wcomma" -#endif - -// Since the Microsoft __iscsym[f] funcs are not ANSI... -inline int iscaml(int c) {return isalnum(c) || c == '_';} -inline int iscamlf(int c) {return isalpha(c) || c == '_';} - -static const int baseT[24] = { - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* A - L */ - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,16 /* M - X */ -}; - -using namespace Scintilla; - -#ifdef BUILD_AS_EXTERNAL_LEXER -/* - (actually seems to work!) -*/ -#include -#include "WindowAccessor.h" -#include "ExternalLexer.h" - -#undef EXT_LEXER_DECL -#define EXT_LEXER_DECL __declspec( dllexport ) __stdcall - -#if PLAT_WIN -#include -#endif - -static void ColouriseCamlDoc( - Sci_PositionU startPos, Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler); - -static void FoldCamlDoc( - Sci_PositionU startPos, Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler); - -static void InternalLexOrFold(int lexOrFold, Sci_PositionU startPos, Sci_Position length, - int initStyle, char *words[], WindowID window, char *props); - -static const char* LexerName = "caml"; - -#ifdef TRACE -void Platform::DebugPrintf(const char *format, ...) { - char buffer[2000]; - va_list pArguments; - va_start(pArguments, format); - vsprintf(buffer,format,pArguments); - va_end(pArguments); - Platform::DebugDisplay(buffer); -} -#else -void Platform::DebugPrintf(const char *, ...) { -} -#endif - -bool Platform::IsDBCSLeadByte(int codePage, char ch) { - return ::IsDBCSLeadByteEx(codePage, ch) != 0; -} - -long Platform::SendScintilla(WindowID w, unsigned int msg, unsigned long wParam, long lParam) { - return ::SendMessage(reinterpret_cast(w), msg, wParam, lParam); -} - -long Platform::SendScintillaPointer(WindowID w, unsigned int msg, unsigned long wParam, void *lParam) { - return ::SendMessage(reinterpret_cast(w), msg, wParam, - reinterpret_cast(lParam)); -} - -void EXT_LEXER_DECL Fold(unsigned int lexer, Sci_PositionU startPos, Sci_Position length, - int initStyle, char *words[], WindowID window, char *props) -{ - // below useless evaluation(s) to supress "not used" warnings - lexer; - // build expected data structures and do the Fold - InternalLexOrFold(1, startPos, length, initStyle, words, window, props); - -} - -int EXT_LEXER_DECL GetLexerCount() -{ - return 1; // just us [Objective] Caml lexers here! -} - -void EXT_LEXER_DECL GetLexerName(unsigned int Index, char *name, int buflength) -{ - // below useless evaluation(s) to supress "not used" warnings - Index; - // return as much of our lexer name as will fit (what's up with Index?) - if (buflength > 0) { - buflength--; - int n = strlen(LexerName); - if (n > buflength) - n = buflength; - memcpy(name, LexerName, n), name[n] = '\0'; - } -} - -void EXT_LEXER_DECL Lex(unsigned int lexer, Sci_PositionU startPos, Sci_Position length, - int initStyle, char *words[], WindowID window, char *props) -{ - // below useless evaluation(s) to supress "not used" warnings - lexer; - // build expected data structures and do the Lex - InternalLexOrFold(0, startPos, length, initStyle, words, window, props); -} - -static void InternalLexOrFold(int foldOrLex, Sci_PositionU startPos, Sci_Position length, - int initStyle, char *words[], WindowID window, char *props) -{ - // create and initialize a WindowAccessor (including contained PropSet) - PropSetSimple ps; - ps.SetMultiple(props); - WindowAccessor wa(window, ps); - // create and initialize WordList(s) - int nWL = 0; - for (; words[nWL]; nWL++) ; // count # of WordList PTRs needed - WordList** wl = new WordList* [nWL + 1];// alloc WordList PTRs - int i = 0; - for (; i < nWL; i++) { - wl[i] = new WordList(); // (works or THROWS bad_alloc EXCEPTION) - wl[i]->Set(words[i]); - } - wl[i] = 0; - // call our "internal" folder/lexer (... then do Flush!) - if (foldOrLex) - FoldCamlDoc(startPos, length, initStyle, wl, wa); - else - ColouriseCamlDoc(startPos, length, initStyle, wl, wa); - wa.Flush(); - // clean up before leaving - for (i = nWL - 1; i >= 0; i--) - delete wl[i]; - delete [] wl; -} - -static -#endif /* BUILD_AS_EXTERNAL_LEXER */ - -void ColouriseCamlDoc( - Sci_PositionU startPos, Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler) -{ - // initialize styler - StyleContext sc(startPos, length, initStyle, styler); - - Sci_PositionU chToken = 0; - int chBase = 0, chLit = 0; - WordList& keywords = *keywordlists[0]; - WordList& keywords2 = *keywordlists[1]; - WordList& keywords3 = *keywordlists[2]; - const bool isSML = keywords.InList("andalso"); - const int useMagic = styler.GetPropertyInt("lexer.caml.magic", 0); - - // set up [initial] state info (terminating states that shouldn't "bleed") - const int state_ = sc.state & 0x0f; - if (state_ <= SCE_CAML_CHAR - || (isSML && state_ == SCE_CAML_STRING)) - sc.state = SCE_CAML_DEFAULT; - int nesting = (state_ >= SCE_CAML_COMMENT)? (state_ - SCE_CAML_COMMENT): 0; - - // foreach char in range... - while (sc.More()) { - // set up [per-char] state info - int state2 = -1; // (ASSUME no state change) - Sci_Position chColor = sc.currentPos - 1;// (ASSUME standard coloring range) - bool advance = true; // (ASSUME scanner "eats" 1 char) - - // step state machine - switch (sc.state & 0x0f) { - case SCE_CAML_DEFAULT: - chToken = sc.currentPos; // save [possible] token start (JIC) - // it's wide open; what do we have? - if (iscamlf(sc.ch)) - state2 = SCE_CAML_IDENTIFIER; - else if (!isSML && sc.Match('`') && iscamlf(sc.chNext)) - state2 = SCE_CAML_TAGNAME; - else if (!isSML && sc.Match('#') && isdigit(sc.chNext)) - state2 = SCE_CAML_LINENUM; - else if (isdigit(sc.ch)) { - // it's a number, assume base 10 - state2 = SCE_CAML_NUMBER, chBase = 10; - if (sc.Match('0')) { - // there MAY be a base specified... - const char* baseC = "bBoOxX"; - if (isSML) { - if (sc.chNext == 'w') - sc.Forward(); // (consume SML "word" indicator) - baseC = "x"; - } - // ... change to specified base AS REQUIRED - if (strchr(baseC, sc.chNext)) - chBase = baseT[tolower(sc.chNext) - 'a'], sc.Forward(); - } - } else if (!isSML && sc.Match('\'')) // (Caml char literal?) - state2 = SCE_CAML_CHAR, chLit = 0; - else if (isSML && sc.Match('#', '"')) // (SML char literal?) - state2 = SCE_CAML_CHAR, sc.Forward(); - else if (sc.Match('"')) - state2 = SCE_CAML_STRING; - else if (sc.Match('(', '*')) - state2 = SCE_CAML_COMMENT, sc.Forward(), sc.ch = ' '; // (*)... - else if (strchr("!?~" /* Caml "prefix-symbol" */ - "=<>@^|&+-*/$%" /* Caml "infix-symbol" */ - "()[]{};,:.#", sc.ch) // Caml "bracket" or ;,:.# - // SML "extra" ident chars - || (isSML && (sc.Match('\\') || sc.Match('`')))) - state2 = SCE_CAML_OPERATOR; - break; - - case SCE_CAML_IDENTIFIER: - // [try to] interpret as [additional] identifier char - if (!(iscaml(sc.ch) || sc.Match('\''))) { - const Sci_Position n = sc.currentPos - chToken; - if (n < 24) { - // length is believable as keyword, [re-]construct token - char t[24]; - for (Sci_Position i = -n; i < 0; i++) - t[n + i] = static_cast(sc.GetRelative(i)); - t[n] = '\0'; - // special-case "_" token as KEYWORD - if ((n == 1 && sc.chPrev == '_') || keywords.InList(t)) - sc.ChangeState(SCE_CAML_KEYWORD); - else if (keywords2.InList(t)) - sc.ChangeState(SCE_CAML_KEYWORD2); - else if (keywords3.InList(t)) - sc.ChangeState(SCE_CAML_KEYWORD3); - } - state2 = SCE_CAML_DEFAULT, advance = false; - } - break; - - case SCE_CAML_TAGNAME: - // [try to] interpret as [additional] tagname char - if (!(iscaml(sc.ch) || sc.Match('\''))) - state2 = SCE_CAML_DEFAULT, advance = false; - break; - - /*case SCE_CAML_KEYWORD: - case SCE_CAML_KEYWORD2: - case SCE_CAML_KEYWORD3: - // [try to] interpret as [additional] keyword char - if (!iscaml(ch)) - state2 = SCE_CAML_DEFAULT, advance = false; - break;*/ - - case SCE_CAML_LINENUM: - // [try to] interpret as [additional] linenum directive char - if (!isdigit(sc.ch)) - state2 = SCE_CAML_DEFAULT, advance = false; - break; - - case SCE_CAML_OPERATOR: { - // [try to] interpret as [additional] operator char - const char* o = 0; - if (iscaml(sc.ch) || isspace(sc.ch) // ident or whitespace - || (o = strchr(")]};,\'\"#", sc.ch),o) // "termination" chars - || (!isSML && sc.Match('`')) // Caml extra term char - || (!strchr("!$%&*+-./:<=>?@^|~", sc.ch)// "operator" chars - // SML extra ident chars - && !(isSML && (sc.Match('\\') || sc.Match('`'))))) { - // check for INCLUSIVE termination - if (o && strchr(")]};,", sc.ch)) { - if ((sc.Match(')') && sc.chPrev == '(') - || (sc.Match(']') && sc.chPrev == '[')) - // special-case "()" and "[]" tokens as KEYWORDS - sc.ChangeState(SCE_CAML_KEYWORD); - chColor++; - } else - advance = false; - state2 = SCE_CAML_DEFAULT; - } - break; - } - - case SCE_CAML_NUMBER: - // [try to] interpret as [additional] numeric literal char - if ((!isSML && sc.Match('_')) || IsADigit(sc.ch, chBase)) - break; - // how about an integer suffix? - if (!isSML && (sc.Match('l') || sc.Match('L') || sc.Match('n')) - && (sc.chPrev == '_' || IsADigit(sc.chPrev, chBase))) - break; - // or a floating-point literal? - if (chBase == 10) { - // with a decimal point? - if (sc.Match('.') - && ((!isSML && sc.chPrev == '_') - || IsADigit(sc.chPrev, chBase))) - break; - // with an exponent? (I) - if ((sc.Match('e') || sc.Match('E')) - && ((!isSML && (sc.chPrev == '.' || sc.chPrev == '_')) - || IsADigit(sc.chPrev, chBase))) - break; - // with an exponent? (II) - if (((!isSML && (sc.Match('+') || sc.Match('-'))) - || (isSML && sc.Match('~'))) - && (sc.chPrev == 'e' || sc.chPrev == 'E')) - break; - } - // it looks like we have run out of number - state2 = SCE_CAML_DEFAULT, advance = false; - break; - - case SCE_CAML_CHAR: - if (!isSML) { - // [try to] interpret as [additional] char literal char - if (sc.Match('\\')) { - chLit = 1; // (definitely IS a char literal) - if (sc.chPrev == '\\') - sc.ch = ' '; // (...\\') - // should we be terminating - one way or another? - } else if ((sc.Match('\'') && sc.chPrev != '\\') - || sc.atLineEnd) { - state2 = SCE_CAML_DEFAULT; - if (sc.Match('\'')) - chColor++; - else - sc.ChangeState(SCE_CAML_IDENTIFIER); - // ... maybe a char literal, maybe not - } else if (chLit < 1 && sc.currentPos - chToken >= 2) - sc.ChangeState(SCE_CAML_IDENTIFIER), advance = false; - break; - }/* else - // fall through for SML char literal (handle like string) */ - // Falls through. - - case SCE_CAML_STRING: - // [try to] interpret as [additional] [SML char/] string literal char - if (isSML && sc.Match('\\') && sc.chPrev != '\\' && isspace(sc.chNext)) - state2 = SCE_CAML_WHITE; - else if (sc.Match('\\') && sc.chPrev == '\\') - sc.ch = ' '; // (...\\") - // should we be terminating - one way or another? - else if ((sc.Match('"') && sc.chPrev != '\\') - || (isSML && sc.atLineEnd)) { - state2 = SCE_CAML_DEFAULT; - if (sc.Match('"')) - chColor++; - } - break; - - case SCE_CAML_WHITE: - // [try to] interpret as [additional] SML embedded whitespace char - if (sc.Match('\\')) { - // style this puppy NOW... - state2 = SCE_CAML_STRING, sc.ch = ' ' /* (...\") */, chColor++, - styler.ColourTo(chColor, SCE_CAML_WHITE), styler.Flush(); - // ... then backtrack to determine original SML literal type - Sci_Position p = chColor - 2; - for (; p >= 0 && styler.StyleAt(p) == SCE_CAML_WHITE; p--) ; - if (p >= 0) - state2 = static_cast(styler.StyleAt(p)); - // take care of state change NOW - sc.ChangeState(state2), state2 = -1; - } - break; - - case SCE_CAML_COMMENT: - case SCE_CAML_COMMENT1: - case SCE_CAML_COMMENT2: - case SCE_CAML_COMMENT3: - // we're IN a comment - does this start a NESTED comment? - if (sc.Match('(', '*')) - state2 = sc.state + 1, chToken = sc.currentPos, - sc.Forward(), sc.ch = ' ' /* (*)... */, nesting++; - // [try to] interpret as [additional] comment char - else if (sc.Match(')') && sc.chPrev == '*') { - if (nesting) - state2 = (sc.state & 0x0f) - 1, chToken = 0, nesting--; - else - state2 = SCE_CAML_DEFAULT; - chColor++; - // enable "magic" (read-only) comment AS REQUIRED - } else if (useMagic && sc.currentPos - chToken == 4 - && sc.Match('c') && sc.chPrev == 'r' && sc.GetRelative(-2) == '@') - sc.state |= 0x10; // (switch to read-only comment style) - break; - } - - // handle state change and char coloring AS REQUIRED - if (state2 >= 0) - styler.ColourTo(chColor, sc.state), sc.ChangeState(state2); - // move to next char UNLESS re-scanning current char - if (advance) - sc.Forward(); - } - - // do any required terminal char coloring (JIC) - sc.Complete(); -} - -#ifdef BUILD_AS_EXTERNAL_LEXER -static -#endif /* BUILD_AS_EXTERNAL_LEXER */ -void FoldCamlDoc( - Sci_PositionU, Sci_Position, - int, - WordList *[], - Accessor &) -{ -} - -static const char * const camlWordListDesc[] = { - "Keywords", // primary Objective Caml keywords - "Keywords2", // "optional" keywords (typically from Pervasives) - "Keywords3", // "optional" keywords (typically typenames) - 0 -}; - -#ifndef BUILD_AS_EXTERNAL_LEXER -LexerModule lmCaml(SCLEX_CAML, ColouriseCamlDoc, "caml", FoldCamlDoc, camlWordListDesc); -#endif /* BUILD_AS_EXTERNAL_LEXER */ diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCmake.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCmake.cpp deleted file mode 100644 index b8fe15496..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCmake.cpp +++ /dev/null @@ -1,455 +0,0 @@ -// Scintilla source code edit control -/** @file LexCmake.cxx - ** Lexer for Cmake - **/ -// Copyright 2007 by Cristian Adam -// based on the NSIS lexer -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static bool isCmakeNumber(char ch) -{ - return(ch >= '0' && ch <= '9'); -} - -static bool isCmakeChar(char ch) -{ - return(ch == '.' ) || (ch == '_' ) || isCmakeNumber(ch) || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'); -} - -static bool isCmakeLetter(char ch) -{ - return(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'); -} - -static bool CmakeNextLineHasElse(Sci_PositionU start, Sci_PositionU end, Accessor &styler) -{ - Sci_Position nNextLine = -1; - for ( Sci_PositionU i = start; i < end; i++ ) { - char cNext = styler.SafeGetCharAt( i ); - if ( cNext == '\n' ) { - nNextLine = i+1; - break; - } - } - - if ( nNextLine == -1 ) // We never foudn the next line... - return false; - - for ( Sci_PositionU firstChar = nNextLine; firstChar < end; firstChar++ ) { - char cNext = styler.SafeGetCharAt( firstChar ); - if ( cNext == ' ' ) - continue; - if ( cNext == '\t' ) - continue; - if ( styler.Match(firstChar, "ELSE") || styler.Match(firstChar, "else")) - return true; - break; - } - - return false; -} - -static int calculateFoldCmake(Sci_PositionU start, Sci_PositionU end, int foldlevel, Accessor &styler, bool bElse) -{ - // If the word is too long, it is not what we are looking for - if ( end - start > 20 ) - return foldlevel; - - int newFoldlevel = foldlevel; - - char s[20]; // The key word we are looking for has atmost 13 characters - for (unsigned int i = 0; i < end - start + 1 && i < 19; i++) { - s[i] = static_cast( styler[ start + i ] ); - s[i + 1] = '\0'; - } - - if ( CompareCaseInsensitive(s, "IF") == 0 || CompareCaseInsensitive(s, "WHILE") == 0 - || CompareCaseInsensitive(s, "MACRO") == 0 || CompareCaseInsensitive(s, "FOREACH") == 0 - || CompareCaseInsensitive(s, "ELSEIF") == 0 ) - newFoldlevel++; - else if ( CompareCaseInsensitive(s, "ENDIF") == 0 || CompareCaseInsensitive(s, "ENDWHILE") == 0 - || CompareCaseInsensitive(s, "ENDMACRO") == 0 || CompareCaseInsensitive(s, "ENDFOREACH") == 0) - newFoldlevel--; - else if ( bElse && CompareCaseInsensitive(s, "ELSEIF") == 0 ) - newFoldlevel++; - else if ( bElse && CompareCaseInsensitive(s, "ELSE") == 0 ) - newFoldlevel++; - - return newFoldlevel; -} - -static int classifyWordCmake(Sci_PositionU start, Sci_PositionU end, WordList *keywordLists[], Accessor &styler ) -{ - char word[100] = {0}; - char lowercaseWord[100] = {0}; - - WordList &Commands = *keywordLists[0]; - WordList &Parameters = *keywordLists[1]; - WordList &UserDefined = *keywordLists[2]; - - for (Sci_PositionU i = 0; i < end - start + 1 && i < 99; i++) { - word[i] = static_cast( styler[ start + i ] ); - lowercaseWord[i] = static_cast(tolower(word[i])); - } - - // Check for special words... - if ( CompareCaseInsensitive(word, "MACRO") == 0 || CompareCaseInsensitive(word, "ENDMACRO") == 0 ) - return SCE_CMAKE_MACRODEF; - - if ( CompareCaseInsensitive(word, "IF") == 0 || CompareCaseInsensitive(word, "ENDIF") == 0 ) - return SCE_CMAKE_IFDEFINEDEF; - - if ( CompareCaseInsensitive(word, "ELSEIF") == 0 || CompareCaseInsensitive(word, "ELSE") == 0 ) - return SCE_CMAKE_IFDEFINEDEF; - - if ( CompareCaseInsensitive(word, "WHILE") == 0 || CompareCaseInsensitive(word, "ENDWHILE") == 0) - return SCE_CMAKE_WHILEDEF; - - if ( CompareCaseInsensitive(word, "FOREACH") == 0 || CompareCaseInsensitive(word, "ENDFOREACH") == 0) - return SCE_CMAKE_FOREACHDEF; - - if ( Commands.InList(lowercaseWord) ) - return SCE_CMAKE_COMMANDS; - - if ( Parameters.InList(word) ) - return SCE_CMAKE_PARAMETERS; - - - if ( UserDefined.InList(word) ) - return SCE_CMAKE_USERDEFINED; - - if ( strlen(word) > 3 ) { - if ( word[1] == '{' && word[strlen(word)-1] == '}' ) - return SCE_CMAKE_VARIABLE; - } - - // To check for numbers - if ( isCmakeNumber( word[0] ) ) { - bool bHasSimpleCmakeNumber = true; - for (unsigned int j = 1; j < end - start + 1 && j < 99; j++) { - if ( !isCmakeNumber( word[j] ) ) { - bHasSimpleCmakeNumber = false; - break; - } - } - - if ( bHasSimpleCmakeNumber ) - return SCE_CMAKE_NUMBER; - } - - return SCE_CMAKE_DEFAULT; -} - -static void ColouriseCmakeDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler) -{ - int state = SCE_CMAKE_DEFAULT; - if ( startPos > 0 ) - state = styler.StyleAt(startPos-1); // Use the style from the previous line, usually default, but could be commentbox - - styler.StartAt( startPos ); - styler.GetLine( startPos ); - - Sci_PositionU nLengthDoc = startPos + length; - styler.StartSegment( startPos ); - - char cCurrChar; - bool bVarInString = false; - bool bClassicVarInString = false; - - Sci_PositionU i; - for ( i = startPos; i < nLengthDoc; i++ ) { - cCurrChar = styler.SafeGetCharAt( i ); - char cNextChar = styler.SafeGetCharAt(i+1); - - switch (state) { - case SCE_CMAKE_DEFAULT: - if ( cCurrChar == '#' ) { // we have a comment line - styler.ColourTo(i-1, state ); - state = SCE_CMAKE_COMMENT; - break; - } - if ( cCurrChar == '"' ) { - styler.ColourTo(i-1, state ); - state = SCE_CMAKE_STRINGDQ; - bVarInString = false; - bClassicVarInString = false; - break; - } - if ( cCurrChar == '\'' ) { - styler.ColourTo(i-1, state ); - state = SCE_CMAKE_STRINGRQ; - bVarInString = false; - bClassicVarInString = false; - break; - } - if ( cCurrChar == '`' ) { - styler.ColourTo(i-1, state ); - state = SCE_CMAKE_STRINGLQ; - bVarInString = false; - bClassicVarInString = false; - break; - } - - // CMake Variable - if ( cCurrChar == '$' || isCmakeChar(cCurrChar)) { - styler.ColourTo(i-1,state); - state = SCE_CMAKE_VARIABLE; - - // If it is a number, we must check and set style here first... - if ( isCmakeNumber(cCurrChar) && (cNextChar == '\t' || cNextChar == ' ' || cNextChar == '\r' || cNextChar == '\n' ) ) - styler.ColourTo( i, SCE_CMAKE_NUMBER); - - break; - } - - break; - case SCE_CMAKE_COMMENT: - if ( cCurrChar == '\n' || cCurrChar == '\r' ) { - if ( styler.SafeGetCharAt(i-1) == '\\' ) { - styler.ColourTo(i-2,state); - styler.ColourTo(i-1,SCE_CMAKE_DEFAULT); - } - else { - styler.ColourTo(i-1,state); - state = SCE_CMAKE_DEFAULT; - } - } - break; - case SCE_CMAKE_STRINGDQ: - case SCE_CMAKE_STRINGLQ: - case SCE_CMAKE_STRINGRQ: - - if ( styler.SafeGetCharAt(i-1) == '\\' && styler.SafeGetCharAt(i-2) == '$' ) - break; // Ignore the next character, even if it is a quote of some sort - - if ( cCurrChar == '"' && state == SCE_CMAKE_STRINGDQ ) { - styler.ColourTo(i,state); - state = SCE_CMAKE_DEFAULT; - break; - } - - if ( cCurrChar == '`' && state == SCE_CMAKE_STRINGLQ ) { - styler.ColourTo(i,state); - state = SCE_CMAKE_DEFAULT; - break; - } - - if ( cCurrChar == '\'' && state == SCE_CMAKE_STRINGRQ ) { - styler.ColourTo(i,state); - state = SCE_CMAKE_DEFAULT; - break; - } - - if ( cNextChar == '\r' || cNextChar == '\n' ) { - Sci_Position nCurLine = styler.GetLine(i+1); - Sci_Position nBack = i; - // We need to check if the previous line has a \ in it... - bool bNextLine = false; - - while ( nBack > 0 ) { - if ( styler.GetLine(nBack) != nCurLine ) - break; - - char cTemp = styler.SafeGetCharAt(nBack, 'a'); // Letter 'a' is safe here - - if ( cTemp == '\\' ) { - bNextLine = true; - break; - } - if ( cTemp != '\r' && cTemp != '\n' && cTemp != '\t' && cTemp != ' ' ) - break; - - nBack--; - } - - if ( bNextLine ) { - styler.ColourTo(i+1,state); - } - if ( bNextLine == false ) { - styler.ColourTo(i,state); - state = SCE_CMAKE_DEFAULT; - } - } - break; - - case SCE_CMAKE_VARIABLE: - - // CMake Variable: - if ( cCurrChar == '$' ) - state = SCE_CMAKE_DEFAULT; - else if ( cCurrChar == '\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' ) ) - state = SCE_CMAKE_DEFAULT; - else if ( (isCmakeChar(cCurrChar) && !isCmakeChar( cNextChar) && cNextChar != '}') || cCurrChar == '}' ) { - state = classifyWordCmake( styler.GetStartSegment(), i, keywordLists, styler ); - styler.ColourTo( i, state); - state = SCE_CMAKE_DEFAULT; - } - else if ( !isCmakeChar( cCurrChar ) && cCurrChar != '{' && cCurrChar != '}' ) { - if ( classifyWordCmake( styler.GetStartSegment(), i-1, keywordLists, styler) == SCE_CMAKE_NUMBER ) - styler.ColourTo( i-1, SCE_CMAKE_NUMBER ); - - state = SCE_CMAKE_DEFAULT; - - if ( cCurrChar == '"' ) { - state = SCE_CMAKE_STRINGDQ; - bVarInString = false; - bClassicVarInString = false; - } - else if ( cCurrChar == '`' ) { - state = SCE_CMAKE_STRINGLQ; - bVarInString = false; - bClassicVarInString = false; - } - else if ( cCurrChar == '\'' ) { - state = SCE_CMAKE_STRINGRQ; - bVarInString = false; - bClassicVarInString = false; - } - else if ( cCurrChar == '#' ) { - state = SCE_CMAKE_COMMENT; - } - } - break; - } - - if ( state == SCE_CMAKE_STRINGDQ || state == SCE_CMAKE_STRINGLQ || state == SCE_CMAKE_STRINGRQ ) { - bool bIngoreNextDollarSign = false; - - if ( bVarInString && cCurrChar == '$' ) { - bVarInString = false; - bIngoreNextDollarSign = true; - } - else if ( bVarInString && cCurrChar == '\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' || cNextChar == '"' || cNextChar == '`' || cNextChar == '\'' ) ) { - styler.ColourTo( i+1, SCE_CMAKE_STRINGVAR); - bVarInString = false; - bIngoreNextDollarSign = false; - } - - else if ( bVarInString && !isCmakeChar(cNextChar) ) { - int nWordState = classifyWordCmake( styler.GetStartSegment(), i, keywordLists, styler); - if ( nWordState == SCE_CMAKE_VARIABLE ) - styler.ColourTo( i, SCE_CMAKE_STRINGVAR); - bVarInString = false; - } - // Covers "${TEST}..." - else if ( bClassicVarInString && cNextChar == '}' ) { - styler.ColourTo( i+1, SCE_CMAKE_STRINGVAR); - bClassicVarInString = false; - } - - // Start of var in string - if ( !bIngoreNextDollarSign && cCurrChar == '$' && cNextChar == '{' ) { - styler.ColourTo( i-1, state); - bClassicVarInString = true; - bVarInString = false; - } - else if ( !bIngoreNextDollarSign && cCurrChar == '$' ) { - styler.ColourTo( i-1, state); - bVarInString = true; - bClassicVarInString = false; - } - } - } - - // Colourise remaining document - styler.ColourTo(nLengthDoc-1,state); -} - -static void FoldCmakeDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) -{ - // No folding enabled, no reason to continue... - if ( styler.GetPropertyInt("fold") == 0 ) - return; - - bool foldAtElse = styler.GetPropertyInt("fold.at.else", 0) == 1; - - Sci_Position lineCurrent = styler.GetLine(startPos); - Sci_PositionU safeStartPos = styler.LineStart( lineCurrent ); - - bool bArg1 = true; - Sci_Position nWordStart = -1; - - int levelCurrent = SC_FOLDLEVELBASE; - if (lineCurrent > 0) - levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; - int levelNext = levelCurrent; - - for (Sci_PositionU i = safeStartPos; i < startPos + length; i++) { - char chCurr = styler.SafeGetCharAt(i); - - if ( bArg1 ) { - if ( nWordStart == -1 && (isCmakeLetter(chCurr)) ) { - nWordStart = i; - } - else if ( isCmakeLetter(chCurr) == false && nWordStart > -1 ) { - int newLevel = calculateFoldCmake( nWordStart, i-1, levelNext, styler, foldAtElse); - - if ( newLevel == levelNext ) { - if ( foldAtElse ) { - if ( CmakeNextLineHasElse(i, startPos + length, styler) ) - levelNext--; - } - } - else - levelNext = newLevel; - bArg1 = false; - } - } - - if ( chCurr == '\n' ) { - if ( bArg1 && foldAtElse) { - if ( CmakeNextLineHasElse(i, startPos + length, styler) ) - levelNext--; - } - - // If we are on a new line... - int levelUse = levelCurrent; - int lev = levelUse | levelNext << 16; - if (levelUse < levelNext ) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) - styler.SetLevel(lineCurrent, lev); - - lineCurrent++; - levelCurrent = levelNext; - bArg1 = true; // New line, lets look at first argument again - nWordStart = -1; - } - } - - int levelUse = levelCurrent; - int lev = levelUse | levelNext << 16; - if (levelUse < levelNext) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) - styler.SetLevel(lineCurrent, lev); -} - -static const char * const cmakeWordLists[] = { - "Commands", - "Parameters", - "UserDefined", - 0, - 0,}; - -LexerModule lmCmake(SCLEX_CMAKE, ColouriseCmakeDoc, "cmake", FoldCmakeDoc, cmakeWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCoffeeScript.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCoffeeScript.cpp deleted file mode 100644 index a00162335..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCoffeeScript.cpp +++ /dev/null @@ -1,483 +0,0 @@ -// Scintilla source code edit control -/** @file LexCoffeeScript.cxx - ** Lexer for CoffeeScript. - **/ -// Copyright 1998-2011 by Neil Hodgson -// Based on the Scintilla C++ Lexer -// Written by Eric Promislow in 2011 for the Komodo IDE -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static bool IsSpaceEquiv(int state) { - return (state == SCE_COFFEESCRIPT_DEFAULT - || state == SCE_COFFEESCRIPT_COMMENTLINE - || state == SCE_COFFEESCRIPT_COMMENTBLOCK - || state == SCE_COFFEESCRIPT_VERBOSE_REGEX - || state == SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT - || state == SCE_COFFEESCRIPT_WORD - || state == SCE_COFFEESCRIPT_REGEX); -} - -// Store the current lexer state and brace count prior to starting a new -// `#{}` interpolation level. -// Based on LexRuby.cxx. -static void enterInnerExpression(int *p_inner_string_types, - int *p_inner_expn_brace_counts, - int& inner_string_count, - int state, - int& brace_counts - ) { - p_inner_string_types[inner_string_count] = state; - p_inner_expn_brace_counts[inner_string_count] = brace_counts; - brace_counts = 0; - ++inner_string_count; -} - -// Restore the lexer state and brace count for the previous `#{}` interpolation -// level upon returning to it. -// Note the previous lexer state is the return value and needs to be restored -// manually by the StyleContext. -// Based on LexRuby.cxx. -static int exitInnerExpression(int *p_inner_string_types, - int *p_inner_expn_brace_counts, - int& inner_string_count, - int& brace_counts - ) { - --inner_string_count; - brace_counts = p_inner_expn_brace_counts[inner_string_count]; - return p_inner_string_types[inner_string_count]; -} - -// Preconditions: sc.currentPos points to a character after '+' or '-'. -// The test for pos reaching 0 should be redundant, -// and is in only for safety measures. -// Limitation: this code will give the incorrect answer for code like -// a = b+++/ptn/... -// Putting a space between the '++' post-inc operator and the '+' binary op -// fixes this, and is highly recommended for readability anyway. -static bool FollowsPostfixOperator(StyleContext &sc, Accessor &styler) { - Sci_Position pos = (Sci_Position) sc.currentPos; - while (--pos > 0) { - char ch = styler[pos]; - if (ch == '+' || ch == '-') { - return styler[pos - 1] == ch; - } - } - return false; -} - -static bool followsKeyword(StyleContext &sc, Accessor &styler) { - Sci_Position pos = (Sci_Position) sc.currentPos; - Sci_Position currentLine = styler.GetLine(pos); - Sci_Position lineStartPos = styler.LineStart(currentLine); - while (--pos > lineStartPos) { - char ch = styler.SafeGetCharAt(pos); - if (ch != ' ' && ch != '\t') { - break; - } - } - styler.Flush(); - return styler.StyleAt(pos) == SCE_COFFEESCRIPT_WORD; -} - -static void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords4 = *keywordlists[3]; - - CharacterSet setOKBeforeRE(CharacterSet::setNone, "([{=,:;!%^&*|?~+-"); - CharacterSet setCouldBePostOp(CharacterSet::setNone, "+-"); - - CharacterSet setWordStart(CharacterSet::setAlpha, "_$@", 0x80, true); - CharacterSet setWord(CharacterSet::setAlphaNum, "._$", 0x80, true); - - int chPrevNonWhite = ' '; - int visibleChars = 0; - - // String/Regex interpolation variables, based on LexRuby.cxx. - // In most cases a value of 2 should be ample for the code the user is - // likely to enter. For example, - // "Filling the #{container} with #{liquid}..." - // from the CoffeeScript homepage nests to a level of 2 - // If the user actually hits a 6th occurrence of '#{' in a double-quoted - // string (including regexes), it will stay as a string. The problem with - // this is that quotes might flip, a 7th '#{' will look like a comment, - // and code-folding might be wrong. -#define INNER_STRINGS_MAX_COUNT 5 - // These vars track our instances of "...#{,,,'..#{,,,}...',,,}..." - int inner_string_types[INNER_STRINGS_MAX_COUNT]; - // Track # braces when we push a new #{ thing - int inner_expn_brace_counts[INNER_STRINGS_MAX_COUNT]; - int inner_string_count = 0; - int brace_counts = 0; // Number of #{ ... } things within an expression - for (int i = 0; i < INNER_STRINGS_MAX_COUNT; i++) { - inner_string_types[i] = 0; - inner_expn_brace_counts[i] = 0; - } - - // look back to set chPrevNonWhite properly for better regex colouring - Sci_Position endPos = startPos + length; - if (startPos > 0 && IsSpaceEquiv(initStyle)) { - Sci_PositionU back = startPos; - styler.Flush(); - while (back > 0 && IsSpaceEquiv(styler.StyleAt(--back))) - ; - if (styler.StyleAt(back) == SCE_COFFEESCRIPT_OPERATOR) { - chPrevNonWhite = styler.SafeGetCharAt(back); - } - if (startPos != back) { - initStyle = styler.StyleAt(back); - if (IsSpaceEquiv(initStyle)) { - initStyle = SCE_COFFEESCRIPT_DEFAULT; - } - } - startPos = back; - } - - StyleContext sc(startPos, endPos - startPos, initStyle, styler); - - for (; sc.More();) { - - if (sc.atLineStart) { - // Reset states to beginning of colourise so no surprises - // if different sets of lines lexed. - visibleChars = 0; - } - - // Determine if the current state should terminate. - switch (sc.state) { - case SCE_COFFEESCRIPT_OPERATOR: - sc.SetState(SCE_COFFEESCRIPT_DEFAULT); - break; - case SCE_COFFEESCRIPT_NUMBER: - // We accept almost anything because of hex. and number suffixes - if (!setWord.Contains(sc.ch) || sc.Match('.', '.')) { - sc.SetState(SCE_COFFEESCRIPT_DEFAULT); - } - break; - case SCE_COFFEESCRIPT_IDENTIFIER: - if (!setWord.Contains(sc.ch) || (sc.ch == '.') || (sc.ch == '$')) { - char s[1000]; - sc.GetCurrent(s, sizeof(s)); - if (keywords.InList(s)) { - sc.ChangeState(SCE_COFFEESCRIPT_WORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_COFFEESCRIPT_WORD2); - } else if (keywords4.InList(s)) { - sc.ChangeState(SCE_COFFEESCRIPT_GLOBALCLASS); - } else if (sc.LengthCurrent() > 0 && s[0] == '@') { - sc.ChangeState(SCE_COFFEESCRIPT_INSTANCEPROPERTY); - } - sc.SetState(SCE_COFFEESCRIPT_DEFAULT); - } - break; - case SCE_COFFEESCRIPT_WORD: - case SCE_COFFEESCRIPT_WORD2: - case SCE_COFFEESCRIPT_GLOBALCLASS: - case SCE_COFFEESCRIPT_INSTANCEPROPERTY: - if (!setWord.Contains(sc.ch)) { - sc.SetState(SCE_COFFEESCRIPT_DEFAULT); - } - break; - case SCE_COFFEESCRIPT_COMMENTLINE: - if (sc.atLineStart) { - sc.SetState(SCE_COFFEESCRIPT_DEFAULT); - } - break; - case SCE_COFFEESCRIPT_STRING: - if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\"') { - sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); - } else if (sc.ch == '#' && sc.chNext == '{' && inner_string_count < INNER_STRINGS_MAX_COUNT) { - // process interpolated code #{ ... } - enterInnerExpression(inner_string_types, - inner_expn_brace_counts, - inner_string_count, - sc.state, - brace_counts); - sc.SetState(SCE_COFFEESCRIPT_OPERATOR); - sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); - } - break; - case SCE_COFFEESCRIPT_CHARACTER: - if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\'') { - sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); - } - break; - case SCE_COFFEESCRIPT_REGEX: - if (sc.atLineStart) { - sc.SetState(SCE_COFFEESCRIPT_DEFAULT); - } else if (sc.ch == '/') { - sc.Forward(); - while ((sc.ch < 0x80) && islower(sc.ch)) - sc.Forward(); // gobble regex flags - sc.SetState(SCE_COFFEESCRIPT_DEFAULT); - } else if (sc.ch == '\\') { - // Gobble up the quoted character - if (sc.chNext == '\\' || sc.chNext == '/') { - sc.Forward(); - } - } - break; - case SCE_COFFEESCRIPT_STRINGEOL: - if (sc.atLineStart) { - sc.SetState(SCE_COFFEESCRIPT_DEFAULT); - } - break; - case SCE_COFFEESCRIPT_COMMENTBLOCK: - if (sc.Match("###")) { - sc.Forward(); - sc.Forward(); - sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); - } else if (sc.ch == '\\') { - sc.Forward(); - } - break; - case SCE_COFFEESCRIPT_VERBOSE_REGEX: - if (sc.Match("///")) { - sc.Forward(); - sc.Forward(); - sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); - } else if (sc.Match('#')) { - sc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT); - } else if (sc.ch == '\\') { - sc.Forward(); - } - break; - case SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT: - if (sc.atLineStart) { - sc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX); - } - break; - } - - // Determine if a new state should be entered. - if (sc.state == SCE_COFFEESCRIPT_DEFAULT) { - if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_COFFEESCRIPT_NUMBER); - } else if (setWordStart.Contains(sc.ch)) { - sc.SetState(SCE_COFFEESCRIPT_IDENTIFIER); - } else if (sc.Match("///")) { - sc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX); - sc.Forward(); - sc.Forward(); - } else if (sc.ch == '/' - && (setOKBeforeRE.Contains(chPrevNonWhite) - || followsKeyword(sc, styler)) - && (!setCouldBePostOp.Contains(chPrevNonWhite) - || !FollowsPostfixOperator(sc, styler))) { - sc.SetState(SCE_COFFEESCRIPT_REGEX); // JavaScript's RegEx - } else if (sc.ch == '\"') { - sc.SetState(SCE_COFFEESCRIPT_STRING); - } else if (sc.ch == '\'') { - sc.SetState(SCE_COFFEESCRIPT_CHARACTER); - } else if (sc.ch == '#') { - if (sc.Match("###")) { - sc.SetState(SCE_COFFEESCRIPT_COMMENTBLOCK); - sc.Forward(); - sc.Forward(); - } else { - sc.SetState(SCE_COFFEESCRIPT_COMMENTLINE); - } - } else if (isoperator(static_cast(sc.ch))) { - sc.SetState(SCE_COFFEESCRIPT_OPERATOR); - // Handle '..' and '...' operators correctly. - if (sc.ch == '.') { - for (int i = 0; i < 2 && sc.chNext == '.'; i++, sc.Forward()) ; - } else if (sc.ch == '{') { - ++brace_counts; - } else if (sc.ch == '}' && --brace_counts <= 0 && inner_string_count > 0) { - // Return to previous state before #{ ... } - sc.ForwardSetState(exitInnerExpression(inner_string_types, - inner_expn_brace_counts, - inner_string_count, - brace_counts)); - continue; // skip sc.Forward() at loop end - } - } - } - - if (!IsASpace(sc.ch) && !IsSpaceEquiv(sc.state)) { - chPrevNonWhite = sc.ch; - visibleChars++; - } - sc.Forward(); - } - sc.Complete(); -} - -static bool IsCommentLine(Sci_Position line, Accessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - if (ch == '#') - return true; - else if (ch != ' ' && ch != '\t') - return false; - } - return false; -} - -static void FoldCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length, int, - WordList *[], Accessor &styler) { - // A simplified version of FoldPyDoc - const Sci_Position maxPos = startPos + length; - const Sci_Position maxLines = styler.GetLine(maxPos - 1); // Requested last line - const Sci_Position docLines = styler.GetLine(styler.Length() - 1); // Available last line - - // property fold.coffeescript.comment - const bool foldComment = styler.GetPropertyInt("fold.coffeescript.comment") != 0; - - const bool foldCompact = styler.GetPropertyInt("fold.compact") != 0; - - // Backtrack to previous non-blank line so we can determine indent level - // for any white space lines - // and so we can fix any preceding fold level (which is why we go back - // at least one line in all cases) - int spaceFlags = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL); - while (lineCurrent > 0) { - lineCurrent--; - indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL); - if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG) - && !IsCommentLine(lineCurrent, styler)) - break; - } - int indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK; - - // Set up initial loop state - int prevComment = 0; - if (lineCurrent >= 1) - prevComment = foldComment && IsCommentLine(lineCurrent - 1, styler); - - // Process all characters to end of requested range - // or comment that hangs over the end of the range. Cap processing in all cases - // to end of document (in case of comment at end). - while ((lineCurrent <= docLines) && ((lineCurrent <= maxLines) || prevComment)) { - - // Gather info - int lev = indentCurrent; - Sci_Position lineNext = lineCurrent + 1; - int indentNext = indentCurrent; - if (lineNext <= docLines) { - // Information about next line is only available if not at end of document - indentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL); - } - const int comment = foldComment && IsCommentLine(lineCurrent, styler); - const int comment_start = (comment && !prevComment && (lineNext <= docLines) && - IsCommentLine(lineNext, styler) && (lev > SC_FOLDLEVELBASE)); - const int comment_continue = (comment && prevComment); - if (!comment) - indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK; - if (indentNext & SC_FOLDLEVELWHITEFLAG) - indentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel; - - if (comment_start) { - // Place fold point at start of a block of comments - lev |= SC_FOLDLEVELHEADERFLAG; - } else if (comment_continue) { - // Add level to rest of lines in the block - lev = lev + 1; - } - - // Skip past any blank lines for next indent level info; we skip also - // comments (all comments, not just those starting in column 0) - // which effectively folds them into surrounding code rather - // than screwing up folding. - - while ((lineNext < docLines) && - ((indentNext & SC_FOLDLEVELWHITEFLAG) || - (lineNext <= docLines && IsCommentLine(lineNext, styler)))) { - - lineNext++; - indentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL); - } - - const int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK; - const int levelBeforeComments = std::max(indentCurrentLevel,levelAfterComments); - - // Now set all the indent levels on the lines we skipped - // Do this from end to start. Once we encounter one line - // which is indented more than the line after the end of - // the comment-block, use the level of the block before - - Sci_Position skipLine = lineNext; - int skipLevel = levelAfterComments; - - while (--skipLine > lineCurrent) { - int skipLineIndent = styler.IndentAmount(skipLine, &spaceFlags, NULL); - - if (foldCompact) { - if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments) - skipLevel = levelBeforeComments; - - int whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG; - - styler.SetLevel(skipLine, skipLevel | whiteFlag); - } else { - if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments && - !(skipLineIndent & SC_FOLDLEVELWHITEFLAG) && - !IsCommentLine(skipLine, styler)) - skipLevel = levelBeforeComments; - - styler.SetLevel(skipLine, skipLevel); - } - } - - // Set fold header on non-comment line - if (!comment && !(indentCurrent & SC_FOLDLEVELWHITEFLAG)) { - if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) - lev |= SC_FOLDLEVELHEADERFLAG; - } - - // Keep track of block comment state of previous line - prevComment = comment_start || comment_continue; - - // Set fold level for this line and move to next line - styler.SetLevel(lineCurrent, lev); - indentCurrent = indentNext; - lineCurrent = lineNext; - } -} - -static const char *const csWordLists[] = { - "Keywords", - "Secondary keywords", - "Unused", - "Global classes", - 0, -}; - -LexerModule lmCoffeeScript(SCLEX_COFFEESCRIPT, ColouriseCoffeeScriptDoc, "coffeescript", FoldCoffeeScriptDoc, csWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexConf.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexConf.cpp deleted file mode 100644 index 73fbe46ef..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexConf.cpp +++ /dev/null @@ -1,190 +0,0 @@ -// Scintilla source code edit control -/** @file LexConf.cxx - ** Lexer for Apache Configuration Files. - ** - ** First working version contributed by Ahmad Zawawi on October 28, 2000. - ** i created this lexer because i needed something pretty when dealing - ** when Apache Configuration files... - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static void ColouriseConfDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler) -{ - int state = SCE_CONF_DEFAULT; - char chNext = styler[startPos]; - Sci_Position lengthDoc = startPos + length; - // create a buffer large enough to take the largest chunk... - char *buffer = new char[length+1]; - Sci_Position bufferCount = 0; - - // this assumes that we have 2 keyword list in conf.properties - WordList &directives = *keywordLists[0]; - WordList ¶ms = *keywordLists[1]; - - // go through all provided text segment - // using the hand-written state machine shown below - styler.StartAt(startPos); - styler.StartSegment(startPos); - for (Sci_Position i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - if (styler.IsLeadByte(ch)) { - chNext = styler.SafeGetCharAt(i + 2); - i++; - continue; - } - switch(state) { - case SCE_CONF_DEFAULT: - if( ch == '\n' || ch == '\r' || ch == '\t' || ch == ' ') { - // whitespace is simply ignored here... - styler.ColourTo(i,SCE_CONF_DEFAULT); - break; - } else if( ch == '#' ) { - // signals the start of a comment... - state = SCE_CONF_COMMENT; - styler.ColourTo(i,SCE_CONF_COMMENT); - } else if( ch == '.' /*|| ch == '/'*/) { - // signals the start of a file... - state = SCE_CONF_EXTENSION; - styler.ColourTo(i,SCE_CONF_EXTENSION); - } else if( ch == '"') { - state = SCE_CONF_STRING; - styler.ColourTo(i,SCE_CONF_STRING); - } else if( IsASCII(ch) && ispunct(ch) ) { - // signals an operator... - // no state jump necessary for this - // simple case... - styler.ColourTo(i,SCE_CONF_OPERATOR); - } else if( IsASCII(ch) && isalpha(ch) ) { - // signals the start of an identifier - bufferCount = 0; - buffer[bufferCount++] = static_cast(tolower(ch)); - state = SCE_CONF_IDENTIFIER; - } else if( IsASCII(ch) && isdigit(ch) ) { - // signals the start of a number - bufferCount = 0; - buffer[bufferCount++] = ch; - //styler.ColourTo(i,SCE_CONF_NUMBER); - state = SCE_CONF_NUMBER; - } else { - // style it the default style.. - styler.ColourTo(i,SCE_CONF_DEFAULT); - } - break; - - case SCE_CONF_COMMENT: - // if we find a newline here, - // we simply go to default state - // else continue to work on it... - if( ch == '\n' || ch == '\r' ) { - state = SCE_CONF_DEFAULT; - } else { - styler.ColourTo(i,SCE_CONF_COMMENT); - } - break; - - case SCE_CONF_EXTENSION: - // if we find a non-alphanumeric char, - // we simply go to default state - // else we're still dealing with an extension... - if( (IsASCII(ch) && isalnum(ch)) || (ch == '_') || - (ch == '-') || (ch == '$') || - (ch == '/') || (ch == '.') || (ch == '*') ) - { - styler.ColourTo(i,SCE_CONF_EXTENSION); - } else { - state = SCE_CONF_DEFAULT; - chNext = styler[i--]; - } - break; - - case SCE_CONF_STRING: - // if we find the end of a string char, we simply go to default state - // else we're still dealing with an string... - if( (ch == '"' && styler.SafeGetCharAt(i-1)!='\\') || (ch == '\n') || (ch == '\r') ) { - state = SCE_CONF_DEFAULT; - } - styler.ColourTo(i,SCE_CONF_STRING); - break; - - case SCE_CONF_IDENTIFIER: - // stay in CONF_IDENTIFIER state until we find a non-alphanumeric - if( (IsASCII(ch) && isalnum(ch)) || (ch == '_') || (ch == '-') || (ch == '/') || (ch == '$') || (ch == '.') || (ch == '*')) { - buffer[bufferCount++] = static_cast(tolower(ch)); - } else { - state = SCE_CONF_DEFAULT; - buffer[bufferCount] = '\0'; - - // check if the buffer contains a keyword, and highlight it if it is a keyword... - if(directives.InList(buffer)) { - styler.ColourTo(i-1,SCE_CONF_DIRECTIVE ); - } else if(params.InList(buffer)) { - styler.ColourTo(i-1,SCE_CONF_PARAMETER ); - } else if(strchr(buffer,'/') || strchr(buffer,'.')) { - styler.ColourTo(i-1,SCE_CONF_EXTENSION); - } else { - styler.ColourTo(i-1,SCE_CONF_DEFAULT); - } - - // push back the faulty character - chNext = styler[i--]; - - } - break; - - case SCE_CONF_NUMBER: - // stay in CONF_NUMBER state until we find a non-numeric - if( (IsASCII(ch) && isdigit(ch)) || ch == '.') { - buffer[bufferCount++] = ch; - } else { - state = SCE_CONF_DEFAULT; - buffer[bufferCount] = '\0'; - - // Colourize here... - if( strchr(buffer,'.') ) { - // it is an IP address... - styler.ColourTo(i-1,SCE_CONF_IP); - } else { - // normal number - styler.ColourTo(i-1,SCE_CONF_NUMBER); - } - - // push back a character - chNext = styler[i--]; - } - break; - - } - } - delete []buffer; -} - -static const char * const confWordListDesc[] = { - "Directives", - "Parameters", - 0 -}; - -LexerModule lmConf(SCLEX_CONF, ColouriseConfDoc, "conf", 0, confWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCrontab.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCrontab.cpp deleted file mode 100644 index 7f6d5fb0c..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCrontab.cpp +++ /dev/null @@ -1,224 +0,0 @@ -// Scintilla source code edit control -/** @file LexCrontab.cxx - ** Lexer to use with extended crontab files used by a powerful - ** Windows scheduler/event monitor/automation manager nnCron. - ** (http://nemtsev.eserv.ru/) - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static void ColouriseNncrontabDoc(Sci_PositionU startPos, Sci_Position length, int, WordList -*keywordLists[], Accessor &styler) -{ - int state = SCE_NNCRONTAB_DEFAULT; - char chNext = styler[startPos]; - Sci_Position lengthDoc = startPos + length; - // create a buffer large enough to take the largest chunk... - char *buffer = new char[length+1]; - Sci_Position bufferCount = 0; - // used when highliting environment variables inside quoted string: - bool insideString = false; - - // this assumes that we have 3 keyword list in conf.properties - WordList §ion = *keywordLists[0]; - WordList &keyword = *keywordLists[1]; - WordList &modifier = *keywordLists[2]; - - // go through all provided text segment - // using the hand-written state machine shown below - styler.StartAt(startPos); - styler.StartSegment(startPos); - for (Sci_Position i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - if (styler.IsLeadByte(ch)) { - chNext = styler.SafeGetCharAt(i + 2); - i++; - continue; - } - switch(state) { - case SCE_NNCRONTAB_DEFAULT: - if( ch == '\n' || ch == '\r' || ch == '\t' || ch == ' ') { - // whitespace is simply ignored here... - styler.ColourTo(i,SCE_NNCRONTAB_DEFAULT); - break; - } else if( ch == '#' && styler.SafeGetCharAt(i+1) == '(') { - // signals the start of a task... - state = SCE_NNCRONTAB_TASK; - styler.ColourTo(i,SCE_NNCRONTAB_TASK); - } - else if( ch == '\\' && (styler.SafeGetCharAt(i+1) == ' ' || - styler.SafeGetCharAt(i+1) == '\t')) { - // signals the start of an extended comment... - state = SCE_NNCRONTAB_COMMENT; - styler.ColourTo(i,SCE_NNCRONTAB_COMMENT); - } else if( ch == '#' ) { - // signals the start of a plain comment... - state = SCE_NNCRONTAB_COMMENT; - styler.ColourTo(i,SCE_NNCRONTAB_COMMENT); - } else if( ch == ')' && styler.SafeGetCharAt(i+1) == '#') { - // signals the end of a task... - state = SCE_NNCRONTAB_TASK; - styler.ColourTo(i,SCE_NNCRONTAB_TASK); - } else if( ch == '"') { - state = SCE_NNCRONTAB_STRING; - styler.ColourTo(i,SCE_NNCRONTAB_STRING); - } else if( ch == '%') { - // signals environment variables - state = SCE_NNCRONTAB_ENVIRONMENT; - styler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT); - } else if( ch == '<' && styler.SafeGetCharAt(i+1) == '%') { - // signals environment variables - state = SCE_NNCRONTAB_ENVIRONMENT; - styler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT); - } else if( ch == '*' ) { - // signals an asterisk - // no state jump necessary for this simple case... - styler.ColourTo(i,SCE_NNCRONTAB_ASTERISK); - } else if( (IsASCII(ch) && isalpha(ch)) || ch == '<' ) { - // signals the start of an identifier - bufferCount = 0; - buffer[bufferCount++] = ch; - state = SCE_NNCRONTAB_IDENTIFIER; - } else if( IsASCII(ch) && isdigit(ch) ) { - // signals the start of a number - bufferCount = 0; - buffer[bufferCount++] = ch; - state = SCE_NNCRONTAB_NUMBER; - } else { - // style it the default style.. - styler.ColourTo(i,SCE_NNCRONTAB_DEFAULT); - } - break; - - case SCE_NNCRONTAB_COMMENT: - // if we find a newline here, - // we simply go to default state - // else continue to work on it... - if( ch == '\n' || ch == '\r' ) { - state = SCE_NNCRONTAB_DEFAULT; - } else { - styler.ColourTo(i,SCE_NNCRONTAB_COMMENT); - } - break; - - case SCE_NNCRONTAB_TASK: - // if we find a newline here, - // we simply go to default state - // else continue to work on it... - if( ch == '\n' || ch == '\r' ) { - state = SCE_NNCRONTAB_DEFAULT; - } else { - styler.ColourTo(i,SCE_NNCRONTAB_TASK); - } - break; - - case SCE_NNCRONTAB_STRING: - if( ch == '%' ) { - state = SCE_NNCRONTAB_ENVIRONMENT; - insideString = true; - styler.ColourTo(i-1,SCE_NNCRONTAB_STRING); - break; - } - // if we find the end of a string char, we simply go to default state - // else we're still dealing with an string... - if( (ch == '"' && styler.SafeGetCharAt(i-1)!='\\') || - (ch == '\n') || (ch == '\r') ) { - state = SCE_NNCRONTAB_DEFAULT; - } - styler.ColourTo(i,SCE_NNCRONTAB_STRING); - break; - - case SCE_NNCRONTAB_ENVIRONMENT: - // if we find the end of a string char, we simply go to default state - // else we're still dealing with an string... - if( ch == '%' && insideString ) { - state = SCE_NNCRONTAB_STRING; - insideString = false; - break; - } - if( (ch == '%' && styler.SafeGetCharAt(i-1)!='\\') - || (ch == '\n') || (ch == '\r') || (ch == '>') ) { - state = SCE_NNCRONTAB_DEFAULT; - styler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT); - break; - } - styler.ColourTo(i+1,SCE_NNCRONTAB_ENVIRONMENT); - break; - - case SCE_NNCRONTAB_IDENTIFIER: - // stay in CONF_IDENTIFIER state until we find a non-alphanumeric - if( (IsASCII(ch) && isalnum(ch)) || (ch == '_') || (ch == '-') || (ch == '/') || - (ch == '$') || (ch == '.') || (ch == '<') || (ch == '>') || - (ch == '@') ) { - buffer[bufferCount++] = ch; - } else { - state = SCE_NNCRONTAB_DEFAULT; - buffer[bufferCount] = '\0'; - - // check if the buffer contains a keyword, - // and highlight it if it is a keyword... - if(section.InList(buffer)) { - styler.ColourTo(i,SCE_NNCRONTAB_SECTION ); - } else if(keyword.InList(buffer)) { - styler.ColourTo(i-1,SCE_NNCRONTAB_KEYWORD ); - } // else if(strchr(buffer,'/') || strchr(buffer,'.')) { - // styler.ColourTo(i-1,SCE_NNCRONTAB_EXTENSION); - // } - else if(modifier.InList(buffer)) { - styler.ColourTo(i-1,SCE_NNCRONTAB_MODIFIER ); - } else { - styler.ColourTo(i-1,SCE_NNCRONTAB_DEFAULT); - } - // push back the faulty character - chNext = styler[i--]; - } - break; - - case SCE_NNCRONTAB_NUMBER: - // stay in CONF_NUMBER state until we find a non-numeric - if( IsASCII(ch) && isdigit(ch) /* || ch == '.' */ ) { - buffer[bufferCount++] = ch; - } else { - state = SCE_NNCRONTAB_DEFAULT; - buffer[bufferCount] = '\0'; - // Colourize here... (normal number) - styler.ColourTo(i-1,SCE_NNCRONTAB_NUMBER); - // push back a character - chNext = styler[i--]; - } - break; - } - } - delete []buffer; -} - -static const char * const cronWordListDesc[] = { - "Section keywords and Forth words", - "nnCrontab keywords", - "Modifiers", - 0 -}; - -LexerModule lmNncrontab(SCLEX_NNCRONTAB, ColouriseNncrontabDoc, "nncrontab", 0, cronWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCsound.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCsound.cpp deleted file mode 100644 index 24603801e..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexCsound.cpp +++ /dev/null @@ -1,212 +0,0 @@ -// Scintilla source code edit control -/** @file LexCsound.cxx - ** Lexer for Csound (Orchestra & Score) - ** Written by Georg Ritter - - **/ -// Copyright 1998-2003 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '.' || - ch == '_' || ch == '?'); -} - -static inline bool IsAWordStart(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' || - ch == '%' || ch == '@' || ch == '$' || ch == '?'); -} - -static inline bool IsCsoundOperator(char ch) { - if (IsASCII(ch) && isalnum(ch)) - return false; - // '.' left out as it is used to make up numbers - if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || - ch == '(' || ch == ')' || ch == '=' || ch == '^' || - ch == '[' || ch == ']' || ch == '<' || ch == '&' || - ch == '>' || ch == ',' || ch == '|' || ch == '~' || - ch == '%' || ch == ':') - return true; - return false; -} - -static void ColouriseCsoundDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - - WordList &opcode = *keywordlists[0]; - WordList &headerStmt = *keywordlists[1]; - WordList &otherKeyword = *keywordlists[2]; - - // Do not leak onto next line - if (initStyle == SCE_CSOUND_STRINGEOL) - initStyle = SCE_CSOUND_DEFAULT; - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) - { - // Handle line continuation generically. - if (sc.ch == '\\') { - if (sc.chNext == '\n' || sc.chNext == '\r') { - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - sc.Forward(); - } - continue; - } - } - - // Determine if the current state should terminate. - if (sc.state == SCE_CSOUND_OPERATOR) { - if (!IsCsoundOperator(static_cast(sc.ch))) { - sc.SetState(SCE_CSOUND_DEFAULT); - } - }else if (sc.state == SCE_CSOUND_NUMBER) { - if (!IsAWordChar(sc.ch)) { - sc.SetState(SCE_CSOUND_DEFAULT); - } - } else if (sc.state == SCE_CSOUND_IDENTIFIER) { - if (!IsAWordChar(sc.ch) ) { - char s[100]; - sc.GetCurrent(s, sizeof(s)); - - if (opcode.InList(s)) { - sc.ChangeState(SCE_CSOUND_OPCODE); - } else if (headerStmt.InList(s)) { - sc.ChangeState(SCE_CSOUND_HEADERSTMT); - } else if (otherKeyword.InList(s)) { - sc.ChangeState(SCE_CSOUND_USERKEYWORD); - } else if (s[0] == 'p') { - sc.ChangeState(SCE_CSOUND_PARAM); - } else if (s[0] == 'a') { - sc.ChangeState(SCE_CSOUND_ARATE_VAR); - } else if (s[0] == 'k') { - sc.ChangeState(SCE_CSOUND_KRATE_VAR); - } else if (s[0] == 'i') { // covers both i-rate variables and i-statements - sc.ChangeState(SCE_CSOUND_IRATE_VAR); - } else if (s[0] == 'g') { - sc.ChangeState(SCE_CSOUND_GLOBAL_VAR); - } - sc.SetState(SCE_CSOUND_DEFAULT); - } - } - else if (sc.state == SCE_CSOUND_COMMENT ) { - if (sc.atLineEnd) { - sc.SetState(SCE_CSOUND_DEFAULT); - } - } - else if ((sc.state == SCE_CSOUND_ARATE_VAR) || - (sc.state == SCE_CSOUND_KRATE_VAR) || - (sc.state == SCE_CSOUND_IRATE_VAR)) { - if (!IsAWordChar(sc.ch)) { - sc.SetState(SCE_CSOUND_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_CSOUND_DEFAULT) { - if (sc.ch == ';'){ - sc.SetState(SCE_CSOUND_COMMENT); - } else if (isdigit(sc.ch) || (sc.ch == '.' && isdigit(sc.chNext))) { - sc.SetState(SCE_CSOUND_NUMBER); - } else if (IsAWordStart(sc.ch)) { - sc.SetState(SCE_CSOUND_IDENTIFIER); - } else if (IsCsoundOperator(static_cast(sc.ch))) { - sc.SetState(SCE_CSOUND_OPERATOR); - } else if (sc.ch == 'p') { - sc.SetState(SCE_CSOUND_PARAM); - } else if (sc.ch == 'a') { - sc.SetState(SCE_CSOUND_ARATE_VAR); - } else if (sc.ch == 'k') { - sc.SetState(SCE_CSOUND_KRATE_VAR); - } else if (sc.ch == 'i') { // covers both i-rate variables and i-statements - sc.SetState(SCE_CSOUND_IRATE_VAR); - } else if (sc.ch == 'g') { - sc.SetState(SCE_CSOUND_GLOBAL_VAR); - } - } - } - sc.Complete(); -} - -static void FoldCsoundInstruments(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], - Accessor &styler) { - Sci_PositionU lengthDoc = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int stylePrev = 0; - int styleNext = styler.StyleAt(startPos); - for (Sci_PositionU i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if ((stylePrev != SCE_CSOUND_OPCODE) && (style == SCE_CSOUND_OPCODE)) { - char s[20]; - unsigned int j = 0; - while ((j < (sizeof(s) - 1)) && (iswordchar(styler[i + j]))) { - s[j] = styler[i + j]; - j++; - } - s[j] = '\0'; - - if (strcmp(s, "instr") == 0) - levelCurrent++; - if (strcmp(s, "endin") == 0) - levelCurrent--; - } - - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - if (!isspacechar(ch)) - visibleChars++; - stylePrev = style; - } - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - - -static const char * const csoundWordListDesc[] = { - "Opcodes", - "Header Statements", - "User keywords", - 0 -}; - -LexerModule lmCsound(SCLEX_CSOUND, ColouriseCsoundDoc, "csound", FoldCsoundInstruments, csoundWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexD.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexD.cpp deleted file mode 100644 index acbf462ed..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexD.cpp +++ /dev/null @@ -1,567 +0,0 @@ -/** @file LexD.cxx - ** Lexer for D. - ** - ** Copyright (c) 2006 by Waldemar Augustyn - ** Converted to lexer object and added further folding features/properties by "Udo Lechner" - **/ -// Copyright 1998-2005 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "OptionSet.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - -/* Nested comments require keeping the value of the nesting level for every - position in the document. But since scintilla always styles line by line, - we only need to store one value per line. The non-negative number indicates - nesting level at the end of the line. -*/ - -// Underscore, letter, digit and universal alphas from C99 Appendix D. - -static bool IsWordStart(int ch) { - return (IsASCII(ch) && (isalpha(ch) || ch == '_')) || !IsASCII(ch); -} - -static bool IsWord(int ch) { - return (IsASCII(ch) && (isalnum(ch) || ch == '_')) || !IsASCII(ch); -} - -static bool IsDoxygen(int ch) { - if (IsASCII(ch) && islower(ch)) - return true; - if (ch == '$' || ch == '@' || ch == '\\' || - ch == '&' || ch == '#' || ch == '<' || ch == '>' || - ch == '{' || ch == '}' || ch == '[' || ch == ']') - return true; - return false; -} - -static bool IsStringSuffix(int ch) { - return ch == 'c' || ch == 'w' || ch == 'd'; -} - -static bool IsStreamCommentStyle(int style) { - return style == SCE_D_COMMENT || - style == SCE_D_COMMENTDOC || - style == SCE_D_COMMENTDOCKEYWORD || - style == SCE_D_COMMENTDOCKEYWORDERROR; -} - -// An individual named option for use in an OptionSet - -// Options used for LexerD -struct OptionsD { - bool fold; - bool foldSyntaxBased; - bool foldComment; - bool foldCommentMultiline; - bool foldCommentExplicit; - std::string foldExplicitStart; - std::string foldExplicitEnd; - bool foldExplicitAnywhere; - bool foldCompact; - int foldAtElseInt; - bool foldAtElse; - OptionsD() { - fold = false; - foldSyntaxBased = true; - foldComment = false; - foldCommentMultiline = true; - foldCommentExplicit = true; - foldExplicitStart = ""; - foldExplicitEnd = ""; - foldExplicitAnywhere = false; - foldCompact = true; - foldAtElseInt = -1; - foldAtElse = false; - } -}; - -static const char * const dWordLists[] = { - "Primary keywords and identifiers", - "Secondary keywords and identifiers", - "Documentation comment keywords", - "Type definitions and aliases", - "Keywords 5", - "Keywords 6", - "Keywords 7", - 0, - }; - -struct OptionSetD : public OptionSet { - OptionSetD() { - DefineProperty("fold", &OptionsD::fold); - - DefineProperty("fold.d.syntax.based", &OptionsD::foldSyntaxBased, - "Set this property to 0 to disable syntax based folding."); - - DefineProperty("fold.comment", &OptionsD::foldComment); - - DefineProperty("fold.d.comment.multiline", &OptionsD::foldCommentMultiline, - "Set this property to 0 to disable folding multi-line comments when fold.comment=1."); - - DefineProperty("fold.d.comment.explicit", &OptionsD::foldCommentExplicit, - "Set this property to 0 to disable folding explicit fold points when fold.comment=1."); - - DefineProperty("fold.d.explicit.start", &OptionsD::foldExplicitStart, - "The string to use for explicit fold start points, replacing the standard //{."); - - DefineProperty("fold.d.explicit.end", &OptionsD::foldExplicitEnd, - "The string to use for explicit fold end points, replacing the standard //}."); - - DefineProperty("fold.d.explicit.anywhere", &OptionsD::foldExplicitAnywhere, - "Set this property to 1 to enable explicit fold points anywhere, not just in line comments."); - - DefineProperty("fold.compact", &OptionsD::foldCompact); - - DefineProperty("lexer.d.fold.at.else", &OptionsD::foldAtElseInt, - "This option enables D folding on a \"} else {\" line of an if statement."); - - DefineProperty("fold.at.else", &OptionsD::foldAtElse); - - DefineWordListSets(dWordLists); - } -}; - -class LexerD : public DefaultLexer { - bool caseSensitive; - WordList keywords; - WordList keywords2; - WordList keywords3; - WordList keywords4; - WordList keywords5; - WordList keywords6; - WordList keywords7; - OptionsD options; - OptionSetD osD; -public: - LexerD(bool caseSensitive_) : - caseSensitive(caseSensitive_) { - } - virtual ~LexerD() { - } - void SCI_METHOD Release() override { - delete this; - } - int SCI_METHOD Version() const override { - return lvOriginal; - } - const char * SCI_METHOD PropertyNames() override { - return osD.PropertyNames(); - } - int SCI_METHOD PropertyType(const char *name) override { - return osD.PropertyType(name); - } - const char * SCI_METHOD DescribeProperty(const char *name) override { - return osD.DescribeProperty(name); - } - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; - const char * SCI_METHOD DescribeWordListSets() override { - return osD.DescribeWordListSets(); - } - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - - void * SCI_METHOD PrivateCall(int, void *) override { - return 0; - } - - static ILexer *LexerFactoryD() { - return new LexerD(true); - } - static ILexer *LexerFactoryDInsensitive() { - return new LexerD(false); - } -}; - -Sci_Position SCI_METHOD LexerD::PropertySet(const char *key, const char *val) { - if (osD.PropertySet(&options, key, val)) { - return 0; - } - return -1; -} - -Sci_Position SCI_METHOD LexerD::WordListSet(int n, const char *wl) { - WordList *wordListN = 0; - switch (n) { - case 0: - wordListN = &keywords; - break; - case 1: - wordListN = &keywords2; - break; - case 2: - wordListN = &keywords3; - break; - case 3: - wordListN = &keywords4; - break; - case 4: - wordListN = &keywords5; - break; - case 5: - wordListN = &keywords6; - break; - case 6: - wordListN = &keywords7; - break; - } - Sci_Position firstModification = -1; - if (wordListN) { - WordList wlNew; - wlNew.Set(wl); - if (*wordListN != wlNew) { - wordListN->Set(wl); - firstModification = 0; - } - } - return firstModification; -} - -void SCI_METHOD LexerD::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - LexAccessor styler(pAccess); - - int styleBeforeDCKeyword = SCE_D_DEFAULT; - - StyleContext sc(startPos, length, initStyle, styler); - - Sci_Position curLine = styler.GetLine(startPos); - int curNcLevel = curLine > 0? styler.GetLineState(curLine-1): 0; - bool numFloat = false; // Float literals have '+' and '-' signs - bool numHex = false; - - for (; sc.More(); sc.Forward()) { - - if (sc.atLineStart) { - curLine = styler.GetLine(sc.currentPos); - styler.SetLineState(curLine, curNcLevel); - } - - // Determine if the current state should terminate. - switch (sc.state) { - case SCE_D_OPERATOR: - sc.SetState(SCE_D_DEFAULT); - break; - case SCE_D_NUMBER: - // We accept almost anything because of hex. and number suffixes - if (IsASCII(sc.ch) && (isalnum(sc.ch) || sc.ch == '_')) { - continue; - } else if (sc.ch == '.' && sc.chNext != '.' && !numFloat) { - // Don't parse 0..2 as number. - numFloat=true; - continue; - } else if ( ( sc.ch == '-' || sc.ch == '+' ) && ( /*sign and*/ - ( !numHex && ( sc.chPrev == 'e' || sc.chPrev == 'E' ) ) || /*decimal or*/ - ( sc.chPrev == 'p' || sc.chPrev == 'P' ) ) ) { /*hex*/ - // Parse exponent sign in float literals: 2e+10 0x2e+10 - continue; - } else { - sc.SetState(SCE_D_DEFAULT); - } - break; - case SCE_D_IDENTIFIER: - if (!IsWord(sc.ch)) { - char s[1000]; - if (caseSensitive) { - sc.GetCurrent(s, sizeof(s)); - } else { - sc.GetCurrentLowered(s, sizeof(s)); - } - if (keywords.InList(s)) { - sc.ChangeState(SCE_D_WORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_D_WORD2); - } else if (keywords4.InList(s)) { - sc.ChangeState(SCE_D_TYPEDEF); - } else if (keywords5.InList(s)) { - sc.ChangeState(SCE_D_WORD5); - } else if (keywords6.InList(s)) { - sc.ChangeState(SCE_D_WORD6); - } else if (keywords7.InList(s)) { - sc.ChangeState(SCE_D_WORD7); - } - sc.SetState(SCE_D_DEFAULT); - } - break; - case SCE_D_COMMENT: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_D_DEFAULT); - } - break; - case SCE_D_COMMENTDOC: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_D_DEFAULT); - } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support - // Verify that we have the conditions to mark a comment-doc-keyword - if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) { - styleBeforeDCKeyword = SCE_D_COMMENTDOC; - sc.SetState(SCE_D_COMMENTDOCKEYWORD); - } - } - break; - case SCE_D_COMMENTLINE: - if (sc.atLineStart) { - sc.SetState(SCE_D_DEFAULT); - } - break; - case SCE_D_COMMENTLINEDOC: - if (sc.atLineStart) { - sc.SetState(SCE_D_DEFAULT); - } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support - // Verify that we have the conditions to mark a comment-doc-keyword - if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) { - styleBeforeDCKeyword = SCE_D_COMMENTLINEDOC; - sc.SetState(SCE_D_COMMENTDOCKEYWORD); - } - } - break; - case SCE_D_COMMENTDOCKEYWORD: - if ((styleBeforeDCKeyword == SCE_D_COMMENTDOC) && sc.Match('*', '/')) { - sc.ChangeState(SCE_D_COMMENTDOCKEYWORDERROR); - sc.Forward(); - sc.ForwardSetState(SCE_D_DEFAULT); - } else if (!IsDoxygen(sc.ch)) { - char s[100]; - if (caseSensitive) { - sc.GetCurrent(s, sizeof(s)); - } else { - sc.GetCurrentLowered(s, sizeof(s)); - } - if (!IsASpace(sc.ch) || !keywords3.InList(s + 1)) { - sc.ChangeState(SCE_D_COMMENTDOCKEYWORDERROR); - } - sc.SetState(styleBeforeDCKeyword); - } - break; - case SCE_D_COMMENTNESTED: - if (sc.Match('+', '/')) { - if (curNcLevel > 0) - curNcLevel -= 1; - curLine = styler.GetLine(sc.currentPos); - styler.SetLineState(curLine, curNcLevel); - sc.Forward(); - if (curNcLevel == 0) { - sc.ForwardSetState(SCE_D_DEFAULT); - } - } else if (sc.Match('/','+')) { - curNcLevel += 1; - curLine = styler.GetLine(sc.currentPos); - styler.SetLineState(curLine, curNcLevel); - sc.Forward(); - } - break; - case SCE_D_STRING: - if (sc.ch == '\\') { - if (sc.chNext == '"' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '"') { - if(IsStringSuffix(sc.chNext)) - sc.Forward(); - sc.ForwardSetState(SCE_D_DEFAULT); - } - break; - case SCE_D_CHARACTER: - if (sc.atLineEnd) { - sc.ChangeState(SCE_D_STRINGEOL); - } else if (sc.ch == '\\') { - if (sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\'') { - // Char has no suffixes - sc.ForwardSetState(SCE_D_DEFAULT); - } - break; - case SCE_D_STRINGEOL: - if (sc.atLineStart) { - sc.SetState(SCE_D_DEFAULT); - } - break; - case SCE_D_STRINGB: - if (sc.ch == '`') { - if(IsStringSuffix(sc.chNext)) - sc.Forward(); - sc.ForwardSetState(SCE_D_DEFAULT); - } - break; - case SCE_D_STRINGR: - if (sc.ch == '"') { - if(IsStringSuffix(sc.chNext)) - sc.Forward(); - sc.ForwardSetState(SCE_D_DEFAULT); - } - break; - } - - // Determine if a new state should be entered. - if (sc.state == SCE_D_DEFAULT) { - if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_D_NUMBER); - numFloat = sc.ch == '.'; - // Remember hex literal - numHex = sc.ch == '0' && ( sc.chNext == 'x' || sc.chNext == 'X' ); - } else if ( (sc.ch == 'r' || sc.ch == 'x' || sc.ch == 'q') - && sc.chNext == '"' ) { - // Limited support for hex and delimited strings: parse as r"" - sc.SetState(SCE_D_STRINGR); - sc.Forward(); - } else if (IsWordStart(sc.ch) || sc.ch == '$') { - sc.SetState(SCE_D_IDENTIFIER); - } else if (sc.Match('/','+')) { - curNcLevel += 1; - curLine = styler.GetLine(sc.currentPos); - styler.SetLineState(curLine, curNcLevel); - sc.SetState(SCE_D_COMMENTNESTED); - sc.Forward(); - } else if (sc.Match('/', '*')) { - if (sc.Match("/**") || sc.Match("/*!")) { // Support of Qt/Doxygen doc. style - sc.SetState(SCE_D_COMMENTDOC); - } else { - sc.SetState(SCE_D_COMMENT); - } - sc.Forward(); // Eat the * so it isn't used for the end of the comment - } else if (sc.Match('/', '/')) { - if ((sc.Match("///") && !sc.Match("////")) || sc.Match("//!")) - // Support of Qt/Doxygen doc. style - sc.SetState(SCE_D_COMMENTLINEDOC); - else - sc.SetState(SCE_D_COMMENTLINE); - } else if (sc.ch == '"') { - sc.SetState(SCE_D_STRING); - } else if (sc.ch == '\'') { - sc.SetState(SCE_D_CHARACTER); - } else if (sc.ch == '`') { - sc.SetState(SCE_D_STRINGB); - } else if (isoperator(static_cast(sc.ch))) { - sc.SetState(SCE_D_OPERATOR); - if (sc.ch == '.' && sc.chNext == '.') sc.Forward(); // Range operator - } - } - } - sc.Complete(); -} - -// Store both the current line's fold level and the next lines in the -// level store to make it easy to pick up with each increment -// and to make it possible to fiddle the current level for "} else {". - -void SCI_METHOD LexerD::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - - if (!options.fold) - return; - - LexAccessor styler(pAccess); - - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelCurrent = SC_FOLDLEVELBASE; - if (lineCurrent > 0) - levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; - int levelMinCurrent = levelCurrent; - int levelNext = levelCurrent; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - bool foldAtElse = options.foldAtElseInt >= 0 ? options.foldAtElseInt != 0 : options.foldAtElse; - const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty(); - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style)) { - if (!IsStreamCommentStyle(stylePrev)) { - levelNext++; - } else if (!IsStreamCommentStyle(styleNext) && !atEOL) { - // Comments don't end at end of line and the next character may be unstyled. - levelNext--; - } - } - if (options.foldComment && options.foldCommentExplicit && ((style == SCE_D_COMMENTLINE) || options.foldExplicitAnywhere)) { - if (userDefinedFoldMarkers) { - if (styler.Match(i, options.foldExplicitStart.c_str())) { - levelNext++; - } else if (styler.Match(i, options.foldExplicitEnd.c_str())) { - levelNext--; - } - } else { - if ((ch == '/') && (chNext == '/')) { - char chNext2 = styler.SafeGetCharAt(i + 2); - if (chNext2 == '{') { - levelNext++; - } else if (chNext2 == '}') { - levelNext--; - } - } - } - } - if (options.foldSyntaxBased && (style == SCE_D_OPERATOR)) { - if (ch == '{') { - // Measure the minimum before a '{' to allow - // folding on "} else {" - if (levelMinCurrent > levelNext) { - levelMinCurrent = levelNext; - } - levelNext++; - } else if (ch == '}') { - levelNext--; - } - } - if (atEOL || (i == endPos-1)) { - if (options.foldComment && options.foldCommentMultiline) { // Handle nested comments - int nc; - nc = styler.GetLineState(lineCurrent); - nc -= lineCurrent>0? styler.GetLineState(lineCurrent-1): 0; - levelNext += nc; - } - int levelUse = levelCurrent; - if (options.foldSyntaxBased && foldAtElse) { - levelUse = levelMinCurrent; - } - int lev = levelUse | levelNext << 16; - if (visibleChars == 0 && options.foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if (levelUse < levelNext) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelCurrent = levelNext; - levelMinCurrent = levelCurrent; - visibleChars = 0; - } - if (!IsASpace(ch)) - visibleChars++; - } -} - -LexerModule lmD(SCLEX_D, LexerD::LexerFactoryD, "d", dWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDMAP.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDMAP.cpp deleted file mode 100644 index 91b10c29b..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDMAP.cpp +++ /dev/null @@ -1,226 +0,0 @@ -// Scintilla source code edit control -/** @file LexDMAP.cxx - ** Lexer for MSC Nastran DMAP. - ** Written by Mark Robinson, based on the Fortran lexer by Chuan-jian Shen, Last changed Aug. 2013 - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. -/***************************************/ -#include -#include -#include -#include -#include -#include -/***************************************/ -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -/***************************************/ - -using namespace Scintilla; - -/***********************************************/ -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '%'); -} -/**********************************************/ -static inline bool IsAWordStart(const int ch) { - return (ch < 0x80) && (isalnum(ch)); -} -/***************************************/ -static void ColouriseDMAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) { - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; - /***************************************/ - Sci_Position posLineStart = 0, numNonBlank = 0; - Sci_Position endPos = startPos + length; - /***************************************/ - // backtrack to the nearest keyword - while ((startPos > 1) && (styler.StyleAt(startPos) != SCE_DMAP_WORD)) { - startPos--; - } - startPos = styler.LineStart(styler.GetLine(startPos)); - initStyle = styler.StyleAt(startPos - 1); - StyleContext sc(startPos, endPos-startPos, initStyle, styler); - /***************************************/ - for (; sc.More(); sc.Forward()) { - // remember the start position of the line - if (sc.atLineStart) { - posLineStart = sc.currentPos; - numNonBlank = 0; - sc.SetState(SCE_DMAP_DEFAULT); - } - if (!IsASpaceOrTab(sc.ch)) numNonBlank ++; - /***********************************************/ - // Handle data appearing after column 72; it is ignored - Sci_Position toLineStart = sc.currentPos - posLineStart; - if (toLineStart >= 72 || sc.ch == '$') { - sc.SetState(SCE_DMAP_COMMENT); - while (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end - continue; - } - /***************************************/ - // Determine if the current state should terminate. - if (sc.state == SCE_DMAP_OPERATOR) { - sc.SetState(SCE_DMAP_DEFAULT); - } else if (sc.state == SCE_DMAP_NUMBER) { - if (!(IsAWordChar(sc.ch) || sc.ch=='\'' || sc.ch=='\"' || sc.ch=='.')) { - sc.SetState(SCE_DMAP_DEFAULT); - } - } else if (sc.state == SCE_DMAP_IDENTIFIER) { - if (!IsAWordChar(sc.ch) || (sc.ch == '%')) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - if (keywords.InList(s)) { - sc.ChangeState(SCE_DMAP_WORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_DMAP_WORD2); - } else if (keywords3.InList(s)) { - sc.ChangeState(SCE_DMAP_WORD3); - } - sc.SetState(SCE_DMAP_DEFAULT); - } - } else if (sc.state == SCE_DMAP_COMMENT) { - if (sc.ch == '\r' || sc.ch == '\n') { - sc.SetState(SCE_DMAP_DEFAULT); - } - } else if (sc.state == SCE_DMAP_STRING1) { - if (sc.ch == '\'') { - if (sc.chNext == '\'') { - sc.Forward(); - } else { - sc.ForwardSetState(SCE_DMAP_DEFAULT); - } - } else if (sc.atLineEnd) { - sc.ChangeState(SCE_DMAP_STRINGEOL); - sc.ForwardSetState(SCE_DMAP_DEFAULT); - } - } else if (sc.state == SCE_DMAP_STRING2) { - if (sc.atLineEnd) { - sc.ChangeState(SCE_DMAP_STRINGEOL); - sc.ForwardSetState(SCE_DMAP_DEFAULT); - } else if (sc.ch == '\"') { - if (sc.chNext == '\"') { - sc.Forward(); - } else { - sc.ForwardSetState(SCE_DMAP_DEFAULT); - } - } - } - /***************************************/ - // Determine if a new state should be entered. - if (sc.state == SCE_DMAP_DEFAULT) { - if (sc.ch == '$') { - sc.SetState(SCE_DMAP_COMMENT); - } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)) || (sc.ch == '-' && IsADigit(sc.chNext))) { - sc.SetState(SCE_F_NUMBER); - } else if (IsAWordStart(sc.ch)) { - sc.SetState(SCE_DMAP_IDENTIFIER); - } else if (sc.ch == '\"') { - sc.SetState(SCE_DMAP_STRING2); - } else if (sc.ch == '\'') { - sc.SetState(SCE_DMAP_STRING1); - } else if (isoperator(static_cast(sc.ch))) { - sc.SetState(SCE_DMAP_OPERATOR); - } - } - } - sc.Complete(); -} -/***************************************/ -// To determine the folding level depending on keywords -static int classifyFoldPointDMAP(const char* s, const char* prevWord) { - int lev = 0; - if ((strcmp(prevWord, "else") == 0 && strcmp(s, "if") == 0) || strcmp(s, "enddo") == 0 || strcmp(s, "endif") == 0) { - lev = -1; - } else if ((strcmp(prevWord, "do") == 0 && strcmp(s, "while") == 0) || strcmp(s, "then") == 0) { - lev = 1; - } - return lev; -} -// Folding the code -static void FoldDMAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *[], Accessor &styler) { - // - // bool foldComment = styler.GetPropertyInt("fold.comment") != 0; - // Do not know how to fold the comment at the moment. - // - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - /***************************************/ - Sci_Position lastStart = 0; - char prevWord[32] = ""; - /***************************************/ - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - // - if ((stylePrev == SCE_DMAP_DEFAULT || stylePrev == SCE_DMAP_OPERATOR || stylePrev == SCE_DMAP_COMMENT) && (style == SCE_DMAP_WORD)) { - // Store last word and label start point. - lastStart = i; - } - /***************************************/ - if (style == SCE_DMAP_WORD) { - if(iswordchar(ch) && !iswordchar(chNext)) { - char s[32]; - Sci_PositionU k; - for(k=0; (k<31 ) && (k(tolower(styler[lastStart+k])); - } - s[k] = '\0'; - levelCurrent += classifyFoldPointDMAP(s, prevWord); - strcpy(prevWord, s); - } - } - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - strcpy(prevWord, ""); - } - /***************************************/ - if (!isspacechar(ch)) visibleChars++; - } - /***************************************/ - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} -/***************************************/ -static const char * const DMAPWordLists[] = { - "Primary keywords and identifiers", - "Intrinsic functions", - "Extended and user defined functions", - 0, -}; -/***************************************/ -LexerModule lmDMAP(SCLEX_DMAP, ColouriseDMAPDoc, "DMAP", FoldDMAPDoc, DMAPWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDMIS.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDMIS.cpp deleted file mode 100644 index fa024e9e7..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDMIS.cpp +++ /dev/null @@ -1,354 +0,0 @@ -// Scintilla source code edit control -/** @file LexDMIS.cxx - ** Lexer for DMIS. - **/ -// Copyright 1998-2005 by Neil Hodgson -// Copyright 2013-2014 by Andreas Tscharner -// The License.txt file describes the conditions under which this software may be distributed. - - -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - - -static const char *const DMISWordListDesc[] = { - "DMIS Major Words", - "DMIS Minor Words", - "Unsupported DMIS Major Words", - "Unsupported DMIS Minor Words", - "Keywords for code folding start", - "Corresponding keywords for code folding end", - 0 -}; - - -class LexerDMIS : public DefaultLexer -{ - private: - char *m_wordListSets; - WordList m_majorWords; - WordList m_minorWords; - WordList m_unsupportedMajor; - WordList m_unsupportedMinor; - WordList m_codeFoldingStart; - WordList m_codeFoldingEnd; - - char * SCI_METHOD UpperCase(char *item); - void SCI_METHOD InitWordListSets(void); - - public: - LexerDMIS(void); - virtual ~LexerDMIS(void); - - int SCI_METHOD Version() const override { - return lvOriginal; - } - - void SCI_METHOD Release() override { - delete this; - } - - const char * SCI_METHOD PropertyNames() override { - return NULL; - } - - int SCI_METHOD PropertyType(const char *) override { - return -1; - } - - const char * SCI_METHOD DescribeProperty(const char *) override { - return NULL; - } - - Sci_Position SCI_METHOD PropertySet(const char *, const char *) override { - return -1; - } - - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; - - void * SCI_METHOD PrivateCall(int, void *) override { - return NULL; - } - - static ILexer *LexerFactoryDMIS() { - return new LexerDMIS; - } - - const char * SCI_METHOD DescribeWordListSets() override; - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; -}; - - -char * SCI_METHOD LexerDMIS::UpperCase(char *item) -{ - char *itemStart; - - - itemStart = item; - while (item && *item) { - *item = toupper(*item); - item++; - }; - return itemStart; -} - -void SCI_METHOD LexerDMIS::InitWordListSets(void) -{ - size_t totalLen = 0; - - - for (int i=0; DMISWordListDesc[i]; i++) { - totalLen += strlen(DMISWordListDesc[i]); - totalLen++; - }; - - totalLen++; - this->m_wordListSets = new char[totalLen]; - memset(this->m_wordListSets, 0, totalLen); - - for (int i=0; DMISWordListDesc[i]; i++) { - strcat(this->m_wordListSets, DMISWordListDesc[i]); - strcat(this->m_wordListSets, "\n"); - }; -} - - -LexerDMIS::LexerDMIS(void) { - this->InitWordListSets(); - - this->m_majorWords.Clear(); - this->m_minorWords.Clear(); - this->m_unsupportedMajor.Clear(); - this->m_unsupportedMinor.Clear(); - this->m_codeFoldingStart.Clear(); - this->m_codeFoldingEnd.Clear(); -} - -LexerDMIS::~LexerDMIS(void) { - delete[] this->m_wordListSets; -} - -Sci_Position SCI_METHOD LexerDMIS::WordListSet(int n, const char *wl) -{ - switch (n) { - case 0: - this->m_majorWords.Clear(); - this->m_majorWords.Set(wl); - break; - case 1: - this->m_minorWords.Clear(); - this->m_minorWords.Set(wl); - break; - case 2: - this->m_unsupportedMajor.Clear(); - this->m_unsupportedMajor.Set(wl); - break; - case 3: - this->m_unsupportedMinor.Clear(); - this->m_unsupportedMinor.Set(wl); - break; - case 4: - this->m_codeFoldingStart.Clear(); - this->m_codeFoldingStart.Set(wl); - break; - case 5: - this->m_codeFoldingEnd.Clear(); - this->m_codeFoldingEnd.Set(wl); - break; - default: - return -1; - break; - } - - return 0; -} - -const char * SCI_METHOD LexerDMIS::DescribeWordListSets() -{ - return this->m_wordListSets; -} - -void SCI_METHOD LexerDMIS::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) -{ - const Sci_PositionU MAX_STR_LEN = 100; - - LexAccessor styler(pAccess); - StyleContext scCTX(startPos, lengthDoc, initStyle, styler); - CharacterSet setDMISNumber(CharacterSet::setDigits, ".-+eE"); - CharacterSet setDMISWordStart(CharacterSet::setAlpha, "-234", 0x80, true); - CharacterSet setDMISWord(CharacterSet::setAlpha); - - - bool isIFLine = false; - - for (; scCTX.More(); scCTX.Forward()) { - if (scCTX.atLineEnd) { - isIFLine = false; - }; - - switch (scCTX.state) { - case SCE_DMIS_DEFAULT: - if (scCTX.Match('$', '$')) { - scCTX.SetState(SCE_DMIS_COMMENT); - scCTX.Forward(); - }; - if (scCTX.Match('\'')) { - scCTX.SetState(SCE_DMIS_STRING); - }; - if (IsADigit(scCTX.ch) || ((scCTX.Match('-') || scCTX.Match('+')) && IsADigit(scCTX.chNext))) { - scCTX.SetState(SCE_DMIS_NUMBER); - break; - }; - if (setDMISWordStart.Contains(scCTX.ch)) { - scCTX.SetState(SCE_DMIS_KEYWORD); - }; - if (scCTX.Match('(') && (!isIFLine)) { - scCTX.SetState(SCE_DMIS_LABEL); - }; - break; - - case SCE_DMIS_COMMENT: - if (scCTX.atLineEnd) { - scCTX.SetState(SCE_DMIS_DEFAULT); - }; - break; - - case SCE_DMIS_STRING: - if (scCTX.Match('\'')) { - scCTX.SetState(SCE_DMIS_DEFAULT); - }; - break; - - case SCE_DMIS_NUMBER: - if (!setDMISNumber.Contains(scCTX.ch)) { - scCTX.SetState(SCE_DMIS_DEFAULT); - }; - break; - - case SCE_DMIS_KEYWORD: - if (!setDMISWord.Contains(scCTX.ch)) { - char tmpStr[MAX_STR_LEN]; - memset(tmpStr, 0, MAX_STR_LEN*sizeof(char)); - scCTX.GetCurrent(tmpStr, (MAX_STR_LEN-1)); - strncpy(tmpStr, this->UpperCase(tmpStr), (MAX_STR_LEN-1)); - - if (this->m_minorWords.InList(tmpStr)) { - scCTX.ChangeState(SCE_DMIS_MINORWORD); - }; - if (this->m_majorWords.InList(tmpStr)) { - isIFLine = (strcmp(tmpStr, "IF") == 0); - scCTX.ChangeState(SCE_DMIS_MAJORWORD); - }; - if (this->m_unsupportedMajor.InList(tmpStr)) { - scCTX.ChangeState(SCE_DMIS_UNSUPPORTED_MAJOR); - }; - if (this->m_unsupportedMinor.InList(tmpStr)) { - scCTX.ChangeState(SCE_DMIS_UNSUPPORTED_MINOR); - }; - - if (scCTX.Match('(') && (!isIFLine)) { - scCTX.SetState(SCE_DMIS_LABEL); - } else { - scCTX.SetState(SCE_DMIS_DEFAULT); - }; - }; - break; - - case SCE_DMIS_LABEL: - if (scCTX.Match(')')) { - scCTX.SetState(SCE_DMIS_DEFAULT); - }; - break; - }; - }; - scCTX.Complete(); -} - -void SCI_METHOD LexerDMIS::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess) -{ - const int MAX_STR_LEN = 100; - - LexAccessor styler(pAccess); - Sci_PositionU endPos = startPos + lengthDoc; - char chNext = styler[startPos]; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - int strPos = 0; - bool foldWordPossible = false; - CharacterSet setDMISFoldWord(CharacterSet::setAlpha); - char *tmpStr; - - - tmpStr = new char[MAX_STR_LEN]; - memset(tmpStr, 0, MAX_STR_LEN*sizeof(char)); - - for (Sci_PositionU i=startPos; i= (MAX_STR_LEN-1)) { - strPos = MAX_STR_LEN-1; - }; - - int style = styler.StyleAt(i); - bool noFoldPos = ((style == SCE_DMIS_COMMENT) || (style == SCE_DMIS_STRING)); - - if (foldWordPossible) { - if (setDMISFoldWord.Contains(ch)) { - tmpStr[strPos++] = ch; - } else { - tmpStr = this->UpperCase(tmpStr); - if (this->m_codeFoldingStart.InList(tmpStr) && (!noFoldPos)) { - levelCurrent++; - }; - if (this->m_codeFoldingEnd.InList(tmpStr) && (!noFoldPos)) { - levelCurrent--; - }; - memset(tmpStr, 0, MAX_STR_LEN*sizeof(char)); - strPos = 0; - foldWordPossible = false; - }; - } else { - if (setDMISFoldWord.Contains(ch)) { - tmpStr[strPos++] = ch; - foldWordPossible = true; - }; - }; - - if (atEOL || (i == (endPos-1))) { - int lev = levelPrev; - - if (levelCurrent > levelPrev) { - lev |= SC_FOLDLEVELHEADERFLAG; - }; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - }; - lineCurrent++; - levelPrev = levelCurrent; - }; - }; - delete[] tmpStr; -} - - -LexerModule lmDMIS(SCLEX_DMIS, LexerDMIS::LexerFactoryDMIS, "DMIS", DMISWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDiff.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDiff.cpp deleted file mode 100644 index dd008c5cb..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexDiff.cpp +++ /dev/null @@ -1,161 +0,0 @@ -// Scintilla source code edit control -/** @file LexDiff.cxx - ** Lexer for diff results. - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool AtEOL(Accessor &styler, Sci_PositionU i) { - return (styler[i] == '\n') || - ((styler[i] == '\r') && (styler.SafeGetCharAt(i + 1) != '\n')); -} - -#define DIFF_BUFFER_START_SIZE 16 -// Note that ColouriseDiffLine analyzes only the first DIFF_BUFFER_START_SIZE -// characters of each line to classify the line. - -static void ColouriseDiffLine(char *lineBuffer, Sci_Position endLine, Accessor &styler) { - // It is needed to remember the current state to recognize starting - // comment lines before the first "diff " or "--- ". If a real - // difference starts then each line starting with ' ' is a whitespace - // otherwise it is considered a comment (Only in..., Binary file...) - if (0 == strncmp(lineBuffer, "diff ", 5)) { - styler.ColourTo(endLine, SCE_DIFF_COMMAND); - } else if (0 == strncmp(lineBuffer, "Index: ", 7)) { // For subversion's diff - styler.ColourTo(endLine, SCE_DIFF_COMMAND); - } else if (0 == strncmp(lineBuffer, "---", 3) && lineBuffer[3] != '-') { - // In a context diff, --- appears in both the header and the position markers - if (lineBuffer[3] == ' ' && atoi(lineBuffer + 4) && !strchr(lineBuffer, '/')) - styler.ColourTo(endLine, SCE_DIFF_POSITION); - else if (lineBuffer[3] == '\r' || lineBuffer[3] == '\n') - styler.ColourTo(endLine, SCE_DIFF_POSITION); - else if (lineBuffer[3] == ' ') - styler.ColourTo(endLine, SCE_DIFF_HEADER); - else - styler.ColourTo(endLine, SCE_DIFF_DELETED); - } else if (0 == strncmp(lineBuffer, "+++ ", 4)) { - // I don't know of any diff where "+++ " is a position marker, but for - // consistency, do the same as with "--- " and "*** ". - if (atoi(lineBuffer+4) && !strchr(lineBuffer, '/')) - styler.ColourTo(endLine, SCE_DIFF_POSITION); - else - styler.ColourTo(endLine, SCE_DIFF_HEADER); - } else if (0 == strncmp(lineBuffer, "====", 4)) { // For p4's diff - styler.ColourTo(endLine, SCE_DIFF_HEADER); - } else if (0 == strncmp(lineBuffer, "***", 3)) { - // In a context diff, *** appears in both the header and the position markers. - // Also ******** is a chunk header, but here it's treated as part of the - // position marker since there is no separate style for a chunk header. - if (lineBuffer[3] == ' ' && atoi(lineBuffer+4) && !strchr(lineBuffer, '/')) - styler.ColourTo(endLine, SCE_DIFF_POSITION); - else if (lineBuffer[3] == '*') - styler.ColourTo(endLine, SCE_DIFF_POSITION); - else - styler.ColourTo(endLine, SCE_DIFF_HEADER); - } else if (0 == strncmp(lineBuffer, "? ", 2)) { // For difflib - styler.ColourTo(endLine, SCE_DIFF_HEADER); - } else if (lineBuffer[0] == '@') { - styler.ColourTo(endLine, SCE_DIFF_POSITION); - } else if (lineBuffer[0] >= '0' && lineBuffer[0] <= '9') { - styler.ColourTo(endLine, SCE_DIFF_POSITION); - } else if (0 == strncmp(lineBuffer, "++", 2)) { - styler.ColourTo(endLine, SCE_DIFF_PATCH_ADD); - } else if (0 == strncmp(lineBuffer, "+-", 2)) { - styler.ColourTo(endLine, SCE_DIFF_PATCH_DELETE); - } else if (0 == strncmp(lineBuffer, "-+", 2)) { - styler.ColourTo(endLine, SCE_DIFF_REMOVED_PATCH_ADD); - } else if (0 == strncmp(lineBuffer, "--", 2)) { - styler.ColourTo(endLine, SCE_DIFF_REMOVED_PATCH_DELETE); - } else if (lineBuffer[0] == '-' || lineBuffer[0] == '<') { - styler.ColourTo(endLine, SCE_DIFF_DELETED); - } else if (lineBuffer[0] == '+' || lineBuffer[0] == '>') { - styler.ColourTo(endLine, SCE_DIFF_ADDED); - } else if (lineBuffer[0] == '!') { - styler.ColourTo(endLine, SCE_DIFF_CHANGED); - } else if (lineBuffer[0] != ' ') { - styler.ColourTo(endLine, SCE_DIFF_COMMENT); - } else { - styler.ColourTo(endLine, SCE_DIFF_DEFAULT); - } -} - -static void ColouriseDiffDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { - char lineBuffer[DIFF_BUFFER_START_SIZE] = ""; - styler.StartAt(startPos); - styler.StartSegment(startPos); - Sci_PositionU linePos = 0; - for (Sci_PositionU i = startPos; i < startPos + length; i++) { - if (AtEOL(styler, i)) { - if (linePos < DIFF_BUFFER_START_SIZE) { - lineBuffer[linePos] = 0; - } - ColouriseDiffLine(lineBuffer, i, styler); - linePos = 0; - } else if (linePos < DIFF_BUFFER_START_SIZE - 1) { - lineBuffer[linePos++] = styler[i]; - } else if (linePos == DIFF_BUFFER_START_SIZE - 1) { - lineBuffer[linePos++] = 0; - } - } - if (linePos > 0) { // Last line does not have ending characters - if (linePos < DIFF_BUFFER_START_SIZE) { - lineBuffer[linePos] = 0; - } - ColouriseDiffLine(lineBuffer, startPos + length - 1, styler); - } -} - -static void FoldDiffDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { - Sci_Position curLine = styler.GetLine(startPos); - Sci_Position curLineStart = styler.LineStart(curLine); - int prevLevel = curLine > 0 ? styler.LevelAt(curLine - 1) : SC_FOLDLEVELBASE; - int nextLevel; - - do { - const int lineType = styler.StyleAt(curLineStart); - if (lineType == SCE_DIFF_COMMAND) - nextLevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; - else if (lineType == SCE_DIFF_HEADER) - nextLevel = (SC_FOLDLEVELBASE + 1) | SC_FOLDLEVELHEADERFLAG; - else if (lineType == SCE_DIFF_POSITION && styler[curLineStart] != '-') - nextLevel = (SC_FOLDLEVELBASE + 2) | SC_FOLDLEVELHEADERFLAG; - else if (prevLevel & SC_FOLDLEVELHEADERFLAG) - nextLevel = (prevLevel & SC_FOLDLEVELNUMBERMASK) + 1; - else - nextLevel = prevLevel; - - if ((nextLevel & SC_FOLDLEVELHEADERFLAG) && (nextLevel == prevLevel)) - styler.SetLevel(curLine-1, prevLevel & ~SC_FOLDLEVELHEADERFLAG); - - styler.SetLevel(curLine, nextLevel); - prevLevel = nextLevel; - - curLineStart = styler.LineStart(++curLine); - } while (static_cast(startPos)+length > curLineStart); -} - -static const char *const emptyWordListDesc[] = { - 0 -}; - -LexerModule lmDiff(SCLEX_DIFF, ColouriseDiffDoc, "diff", FoldDiffDoc, emptyWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexECL.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexECL.cpp deleted file mode 100644 index 6c916bce4..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexECL.cpp +++ /dev/null @@ -1,519 +0,0 @@ -// Scintilla source code edit control -/** @file LexECL.cxx - ** Lexer for ECL. - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -#pragma warning(disable: 4786) -#endif -#ifdef __BORLANDC__ -// Borland C++ displays warnings in vector header without this -#pragma option -w-ccc -w-rch -#endif - -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "PropSetSimple.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "OptionSet.h" - -#define SET_LOWER "abcdefghijklmnopqrstuvwxyz" -#define SET_UPPER "ABCDEFGHIJKLMNOPQRSTUVWXYZ" -#define SET_DIGITS "0123456789" - -using namespace Scintilla; - -static bool IsSpaceEquiv(int state) { - switch (state) { - case SCE_ECL_DEFAULT: - case SCE_ECL_COMMENT: - case SCE_ECL_COMMENTLINE: - case SCE_ECL_COMMENTLINEDOC: - case SCE_ECL_COMMENTDOCKEYWORD: - case SCE_ECL_COMMENTDOCKEYWORDERROR: - case SCE_ECL_COMMENTDOC: - return true; - - default: - return false; - } -} - -static void ColouriseEclDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - WordList &keywords0 = *keywordlists[0]; - WordList &keywords1 = *keywordlists[1]; - WordList &keywords2 = *keywordlists[2]; - WordList &keywords3 = *keywordlists[3]; //Value Types - WordList &keywords4 = *keywordlists[4]; - WordList &keywords5 = *keywordlists[5]; - WordList &keywords6 = *keywordlists[6]; //Javadoc Tags - WordList cplusplus; - cplusplus.Set("beginc endc"); - - bool stylingWithinPreprocessor = false; - - CharacterSet setOKBeforeRE(CharacterSet::setNone, "(=,"); - CharacterSet setDoxygen(CharacterSet::setLower, "$@\\&<>#{}[]"); - CharacterSet setWordStart(CharacterSet::setAlpha, "_", 0x80, true); - CharacterSet setWord(CharacterSet::setAlphaNum, "._", 0x80, true); - CharacterSet setQualified(CharacterSet::setNone, "uUxX"); - - int chPrevNonWhite = ' '; - int visibleChars = 0; - bool lastWordWasUUID = false; - int styleBeforeDCKeyword = SCE_ECL_DEFAULT; - bool continuationLine = false; - - if (initStyle == SCE_ECL_PREPROCESSOR) { - // Set continuationLine if last character of previous line is '\' - Sci_Position lineCurrent = styler.GetLine(startPos); - if (lineCurrent > 0) { - int chBack = styler.SafeGetCharAt(startPos-1, 0); - int chBack2 = styler.SafeGetCharAt(startPos-2, 0); - int lineEndChar = '!'; - if (chBack2 == '\r' && chBack == '\n') { - lineEndChar = styler.SafeGetCharAt(startPos-3, 0); - } else if (chBack == '\n' || chBack == '\r') { - lineEndChar = chBack2; - } - continuationLine = lineEndChar == '\\'; - } - } - - // look back to set chPrevNonWhite properly for better regex colouring - if (startPos > 0) { - Sci_Position back = startPos; - while (--back && IsSpaceEquiv(styler.StyleAt(back))) - ; - if (styler.StyleAt(back) == SCE_ECL_OPERATOR) { - chPrevNonWhite = styler.SafeGetCharAt(back); - } - } - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - if (sc.atLineStart) { - if (sc.state == SCE_ECL_STRING) { - // Prevent SCE_ECL_STRINGEOL from leaking back to previous line which - // ends with a line continuation by locking in the state upto this position. - sc.SetState(SCE_ECL_STRING); - } - // Reset states to begining of colourise so no surprises - // if different sets of lines lexed. - visibleChars = 0; - lastWordWasUUID = false; - } - - // Handle line continuation generically. - if (sc.ch == '\\') { - if (sc.chNext == '\n' || sc.chNext == '\r') { - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - sc.Forward(); - } - continuationLine = true; - continue; - } - } - - // Determine if the current state should terminate. - switch (sc.state) { - case SCE_ECL_ADDED: - case SCE_ECL_DELETED: - case SCE_ECL_CHANGED: - case SCE_ECL_MOVED: - if (sc.atLineStart) - sc.SetState(SCE_ECL_DEFAULT); - break; - case SCE_ECL_OPERATOR: - sc.SetState(SCE_ECL_DEFAULT); - break; - case SCE_ECL_NUMBER: - // We accept almost anything because of hex. and number suffixes - if (!setWord.Contains(sc.ch)) { - sc.SetState(SCE_ECL_DEFAULT); - } - break; - case SCE_ECL_IDENTIFIER: - if (!setWord.Contains(sc.ch) || (sc.ch == '.')) { - char s[1000]; - sc.GetCurrentLowered(s, sizeof(s)); - if (keywords0.InList(s)) { - lastWordWasUUID = strcmp(s, "uuid") == 0; - sc.ChangeState(SCE_ECL_WORD0); - } else if (keywords1.InList(s)) { - sc.ChangeState(SCE_ECL_WORD1); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_ECL_WORD2); - } else if (keywords4.InList(s)) { - sc.ChangeState(SCE_ECL_WORD4); - } else if (keywords5.InList(s)) { - sc.ChangeState(SCE_ECL_WORD5); - } - else //Data types are of from KEYWORD## - { - int i = static_cast(strlen(s)) - 1; - while(i >= 0 && (isdigit(s[i]) || s[i] == '_')) - --i; - - char s2[1000]; - strncpy(s2, s, i + 1); - s2[i + 1] = 0; - if (keywords3.InList(s2)) { - sc.ChangeState(SCE_ECL_WORD3); - } - } - sc.SetState(SCE_ECL_DEFAULT); - } - break; - case SCE_ECL_PREPROCESSOR: - if (sc.atLineStart && !continuationLine) { - sc.SetState(SCE_ECL_DEFAULT); - } else if (stylingWithinPreprocessor) { - if (IsASpace(sc.ch)) { - sc.SetState(SCE_ECL_DEFAULT); - } - } else { - if (sc.Match('/', '*') || sc.Match('/', '/')) { - sc.SetState(SCE_ECL_DEFAULT); - } - } - break; - case SCE_ECL_COMMENT: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_ECL_DEFAULT); - } - break; - case SCE_ECL_COMMENTDOC: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_ECL_DEFAULT); - } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support - // Verify that we have the conditions to mark a comment-doc-keyword - if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) { - styleBeforeDCKeyword = SCE_ECL_COMMENTDOC; - sc.SetState(SCE_ECL_COMMENTDOCKEYWORD); - } - } - break; - case SCE_ECL_COMMENTLINE: - if (sc.atLineStart) { - sc.SetState(SCE_ECL_DEFAULT); - } - break; - case SCE_ECL_COMMENTLINEDOC: - if (sc.atLineStart) { - sc.SetState(SCE_ECL_DEFAULT); - } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support - // Verify that we have the conditions to mark a comment-doc-keyword - if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) { - styleBeforeDCKeyword = SCE_ECL_COMMENTLINEDOC; - sc.SetState(SCE_ECL_COMMENTDOCKEYWORD); - } - } - break; - case SCE_ECL_COMMENTDOCKEYWORD: - if ((styleBeforeDCKeyword == SCE_ECL_COMMENTDOC) && sc.Match('*', '/')) { - sc.ChangeState(SCE_ECL_COMMENTDOCKEYWORDERROR); - sc.Forward(); - sc.ForwardSetState(SCE_ECL_DEFAULT); - } else if (!setDoxygen.Contains(sc.ch)) { - char s[1000]; - sc.GetCurrentLowered(s, sizeof(s)); - if (!IsASpace(sc.ch) || !keywords6.InList(s+1)) { - sc.ChangeState(SCE_ECL_COMMENTDOCKEYWORDERROR); - } - sc.SetState(styleBeforeDCKeyword); - } - break; - case SCE_ECL_STRING: - if (sc.atLineEnd) { - sc.ChangeState(SCE_ECL_STRINGEOL); - } else if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\"') { - sc.ForwardSetState(SCE_ECL_DEFAULT); - } - break; - case SCE_ECL_CHARACTER: - if (sc.atLineEnd) { - sc.ChangeState(SCE_ECL_STRINGEOL); - } else if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\'') { - sc.ForwardSetState(SCE_ECL_DEFAULT); - } - break; - case SCE_ECL_REGEX: - if (sc.atLineStart) { - sc.SetState(SCE_ECL_DEFAULT); - } else if (sc.ch == '/') { - sc.Forward(); - while ((sc.ch < 0x80) && islower(sc.ch)) - sc.Forward(); // gobble regex flags - sc.SetState(SCE_ECL_DEFAULT); - } else if (sc.ch == '\\') { - // Gobble up the quoted character - if (sc.chNext == '\\' || sc.chNext == '/') { - sc.Forward(); - } - } - break; - case SCE_ECL_STRINGEOL: - if (sc.atLineStart) { - sc.SetState(SCE_ECL_DEFAULT); - } - break; - case SCE_ECL_VERBATIM: - if (sc.ch == '\"') { - if (sc.chNext == '\"') { - sc.Forward(); - } else { - sc.ForwardSetState(SCE_ECL_DEFAULT); - } - } - break; - case SCE_ECL_UUID: - if (sc.ch == '\r' || sc.ch == '\n' || sc.ch == ')') { - sc.SetState(SCE_ECL_DEFAULT); - } - break; - } - - // Determine if a new state should be entered. - Sci_Position lineCurrent = styler.GetLine(sc.currentPos); - int lineState = styler.GetLineState(lineCurrent); - if (sc.state == SCE_ECL_DEFAULT) { - if (lineState) { - sc.SetState(lineState); - } - else if (sc.Match('@', '\"')) { - sc.SetState(SCE_ECL_VERBATIM); - sc.Forward(); - } else if (setQualified.Contains(sc.ch) && sc.chNext == '\'') { - sc.SetState(SCE_ECL_CHARACTER); - sc.Forward(); - } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - if (lastWordWasUUID) { - sc.SetState(SCE_ECL_UUID); - lastWordWasUUID = false; - } else { - sc.SetState(SCE_ECL_NUMBER); - } - } else if (setWordStart.Contains(sc.ch) || (sc.ch == '@')) { - if (lastWordWasUUID) { - sc.SetState(SCE_ECL_UUID); - lastWordWasUUID = false; - } else { - sc.SetState(SCE_ECL_IDENTIFIER); - } - } else if (sc.Match('/', '*')) { - if (sc.Match("/**") || sc.Match("/*!")) { // Support of Qt/Doxygen doc. style - sc.SetState(SCE_ECL_COMMENTDOC); - } else { - sc.SetState(SCE_ECL_COMMENT); - } - sc.Forward(); // Eat the * so it isn't used for the end of the comment - } else if (sc.Match('/', '/')) { - if ((sc.Match("///") && !sc.Match("////")) || sc.Match("//!")) - // Support of Qt/Doxygen doc. style - sc.SetState(SCE_ECL_COMMENTLINEDOC); - else - sc.SetState(SCE_ECL_COMMENTLINE); - } else if (sc.ch == '/' && setOKBeforeRE.Contains(chPrevNonWhite)) { - sc.SetState(SCE_ECL_REGEX); // JavaScript's RegEx -// } else if (sc.ch == '\"') { -// sc.SetState(SCE_ECL_STRING); - } else if (sc.ch == '\'') { - sc.SetState(SCE_ECL_CHARACTER); - } else if (sc.ch == '#' && visibleChars == 0) { - // Preprocessor commands are alone on their line - sc.SetState(SCE_ECL_PREPROCESSOR); - // Skip whitespace between # and preprocessor word - do { - sc.Forward(); - } while ((sc.ch == ' ' || sc.ch == '\t') && sc.More()); - if (sc.atLineEnd) { - sc.SetState(SCE_ECL_DEFAULT); - } - } else if (isoperator(static_cast(sc.ch))) { - sc.SetState(SCE_ECL_OPERATOR); - } - } - - if (!IsASpace(sc.ch) && !IsSpaceEquiv(sc.state)) { - chPrevNonWhite = sc.ch; - visibleChars++; - } - continuationLine = false; - } - sc.Complete(); - -} - -static bool IsStreamCommentStyle(int style) { - return style == SCE_ECL_COMMENT || - style == SCE_ECL_COMMENTDOC || - style == SCE_ECL_COMMENTDOCKEYWORD || - style == SCE_ECL_COMMENTDOCKEYWORDERROR; -} - -static bool MatchNoCase(Accessor & styler, Sci_PositionU & pos, const char *s) { - Sci_Position i=0; - for (; *s; i++) { - char compare_char = tolower(*s); - char styler_char = tolower(styler.SafeGetCharAt(pos+i)); - if (compare_char != styler_char) - return false; - s++; - } - pos+=i-1; - return true; -} - - -// Store both the current line's fold level and the next lines in the -// level store to make it easy to pick up with each increment -// and to make it possible to fiddle the current level for "} else {". -static void FoldEclDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *[], Accessor &styler) { - bool foldComment = true; - bool foldPreprocessor = true; - bool foldCompact = true; - bool foldAtElse = true; - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelCurrent = SC_FOLDLEVELBASE; - if (lineCurrent > 0) - levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; - int levelMinCurrent = levelCurrent; - int levelNext = levelCurrent; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (foldComment && IsStreamCommentStyle(style)) { - if (!IsStreamCommentStyle(stylePrev) && (stylePrev != SCE_ECL_COMMENTLINEDOC)) { - levelNext++; - } else if (!IsStreamCommentStyle(styleNext) && (styleNext != SCE_ECL_COMMENTLINEDOC) && !atEOL) { - // Comments don't end at end of line and the next character may be unstyled. - levelNext--; - } - } - if (foldComment && (style == SCE_ECL_COMMENTLINE)) { - if ((ch == '/') && (chNext == '/')) { - char chNext2 = styler.SafeGetCharAt(i + 2); - if (chNext2 == '{') { - levelNext++; - } else if (chNext2 == '}') { - levelNext--; - } - } - } - if (foldPreprocessor && (style == SCE_ECL_PREPROCESSOR)) { - if (ch == '#') { - Sci_PositionU j = i + 1; - while ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { - j++; - } - if (MatchNoCase(styler, j, "region") || MatchNoCase(styler, j, "if")) { - levelNext++; - } else if (MatchNoCase(styler, j, "endregion") || MatchNoCase(styler, j, "end")) { - levelNext--; - } - } - } - if (style == SCE_ECL_OPERATOR) { - if (ch == '{') { - // Measure the minimum before a '{' to allow - // folding on "} else {" - if (levelMinCurrent > levelNext) { - levelMinCurrent = levelNext; - } - levelNext++; - } else if (ch == '}') { - levelNext--; - } - } - if (style == SCE_ECL_WORD2) { - if (MatchNoCase(styler, i, "record") || MatchNoCase(styler, i, "transform") || MatchNoCase(styler, i, "type") || MatchNoCase(styler, i, "function") || - MatchNoCase(styler, i, "module") || MatchNoCase(styler, i, "service") || MatchNoCase(styler, i, "interface") || MatchNoCase(styler, i, "ifblock") || - MatchNoCase(styler, i, "macro") || MatchNoCase(styler, i, "beginc++")) { - levelNext++; - } else if (MatchNoCase(styler, i, "endmacro") || MatchNoCase(styler, i, "endc++") || MatchNoCase(styler, i, "end")) { - levelNext--; - } - } - if (atEOL || (i == endPos-1)) { - int levelUse = levelCurrent; - if (foldAtElse) { - levelUse = levelMinCurrent; - } - int lev = levelUse | levelNext << 16; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if (levelUse < levelNext) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelCurrent = levelNext; - levelMinCurrent = levelCurrent; - if (atEOL && (i == static_cast(styler.Length()-1))) { - // There is an empty line at end of file so give it same level and empty - styler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG); - } - visibleChars = 0; - } - if (!IsASpace(ch)) - visibleChars++; - } -} - -static const char * const EclWordListDesc[] = { - "Keywords", - 0 -}; - -LexerModule lmECL( - SCLEX_ECL, - ColouriseEclDoc, - "ecl", - FoldEclDoc, - EclWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEDIFACT.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEDIFACT.cpp deleted file mode 100644 index 6da0759a0..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEDIFACT.cpp +++ /dev/null @@ -1,336 +0,0 @@ -// Scintilla Lexer for EDIFACT -// Written by Iain Clarke, IMCSoft & Inobiz AB. -// EDIFACT documented here: https://www.unece.org/cefact/edifact/welcome.html -// and more readably here: https://en.wikipedia.org/wiki/EDIFACT -// This code is subject to the same license terms as the rest of the scintilla project: -// The License.txt file describes the conditions under which this software may be distributed. -// - -// Header order must match order in scripts/HeaderOrder.txt -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "LexAccessor.h" -#include "LexerModule.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - -class LexerEDIFACT : public DefaultLexer -{ -public: - LexerEDIFACT(); - virtual ~LexerEDIFACT() {} // virtual destructor, as we inherit from ILexer - - static ILexer *Factory() { - return new LexerEDIFACT; - } - - int SCI_METHOD Version() const override - { - return lvOriginal; - } - void SCI_METHOD Release() override - { - delete this; - } - - const char * SCI_METHOD PropertyNames() override - { - return "fold\nlexer.edifact.highlight.un.all"; - } - int SCI_METHOD PropertyType(const char *) override - { - return SC_TYPE_BOOLEAN; // Only one property! - } - const char * SCI_METHOD DescribeProperty(const char *name) override - { - if (!strcmp(name, "fold")) - return "Whether to apply folding to document or not"; - if (!strcmp(name, "lexer.edifact.highlight.un.all")) - return "Whether to apply UN* highlighting to all UN segments, or just to UNH"; - return NULL; - } - - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override - { - if (!strcmp(key, "fold")) - { - m_bFold = strcmp(val, "0") ? true : false; - return 0; - } - if (!strcmp(key, "lexer.edifact.highlight.un.all")) // GetProperty - { - m_bHighlightAllUN = strcmp(val, "0") ? true : false; - return 0; - } - return -1; - } - const char * SCI_METHOD DescribeWordListSets() override - { - return NULL; - } - Sci_Position SCI_METHOD WordListSet(int, const char *) override - { - return -1; - } - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; - void * SCI_METHOD PrivateCall(int, void *) override - { - return NULL; - } - -protected: - Sci_Position InitialiseFromUNA(IDocument *pAccess, Sci_PositionU MaxLength); - Sci_Position FindPreviousEnd(IDocument *pAccess, Sci_Position startPos) const; - Sci_Position ForwardPastWhitespace(IDocument *pAccess, Sci_Position startPos, Sci_Position MaxLength) const; - int DetectSegmentHeader(char SegmentHeader[3]) const; - - bool m_bFold; - - // property lexer.edifact.highlight.un.all - // Set to 0 to highlight only UNA segments, or 1 to highlight all UNx segments. - bool m_bHighlightAllUN; - - char m_chComponent; - char m_chData; - char m_chDecimal; - char m_chRelease; - char m_chSegment; -}; - -LexerModule lmEDIFACT(SCLEX_EDIFACT, LexerEDIFACT::Factory, "edifact"); - -/////////////////////////////////////////////////////////////////////////////// - - - -/////////////////////////////////////////////////////////////////////////////// - -LexerEDIFACT::LexerEDIFACT() -{ - m_bFold = false; - m_bHighlightAllUN = false; - m_chComponent = ':'; - m_chData = '+'; - m_chDecimal = '.'; - m_chRelease = '?'; - m_chSegment = '\''; -} - -void LexerEDIFACT::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess) -{ - Sci_PositionU posFinish = startPos + lengthDoc; - InitialiseFromUNA(pAccess, posFinish); - - // Look backwards for a ' or a document beginning - Sci_PositionU posCurrent = FindPreviousEnd(pAccess, startPos); - // And jump past the ' if this was not the beginning of the document - if (posCurrent != 0) - posCurrent++; - - // Style buffer, so we're not issuing loads of notifications - LexAccessor styler (pAccess); - pAccess->StartStyling(posCurrent, '\377'); - styler.StartSegment(posCurrent); - Sci_Position posSegmentStart = -1; - - while ((posCurrent < posFinish) && (posSegmentStart == -1)) - { - posCurrent = ForwardPastWhitespace(pAccess, posCurrent, posFinish); - // Mark whitespace as default - styler.ColourTo(posCurrent - 1, SCE_EDI_DEFAULT); - if (posCurrent >= posFinish) - break; - - // Does is start with 3 charaters? ie, UNH - char SegmentHeader[4] = { 0 }; - pAccess->GetCharRange(SegmentHeader, posCurrent, 3); - - int SegmentStyle = DetectSegmentHeader(SegmentHeader); - if (SegmentStyle == SCE_EDI_BADSEGMENT) - break; - if (SegmentStyle == SCE_EDI_UNA) - { - posCurrent += 9; - styler.ColourTo(posCurrent - 1, SCE_EDI_UNA); // UNA - continue; - } - posSegmentStart = posCurrent; - posCurrent += 3; - - styler.ColourTo(posCurrent - 1, SegmentStyle); // UNH etc - - // Colour in the rest of the segment - for (char c; posCurrent < posFinish; posCurrent++) - { - pAccess->GetCharRange(&c, posCurrent, 1); - - if (c == m_chRelease) // ? escape character, check first, in case of ?' - posCurrent++; - else if (c == m_chSegment) // ' - { - // Make sure the whole segment is on one line. styler won't let us go back in time, so we'll settle for marking the ' as bad. - Sci_Position lineSegmentStart = pAccess->LineFromPosition(posSegmentStart); - Sci_Position lineSegmentEnd = pAccess->LineFromPosition(posCurrent); - if (lineSegmentStart == lineSegmentEnd) - styler.ColourTo(posCurrent, SCE_EDI_SEGMENTEND); - else - styler.ColourTo(posCurrent, SCE_EDI_BADSEGMENT); - posSegmentStart = -1; - posCurrent++; - break; - } - else if (c == m_chComponent) // : - styler.ColourTo(posCurrent, SCE_EDI_SEP_COMPOSITE); - else if (c == m_chData) // + - styler.ColourTo(posCurrent, SCE_EDI_SEP_ELEMENT); - else - styler.ColourTo(posCurrent, SCE_EDI_DEFAULT); - } - } - styler.Flush(); - - if (posSegmentStart == -1) - return; - - pAccess->StartStyling(posSegmentStart, -1); - pAccess->SetStyleFor(posFinish - posSegmentStart, SCE_EDI_BADSEGMENT); -} - -void LexerEDIFACT::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess) -{ - if (!m_bFold) - return; - - // Fold at UNx lines. ie, UNx segments = 0, other segments = 1. - // There's no sub folding, so we can be quite simple. - Sci_Position endPos = startPos + lengthDoc; - char SegmentHeader[4] = { 0 }; - - int iIndentPrevious = 0; - Sci_Position lineLast = pAccess->LineFromPosition(endPos); - - for (Sci_Position lineCurrent = pAccess->LineFromPosition(startPos); lineCurrent <= lineLast; lineCurrent++) - { - Sci_Position posLineStart = pAccess->LineStart(lineCurrent); - posLineStart = ForwardPastWhitespace(pAccess, posLineStart, endPos); - Sci_Position lineDataStart = pAccess->LineFromPosition(posLineStart); - // Fill in whitespace lines? - for (; lineCurrent < lineDataStart; lineCurrent++) - pAccess->SetLevel(lineCurrent, SC_FOLDLEVELBASE | SC_FOLDLEVELWHITEFLAG | iIndentPrevious); - pAccess->GetCharRange(SegmentHeader, posLineStart, 3); - //if (DetectSegmentHeader(SegmentHeader) == SCE_EDI_BADSEGMENT) // Abort if this is not a proper segment header - - int level = 0; - if (memcmp(SegmentHeader, "UNH", 3) == 0) // UNH starts blocks - level = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; - // Check for UNA,B and Z. All others are inside messages - else if (!memcmp(SegmentHeader, "UNA", 3) || !memcmp(SegmentHeader, "UNB", 3) || !memcmp(SegmentHeader, "UNZ", 3)) - level = SC_FOLDLEVELBASE; - else - level = SC_FOLDLEVELBASE | 1; - pAccess->SetLevel(lineCurrent, level); - iIndentPrevious = level & SC_FOLDLEVELNUMBERMASK; - } -} - -Sci_Position LexerEDIFACT::InitialiseFromUNA(IDocument *pAccess, Sci_PositionU MaxLength) -{ - MaxLength -= 9; // drop 9 chars, to give us room for UNA:+.? ' - - Sci_PositionU startPos = 0; - startPos += ForwardPastWhitespace(pAccess, 0, MaxLength); - if (startPos < MaxLength) - { - char bufUNA[9]; - pAccess->GetCharRange(bufUNA, startPos, 9); - - // Check it's UNA segment - if (!memcmp(bufUNA, "UNA", 3)) - { - m_chComponent = bufUNA[3]; - m_chData = bufUNA[4]; - m_chDecimal = bufUNA[5]; - m_chRelease = bufUNA[6]; - // bufUNA [7] should be space - reserved. - m_chSegment = bufUNA[8]; - - return 0; // success! - } - } - - // We failed to find a UNA, so drop to defaults - m_chComponent = ':'; - m_chData = '+'; - m_chDecimal = '.'; - m_chRelease = '?'; - m_chSegment = '\''; - - return -1; -} - -Sci_Position LexerEDIFACT::ForwardPastWhitespace(IDocument *pAccess, Sci_Position startPos, Sci_Position MaxLength) const -{ - char c; - - while (startPos < MaxLength) - { - pAccess->GetCharRange(&c, startPos, 1); - switch (c) - { - case '\t': - case '\r': - case '\n': - case ' ': - break; - default: - return startPos; - } - - startPos++; - } - - return MaxLength; -} - -int LexerEDIFACT::DetectSegmentHeader(char SegmentHeader[3]) const -{ - if ( - SegmentHeader[0] < 'A' || SegmentHeader[0] > 'Z' || - SegmentHeader[1] < 'A' || SegmentHeader[1] > 'Z' || - SegmentHeader[2] < 'A' || SegmentHeader[2] > 'Z') - return SCE_EDI_BADSEGMENT; - - if (!memcmp(SegmentHeader, "UNA", 3)) - return SCE_EDI_UNA; - - if (m_bHighlightAllUN && !memcmp(SegmentHeader, "UN", 2)) - return SCE_EDI_UNH; - else if (memcmp(SegmentHeader, "UNH", 3) == 0) - return SCE_EDI_UNH; - - return SCE_EDI_SEGMENTSTART; -} - -// Look backwards for a ' or a document beginning -Sci_Position LexerEDIFACT::FindPreviousEnd(IDocument *pAccess, Sci_Position startPos) const -{ - for (char c; startPos > 0; startPos--) - { - pAccess->GetCharRange(&c, startPos, 1); - if (c == m_chSegment) - return startPos; - } - // We didn't find a ', so just go with the beginning - return 0; -} - - diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEScript.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEScript.cpp deleted file mode 100644 index 0cba29858..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEScript.cpp +++ /dev/null @@ -1,274 +0,0 @@ -// Scintilla source code edit control -/** @file LexESCRIPT.cxx - ** Lexer for ESCRIPT - **/ -// Copyright 2003 by Patrizio Bekerle (patrizio@bekerle.com) - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_'); -} - -static inline bool IsAWordStart(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_'); -} - - - -static void ColouriseESCRIPTDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; - - // Do not leak onto next line - /*if (initStyle == SCE_ESCRIPT_STRINGEOL) - initStyle = SCE_ESCRIPT_DEFAULT;*/ - - StyleContext sc(startPos, length, initStyle, styler); - - bool caseSensitive = styler.GetPropertyInt("escript.case.sensitive", 0) != 0; - - for (; sc.More(); sc.Forward()) { - - /*if (sc.atLineStart && (sc.state == SCE_ESCRIPT_STRING)) { - // Prevent SCE_ESCRIPT_STRINGEOL from leaking back to previous line - sc.SetState(SCE_ESCRIPT_STRING); - }*/ - - // Handle line continuation generically. - if (sc.ch == '\\') { - if (sc.chNext == '\n' || sc.chNext == '\r') { - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - sc.Forward(); - } - continue; - } - } - - // Determine if the current state should terminate. - if (sc.state == SCE_ESCRIPT_OPERATOR || sc.state == SCE_ESCRIPT_BRACE) { - sc.SetState(SCE_ESCRIPT_DEFAULT); - } else if (sc.state == SCE_ESCRIPT_NUMBER) { - if (!IsADigit(sc.ch) || sc.ch != '.') { - sc.SetState(SCE_ESCRIPT_DEFAULT); - } - } else if (sc.state == SCE_ESCRIPT_IDENTIFIER) { - if (!IsAWordChar(sc.ch) || (sc.ch == '.')) { - char s[100]; - if (caseSensitive) { - sc.GetCurrent(s, sizeof(s)); - } else { - sc.GetCurrentLowered(s, sizeof(s)); - } - -// sc.GetCurrentLowered(s, sizeof(s)); - - if (keywords.InList(s)) { - sc.ChangeState(SCE_ESCRIPT_WORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_ESCRIPT_WORD2); - } else if (keywords3.InList(s)) { - sc.ChangeState(SCE_ESCRIPT_WORD3); - // sc.state = SCE_ESCRIPT_IDENTIFIER; - } - sc.SetState(SCE_ESCRIPT_DEFAULT); - } - } else if (sc.state == SCE_ESCRIPT_COMMENT) { - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_ESCRIPT_DEFAULT); - } - } else if (sc.state == SCE_ESCRIPT_COMMENTDOC) { - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(SCE_ESCRIPT_DEFAULT); - } - } else if (sc.state == SCE_ESCRIPT_COMMENTLINE) { - if (sc.atLineEnd) { - sc.SetState(SCE_ESCRIPT_DEFAULT); - } - } else if (sc.state == SCE_ESCRIPT_STRING) { - if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\"') { - sc.ForwardSetState(SCE_ESCRIPT_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_ESCRIPT_DEFAULT) { - if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_ESCRIPT_NUMBER); - } else if (IsAWordStart(sc.ch) || (sc.ch == '#')) { - sc.SetState(SCE_ESCRIPT_IDENTIFIER); - } else if (sc.Match('/', '*')) { - sc.SetState(SCE_ESCRIPT_COMMENT); - sc.Forward(); // Eat the * so it isn't used for the end of the comment - } else if (sc.Match('/', '/')) { - sc.SetState(SCE_ESCRIPT_COMMENTLINE); - } else if (sc.ch == '\"') { - sc.SetState(SCE_ESCRIPT_STRING); - //} else if (isoperator(static_cast(sc.ch))) { - } else if (sc.ch == '+' || sc.ch == '-' || sc.ch == '*' || sc.ch == '/' || sc.ch == '=' || sc.ch == '<' || sc.ch == '>' || sc.ch == '&' || sc.ch == '|' || sc.ch == '!' || sc.ch == '?' || sc.ch == ':') { - sc.SetState(SCE_ESCRIPT_OPERATOR); - } else if (sc.ch == '{' || sc.ch == '}') { - sc.SetState(SCE_ESCRIPT_BRACE); - } - } - - } - sc.Complete(); -} - - -static int classifyFoldPointESCRIPT(const char* s, const char* prevWord) { - int lev = 0; - if (strcmp(prevWord, "end") == 0) return lev; - if ((strcmp(prevWord, "else") == 0 && strcmp(s, "if") == 0) || strcmp(s, "elseif") == 0) - return -1; - - if (strcmp(s, "for") == 0 || strcmp(s, "foreach") == 0 - || strcmp(s, "program") == 0 || strcmp(s, "function") == 0 - || strcmp(s, "while") == 0 || strcmp(s, "case") == 0 - || strcmp(s, "if") == 0 ) { - lev = 1; - } else if ( strcmp(s, "endfor") == 0 || strcmp(s, "endforeach") == 0 - || strcmp(s, "endprogram") == 0 || strcmp(s, "endfunction") == 0 - || strcmp(s, "endwhile") == 0 || strcmp(s, "endcase") == 0 - || strcmp(s, "endif") == 0 ) { - lev = -1; - } - - return lev; -} - - -static bool IsStreamCommentStyle(int style) { - return style == SCE_ESCRIPT_COMMENT || - style == SCE_ESCRIPT_COMMENTDOC || - style == SCE_ESCRIPT_COMMENTLINE; -} - -static void FoldESCRIPTDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) { - //~ bool foldComment = styler.GetPropertyInt("fold.comment") != 0; - // Do not know how to fold the comment at the moment. - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - bool foldComment = true; - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - - Sci_Position lastStart = 0; - char prevWord[32] = ""; - - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - - - if (foldComment && IsStreamCommentStyle(style)) { - if (!IsStreamCommentStyle(stylePrev)) { - levelCurrent++; - } else if (!IsStreamCommentStyle(styleNext) && !atEOL) { - // Comments don't end at end of line and the next character may be unstyled. - levelCurrent--; - } - } - - if (foldComment && (style == SCE_ESCRIPT_COMMENTLINE)) { - if ((ch == '/') && (chNext == '/')) { - char chNext2 = styler.SafeGetCharAt(i + 2); - if (chNext2 == '{') { - levelCurrent++; - } else if (chNext2 == '}') { - levelCurrent--; - } - } - } - - if (stylePrev == SCE_ESCRIPT_DEFAULT && style == SCE_ESCRIPT_WORD3) - { - // Store last word start point. - lastStart = i; - } - - if (style == SCE_ESCRIPT_WORD3) { - if(iswordchar(ch) && !iswordchar(chNext)) { - char s[32]; - Sci_PositionU j; - for(j = 0; ( j < 31 ) && ( j < i-lastStart+1 ); j++) { - s[j] = static_cast(tolower(styler[lastStart + j])); - } - s[j] = '\0'; - levelCurrent += classifyFoldPointESCRIPT(s, prevWord); - strcpy(prevWord, s); - } - } - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - strcpy(prevWord, ""); - } - - if (!isspacechar(ch)) - visibleChars++; - } - - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - - - -static const char * const ESCRIPTWordLists[] = { - "Primary keywords and identifiers", - "Intrinsic functions", - "Extended and user defined functions", - 0, -}; - -LexerModule lmESCRIPT(SCLEX_ESCRIPT, ColouriseESCRIPTDoc, "escript", FoldESCRIPTDoc, ESCRIPTWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEiffel.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEiffel.cpp deleted file mode 100644 index d1d42a960..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexEiffel.cpp +++ /dev/null @@ -1,239 +0,0 @@ -// Scintilla source code edit control -/** @file LexEiffel.cxx - ** Lexer for Eiffel. - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool isEiffelOperator(unsigned int ch) { - // '.' left out as it is used to make up numbers - return ch == '*' || ch == '/' || ch == '\\' || ch == '-' || ch == '+' || - ch == '(' || ch == ')' || ch == '=' || - ch == '{' || ch == '}' || ch == '~' || - ch == '[' || ch == ']' || ch == ';' || - ch == '<' || ch == '>' || ch == ',' || - ch == '.' || ch == '^' || ch == '%' || ch == ':' || - ch == '!' || ch == '@' || ch == '?'; -} - -static inline bool IsAWordChar(unsigned int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_'); -} - -static inline bool IsAWordStart(unsigned int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_'); -} - -static void ColouriseEiffelDoc(Sci_PositionU startPos, - Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - - if (sc.state == SCE_EIFFEL_STRINGEOL) { - if (sc.ch != '\r' && sc.ch != '\n') { - sc.SetState(SCE_EIFFEL_DEFAULT); - } - } else if (sc.state == SCE_EIFFEL_OPERATOR) { - sc.SetState(SCE_EIFFEL_DEFAULT); - } else if (sc.state == SCE_EIFFEL_WORD) { - if (!IsAWordChar(sc.ch)) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - if (!keywords.InList(s)) { - sc.ChangeState(SCE_EIFFEL_IDENTIFIER); - } - sc.SetState(SCE_EIFFEL_DEFAULT); - } - } else if (sc.state == SCE_EIFFEL_NUMBER) { - if (!IsAWordChar(sc.ch)) { - sc.SetState(SCE_EIFFEL_DEFAULT); - } - } else if (sc.state == SCE_EIFFEL_COMMENTLINE) { - if (sc.ch == '\r' || sc.ch == '\n') { - sc.SetState(SCE_EIFFEL_DEFAULT); - } - } else if (sc.state == SCE_EIFFEL_STRING) { - if (sc.ch == '%') { - sc.Forward(); - } else if (sc.ch == '\"') { - sc.Forward(); - sc.SetState(SCE_EIFFEL_DEFAULT); - } - } else if (sc.state == SCE_EIFFEL_CHARACTER) { - if (sc.ch == '\r' || sc.ch == '\n') { - sc.SetState(SCE_EIFFEL_STRINGEOL); - } else if (sc.ch == '%') { - sc.Forward(); - } else if (sc.ch == '\'') { - sc.Forward(); - sc.SetState(SCE_EIFFEL_DEFAULT); - } - } - - if (sc.state == SCE_EIFFEL_DEFAULT) { - if (sc.ch == '-' && sc.chNext == '-') { - sc.SetState(SCE_EIFFEL_COMMENTLINE); - } else if (sc.ch == '\"') { - sc.SetState(SCE_EIFFEL_STRING); - } else if (sc.ch == '\'') { - sc.SetState(SCE_EIFFEL_CHARACTER); - } else if (IsADigit(sc.ch) || (sc.ch == '.')) { - sc.SetState(SCE_EIFFEL_NUMBER); - } else if (IsAWordStart(sc.ch)) { - sc.SetState(SCE_EIFFEL_WORD); - } else if (isEiffelOperator(sc.ch)) { - sc.SetState(SCE_EIFFEL_OPERATOR); - } - } - } - sc.Complete(); -} - -static bool IsEiffelComment(Accessor &styler, Sci_Position pos, Sci_Position len) { - return len>1 && styler[pos]=='-' && styler[pos+1]=='-'; -} - -static void FoldEiffelDocIndent(Sci_PositionU startPos, Sci_Position length, int, - WordList *[], Accessor &styler) { - Sci_Position lengthDoc = startPos + length; - - // Backtrack to previous line in case need to fix its fold status - Sci_Position lineCurrent = styler.GetLine(startPos); - if (startPos > 0) { - if (lineCurrent > 0) { - lineCurrent--; - startPos = styler.LineStart(lineCurrent); - } - } - int spaceFlags = 0; - int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsEiffelComment); - char chNext = styler[startPos]; - for (Sci_Position i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == lengthDoc)) { - int lev = indentCurrent; - int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags, IsEiffelComment); - if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) { - // Only non whitespace lines can be headers - if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) { - lev |= SC_FOLDLEVELHEADERFLAG; - } else if (indentNext & SC_FOLDLEVELWHITEFLAG) { - // Line after is blank so check the next - maybe should continue further? - int spaceFlags2 = 0; - int indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2, IsEiffelComment); - if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) { - lev |= SC_FOLDLEVELHEADERFLAG; - } - } - } - indentCurrent = indentNext; - styler.SetLevel(lineCurrent, lev); - lineCurrent++; - } - } -} - -static void FoldEiffelDocKeyWords(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], - Accessor &styler) { - Sci_PositionU lengthDoc = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int stylePrev = 0; - int styleNext = styler.StyleAt(startPos); - // lastDeferred should be determined by looking back to last keyword in case - // the "deferred" is on a line before "class" - bool lastDeferred = false; - for (Sci_PositionU i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if ((stylePrev != SCE_EIFFEL_WORD) && (style == SCE_EIFFEL_WORD)) { - char s[20]; - Sci_PositionU j = 0; - while ((j < (sizeof(s) - 1)) && (iswordchar(styler[i + j]))) { - s[j] = styler[i + j]; - j++; - } - s[j] = '\0'; - - if ( - (strcmp(s, "check") == 0) || - (strcmp(s, "debug") == 0) || - (strcmp(s, "deferred") == 0) || - (strcmp(s, "do") == 0) || - (strcmp(s, "from") == 0) || - (strcmp(s, "if") == 0) || - (strcmp(s, "inspect") == 0) || - (strcmp(s, "once") == 0) - ) - levelCurrent++; - if (!lastDeferred && (strcmp(s, "class") == 0)) - levelCurrent++; - if (strcmp(s, "end") == 0) - levelCurrent--; - lastDeferred = strcmp(s, "deferred") == 0; - } - - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - if (!isspacechar(ch)) - visibleChars++; - stylePrev = style; - } - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -static const char * const eiffelWordListDesc[] = { - "Keywords", - 0 -}; - -LexerModule lmEiffel(SCLEX_EIFFEL, ColouriseEiffelDoc, "eiffel", FoldEiffelDocIndent, eiffelWordListDesc); -LexerModule lmEiffelkw(SCLEX_EIFFELKW, ColouriseEiffelDoc, "eiffelkw", FoldEiffelDocKeyWords, eiffelWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexErlang.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexErlang.cpp deleted file mode 100644 index 4ca5962c3..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexErlang.cpp +++ /dev/null @@ -1,624 +0,0 @@ -// Scintilla source code edit control -// Encoding: UTF-8 -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. -/** @file LexErlang.cxx - ** Lexer for Erlang. - ** Enhanced by Etienne 'Lenain' Girondel (lenaing@gmail.com) - ** Originally wrote by Peter-Henry Mander, - ** based on Matlab lexer by José Fonseca. - **/ - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static int is_radix(int radix, int ch) { - int digit; - - if (36 < radix || 2 > radix) - return 0; - - if (isdigit(ch)) { - digit = ch - '0'; - } else if (isalnum(ch)) { - digit = toupper(ch) - 'A' + 10; - } else { - return 0; - } - - return (digit < radix); -} - -typedef enum { - STATE_NULL, - COMMENT, - COMMENT_FUNCTION, - COMMENT_MODULE, - COMMENT_DOC, - COMMENT_DOC_MACRO, - ATOM_UNQUOTED, - ATOM_QUOTED, - NODE_NAME_UNQUOTED, - NODE_NAME_QUOTED, - MACRO_START, - MACRO_UNQUOTED, - MACRO_QUOTED, - RECORD_START, - RECORD_UNQUOTED, - RECORD_QUOTED, - NUMERAL_START, - NUMERAL_BASE_VALUE, - NUMERAL_FLOAT, - NUMERAL_EXPONENT, - PREPROCESSOR -} atom_parse_state_t; - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (ch != ' ') && (isalnum(ch) || ch == '_'); -} - -static void ColouriseErlangDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) { - - StyleContext sc(startPos, length, initStyle, styler); - WordList &reservedWords = *keywordlists[0]; - WordList &erlangBIFs = *keywordlists[1]; - WordList &erlangPreproc = *keywordlists[2]; - WordList &erlangModulesAtt = *keywordlists[3]; - WordList &erlangDoc = *keywordlists[4]; - WordList &erlangDocMacro = *keywordlists[5]; - int radix_digits = 0; - int exponent_digits = 0; - atom_parse_state_t parse_state = STATE_NULL; - atom_parse_state_t old_parse_state = STATE_NULL; - bool to_late_to_comment = false; - char cur[100]; - int old_style = SCE_ERLANG_DEFAULT; - - styler.StartAt(startPos); - - for (; sc.More(); sc.Forward()) { - int style = SCE_ERLANG_DEFAULT; - if (STATE_NULL != parse_state) { - - switch (parse_state) { - - case STATE_NULL : sc.SetState(SCE_ERLANG_DEFAULT); break; - - /* COMMENTS ------------------------------------------------------*/ - case COMMENT : { - if (sc.ch != '%') { - to_late_to_comment = true; - } else if (!to_late_to_comment && sc.ch == '%') { - // Switch to comment level 2 (Function) - sc.ChangeState(SCE_ERLANG_COMMENT_FUNCTION); - old_style = SCE_ERLANG_COMMENT_FUNCTION; - parse_state = COMMENT_FUNCTION; - sc.Forward(); - } - } - // V--- Falling through! - // Falls through. - case COMMENT_FUNCTION : { - if (sc.ch != '%') { - to_late_to_comment = true; - } else if (!to_late_to_comment && sc.ch == '%') { - // Switch to comment level 3 (Module) - sc.ChangeState(SCE_ERLANG_COMMENT_MODULE); - old_style = SCE_ERLANG_COMMENT_MODULE; - parse_state = COMMENT_MODULE; - sc.Forward(); - } - } - // V--- Falling through! - // Falls through. - case COMMENT_MODULE : { - if (parse_state != COMMENT) { - // Search for comment documentation - if (sc.chNext == '@') { - old_parse_state = parse_state; - parse_state = ('{' == sc.ch) - ? COMMENT_DOC_MACRO - : COMMENT_DOC; - sc.ForwardSetState(sc.state); - } - } - - // All comments types fall here. - if (sc.atLineEnd) { - to_late_to_comment = false; - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - case COMMENT_DOC : - // V--- Falling through! - case COMMENT_DOC_MACRO : { - - if (!isalnum(sc.ch)) { - // Try to match documentation comment - sc.GetCurrent(cur, sizeof(cur)); - - if (parse_state == COMMENT_DOC_MACRO - && erlangDocMacro.InList(cur)) { - sc.ChangeState(SCE_ERLANG_COMMENT_DOC_MACRO); - while (sc.ch != '}' && !sc.atLineEnd) - sc.Forward(); - } else if (erlangDoc.InList(cur)) { - sc.ChangeState(SCE_ERLANG_COMMENT_DOC); - } else { - sc.ChangeState(old_style); - } - - // Switch back to old state - sc.SetState(old_style); - parse_state = old_parse_state; - } - - if (sc.atLineEnd) { - to_late_to_comment = false; - sc.ChangeState(old_style); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - /* -------------------------------------------------------------- */ - /* Atoms ---------------------------------------------------------*/ - case ATOM_UNQUOTED : { - if ('@' == sc.ch){ - parse_state = NODE_NAME_UNQUOTED; - } else if (sc.ch == ':') { - // Searching for module name - if (sc.chNext == ' ') { - // error - sc.ChangeState(SCE_ERLANG_UNKNOWN); - parse_state = STATE_NULL; - } else { - sc.Forward(); - if (isalnum(sc.ch)) { - sc.GetCurrent(cur, sizeof(cur)); - sc.ChangeState(SCE_ERLANG_MODULES); - sc.SetState(SCE_ERLANG_MODULES); - } - } - } else if (!IsAWordChar(sc.ch)) { - - sc.GetCurrent(cur, sizeof(cur)); - if (reservedWords.InList(cur)) { - style = SCE_ERLANG_KEYWORD; - } else if (erlangBIFs.InList(cur) - && strcmp(cur,"erlang:")){ - style = SCE_ERLANG_BIFS; - } else if (sc.ch == '(' || '/' == sc.ch){ - style = SCE_ERLANG_FUNCTION_NAME; - } else { - style = SCE_ERLANG_ATOM; - } - - sc.ChangeState(style); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - - } break; - - case ATOM_QUOTED : { - if ( '@' == sc.ch ){ - parse_state = NODE_NAME_QUOTED; - } else if ('\'' == sc.ch && '\\' != sc.chPrev) { - sc.ChangeState(SCE_ERLANG_ATOM); - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - /* -------------------------------------------------------------- */ - /* Node names ----------------------------------------------------*/ - case NODE_NAME_UNQUOTED : { - if ('@' == sc.ch) { - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } else if (!IsAWordChar(sc.ch)) { - sc.ChangeState(SCE_ERLANG_NODE_NAME); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - case NODE_NAME_QUOTED : { - if ('@' == sc.ch) { - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } else if ('\'' == sc.ch && '\\' != sc.chPrev) { - sc.ChangeState(SCE_ERLANG_NODE_NAME_QUOTED); - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - /* -------------------------------------------------------------- */ - /* Records -------------------------------------------------------*/ - case RECORD_START : { - if ('\'' == sc.ch) { - parse_state = RECORD_QUOTED; - } else if (isalpha(sc.ch) && islower(sc.ch)) { - parse_state = RECORD_UNQUOTED; - } else { // error - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - case RECORD_UNQUOTED : { - if (!IsAWordChar(sc.ch)) { - sc.ChangeState(SCE_ERLANG_RECORD); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - case RECORD_QUOTED : { - if ('\'' == sc.ch && '\\' != sc.chPrev) { - sc.ChangeState(SCE_ERLANG_RECORD_QUOTED); - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - /* -------------------------------------------------------------- */ - /* Macros --------------------------------------------------------*/ - case MACRO_START : { - if ('\'' == sc.ch) { - parse_state = MACRO_QUOTED; - } else if (isalpha(sc.ch)) { - parse_state = MACRO_UNQUOTED; - } else { // error - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - case MACRO_UNQUOTED : { - if (!IsAWordChar(sc.ch)) { - sc.ChangeState(SCE_ERLANG_MACRO); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - case MACRO_QUOTED : { - if ('\'' == sc.ch && '\\' != sc.chPrev) { - sc.ChangeState(SCE_ERLANG_MACRO_QUOTED); - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - /* -------------------------------------------------------------- */ - /* Numerics ------------------------------------------------------*/ - /* Simple integer */ - case NUMERAL_START : { - if (isdigit(sc.ch)) { - radix_digits *= 10; - radix_digits += sc.ch - '0'; // Assuming ASCII here! - } else if ('#' == sc.ch) { - if (2 > radix_digits || 36 < radix_digits) { - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } else { - parse_state = NUMERAL_BASE_VALUE; - } - } else if ('.' == sc.ch && isdigit(sc.chNext)) { - radix_digits = 0; - parse_state = NUMERAL_FLOAT; - } else if ('e' == sc.ch || 'E' == sc.ch) { - exponent_digits = 0; - parse_state = NUMERAL_EXPONENT; - } else { - radix_digits = 0; - sc.ChangeState(SCE_ERLANG_NUMBER); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - /* Integer in other base than 10 (x#yyy) */ - case NUMERAL_BASE_VALUE : { - if (!is_radix(radix_digits,sc.ch)) { - radix_digits = 0; - - if (!isalnum(sc.ch)) - sc.ChangeState(SCE_ERLANG_NUMBER); - - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - /* Float (x.yyy) */ - case NUMERAL_FLOAT : { - if ('e' == sc.ch || 'E' == sc.ch) { - exponent_digits = 0; - parse_state = NUMERAL_EXPONENT; - } else if (!isdigit(sc.ch)) { - sc.ChangeState(SCE_ERLANG_NUMBER); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - /* Exponent, either integer or float (xEyy, x.yyEzzz) */ - case NUMERAL_EXPONENT : { - if (('-' == sc.ch || '+' == sc.ch) - && (isdigit(sc.chNext))) { - sc.Forward(); - } else if (!isdigit(sc.ch)) { - if (0 < exponent_digits) - sc.ChangeState(SCE_ERLANG_NUMBER); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } else { - ++exponent_digits; - } - } break; - - /* -------------------------------------------------------------- */ - /* Preprocessor --------------------------------------------------*/ - case PREPROCESSOR : { - if (!IsAWordChar(sc.ch)) { - - sc.GetCurrent(cur, sizeof(cur)); - if (erlangPreproc.InList(cur)) { - style = SCE_ERLANG_PREPROC; - } else if (erlangModulesAtt.InList(cur)) { - style = SCE_ERLANG_MODULES_ATT; - } - - sc.ChangeState(style); - sc.SetState(SCE_ERLANG_DEFAULT); - parse_state = STATE_NULL; - } - } break; - - } - - } /* End of : STATE_NULL != parse_state */ - else - { - switch (sc.state) { - case SCE_ERLANG_VARIABLE : { - if (!IsAWordChar(sc.ch)) - sc.SetState(SCE_ERLANG_DEFAULT); - } break; - case SCE_ERLANG_STRING : { - if (sc.ch == '\"' && sc.chPrev != '\\') - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - } break; - case SCE_ERLANG_COMMENT : { - if (sc.atLineEnd) - sc.SetState(SCE_ERLANG_DEFAULT); - } break; - case SCE_ERLANG_CHARACTER : { - if (sc.chPrev == '\\') { - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - } else if (sc.ch != '\\') { - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - } - } break; - case SCE_ERLANG_OPERATOR : { - if (sc.chPrev == '.') { - if (sc.ch == '*' || sc.ch == '/' || sc.ch == '\\' - || sc.ch == '^') { - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - } else if (sc.ch == '\'') { - sc.ForwardSetState(SCE_ERLANG_DEFAULT); - } else { - sc.SetState(SCE_ERLANG_DEFAULT); - } - } else { - sc.SetState(SCE_ERLANG_DEFAULT); - } - } break; - } - } - - if (sc.state == SCE_ERLANG_DEFAULT) { - bool no_new_state = false; - - switch (sc.ch) { - case '\"' : sc.SetState(SCE_ERLANG_STRING); break; - case '$' : sc.SetState(SCE_ERLANG_CHARACTER); break; - case '%' : { - parse_state = COMMENT; - sc.SetState(SCE_ERLANG_COMMENT); - } break; - case '#' : { - parse_state = RECORD_START; - sc.SetState(SCE_ERLANG_UNKNOWN); - } break; - case '?' : { - parse_state = MACRO_START; - sc.SetState(SCE_ERLANG_UNKNOWN); - } break; - case '\'' : { - parse_state = ATOM_QUOTED; - sc.SetState(SCE_ERLANG_UNKNOWN); - } break; - case '+' : - case '-' : { - if (IsADigit(sc.chNext)) { - parse_state = NUMERAL_START; - radix_digits = 0; - sc.SetState(SCE_ERLANG_UNKNOWN); - } else if (sc.ch != '+') { - parse_state = PREPROCESSOR; - sc.SetState(SCE_ERLANG_UNKNOWN); - } - } break; - default : no_new_state = true; - } - - if (no_new_state) { - if (isdigit(sc.ch)) { - parse_state = NUMERAL_START; - radix_digits = sc.ch - '0'; - sc.SetState(SCE_ERLANG_UNKNOWN); - } else if (isupper(sc.ch) || '_' == sc.ch) { - sc.SetState(SCE_ERLANG_VARIABLE); - } else if (isalpha(sc.ch)) { - parse_state = ATOM_UNQUOTED; - sc.SetState(SCE_ERLANG_UNKNOWN); - } else if (isoperator(static_cast(sc.ch)) - || sc.ch == '\\') { - sc.SetState(SCE_ERLANG_OPERATOR); - } - } - } - - } - sc.Complete(); -} - -static int ClassifyErlangFoldPoint( - Accessor &styler, - int styleNext, - Sci_Position keyword_start -) { - int lev = 0; - if (styler.Match(keyword_start,"case") - || ( - styler.Match(keyword_start,"fun") - && (SCE_ERLANG_FUNCTION_NAME != styleNext) - ) - || styler.Match(keyword_start,"if") - || styler.Match(keyword_start,"query") - || styler.Match(keyword_start,"receive") - ) { - ++lev; - } else if (styler.Match(keyword_start,"end")) { - --lev; - } - - return lev; -} - -static void FoldErlangDoc( - Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList** /*keywordlists*/, Accessor &styler -) { - Sci_PositionU endPos = startPos + length; - Sci_Position currentLine = styler.GetLine(startPos); - int lev; - int previousLevel = styler.LevelAt(currentLine) & SC_FOLDLEVELNUMBERMASK; - int currentLevel = previousLevel; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - int stylePrev; - Sci_Position keyword_start = 0; - char ch; - char chNext = styler.SafeGetCharAt(startPos); - bool atEOL; - - for (Sci_PositionU i = startPos; i < endPos; i++) { - ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - // Get styles - stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - atEOL = ((ch == '\r') && (chNext != '\n')) || (ch == '\n'); - - if (stylePrev != SCE_ERLANG_KEYWORD - && style == SCE_ERLANG_KEYWORD) { - keyword_start = i; - } - - // Fold on keywords - if (stylePrev == SCE_ERLANG_KEYWORD - && style != SCE_ERLANG_KEYWORD - && style != SCE_ERLANG_ATOM - ) { - currentLevel += ClassifyErlangFoldPoint(styler, - styleNext, - keyword_start); - } - - // Fold on comments - if (style == SCE_ERLANG_COMMENT - || style == SCE_ERLANG_COMMENT_MODULE - || style == SCE_ERLANG_COMMENT_FUNCTION) { - - if (ch == '%' && chNext == '{') { - currentLevel++; - } else if (ch == '%' && chNext == '}') { - currentLevel--; - } - } - - // Fold on braces - if (style == SCE_ERLANG_OPERATOR) { - if (ch == '{' || ch == '(' || ch == '[') { - currentLevel++; - } else if (ch == '}' || ch == ')' || ch == ']') { - currentLevel--; - } - } - - - if (atEOL) { - lev = previousLevel; - - if (currentLevel > previousLevel) - lev |= SC_FOLDLEVELHEADERFLAG; - - if (lev != styler.LevelAt(currentLine)) - styler.SetLevel(currentLine, lev); - - currentLine++; - previousLevel = currentLevel; - } - - } - - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - styler.SetLevel(currentLine, - previousLevel - | (styler.LevelAt(currentLine) & ~SC_FOLDLEVELNUMBERMASK)); -} - -static const char * const erlangWordListDesc[] = { - "Erlang Reserved words", - "Erlang BIFs", - "Erlang Preprocessor", - "Erlang Module Attributes", - "Erlang Documentation", - "Erlang Documentation Macro", - 0 -}; - -LexerModule lmErlang( - SCLEX_ERLANG, - ColouriseErlangDoc, - "erlang", - FoldErlangDoc, - erlangWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexErrorList.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexErrorList.cpp deleted file mode 100644 index b3dcd2a59..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexErrorList.cpp +++ /dev/null @@ -1,393 +0,0 @@ -// Scintilla source code edit control -/** @file LexErrorList.cxx - ** Lexer for error lists. Used for the output pane in SciTE. - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static bool strstart(const char *haystack, const char *needle) { - return strncmp(haystack, needle, strlen(needle)) == 0; -} - -static bool Is0To9(char ch) { - return (ch >= '0') && (ch <= '9'); -} - -static bool Is1To9(char ch) { - return (ch >= '1') && (ch <= '9'); -} - -static bool IsAlphabetic(int ch) { - return IsASCII(ch) && isalpha(ch); -} - -static inline bool AtEOL(Accessor &styler, Sci_PositionU i) { - return (styler[i] == '\n') || - ((styler[i] == '\r') && (styler.SafeGetCharAt(i + 1) != '\n')); -} - -static int RecogniseErrorListLine(const char *lineBuffer, Sci_PositionU lengthLine, Sci_Position &startValue) { - if (lineBuffer[0] == '>') { - // Command or return status - return SCE_ERR_CMD; - } else if (lineBuffer[0] == '<') { - // Diff removal. - return SCE_ERR_DIFF_DELETION; - } else if (lineBuffer[0] == '!') { - return SCE_ERR_DIFF_CHANGED; - } else if (lineBuffer[0] == '+') { - if (strstart(lineBuffer, "+++ ")) { - return SCE_ERR_DIFF_MESSAGE; - } else { - return SCE_ERR_DIFF_ADDITION; - } - } else if (lineBuffer[0] == '-') { - if (strstart(lineBuffer, "--- ")) { - return SCE_ERR_DIFF_MESSAGE; - } else { - return SCE_ERR_DIFF_DELETION; - } - } else if (strstart(lineBuffer, "cf90-")) { - // Absoft Pro Fortran 90/95 v8.2 error and/or warning message - return SCE_ERR_ABSF; - } else if (strstart(lineBuffer, "fortcom:")) { - // Intel Fortran Compiler v8.0 error/warning message - return SCE_ERR_IFORT; - } else if (strstr(lineBuffer, "File \"") && strstr(lineBuffer, ", line ")) { - return SCE_ERR_PYTHON; - } else if (strstr(lineBuffer, " in ") && strstr(lineBuffer, " on line ")) { - return SCE_ERR_PHP; - } else if ((strstart(lineBuffer, "Error ") || - strstart(lineBuffer, "Warning ")) && - strstr(lineBuffer, " at (") && - strstr(lineBuffer, ") : ") && - (strstr(lineBuffer, " at (") < strstr(lineBuffer, ") : "))) { - // Intel Fortran Compiler error/warning message - return SCE_ERR_IFC; - } else if (strstart(lineBuffer, "Error ")) { - // Borland error message - return SCE_ERR_BORLAND; - } else if (strstart(lineBuffer, "Warning ")) { - // Borland warning message - return SCE_ERR_BORLAND; - } else if (strstr(lineBuffer, "at line ") && - (strstr(lineBuffer, "at line ") < (lineBuffer + lengthLine)) && - strstr(lineBuffer, "file ") && - (strstr(lineBuffer, "file ") < (lineBuffer + lengthLine))) { - // Lua 4 error message - return SCE_ERR_LUA; - } else if (strstr(lineBuffer, " at ") && - (strstr(lineBuffer, " at ") < (lineBuffer + lengthLine)) && - strstr(lineBuffer, " line ") && - (strstr(lineBuffer, " line ") < (lineBuffer + lengthLine)) && - (strstr(lineBuffer, " at ") + 4 < (strstr(lineBuffer, " line ")))) { - // perl error message: - // at line - return SCE_ERR_PERL; - } else if ((lengthLine >= 6) && - (memcmp(lineBuffer, " at ", 6) == 0) && - strstr(lineBuffer, ":line ")) { - // A .NET traceback - return SCE_ERR_NET; - } else if (strstart(lineBuffer, "Line ") && - strstr(lineBuffer, ", file ")) { - // Essential Lahey Fortran error message - return SCE_ERR_ELF; - } else if (strstart(lineBuffer, "line ") && - strstr(lineBuffer, " column ")) { - // HTML tidy style: line 42 column 1 - return SCE_ERR_TIDY; - } else if (strstart(lineBuffer, "\tat ") && - strstr(lineBuffer, "(") && - strstr(lineBuffer, ".java:")) { - // Java stack back trace - return SCE_ERR_JAVA_STACK; - } else if (strstart(lineBuffer, "In file included from ") || - strstart(lineBuffer, " from ")) { - // GCC showing include path to following error - return SCE_ERR_GCC_INCLUDED_FROM; - } else if (strstr(lineBuffer, "warning LNK")) { - // Microsoft linker warning: - // { : } warning LNK9999 - return SCE_ERR_MS; - } else { - // Look for one of the following formats: - // GCC: :: - // Microsoft: () : - // Common: (): warning|error|note|remark|catastrophic|fatal - // Common: () warning|error|note|remark|catastrophic|fatal - // Microsoft: (,) - // CTags: \t\t - // Lua 5 traceback: \t:: - // Lua 5.1: : :: - const bool initialTab = (lineBuffer[0] == '\t'); - bool initialColonPart = false; - bool canBeCtags = !initialTab; // For ctags must have an identifier with no spaces then a tab - enum { stInitial, - stGccStart, stGccDigit, stGccColumn, stGcc, - stMsStart, stMsDigit, stMsBracket, stMsVc, stMsDigitComma, stMsDotNet, - stCtagsStart, stCtagsFile, stCtagsStartString, stCtagsStringDollar, stCtags, - stUnrecognized - } state = stInitial; - for (Sci_PositionU i = 0; i < lengthLine; i++) { - const char ch = lineBuffer[i]; - char chNext = ' '; - if ((i + 1) < lengthLine) - chNext = lineBuffer[i + 1]; - if (state == stInitial) { - if (ch == ':') { - // May be GCC, or might be Lua 5 (Lua traceback same but with tab prefix) - if ((chNext != '\\') && (chNext != '/') && (chNext != ' ')) { - // This check is not completely accurate as may be on - // GTK+ with a file name that includes ':'. - state = stGccStart; - } else if (chNext == ' ') { // indicates a Lua 5.1 error message - initialColonPart = true; - } - } else if ((ch == '(') && Is1To9(chNext) && (!initialTab)) { - // May be Microsoft - // Check against '0' often removes phone numbers - state = stMsStart; - } else if ((ch == '\t') && canBeCtags) { - // May be CTags - state = stCtagsStart; - } else if (ch == ' ') { - canBeCtags = false; - } - } else if (state == stGccStart) { // : - state = Is0To9(ch) ? stGccDigit : stUnrecognized; - } else if (state == stGccDigit) { // : - if (ch == ':') { - state = stGccColumn; // :9.*: is GCC - startValue = i + 1; - } else if (!Is0To9(ch)) { - state = stUnrecognized; - } - } else if (state == stGccColumn) { // :: - if (!Is0To9(ch)) { - state = stGcc; - if (ch == ':') - startValue = i + 1; - break; - } - } else if (state == stMsStart) { // ( - state = Is0To9(ch) ? stMsDigit : stUnrecognized; - } else if (state == stMsDigit) { // ( - if (ch == ',') { - state = stMsDigitComma; - } else if (ch == ')') { - state = stMsBracket; - } else if ((ch != ' ') && !Is0To9(ch)) { - state = stUnrecognized; - } - } else if (state == stMsBracket) { // () - if ((ch == ' ') && (chNext == ':')) { - state = stMsVc; - } else if ((ch == ':' && chNext == ' ') || (ch == ' ')) { - // Possibly Delphi.. don't test against chNext as it's one of the strings below. - char word[512]; - Sci_PositionU j, chPos; - unsigned numstep; - chPos = 0; - if (ch == ' ') - numstep = 1; // ch was ' ', handle as if it's a delphi errorline, only add 1 to i. - else - numstep = 2; // otherwise add 2. - for (j = i + numstep; j < lengthLine && IsAlphabetic(lineBuffer[j]) && chPos < sizeof(word) - 1; j++) - word[chPos++] = lineBuffer[j]; - word[chPos] = 0; - if (!CompareCaseInsensitive(word, "error") || !CompareCaseInsensitive(word, "warning") || - !CompareCaseInsensitive(word, "fatal") || !CompareCaseInsensitive(word, "catastrophic") || - !CompareCaseInsensitive(word, "note") || !CompareCaseInsensitive(word, "remark")) { - state = stMsVc; - } else { - state = stUnrecognized; - } - } else { - state = stUnrecognized; - } - } else if (state == stMsDigitComma) { // (, - if (ch == ')') { - state = stMsDotNet; - break; - } else if ((ch != ' ') && !Is0To9(ch)) { - state = stUnrecognized; - } - } else if (state == stCtagsStart) { - if (ch == '\t') { - state = stCtagsFile; - } - } else if (state == stCtagsFile) { - if ((lineBuffer[i - 1] == '\t') && - ((ch == '/' && chNext == '^') || Is0To9(ch))) { - state = stCtags; - break; - } else if ((ch == '/') && (chNext == '^')) { - state = stCtagsStartString; - } - } else if ((state == stCtagsStartString) && ((lineBuffer[i] == '$') && (lineBuffer[i + 1] == '/'))) { - state = stCtagsStringDollar; - break; - } - } - if (state == stGcc) { - return initialColonPart ? SCE_ERR_LUA : SCE_ERR_GCC; - } else if ((state == stMsVc) || (state == stMsDotNet)) { - return SCE_ERR_MS; - } else if ((state == stCtagsStringDollar) || (state == stCtags)) { - return SCE_ERR_CTAG; - } else if (initialColonPart && strstr(lineBuffer, ": warning C")) { - // Microsoft warning without line number - // : warning C9999 - return SCE_ERR_MS; - } else { - return SCE_ERR_DEFAULT; - } - } -} - -#define CSI "\033[" - -namespace { - -bool SequenceEnd(int ch) { - return (ch == 0) || ((ch >= '@') && (ch <= '~')); -} - -int StyleFromSequence(const char *seq) { - int bold = 0; - int colour = 0; - while (!SequenceEnd(*seq)) { - if (Is0To9(*seq)) { - int base = *seq - '0'; - if (Is0To9(seq[1])) { - base = base * 10; - base += seq[1] - '0'; - seq++; - } - if (base == 0) { - colour = 0; - bold = 0; - } - else if (base == 1) { - bold = 1; - } - else if (base >= 30 && base <= 37) { - colour = base - 30; - } - } - seq++; - } - return SCE_ERR_ES_BLACK + bold * 8 + colour; -} - -} - -static void ColouriseErrorListLine( - char *lineBuffer, - Sci_PositionU lengthLine, - Sci_PositionU endPos, - Accessor &styler, - bool valueSeparate, - bool escapeSequences) { - Sci_Position startValue = -1; - int style = RecogniseErrorListLine(lineBuffer, lengthLine, startValue); - if (escapeSequences && strstr(lineBuffer, CSI)) { - const Sci_Position startPos = endPos - lengthLine; - const char *linePortion = lineBuffer; - Sci_Position startPortion = startPos; - int portionStyle = style; - while (const char *startSeq = strstr(linePortion, CSI)) { - if (startSeq > linePortion) { - styler.ColourTo(startPortion + static_cast(startSeq - linePortion), portionStyle); - } - const char *endSeq = startSeq + 2; - while (!SequenceEnd(*endSeq)) - endSeq++; - const Sci_Position endSeqPosition = startPortion + static_cast(endSeq - linePortion) + 1; - switch (*endSeq) { - case 0: - styler.ColourTo(endPos, SCE_ERR_ESCSEQ_UNKNOWN); - return; - case 'm': // Colour command - styler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ); - portionStyle = StyleFromSequence(startSeq+2); - break; - case 'K': // Erase to end of line -> ignore - styler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ); - break; - default: - styler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ_UNKNOWN); - portionStyle = style; - } - startPortion = endSeqPosition; - linePortion = endSeq + 1; - } - styler.ColourTo(endPos, portionStyle); - } else { - if (valueSeparate && (startValue >= 0)) { - styler.ColourTo(endPos - (lengthLine - startValue), style); - styler.ColourTo(endPos, SCE_ERR_VALUE); - } else { - styler.ColourTo(endPos, style); - } - } -} - -static void ColouriseErrorListDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { - char lineBuffer[10000]; - styler.StartAt(startPos); - styler.StartSegment(startPos); - Sci_PositionU linePos = 0; - - // property lexer.errorlist.value.separate - // For lines in the output pane that are matches from Find in Files or GCC-style - // diagnostics, style the path and line number separately from the rest of the - // line with style 21 used for the rest of the line. - // This allows matched text to be more easily distinguished from its location. - const bool valueSeparate = styler.GetPropertyInt("lexer.errorlist.value.separate", 0) != 0; - - // property lexer.errorlist.escape.sequences - // Set to 1 to interpret escape sequences. - const bool escapeSequences = styler.GetPropertyInt("lexer.errorlist.escape.sequences") != 0; - - for (Sci_PositionU i = startPos; i < startPos + length; i++) { - lineBuffer[linePos++] = styler[i]; - if (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) { - // End of line (or of line buffer) met, colourise it - lineBuffer[linePos] = '\0'; - ColouriseErrorListLine(lineBuffer, linePos, i, styler, valueSeparate, escapeSequences); - linePos = 0; - } - } - if (linePos > 0) { // Last line does not have ending characters - lineBuffer[linePos] = '\0'; - ColouriseErrorListLine(lineBuffer, linePos, startPos + length - 1, styler, valueSeparate, escapeSequences); - } -} - -static const char *const emptyWordListDesc[] = { - 0 -}; - -LexerModule lmErrorList(SCLEX_ERRORLIST, ColouriseErrorListDoc, "errorlist", 0, emptyWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexFlagship.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexFlagship.cpp deleted file mode 100644 index b73c1aa1e..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexFlagship.cpp +++ /dev/null @@ -1,352 +0,0 @@ -// Scintilla source code edit control -/** @file LexFlagShip.cxx - ** Lexer for Harbour and FlagShip. - ** (Syntactically compatible to other xBase dialects, like Clipper, dBase, Clip, FoxPro etc.) - **/ -// Copyright 2005 by Randy Butler -// Copyright 2010 by Xavi (Harbour) -// Copyright 1998-2003 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -// Extended to accept accented characters -static inline bool IsAWordChar(int ch) -{ - return ch >= 0x80 || - (isalnum(ch) || ch == '_'); -} - -static void ColouriseFlagShipDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) -{ - - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; - WordList &keywords4 = *keywordlists[3]; - WordList &keywords5 = *keywordlists[4]; - - // property lexer.flagship.styling.within.preprocessor - // For Harbour code, determines whether all preprocessor code is styled in the preprocessor style (0) or only from the - // initial # to the end of the command word(1, the default). It also determines how to present text, dump, and disabled code. - bool stylingWithinPreprocessor = styler.GetPropertyInt("lexer.flagship.styling.within.preprocessor", 1) != 0; - - CharacterSet setDoxygen(CharacterSet::setAlpha, "$@\\&<>#{}[]"); - - int visibleChars = 0; - int closeStringChar = 0; - int styleBeforeDCKeyword = SCE_FS_DEFAULT; - bool bEnableCode = initStyle < SCE_FS_DISABLEDCODE; - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - - // Determine if the current state should terminate. - switch (sc.state) { - case SCE_FS_OPERATOR: - case SCE_FS_OPERATOR_C: - case SCE_FS_WORDOPERATOR: - sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - break; - case SCE_FS_IDENTIFIER: - case SCE_FS_IDENTIFIER_C: - if (!IsAWordChar(sc.ch)) { - char s[64]; - sc.GetCurrentLowered(s, sizeof(s)); - if (keywords.InList(s)) { - sc.ChangeState(bEnableCode ? SCE_FS_KEYWORD : SCE_FS_KEYWORD_C); - } else if (keywords2.InList(s)) { - sc.ChangeState(bEnableCode ? SCE_FS_KEYWORD2 : SCE_FS_KEYWORD2_C); - } else if (bEnableCode && keywords3.InList(s)) { - sc.ChangeState(SCE_FS_KEYWORD3); - } else if (bEnableCode && keywords4.InList(s)) { - sc.ChangeState(SCE_FS_KEYWORD4); - }// Else, it is really an identifier... - sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } - break; - case SCE_FS_NUMBER: - if (!IsAWordChar(sc.ch) && !(sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_FS_DEFAULT); - } - break; - case SCE_FS_NUMBER_C: - if (!IsAWordChar(sc.ch) && sc.ch != '.') { - sc.SetState(SCE_FS_DEFAULT_C); - } - break; - case SCE_FS_CONSTANT: - if (!IsAWordChar(sc.ch)) { - sc.SetState(SCE_FS_DEFAULT); - } - break; - case SCE_FS_STRING: - case SCE_FS_STRING_C: - if (sc.ch == closeStringChar) { - sc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } else if (sc.atLineEnd) { - sc.ChangeState(bEnableCode ? SCE_FS_STRINGEOL : SCE_FS_STRINGEOL_C); - } - break; - case SCE_FS_STRINGEOL: - case SCE_FS_STRINGEOL_C: - if (sc.atLineStart) { - sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } - break; - case SCE_FS_COMMENTDOC: - case SCE_FS_COMMENTDOC_C: - if (sc.Match('*', '/')) { - sc.Forward(); - sc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support - // Verify that we have the conditions to mark a comment-doc-keyword - if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) { - styleBeforeDCKeyword = bEnableCode ? SCE_FS_COMMENTDOC : SCE_FS_COMMENTDOC_C; - sc.SetState(SCE_FS_COMMENTDOCKEYWORD); - } - } - break; - case SCE_FS_COMMENT: - case SCE_FS_COMMENTLINE: - if (sc.atLineStart) { - sc.SetState(SCE_FS_DEFAULT); - } - break; - case SCE_FS_COMMENTLINEDOC: - case SCE_FS_COMMENTLINEDOC_C: - if (sc.atLineStart) { - sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support - // Verify that we have the conditions to mark a comment-doc-keyword - if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) { - styleBeforeDCKeyword = bEnableCode ? SCE_FS_COMMENTLINEDOC : SCE_FS_COMMENTLINEDOC_C; - sc.SetState(SCE_FS_COMMENTDOCKEYWORD); - } - } - break; - case SCE_FS_COMMENTDOCKEYWORD: - if ((styleBeforeDCKeyword == SCE_FS_COMMENTDOC || styleBeforeDCKeyword == SCE_FS_COMMENTDOC_C) && - sc.Match('*', '/')) { - sc.ChangeState(SCE_FS_COMMENTDOCKEYWORDERROR); - sc.Forward(); - sc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } else if (!setDoxygen.Contains(sc.ch)) { - char s[64]; - sc.GetCurrentLowered(s, sizeof(s)); - if (!IsASpace(sc.ch) || !keywords5.InList(s + 1)) { - sc.ChangeState(SCE_FS_COMMENTDOCKEYWORDERROR); - } - sc.SetState(styleBeforeDCKeyword); - } - break; - case SCE_FS_PREPROCESSOR: - case SCE_FS_PREPROCESSOR_C: - if (sc.atLineEnd) { - if (!(sc.chPrev == ';' || sc.GetRelative(-2) == ';')) { - sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } - } else if (stylingWithinPreprocessor) { - if (IsASpaceOrTab(sc.ch)) { - sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } - } else if (sc.Match('/', '*') || sc.Match('/', '/') || sc.Match('&', '&')) { - sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } - break; - case SCE_FS_DISABLEDCODE: - if (sc.ch == '#' && visibleChars == 0) { - sc.SetState(bEnableCode ? SCE_FS_PREPROCESSOR : SCE_FS_PREPROCESSOR_C); - do { // Skip whitespace between # and preprocessor word - sc.Forward(); - } while (IsASpaceOrTab(sc.ch) && sc.More()); - if (sc.MatchIgnoreCase("pragma")) { - sc.Forward(6); - do { // Skip more whitespace until keyword - sc.Forward(); - } while (IsASpaceOrTab(sc.ch) && sc.More()); - if (sc.MatchIgnoreCase("enddump") || sc.MatchIgnoreCase("__endtext")) { - bEnableCode = true; - sc.SetState(SCE_FS_DISABLEDCODE); - sc.Forward(sc.ch == '_' ? 8 : 6); - sc.ForwardSetState(SCE_FS_DEFAULT); - } else { - sc.ChangeState(SCE_FS_DISABLEDCODE); - } - } else { - sc.ChangeState(SCE_FS_DISABLEDCODE); - } - } - break; - case SCE_FS_DATE: - if (sc.ch == '}') { - sc.ForwardSetState(SCE_FS_DEFAULT); - } else if (sc.atLineEnd) { - sc.ChangeState(SCE_FS_STRINGEOL); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_FS_DEFAULT || sc.state == SCE_FS_DEFAULT_C) { - if (bEnableCode && - (sc.MatchIgnoreCase(".and.") || sc.MatchIgnoreCase(".not."))) { - sc.SetState(SCE_FS_WORDOPERATOR); - sc.Forward(4); - } else if (bEnableCode && sc.MatchIgnoreCase(".or.")) { - sc.SetState(SCE_FS_WORDOPERATOR); - sc.Forward(3); - } else if (bEnableCode && - (sc.MatchIgnoreCase(".t.") || sc.MatchIgnoreCase(".f.") || - (!IsAWordChar(sc.GetRelative(3)) && sc.MatchIgnoreCase("nil")))) { - sc.SetState(SCE_FS_CONSTANT); - sc.Forward(2); - } else if (sc.Match('/', '*')) { - sc.SetState(bEnableCode ? SCE_FS_COMMENTDOC : SCE_FS_COMMENTDOC_C); - sc.Forward(); - } else if (bEnableCode && sc.Match('&', '&')) { - sc.SetState(SCE_FS_COMMENTLINE); - sc.Forward(); - } else if (sc.Match('/', '/')) { - sc.SetState(bEnableCode ? SCE_FS_COMMENTLINEDOC : SCE_FS_COMMENTLINEDOC_C); - sc.Forward(); - } else if (bEnableCode && sc.ch == '*' && visibleChars == 0) { - sc.SetState(SCE_FS_COMMENT); - } else if (sc.ch == '\"' || sc.ch == '\'') { - sc.SetState(bEnableCode ? SCE_FS_STRING : SCE_FS_STRING_C); - closeStringChar = sc.ch; - } else if (closeStringChar == '>' && sc.ch == '<') { - sc.SetState(bEnableCode ? SCE_FS_STRING : SCE_FS_STRING_C); - } else if (sc.ch == '#' && visibleChars == 0) { - sc.SetState(bEnableCode ? SCE_FS_PREPROCESSOR : SCE_FS_PREPROCESSOR_C); - do { // Skip whitespace between # and preprocessor word - sc.Forward(); - } while (IsASpaceOrTab(sc.ch) && sc.More()); - if (sc.atLineEnd) { - sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); - } else if (sc.MatchIgnoreCase("include")) { - if (stylingWithinPreprocessor) { - closeStringChar = '>'; - } - } else if (sc.MatchIgnoreCase("pragma")) { - sc.Forward(6); - do { // Skip more whitespace until keyword - sc.Forward(); - } while (IsASpaceOrTab(sc.ch) && sc.More()); - if (sc.MatchIgnoreCase("begindump") || sc.MatchIgnoreCase("__cstream")) { - bEnableCode = false; - if (stylingWithinPreprocessor) { - sc.SetState(SCE_FS_DISABLEDCODE); - sc.Forward(8); - sc.ForwardSetState(SCE_FS_DEFAULT_C); - } else { - sc.SetState(SCE_FS_DISABLEDCODE); - } - } else if (sc.MatchIgnoreCase("enddump") || sc.MatchIgnoreCase("__endtext")) { - bEnableCode = true; - sc.SetState(SCE_FS_DISABLEDCODE); - sc.Forward(sc.ch == '_' ? 8 : 6); - sc.ForwardSetState(SCE_FS_DEFAULT); - } - } - } else if (bEnableCode && sc.ch == '{') { - Sci_Position p = 0; - int chSeek; - Sci_PositionU endPos(startPos + length); - do { // Skip whitespace - chSeek = sc.GetRelative(++p); - } while (IsASpaceOrTab(chSeek) && (sc.currentPos + p < endPos)); - if (chSeek == '^') { - sc.SetState(SCE_FS_DATE); - } else { - sc.SetState(SCE_FS_OPERATOR); - } - } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(bEnableCode ? SCE_FS_NUMBER : SCE_FS_NUMBER_C); - } else if (IsAWordChar(sc.ch)) { - sc.SetState(bEnableCode ? SCE_FS_IDENTIFIER : SCE_FS_IDENTIFIER_C); - } else if (isoperator(static_cast(sc.ch)) || (bEnableCode && sc.ch == '@')) { - sc.SetState(bEnableCode ? SCE_FS_OPERATOR : SCE_FS_OPERATOR_C); - } - } - - if (sc.atLineEnd) { - visibleChars = 0; - closeStringChar = 0; - } - if (!IsASpace(sc.ch)) { - visibleChars++; - } - } - sc.Complete(); -} - -static void FoldFlagShipDoc(Sci_PositionU startPos, Sci_Position length, int, - WordList *[], Accessor &styler) -{ - - Sci_Position endPos = startPos + length; - - // Backtrack to previous line in case need to fix its fold status - Sci_Position lineCurrent = styler.GetLine(startPos); - if (startPos > 0 && lineCurrent > 0) { - lineCurrent--; - startPos = styler.LineStart(lineCurrent); - } - int spaceFlags = 0; - int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags); - char chNext = styler[startPos]; - for (Sci_Position i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == endPos-1)) { - int lev = indentCurrent; - int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags); - if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) { - if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) { - lev |= SC_FOLDLEVELHEADERFLAG; - } else if (indentNext & SC_FOLDLEVELWHITEFLAG) { - int spaceFlags2 = 0; - int indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2); - if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) { - lev |= SC_FOLDLEVELHEADERFLAG; - } - } - } - indentCurrent = indentNext; - styler.SetLevel(lineCurrent, lev); - lineCurrent++; - } - } -} - -static const char * const FSWordListDesc[] = { - "Keywords Commands", - "Std Library Functions", - "Procedure, return, exit", - "Class (oop)", - "Doxygen keywords", - 0 -}; - -LexerModule lmFlagShip(SCLEX_FLAGSHIP, ColouriseFlagShipDoc, "flagship", FoldFlagShipDoc, FSWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexForth.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexForth.cpp deleted file mode 100644 index 80842097d..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexForth.cpp +++ /dev/null @@ -1,168 +0,0 @@ -// Scintilla source code edit control -/** @file LexForth.cxx - ** Lexer for FORTH - **/ -// Copyright 1998-2003 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsAWordStart(int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.'); -} - -static inline bool IsANumChar(int ch) { - return (ch < 0x80) && (isxdigit(ch) || ch == '.' || ch == 'e' || ch == 'E' ); -} - -static inline bool IsASpaceChar(int ch) { - return (ch < 0x80) && isspace(ch); -} - -static void ColouriseForthDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordLists[], - Accessor &styler) { - - WordList &control = *keywordLists[0]; - WordList &keyword = *keywordLists[1]; - WordList &defword = *keywordLists[2]; - WordList &preword1 = *keywordLists[3]; - WordList &preword2 = *keywordLists[4]; - WordList &strings = *keywordLists[5]; - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) - { - // Determine if the current state should terminate. - if (sc.state == SCE_FORTH_COMMENT) { - if (sc.atLineEnd) { - sc.SetState(SCE_FORTH_DEFAULT); - } - }else if (sc.state == SCE_FORTH_COMMENT_ML) { - if (sc.ch == ')') { - sc.ForwardSetState(SCE_FORTH_DEFAULT); - } - }else if (sc.state == SCE_FORTH_IDENTIFIER || sc.state == SCE_FORTH_NUMBER) { - // handle numbers here too, because what we thought was a number might - // turn out to be a keyword e.g. 2DUP - if (IsASpaceChar(sc.ch) ) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - int newState = sc.state == SCE_FORTH_NUMBER ? SCE_FORTH_NUMBER : SCE_FORTH_DEFAULT; - if (control.InList(s)) { - sc.ChangeState(SCE_FORTH_CONTROL); - } else if (keyword.InList(s)) { - sc.ChangeState(SCE_FORTH_KEYWORD); - } else if (defword.InList(s)) { - sc.ChangeState(SCE_FORTH_DEFWORD); - } else if (preword1.InList(s)) { - sc.ChangeState(SCE_FORTH_PREWORD1); - } else if (preword2.InList(s)) { - sc.ChangeState(SCE_FORTH_PREWORD2); - } else if (strings.InList(s)) { - sc.ChangeState(SCE_FORTH_STRING); - newState = SCE_FORTH_STRING; - } - sc.SetState(newState); - } - if (sc.state == SCE_FORTH_NUMBER) { - if (IsASpaceChar(sc.ch)) { - sc.SetState(SCE_FORTH_DEFAULT); - } else if (!IsANumChar(sc.ch)) { - sc.ChangeState(SCE_FORTH_IDENTIFIER); - } - } - }else if (sc.state == SCE_FORTH_STRING) { - if (sc.ch == '\"') { - sc.ForwardSetState(SCE_FORTH_DEFAULT); - } - }else if (sc.state == SCE_FORTH_LOCALE) { - if (sc.ch == '}') { - sc.ForwardSetState(SCE_FORTH_DEFAULT); - } - }else if (sc.state == SCE_FORTH_DEFWORD) { - if (IsASpaceChar(sc.ch)) { - sc.SetState(SCE_FORTH_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_FORTH_DEFAULT) { - if (sc.ch == '\\'){ - sc.SetState(SCE_FORTH_COMMENT); - } else if (sc.ch == '(' && - (sc.atLineStart || IsASpaceChar(sc.chPrev)) && - (sc.atLineEnd || IsASpaceChar(sc.chNext))) { - sc.SetState(SCE_FORTH_COMMENT_ML); - } else if ( (sc.ch == '$' && (IsASCII(sc.chNext) && isxdigit(sc.chNext))) ) { - // number starting with $ is a hex number - sc.SetState(SCE_FORTH_NUMBER); - while(sc.More() && IsASCII(sc.chNext) && isxdigit(sc.chNext)) - sc.Forward(); - } else if ( (sc.ch == '%' && (IsASCII(sc.chNext) && (sc.chNext == '0' || sc.chNext == '1'))) ) { - // number starting with % is binary - sc.SetState(SCE_FORTH_NUMBER); - while(sc.More() && IsASCII(sc.chNext) && (sc.chNext == '0' || sc.chNext == '1')) - sc.Forward(); - } else if ( IsASCII(sc.ch) && - (isxdigit(sc.ch) || ((sc.ch == '.' || sc.ch == '-') && IsASCII(sc.chNext) && isxdigit(sc.chNext)) ) - ){ - sc.SetState(SCE_FORTH_NUMBER); - } else if (IsAWordStart(sc.ch)) { - sc.SetState(SCE_FORTH_IDENTIFIER); - } else if (sc.ch == '{') { - sc.SetState(SCE_FORTH_LOCALE); - } else if (sc.ch == ':' && IsASCII(sc.chNext) && isspace(sc.chNext)) { - // highlight word definitions e.g. : GCD ( n n -- n ) ..... ; - // ^ ^^^ - sc.SetState(SCE_FORTH_DEFWORD); - while(sc.More() && IsASCII(sc.chNext) && isspace(sc.chNext)) - sc.Forward(); - } else if (sc.ch == ';' && - (sc.atLineStart || IsASpaceChar(sc.chPrev)) && - (sc.atLineEnd || IsASpaceChar(sc.chNext)) ) { - // mark the ';' that ends a word - sc.SetState(SCE_FORTH_DEFWORD); - sc.ForwardSetState(SCE_FORTH_DEFAULT); - } - } - - } - sc.Complete(); -} - -static void FoldForthDoc(Sci_PositionU, Sci_Position, int, WordList *[], - Accessor &) { -} - -static const char * const forthWordLists[] = { - "control keywords", - "keywords", - "definition words", - "prewords with one argument", - "prewords with two arguments", - "string definition keywords", - 0, - }; - -LexerModule lmForth(SCLEX_FORTH, ColouriseForthDoc, "forth", FoldForthDoc, forthWordLists); - - diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexFortran.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexFortran.cpp deleted file mode 100644 index 28298b3ed..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexFortran.cpp +++ /dev/null @@ -1,721 +0,0 @@ -// Scintilla source code edit control -/** @file LexFortran.cxx - ** Lexer for Fortran. - ** Written by Chuan-jian Shen, Last changed Sep. 2003 - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. -/***************************************/ -#include -#include -#include -#include -#include -#include -/***************************************/ -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -/***************************************/ - -using namespace Scintilla; - -/***********************************************/ -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '%'); -} -/**********************************************/ -static inline bool IsAWordStart(const int ch) { - return (ch < 0x80) && (isalnum(ch)); -} -/***************************************/ -static inline bool IsABlank(unsigned int ch) { - return (ch == ' ') || (ch == 0x09) || (ch == 0x0b) ; -} -/***************************************/ -static inline bool IsALineEnd(char ch) { - return ((ch == '\n') || (ch == '\r')) ; -} -/***************************************/ -static Sci_PositionU GetContinuedPos(Sci_PositionU pos, Accessor &styler) { - while (!IsALineEnd(styler.SafeGetCharAt(pos++))) continue; - if (styler.SafeGetCharAt(pos) == '\n') pos++; - while (IsABlank(styler.SafeGetCharAt(pos++))) continue; - char chCur = styler.SafeGetCharAt(pos); - if (chCur == '&') { - while (IsABlank(styler.SafeGetCharAt(++pos))) continue; - return pos; - } else { - return pos; - } -} -/***************************************/ -static void ColouriseFortranDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler, bool isFixFormat) { - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; - /***************************************/ - Sci_Position posLineStart = 0; - int numNonBlank = 0, prevState = 0; - Sci_Position endPos = startPos + length; - /***************************************/ - // backtrack to the nearest keyword - while ((startPos > 1) && (styler.StyleAt(startPos) != SCE_F_WORD)) { - startPos--; - } - startPos = styler.LineStart(styler.GetLine(startPos)); - initStyle = styler.StyleAt(startPos - 1); - StyleContext sc(startPos, endPos-startPos, initStyle, styler); - /***************************************/ - for (; sc.More(); sc.Forward()) { - // remember the start position of the line - if (sc.atLineStart) { - posLineStart = sc.currentPos; - numNonBlank = 0; - sc.SetState(SCE_F_DEFAULT); - } - if (!IsASpaceOrTab(sc.ch)) numNonBlank ++; - /***********************************************/ - // Handle the fix format generically - Sci_Position toLineStart = sc.currentPos - posLineStart; - if (isFixFormat && (toLineStart < 6 || toLineStart >= 72)) { - if ((toLineStart == 0 && (tolower(sc.ch) == 'c' || sc.ch == '*')) || sc.ch == '!') { - if (sc.MatchIgnoreCase("cdec$") || sc.MatchIgnoreCase("*dec$") || sc.MatchIgnoreCase("!dec$") || - sc.MatchIgnoreCase("cdir$") || sc.MatchIgnoreCase("*dir$") || sc.MatchIgnoreCase("!dir$") || - sc.MatchIgnoreCase("cms$") || sc.MatchIgnoreCase("*ms$") || sc.MatchIgnoreCase("!ms$") || - sc.chNext == '$') { - sc.SetState(SCE_F_PREPROCESSOR); - } else { - sc.SetState(SCE_F_COMMENT); - } - - while (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end - } else if (toLineStart >= 72) { - sc.SetState(SCE_F_COMMENT); - while (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end - } else if (toLineStart < 5) { - if (IsADigit(sc.ch)) - sc.SetState(SCE_F_LABEL); - else - sc.SetState(SCE_F_DEFAULT); - } else if (toLineStart == 5) { - //if (!IsASpace(sc.ch) && sc.ch != '0') { - if (sc.ch != '\r' && sc.ch != '\n') { - sc.SetState(SCE_F_CONTINUATION); - if (!IsASpace(sc.ch) && sc.ch != '0') - sc.ForwardSetState(prevState); - } else - sc.SetState(SCE_F_DEFAULT); - } - continue; - } - /***************************************/ - // Handle line continuation generically. - if (!isFixFormat && sc.ch == '&' && sc.state != SCE_F_COMMENT) { - char chTemp = ' '; - Sci_Position j = 1; - while (IsABlank(chTemp) && j<132) { - chTemp = static_cast(sc.GetRelative(j)); - j++; - } - if (chTemp == '!') { - sc.SetState(SCE_F_CONTINUATION); - if (sc.chNext == '!') sc.ForwardSetState(SCE_F_COMMENT); - } else if (chTemp == '\r' || chTemp == '\n') { - int currentState = sc.state; - sc.SetState(SCE_F_CONTINUATION); - sc.ForwardSetState(SCE_F_DEFAULT); - while (IsASpace(sc.ch) && sc.More()) { - sc.Forward(); - if (sc.atLineStart) numNonBlank = 0; - if (!IsASpaceOrTab(sc.ch)) numNonBlank ++; - } - if (sc.ch == '&') { - sc.SetState(SCE_F_CONTINUATION); - sc.Forward(); - } - sc.SetState(currentState); - } - } - /***************************************/ - // Hanndle preprocessor directives - if (sc.ch == '#' && numNonBlank == 1) - { - sc.SetState(SCE_F_PREPROCESSOR); - while (!sc.atLineEnd && sc.More()) - sc.Forward(); // Until line end - } - /***************************************/ - // Determine if the current state should terminate. - if (sc.state == SCE_F_OPERATOR) { - sc.SetState(SCE_F_DEFAULT); - } else if (sc.state == SCE_F_NUMBER) { - if (!(IsAWordChar(sc.ch) || sc.ch=='\'' || sc.ch=='\"' || sc.ch=='.')) { - sc.SetState(SCE_F_DEFAULT); - } - } else if (sc.state == SCE_F_IDENTIFIER) { - if (!IsAWordChar(sc.ch) || (sc.ch == '%')) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - if (keywords.InList(s)) { - sc.ChangeState(SCE_F_WORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_F_WORD2); - } else if (keywords3.InList(s)) { - sc.ChangeState(SCE_F_WORD3); - } - sc.SetState(SCE_F_DEFAULT); - } - } else if (sc.state == SCE_F_COMMENT || sc.state == SCE_F_PREPROCESSOR) { - if (sc.ch == '\r' || sc.ch == '\n') { - sc.SetState(SCE_F_DEFAULT); - } - } else if (sc.state == SCE_F_STRING1) { - prevState = sc.state; - if (sc.ch == '\'') { - if (sc.chNext == '\'') { - sc.Forward(); - } else { - sc.ForwardSetState(SCE_F_DEFAULT); - prevState = SCE_F_DEFAULT; - } - } else if (sc.atLineEnd) { - sc.ChangeState(SCE_F_STRINGEOL); - sc.ForwardSetState(SCE_F_DEFAULT); - } - } else if (sc.state == SCE_F_STRING2) { - prevState = sc.state; - if (sc.atLineEnd) { - sc.ChangeState(SCE_F_STRINGEOL); - sc.ForwardSetState(SCE_F_DEFAULT); - } else if (sc.ch == '\"') { - if (sc.chNext == '\"') { - sc.Forward(); - } else { - sc.ForwardSetState(SCE_F_DEFAULT); - prevState = SCE_F_DEFAULT; - } - } - } else if (sc.state == SCE_F_OPERATOR2) { - if (sc.ch == '.') { - sc.ForwardSetState(SCE_F_DEFAULT); - } - } else if (sc.state == SCE_F_CONTINUATION) { - sc.SetState(SCE_F_DEFAULT); - } else if (sc.state == SCE_F_LABEL) { - if (!IsADigit(sc.ch)) { - sc.SetState(SCE_F_DEFAULT); - } else { - if (isFixFormat && sc.currentPos-posLineStart > 4) - sc.SetState(SCE_F_DEFAULT); - else if (numNonBlank > 5) - sc.SetState(SCE_F_DEFAULT); - } - } - /***************************************/ - // Determine if a new state should be entered. - if (sc.state == SCE_F_DEFAULT) { - if (sc.ch == '!') { - if (sc.MatchIgnoreCase("!dec$") || sc.MatchIgnoreCase("!dir$") || - sc.MatchIgnoreCase("!ms$") || sc.chNext == '$') { - sc.SetState(SCE_F_PREPROCESSOR); - } else { - sc.SetState(SCE_F_COMMENT); - } - } else if ((!isFixFormat) && IsADigit(sc.ch) && numNonBlank == 1) { - sc.SetState(SCE_F_LABEL); - } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_F_NUMBER); - } else if ((tolower(sc.ch) == 'b' || tolower(sc.ch) == 'o' || - tolower(sc.ch) == 'z') && (sc.chNext == '\"' || sc.chNext == '\'')) { - sc.SetState(SCE_F_NUMBER); - sc.Forward(); - } else if (sc.ch == '.' && isalpha(sc.chNext)) { - sc.SetState(SCE_F_OPERATOR2); - } else if (IsAWordStart(sc.ch)) { - sc.SetState(SCE_F_IDENTIFIER); - } else if (sc.ch == '\"') { - sc.SetState(SCE_F_STRING2); - } else if (sc.ch == '\'') { - sc.SetState(SCE_F_STRING1); - } else if (isoperator(static_cast(sc.ch))) { - sc.SetState(SCE_F_OPERATOR); - } - } - } - sc.Complete(); -} -/***************************************/ -static void CheckLevelCommentLine(const unsigned int nComL, - Sci_Position nComColB[], Sci_Position nComColF[], Sci_Position &nComCur, - bool comLineB[], bool comLineF[], bool &comLineCur, - int &levelDeltaNext) { - levelDeltaNext = 0; - if (!comLineCur) { - return; - } - - if (!comLineF[0] || nComColF[0] != nComCur) { - unsigned int i=0; - for (; i= nLineTotal) { - return; - } - - for (int i=nComL-2; i>=0; i--) { - nComColB[i+1] = nComColB[i]; - comLineB[i+1] = comLineB[i]; - } - nComColB[0] = nComCur; - comLineB[0] = comLineCur; - nComCur = nComColF[0]; - comLineCur = comLineF[0]; - for (unsigned int i=0; i+1 0) { - lineCurrent--; - startPos = styler.LineStart(lineCurrent); - isPrevLine = true; - } else { - isPrevLine = false; - } - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - int levelDeltaNext = 0; - - const unsigned int nComL = 3; // defines how many comment lines should be before they are folded - Sci_Position nComColB[nComL] = {}; - Sci_Position nComColF[nComL] = {}; - Sci_Position nComCur = 0; - bool comLineB[nComL] = {}; - bool comLineF[nComL] = {}; - bool comLineCur; - Sci_Position nLineTotal = styler.GetLine(styler.Length()-1) + 1; - if (foldComment) { - for (unsigned int i=0; i= nLineTotal) { - comLineF[i] = false; - break; - } - GetIfLineComment(styler, isFixFormat, chL, comLineF[i], nComColF[i]); - } - GetIfLineComment(styler, isFixFormat, lineCurrent, comLineCur, nComCur); - CheckBackComLines(styler, isFixFormat, lineCurrent, nComL, nComColB, nComColF, nComCur, - comLineB, comLineF, comLineCur); - } - int levelCurrent = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - - /***************************************/ - Sci_Position lastStart = 0; - char prevWord[32] = ""; - /***************************************/ - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - char chNextNonBlank = chNext; - bool nextEOL = false; - if (IsALineEnd(chNextNonBlank)) { - nextEOL = true; - } - Sci_PositionU j=i+1; - while(IsABlank(chNextNonBlank) && j(tolower(styler[lastStart+k])); - } - s[k] = '\0'; - // Handle the forall and where statement and structure. - if (strcmp(s, "forall") == 0 || (strcmp(s, "where") == 0 && strcmp(prevWord, "else") != 0)) { - if (strcmp(prevWord, "end") != 0) { - j = i + 1; - char chBrace = '(', chSeek = ')', ch1 = styler.SafeGetCharAt(j); - // Find the position of the first ( - while (ch1 != chBrace && j 0) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) - styler.SetLevel(lineCurrent, lev); - - lineCurrent++; - levelCurrent += levelDeltaNext; - levelDeltaNext = 0; - visibleChars = 0; - strcpy(prevWord, ""); - isPrevLine = false; - - if (foldComment) { - StepCommentLine(styler, isFixFormat, lineCurrent, nComL, nComColB, nComColF, nComCur, - comLineB, comLineF, comLineCur); - } - } - /***************************************/ - if (!isspacechar(ch)) visibleChars++; - } - /***************************************/ -} -/***************************************/ -static const char * const FortranWordLists[] = { - "Primary keywords and identifiers", - "Intrinsic functions", - "Extended and user defined functions", - 0, -}; -/***************************************/ -static void ColouriseFortranDocFreeFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - ColouriseFortranDoc(startPos, length, initStyle, keywordlists, styler, false); -} -/***************************************/ -static void ColouriseFortranDocFixFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - ColouriseFortranDoc(startPos, length, initStyle, keywordlists, styler, true); -} -/***************************************/ -static void FoldFortranDocFreeFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *[], Accessor &styler) { - FoldFortranDoc(startPos, length, initStyle,styler, false); -} -/***************************************/ -static void FoldFortranDocFixFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *[], Accessor &styler) { - FoldFortranDoc(startPos, length, initStyle,styler, true); -} -/***************************************/ -LexerModule lmFortran(SCLEX_FORTRAN, ColouriseFortranDocFreeFormat, "fortran", FoldFortranDocFreeFormat, FortranWordLists); -LexerModule lmF77(SCLEX_F77, ColouriseFortranDocFixFormat, "f77", FoldFortranDocFixFormat, FortranWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexGAP.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexGAP.cpp deleted file mode 100644 index a2eca95ab..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexGAP.cpp +++ /dev/null @@ -1,264 +0,0 @@ -// Scintilla source code edit control -/** @file LexGAP.cxx - ** Lexer for the GAP language. (The GAP System for Computational Discrete Algebra) - ** http://www.gap-system.org - **/ -// Copyright 2007 by Istvan Szollosi ( szteven gmail com ) -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsGAPOperator(char ch) { - if (IsASCII(ch) && isalnum(ch)) return false; - if (ch == '+' || ch == '-' || ch == '*' || ch == '/' || - ch == '^' || ch == ',' || ch == '!' || ch == '.' || - ch == '=' || ch == '<' || ch == '>' || ch == '(' || - ch == ')' || ch == ';' || ch == '[' || ch == ']' || - ch == '{' || ch == '}' || ch == ':' ) - return true; - return false; -} - -static void GetRange(Sci_PositionU start, Sci_PositionU end, Accessor &styler, char *s, Sci_PositionU len) { - Sci_PositionU i = 0; - while ((i < end - start + 1) && (i < len-1)) { - s[i] = static_cast(styler[start + i]); - i++; - } - s[i] = '\0'; -} - -static void ColouriseGAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) { - - WordList &keywords1 = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; - WordList &keywords4 = *keywordlists[3]; - - // Do not leak onto next line - if (initStyle == SCE_GAP_STRINGEOL) initStyle = SCE_GAP_DEFAULT; - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - - // Prevent SCE_GAP_STRINGEOL from leaking back to previous line - if ( sc.atLineStart ) { - if (sc.state == SCE_GAP_STRING) sc.SetState(SCE_GAP_STRING); - if (sc.state == SCE_GAP_CHAR) sc.SetState(SCE_GAP_CHAR); - } - - // Handle line continuation generically - if (sc.ch == '\\' ) { - if (sc.chNext == '\n' || sc.chNext == '\r') { - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - sc.Forward(); - } - continue; - } - } - - // Determine if the current state should terminate - switch (sc.state) { - case SCE_GAP_OPERATOR : - sc.SetState(SCE_GAP_DEFAULT); - break; - - case SCE_GAP_NUMBER : - if (!IsADigit(sc.ch)) { - if (sc.ch == '\\') { - if (!sc.atLineEnd) { - if (!IsADigit(sc.chNext)) { - sc.Forward(); - sc.ChangeState(SCE_GAP_IDENTIFIER); - } - } - } else if (isalpha(sc.ch) || sc.ch == '_') { - sc.ChangeState(SCE_GAP_IDENTIFIER); - } - else sc.SetState(SCE_GAP_DEFAULT); - } - break; - - case SCE_GAP_IDENTIFIER : - if (!(iswordstart(static_cast(sc.ch)) || sc.ch == '$')) { - if (sc.ch == '\\') sc.Forward(); - else { - char s[1000]; - sc.GetCurrent(s, sizeof(s)); - if (keywords1.InList(s)) { - sc.ChangeState(SCE_GAP_KEYWORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_GAP_KEYWORD2); - } else if (keywords3.InList(s)) { - sc.ChangeState(SCE_GAP_KEYWORD3); - } else if (keywords4.InList(s)) { - sc.ChangeState(SCE_GAP_KEYWORD4); - } - sc.SetState(SCE_GAP_DEFAULT); - } - } - break; - - case SCE_GAP_COMMENT : - if (sc.atLineEnd) { - sc.SetState(SCE_GAP_DEFAULT); - } - break; - - case SCE_GAP_STRING: - if (sc.atLineEnd) { - sc.ChangeState(SCE_GAP_STRINGEOL); - } else if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\"') { - sc.ForwardSetState(SCE_GAP_DEFAULT); - } - break; - - case SCE_GAP_CHAR: - if (sc.atLineEnd) { - sc.ChangeState(SCE_GAP_STRINGEOL); - } else if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\'') { - sc.ForwardSetState(SCE_GAP_DEFAULT); - } - break; - - case SCE_GAP_STRINGEOL: - if (sc.atLineStart) { - sc.SetState(SCE_GAP_DEFAULT); - } - break; - } - - // Determine if a new state should be entered - if (sc.state == SCE_GAP_DEFAULT) { - if (IsGAPOperator(static_cast(sc.ch))) { - sc.SetState(SCE_GAP_OPERATOR); - } - else if (IsADigit(sc.ch)) { - sc.SetState(SCE_GAP_NUMBER); - } else if (isalpha(sc.ch) || sc.ch == '_' || sc.ch == '\\' || sc.ch == '$' || sc.ch == '~') { - sc.SetState(SCE_GAP_IDENTIFIER); - if (sc.ch == '\\') sc.Forward(); - } else if (sc.ch == '#') { - sc.SetState(SCE_GAP_COMMENT); - } else if (sc.ch == '\"') { - sc.SetState(SCE_GAP_STRING); - } else if (sc.ch == '\'') { - sc.SetState(SCE_GAP_CHAR); - } - } - - } - sc.Complete(); -} - -static int ClassifyFoldPointGAP(const char* s) { - int level = 0; - if (strcmp(s, "function") == 0 || - strcmp(s, "do") == 0 || - strcmp(s, "if") == 0 || - strcmp(s, "repeat") == 0 ) { - level = 1; - } else if (strcmp(s, "end") == 0 || - strcmp(s, "od") == 0 || - strcmp(s, "fi") == 0 || - strcmp(s, "until") == 0 ) { - level = -1; - } - return level; -} - -static void FoldGAPDoc( Sci_PositionU startPos, Sci_Position length, int initStyle, WordList** , Accessor &styler) { - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - int style = initStyle; - - Sci_Position lastStart = 0; - - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int stylePrev = style; - style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - - if (stylePrev != SCE_GAP_KEYWORD && style == SCE_GAP_KEYWORD) { - // Store last word start point. - lastStart = i; - } - - if (stylePrev == SCE_GAP_KEYWORD) { - if(iswordchar(ch) && !iswordchar(chNext)) { - char s[100]; - GetRange(lastStart, i, styler, s, sizeof(s)); - levelCurrent += ClassifyFoldPointGAP(s); - } - } - - if (atEOL) { - int lev = levelPrev; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - - if (!isspacechar(ch)) - visibleChars++; - } - - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -static const char * const GAPWordListDesc[] = { - "Keywords 1", - "Keywords 2", - "Keywords 3 (unused)", - "Keywords 4 (unused)", - 0 -}; - -LexerModule lmGAP( - SCLEX_GAP, - ColouriseGAPDoc, - "gap", - FoldGAPDoc, - GAPWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexGui4Cli.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexGui4Cli.cpp deleted file mode 100644 index e321a5b85..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexGui4Cli.cpp +++ /dev/null @@ -1,311 +0,0 @@ -// Scintilla source code edit control -// Copyright 1998-2002 by Neil Hodgson -/* -This is the Lexer for Gui4Cli, included in SciLexer.dll -- by d. Keletsekis, 2/10/2003 - -To add to SciLexer.dll: -1. Add the values below to INCLUDE\Scintilla.iface -2. Run the scripts/HFacer.py script -3. Run the scripts/LexGen.py script - -val SCE_GC_DEFAULT=0 -val SCE_GC_COMMENTLINE=1 -val SCE_GC_COMMENTBLOCK=2 -val SCE_GC_GLOBAL=3 -val SCE_GC_EVENT=4 -val SCE_GC_ATTRIBUTE=5 -val SCE_GC_CONTROL=6 -val SCE_GC_COMMAND=7 -val SCE_GC_STRING=8 -val SCE_GC_OPERATOR=9 -*/ - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -#define debug Platform::DebugPrintf - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch =='\\'); -} - -inline bool isGCOperator(int ch) -{ if (isalnum(ch)) - return false; - // '.' left out as it is used to make up numbers - if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || - ch == '(' || ch == ')' || ch == '=' || ch == '%' || - ch == '[' || ch == ']' || ch == '<' || ch == '>' || - ch == ',' || ch == ';' || ch == ':') - return true; - return false; -} - -#define isSpace(x) ((x)==' ' || (x)=='\t') -#define isNL(x) ((x)=='\n' || (x)=='\r') -#define isSpaceOrNL(x) (isSpace(x) || isNL(x)) -#define BUFFSIZE 500 -#define isFoldPoint(x) ((styler.LevelAt(x) & SC_FOLDLEVELNUMBERMASK) == 1024) - -static void colorFirstWord(WordList *keywordlists[], Accessor &styler, - StyleContext *sc, char *buff, Sci_Position length, Sci_Position) -{ - Sci_Position c = 0; - while (sc->More() && isSpaceOrNL(sc->ch)) - { sc->Forward(); - } - styler.ColourTo(sc->currentPos - 1, sc->state); - - if (!IsAWordChar(sc->ch)) // comment, marker, etc.. - return; - - while (sc->More() && !isSpaceOrNL(sc->ch) && (c < length-1) && !isGCOperator(sc->ch)) - { buff[c] = static_cast(sc->ch); - ++c; sc->Forward(); - } - buff[c] = '\0'; - char *p = buff; - while (*p) // capitalize.. - { if (islower(*p)) *p = static_cast(toupper(*p)); - ++p; - } - - WordList &kGlobal = *keywordlists[0]; // keyword lists set by the user - WordList &kEvent = *keywordlists[1]; - WordList &kAttribute = *keywordlists[2]; - WordList &kControl = *keywordlists[3]; - WordList &kCommand = *keywordlists[4]; - - int state = 0; - // int level = styler.LevelAt(line) & SC_FOLDLEVELNUMBERMASK; - // debug ("line = %d, level = %d", line, level); - - if (kGlobal.InList(buff)) state = SCE_GC_GLOBAL; - else if (kAttribute.InList(buff)) state = SCE_GC_ATTRIBUTE; - else if (kControl.InList(buff)) state = SCE_GC_CONTROL; - else if (kCommand.InList(buff)) state = SCE_GC_COMMAND; - else if (kEvent.InList(buff)) state = SCE_GC_EVENT; - - if (state) - { sc->ChangeState(state); - styler.ColourTo(sc->currentPos - 1, sc->state); - sc->ChangeState(SCE_GC_DEFAULT); - } - else - { sc->ChangeState(SCE_GC_DEFAULT); - styler.ColourTo(sc->currentPos - 1, sc->state); - } -} - -// Main colorizing function called by Scintilla -static void -ColouriseGui4CliDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) -{ - styler.StartAt(startPos); - - Sci_Position currentline = styler.GetLine(startPos); - int quotestart = 0, oldstate; - styler.StartSegment(startPos); - bool noforward; - char buff[BUFFSIZE+1]; // buffer for command name - - StyleContext sc(startPos, length, initStyle, styler); - buff[0] = '\0'; // cbuff = 0; - - if (sc.state != SCE_GC_COMMENTBLOCK) // colorize 1st word.. - colorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline); - - while (sc.More()) - { noforward = 0; - - switch (sc.ch) - { - case '/': - if (sc.state == SCE_GC_COMMENTBLOCK || sc.state == SCE_GC_STRING) - break; - if (sc.chNext == '/') // line comment - { sc.SetState (SCE_GC_COMMENTLINE); - sc.Forward(); - styler.ColourTo(sc.currentPos, sc.state); - } - else if (sc.chNext == '*') // block comment - { sc.SetState(SCE_GC_COMMENTBLOCK); - sc.Forward(); - styler.ColourTo(sc.currentPos, sc.state); - } - else - styler.ColourTo(sc.currentPos, sc.state); - break; - - case '*': // end of comment block, or operator.. - if (sc.state == SCE_GC_STRING) - break; - if (sc.state == SCE_GC_COMMENTBLOCK && sc.chNext == '/') - { sc.Forward(); - styler.ColourTo(sc.currentPos, sc.state); - sc.ChangeState (SCE_GC_DEFAULT); - } - else - styler.ColourTo(sc.currentPos, sc.state); - break; - - case '\'': case '\"': // strings.. - if (sc.state == SCE_GC_COMMENTBLOCK || sc.state == SCE_GC_COMMENTLINE) - break; - if (sc.state == SCE_GC_STRING) - { if (sc.ch == quotestart) // match same quote char.. - { styler.ColourTo(sc.currentPos, sc.state); - sc.ChangeState(SCE_GC_DEFAULT); - quotestart = 0; - } } - else - { styler.ColourTo(sc.currentPos - 1, sc.state); - sc.ChangeState(SCE_GC_STRING); - quotestart = sc.ch; - } - break; - - case ';': // end of commandline character - if (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE && - sc.state != SCE_GC_STRING) - { - styler.ColourTo(sc.currentPos - 1, sc.state); - styler.ColourTo(sc.currentPos, SCE_GC_OPERATOR); - sc.ChangeState(SCE_GC_DEFAULT); - sc.Forward(); - colorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline); - noforward = 1; // don't move forward - already positioned at next char.. - } - break; - - case '+': case '-': case '=': case '!': // operators.. - case '<': case '>': case '&': case '|': case '$': - if (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE && - sc.state != SCE_GC_STRING) - { - styler.ColourTo(sc.currentPos - 1, sc.state); - styler.ColourTo(sc.currentPos, SCE_GC_OPERATOR); - sc.ChangeState(SCE_GC_DEFAULT); - } - break; - - case '\\': // escape - same as operator, but also mark in strings.. - if (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE) - { - oldstate = sc.state; - styler.ColourTo(sc.currentPos - 1, sc.state); - sc.Forward(); // mark also the next char.. - styler.ColourTo(sc.currentPos, SCE_GC_OPERATOR); - sc.ChangeState(oldstate); - } - break; - - case '\n': case '\r': - ++currentline; - if (sc.state == SCE_GC_COMMENTLINE) - { styler.ColourTo(sc.currentPos, sc.state); - sc.ChangeState (SCE_GC_DEFAULT); - } - else if (sc.state != SCE_GC_COMMENTBLOCK) - { colorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline); - noforward = 1; // don't move forward - already positioned at next char.. - } - break; - -// case ' ': case '\t': -// default : - } - - if (!noforward) sc.Forward(); - - } - sc.Complete(); -} - -// Main folding function called by Scintilla - (based on props (.ini) files function) -static void FoldGui4Cli(Sci_PositionU startPos, Sci_Position length, int, - WordList *[], Accessor &styler) -{ - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - bool headerPoint = false; - - for (Sci_PositionU i = startPos; i < endPos; i++) - { - char ch = chNext; - chNext = styler[i+1]; - - int style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - - if (style == SCE_GC_EVENT || style == SCE_GC_GLOBAL) - { headerPoint = true; // fold at events and globals - } - - if (atEOL) - { int lev = SC_FOLDLEVELBASE+1; - - if (headerPoint) - lev = SC_FOLDLEVELBASE; - - if (visibleChars == 0 && foldCompact) - lev |= SC_FOLDLEVELWHITEFLAG; - - if (headerPoint) - lev |= SC_FOLDLEVELHEADERFLAG; - - if (lev != styler.LevelAt(lineCurrent)) // set level, if not already correct - { styler.SetLevel(lineCurrent, lev); - } - - lineCurrent++; // re-initialize our flags - visibleChars = 0; - headerPoint = false; - } - - if (!(isspacechar(ch))) // || (style == SCE_GC_COMMENTLINE) || (style != SCE_GC_COMMENTBLOCK))) - visibleChars++; - } - - int lev = headerPoint ? SC_FOLDLEVELBASE : SC_FOLDLEVELBASE+1; - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, lev | flagsNext); -} - -// I have no idea what these are for.. probably accessible by some message. -static const char * const gui4cliWordListDesc[] = { - "Globals", "Events", "Attributes", "Control", "Commands", - 0 -}; - -// Declare language & pass our function pointers to Scintilla -LexerModule lmGui4Cli(SCLEX_GUI4CLI, ColouriseGui4CliDoc, "gui4cli", FoldGui4Cli, gui4cliWordListDesc); - -#undef debug - diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHTML.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHTML.cpp deleted file mode 100644 index 650112220..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHTML.cpp +++ /dev/null @@ -1,2469 +0,0 @@ -// Scintilla source code edit control -/** @file LexHTML.cxx - ** Lexer for HTML. - **/ -// Copyright 1998-2005 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" -#include "StringCopy.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "OptionSet.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - -namespace { - -#define SCE_HA_JS (SCE_HJA_START - SCE_HJ_START) -#define SCE_HA_VBS (SCE_HBA_START - SCE_HB_START) -#define SCE_HA_PYTHON (SCE_HPA_START - SCE_HP_START) - -enum script_type { eScriptNone = 0, eScriptJS, eScriptVBS, eScriptPython, eScriptPHP, eScriptXML, eScriptSGML, eScriptSGMLblock, eScriptComment }; -enum script_mode { eHtml = 0, eNonHtmlScript, eNonHtmlPreProc, eNonHtmlScriptPreProc }; - -inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_'); -} - -inline bool IsAWordStart(const int ch) { - return (ch < 0x80) && (isalnum(ch) || ch == '_'); -} - -inline bool IsOperator(int ch) { - if (IsASCII(ch) && isalnum(ch)) - return false; - // '.' left out as it is used to make up numbers - if (ch == '%' || ch == '^' || ch == '&' || ch == '*' || - ch == '(' || ch == ')' || ch == '-' || ch == '+' || - ch == '=' || ch == '|' || ch == '{' || ch == '}' || - ch == '[' || ch == ']' || ch == ':' || ch == ';' || - ch == '<' || ch == '>' || ch == ',' || ch == '/' || - ch == '?' || ch == '!' || ch == '.' || ch == '~') - return true; - return false; -} - -void GetTextSegment(Accessor &styler, Sci_PositionU start, Sci_PositionU end, char *s, size_t len) { - Sci_PositionU i = 0; - for (; (i < end - start + 1) && (i < len-1); i++) { - s[i] = MakeLowerCase(styler[start + i]); - } - s[i] = '\0'; -} - -std::string GetStringSegment(Accessor &styler, Sci_PositionU start, Sci_PositionU end) { - std::string s; - Sci_PositionU i = 0; - for (; (i < end - start + 1); i++) { - s.push_back(MakeLowerCase(styler[start + i])); - } - return s; -} - -std::string GetNextWord(Accessor &styler, Sci_PositionU start) { - std::string ret; - Sci_PositionU i = 0; - for (; i < 200; i++) { // Put an upper limit to bound time taken for unexpected text. - const char ch = styler.SafeGetCharAt(start + i); - if ((i == 0) && !IsAWordStart(ch)) - break; - if ((i > 0) && !IsAWordChar(ch)) - break; - ret.push_back(ch); - } - return ret; -} - -script_type segIsScriptingIndicator(Accessor &styler, Sci_PositionU start, Sci_PositionU end, script_type prevValue) { - char s[100]; - GetTextSegment(styler, start, end, s, sizeof(s)); - //Platform::DebugPrintf("Scripting indicator [%s]\n", s); - if (strstr(s, "src")) // External script - return eScriptNone; - if (strstr(s, "vbs")) - return eScriptVBS; - if (strstr(s, "pyth")) - return eScriptPython; - if (strstr(s, "javas")) - return eScriptJS; - if (strstr(s, "jscr")) - return eScriptJS; - if (strstr(s, "php")) - return eScriptPHP; - if (strstr(s, "xml")) { - const char *xml = strstr(s, "xml"); - for (const char *t=s; t= SCE_HP_START) && (state <= SCE_HP_IDENTIFIER)) { - return eScriptPython; - } else if ((state >= SCE_HB_START) && (state <= SCE_HB_STRINGEOL)) { - return eScriptVBS; - } else if ((state >= SCE_HJ_START) && (state <= SCE_HJ_REGEX)) { - return eScriptJS; - } else if ((state >= SCE_HPHP_DEFAULT) && (state <= SCE_HPHP_COMMENTLINE)) { - return eScriptPHP; - } else if ((state >= SCE_H_SGML_DEFAULT) && (state < SCE_H_SGML_BLOCK_DEFAULT)) { - return eScriptSGML; - } else if (state == SCE_H_SGML_BLOCK_DEFAULT) { - return eScriptSGMLblock; - } else { - return eScriptNone; - } -} - -int statePrintForState(int state, script_mode inScriptType) { - int StateToPrint = state; - - if (state >= SCE_HJ_START) { - if ((state >= SCE_HP_START) && (state <= SCE_HP_IDENTIFIER)) { - StateToPrint = state + ((inScriptType == eNonHtmlScript) ? 0 : SCE_HA_PYTHON); - } else if ((state >= SCE_HB_START) && (state <= SCE_HB_STRINGEOL)) { - StateToPrint = state + ((inScriptType == eNonHtmlScript) ? 0 : SCE_HA_VBS); - } else if ((state >= SCE_HJ_START) && (state <= SCE_HJ_REGEX)) { - StateToPrint = state + ((inScriptType == eNonHtmlScript) ? 0 : SCE_HA_JS); - } - } - - return StateToPrint; -} - -int stateForPrintState(int StateToPrint) { - int state; - - if ((StateToPrint >= SCE_HPA_START) && (StateToPrint <= SCE_HPA_IDENTIFIER)) { - state = StateToPrint - SCE_HA_PYTHON; - } else if ((StateToPrint >= SCE_HBA_START) && (StateToPrint <= SCE_HBA_STRINGEOL)) { - state = StateToPrint - SCE_HA_VBS; - } else if ((StateToPrint >= SCE_HJA_START) && (StateToPrint <= SCE_HJA_REGEX)) { - state = StateToPrint - SCE_HA_JS; - } else { - state = StateToPrint; - } - - return state; -} - -inline bool IsNumber(Sci_PositionU start, Accessor &styler) { - return IsADigit(styler[start]) || (styler[start] == '.') || - (styler[start] == '-') || (styler[start] == '#'); -} - -inline bool isStringState(int state) { - bool bResult; - - switch (state) { - case SCE_HJ_DOUBLESTRING: - case SCE_HJ_SINGLESTRING: - case SCE_HJA_DOUBLESTRING: - case SCE_HJA_SINGLESTRING: - case SCE_HB_STRING: - case SCE_HBA_STRING: - case SCE_HP_STRING: - case SCE_HP_CHARACTER: - case SCE_HP_TRIPLE: - case SCE_HP_TRIPLEDOUBLE: - case SCE_HPA_STRING: - case SCE_HPA_CHARACTER: - case SCE_HPA_TRIPLE: - case SCE_HPA_TRIPLEDOUBLE: - case SCE_HPHP_HSTRING: - case SCE_HPHP_SIMPLESTRING: - case SCE_HPHP_HSTRING_VARIABLE: - case SCE_HPHP_COMPLEX_VARIABLE: - bResult = true; - break; - default : - bResult = false; - break; - } - return bResult; -} - -inline bool stateAllowsTermination(int state) { - bool allowTermination = !isStringState(state); - if (allowTermination) { - switch (state) { - case SCE_HB_COMMENTLINE: - case SCE_HPHP_COMMENT: - case SCE_HP_COMMENTLINE: - case SCE_HPA_COMMENTLINE: - allowTermination = false; - } - } - return allowTermination; -} - -// not really well done, since it's only comments that should lex the %> and <% -inline bool isCommentASPState(int state) { - bool bResult; - - switch (state) { - case SCE_HJ_COMMENT: - case SCE_HJ_COMMENTLINE: - case SCE_HJ_COMMENTDOC: - case SCE_HB_COMMENTLINE: - case SCE_HP_COMMENTLINE: - case SCE_HPHP_COMMENT: - case SCE_HPHP_COMMENTLINE: - bResult = true; - break; - default : - bResult = false; - break; - } - return bResult; -} - -void classifyAttribHTML(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, Accessor &styler) { - const bool wordIsNumber = IsNumber(start, styler); - char chAttr = SCE_H_ATTRIBUTEUNKNOWN; - if (wordIsNumber) { - chAttr = SCE_H_NUMBER; - } else { - std::string s = GetStringSegment(styler, start, end); - if (keywords.InList(s.c_str())) - chAttr = SCE_H_ATTRIBUTE; - } - if ((chAttr == SCE_H_ATTRIBUTEUNKNOWN) && !keywords) - // No keywords -> all are known - chAttr = SCE_H_ATTRIBUTE; - styler.ColourTo(end, chAttr); -} - -int classifyTagHTML(Sci_PositionU start, Sci_PositionU end, - const WordList &keywords, Accessor &styler, bool &tagDontFold, - bool caseSensitive, bool isXml, bool allowScripts, - const std::set &nonFoldingTags) { - std::string tag; - // Copy after the '<' - for (Sci_PositionU cPos = start; cPos <= end; cPos++) { - const char ch = styler[cPos]; - if ((ch != '<') && (ch != '/')) { - tag.push_back(caseSensitive ? ch : MakeLowerCase(ch)); - } - } - // if the current language is XML, I can fold any tag - // if the current language is HTML, I don't want to fold certain tags (input, meta, etc.) - //...to find it in the list of no-container-tags - tagDontFold = (!isXml) && (nonFoldingTags.count(tag) > 0); - // No keywords -> all are known - char chAttr = SCE_H_TAGUNKNOWN; - if (!tag.empty() && (tag[0] == '!')) { - chAttr = SCE_H_SGML_DEFAULT; - } else if (!keywords || keywords.InList(tag.c_str())) { - chAttr = SCE_H_TAG; - } - styler.ColourTo(end, chAttr); - if (chAttr == SCE_H_TAG) { - if (allowScripts && (tag == "script")) { - // check to see if this is a self-closing tag by sniffing ahead - bool isSelfClose = false; - for (Sci_PositionU cPos = end; cPos <= end + 200; cPos++) { - const char ch = styler.SafeGetCharAt(cPos, '\0'); - if (ch == '\0' || ch == '>') - break; - else if (ch == '/' && styler.SafeGetCharAt(cPos + 1, '\0') == '>') { - isSelfClose = true; - break; - } - } - - // do not enter a script state if the tag self-closed - if (!isSelfClose) - chAttr = SCE_H_SCRIPT; - } else if (!isXml && (tag == "comment")) { - chAttr = SCE_H_COMMENT; - } - } - return chAttr; -} - -void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end, - const WordList &keywords, Accessor &styler, script_mode inScriptType) { - char s[30 + 1]; - Sci_PositionU i = 0; - for (; i < end - start + 1 && i < 30; i++) { - s[i] = styler[start + i]; - } - s[i] = '\0'; - - char chAttr = SCE_HJ_WORD; - const bool wordIsNumber = IsADigit(s[0]) || ((s[0] == '.') && IsADigit(s[1])); - if (wordIsNumber) { - chAttr = SCE_HJ_NUMBER; - } else if (keywords.InList(s)) { - chAttr = SCE_HJ_KEYWORD; - } - styler.ColourTo(end, statePrintForState(chAttr, inScriptType)); -} - -int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, Accessor &styler, script_mode inScriptType) { - char chAttr = SCE_HB_IDENTIFIER; - const bool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.'); - if (wordIsNumber) { - chAttr = SCE_HB_NUMBER; - } else { - std::string s = GetStringSegment(styler, start, end); - if (keywords.InList(s.c_str())) { - chAttr = SCE_HB_WORD; - if (s == "rem") - chAttr = SCE_HB_COMMENTLINE; - } - } - styler.ColourTo(end, statePrintForState(chAttr, inScriptType)); - if (chAttr == SCE_HB_COMMENTLINE) - return SCE_HB_COMMENTLINE; - else - return SCE_HB_DEFAULT; -} - -void classifyWordHTPy(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, Accessor &styler, std::string &prevWord, script_mode inScriptType, bool isMako) { - const bool wordIsNumber = IsADigit(styler[start]); - std::string s; - for (Sci_PositionU i = 0; i < end - start + 1 && i < 30; i++) { - s.push_back(styler[start + i]); - } - char chAttr = SCE_HP_IDENTIFIER; - if (prevWord == "class") - chAttr = SCE_HP_CLASSNAME; - else if (prevWord == "def") - chAttr = SCE_HP_DEFNAME; - else if (wordIsNumber) - chAttr = SCE_HP_NUMBER; - else if (keywords.InList(s.c_str())) - chAttr = SCE_HP_WORD; - else if (isMako && (s == "block")) - chAttr = SCE_HP_WORD; - styler.ColourTo(end, statePrintForState(chAttr, inScriptType)); - prevWord = s; -} - -// Update the word colour to default or keyword -// Called when in a PHP word -void classifyWordHTPHP(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, Accessor &styler) { - char chAttr = SCE_HPHP_DEFAULT; - const bool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.' && start+1 <= end && IsADigit(styler[start+1])); - if (wordIsNumber) { - chAttr = SCE_HPHP_NUMBER; - } else { - std::string s = GetStringSegment(styler, start, end); - if (keywords.InList(s.c_str())) - chAttr = SCE_HPHP_WORD; - } - styler.ColourTo(end, chAttr); -} - -bool isWordHSGML(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, Accessor &styler) { - std::string s; - for (Sci_PositionU i = 0; i < end - start + 1 && i < 30; i++) { - s.push_back(styler[start + i]); - } - return keywords.InList(s.c_str()); -} - -bool isWordCdata(Sci_PositionU start, Sci_PositionU end, Accessor &styler) { - std::string s; - for (Sci_PositionU i = 0; i < end - start + 1 && i < 30; i++) { - s.push_back(styler[start + i]); - } - return s == "[CDATA["; -} - -// Return the first state to reach when entering a scripting language -int StateForScript(script_type scriptLanguage) { - int Result; - switch (scriptLanguage) { - case eScriptVBS: - Result = SCE_HB_START; - break; - case eScriptPython: - Result = SCE_HP_START; - break; - case eScriptPHP: - Result = SCE_HPHP_DEFAULT; - break; - case eScriptXML: - Result = SCE_H_TAGUNKNOWN; - break; - case eScriptSGML: - Result = SCE_H_SGML_DEFAULT; - break; - case eScriptComment: - Result = SCE_H_COMMENT; - break; - default : - Result = SCE_HJ_START; - break; - } - return Result; -} - -inline bool issgmlwordchar(int ch) { - return !IsASCII(ch) || - (isalnum(ch) || ch == '.' || ch == '_' || ch == ':' || ch == '!' || ch == '#' || ch == '['); -} - -inline bool IsPhpWordStart(int ch) { - return (IsASCII(ch) && (isalpha(ch) || (ch == '_'))) || (ch >= 0x7f); -} - -inline bool IsPhpWordChar(int ch) { - return IsADigit(ch) || IsPhpWordStart(ch); -} - -bool InTagState(int state) { - return state == SCE_H_TAG || state == SCE_H_TAGUNKNOWN || - state == SCE_H_SCRIPT || - state == SCE_H_ATTRIBUTE || state == SCE_H_ATTRIBUTEUNKNOWN || - state == SCE_H_NUMBER || state == SCE_H_OTHER || - state == SCE_H_DOUBLESTRING || state == SCE_H_SINGLESTRING; -} - -bool IsCommentState(const int state) { - return state == SCE_H_COMMENT || state == SCE_H_SGML_COMMENT; -} - -bool IsScriptCommentState(const int state) { - return state == SCE_HJ_COMMENT || state == SCE_HJ_COMMENTLINE || state == SCE_HJA_COMMENT || - state == SCE_HJA_COMMENTLINE || state == SCE_HB_COMMENTLINE || state == SCE_HBA_COMMENTLINE; -} - -bool isLineEnd(int ch) { - return ch == '\r' || ch == '\n'; -} - -bool isMakoBlockEnd(const int ch, const int chNext, const std::string &blockType) { - if (blockType.empty()) { - return ((ch == '%') && (chNext == '>')); - } else if ((blockType == "inherit") || - (blockType == "namespace") || - (blockType == "include") || - (blockType == "page")) { - return ((ch == '/') && (chNext == '>')); - } else if (blockType == "%") { - if (ch == '/' && isLineEnd(chNext)) - return true; - else - return isLineEnd(ch); - } else if (blockType == "{") { - return ch == '}'; - } else { - return (ch == '>'); - } -} - -bool isDjangoBlockEnd(const int ch, const int chNext, const std::string &blockType) { - if (blockType.empty()) { - return false; - } else if (blockType == "%") { - return ((ch == '%') && (chNext == '}')); - } else if (blockType == "{") { - return ((ch == '}') && (chNext == '}')); - } else { - return false; - } -} - -bool isPHPStringState(int state) { - return - (state == SCE_HPHP_HSTRING) || - (state == SCE_HPHP_SIMPLESTRING) || - (state == SCE_HPHP_HSTRING_VARIABLE) || - (state == SCE_HPHP_COMPLEX_VARIABLE); -} - -Sci_Position FindPhpStringDelimiter(std::string &phpStringDelimiter, Sci_Position i, const Sci_Position lengthDoc, Accessor &styler, bool &isSimpleString) { - Sci_Position j; - const Sci_Position beginning = i - 1; - bool isValidSimpleString = false; - - while (i < lengthDoc && (styler[i] == ' ' || styler[i] == '\t')) - i++; - char ch = styler.SafeGetCharAt(i); - const char chNext = styler.SafeGetCharAt(i + 1); - phpStringDelimiter.clear(); - if (!IsPhpWordStart(ch)) { - if (ch == '\'' && IsPhpWordStart(chNext)) { - i++; - ch = chNext; - isSimpleString = true; - } else { - return beginning; - } - } - phpStringDelimiter.push_back(ch); - i++; - for (j = i; j < lengthDoc && !isLineEnd(styler[j]); j++) { - if (!IsPhpWordChar(styler[j])) { - if (isSimpleString && (styler[j] == '\'') && isLineEnd(styler.SafeGetCharAt(j + 1))) { - isValidSimpleString = true; - j++; - break; - } else { - phpStringDelimiter.clear(); - return beginning; - } - } - phpStringDelimiter.push_back(styler[j]); - } - if (isSimpleString && !isValidSimpleString) { - phpStringDelimiter.clear(); - return beginning; - } - return j - 1; -} - -// Options used for LexerHTML -struct OptionsHTML { - int aspDefaultLanguage = eScriptJS; - bool caseSensitive = false; - bool allowScripts = true; - bool isMako = false; - bool isDjango = false; - bool fold = false; - bool foldHTML = false; - bool foldHTMLPreprocessor = true; - bool foldCompact = true; - bool foldComment = false; - bool foldHeredoc = false; - OptionsHTML() noexcept { - } -}; - -const char * const htmlWordListDesc[] = { - "HTML elements and attributes", - "JavaScript keywords", - "VBScript keywords", - "Python keywords", - "PHP keywords", - "SGML and DTD keywords", - 0, -}; - -const char * const phpscriptWordListDesc[] = { - "", //Unused - "", //Unused - "", //Unused - "", //Unused - "PHP keywords", - "", //Unused - 0, -}; - -struct OptionSetHTML : public OptionSet { - OptionSetHTML(bool isPHPScript_) { - - DefineProperty("asp.default.language", &OptionsHTML::aspDefaultLanguage, - "Script in ASP code is initially assumed to be in JavaScript. " - "To change this to VBScript set asp.default.language to 2. Python is 3."); - - DefineProperty("html.tags.case.sensitive", &OptionsHTML::caseSensitive, - "For XML and HTML, setting this property to 1 will make tags match in a case " - "sensitive way which is the expected behaviour for XML and XHTML."); - - DefineProperty("lexer.xml.allow.scripts", &OptionsHTML::allowScripts, - "Set to 0 to disable scripts in XML."); - - DefineProperty("lexer.html.mako", &OptionsHTML::isMako, - "Set to 1 to enable the mako template language."); - - DefineProperty("lexer.html.django", &OptionsHTML::isDjango, - "Set to 1 to enable the django template language."); - - DefineProperty("fold", &OptionsHTML::fold); - - DefineProperty("fold.html", &OptionsHTML::foldHTML, - "Folding is turned on or off for HTML and XML files with this option. " - "The fold option must also be on for folding to occur."); - - DefineProperty("fold.html.preprocessor", &OptionsHTML::foldHTMLPreprocessor, - "Folding is turned on or off for scripts embedded in HTML files with this option. " - "The default is on."); - - DefineProperty("fold.compact", &OptionsHTML::foldCompact); - - DefineProperty("fold.hypertext.comment", &OptionsHTML::foldComment, - "Allow folding for comments in scripts embedded in HTML. " - "The default is off."); - - DefineProperty("fold.hypertext.heredoc", &OptionsHTML::foldHeredoc, - "Allow folding for heredocs in scripts embedded in HTML. " - "The default is off."); - - DefineWordListSets(isPHPScript_ ? phpscriptWordListDesc : htmlWordListDesc); - } -}; - -LexicalClass lexicalClassesHTML[] = { - // Lexer HTML SCLEX_HTML SCE_H_ SCE_HJ_ SCE_HJA_ SCE_HB_ SCE_HBA_ SCE_HP_ SCE_HPHP_ SCE_HPA_: - 0, "SCE_H_DEFAULT", "default", "Text", - 1, "SCE_H_TAG", "tag", "Tags", - 2, "SCE_H_ERRORTAGUNKNOWN", "error tag", "Unknown Tags", - 3, "SCE_H_ATTRIBUTE", "attribute", "Attributes", - 4, "SCE_H_ATTRIBUTEUNKNOWN", "error attribute", "Unknown Attributes", - 5, "SCE_H_NUMBER", "literal numeric", "Numbers", - 6, "SCE_H_DOUBLESTRING", "literal string", "Double quoted strings", - 7, "SCE_H_SINGLESTRING", "literal string", "Single quoted strings", - 8, "SCE_H_OTHER", "tag operator", "Other inside tag, including space and '='", - 9, "SCE_H_COMMENT", "comment", "Comment", - 10, "SCE_H_ENTITY", "literal", "Entities", - 11, "SCE_H_TAGEND", "tag", "XML style tag ends '/>'", - 12, "SCE_H_XMLSTART", "identifier", "XML identifier start ''", - 14, "SCE_H_SCRIPT", "error", "Internal state which should never be visible", - 15, "SCE_H_ASP", "preprocessor", "ASP <% ... %>", - 16, "SCE_H_ASPAT", "preprocessor", "ASP <% ... %>", - 17, "SCE_H_CDATA", "literal", "CDATA", - 18, "SCE_H_QUESTION", "preprocessor", "PHP", - 19, "SCE_H_VALUE", "literal string", "Unquoted values", - 20, "SCE_H_XCCOMMENT", "comment", "JSP Comment <%-- ... --%>", - 21, "SCE_H_SGML_DEFAULT", "default", "SGML tags ", - 22, "SCE_H_SGML_COMMAND", "preprocessor", "SGML command", - 23, "SCE_H_SGML_1ST_PARAM", "preprocessor", "SGML 1st param", - 24, "SCE_H_SGML_DOUBLESTRING", "literal string", "SGML double string", - 25, "SCE_H_SGML_SIMPLESTRING", "literal string", "SGML single string", - 26, "SCE_H_SGML_ERROR", "error", "SGML error", - 27, "SCE_H_SGML_SPECIAL", "literal", "SGML special (#XXXX type)", - 28, "SCE_H_SGML_ENTITY", "literal", "SGML entity", - 29, "SCE_H_SGML_COMMENT", "comment", "SGML comment", - 30, "SCE_H_SGML_1ST_PARAM_COMMENT", "error comment", "SGML first parameter - lexer internal. It is an error if any text is in this style.", - 31, "SCE_H_SGML_BLOCK_DEFAULT", "default", "SGML block", - 32, "", "predefined", "", - 33, "", "predefined", "", - 34, "", "predefined", "", - 35, "", "predefined", "", - 36, "", "predefined", "", - 37, "", "predefined", "", - 38, "", "predefined", "", - 39, "", "predefined", "", - 40, "SCE_HJ_START", "client javascript default", "JS Start - allows eol filled background to not start on same line as SCRIPT tag", - 41, "SCE_HJ_DEFAULT", "client javascript default", "JS Default", - 42, "SCE_HJ_COMMENT", "client javascript comment", "JS Comment", - 43, "SCE_HJ_COMMENTLINE", "client javascript comment line", "JS Line Comment", - 44, "SCE_HJ_COMMENTDOC", "client javascript comment documentation", "JS Doc comment", - 45, "SCE_HJ_NUMBER", "client javascript literal numeric", "JS Number", - 46, "SCE_HJ_WORD", "client javascript identifier", "JS Word", - 47, "SCE_HJ_KEYWORD", "client javascript keyword", "JS Keyword", - 48, "SCE_HJ_DOUBLESTRING", "client javascript literal string", "JS Double quoted string", - 49, "SCE_HJ_SINGLESTRING", "client javascript literal string", "JS Single quoted string", - 50, "SCE_HJ_SYMBOLS", "client javascript operator", "JS Symbols", - 51, "SCE_HJ_STRINGEOL", "client javascript error literal string", "JavaScript EOL", - 52, "SCE_HJ_REGEX", "client javascript literal regex", "JavaScript RegEx", - 53, "", "unused", "", - 54, "", "unused", "", - 55, "SCE_HJA_START", "server javascript default", "JS Start - allows eol filled background to not start on same line as SCRIPT tag", - 56, "SCE_HJA_DEFAULT", "server javascript default", "JS Default", - 57, "SCE_HJA_COMMENT", "server javascript comment", "JS Comment", - 58, "SCE_HJA_COMMENTLINE", "server javascript comment line", "JS Line Comment", - 59, "SCE_HJA_COMMENTDOC", "server javascript comment documentation", "JS Doc comment", - 60, "SCE_HJA_NUMBER", "server javascript literal numeric", "JS Number", - 61, "SCE_HJA_WORD", "server javascript identifier", "JS Word", - 62, "SCE_HJA_KEYWORD", "server javascript keyword", "JS Keyword", - 63, "SCE_HJA_DOUBLESTRING", "server javascript literal string", "JS Double quoted string", - 64, "SCE_HJA_SINGLESTRING", "server javascript literal string", "JS Single quoted string", - 65, "SCE_HJA_SYMBOLS", "server javascript operator", "JS Symbols", - 66, "SCE_HJA_STRINGEOL", "server javascript error literal string", "JavaScript EOL", - 67, "SCE_HJA_REGEX", "server javascript literal regex", "JavaScript RegEx", - 68, "", "unused", "", - 69, "", "unused", "", - 70, "SCE_HB_START", "client basic default", "Start", - 71, "SCE_HB_DEFAULT", "client basic default", "Default", - 72, "SCE_HB_COMMENTLINE", "client basic comment line", "Comment", - 73, "SCE_HB_NUMBER", "client basic literal numeric", "Number", - 74, "SCE_HB_WORD", "client basic keyword", "KeyWord", - 75, "SCE_HB_STRING", "client basic literal string", "String", - 76, "SCE_HB_IDENTIFIER", "client basic identifier", "Identifier", - 77, "SCE_HB_STRINGEOL", "client basic literal string", "Unterminated string", - 78, "", "unused", "", - 79, "", "unused", "", - 80, "SCE_HBA_START", "server basic default", "Start", - 81, "SCE_HBA_DEFAULT", "server basic default", "Default", - 82, "SCE_HBA_COMMENTLINE", "server basic comment line", "Comment", - 83, "SCE_HBA_NUMBER", "server basic literal numeric", "Number", - 84, "SCE_HBA_WORD", "server basic keyword", "KeyWord", - 85, "SCE_HBA_STRING", "server basic literal string", "String", - 86, "SCE_HBA_IDENTIFIER", "server basic identifier", "Identifier", - 87, "SCE_HBA_STRINGEOL", "server basic literal string", "Unterminated string", - 88, "", "unused", "", - 89, "", "unused", "", - 90, "SCE_HP_START", "client python default", "Embedded Python", - 91, "SCE_HP_DEFAULT", "client python default", "Embedded Python", - 92, "SCE_HP_COMMENTLINE", "client python comment line", "Comment", - 93, "SCE_HP_NUMBER", "client python literal numeric", "Number", - 94, "SCE_HP_STRING", "client python literal string", "String", - 95, "SCE_HP_CHARACTER", "client python literal string character", "Single quoted string", - 96, "SCE_HP_WORD", "client python keyword", "Keyword", - 97, "SCE_HP_TRIPLE", "client python literal string", "Triple quotes", - 98, "SCE_HP_TRIPLEDOUBLE", "client python literal string", "Triple double quotes", - 99, "SCE_HP_CLASSNAME", "client python identifier", "Class name definition", - 100, "SCE_HP_DEFNAME", "client python identifier", "Function or method name definition", - 101, "SCE_HP_OPERATOR", "client python operator", "Operators", - 102, "SCE_HP_IDENTIFIER", "client python identifier", "Identifiers", - 103, "", "unused", "", - 104, "SCE_HPHP_COMPLEX_VARIABLE", "server php identifier", "PHP complex variable", - 105, "SCE_HPA_START", "server python default", "ASP Python", - 106, "SCE_HPA_DEFAULT", "server python default", "ASP Python", - 107, "SCE_HPA_COMMENTLINE", "server python comment line", "Comment", - 108, "SCE_HPA_NUMBER", "server python literal numeric", "Number", - 109, "SCE_HPA_STRING", "server python literal string", "String", - 110, "SCE_HPA_CHARACTER", "server python literal string character", "Single quoted string", - 111, "SCE_HPA_WORD", "server python keyword", "Keyword", - 112, "SCE_HPA_TRIPLE", "server python literal string", "Triple quotes", - 113, "SCE_HPA_TRIPLEDOUBLE", "server python literal string", "Triple double quotes", - 114, "SCE_HPA_CLASSNAME", "server python identifier", "Class name definition", - 115, "SCE_HPA_DEFNAME", "server python identifier", "Function or method name definition", - 116, "SCE_HPA_OPERATOR", "server python operator", "Operators", - 117, "SCE_HPA_IDENTIFIER", "server python identifier", "Identifiers", - 118, "SCE_HPHP_DEFAULT", "server php default", "Default", - 119, "SCE_HPHP_HSTRING", "server php literal string", "Double quoted String", - 120, "SCE_HPHP_SIMPLESTRING", "server php literal string", "Single quoted string", - 121, "SCE_HPHP_WORD", "server php keyword", "Keyword", - 122, "SCE_HPHP_NUMBER", "server php literal numeric", "Number", - 123, "SCE_HPHP_VARIABLE", "server php identifier", "Variable", - 124, "SCE_HPHP_COMMENT", "server php comment", "Comment", - 125, "SCE_HPHP_COMMENTLINE", "server php comment line", "One line comment", - 126, "SCE_HPHP_HSTRING_VARIABLE", "server php literal string identifier", "PHP variable in double quoted string", - 127, "SCE_HPHP_OPERATOR", "server php operator", "PHP operator", -}; - -LexicalClass lexicalClassesXML[] = { - // Lexer.Secondary XML SCLEX_XML SCE_H_: - 0, "SCE_H_DEFAULT", "default", "Default", - 1, "SCE_H_TAG", "tag", "Tags", - 2, "SCE_H_TAGUNKNOWN", "error tag", "Unknown Tags", - 3, "SCE_H_ATTRIBUTE", "attribute", "Attributes", - 4, "SCE_H_ERRORATTRIBUTEUNKNOWN", "error attribute", "Unknown Attributes", - 5, "SCE_H_NUMBER", "literal numeric", "Numbers", - 6, "SCE_H_DOUBLESTRING", "literal string", "Double quoted strings", - 7, "SCE_H_SINGLESTRING", "literal string", "Single quoted strings", - 8, "SCE_H_OTHER", "tag operator", "Other inside tag, including space and '='", - 9, "SCE_H_COMMENT", "comment", "Comment", - 10, "SCE_H_ENTITY", "literal", "Entities", - 11, "SCE_H_TAGEND", "tag", "XML style tag ends '/>'", - 12, "SCE_H_XMLSTART", "identifier", "XML identifier start ''", - 14, "", "unused", "", - 15, "", "unused", "", - 16, "", "unused", "", - 17, "SCE_H_CDATA", "literal", "CDATA", - 18, "SCE_H_QUESTION", "preprocessor", "Question", - 19, "SCE_H_VALUE", "literal string", "Unquoted Value", - 20, "", "unused", "", - 21, "SCE_H_SGML_DEFAULT", "default", "SGML tags ", - 22, "SCE_H_SGML_COMMAND", "preprocessor", "SGML command", - 23, "SCE_H_SGML_1ST_PARAM", "preprocessor", "SGML 1st param", - 24, "SCE_H_SGML_DOUBLESTRING", "literal string", "SGML double string", - 25, "SCE_H_SGML_SIMPLESTRING", "literal string", "SGML single string", - 26, "SCE_H_SGML_ERROR", "error", "SGML error", - 27, "SCE_H_SGML_SPECIAL", "literal", "SGML special (#XXXX type)", - 28, "SCE_H_SGML_ENTITY", "literal", "SGML entity", - 29, "SCE_H_SGML_COMMENT", "comment", "SGML comment", - 30, "", "unused", "", - 31, "SCE_H_SGML_BLOCK_DEFAULT", "default", "SGML block", -}; - -const char *tagsThatDoNotFold[] = { - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "isindex", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr" -}; - -} -class LexerHTML : public DefaultLexer { - bool isXml; - bool isPHPScript; - WordList keywords; - WordList keywords2; - WordList keywords3; - WordList keywords4; - WordList keywords5; - WordList keywords6; // SGML (DTD) keywords - OptionsHTML options; - OptionSetHTML osHTML; - std::set nonFoldingTags; -public: - explicit LexerHTML(bool isXml_, bool isPHPScript_) : - DefaultLexer(isXml_ ? lexicalClassesHTML : lexicalClassesXML, - isXml_ ? ELEMENTS(lexicalClassesHTML) : ELEMENTS(lexicalClassesXML)), - isXml(isXml_), - isPHPScript(isPHPScript_), - osHTML(isPHPScript_), - nonFoldingTags(std::begin(tagsThatDoNotFold), std::end(tagsThatDoNotFold)) { - } - ~LexerHTML() override { - } - void SCI_METHOD Release() override { - delete this; - } - const char *SCI_METHOD PropertyNames() override { - return osHTML.PropertyNames(); - } - int SCI_METHOD PropertyType(const char *name) override { - return osHTML.PropertyType(name); - } - const char *SCI_METHOD DescribeProperty(const char *name) override { - return osHTML.DescribeProperty(name); - } - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; - const char *SCI_METHOD DescribeWordListSets() override { - return osHTML.DescribeWordListSets(); - } - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - // No Fold as all folding performs in Lex. - - static ILexer *LexerFactoryHTML() { - return new LexerHTML(false, false); - } - static ILexer *LexerFactoryXML() { - return new LexerHTML(true, false); - } - static ILexer *LexerFactoryPHPScript() { - return new LexerHTML(false, true); - } -}; - -Sci_Position SCI_METHOD LexerHTML::PropertySet(const char *key, const char *val) { - if (osHTML.PropertySet(&options, key, val)) { - return 0; - } - return -1; -} - -Sci_Position SCI_METHOD LexerHTML::WordListSet(int n, const char *wl) { - WordList *wordListN = 0; - switch (n) { - case 0: - wordListN = &keywords; - break; - case 1: - wordListN = &keywords2; - break; - case 2: - wordListN = &keywords3; - break; - case 3: - wordListN = &keywords4; - break; - case 4: - wordListN = &keywords5; - break; - case 5: - wordListN = &keywords6; - break; - } - Sci_Position firstModification = -1; - if (wordListN) { - WordList wlNew; - wlNew.Set(wl); - if (*wordListN != wlNew) { - wordListN->Set(wl); - firstModification = 0; - } - } - return firstModification; -} - -void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - Accessor styler(pAccess, nullptr); - if (isPHPScript && (startPos == 0)) { - initStyle = SCE_HPHP_DEFAULT; - } - styler.StartAt(startPos); - std::string prevWord; - std::string phpStringDelimiter; - int StateToPrint = initStyle; - int state = stateForPrintState(StateToPrint); - std::string makoBlockType; - int makoComment = 0; - std::string djangoBlockType; - // If inside a tag, it may be a script tag, so reread from the start of line starting tag to ensure any language tags are seen - if (InTagState(state)) { - while ((startPos > 0) && (InTagState(styler.StyleAt(startPos - 1)))) { - const Sci_Position backLineStart = styler.LineStart(styler.GetLine(startPos-1)); - length += startPos - backLineStart; - startPos = backLineStart; - } - state = SCE_H_DEFAULT; - } - // String can be heredoc, must find a delimiter first. Reread from beginning of line containing the string, to get the correct lineState - if (isPHPStringState(state)) { - while (startPos > 0 && (isPHPStringState(state) || !isLineEnd(styler[startPos - 1]))) { - startPos--; - length++; - state = styler.StyleAt(startPos); - } - if (startPos == 0) - state = SCE_H_DEFAULT; - } - styler.StartAt(startPos); - - /* Nothing handles getting out of these, so we need not start in any of them. - * As we're at line start and they can't span lines, we'll re-detect them anyway */ - switch (state) { - case SCE_H_QUESTION: - case SCE_H_XMLSTART: - case SCE_H_XMLEND: - case SCE_H_ASP: - state = SCE_H_DEFAULT; - break; - } - - Sci_Position lineCurrent = styler.GetLine(startPos); - int lineState; - if (lineCurrent > 0) { - lineState = styler.GetLineState(lineCurrent-1); - } else { - // Default client and ASP scripting language is JavaScript - lineState = eScriptJS << 8; - lineState |= options.aspDefaultLanguage << 4; - } - script_mode inScriptType = static_cast((lineState >> 0) & 0x03); // 2 bits of scripting mode - - bool tagOpened = (lineState >> 2) & 0x01; // 1 bit to know if we are in an opened tag - bool tagClosing = (lineState >> 3) & 0x01; // 1 bit to know if we are in a closing tag - bool tagDontFold = false; //some HTML tags should not be folded - script_type aspScript = static_cast((lineState >> 4) & 0x0F); // 4 bits of script name - script_type clientScript = static_cast((lineState >> 8) & 0x0F); // 4 bits of script name - int beforePreProc = (lineState >> 12) & 0xFF; // 8 bits of state - - script_type scriptLanguage = ScriptOfState(state); - // If eNonHtmlScript coincides with SCE_H_COMMENT, assume eScriptComment - if (inScriptType == eNonHtmlScript && state == SCE_H_COMMENT) { - scriptLanguage = eScriptComment; - } - script_type beforeLanguage = ScriptOfState(beforePreProc); - const bool foldHTML = options.foldHTML; - const bool fold = foldHTML && options.fold; - const bool foldHTMLPreprocessor = foldHTML && options.foldHTMLPreprocessor; - const bool foldCompact = options.foldCompact; - const bool foldComment = fold && options.foldComment; - const bool foldHeredoc = fold && options.foldHeredoc; - const bool caseSensitive = options.caseSensitive; - const bool allowScripts = options.allowScripts; - const bool isMako = options.isMako; - const bool isDjango = options.isDjango; - const CharacterSet setHTMLWord(CharacterSet::setAlphaNum, ".-_:!#", 0x80, true); - const CharacterSet setTagContinue(CharacterSet::setAlphaNum, ".-_:!#[", 0x80, true); - const CharacterSet setAttributeContinue(CharacterSet::setAlphaNum, ".-_:!#/", 0x80, true); - // TODO: also handle + and - (except if they're part of ++ or --) and return keywords - const CharacterSet setOKBeforeJSRE(CharacterSet::setNone, "([{=,:;!%^&*|?~"); - - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - int visibleChars = 0; - int lineStartVisibleChars = 0; - - int chPrev = ' '; - int ch = ' '; - int chPrevNonWhite = ' '; - // look back to set chPrevNonWhite properly for better regex colouring - if (scriptLanguage == eScriptJS && startPos > 0) { - Sci_Position back = startPos; - int style = 0; - while (--back) { - style = styler.StyleAt(back); - if (style < SCE_HJ_DEFAULT || style > SCE_HJ_COMMENTDOC) - // includes SCE_HJ_COMMENT & SCE_HJ_COMMENTLINE - break; - } - if (style == SCE_HJ_SYMBOLS) { - chPrevNonWhite = static_cast(styler.SafeGetCharAt(back)); - } - } - - styler.StartSegment(startPos); - const Sci_Position lengthDoc = startPos + length; - for (Sci_Position i = startPos; i < lengthDoc; i++) { - const int chPrev2 = chPrev; - chPrev = ch; - if (!IsASpace(ch) && state != SCE_HJ_COMMENT && - state != SCE_HJ_COMMENTLINE && state != SCE_HJ_COMMENTDOC) - chPrevNonWhite = ch; - ch = static_cast(styler[i]); - int chNext = static_cast(styler.SafeGetCharAt(i + 1)); - const int chNext2 = static_cast(styler.SafeGetCharAt(i + 2)); - - // Handle DBCS codepages - if (styler.IsLeadByte(static_cast(ch))) { - chPrev = ' '; - i += 1; - continue; - } - - if ((!IsASpace(ch) || !foldCompact) && fold) - visibleChars++; - if (!IsASpace(ch)) - lineStartVisibleChars++; - - // decide what is the current state to print (depending of the script tag) - StateToPrint = statePrintForState(state, inScriptType); - - // handle script folding - if (fold) { - switch (scriptLanguage) { - case eScriptJS: - case eScriptPHP: - //not currently supported case eScriptVBS: - - if ((state != SCE_HPHP_COMMENT) && (state != SCE_HPHP_COMMENTLINE) && (state != SCE_HJ_COMMENT) && (state != SCE_HJ_COMMENTLINE) && (state != SCE_HJ_COMMENTDOC) && (!isStringState(state))) { - //Platform::DebugPrintf("state=%d, StateToPrint=%d, initStyle=%d\n", state, StateToPrint, initStyle); - //if ((state == SCE_HPHP_OPERATOR) || (state == SCE_HPHP_DEFAULT) || (state == SCE_HJ_SYMBOLS) || (state == SCE_HJ_START) || (state == SCE_HJ_DEFAULT)) { - if (ch == '#') { - Sci_Position j = i + 1; - while ((j < lengthDoc) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { - j++; - } - if (styler.Match(j, "region") || styler.Match(j, "if")) { - levelCurrent++; - } else if (styler.Match(j, "end")) { - levelCurrent--; - } - } else if ((ch == '{') || (ch == '}') || (foldComment && (ch == '/') && (chNext == '*'))) { - levelCurrent += (((ch == '{') || (ch == '/')) ? 1 : -1); - } - } else if (((state == SCE_HPHP_COMMENT) || (state == SCE_HJ_COMMENT)) && foldComment && (ch == '*') && (chNext == '/')) { - levelCurrent--; - } - break; - case eScriptPython: - if (state != SCE_HP_COMMENTLINE && !isMako) { - if ((ch == ':') && ((chNext == '\n') || (chNext == '\r' && chNext2 == '\n'))) { - levelCurrent++; - } else if ((ch == '\n') && !((chNext == '\r') && (chNext2 == '\n')) && (chNext != '\n')) { - // check if the number of tabs is lower than the level - int Findlevel = (levelCurrent & ~SC_FOLDLEVELBASE) * 8; - for (Sci_Position j = 0; Findlevel > 0; j++) { - const char chTmp = styler.SafeGetCharAt(i + j + 1); - if (chTmp == '\t') { - Findlevel -= 8; - } else if (chTmp == ' ') { - Findlevel--; - } else { - break; - } - } - - if (Findlevel > 0) { - levelCurrent -= Findlevel / 8; - if (Findlevel % 8) - levelCurrent--; - } - } - } - break; - default: - break; - } - } - - if ((ch == '\r' && chNext != '\n') || (ch == '\n')) { - // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix) - // Avoid triggering two times on Dos/Win - // New line -> record any line state onto /next/ line - if (fold) { - int lev = levelPrev; - if (visibleChars == 0) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - - styler.SetLevel(lineCurrent, lev); - visibleChars = 0; - levelPrev = levelCurrent; - } - styler.SetLineState(lineCurrent, - ((inScriptType & 0x03) << 0) | - ((tagOpened ? 1 : 0) << 2) | - ((tagClosing ? 1 : 0) << 3) | - ((aspScript & 0x0F) << 4) | - ((clientScript & 0x0F) << 8) | - ((beforePreProc & 0xFF) << 12)); - lineCurrent++; - lineStartVisibleChars = 0; - } - - // handle start of Mako comment line - if (isMako && ch == '#' && chNext == '#') { - makoComment = 1; - state = SCE_HP_COMMENTLINE; - } - - // handle end of Mako comment line - else if (isMako && makoComment && (ch == '\r' || ch == '\n')) { - makoComment = 0; - styler.ColourTo(i - 1, StateToPrint); - if (scriptLanguage == eScriptPython) { - state = SCE_HP_DEFAULT; - } else { - state = SCE_H_DEFAULT; - } - } - // Allow falling through to mako handling code if newline is going to end a block - if (((ch == '\r' && chNext != '\n') || (ch == '\n')) && - (!isMako || (makoBlockType != "%"))) { - } - // Ignore everything in mako comment until the line ends - else if (isMako && makoComment) { - } - - // generic end of script processing - else if ((inScriptType == eNonHtmlScript) && (ch == '<') && (chNext == '/')) { - // Check if it's the end of the script tag (or any other HTML tag) - switch (state) { - // in these cases, you can embed HTML tags (to confirm !!!!!!!!!!!!!!!!!!!!!!) - case SCE_H_DOUBLESTRING: - case SCE_H_SINGLESTRING: - case SCE_HJ_COMMENT: - case SCE_HJ_COMMENTDOC: - //case SCE_HJ_COMMENTLINE: // removed as this is a common thing done to hide - // the end of script marker from some JS interpreters. - case SCE_HB_COMMENTLINE: - case SCE_HBA_COMMENTLINE: - case SCE_HJ_DOUBLESTRING: - case SCE_HJ_SINGLESTRING: - case SCE_HJ_REGEX: - case SCE_HB_STRING: - case SCE_HBA_STRING: - case SCE_HP_STRING: - case SCE_HP_TRIPLE: - case SCE_HP_TRIPLEDOUBLE: - case SCE_HPHP_HSTRING: - case SCE_HPHP_SIMPLESTRING: - case SCE_HPHP_COMMENT: - case SCE_HPHP_COMMENTLINE: - break; - default : - // check if the closing tag is a script tag - if (const char *tag = - state == SCE_HJ_COMMENTLINE || isXml ? "script" : - state == SCE_H_COMMENT ? "comment" : 0) { - Sci_Position j = i + 2; - int chr; - do { - chr = static_cast(*tag++); - } while (chr != 0 && chr == MakeLowerCase(styler.SafeGetCharAt(j++))); - if (chr != 0) break; - } - // closing tag of the script (it's a closing HTML tag anyway) - styler.ColourTo(i - 1, StateToPrint); - state = SCE_H_TAGUNKNOWN; - inScriptType = eHtml; - scriptLanguage = eScriptNone; - clientScript = eScriptJS; - i += 2; - visibleChars += 2; - tagClosing = true; - continue; - } - } - - ///////////////////////////////////// - // handle the start of PHP pre-processor = Non-HTML - else if ((state != SCE_H_ASPAT) && - !isStringState(state) && - (state != SCE_HPHP_COMMENT) && - (state != SCE_HPHP_COMMENTLINE) && - (ch == '<') && - (chNext == '?') && - !IsScriptCommentState(state)) { - beforeLanguage = scriptLanguage; - scriptLanguage = segIsScriptingIndicator(styler, i + 2, i + 6, isXml ? eScriptXML : eScriptPHP); - if ((scriptLanguage != eScriptPHP) && (isStringState(state) || (state==SCE_H_COMMENT))) continue; - styler.ColourTo(i - 1, StateToPrint); - beforePreProc = state; - i++; - visibleChars++; - i += PrintScriptingIndicatorOffset(styler, styler.GetStartSegment() + 2, i + 6); - if (scriptLanguage == eScriptXML) - styler.ColourTo(i, SCE_H_XMLSTART); - else - styler.ColourTo(i, SCE_H_QUESTION); - state = StateForScript(scriptLanguage); - if (inScriptType == eNonHtmlScript) - inScriptType = eNonHtmlScriptPreProc; - else - inScriptType = eNonHtmlPreProc; - // Fold whole script, but not if the XML first tag (all XML-like tags in this case) - if (foldHTMLPreprocessor && (scriptLanguage != eScriptXML)) { - levelCurrent++; - } - // should be better - ch = static_cast(styler.SafeGetCharAt(i)); - continue; - } - - // handle the start Mako template Python code - else if (isMako && scriptLanguage == eScriptNone && ((ch == '<' && chNext == '%') || - (lineStartVisibleChars == 1 && ch == '%') || - (lineStartVisibleChars == 1 && ch == '/' && chNext == '%') || - (ch == '$' && chNext == '{') || - (ch == '<' && chNext == '/' && chNext2 == '%'))) { - if (ch == '%' || ch == '/') - makoBlockType = "%"; - else if (ch == '$') - makoBlockType = "{"; - else if (chNext == '/') - makoBlockType = GetNextWord(styler, i+3); - else - makoBlockType = GetNextWord(styler, i+2); - styler.ColourTo(i - 1, StateToPrint); - beforePreProc = state; - if (inScriptType == eNonHtmlScript) - inScriptType = eNonHtmlScriptPreProc; - else - inScriptType = eNonHtmlPreProc; - - if (chNext == '/') { - i += 2; - visibleChars += 2; - } else if (ch != '%') { - i++; - visibleChars++; - } - state = SCE_HP_START; - scriptLanguage = eScriptPython; - styler.ColourTo(i, SCE_H_ASP); - if (ch != '%' && ch != '$' && ch != '/') { - i += makoBlockType.length(); - visibleChars += static_cast(makoBlockType.length()); - if (keywords4.InList(makoBlockType.c_str())) - styler.ColourTo(i, SCE_HP_WORD); - else - styler.ColourTo(i, SCE_H_TAGUNKNOWN); - } - - ch = static_cast(styler.SafeGetCharAt(i)); - continue; - } - - // handle the start/end of Django comment - else if (isDjango && state != SCE_H_COMMENT && (ch == '{' && chNext == '#')) { - styler.ColourTo(i - 1, StateToPrint); - beforePreProc = state; - beforeLanguage = scriptLanguage; - if (inScriptType == eNonHtmlScript) - inScriptType = eNonHtmlScriptPreProc; - else - inScriptType = eNonHtmlPreProc; - i += 1; - visibleChars += 1; - scriptLanguage = eScriptComment; - state = SCE_H_COMMENT; - styler.ColourTo(i, SCE_H_ASP); - ch = static_cast(styler.SafeGetCharAt(i)); - continue; - } else if (isDjango && state == SCE_H_COMMENT && (ch == '#' && chNext == '}')) { - styler.ColourTo(i - 1, StateToPrint); - i += 1; - visibleChars += 1; - styler.ColourTo(i, SCE_H_ASP); - state = beforePreProc; - if (inScriptType == eNonHtmlScriptPreProc) - inScriptType = eNonHtmlScript; - else - inScriptType = eHtml; - scriptLanguage = beforeLanguage; - continue; - } - - // handle the start Django template code - else if (isDjango && scriptLanguage != eScriptPython && scriptLanguage != eScriptComment && (ch == '{' && (chNext == '%' || chNext == '{'))) { - if (chNext == '%') - djangoBlockType = "%"; - else - djangoBlockType = "{"; - styler.ColourTo(i - 1, StateToPrint); - beforePreProc = state; - if (inScriptType == eNonHtmlScript) - inScriptType = eNonHtmlScriptPreProc; - else - inScriptType = eNonHtmlPreProc; - - i += 1; - visibleChars += 1; - state = SCE_HP_START; - beforeLanguage = scriptLanguage; - scriptLanguage = eScriptPython; - styler.ColourTo(i, SCE_H_ASP); - - ch = static_cast(styler.SafeGetCharAt(i)); - continue; - } - - // handle the start of ASP pre-processor = Non-HTML - else if (!isMako && !isDjango && !isCommentASPState(state) && (ch == '<') && (chNext == '%') && !isPHPStringState(state)) { - styler.ColourTo(i - 1, StateToPrint); - beforePreProc = state; - if (inScriptType == eNonHtmlScript) - inScriptType = eNonHtmlScriptPreProc; - else - inScriptType = eNonHtmlPreProc; - - if (chNext2 == '@') { - i += 2; // place as if it was the second next char treated - visibleChars += 2; - state = SCE_H_ASPAT; - } else if ((chNext2 == '-') && (styler.SafeGetCharAt(i + 3) == '-')) { - styler.ColourTo(i + 3, SCE_H_ASP); - state = SCE_H_XCCOMMENT; - scriptLanguage = eScriptVBS; - continue; - } else { - if (chNext2 == '=') { - i += 2; // place as if it was the second next char treated - visibleChars += 2; - } else { - i++; // place as if it was the next char treated - visibleChars++; - } - - state = StateForScript(aspScript); - } - scriptLanguage = eScriptVBS; - styler.ColourTo(i, SCE_H_ASP); - // fold whole script - if (foldHTMLPreprocessor) - levelCurrent++; - // should be better - ch = static_cast(styler.SafeGetCharAt(i)); - continue; - } - - ///////////////////////////////////// - // handle the start of SGML language (DTD) - else if (((scriptLanguage == eScriptNone) || (scriptLanguage == eScriptXML)) && - (chPrev == '<') && - (ch == '!') && - (StateToPrint != SCE_H_CDATA) && - (!IsCommentState(StateToPrint)) && - (!IsScriptCommentState(StateToPrint))) { - beforePreProc = state; - styler.ColourTo(i - 2, StateToPrint); - if ((chNext == '-') && (chNext2 == '-')) { - state = SCE_H_COMMENT; // wait for a pending command - styler.ColourTo(i + 2, SCE_H_COMMENT); - i += 2; // follow styling after the -- - } else if (isWordCdata(i + 1, i + 7, styler)) { - state = SCE_H_CDATA; - } else { - styler.ColourTo(i, SCE_H_SGML_DEFAULT); // ') { - i++; - visibleChars++; - } - else if ((makoBlockType == "%") && ch == '/') { - i++; - visibleChars++; - } - if ((makoBlockType != "%") || ch == '/') { - styler.ColourTo(i, SCE_H_ASP); - } - state = beforePreProc; - if (inScriptType == eNonHtmlScriptPreProc) - inScriptType = eNonHtmlScript; - else - inScriptType = eHtml; - scriptLanguage = eScriptNone; - continue; - } - - // handle the end of Django template code - else if (isDjango && - ((inScriptType == eNonHtmlPreProc) || (inScriptType == eNonHtmlScriptPreProc)) && - (scriptLanguage != eScriptNone) && stateAllowsTermination(state) && - isDjangoBlockEnd(ch, chNext, djangoBlockType)) { - if (state == SCE_H_ASPAT) { - aspScript = segIsScriptingIndicator(styler, - styler.GetStartSegment(), i - 1, aspScript); - } - if (state == SCE_HP_WORD) { - classifyWordHTPy(styler.GetStartSegment(), i - 1, keywords4, styler, prevWord, inScriptType, isMako); - } else { - styler.ColourTo(i - 1, StateToPrint); - } - i += 1; - visibleChars += 1; - styler.ColourTo(i, SCE_H_ASP); - state = beforePreProc; - if (inScriptType == eNonHtmlScriptPreProc) - inScriptType = eNonHtmlScript; - else - inScriptType = eHtml; - scriptLanguage = beforeLanguage; - continue; - } - - // handle the end of a pre-processor = Non-HTML - else if ((!isMako && !isDjango && ((inScriptType == eNonHtmlPreProc) || (inScriptType == eNonHtmlScriptPreProc)) && - (((scriptLanguage != eScriptNone) && stateAllowsTermination(state))) && - (((ch == '%') || (ch == '?')) && (chNext == '>'))) || - ((scriptLanguage == eScriptSGML) && (ch == '>') && (state != SCE_H_SGML_COMMENT))) { - if (state == SCE_H_ASPAT) { - aspScript = segIsScriptingIndicator(styler, - styler.GetStartSegment(), i - 1, aspScript); - } - // Bounce out of any ASP mode - switch (state) { - case SCE_HJ_WORD: - classifyWordHTJS(styler.GetStartSegment(), i - 1, keywords2, styler, inScriptType); - break; - case SCE_HB_WORD: - classifyWordHTVB(styler.GetStartSegment(), i - 1, keywords3, styler, inScriptType); - break; - case SCE_HP_WORD: - classifyWordHTPy(styler.GetStartSegment(), i - 1, keywords4, styler, prevWord, inScriptType, isMako); - break; - case SCE_HPHP_WORD: - classifyWordHTPHP(styler.GetStartSegment(), i - 1, keywords5, styler); - break; - case SCE_H_XCCOMMENT: - styler.ColourTo(i - 1, state); - break; - default : - styler.ColourTo(i - 1, StateToPrint); - break; - } - if (scriptLanguage != eScriptSGML) { - i++; - visibleChars++; - } - if (ch == '%') - styler.ColourTo(i, SCE_H_ASP); - else if (scriptLanguage == eScriptXML) - styler.ColourTo(i, SCE_H_XMLEND); - else if (scriptLanguage == eScriptSGML) - styler.ColourTo(i, SCE_H_SGML_DEFAULT); - else - styler.ColourTo(i, SCE_H_QUESTION); - state = beforePreProc; - if (inScriptType == eNonHtmlScriptPreProc) - inScriptType = eNonHtmlScript; - else - inScriptType = eHtml; - // Unfold all scripting languages, except for XML tag - if (foldHTMLPreprocessor && (scriptLanguage != eScriptXML)) { - levelCurrent--; - } - scriptLanguage = beforeLanguage; - continue; - } - ///////////////////////////////////// - - switch (state) { - case SCE_H_DEFAULT: - if (ch == '<') { - // in HTML, fold on tag open and unfold on tag close - tagOpened = true; - tagClosing = (chNext == '/'); - styler.ColourTo(i - 1, StateToPrint); - if (chNext != '!') - state = SCE_H_TAGUNKNOWN; - } else if (ch == '&') { - styler.ColourTo(i - 1, SCE_H_DEFAULT); - state = SCE_H_ENTITY; - } - break; - case SCE_H_SGML_DEFAULT: - case SCE_H_SGML_BLOCK_DEFAULT: -// if (scriptLanguage == eScriptSGMLblock) -// StateToPrint = SCE_H_SGML_BLOCK_DEFAULT; - - if (ch == '\"') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_H_SGML_DOUBLESTRING; - } else if (ch == '\'') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_H_SGML_SIMPLESTRING; - } else if ((ch == '-') && (chPrev == '-')) { - if (static_cast(styler.GetStartSegment()) <= (i - 2)) { - styler.ColourTo(i - 2, StateToPrint); - } - state = SCE_H_SGML_COMMENT; - } else if (IsASCII(ch) && isalpha(ch) && (chPrev == '%')) { - styler.ColourTo(i - 2, StateToPrint); - state = SCE_H_SGML_ENTITY; - } else if (ch == '#') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_H_SGML_SPECIAL; - } else if (ch == '[') { - styler.ColourTo(i - 1, StateToPrint); - scriptLanguage = eScriptSGMLblock; - state = SCE_H_SGML_BLOCK_DEFAULT; - } else if (ch == ']') { - if (scriptLanguage == eScriptSGMLblock) { - styler.ColourTo(i, StateToPrint); - scriptLanguage = eScriptSGML; - } else { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i, SCE_H_SGML_ERROR); - } - state = SCE_H_SGML_DEFAULT; - } else if (scriptLanguage == eScriptSGMLblock) { - if ((ch == '!') && (chPrev == '<')) { - styler.ColourTo(i - 2, StateToPrint); - styler.ColourTo(i, SCE_H_SGML_DEFAULT); - state = SCE_H_SGML_COMMAND; - } else if (ch == '>') { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i, SCE_H_SGML_DEFAULT); - } - } - break; - case SCE_H_SGML_COMMAND: - if ((ch == '-') && (chPrev == '-')) { - styler.ColourTo(i - 2, StateToPrint); - state = SCE_H_SGML_COMMENT; - } else if (!issgmlwordchar(ch)) { - if (isWordHSGML(styler.GetStartSegment(), i - 1, keywords6, styler)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_H_SGML_1ST_PARAM; - } else { - state = SCE_H_SGML_ERROR; - } - } - break; - case SCE_H_SGML_1ST_PARAM: - // wait for the beginning of the word - if ((ch == '-') && (chPrev == '-')) { - if (scriptLanguage == eScriptSGMLblock) { - styler.ColourTo(i - 2, SCE_H_SGML_BLOCK_DEFAULT); - } else { - styler.ColourTo(i - 2, SCE_H_SGML_DEFAULT); - } - state = SCE_H_SGML_1ST_PARAM_COMMENT; - } else if (issgmlwordchar(ch)) { - if (scriptLanguage == eScriptSGMLblock) { - styler.ColourTo(i - 1, SCE_H_SGML_BLOCK_DEFAULT); - } else { - styler.ColourTo(i - 1, SCE_H_SGML_DEFAULT); - } - // find the length of the word - int size = 1; - while (setHTMLWord.Contains(static_cast(styler.SafeGetCharAt(i + size)))) - size++; - styler.ColourTo(i + size - 1, StateToPrint); - i += size - 1; - visibleChars += size - 1; - ch = static_cast(styler.SafeGetCharAt(i)); - if (scriptLanguage == eScriptSGMLblock) { - state = SCE_H_SGML_BLOCK_DEFAULT; - } else { - state = SCE_H_SGML_DEFAULT; - } - continue; - } - break; - case SCE_H_SGML_ERROR: - if ((ch == '-') && (chPrev == '-')) { - styler.ColourTo(i - 2, StateToPrint); - state = SCE_H_SGML_COMMENT; - } - break; - case SCE_H_SGML_DOUBLESTRING: - if (ch == '\"') { - styler.ColourTo(i, StateToPrint); - state = SCE_H_SGML_DEFAULT; - } - break; - case SCE_H_SGML_SIMPLESTRING: - if (ch == '\'') { - styler.ColourTo(i, StateToPrint); - state = SCE_H_SGML_DEFAULT; - } - break; - case SCE_H_SGML_COMMENT: - if ((ch == '-') && (chPrev == '-')) { - styler.ColourTo(i, StateToPrint); - state = SCE_H_SGML_DEFAULT; - } - break; - case SCE_H_CDATA: - if ((chPrev2 == ']') && (chPrev == ']') && (ch == '>')) { - styler.ColourTo(i, StateToPrint); - state = SCE_H_DEFAULT; - levelCurrent--; - } - break; - case SCE_H_COMMENT: - if ((scriptLanguage != eScriptComment) && (chPrev2 == '-') && (chPrev == '-') && (ch == '>')) { - styler.ColourTo(i, StateToPrint); - state = SCE_H_DEFAULT; - levelCurrent--; - } - break; - case SCE_H_SGML_1ST_PARAM_COMMENT: - if ((ch == '-') && (chPrev == '-')) { - styler.ColourTo(i, SCE_H_SGML_COMMENT); - state = SCE_H_SGML_1ST_PARAM; - } - break; - case SCE_H_SGML_SPECIAL: - if (!(IsASCII(ch) && isupper(ch))) { - styler.ColourTo(i - 1, StateToPrint); - if (isalnum(ch)) { - state = SCE_H_SGML_ERROR; - } else { - state = SCE_H_SGML_DEFAULT; - } - } - break; - case SCE_H_SGML_ENTITY: - if (ch == ';') { - styler.ColourTo(i, StateToPrint); - state = SCE_H_SGML_DEFAULT; - } else if (!(IsASCII(ch) && isalnum(ch)) && ch != '-' && ch != '.') { - styler.ColourTo(i, SCE_H_SGML_ERROR); - state = SCE_H_SGML_DEFAULT; - } - break; - case SCE_H_ENTITY: - if (ch == ';') { - styler.ColourTo(i, StateToPrint); - state = SCE_H_DEFAULT; - } - if (ch != '#' && !(IsASCII(ch) && isalnum(ch)) // Should check that '#' follows '&', but it is unlikely anyway... - && ch != '.' && ch != '-' && ch != '_' && ch != ':') { // valid in XML - if (!IsASCII(ch)) // Possibly start of a multibyte character so don't allow this byte to be in entity style - styler.ColourTo(i-1, SCE_H_TAGUNKNOWN); - else - styler.ColourTo(i, SCE_H_TAGUNKNOWN); - state = SCE_H_DEFAULT; - } - break; - case SCE_H_TAGUNKNOWN: - if (!setTagContinue.Contains(ch) && !((ch == '/') && (chPrev == '<'))) { - int eClass = classifyTagHTML(styler.GetStartSegment(), - i - 1, keywords, styler, tagDontFold, caseSensitive, isXml, allowScripts, nonFoldingTags); - if (eClass == SCE_H_SCRIPT || eClass == SCE_H_COMMENT) { - if (!tagClosing) { - inScriptType = eNonHtmlScript; - scriptLanguage = eClass == SCE_H_SCRIPT ? clientScript : eScriptComment; - } else { - scriptLanguage = eScriptNone; - } - eClass = SCE_H_TAG; - } - if (ch == '>') { - styler.ColourTo(i, eClass); - if (inScriptType == eNonHtmlScript) { - state = StateForScript(scriptLanguage); - } else { - state = SCE_H_DEFAULT; - } - tagOpened = false; - if (!tagDontFold) { - if (tagClosing) { - levelCurrent--; - } else { - levelCurrent++; - } - } - tagClosing = false; - } else if (ch == '/' && chNext == '>') { - if (eClass == SCE_H_TAGUNKNOWN) { - styler.ColourTo(i + 1, SCE_H_TAGUNKNOWN); - } else { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i + 1, SCE_H_TAGEND); - } - i++; - ch = chNext; - state = SCE_H_DEFAULT; - tagOpened = false; - } else { - if (eClass != SCE_H_TAGUNKNOWN) { - if (eClass == SCE_H_SGML_DEFAULT) { - state = SCE_H_SGML_DEFAULT; - } else { - state = SCE_H_OTHER; - } - } - } - } - break; - case SCE_H_ATTRIBUTE: - if (!setAttributeContinue.Contains(ch)) { - if (inScriptType == eNonHtmlScript) { - const int scriptLanguagePrev = scriptLanguage; - clientScript = segIsScriptingIndicator(styler, styler.GetStartSegment(), i - 1, scriptLanguage); - scriptLanguage = clientScript; - if ((scriptLanguagePrev != scriptLanguage) && (scriptLanguage == eScriptNone)) - inScriptType = eHtml; - } - classifyAttribHTML(styler.GetStartSegment(), i - 1, keywords, styler); - if (ch == '>') { - styler.ColourTo(i, SCE_H_TAG); - if (inScriptType == eNonHtmlScript) { - state = StateForScript(scriptLanguage); - } else { - state = SCE_H_DEFAULT; - } - tagOpened = false; - if (!tagDontFold) { - if (tagClosing) { - levelCurrent--; - } else { - levelCurrent++; - } - } - tagClosing = false; - } else if (ch == '=') { - styler.ColourTo(i, SCE_H_OTHER); - state = SCE_H_VALUE; - } else { - state = SCE_H_OTHER; - } - } - break; - case SCE_H_OTHER: - if (ch == '>') { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i, SCE_H_TAG); - if (inScriptType == eNonHtmlScript) { - state = StateForScript(scriptLanguage); - } else { - state = SCE_H_DEFAULT; - } - tagOpened = false; - if (!tagDontFold) { - if (tagClosing) { - levelCurrent--; - } else { - levelCurrent++; - } - } - tagClosing = false; - } else if (ch == '\"') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_H_DOUBLESTRING; - } else if (ch == '\'') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_H_SINGLESTRING; - } else if (ch == '=') { - styler.ColourTo(i, StateToPrint); - state = SCE_H_VALUE; - } else if (ch == '/' && chNext == '>') { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i + 1, SCE_H_TAGEND); - i++; - ch = chNext; - state = SCE_H_DEFAULT; - tagOpened = false; - } else if (ch == '?' && chNext == '>') { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i + 1, SCE_H_XMLEND); - i++; - ch = chNext; - state = SCE_H_DEFAULT; - } else if (setHTMLWord.Contains(ch)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_H_ATTRIBUTE; - } - break; - case SCE_H_DOUBLESTRING: - if (ch == '\"') { - if (inScriptType == eNonHtmlScript) { - scriptLanguage = segIsScriptingIndicator(styler, styler.GetStartSegment(), i, scriptLanguage); - } - styler.ColourTo(i, SCE_H_DOUBLESTRING); - state = SCE_H_OTHER; - } - break; - case SCE_H_SINGLESTRING: - if (ch == '\'') { - if (inScriptType == eNonHtmlScript) { - scriptLanguage = segIsScriptingIndicator(styler, styler.GetStartSegment(), i, scriptLanguage); - } - styler.ColourTo(i, SCE_H_SINGLESTRING); - state = SCE_H_OTHER; - } - break; - case SCE_H_VALUE: - if (!setHTMLWord.Contains(ch)) { - if (ch == '\"' && chPrev == '=') { - // Should really test for being first character - state = SCE_H_DOUBLESTRING; - } else if (ch == '\'' && chPrev == '=') { - state = SCE_H_SINGLESTRING; - } else { - if (IsNumber(styler.GetStartSegment(), styler)) { - styler.ColourTo(i - 1, SCE_H_NUMBER); - } else { - styler.ColourTo(i - 1, StateToPrint); - } - if (ch == '>') { - styler.ColourTo(i, SCE_H_TAG); - if (inScriptType == eNonHtmlScript) { - state = StateForScript(scriptLanguage); - } else { - state = SCE_H_DEFAULT; - } - tagOpened = false; - if (!tagDontFold) { - if (tagClosing) { - levelCurrent--; - } else { - levelCurrent++; - } - } - tagClosing = false; - } else { - state = SCE_H_OTHER; - } - } - } - break; - case SCE_HJ_DEFAULT: - case SCE_HJ_START: - case SCE_HJ_SYMBOLS: - if (IsAWordStart(ch)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_WORD; - } else if (ch == '/' && chNext == '*') { - styler.ColourTo(i - 1, StateToPrint); - if (chNext2 == '*') - state = SCE_HJ_COMMENTDOC; - else - state = SCE_HJ_COMMENT; - if (chNext2 == '/') { - // Eat the * so it isn't used for the end of the comment - i++; - } - } else if (ch == '/' && chNext == '/') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_COMMENTLINE; - } else if (ch == '/' && setOKBeforeJSRE.Contains(chPrevNonWhite)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_REGEX; - } else if (ch == '\"') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_DOUBLESTRING; - } else if (ch == '\'') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_SINGLESTRING; - } else if ((ch == '<') && (chNext == '!') && (chNext2 == '-') && - styler.SafeGetCharAt(i + 3) == '-') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_COMMENTLINE; - } else if ((ch == '-') && (chNext == '-') && (chNext2 == '>')) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_COMMENTLINE; - i += 2; - } else if (IsOperator(ch)) { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i, statePrintForState(SCE_HJ_SYMBOLS, inScriptType)); - state = SCE_HJ_DEFAULT; - } else if ((ch == ' ') || (ch == '\t')) { - if (state == SCE_HJ_START) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_DEFAULT; - } - } - break; - case SCE_HJ_WORD: - if (!IsAWordChar(ch)) { - classifyWordHTJS(styler.GetStartSegment(), i - 1, keywords2, styler, inScriptType); - //styler.ColourTo(i - 1, eHTJSKeyword); - state = SCE_HJ_DEFAULT; - if (ch == '/' && chNext == '*') { - if (chNext2 == '*') - state = SCE_HJ_COMMENTDOC; - else - state = SCE_HJ_COMMENT; - } else if (ch == '/' && chNext == '/') { - state = SCE_HJ_COMMENTLINE; - } else if (ch == '\"') { - state = SCE_HJ_DOUBLESTRING; - } else if (ch == '\'') { - state = SCE_HJ_SINGLESTRING; - } else if ((ch == '-') && (chNext == '-') && (chNext2 == '>')) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_COMMENTLINE; - i += 2; - } else if (IsOperator(ch)) { - styler.ColourTo(i, statePrintForState(SCE_HJ_SYMBOLS, inScriptType)); - state = SCE_HJ_DEFAULT; - } - } - break; - case SCE_HJ_COMMENT: - case SCE_HJ_COMMENTDOC: - if (ch == '/' && chPrev == '*') { - styler.ColourTo(i, StateToPrint); - state = SCE_HJ_DEFAULT; - ch = ' '; - } - break; - case SCE_HJ_COMMENTLINE: - if (ch == '\r' || ch == '\n') { - styler.ColourTo(i - 1, statePrintForState(SCE_HJ_COMMENTLINE, inScriptType)); - state = SCE_HJ_DEFAULT; - ch = ' '; - } - break; - case SCE_HJ_DOUBLESTRING: - if (ch == '\\') { - if (chNext == '\"' || chNext == '\'' || chNext == '\\') { - i++; - } - } else if (ch == '\"') { - styler.ColourTo(i, statePrintForState(SCE_HJ_DOUBLESTRING, inScriptType)); - state = SCE_HJ_DEFAULT; - } else if ((inScriptType == eNonHtmlScript) && (ch == '-') && (chNext == '-') && (chNext2 == '>')) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_COMMENTLINE; - i += 2; - } else if (isLineEnd(ch)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_STRINGEOL; - } - break; - case SCE_HJ_SINGLESTRING: - if (ch == '\\') { - if (chNext == '\"' || chNext == '\'' || chNext == '\\') { - i++; - } - } else if (ch == '\'') { - styler.ColourTo(i, statePrintForState(SCE_HJ_SINGLESTRING, inScriptType)); - state = SCE_HJ_DEFAULT; - } else if ((inScriptType == eNonHtmlScript) && (ch == '-') && (chNext == '-') && (chNext2 == '>')) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_COMMENTLINE; - i += 2; - } else if (isLineEnd(ch)) { - styler.ColourTo(i - 1, StateToPrint); - if (chPrev != '\\' && (chPrev2 != '\\' || chPrev != '\r' || ch != '\n')) { - state = SCE_HJ_STRINGEOL; - } - } - break; - case SCE_HJ_STRINGEOL: - if (!isLineEnd(ch)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HJ_DEFAULT; - } else if (!isLineEnd(chNext)) { - styler.ColourTo(i, StateToPrint); - state = SCE_HJ_DEFAULT; - } - break; - case SCE_HJ_REGEX: - if (ch == '\r' || ch == '\n' || ch == '/') { - if (ch == '/') { - while (IsASCII(chNext) && islower(chNext)) { // gobble regex flags - i++; - ch = chNext; - chNext = static_cast(styler.SafeGetCharAt(i + 1)); - } - } - styler.ColourTo(i, StateToPrint); - state = SCE_HJ_DEFAULT; - } else if (ch == '\\') { - // Gobble up the quoted character - if (chNext == '\\' || chNext == '/') { - i++; - ch = chNext; - chNext = static_cast(styler.SafeGetCharAt(i + 1)); - } - } - break; - case SCE_HB_DEFAULT: - case SCE_HB_START: - if (IsAWordStart(ch)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HB_WORD; - } else if (ch == '\'') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HB_COMMENTLINE; - } else if (ch == '\"') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HB_STRING; - } else if ((ch == '<') && (chNext == '!') && (chNext2 == '-') && - styler.SafeGetCharAt(i + 3) == '-') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HB_COMMENTLINE; - } else if (IsOperator(ch)) { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i, statePrintForState(SCE_HB_DEFAULT, inScriptType)); - state = SCE_HB_DEFAULT; - } else if ((ch == ' ') || (ch == '\t')) { - if (state == SCE_HB_START) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HB_DEFAULT; - } - } - break; - case SCE_HB_WORD: - if (!IsAWordChar(ch)) { - state = classifyWordHTVB(styler.GetStartSegment(), i - 1, keywords3, styler, inScriptType); - if (state == SCE_HB_DEFAULT) { - if (ch == '\"') { - state = SCE_HB_STRING; - } else if (ch == '\'') { - state = SCE_HB_COMMENTLINE; - } else if (IsOperator(ch)) { - styler.ColourTo(i, statePrintForState(SCE_HB_DEFAULT, inScriptType)); - state = SCE_HB_DEFAULT; - } - } - } - break; - case SCE_HB_STRING: - if (ch == '\"') { - styler.ColourTo(i, StateToPrint); - state = SCE_HB_DEFAULT; - } else if (ch == '\r' || ch == '\n') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HB_STRINGEOL; - } - break; - case SCE_HB_COMMENTLINE: - if (ch == '\r' || ch == '\n') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HB_DEFAULT; - } - break; - case SCE_HB_STRINGEOL: - if (!isLineEnd(ch)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HB_DEFAULT; - } else if (!isLineEnd(chNext)) { - styler.ColourTo(i, StateToPrint); - state = SCE_HB_DEFAULT; - } - break; - case SCE_HP_DEFAULT: - case SCE_HP_START: - if (IsAWordStart(ch)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HP_WORD; - } else if ((ch == '<') && (chNext == '!') && (chNext2 == '-') && - styler.SafeGetCharAt(i + 3) == '-') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HP_COMMENTLINE; - } else if (ch == '#') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HP_COMMENTLINE; - } else if (ch == '\"') { - styler.ColourTo(i - 1, StateToPrint); - if (chNext == '\"' && chNext2 == '\"') { - i += 2; - state = SCE_HP_TRIPLEDOUBLE; - ch = ' '; - chPrev = ' '; - chNext = static_cast(styler.SafeGetCharAt(i + 1)); - } else { - // state = statePrintForState(SCE_HP_STRING,inScriptType); - state = SCE_HP_STRING; - } - } else if (ch == '\'') { - styler.ColourTo(i - 1, StateToPrint); - if (chNext == '\'' && chNext2 == '\'') { - i += 2; - state = SCE_HP_TRIPLE; - ch = ' '; - chPrev = ' '; - chNext = static_cast(styler.SafeGetCharAt(i + 1)); - } else { - state = SCE_HP_CHARACTER; - } - } else if (IsOperator(ch)) { - styler.ColourTo(i - 1, StateToPrint); - styler.ColourTo(i, statePrintForState(SCE_HP_OPERATOR, inScriptType)); - } else if ((ch == ' ') || (ch == '\t')) { - if (state == SCE_HP_START) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HP_DEFAULT; - } - } - break; - case SCE_HP_WORD: - if (!IsAWordChar(ch)) { - classifyWordHTPy(styler.GetStartSegment(), i - 1, keywords4, styler, prevWord, inScriptType, isMako); - state = SCE_HP_DEFAULT; - if (ch == '#') { - state = SCE_HP_COMMENTLINE; - } else if (ch == '\"') { - if (chNext == '\"' && chNext2 == '\"') { - i += 2; - state = SCE_HP_TRIPLEDOUBLE; - ch = ' '; - chPrev = ' '; - chNext = static_cast(styler.SafeGetCharAt(i + 1)); - } else { - state = SCE_HP_STRING; - } - } else if (ch == '\'') { - if (chNext == '\'' && chNext2 == '\'') { - i += 2; - state = SCE_HP_TRIPLE; - ch = ' '; - chPrev = ' '; - chNext = static_cast(styler.SafeGetCharAt(i + 1)); - } else { - state = SCE_HP_CHARACTER; - } - } else if (IsOperator(ch)) { - styler.ColourTo(i, statePrintForState(SCE_HP_OPERATOR, inScriptType)); - } - } - break; - case SCE_HP_COMMENTLINE: - if (ch == '\r' || ch == '\n') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HP_DEFAULT; - } - break; - case SCE_HP_STRING: - if (ch == '\\') { - if (chNext == '\"' || chNext == '\'' || chNext == '\\') { - i++; - ch = chNext; - chNext = static_cast(styler.SafeGetCharAt(i + 1)); - } - } else if (ch == '\"') { - styler.ColourTo(i, StateToPrint); - state = SCE_HP_DEFAULT; - } - break; - case SCE_HP_CHARACTER: - if (ch == '\\') { - if (chNext == '\"' || chNext == '\'' || chNext == '\\') { - i++; - ch = chNext; - chNext = static_cast(styler.SafeGetCharAt(i + 1)); - } - } else if (ch == '\'') { - styler.ColourTo(i, StateToPrint); - state = SCE_HP_DEFAULT; - } - break; - case SCE_HP_TRIPLE: - if (ch == '\'' && chPrev == '\'' && chPrev2 == '\'') { - styler.ColourTo(i, StateToPrint); - state = SCE_HP_DEFAULT; - } - break; - case SCE_HP_TRIPLEDOUBLE: - if (ch == '\"' && chPrev == '\"' && chPrev2 == '\"') { - styler.ColourTo(i, StateToPrint); - state = SCE_HP_DEFAULT; - } - break; - ///////////// start - PHP state handling - case SCE_HPHP_WORD: - if (!IsAWordChar(ch)) { - classifyWordHTPHP(styler.GetStartSegment(), i - 1, keywords5, styler); - if (ch == '/' && chNext == '*') { - i++; - state = SCE_HPHP_COMMENT; - } else if (ch == '/' && chNext == '/') { - i++; - state = SCE_HPHP_COMMENTLINE; - } else if (ch == '#') { - state = SCE_HPHP_COMMENTLINE; - } else if (ch == '\"') { - state = SCE_HPHP_HSTRING; - phpStringDelimiter = "\""; - } else if (styler.Match(i, "<<<")) { - bool isSimpleString = false; - i = FindPhpStringDelimiter(phpStringDelimiter, i + 3, lengthDoc, styler, isSimpleString); - if (!phpStringDelimiter.empty()) { - state = (isSimpleString ? SCE_HPHP_SIMPLESTRING : SCE_HPHP_HSTRING); - if (foldHeredoc) levelCurrent++; - } - } else if (ch == '\'') { - state = SCE_HPHP_SIMPLESTRING; - phpStringDelimiter = "\'"; - } else if (ch == '$' && IsPhpWordStart(chNext)) { - state = SCE_HPHP_VARIABLE; - } else if (IsOperator(ch)) { - state = SCE_HPHP_OPERATOR; - } else { - state = SCE_HPHP_DEFAULT; - } - } - break; - case SCE_HPHP_NUMBER: - // recognize bases 8,10 or 16 integers OR floating-point numbers - if (!IsADigit(ch) - && strchr(".xXabcdefABCDEF", ch) == NULL - && ((ch != '-' && ch != '+') || (chPrev != 'e' && chPrev != 'E'))) { - styler.ColourTo(i - 1, SCE_HPHP_NUMBER); - if (IsOperator(ch)) - state = SCE_HPHP_OPERATOR; - else - state = SCE_HPHP_DEFAULT; - } - break; - case SCE_HPHP_VARIABLE: - if (!IsPhpWordChar(chNext)) { - styler.ColourTo(i, SCE_HPHP_VARIABLE); - state = SCE_HPHP_DEFAULT; - } - break; - case SCE_HPHP_COMMENT: - if (ch == '/' && chPrev == '*') { - styler.ColourTo(i, StateToPrint); - state = SCE_HPHP_DEFAULT; - } - break; - case SCE_HPHP_COMMENTLINE: - if (ch == '\r' || ch == '\n') { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HPHP_DEFAULT; - } - break; - case SCE_HPHP_HSTRING: - if (ch == '\\' && ((phpStringDelimiter == "\"") || chNext == '$' || chNext == '{')) { - // skip the next char - i++; - } else if (((ch == '{' && chNext == '$') || (ch == '$' && chNext == '{')) - && IsPhpWordStart(chNext2)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HPHP_COMPLEX_VARIABLE; - } else if (ch == '$' && IsPhpWordStart(chNext)) { - styler.ColourTo(i - 1, StateToPrint); - state = SCE_HPHP_HSTRING_VARIABLE; - } else if (styler.Match(i, phpStringDelimiter.c_str())) { - if (phpStringDelimiter == "\"") { - styler.ColourTo(i, StateToPrint); - state = SCE_HPHP_DEFAULT; - } else if (isLineEnd(chPrev)) { - const int psdLength = static_cast(phpStringDelimiter.length()); - const char chAfterPsd = styler.SafeGetCharAt(i + psdLength); - const char chAfterPsd2 = styler.SafeGetCharAt(i + psdLength + 1); - if (isLineEnd(chAfterPsd) || - (chAfterPsd == ';' && isLineEnd(chAfterPsd2))) { - i += (((i + psdLength) < lengthDoc) ? psdLength : lengthDoc) - 1; - styler.ColourTo(i, StateToPrint); - state = SCE_HPHP_DEFAULT; - if (foldHeredoc) levelCurrent--; - } - } - } - break; - case SCE_HPHP_SIMPLESTRING: - if (phpStringDelimiter == "\'") { - if (ch == '\\') { - // skip the next char - i++; - } else if (ch == '\'') { - styler.ColourTo(i, StateToPrint); - state = SCE_HPHP_DEFAULT; - } - } else if (isLineEnd(chPrev) && styler.Match(i, phpStringDelimiter.c_str())) { - const int psdLength = static_cast(phpStringDelimiter.length()); - const char chAfterPsd = styler.SafeGetCharAt(i + psdLength); - const char chAfterPsd2 = styler.SafeGetCharAt(i + psdLength + 1); - if (isLineEnd(chAfterPsd) || - (chAfterPsd == ';' && isLineEnd(chAfterPsd2))) { - i += (((i + psdLength) < lengthDoc) ? psdLength : lengthDoc) - 1; - styler.ColourTo(i, StateToPrint); - state = SCE_HPHP_DEFAULT; - if (foldHeredoc) levelCurrent--; - } - } - break; - case SCE_HPHP_HSTRING_VARIABLE: - if (!IsPhpWordChar(chNext)) { - styler.ColourTo(i, StateToPrint); - state = SCE_HPHP_HSTRING; - } - break; - case SCE_HPHP_COMPLEX_VARIABLE: - if (ch == '}') { - styler.ColourTo(i, StateToPrint); - state = SCE_HPHP_HSTRING; - } - break; - case SCE_HPHP_OPERATOR: - case SCE_HPHP_DEFAULT: - styler.ColourTo(i - 1, StateToPrint); - if (IsADigit(ch) || (ch == '.' && IsADigit(chNext))) { - state = SCE_HPHP_NUMBER; - } else if (IsAWordStart(ch)) { - state = SCE_HPHP_WORD; - } else if (ch == '/' && chNext == '*') { - i++; - state = SCE_HPHP_COMMENT; - } else if (ch == '/' && chNext == '/') { - i++; - state = SCE_HPHP_COMMENTLINE; - } else if (ch == '#') { - state = SCE_HPHP_COMMENTLINE; - } else if (ch == '\"') { - state = SCE_HPHP_HSTRING; - phpStringDelimiter = "\""; - } else if (styler.Match(i, "<<<")) { - bool isSimpleString = false; - i = FindPhpStringDelimiter(phpStringDelimiter, i + 3, lengthDoc, styler, isSimpleString); - if (!phpStringDelimiter.empty()) { - state = (isSimpleString ? SCE_HPHP_SIMPLESTRING : SCE_HPHP_HSTRING); - if (foldHeredoc) levelCurrent++; - } - } else if (ch == '\'') { - state = SCE_HPHP_SIMPLESTRING; - phpStringDelimiter = "\'"; - } else if (ch == '$' && IsPhpWordStart(chNext)) { - state = SCE_HPHP_VARIABLE; - } else if (IsOperator(ch)) { - state = SCE_HPHP_OPERATOR; - } else if ((state == SCE_HPHP_OPERATOR) && (IsASpace(ch))) { - state = SCE_HPHP_DEFAULT; - } - break; - ///////////// end - PHP state handling - } - - // Some of the above terminated their lexeme but since the same character starts - // the same class again, only reenter if non empty segment. - - const bool nonEmptySegment = i >= static_cast(styler.GetStartSegment()); - if (state == SCE_HB_DEFAULT) { // One of the above succeeded - if ((ch == '\"') && (nonEmptySegment)) { - state = SCE_HB_STRING; - } else if (ch == '\'') { - state = SCE_HB_COMMENTLINE; - } else if (IsAWordStart(ch)) { - state = SCE_HB_WORD; - } else if (IsOperator(ch)) { - styler.ColourTo(i, SCE_HB_DEFAULT); - } - } else if (state == SCE_HBA_DEFAULT) { // One of the above succeeded - if ((ch == '\"') && (nonEmptySegment)) { - state = SCE_HBA_STRING; - } else if (ch == '\'') { - state = SCE_HBA_COMMENTLINE; - } else if (IsAWordStart(ch)) { - state = SCE_HBA_WORD; - } else if (IsOperator(ch)) { - styler.ColourTo(i, SCE_HBA_DEFAULT); - } - } else if (state == SCE_HJ_DEFAULT) { // One of the above succeeded - if (ch == '/' && chNext == '*') { - if (styler.SafeGetCharAt(i + 2) == '*') - state = SCE_HJ_COMMENTDOC; - else - state = SCE_HJ_COMMENT; - } else if (ch == '/' && chNext == '/') { - state = SCE_HJ_COMMENTLINE; - } else if ((ch == '\"') && (nonEmptySegment)) { - state = SCE_HJ_DOUBLESTRING; - } else if ((ch == '\'') && (nonEmptySegment)) { - state = SCE_HJ_SINGLESTRING; - } else if (IsAWordStart(ch)) { - state = SCE_HJ_WORD; - } else if (IsOperator(ch)) { - styler.ColourTo(i, statePrintForState(SCE_HJ_SYMBOLS, inScriptType)); - } - } - } - - switch (state) { - case SCE_HJ_WORD: - classifyWordHTJS(styler.GetStartSegment(), lengthDoc - 1, keywords2, styler, inScriptType); - break; - case SCE_HB_WORD: - classifyWordHTVB(styler.GetStartSegment(), lengthDoc - 1, keywords3, styler, inScriptType); - break; - case SCE_HP_WORD: - classifyWordHTPy(styler.GetStartSegment(), lengthDoc - 1, keywords4, styler, prevWord, inScriptType, isMako); - break; - case SCE_HPHP_WORD: - classifyWordHTPHP(styler.GetStartSegment(), lengthDoc - 1, keywords5, styler); - break; - default: - StateToPrint = statePrintForState(state, inScriptType); - if (static_cast(styler.GetStartSegment()) < lengthDoc) - styler.ColourTo(lengthDoc - 1, StateToPrint); - break; - } - - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - if (fold) { - const int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); - } - styler.Flush(); -} - -LexerModule lmHTML(SCLEX_HTML, LexerHTML::LexerFactoryHTML, "hypertext", htmlWordListDesc); -LexerModule lmXML(SCLEX_XML, LexerHTML::LexerFactoryXML, "xml", htmlWordListDesc); -LexerModule lmPHPSCRIPT(SCLEX_PHPSCRIPT, LexerHTML::LexerFactoryPHPScript, "phpscript", phpscriptWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHaskell.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHaskell.cpp deleted file mode 100644 index 680a0f296..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHaskell.cpp +++ /dev/null @@ -1,1110 +0,0 @@ -/****************************************************************** - * LexHaskell.cxx - * - * A haskell lexer for the scintilla code control. - * Some stuff "lended" from LexPython.cxx and LexCPP.cxx. - * External lexer stuff inspired from the caml external lexer. - * Folder copied from Python's. - * - * Written by Tobias Engvall - tumm at dtek dot chalmers dot se - * - * Several bug fixes by Krasimir Angelov - kr.angelov at gmail.com - * - * Improved by kudah - * - * TODO: - * * A proper lexical folder to fold group declarations, comments, pragmas, - * #ifdefs, explicit layout, lists, tuples, quasi-quotes, splces, etc, etc, - * etc. - * - *****************************************************************/ -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "PropSetSimple.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "CharacterCategory.h" -#include "LexerModule.h" -#include "OptionSet.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - -// See https://github.com/ghc/ghc/blob/master/compiler/parser/Lexer.x#L1682 -// Note, letter modifiers are prohibited. - -static int u_iswupper (int ch) { - CharacterCategory c = CategoriseCharacter(ch); - return c == ccLu || c == ccLt; -} - -static int u_iswalpha (int ch) { - CharacterCategory c = CategoriseCharacter(ch); - return c == ccLl || c == ccLu || c == ccLt || c == ccLo; -} - -static int u_iswalnum (int ch) { - CharacterCategory c = CategoriseCharacter(ch); - return c == ccLl || c == ccLu || c == ccLt || c == ccLo - || c == ccNd || c == ccNo; -} - -static int u_IsHaskellSymbol(int ch) { - CharacterCategory c = CategoriseCharacter(ch); - return c == ccPc || c == ccPd || c == ccPo - || c == ccSm || c == ccSc || c == ccSk || c == ccSo; -} - -static inline bool IsHaskellLetter(const int ch) { - if (IsASCII(ch)) { - return (ch >= 'a' && ch <= 'z') - || (ch >= 'A' && ch <= 'Z'); - } else { - return u_iswalpha(ch) != 0; - } -} - -static inline bool IsHaskellAlphaNumeric(const int ch) { - if (IsASCII(ch)) { - return IsAlphaNumeric(ch); - } else { - return u_iswalnum(ch) != 0; - } -} - -static inline bool IsHaskellUpperCase(const int ch) { - if (IsASCII(ch)) { - return ch >= 'A' && ch <= 'Z'; - } else { - return u_iswupper(ch) != 0; - } -} - -static inline bool IsAnHaskellOperatorChar(const int ch) { - if (IsASCII(ch)) { - return - ( ch == '!' || ch == '#' || ch == '$' || ch == '%' - || ch == '&' || ch == '*' || ch == '+' || ch == '-' - || ch == '.' || ch == '/' || ch == ':' || ch == '<' - || ch == '=' || ch == '>' || ch == '?' || ch == '@' - || ch == '^' || ch == '|' || ch == '~' || ch == '\\'); - } else { - return u_IsHaskellSymbol(ch) != 0; - } -} - -static inline bool IsAHaskellWordStart(const int ch) { - return IsHaskellLetter(ch) || ch == '_'; -} - -static inline bool IsAHaskellWordChar(const int ch) { - return ( IsHaskellAlphaNumeric(ch) - || ch == '_' - || ch == '\''); -} - -static inline bool IsCommentBlockStyle(int style) { - return (style >= SCE_HA_COMMENTBLOCK && style <= SCE_HA_COMMENTBLOCK3); -} - -static inline bool IsCommentStyle(int style) { - return (style >= SCE_HA_COMMENTLINE && style <= SCE_HA_COMMENTBLOCK3) - || ( style == SCE_HA_LITERATE_COMMENT - || style == SCE_HA_LITERATE_CODEDELIM); -} - -// styles which do not belong to Haskell, but to external tools -static inline bool IsExternalStyle(int style) { - return ( style == SCE_HA_PREPROCESSOR - || style == SCE_HA_LITERATE_COMMENT - || style == SCE_HA_LITERATE_CODEDELIM); -} - -static inline int CommentBlockStyleFromNestLevel(const unsigned int nestLevel) { - return SCE_HA_COMMENTBLOCK + (nestLevel % 3); -} - -// Mangled version of lexlib/Accessor.cxx IndentAmount. -// Modified to treat comment blocks as whitespace -// plus special case for commentline/preprocessor. -static int HaskellIndentAmount(Accessor &styler, const Sci_Position line) { - - // Determines the indentation level of the current line - // Comment blocks are treated as whitespace - - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - - char ch = styler[pos]; - int style = styler.StyleAt(pos); - - int indent = 0; - bool inPrevPrefix = line > 0; - - Sci_Position posPrev = inPrevPrefix ? styler.LineStart(line-1) : 0; - - while (( ch == ' ' || ch == '\t' - || IsCommentBlockStyle(style) - || style == SCE_HA_LITERATE_CODEDELIM) - && (pos < eol_pos)) { - if (inPrevPrefix) { - char chPrev = styler[posPrev++]; - if (chPrev != ' ' && chPrev != '\t') { - inPrevPrefix = false; - } - } - if (ch == '\t') { - indent = (indent / 8 + 1) * 8; - } else { // Space or comment block - indent++; - } - pos++; - ch = styler[pos]; - style = styler.StyleAt(pos); - } - - indent += SC_FOLDLEVELBASE; - // if completely empty line or the start of a comment or preprocessor... - if ( styler.LineStart(line) == styler.Length() - || ch == ' ' - || ch == '\t' - || ch == '\n' - || ch == '\r' - || IsCommentStyle(style) - || style == SCE_HA_PREPROCESSOR) - return indent | SC_FOLDLEVELWHITEFLAG; - else - return indent; -} - -struct OptionsHaskell { - bool magicHash; - bool allowQuotes; - bool implicitParams; - bool highlightSafe; - bool cpp; - bool stylingWithinPreprocessor; - bool fold; - bool foldComment; - bool foldCompact; - bool foldImports; - OptionsHaskell() { - magicHash = true; // Widespread use, enabled by default. - allowQuotes = true; // Widespread use, enabled by default. - implicitParams = false; // Fell out of favor, seldom used, disabled. - highlightSafe = true; // Moderately used, doesn't hurt to enable. - cpp = true; // Widespread use, enabled by default; - stylingWithinPreprocessor = false; - fold = false; - foldComment = false; - foldCompact = false; - foldImports = false; - } -}; - -static const char * const haskellWordListDesc[] = { - "Keywords", - "FFI", - "Reserved operators", - 0 -}; - -struct OptionSetHaskell : public OptionSet { - OptionSetHaskell() { - DefineProperty("lexer.haskell.allow.hash", &OptionsHaskell::magicHash, - "Set to 0 to disallow the '#' character at the end of identifiers and " - "literals with the haskell lexer " - "(GHC -XMagicHash extension)"); - - DefineProperty("lexer.haskell.allow.quotes", &OptionsHaskell::allowQuotes, - "Set to 0 to disable highlighting of Template Haskell name quotations " - "and promoted constructors " - "(GHC -XTemplateHaskell and -XDataKinds extensions)"); - - DefineProperty("lexer.haskell.allow.questionmark", &OptionsHaskell::implicitParams, - "Set to 1 to allow the '?' character at the start of identifiers " - "with the haskell lexer " - "(GHC & Hugs -XImplicitParams extension)"); - - DefineProperty("lexer.haskell.import.safe", &OptionsHaskell::highlightSafe, - "Set to 0 to disallow \"safe\" keyword in imports " - "(GHC -XSafe, -XTrustworthy, -XUnsafe extensions)"); - - DefineProperty("lexer.haskell.cpp", &OptionsHaskell::cpp, - "Set to 0 to disable C-preprocessor highlighting " - "(-XCPP extension)"); - - DefineProperty("styling.within.preprocessor", &OptionsHaskell::stylingWithinPreprocessor, - "For Haskell code, determines whether all preprocessor code is styled in the " - "preprocessor style (0, the default) or only from the initial # to the end " - "of the command word(1)." - ); - - DefineProperty("fold", &OptionsHaskell::fold); - - DefineProperty("fold.comment", &OptionsHaskell::foldComment); - - DefineProperty("fold.compact", &OptionsHaskell::foldCompact); - - DefineProperty("fold.haskell.imports", &OptionsHaskell::foldImports, - "Set to 1 to enable folding of import declarations"); - - DefineWordListSets(haskellWordListDesc); - } -}; - -class LexerHaskell : public DefaultLexer { - bool literate; - Sci_Position firstImportLine; - int firstImportIndent; - WordList keywords; - WordList ffi; - WordList reserved_operators; - OptionsHaskell options; - OptionSetHaskell osHaskell; - - enum HashCount { - oneHash - ,twoHashes - ,unlimitedHashes - }; - - enum KeywordMode { - HA_MODE_DEFAULT = 0 - ,HA_MODE_IMPORT1 = 1 // after "import", before "qualified" or "safe" or package name or module name. - ,HA_MODE_IMPORT2 = 2 // after module name, before "as" or "hiding". - ,HA_MODE_IMPORT3 = 3 // after "as", before "hiding" - ,HA_MODE_MODULE = 4 // after "module", before module name. - ,HA_MODE_FFI = 5 // after "foreign", before FFI keywords - ,HA_MODE_TYPE = 6 // after "type" or "data", before "family" - }; - - enum LiterateMode { - LITERATE_BIRD = 0 // if '>' is the first character on the line, - // color '>' as a codedelim and the rest of - // the line as code. - // else if "\begin{code}" is the only word on the - // line except whitespace, switch to LITERATE_BLOCK - // otherwise color the line as a literate comment. - ,LITERATE_BLOCK = 1 // if the string "\end{code}" is encountered at column - // 0 ignoring all later characters, color the line - // as a codedelim and switch to LITERATE_BIRD - // otherwise color the line as code. - }; - - struct HaskellLineInfo { - unsigned int nestLevel; // 22 bits ought to be enough for anybody - unsigned int nonexternalStyle; // 5 bits, widen if number of styles goes - // beyond 31. - bool pragma; - LiterateMode lmode; - KeywordMode mode; - - HaskellLineInfo(int state) : - nestLevel (state >> 10) - , nonexternalStyle ((state >> 5) & 0x1F) - , pragma ((state >> 4) & 0x1) - , lmode (static_cast((state >> 3) & 0x1)) - , mode (static_cast(state & 0x7)) - {} - - int ToLineState() { - return - (nestLevel << 10) - | (nonexternalStyle << 5) - | (pragma << 4) - | (lmode << 3) - | mode; - } - }; - - inline void skipMagicHash(StyleContext &sc, const HashCount hashes) const { - if (options.magicHash && sc.ch == '#') { - sc.Forward(); - if (hashes == twoHashes && sc.ch == '#') { - sc.Forward(); - } else if (hashes == unlimitedHashes) { - while (sc.ch == '#') { - sc.Forward(); - } - } - } - } - - bool LineContainsImport(const Sci_Position line, Accessor &styler) const { - if (options.foldImports) { - Sci_Position currentPos = styler.LineStart(line); - int style = styler.StyleAt(currentPos); - - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - - while (currentPos < eol_pos) { - int ch = styler[currentPos]; - style = styler.StyleAt(currentPos); - - if (ch == ' ' || ch == '\t' - || IsCommentBlockStyle(style) - || style == SCE_HA_LITERATE_CODEDELIM) { - currentPos++; - } else { - break; - } - } - - return (style == SCE_HA_KEYWORD - && styler.Match(currentPos, "import")); - } else { - return false; - } - } - - inline int IndentAmountWithOffset(Accessor &styler, const Sci_Position line) const { - const int indent = HaskellIndentAmount(styler, line); - const int indentLevel = indent & SC_FOLDLEVELNUMBERMASK; - return indentLevel <= ((firstImportIndent - 1) + SC_FOLDLEVELBASE) - ? indent - : (indentLevel + firstImportIndent) | (indent & ~SC_FOLDLEVELNUMBERMASK); - } - - inline int IndentLevelRemoveIndentOffset(const int indentLevel) const { - return indentLevel <= ((firstImportIndent - 1) + SC_FOLDLEVELBASE) - ? indentLevel - : indentLevel - firstImportIndent; - } - -public: - LexerHaskell(bool literate_) - : literate(literate_) - , firstImportLine(-1) - , firstImportIndent(0) - {} - virtual ~LexerHaskell() {} - - void SCI_METHOD Release() override { - delete this; - } - - int SCI_METHOD Version() const override { - return lvOriginal; - } - - const char * SCI_METHOD PropertyNames() override { - return osHaskell.PropertyNames(); - } - - int SCI_METHOD PropertyType(const char *name) override { - return osHaskell.PropertyType(name); - } - - const char * SCI_METHOD DescribeProperty(const char *name) override { - return osHaskell.DescribeProperty(name); - } - - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; - - const char * SCI_METHOD DescribeWordListSets() override { - return osHaskell.DescribeWordListSets(); - } - - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; - - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - - void * SCI_METHOD PrivateCall(int, void *) override { - return 0; - } - - static ILexer *LexerFactoryHaskell() { - return new LexerHaskell(false); - } - - static ILexer *LexerFactoryLiterateHaskell() { - return new LexerHaskell(true); - } -}; - -Sci_Position SCI_METHOD LexerHaskell::PropertySet(const char *key, const char *val) { - if (osHaskell.PropertySet(&options, key, val)) { - return 0; - } - return -1; -} - -Sci_Position SCI_METHOD LexerHaskell::WordListSet(int n, const char *wl) { - WordList *wordListN = 0; - switch (n) { - case 0: - wordListN = &keywords; - break; - case 1: - wordListN = &ffi; - break; - case 2: - wordListN = &reserved_operators; - break; - } - Sci_Position firstModification = -1; - if (wordListN) { - WordList wlNew; - wlNew.Set(wl); - if (*wordListN != wlNew) { - wordListN->Set(wl); - firstModification = 0; - } - } - return firstModification; -} - -void SCI_METHOD LexerHaskell::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle - ,IDocument *pAccess) { - LexAccessor styler(pAccess); - - Sci_Position lineCurrent = styler.GetLine(startPos); - - HaskellLineInfo hs = HaskellLineInfo(lineCurrent ? styler.GetLineState(lineCurrent-1) : 0); - - // Do not leak onto next line - if (initStyle == SCE_HA_STRINGEOL) - initStyle = SCE_HA_DEFAULT; - else if (initStyle == SCE_HA_LITERATE_CODEDELIM) - initStyle = hs.nonexternalStyle; - - StyleContext sc(startPos, length, initStyle, styler); - - int base = 10; - bool dot = false; - - bool inDashes = false; - bool alreadyInTheMiddleOfOperator = false; - - assert(!(IsCommentBlockStyle(initStyle) && hs.nestLevel == 0)); - - while (sc.More()) { - // Check for state end - - if (!IsExternalStyle(sc.state)) { - hs.nonexternalStyle = sc.state; - } - - // For lexer to work, states should unconditionally forward at least one - // character. - // If they don't, they should still check if they are at line end and - // forward if so. - // If a state forwards more than one character, it should check every time - // that it is not a line end and cease forwarding otherwise. - if (sc.atLineEnd) { - // Remember the line state for future incremental lexing - styler.SetLineState(lineCurrent, hs.ToLineState()); - lineCurrent++; - } - - // Handle line continuation generically. - if (sc.ch == '\\' && (sc.chNext == '\n' || sc.chNext == '\r') - && ( sc.state == SCE_HA_STRING - || sc.state == SCE_HA_PREPROCESSOR)) { - // Remember the line state for future incremental lexing - styler.SetLineState(lineCurrent, hs.ToLineState()); - lineCurrent++; - - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - sc.Forward(); - } - sc.Forward(); - - continue; - } - - if (sc.atLineStart) { - - if (sc.state == SCE_HA_STRING || sc.state == SCE_HA_CHARACTER) { - // Prevent SCE_HA_STRINGEOL from leaking back to previous line - sc.SetState(sc.state); - } - - if (literate && hs.lmode == LITERATE_BIRD) { - if (!IsExternalStyle(sc.state)) { - sc.SetState(SCE_HA_LITERATE_COMMENT); - } - } - } - - // External - // Literate - if ( literate && hs.lmode == LITERATE_BIRD && sc.atLineStart - && sc.ch == '>') { - sc.SetState(SCE_HA_LITERATE_CODEDELIM); - sc.ForwardSetState(hs.nonexternalStyle); - } - else if (literate && hs.lmode == LITERATE_BIRD && sc.atLineStart - && ( sc.ch == ' ' || sc.ch == '\t' - || sc.Match("\\begin{code}"))) { - sc.SetState(sc.state); - - while ((sc.ch == ' ' || sc.ch == '\t') && sc.More()) - sc.Forward(); - - if (sc.Match("\\begin{code}")) { - sc.Forward(static_cast(strlen("\\begin{code}"))); - - bool correct = true; - - while (!sc.atLineEnd && sc.More()) { - if (sc.ch != ' ' && sc.ch != '\t') { - correct = false; - } - sc.Forward(); - } - - if (correct) { - sc.ChangeState(SCE_HA_LITERATE_CODEDELIM); // color the line end - hs.lmode = LITERATE_BLOCK; - } - } - } - else if (literate && hs.lmode == LITERATE_BLOCK && sc.atLineStart - && sc.Match("\\end{code}")) { - sc.SetState(SCE_HA_LITERATE_CODEDELIM); - - sc.Forward(static_cast(strlen("\\end{code}"))); - - while (!sc.atLineEnd && sc.More()) { - sc.Forward(); - } - - sc.SetState(SCE_HA_LITERATE_COMMENT); - hs.lmode = LITERATE_BIRD; - } - // Preprocessor - else if (sc.atLineStart && sc.ch == '#' && options.cpp - && (!options.stylingWithinPreprocessor || sc.state == SCE_HA_DEFAULT)) { - sc.SetState(SCE_HA_PREPROCESSOR); - sc.Forward(); - } - // Literate - else if (sc.state == SCE_HA_LITERATE_COMMENT) { - sc.Forward(); - } - else if (sc.state == SCE_HA_LITERATE_CODEDELIM) { - sc.ForwardSetState(hs.nonexternalStyle); - } - // Preprocessor - else if (sc.state == SCE_HA_PREPROCESSOR) { - if (sc.atLineEnd) { - sc.SetState(options.stylingWithinPreprocessor - ? SCE_HA_DEFAULT - : hs.nonexternalStyle); - sc.Forward(); // prevent double counting a line - } else if (options.stylingWithinPreprocessor && !IsHaskellLetter(sc.ch)) { - sc.SetState(SCE_HA_DEFAULT); - } else { - sc.Forward(); - } - } - // Haskell - // Operator - else if (sc.state == SCE_HA_OPERATOR) { - int style = SCE_HA_OPERATOR; - - if ( sc.ch == ':' - && !alreadyInTheMiddleOfOperator - // except "::" - && !( sc.chNext == ':' - && !IsAnHaskellOperatorChar(sc.GetRelative(2)))) { - style = SCE_HA_CAPITAL; - } - - alreadyInTheMiddleOfOperator = false; - - while (IsAnHaskellOperatorChar(sc.ch)) - sc.Forward(); - - char s[100]; - sc.GetCurrent(s, sizeof(s)); - - if (reserved_operators.InList(s)) - style = SCE_HA_RESERVED_OPERATOR; - - sc.ChangeState(style); - sc.SetState(SCE_HA_DEFAULT); - } - // String - else if (sc.state == SCE_HA_STRING) { - if (sc.atLineEnd) { - sc.ChangeState(SCE_HA_STRINGEOL); - sc.ForwardSetState(SCE_HA_DEFAULT); - } else if (sc.ch == '\"') { - sc.Forward(); - skipMagicHash(sc, oneHash); - sc.SetState(SCE_HA_DEFAULT); - } else if (sc.ch == '\\') { - sc.Forward(2); - } else { - sc.Forward(); - } - } - // Char - else if (sc.state == SCE_HA_CHARACTER) { - if (sc.atLineEnd) { - sc.ChangeState(SCE_HA_STRINGEOL); - sc.ForwardSetState(SCE_HA_DEFAULT); - } else if (sc.ch == '\'') { - sc.Forward(); - skipMagicHash(sc, oneHash); - sc.SetState(SCE_HA_DEFAULT); - } else if (sc.ch == '\\') { - sc.Forward(2); - } else { - sc.Forward(); - } - } - // Number - else if (sc.state == SCE_HA_NUMBER) { - if (sc.atLineEnd) { - sc.SetState(SCE_HA_DEFAULT); - sc.Forward(); // prevent double counting a line - } else if (IsADigit(sc.ch, base)) { - sc.Forward(); - } else if (sc.ch=='.' && dot && IsADigit(sc.chNext, base)) { - sc.Forward(2); - dot = false; - } else if ((base == 10) && - (sc.ch == 'e' || sc.ch == 'E') && - (IsADigit(sc.chNext) || sc.chNext == '+' || sc.chNext == '-')) { - sc.Forward(); - if (sc.ch == '+' || sc.ch == '-') - sc.Forward(); - } else { - skipMagicHash(sc, twoHashes); - sc.SetState(SCE_HA_DEFAULT); - } - } - // Keyword or Identifier - else if (sc.state == SCE_HA_IDENTIFIER) { - int style = IsHaskellUpperCase(sc.ch) ? SCE_HA_CAPITAL : SCE_HA_IDENTIFIER; - - assert(IsAHaskellWordStart(sc.ch)); - - sc.Forward(); - - while (sc.More()) { - if (IsAHaskellWordChar(sc.ch)) { - sc.Forward(); - } else if (sc.ch == '.' && style == SCE_HA_CAPITAL) { - if (IsHaskellUpperCase(sc.chNext)) { - sc.Forward(); - style = SCE_HA_CAPITAL; - } else if (IsAHaskellWordStart(sc.chNext)) { - sc.Forward(); - style = SCE_HA_IDENTIFIER; - } else if (IsAnHaskellOperatorChar(sc.chNext)) { - sc.Forward(); - style = sc.ch == ':' ? SCE_HA_CAPITAL : SCE_HA_OPERATOR; - while (IsAnHaskellOperatorChar(sc.ch)) - sc.Forward(); - break; - } else { - break; - } - } else { - break; - } - } - - skipMagicHash(sc, unlimitedHashes); - - char s[100]; - sc.GetCurrent(s, sizeof(s)); - - KeywordMode new_mode = HA_MODE_DEFAULT; - - if (keywords.InList(s)) { - style = SCE_HA_KEYWORD; - } else if (style == SCE_HA_CAPITAL) { - if (hs.mode == HA_MODE_IMPORT1 || hs.mode == HA_MODE_IMPORT3) { - style = SCE_HA_MODULE; - new_mode = HA_MODE_IMPORT2; - } else if (hs.mode == HA_MODE_MODULE) { - style = SCE_HA_MODULE; - } - } else if (hs.mode == HA_MODE_IMPORT1 && - strcmp(s,"qualified") == 0) { - style = SCE_HA_KEYWORD; - new_mode = HA_MODE_IMPORT1; - } else if (options.highlightSafe && - hs.mode == HA_MODE_IMPORT1 && - strcmp(s,"safe") == 0) { - style = SCE_HA_KEYWORD; - new_mode = HA_MODE_IMPORT1; - } else if (hs.mode == HA_MODE_IMPORT2) { - if (strcmp(s,"as") == 0) { - style = SCE_HA_KEYWORD; - new_mode = HA_MODE_IMPORT3; - } else if (strcmp(s,"hiding") == 0) { - style = SCE_HA_KEYWORD; - } - } else if (hs.mode == HA_MODE_TYPE) { - if (strcmp(s,"family") == 0) - style = SCE_HA_KEYWORD; - } - - if (hs.mode == HA_MODE_FFI) { - if (ffi.InList(s)) { - style = SCE_HA_KEYWORD; - new_mode = HA_MODE_FFI; - } - } - - sc.ChangeState(style); - sc.SetState(SCE_HA_DEFAULT); - - if (strcmp(s,"import") == 0 && hs.mode != HA_MODE_FFI) - new_mode = HA_MODE_IMPORT1; - else if (strcmp(s,"module") == 0) - new_mode = HA_MODE_MODULE; - else if (strcmp(s,"foreign") == 0) - new_mode = HA_MODE_FFI; - else if (strcmp(s,"type") == 0 - || strcmp(s,"data") == 0) - new_mode = HA_MODE_TYPE; - - hs.mode = new_mode; - } - - // Comments - // Oneliner - else if (sc.state == SCE_HA_COMMENTLINE) { - if (sc.atLineEnd) { - sc.SetState(hs.pragma ? SCE_HA_PRAGMA : SCE_HA_DEFAULT); - sc.Forward(); // prevent double counting a line - } else if (inDashes && sc.ch != '-' && !hs.pragma) { - inDashes = false; - if (IsAnHaskellOperatorChar(sc.ch)) { - alreadyInTheMiddleOfOperator = true; - sc.ChangeState(SCE_HA_OPERATOR); - } - } else { - sc.Forward(); - } - } - // Nested - else if (IsCommentBlockStyle(sc.state)) { - if (sc.Match('{','-')) { - sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel)); - sc.Forward(2); - hs.nestLevel++; - } else if (sc.Match('-','}')) { - sc.Forward(2); - assert(hs.nestLevel > 0); - if (hs.nestLevel > 0) - hs.nestLevel--; - sc.SetState( - hs.nestLevel == 0 - ? (hs.pragma ? SCE_HA_PRAGMA : SCE_HA_DEFAULT) - : CommentBlockStyleFromNestLevel(hs.nestLevel - 1)); - } else { - sc.Forward(); - } - } - // Pragma - else if (sc.state == SCE_HA_PRAGMA) { - if (sc.Match("#-}")) { - hs.pragma = false; - sc.Forward(3); - sc.SetState(SCE_HA_DEFAULT); - } else if (sc.Match('-','-')) { - sc.SetState(SCE_HA_COMMENTLINE); - sc.Forward(2); - inDashes = false; - } else if (sc.Match('{','-')) { - sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel)); - sc.Forward(2); - hs.nestLevel = 1; - } else { - sc.Forward(); - } - } - // New state? - else if (sc.state == SCE_HA_DEFAULT) { - // Digit - if (IsADigit(sc.ch)) { - hs.mode = HA_MODE_DEFAULT; - - sc.SetState(SCE_HA_NUMBER); - if (sc.ch == '0' && (sc.chNext == 'X' || sc.chNext == 'x')) { - // Match anything starting with "0x" or "0X", too - sc.Forward(2); - base = 16; - dot = false; - } else if (sc.ch == '0' && (sc.chNext == 'O' || sc.chNext == 'o')) { - // Match anything starting with "0o" or "0O", too - sc.Forward(2); - base = 8; - dot = false; - } else { - sc.Forward(); - base = 10; - dot = true; - } - } - // Pragma - else if (sc.Match("{-#")) { - hs.pragma = true; - sc.SetState(SCE_HA_PRAGMA); - sc.Forward(3); - } - // Comment line - else if (sc.Match('-','-')) { - sc.SetState(SCE_HA_COMMENTLINE); - sc.Forward(2); - inDashes = true; - } - // Comment block - else if (sc.Match('{','-')) { - sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel)); - sc.Forward(2); - hs.nestLevel = 1; - } - // String - else if (sc.ch == '\"') { - sc.SetState(SCE_HA_STRING); - sc.Forward(); - } - // Character or quoted name or promoted term - else if (sc.ch == '\'') { - hs.mode = HA_MODE_DEFAULT; - - sc.SetState(SCE_HA_CHARACTER); - sc.Forward(); - - if (options.allowQuotes) { - // Quoted type ''T - if (sc.ch=='\'' && IsAHaskellWordStart(sc.chNext)) { - sc.Forward(); - sc.ChangeState(SCE_HA_IDENTIFIER); - } else if (sc.chNext != '\'') { - // Quoted name 'n or promoted constructor 'N - if (IsAHaskellWordStart(sc.ch)) { - sc.ChangeState(SCE_HA_IDENTIFIER); - // Promoted constructor operator ':~> - } else if (sc.ch == ':') { - alreadyInTheMiddleOfOperator = false; - sc.ChangeState(SCE_HA_OPERATOR); - // Promoted list or tuple '[T] - } else if (sc.ch == '[' || sc.ch== '(') { - sc.ChangeState(SCE_HA_OPERATOR); - sc.ForwardSetState(SCE_HA_DEFAULT); - } - } - } - } - // Operator starting with '?' or an implicit parameter - else if (sc.ch == '?') { - hs.mode = HA_MODE_DEFAULT; - - alreadyInTheMiddleOfOperator = false; - sc.SetState(SCE_HA_OPERATOR); - - if ( options.implicitParams - && IsAHaskellWordStart(sc.chNext) - && !IsHaskellUpperCase(sc.chNext)) { - sc.Forward(); - sc.ChangeState(SCE_HA_IDENTIFIER); - } - } - // Operator - else if (IsAnHaskellOperatorChar(sc.ch)) { - hs.mode = HA_MODE_DEFAULT; - - sc.SetState(SCE_HA_OPERATOR); - } - // Braces and punctuation - else if (sc.ch == ',' || sc.ch == ';' - || sc.ch == '(' || sc.ch == ')' - || sc.ch == '[' || sc.ch == ']' - || sc.ch == '{' || sc.ch == '}') { - sc.SetState(SCE_HA_OPERATOR); - sc.ForwardSetState(SCE_HA_DEFAULT); - } - // Keyword or Identifier - else if (IsAHaskellWordStart(sc.ch)) { - sc.SetState(SCE_HA_IDENTIFIER); - // Something we don't care about - } else { - sc.Forward(); - } - } - // This branch should never be reached. - else { - assert(false); - sc.Forward(); - } - } - sc.Complete(); -} - -void SCI_METHOD LexerHaskell::Fold(Sci_PositionU startPos, Sci_Position length, int // initStyle - ,IDocument *pAccess) { - if (!options.fold) - return; - - Accessor styler(pAccess, NULL); - - Sci_Position lineCurrent = styler.GetLine(startPos); - - if (lineCurrent <= firstImportLine) { - firstImportLine = -1; // readjust first import position - firstImportIndent = 0; - } - - const Sci_Position maxPos = startPos + length; - const Sci_Position maxLines = - maxPos == styler.Length() - ? styler.GetLine(maxPos) - : styler.GetLine(maxPos - 1); // Requested last line - const Sci_Position docLines = styler.GetLine(styler.Length()); // Available last line - - // Backtrack to previous non-blank line so we can determine indent level - // for any white space lines - // and so we can fix any preceding fold level (which is why we go back - // at least one line in all cases) - bool importHere = LineContainsImport(lineCurrent, styler); - int indentCurrent = IndentAmountWithOffset(styler, lineCurrent); - - while (lineCurrent > 0) { - lineCurrent--; - importHere = LineContainsImport(lineCurrent, styler); - indentCurrent = IndentAmountWithOffset(styler, lineCurrent); - if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) - break; - } - - int indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK; - - if (importHere) { - indentCurrentLevel = IndentLevelRemoveIndentOffset(indentCurrentLevel); - if (firstImportLine == -1) { - firstImportLine = lineCurrent; - firstImportIndent = (1 + indentCurrentLevel) - SC_FOLDLEVELBASE; - } - if (firstImportLine != lineCurrent) { - indentCurrentLevel++; - } - } - - indentCurrent = indentCurrentLevel | (indentCurrent & ~SC_FOLDLEVELNUMBERMASK); - - // Process all characters to end of requested range - //that hangs over the end of the range. Cap processing in all cases - // to end of document. - while (lineCurrent <= docLines && lineCurrent <= maxLines) { - - // Gather info - Sci_Position lineNext = lineCurrent + 1; - importHere = false; - int indentNext = indentCurrent; - - if (lineNext <= docLines) { - // Information about next line is only available if not at end of document - importHere = LineContainsImport(lineNext, styler); - indentNext = IndentAmountWithOffset(styler, lineNext); - } - if (indentNext & SC_FOLDLEVELWHITEFLAG) - indentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel; - - // Skip past any blank lines for next indent level info; we skip also - // comments (all comments, not just those starting in column 0) - // which effectively folds them into surrounding code rather - // than screwing up folding. - - while (lineNext < docLines && (indentNext & SC_FOLDLEVELWHITEFLAG)) { - lineNext++; - importHere = LineContainsImport(lineNext, styler); - indentNext = IndentAmountWithOffset(styler, lineNext); - } - - int indentNextLevel = indentNext & SC_FOLDLEVELNUMBERMASK; - - if (importHere) { - indentNextLevel = IndentLevelRemoveIndentOffset(indentNextLevel); - if (firstImportLine == -1) { - firstImportLine = lineNext; - firstImportIndent = (1 + indentNextLevel) - SC_FOLDLEVELBASE; - } - if (firstImportLine != lineNext) { - indentNextLevel++; - } - } - - indentNext = indentNextLevel | (indentNext & ~SC_FOLDLEVELNUMBERMASK); - - const int levelBeforeComments = Maximum(indentCurrentLevel,indentNextLevel); - - // Now set all the indent levels on the lines we skipped - // Do this from end to start. Once we encounter one line - // which is indented more than the line after the end of - // the comment-block, use the level of the block before - - Sci_Position skipLine = lineNext; - int skipLevel = indentNextLevel; - - while (--skipLine > lineCurrent) { - int skipLineIndent = IndentAmountWithOffset(styler, skipLine); - - if (options.foldCompact) { - if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > indentNextLevel) { - skipLevel = levelBeforeComments; - } - - int whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG; - - styler.SetLevel(skipLine, skipLevel | whiteFlag); - } else { - if ( (skipLineIndent & SC_FOLDLEVELNUMBERMASK) > indentNextLevel - && !(skipLineIndent & SC_FOLDLEVELWHITEFLAG)) { - skipLevel = levelBeforeComments; - } - - styler.SetLevel(skipLine, skipLevel); - } - } - - int lev = indentCurrent; - - if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) { - if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) - lev |= SC_FOLDLEVELHEADERFLAG; - } - - // Set fold level for this line and move to next line - styler.SetLevel(lineCurrent, options.foldCompact ? lev : lev & ~SC_FOLDLEVELWHITEFLAG); - - indentCurrent = indentNext; - indentCurrentLevel = indentNextLevel; - lineCurrent = lineNext; - } - - // NOTE: Cannot set level of last line here because indentCurrent doesn't have - // header flag set; the loop above is crafted to take care of this case! - //styler.SetLevel(lineCurrent, indentCurrent); -} - -LexerModule lmHaskell(SCLEX_HASKELL, LexerHaskell::LexerFactoryHaskell, "haskell", haskellWordListDesc); -LexerModule lmLiterateHaskell(SCLEX_LITERATEHASKELL, LexerHaskell::LexerFactoryLiterateHaskell, "literatehaskell", haskellWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHex.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHex.cpp deleted file mode 100644 index 6e1099786..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexHex.cpp +++ /dev/null @@ -1,1045 +0,0 @@ -// Scintilla source code edit control -/** @file LexHex.cxx - ** Lexers for Motorola S-Record, Intel HEX and Tektronix extended HEX. - ** - ** Written by Markus Heidelberg - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -/* - * Motorola S-Record - * =============================== - * - * Each record (line) is built as follows: - * - * field digits states - * - * +----------+ - * | start | 1 ('S') SCE_HEX_RECSTART - * +----------+ - * | type | 1 SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN) - * +----------+ - * | count | 2 SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG - * +----------+ - * | address | 4/6/8 SCE_HEX_NOADDRESS, SCE_HEX_DATAADDRESS, SCE_HEX_RECCOUNT, SCE_HEX_STARTADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN) - * +----------+ - * | data | 0..504/502/500 SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN, SCE_HEX_DATA_EMPTY, (SCE_HEX_DATA_UNKNOWN) - * +----------+ - * | checksum | 2 SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG - * +----------+ - * - * - * Intel HEX - * =============================== - * - * Each record (line) is built as follows: - * - * field digits states - * - * +----------+ - * | start | 1 (':') SCE_HEX_RECSTART - * +----------+ - * | count | 2 SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG - * +----------+ - * | address | 4 SCE_HEX_NOADDRESS, SCE_HEX_DATAADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN) - * +----------+ - * | type | 2 SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN) - * +----------+ - * | data | 0..510 SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN, SCE_HEX_DATA_EMPTY, SCE_HEX_EXTENDEDADDRESS, SCE_HEX_STARTADDRESS, (SCE_HEX_DATA_UNKNOWN) - * +----------+ - * | checksum | 2 SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG - * +----------+ - * - * - * Folding: - * - * Data records (type 0x00), which follow an extended address record (type - * 0x02 or 0x04), can be folded. The extended address record is the fold - * point at fold level 0, the corresponding data records are set to level 1. - * - * Any record, which is not a data record, sets the fold level back to 0. - * Any line, which is not a record (blank lines and lines starting with a - * character other than ':'), leaves the fold level unchanged. - * - * - * Tektronix extended HEX - * =============================== - * - * Each record (line) is built as follows: - * - * field digits states - * - * +----------+ - * | start | 1 ('%') SCE_HEX_RECSTART - * +----------+ - * | length | 2 SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG - * +----------+ - * | type | 1 SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN) - * +----------+ - * | checksum | 2 SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG - * +----------+ - * | address | 9 SCE_HEX_DATAADDRESS, SCE_HEX_STARTADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN) - * +----------+ - * | data | 0..241 SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN - * +----------+ - * - * - * General notes for all lexers - * =============================== - * - * - Depending on where the helper functions are invoked, some of them have to - * read beyond the current position. In case of malformed data (record too - * short), it has to be ensured that this either does not have bad influence - * or will be captured deliberately. - * - * - States in parentheses in the upper format descriptions indicate that they - * should not appear in a valid hex file. - * - * - State SCE_HEX_GARBAGE means garbage data after the intended end of the - * record, the line is too long then. This state is used in all lexers. - */ - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -// prototypes for general helper functions -static inline bool IsNewline(const int ch); -static int GetHexaNibble(char hd); -static int GetHexaChar(char hd1, char hd2); -static int GetHexaChar(Sci_PositionU pos, Accessor &styler); -static bool ForwardWithinLine(StyleContext &sc, Sci_Position nb = 1); -static bool PosInSameRecord(Sci_PositionU pos1, Sci_PositionU pos2, Accessor &styler); -static Sci_Position CountByteCount(Sci_PositionU startPos, Sci_Position uncountedDigits, Accessor &styler); -static int CalcChecksum(Sci_PositionU startPos, Sci_Position cnt, bool twosCompl, Accessor &styler); - -// prototypes for file format specific helper functions -static Sci_PositionU GetSrecRecStartPosition(Sci_PositionU pos, Accessor &styler); -static int GetSrecByteCount(Sci_PositionU recStartPos, Accessor &styler); -static Sci_Position CountSrecByteCount(Sci_PositionU recStartPos, Accessor &styler); -static int GetSrecAddressFieldSize(Sci_PositionU recStartPos, Accessor &styler); -static int GetSrecAddressFieldType(Sci_PositionU recStartPos, Accessor &styler); -static int GetSrecDataFieldType(Sci_PositionU recStartPos, Accessor &styler); -static Sci_Position GetSrecRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler); -static int GetSrecChecksum(Sci_PositionU recStartPos, Accessor &styler); -static int CalcSrecChecksum(Sci_PositionU recStartPos, Accessor &styler); - -static Sci_PositionU GetIHexRecStartPosition(Sci_PositionU pos, Accessor &styler); -static int GetIHexByteCount(Sci_PositionU recStartPos, Accessor &styler); -static Sci_Position CountIHexByteCount(Sci_PositionU recStartPos, Accessor &styler); -static int GetIHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler); -static int GetIHexDataFieldType(Sci_PositionU recStartPos, Accessor &styler); -static int GetIHexRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler); -static int GetIHexChecksum(Sci_PositionU recStartPos, Accessor &styler); -static int CalcIHexChecksum(Sci_PositionU recStartPos, Accessor &styler); - -static int GetTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler); -static Sci_Position CountTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler); -static int GetTEHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler); -static int GetTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler); -static int CalcTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler); - -static inline bool IsNewline(const int ch) -{ - return (ch == '\n' || ch == '\r'); -} - -static int GetHexaNibble(char hd) -{ - int hexValue = 0; - - if (hd >= '0' && hd <= '9') { - hexValue += hd - '0'; - } else if (hd >= 'A' && hd <= 'F') { - hexValue += hd - 'A' + 10; - } else if (hd >= 'a' && hd <= 'f') { - hexValue += hd - 'a' + 10; - } else { - return -1; - } - - return hexValue; -} - -static int GetHexaChar(char hd1, char hd2) -{ - int hexValue = 0; - - if (hd1 >= '0' && hd1 <= '9') { - hexValue += 16 * (hd1 - '0'); - } else if (hd1 >= 'A' && hd1 <= 'F') { - hexValue += 16 * (hd1 - 'A' + 10); - } else if (hd1 >= 'a' && hd1 <= 'f') { - hexValue += 16 * (hd1 - 'a' + 10); - } else { - return -1; - } - - if (hd2 >= '0' && hd2 <= '9') { - hexValue += hd2 - '0'; - } else if (hd2 >= 'A' && hd2 <= 'F') { - hexValue += hd2 - 'A' + 10; - } else if (hd2 >= 'a' && hd2 <= 'f') { - hexValue += hd2 - 'a' + 10; - } else { - return -1; - } - - return hexValue; -} - -static int GetHexaChar(Sci_PositionU pos, Accessor &styler) -{ - char highNibble, lowNibble; - - highNibble = styler.SafeGetCharAt(pos); - lowNibble = styler.SafeGetCharAt(pos + 1); - - return GetHexaChar(highNibble, lowNibble); -} - -// Forward characters, but abort (and return false) if hitting the line -// end. Return true if forwarding within the line was possible. -// Avoids influence on highlighting of the subsequent line if the current line -// is malformed (too short). -static bool ForwardWithinLine(StyleContext &sc, Sci_Position nb) -{ - for (Sci_Position i = 0; i < nb; i++) { - if (sc.atLineEnd) { - // line is too short - sc.SetState(SCE_HEX_DEFAULT); - sc.Forward(); - return false; - } else { - sc.Forward(); - } - } - - return true; -} - -// Checks whether the given positions are in the same record. -static bool PosInSameRecord(Sci_PositionU pos1, Sci_PositionU pos2, Accessor &styler) -{ - return styler.GetLine(pos1) == styler.GetLine(pos2); -} - -// Count the number of digit pairs from till end of record, ignoring -// digits. -// If the record is too short, a negative count may be returned. -static Sci_Position CountByteCount(Sci_PositionU startPos, Sci_Position uncountedDigits, Accessor &styler) -{ - Sci_Position cnt; - Sci_PositionU pos; - - pos = startPos; - - while (!IsNewline(styler.SafeGetCharAt(pos, '\n'))) { - pos++; - } - - // number of digits in this line minus number of digits of uncounted fields - cnt = static_cast(pos - startPos) - uncountedDigits; - - // Prepare round up if odd (digit pair incomplete), this way the byte - // count is considered to be valid if the checksum is incomplete. - if (cnt >= 0) { - cnt++; - } - - // digit pairs - cnt /= 2; - - return cnt; -} - -// Calculate the checksum of the record. -// is the position of the first character of the starting digit -// pair, is the number of digit pairs. -static int CalcChecksum(Sci_PositionU startPos, Sci_Position cnt, bool twosCompl, Accessor &styler) -{ - int cs = 0; - - for (Sci_PositionU pos = startPos; pos < startPos + cnt; pos += 2) { - int val = GetHexaChar(pos, styler); - - if (val < 0) { - return val; - } - - // overflow does not matter - cs += val; - } - - if (twosCompl) { - // low byte of two's complement - return -cs & 0xFF; - } else { - // low byte of one's complement - return ~cs & 0xFF; - } -} - -// Get the position of the record "start" field (first character in line) in -// the record around position . -static Sci_PositionU GetSrecRecStartPosition(Sci_PositionU pos, Accessor &styler) -{ - while (styler.SafeGetCharAt(pos) != 'S') { - pos--; - } - - return pos; -} - -// Get the value of the "byte count" field, it counts the number of bytes in -// the subsequent fields ("address", "data" and "checksum" fields). -static int GetSrecByteCount(Sci_PositionU recStartPos, Accessor &styler) -{ - int val; - - val = GetHexaChar(recStartPos + 2, styler); - if (val < 0) { - val = 0; - } - - return val; -} - -// Count the number of digit pairs for the "address", "data" and "checksum" -// fields in this record. Has to be equal to the "byte count" field value. -// If the record is too short, a negative count may be returned. -static Sci_Position CountSrecByteCount(Sci_PositionU recStartPos, Accessor &styler) -{ - return CountByteCount(recStartPos, 4, styler); -} - -// Get the size of the "address" field. -static int GetSrecAddressFieldSize(Sci_PositionU recStartPos, Accessor &styler) -{ - switch (styler.SafeGetCharAt(recStartPos + 1)) { - case '0': - case '1': - case '5': - case '9': - return 2; // 16 bit - - case '2': - case '6': - case '8': - return 3; // 24 bit - - case '3': - case '7': - return 4; // 32 bit - - default: - return 0; - } -} - -// Get the type of the "address" field content. -static int GetSrecAddressFieldType(Sci_PositionU recStartPos, Accessor &styler) -{ - switch (styler.SafeGetCharAt(recStartPos + 1)) { - case '0': - return SCE_HEX_NOADDRESS; - - case '1': - case '2': - case '3': - return SCE_HEX_DATAADDRESS; - - case '5': - case '6': - return SCE_HEX_RECCOUNT; - - case '7': - case '8': - case '9': - return SCE_HEX_STARTADDRESS; - - default: // handle possible format extension in the future - return SCE_HEX_ADDRESSFIELD_UNKNOWN; - } -} - -// Get the type of the "data" field content. -static int GetSrecDataFieldType(Sci_PositionU recStartPos, Accessor &styler) -{ - switch (styler.SafeGetCharAt(recStartPos + 1)) { - case '0': - case '1': - case '2': - case '3': - return SCE_HEX_DATA_ODD; - - case '5': - case '6': - case '7': - case '8': - case '9': - return SCE_HEX_DATA_EMPTY; - - default: // handle possible format extension in the future - return SCE_HEX_DATA_UNKNOWN; - } -} - -// Get the required size of the "data" field. Useless for block header and -// ordinary data records (type S0, S1, S2, S3), return the value calculated -// from the "byte count" and "address field" size in this case. -static Sci_Position GetSrecRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler) -{ - switch (styler.SafeGetCharAt(recStartPos + 1)) { - case '5': - case '6': - case '7': - case '8': - case '9': - return 0; - - default: - return GetSrecByteCount(recStartPos, styler) - - GetSrecAddressFieldSize(recStartPos, styler) - - 1; // -1 for checksum field - } -} - -// Get the value of the "checksum" field. -static int GetSrecChecksum(Sci_PositionU recStartPos, Accessor &styler) -{ - int byteCount; - - byteCount = GetSrecByteCount(recStartPos, styler); - - return GetHexaChar(recStartPos + 2 + byteCount * 2, styler); -} - -// Calculate the checksum of the record. -static int CalcSrecChecksum(Sci_PositionU recStartPos, Accessor &styler) -{ - Sci_Position byteCount; - - byteCount = GetSrecByteCount(recStartPos, styler); - - // sum over "byte count", "address" and "data" fields (6..510 digits) - return CalcChecksum(recStartPos + 2, byteCount * 2, false, styler); -} - -// Get the position of the record "start" field (first character in line) in -// the record around position . -static Sci_PositionU GetIHexRecStartPosition(Sci_PositionU pos, Accessor &styler) -{ - while (styler.SafeGetCharAt(pos) != ':') { - pos--; - } - - return pos; -} - -// Get the value of the "byte count" field, it counts the number of bytes in -// the "data" field. -static int GetIHexByteCount(Sci_PositionU recStartPos, Accessor &styler) -{ - int val; - - val = GetHexaChar(recStartPos + 1, styler); - if (val < 0) { - val = 0; - } - - return val; -} - -// Count the number of digit pairs for the "data" field in this record. Has to -// be equal to the "byte count" field value. -// If the record is too short, a negative count may be returned. -static Sci_Position CountIHexByteCount(Sci_PositionU recStartPos, Accessor &styler) -{ - return CountByteCount(recStartPos, 11, styler); -} - -// Get the type of the "address" field content. -static int GetIHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler) -{ - if (!PosInSameRecord(recStartPos, recStartPos + 7, styler)) { - // malformed (record too short) - // type cannot be determined - return SCE_HEX_ADDRESSFIELD_UNKNOWN; - } - - switch (GetHexaChar(recStartPos + 7, styler)) { - case 0x00: - return SCE_HEX_DATAADDRESS; - - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - return SCE_HEX_NOADDRESS; - - default: // handle possible format extension in the future - return SCE_HEX_ADDRESSFIELD_UNKNOWN; - } -} - -// Get the type of the "data" field content. -static int GetIHexDataFieldType(Sci_PositionU recStartPos, Accessor &styler) -{ - switch (GetHexaChar(recStartPos + 7, styler)) { - case 0x00: - return SCE_HEX_DATA_ODD; - - case 0x01: - return SCE_HEX_DATA_EMPTY; - - case 0x02: - case 0x04: - return SCE_HEX_EXTENDEDADDRESS; - - case 0x03: - case 0x05: - return SCE_HEX_STARTADDRESS; - - default: // handle possible format extension in the future - return SCE_HEX_DATA_UNKNOWN; - } -} - -// Get the required size of the "data" field. Useless for an ordinary data -// record (type 00), return the "byte count" in this case. -static int GetIHexRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler) -{ - switch (GetHexaChar(recStartPos + 7, styler)) { - case 0x01: - return 0; - - case 0x02: - case 0x04: - return 2; - - case 0x03: - case 0x05: - return 4; - - default: - return GetIHexByteCount(recStartPos, styler); - } -} - -// Get the value of the "checksum" field. -static int GetIHexChecksum(Sci_PositionU recStartPos, Accessor &styler) -{ - int byteCount; - - byteCount = GetIHexByteCount(recStartPos, styler); - - return GetHexaChar(recStartPos + 9 + byteCount * 2, styler); -} - -// Calculate the checksum of the record. -static int CalcIHexChecksum(Sci_PositionU recStartPos, Accessor &styler) -{ - int byteCount; - - byteCount = GetIHexByteCount(recStartPos, styler); - - // sum over "byte count", "address", "type" and "data" fields (8..518 digits) - return CalcChecksum(recStartPos + 1, 8 + byteCount * 2, true, styler); -} - - -// Get the value of the "record length" field, it counts the number of digits in -// the record excluding the percent. -static int GetTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler) -{ - int val = GetHexaChar(recStartPos + 1, styler); - if (val < 0) - val = 0; - - return val; -} - -// Count the number of digits in this record. Has to -// be equal to the "record length" field value. -static Sci_Position CountTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler) -{ - Sci_PositionU pos; - - pos = recStartPos+1; - - while (!IsNewline(styler.SafeGetCharAt(pos, '\n'))) { - pos++; - } - - return static_cast(pos - (recStartPos+1)); -} - -// Get the type of the "address" field content. -static int GetTEHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler) -{ - switch (styler.SafeGetCharAt(recStartPos + 3)) { - case '6': - return SCE_HEX_DATAADDRESS; - - case '8': - return SCE_HEX_STARTADDRESS; - - default: // handle possible format extension in the future - return SCE_HEX_ADDRESSFIELD_UNKNOWN; - } -} - -// Get the value of the "checksum" field. -static int GetTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler) -{ - return GetHexaChar(recStartPos+4, styler); -} - -// Calculate the checksum of the record (excluding the checksum field). -static int CalcTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler) -{ - Sci_PositionU pos = recStartPos +1; - Sci_PositionU length = GetTEHexDigitCount(recStartPos, styler); - - int cs = GetHexaNibble(styler.SafeGetCharAt(pos++));//length - cs += GetHexaNibble(styler.SafeGetCharAt(pos++));//length - - cs += GetHexaNibble(styler.SafeGetCharAt(pos++));//type - - pos += 2;// jump over CS field - - for (; pos <= recStartPos + length; ++pos) { - int val = GetHexaNibble(styler.SafeGetCharAt(pos)); - - if (val < 0) { - return val; - } - - // overflow does not matter - cs += val; - } - - // low byte - return cs & 0xFF; - -} - -static void ColouriseSrecDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) -{ - StyleContext sc(startPos, length, initStyle, styler); - - while (sc.More()) { - Sci_PositionU recStartPos; - Sci_Position reqByteCount; - Sci_Position dataFieldSize; - int byteCount, addrFieldSize, addrFieldType, dataFieldType; - int cs1, cs2; - - switch (sc.state) { - case SCE_HEX_DEFAULT: - if (sc.atLineStart && sc.Match('S')) { - sc.SetState(SCE_HEX_RECSTART); - } - ForwardWithinLine(sc); - break; - - case SCE_HEX_RECSTART: - recStartPos = sc.currentPos - 1; - addrFieldType = GetSrecAddressFieldType(recStartPos, styler); - - if (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) { - sc.SetState(SCE_HEX_RECTYPE_UNKNOWN); - } else { - sc.SetState(SCE_HEX_RECTYPE); - } - - ForwardWithinLine(sc); - break; - - case SCE_HEX_RECTYPE: - case SCE_HEX_RECTYPE_UNKNOWN: - recStartPos = sc.currentPos - 2; - byteCount = GetSrecByteCount(recStartPos, styler); - reqByteCount = GetSrecAddressFieldSize(recStartPos, styler) - + GetSrecRequiredDataFieldSize(recStartPos, styler) - + 1; // +1 for checksum field - - if (byteCount == CountSrecByteCount(recStartPos, styler) - && byteCount == reqByteCount) { - sc.SetState(SCE_HEX_BYTECOUNT); - } else { - sc.SetState(SCE_HEX_BYTECOUNT_WRONG); - } - - ForwardWithinLine(sc, 2); - break; - - case SCE_HEX_BYTECOUNT: - case SCE_HEX_BYTECOUNT_WRONG: - recStartPos = sc.currentPos - 4; - addrFieldSize = GetSrecAddressFieldSize(recStartPos, styler); - addrFieldType = GetSrecAddressFieldType(recStartPos, styler); - - sc.SetState(addrFieldType); - ForwardWithinLine(sc, addrFieldSize * 2); - break; - - case SCE_HEX_NOADDRESS: - case SCE_HEX_DATAADDRESS: - case SCE_HEX_RECCOUNT: - case SCE_HEX_STARTADDRESS: - case SCE_HEX_ADDRESSFIELD_UNKNOWN: - recStartPos = GetSrecRecStartPosition(sc.currentPos, styler); - dataFieldType = GetSrecDataFieldType(recStartPos, styler); - - // Using the required size here if possible has the effect that the - // checksum is highlighted at a fixed position after this field for - // specific record types, independent on the "byte count" value. - dataFieldSize = GetSrecRequiredDataFieldSize(recStartPos, styler); - - sc.SetState(dataFieldType); - - if (dataFieldType == SCE_HEX_DATA_ODD) { - for (int i = 0; i < dataFieldSize * 2; i++) { - if ((i & 0x3) == 0) { - sc.SetState(SCE_HEX_DATA_ODD); - } else if ((i & 0x3) == 2) { - sc.SetState(SCE_HEX_DATA_EVEN); - } - - if (!ForwardWithinLine(sc)) { - break; - } - } - } else { - ForwardWithinLine(sc, dataFieldSize * 2); - } - break; - - case SCE_HEX_DATA_ODD: - case SCE_HEX_DATA_EVEN: - case SCE_HEX_DATA_EMPTY: - case SCE_HEX_DATA_UNKNOWN: - recStartPos = GetSrecRecStartPosition(sc.currentPos, styler); - cs1 = CalcSrecChecksum(recStartPos, styler); - cs2 = GetSrecChecksum(recStartPos, styler); - - if (cs1 != cs2 || cs1 < 0 || cs2 < 0) { - sc.SetState(SCE_HEX_CHECKSUM_WRONG); - } else { - sc.SetState(SCE_HEX_CHECKSUM); - } - - ForwardWithinLine(sc, 2); - break; - - case SCE_HEX_CHECKSUM: - case SCE_HEX_CHECKSUM_WRONG: - case SCE_HEX_GARBAGE: - // record finished or line too long - sc.SetState(SCE_HEX_GARBAGE); - ForwardWithinLine(sc); - break; - - default: - // prevent endless loop in faulty state - sc.SetState(SCE_HEX_DEFAULT); - break; - } - } - sc.Complete(); -} - -static void ColouriseIHexDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) -{ - StyleContext sc(startPos, length, initStyle, styler); - - while (sc.More()) { - Sci_PositionU recStartPos; - int byteCount, addrFieldType, dataFieldSize, dataFieldType; - int cs1, cs2; - - switch (sc.state) { - case SCE_HEX_DEFAULT: - if (sc.atLineStart && sc.Match(':')) { - sc.SetState(SCE_HEX_RECSTART); - } - ForwardWithinLine(sc); - break; - - case SCE_HEX_RECSTART: - recStartPos = sc.currentPos - 1; - byteCount = GetIHexByteCount(recStartPos, styler); - dataFieldSize = GetIHexRequiredDataFieldSize(recStartPos, styler); - - if (byteCount == CountIHexByteCount(recStartPos, styler) - && byteCount == dataFieldSize) { - sc.SetState(SCE_HEX_BYTECOUNT); - } else { - sc.SetState(SCE_HEX_BYTECOUNT_WRONG); - } - - ForwardWithinLine(sc, 2); - break; - - case SCE_HEX_BYTECOUNT: - case SCE_HEX_BYTECOUNT_WRONG: - recStartPos = sc.currentPos - 3; - addrFieldType = GetIHexAddressFieldType(recStartPos, styler); - - sc.SetState(addrFieldType); - ForwardWithinLine(sc, 4); - break; - - case SCE_HEX_NOADDRESS: - case SCE_HEX_DATAADDRESS: - case SCE_HEX_ADDRESSFIELD_UNKNOWN: - recStartPos = sc.currentPos - 7; - addrFieldType = GetIHexAddressFieldType(recStartPos, styler); - - if (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) { - sc.SetState(SCE_HEX_RECTYPE_UNKNOWN); - } else { - sc.SetState(SCE_HEX_RECTYPE); - } - - ForwardWithinLine(sc, 2); - break; - - case SCE_HEX_RECTYPE: - case SCE_HEX_RECTYPE_UNKNOWN: - recStartPos = sc.currentPos - 9; - dataFieldType = GetIHexDataFieldType(recStartPos, styler); - - // Using the required size here if possible has the effect that the - // checksum is highlighted at a fixed position after this field for - // specific record types, independent on the "byte count" value. - dataFieldSize = GetIHexRequiredDataFieldSize(recStartPos, styler); - - sc.SetState(dataFieldType); - - if (dataFieldType == SCE_HEX_DATA_ODD) { - for (int i = 0; i < dataFieldSize * 2; i++) { - if ((i & 0x3) == 0) { - sc.SetState(SCE_HEX_DATA_ODD); - } else if ((i & 0x3) == 2) { - sc.SetState(SCE_HEX_DATA_EVEN); - } - - if (!ForwardWithinLine(sc)) { - break; - } - } - } else { - ForwardWithinLine(sc, dataFieldSize * 2); - } - break; - - case SCE_HEX_DATA_ODD: - case SCE_HEX_DATA_EVEN: - case SCE_HEX_DATA_EMPTY: - case SCE_HEX_EXTENDEDADDRESS: - case SCE_HEX_STARTADDRESS: - case SCE_HEX_DATA_UNKNOWN: - recStartPos = GetIHexRecStartPosition(sc.currentPos, styler); - cs1 = CalcIHexChecksum(recStartPos, styler); - cs2 = GetIHexChecksum(recStartPos, styler); - - if (cs1 != cs2 || cs1 < 0 || cs2 < 0) { - sc.SetState(SCE_HEX_CHECKSUM_WRONG); - } else { - sc.SetState(SCE_HEX_CHECKSUM); - } - - ForwardWithinLine(sc, 2); - break; - - case SCE_HEX_CHECKSUM: - case SCE_HEX_CHECKSUM_WRONG: - case SCE_HEX_GARBAGE: - // record finished or line too long - sc.SetState(SCE_HEX_GARBAGE); - ForwardWithinLine(sc); - break; - - default: - // prevent endless loop in faulty state - sc.SetState(SCE_HEX_DEFAULT); - break; - } - } - sc.Complete(); -} - -static void FoldIHexDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) -{ - Sci_PositionU endPos = startPos + length; - - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelCurrent = SC_FOLDLEVELBASE; - if (lineCurrent > 0) - levelCurrent = styler.LevelAt(lineCurrent - 1); - - Sci_PositionU lineStartNext = styler.LineStart(lineCurrent + 1); - int levelNext = SC_FOLDLEVELBASE; // default if no specific line found - - for (Sci_PositionU i = startPos; i < endPos; i++) { - bool atEOL = i == (lineStartNext - 1); - int style = styler.StyleAt(i); - - // search for specific lines - if (style == SCE_HEX_EXTENDEDADDRESS) { - // extended addres record - levelNext = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; - } else if (style == SCE_HEX_DATAADDRESS - || (style == SCE_HEX_DEFAULT - && i == (Sci_PositionU)styler.LineStart(lineCurrent))) { - // data record or no record start code at all - if (levelCurrent & SC_FOLDLEVELHEADERFLAG) { - levelNext = SC_FOLDLEVELBASE + 1; - } else { - // continue level 0 or 1, no fold point - levelNext = levelCurrent; - } - } - - if (atEOL || (i == endPos - 1)) { - styler.SetLevel(lineCurrent, levelNext); - - lineCurrent++; - lineStartNext = styler.LineStart(lineCurrent + 1); - levelCurrent = levelNext; - levelNext = SC_FOLDLEVELBASE; - } - } -} - -static void ColouriseTEHexDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) -{ - StyleContext sc(startPos, length, initStyle, styler); - - while (sc.More()) { - Sci_PositionU recStartPos; - int digitCount, addrFieldType; - int cs1, cs2; - - switch (sc.state) { - case SCE_HEX_DEFAULT: - if (sc.atLineStart && sc.Match('%')) { - sc.SetState(SCE_HEX_RECSTART); - } - ForwardWithinLine(sc); - break; - - case SCE_HEX_RECSTART: - - recStartPos = sc.currentPos - 1; - - if (GetTEHexDigitCount(recStartPos, styler) == CountTEHexDigitCount(recStartPos, styler)) { - sc.SetState(SCE_HEX_BYTECOUNT); - } else { - sc.SetState(SCE_HEX_BYTECOUNT_WRONG); - } - - ForwardWithinLine(sc, 2); - break; - - case SCE_HEX_BYTECOUNT: - case SCE_HEX_BYTECOUNT_WRONG: - recStartPos = sc.currentPos - 3; - addrFieldType = GetTEHexAddressFieldType(recStartPos, styler); - - if (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) { - sc.SetState(SCE_HEX_RECTYPE_UNKNOWN); - } else { - sc.SetState(SCE_HEX_RECTYPE); - } - - ForwardWithinLine(sc); - break; - - case SCE_HEX_RECTYPE: - case SCE_HEX_RECTYPE_UNKNOWN: - recStartPos = sc.currentPos - 4; - cs1 = CalcTEHexChecksum(recStartPos, styler); - cs2 = GetTEHexChecksum(recStartPos, styler); - - if (cs1 != cs2 || cs1 < 0 || cs2 < 0) { - sc.SetState(SCE_HEX_CHECKSUM_WRONG); - } else { - sc.SetState(SCE_HEX_CHECKSUM); - } - - ForwardWithinLine(sc, 2); - break; - - - case SCE_HEX_CHECKSUM: - case SCE_HEX_CHECKSUM_WRONG: - recStartPos = sc.currentPos - 6; - addrFieldType = GetTEHexAddressFieldType(recStartPos, styler); - - sc.SetState(addrFieldType); - ForwardWithinLine(sc, 9); - break; - - case SCE_HEX_DATAADDRESS: - case SCE_HEX_STARTADDRESS: - case SCE_HEX_ADDRESSFIELD_UNKNOWN: - recStartPos = sc.currentPos - 15; - digitCount = GetTEHexDigitCount(recStartPos, styler) - 14; - - sc.SetState(SCE_HEX_DATA_ODD); - - for (int i = 0; i < digitCount; i++) { - if ((i & 0x3) == 0) { - sc.SetState(SCE_HEX_DATA_ODD); - } else if ((i & 0x3) == 2) { - sc.SetState(SCE_HEX_DATA_EVEN); - } - - if (!ForwardWithinLine(sc)) { - break; - } - } - break; - - case SCE_HEX_DATA_ODD: - case SCE_HEX_DATA_EVEN: - case SCE_HEX_GARBAGE: - // record finished or line too long - sc.SetState(SCE_HEX_GARBAGE); - ForwardWithinLine(sc); - break; - - default: - // prevent endless loop in faulty state - sc.SetState(SCE_HEX_DEFAULT); - break; - } - } - sc.Complete(); -} - -LexerModule lmSrec(SCLEX_SREC, ColouriseSrecDoc, "srec", 0, NULL); -LexerModule lmIHex(SCLEX_IHEX, ColouriseIHexDoc, "ihex", FoldIHexDoc, NULL); -LexerModule lmTEHex(SCLEX_TEHEX, ColouriseTEHexDoc, "tehex", 0, NULL); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexIndent.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexIndent.cpp deleted file mode 100644 index 053bdd928..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexIndent.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// Scintilla source code edit control -/** @file LexIndent.cxx - ** Lexer for no language. Used for indentation-based folding of files. - **/ -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static void ColouriseIndentDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], - Accessor &styler) { - // Indent language means all style bytes are 0 so just mark the end - no need to fill in. - if (length > 0) { - styler.StartAt(startPos + length - 1); - styler.StartSegment(startPos + length - 1); - styler.ColourTo(startPos + length - 1, 0); - } -} - -static void FoldIndentDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], Accessor &styler) { - int visibleCharsCurrent, visibleCharsNext; - int levelCurrent, levelNext; - Sci_PositionU i, lineEnd; - Sci_PositionU lengthDoc = startPos + length; - Sci_Position lineCurrent = styler.GetLine(startPos); - - i = styler.LineStart(lineCurrent ); - lineEnd = styler.LineStart(lineCurrent+1)-1; - if(lineEnd>=lengthDoc) lineEnd = lengthDoc-1; - while(styler[lineEnd]=='\n' || styler[lineEnd]=='\r') lineEnd--; - for(visibleCharsCurrent=0, levelCurrent=SC_FOLDLEVELBASE; !visibleCharsCurrent && i<=lineEnd; i++){ - if(isspacechar(styler[i])) levelCurrent++; - else visibleCharsCurrent=1; - } - - for(; i=lengthDoc) lineEnd = lengthDoc-1; - while(styler[lineEnd]=='\n' || styler[lineEnd]=='\r') lineEnd--; - for(visibleCharsNext=0, levelNext=SC_FOLDLEVELBASE; !visibleCharsNext && i<=lineEnd; i++){ - if(isspacechar(styler[i])) levelNext++; - else visibleCharsNext=1; - } - int lev = levelCurrent; - if(!visibleCharsCurrent) lev |= SC_FOLDLEVELWHITEFLAG; - else if(levelNext > levelCurrent) lev |= SC_FOLDLEVELHEADERFLAG; - styler.SetLevel(lineCurrent, lev); - levelCurrent = levelNext; - visibleCharsCurrent = visibleCharsNext; - } -} - -LexerModule lmIndent(SCLEX_INDENT, ColouriseIndentDoc, "indent", FoldIndentDoc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexInno.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexInno.cpp deleted file mode 100644 index 5d01c0588..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexInno.cpp +++ /dev/null @@ -1,288 +0,0 @@ -// Scintilla source code edit control -/** @file LexInno.cxx - ** Lexer for Inno Setup scripts. - **/ -// Written by Friedrich Vedder , using code from LexOthers.cxx. -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static void ColouriseInnoDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler) { - int state = SCE_INNO_DEFAULT; - char chPrev; - char ch = 0; - char chNext = styler[startPos]; - Sci_Position lengthDoc = startPos + length; - char *buffer = new char[length+1]; - Sci_Position bufferCount = 0; - bool isBOL, isEOL, isWS, isBOLWS = 0; - bool isCStyleComment = false; - - WordList §ionKeywords = *keywordLists[0]; - WordList &standardKeywords = *keywordLists[1]; - WordList ¶meterKeywords = *keywordLists[2]; - WordList &preprocessorKeywords = *keywordLists[3]; - WordList &pascalKeywords = *keywordLists[4]; - WordList &userKeywords = *keywordLists[5]; - - Sci_Position curLine = styler.GetLine(startPos); - int curLineState = curLine > 0 ? styler.GetLineState(curLine - 1) : 0; - bool isCode = (curLineState == 1); - - // Go through all provided text segment - // using the hand-written state machine shown below - styler.StartAt(startPos); - styler.StartSegment(startPos); - for (Sci_Position i = startPos; i < lengthDoc; i++) { - chPrev = ch; - ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - if (styler.IsLeadByte(ch)) { - chNext = styler.SafeGetCharAt(i + 2); - i++; - continue; - } - - isBOL = (chPrev == 0) || (chPrev == '\n') || (chPrev == '\r' && ch != '\n'); - isBOLWS = (isBOL) ? 1 : (isBOLWS && (chPrev == ' ' || chPrev == '\t')); - isEOL = (ch == '\n' || ch == '\r'); - isWS = (ch == ' ' || ch == '\t'); - - if ((ch == '\r' && chNext != '\n') || (ch == '\n')) { - // Remember the line state for future incremental lexing - curLine = styler.GetLine(i); - styler.SetLineState(curLine, (isCode ? 1 : 0)); - } - - switch(state) { - case SCE_INNO_DEFAULT: - if (!isCode && ch == ';' && isBOLWS) { - // Start of a comment - state = SCE_INNO_COMMENT; - } else if (ch == '[' && isBOLWS) { - // Start of a section name - bufferCount = 0; - state = SCE_INNO_SECTION; - } else if (ch == '#' && isBOLWS) { - // Start of a preprocessor directive - state = SCE_INNO_PREPROC; - } else if (!isCode && ch == '{' && chNext != '{' && chPrev != '{') { - // Start of an inline expansion - state = SCE_INNO_INLINE_EXPANSION; - } else if (isCode && (ch == '{' || (ch == '(' && chNext == '*'))) { - // Start of a Pascal comment - state = SCE_INNO_COMMENT_PASCAL; - isCStyleComment = false; - } else if (isCode && ch == '/' && chNext == '/') { - // Apparently, C-style comments are legal, too - state = SCE_INNO_COMMENT_PASCAL; - isCStyleComment = true; - } else if (ch == '"') { - // Start of a double-quote string - state = SCE_INNO_STRING_DOUBLE; - } else if (ch == '\'') { - // Start of a single-quote string - state = SCE_INNO_STRING_SINGLE; - } else if (IsASCII(ch) && (isalpha(ch) || (ch == '_'))) { - // Start of an identifier - bufferCount = 0; - buffer[bufferCount++] = static_cast(tolower(ch)); - state = SCE_INNO_IDENTIFIER; - } else { - // Style it the default style - styler.ColourTo(i,SCE_INNO_DEFAULT); - } - break; - - case SCE_INNO_COMMENT: - if (isEOL) { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_COMMENT); - } - break; - - case SCE_INNO_IDENTIFIER: - if (IsASCII(ch) && (isalnum(ch) || (ch == '_'))) { - buffer[bufferCount++] = static_cast(tolower(ch)); - } else { - state = SCE_INNO_DEFAULT; - buffer[bufferCount] = '\0'; - - // Check if the buffer contains a keyword - if (!isCode && standardKeywords.InList(buffer)) { - styler.ColourTo(i-1,SCE_INNO_KEYWORD); - } else if (!isCode && parameterKeywords.InList(buffer)) { - styler.ColourTo(i-1,SCE_INNO_PARAMETER); - } else if (isCode && pascalKeywords.InList(buffer)) { - styler.ColourTo(i-1,SCE_INNO_KEYWORD_PASCAL); - } else if (!isCode && userKeywords.InList(buffer)) { - styler.ColourTo(i-1,SCE_INNO_KEYWORD_USER); - } else { - styler.ColourTo(i-1,SCE_INNO_DEFAULT); - } - - // Push back the faulty character - chNext = styler[i--]; - ch = chPrev; - } - break; - - case SCE_INNO_SECTION: - if (ch == ']') { - state = SCE_INNO_DEFAULT; - buffer[bufferCount] = '\0'; - - // Check if the buffer contains a section name - if (sectionKeywords.InList(buffer)) { - styler.ColourTo(i,SCE_INNO_SECTION); - isCode = !CompareCaseInsensitive(buffer, "code"); - } else { - styler.ColourTo(i,SCE_INNO_DEFAULT); - } - } else if (IsASCII(ch) && (isalnum(ch) || (ch == '_'))) { - buffer[bufferCount++] = static_cast(tolower(ch)); - } else { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_DEFAULT); - } - break; - - case SCE_INNO_PREPROC: - if (isWS || isEOL) { - if (IsASCII(chPrev) && isalpha(chPrev)) { - state = SCE_INNO_DEFAULT; - buffer[bufferCount] = '\0'; - - // Check if the buffer contains a preprocessor directive - if (preprocessorKeywords.InList(buffer)) { - styler.ColourTo(i-1,SCE_INNO_PREPROC); - } else { - styler.ColourTo(i-1,SCE_INNO_DEFAULT); - } - - // Push back the faulty character - chNext = styler[i--]; - ch = chPrev; - } - } else if (IsASCII(ch) && isalpha(ch)) { - if (chPrev == '#' || chPrev == ' ' || chPrev == '\t') - bufferCount = 0; - buffer[bufferCount++] = static_cast(tolower(ch)); - } - break; - - case SCE_INNO_STRING_DOUBLE: - if (ch == '"' || isEOL) { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_STRING_DOUBLE); - } - break; - - case SCE_INNO_STRING_SINGLE: - if (ch == '\'' || isEOL) { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_STRING_SINGLE); - } - break; - - case SCE_INNO_INLINE_EXPANSION: - if (ch == '}') { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_INLINE_EXPANSION); - } else if (isEOL) { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_DEFAULT); - } - break; - - case SCE_INNO_COMMENT_PASCAL: - if (isCStyleComment) { - if (isEOL) { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_COMMENT_PASCAL); - } - } else { - if (ch == '}' || (ch == ')' && chPrev == '*')) { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_COMMENT_PASCAL); - } else if (isEOL) { - state = SCE_INNO_DEFAULT; - styler.ColourTo(i,SCE_INNO_DEFAULT); - } - } - break; - - } - } - delete []buffer; -} - -static const char * const innoWordListDesc[] = { - "Sections", - "Keywords", - "Parameters", - "Preprocessor directives", - "Pascal keywords", - "User defined keywords", - 0 -}; - -static void FoldInnoDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { - Sci_PositionU endPos = startPos + length; - char chNext = styler[startPos]; - - Sci_Position lineCurrent = styler.GetLine(startPos); - - bool sectionFlag = false; - int levelPrev = lineCurrent > 0 ? styler.LevelAt(lineCurrent - 1) : SC_FOLDLEVELBASE; - int level; - - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler[i+1]; - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - int style = styler.StyleAt(i); - - if (style == SCE_INNO_SECTION) - sectionFlag = true; - - if (atEOL || i == endPos - 1) { - if (sectionFlag) { - level = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; - if (level == levelPrev) - styler.SetLevel(lineCurrent - 1, levelPrev & ~SC_FOLDLEVELHEADERFLAG); - } else { - level = levelPrev & SC_FOLDLEVELNUMBERMASK; - if (levelPrev & SC_FOLDLEVELHEADERFLAG) - level++; - } - - styler.SetLevel(lineCurrent, level); - - levelPrev = level; - lineCurrent++; - sectionFlag = false; - } - } -} - -LexerModule lmInno(SCLEX_INNOSETUP, ColouriseInnoDoc, "inno", FoldInnoDoc, innoWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexJSON.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexJSON.cpp deleted file mode 100644 index 3c754f888..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexJSON.cpp +++ /dev/null @@ -1,498 +0,0 @@ -// Scintilla source code edit control -/** - * @file LexJSON.cxx - * @date February 19, 2016 - * @brief Lexer for JSON and JSON-LD formats - * @author nkmathew - * - * The License.txt file describes the conditions under which this software may - * be distributed. - * - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "OptionSet.h" -#include "DefaultLexer.h" - -using namespace Scintilla; - -static const char *const JSONWordListDesc[] = { - "JSON Keywords", - "JSON-LD Keywords", - 0 -}; - -/** - * Used to detect compact IRI/URLs in JSON-LD without first looking ahead for the - * colon separating the prefix and suffix - * - * https://www.w3.org/TR/json-ld/#dfn-compact-iri - */ -struct CompactIRI { - int colonCount; - bool foundInvalidChar; - CharacterSet setCompactIRI; - CompactIRI() { - colonCount = 0; - foundInvalidChar = false; - setCompactIRI = CharacterSet(CharacterSet::setAlpha, "$_-"); - } - void resetState() { - colonCount = 0; - foundInvalidChar = false; - } - void checkChar(int ch) { - if (ch == ':') { - colonCount++; - } else { - foundInvalidChar |= !setCompactIRI.Contains(ch); - } - } - bool shouldHighlight() const { - return !foundInvalidChar && colonCount == 1; - } -}; - -/** - * Keeps track of escaped characters in strings as per: - * - * https://tools.ietf.org/html/rfc7159#section-7 - */ -struct EscapeSequence { - int digitsLeft; - CharacterSet setHexDigits; - CharacterSet setEscapeChars; - EscapeSequence() { - digitsLeft = 0; - setHexDigits = CharacterSet(CharacterSet::setDigits, "ABCDEFabcdef"); - setEscapeChars = CharacterSet(CharacterSet::setNone, "\\\"tnbfru/"); - } - // Returns true if the following character is a valid escaped character - bool newSequence(int nextChar) { - digitsLeft = 0; - if (nextChar == 'u') { - digitsLeft = 5; - } else if (!setEscapeChars.Contains(nextChar)) { - return false; - } - return true; - } - bool atEscapeEnd() const { - return digitsLeft <= 0; - } - bool isInvalidChar(int currChar) const { - return !setHexDigits.Contains(currChar); - } -}; - -struct OptionsJSON { - bool foldCompact; - bool fold; - bool allowComments; - bool escapeSequence; - OptionsJSON() { - foldCompact = false; - fold = false; - allowComments = false; - escapeSequence = false; - } -}; - -struct OptionSetJSON : public OptionSet { - OptionSetJSON() { - DefineProperty("lexer.json.escape.sequence", &OptionsJSON::escapeSequence, - "Set to 1 to enable highlighting of escape sequences in strings"); - - DefineProperty("lexer.json.allow.comments", &OptionsJSON::allowComments, - "Set to 1 to enable highlighting of line/block comments in JSON"); - - DefineProperty("fold.compact", &OptionsJSON::foldCompact); - DefineProperty("fold", &OptionsJSON::fold); - DefineWordListSets(JSONWordListDesc); - } -}; - -class LexerJSON : public DefaultLexer { - OptionsJSON options; - OptionSetJSON optSetJSON; - EscapeSequence escapeSeq; - WordList keywordsJSON; - WordList keywordsJSONLD; - CharacterSet setOperators; - CharacterSet setURL; - CharacterSet setKeywordJSONLD; - CharacterSet setKeywordJSON; - CompactIRI compactIRI; - - static bool IsNextNonWhitespace(LexAccessor &styler, Sci_Position start, char ch) { - Sci_Position i = 0; - while (i < 50) { - i++; - char curr = styler.SafeGetCharAt(start+i, '\0'); - char next = styler.SafeGetCharAt(start+i+1, '\0'); - bool atEOL = (curr == '\r' && next != '\n') || (curr == '\n'); - if (curr == ch) { - return true; - } else if (!isspacechar(curr) || atEOL) { - return false; - } - } - return false; - } - - /** - * Looks for the colon following the end quote - * - * Assumes property names of lengths no longer than a 100 characters. - * The colon is also expected to be less than 50 spaces after the end - * quote for the string to be considered a property name - */ - static bool AtPropertyName(LexAccessor &styler, Sci_Position start) { - Sci_Position i = 0; - bool escaped = false; - while (i < 100) { - i++; - char curr = styler.SafeGetCharAt(start+i, '\0'); - if (escaped) { - escaped = false; - continue; - } - escaped = curr == '\\'; - if (curr == '"') { - return IsNextNonWhitespace(styler, start+i, ':'); - } else if (!curr) { - return false; - } - } - return false; - } - - static bool IsNextWordInList(WordList &keywordList, CharacterSet wordSet, - StyleContext &context, LexAccessor &styler) { - char word[51]; - Sci_Position currPos = (Sci_Position) context.currentPos; - int i = 0; - while (i < 50) { - char ch = styler.SafeGetCharAt(currPos + i); - if (!wordSet.Contains(ch)) { - break; - } - word[i] = ch; - i++; - } - word[i] = '\0'; - return keywordList.InList(word); - } - - public: - LexerJSON() : - setOperators(CharacterSet::setNone, "[{}]:,"), - setURL(CharacterSet::setAlphaNum, "-._~:/?#[]@!$&'()*+,),="), - setKeywordJSONLD(CharacterSet::setAlpha, ":@"), - setKeywordJSON(CharacterSet::setAlpha, "$_") { - } - virtual ~LexerJSON() {} - int SCI_METHOD Version() const override { - return lvOriginal; - } - void SCI_METHOD Release() override { - delete this; - } - const char *SCI_METHOD PropertyNames() override { - return optSetJSON.PropertyNames(); - } - int SCI_METHOD PropertyType(const char *name) override { - return optSetJSON.PropertyType(name); - } - const char *SCI_METHOD DescribeProperty(const char *name) override { - return optSetJSON.DescribeProperty(name); - } - Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override { - if (optSetJSON.PropertySet(&options, key, val)) { - return 0; - } - return -1; - } - Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override { - WordList *wordListN = 0; - switch (n) { - case 0: - wordListN = &keywordsJSON; - break; - case 1: - wordListN = &keywordsJSONLD; - break; - } - Sci_Position firstModification = -1; - if (wordListN) { - WordList wlNew; - wlNew.Set(wl); - if (*wordListN != wlNew) { - wordListN->Set(wl); - firstModification = 0; - } - } - return firstModification; - } - void *SCI_METHOD PrivateCall(int, void *) override { - return 0; - } - static ILexer *LexerFactoryJSON() { - return new LexerJSON; - } - const char *SCI_METHOD DescribeWordListSets() override { - return optSetJSON.DescribeWordListSets(); - } - void SCI_METHOD Lex(Sci_PositionU startPos, - Sci_Position length, - int initStyle, - IDocument *pAccess) override; - void SCI_METHOD Fold(Sci_PositionU startPos, - Sci_Position length, - int initStyle, - IDocument *pAccess) override; -}; - -void SCI_METHOD LexerJSON::Lex(Sci_PositionU startPos, - Sci_Position length, - int initStyle, - IDocument *pAccess) { - LexAccessor styler(pAccess); - StyleContext context(startPos, length, initStyle, styler); - int stringStyleBefore = SCE_JSON_STRING; - while (context.More()) { - switch (context.state) { - case SCE_JSON_BLOCKCOMMENT: - if (context.Match("*/")) { - context.Forward(); - context.ForwardSetState(SCE_JSON_DEFAULT); - } - break; - case SCE_JSON_LINECOMMENT: - if (context.atLineEnd) { - context.SetState(SCE_JSON_DEFAULT); - } - break; - case SCE_JSON_STRINGEOL: - if (context.atLineStart) { - context.SetState(SCE_JSON_DEFAULT); - } - break; - case SCE_JSON_ESCAPESEQUENCE: - escapeSeq.digitsLeft--; - if (!escapeSeq.atEscapeEnd()) { - if (escapeSeq.isInvalidChar(context.ch)) { - context.SetState(SCE_JSON_ERROR); - } - break; - } - if (context.ch == '"') { - context.SetState(stringStyleBefore); - context.ForwardSetState(SCE_C_DEFAULT); - } else if (context.ch == '\\') { - if (!escapeSeq.newSequence(context.chNext)) { - context.SetState(SCE_JSON_ERROR); - } - context.Forward(); - } else { - context.SetState(stringStyleBefore); - if (context.atLineEnd) { - context.ChangeState(SCE_JSON_STRINGEOL); - } - } - break; - case SCE_JSON_PROPERTYNAME: - case SCE_JSON_STRING: - if (context.ch == '"') { - if (compactIRI.shouldHighlight()) { - context.ChangeState(SCE_JSON_COMPACTIRI); - context.ForwardSetState(SCE_JSON_DEFAULT); - compactIRI.resetState(); - } else { - context.ForwardSetState(SCE_JSON_DEFAULT); - } - } else if (context.atLineEnd) { - context.ChangeState(SCE_JSON_STRINGEOL); - } else if (context.ch == '\\') { - stringStyleBefore = context.state; - if (options.escapeSequence) { - context.SetState(SCE_JSON_ESCAPESEQUENCE); - if (!escapeSeq.newSequence(context.chNext)) { - context.SetState(SCE_JSON_ERROR); - } - } - context.Forward(); - } else if (context.Match("https://") || - context.Match("http://") || - context.Match("ssh://") || - context.Match("git://") || - context.Match("svn://") || - context.Match("ftp://") || - context.Match("mailto:")) { - // Handle most common URI schemes only - stringStyleBefore = context.state; - context.SetState(SCE_JSON_URI); - } else if (context.ch == '@') { - // https://www.w3.org/TR/json-ld/#dfn-keyword - if (IsNextWordInList(keywordsJSONLD, setKeywordJSONLD, context, styler)) { - stringStyleBefore = context.state; - context.SetState(SCE_JSON_LDKEYWORD); - } - } else { - compactIRI.checkChar(context.ch); - } - break; - case SCE_JSON_LDKEYWORD: - case SCE_JSON_URI: - if ((!setKeywordJSONLD.Contains(context.ch) && - (context.state == SCE_JSON_LDKEYWORD)) || - (!setURL.Contains(context.ch))) { - context.SetState(stringStyleBefore); - } - if (context.ch == '"') { - context.ForwardSetState(SCE_JSON_DEFAULT); - } else if (context.atLineEnd) { - context.ChangeState(SCE_JSON_STRINGEOL); - } - break; - case SCE_JSON_OPERATOR: - case SCE_JSON_NUMBER: - context.SetState(SCE_JSON_DEFAULT); - break; - case SCE_JSON_ERROR: - if (context.atLineEnd) { - context.SetState(SCE_JSON_DEFAULT); - } - break; - case SCE_JSON_KEYWORD: - if (!setKeywordJSON.Contains(context.ch)) { - context.SetState(SCE_JSON_DEFAULT); - } - break; - } - if (context.state == SCE_JSON_DEFAULT) { - if (context.ch == '"') { - compactIRI.resetState(); - context.SetState(SCE_JSON_STRING); - Sci_Position currPos = static_cast(context.currentPos); - if (AtPropertyName(styler, currPos)) { - context.SetState(SCE_JSON_PROPERTYNAME); - } - } else if (setOperators.Contains(context.ch)) { - context.SetState(SCE_JSON_OPERATOR); - } else if (options.allowComments && context.Match("/*")) { - context.SetState(SCE_JSON_BLOCKCOMMENT); - context.Forward(); - } else if (options.allowComments && context.Match("//")) { - context.SetState(SCE_JSON_LINECOMMENT); - } else if (setKeywordJSON.Contains(context.ch)) { - if (IsNextWordInList(keywordsJSON, setKeywordJSON, context, styler)) { - context.SetState(SCE_JSON_KEYWORD); - } - } - bool numberStart = - IsADigit(context.ch) && (context.chPrev == '+'|| - context.chPrev == '-' || - context.atLineStart || - IsASpace(context.chPrev) || - setOperators.Contains(context.chPrev)); - bool exponentPart = - tolower(context.ch) == 'e' && - IsADigit(context.chPrev) && - (IsADigit(context.chNext) || - context.chNext == '+' || - context.chNext == '-'); - bool signPart = - (context.ch == '-' || context.ch == '+') && - ((tolower(context.chPrev) == 'e' && IsADigit(context.chNext)) || - ((IsASpace(context.chPrev) || setOperators.Contains(context.chPrev)) - && IsADigit(context.chNext))); - bool adjacentDigit = - IsADigit(context.ch) && IsADigit(context.chPrev); - bool afterExponent = IsADigit(context.ch) && tolower(context.chPrev) == 'e'; - bool dotPart = context.ch == '.' && - IsADigit(context.chPrev) && - IsADigit(context.chNext); - bool afterDot = IsADigit(context.ch) && context.chPrev == '.'; - if (numberStart || - exponentPart || - signPart || - adjacentDigit || - dotPart || - afterExponent || - afterDot) { - context.SetState(SCE_JSON_NUMBER); - } else if (context.state == SCE_JSON_DEFAULT && !IsASpace(context.ch)) { - context.SetState(SCE_JSON_ERROR); - } - } - context.Forward(); - } - context.Complete(); -} - -void SCI_METHOD LexerJSON::Fold(Sci_PositionU startPos, - Sci_Position length, - int, - IDocument *pAccess) { - if (!options.fold) { - return; - } - LexAccessor styler(pAccess); - Sci_PositionU currLine = styler.GetLine(startPos); - Sci_PositionU endPos = startPos + length; - int currLevel = SC_FOLDLEVELBASE; - if (currLine > 0) - currLevel = styler.LevelAt(currLine - 1) >> 16; - int nextLevel = currLevel; - int visibleChars = 0; - for (Sci_PositionU i = startPos; i < endPos; i++) { - char curr = styler.SafeGetCharAt(i); - char next = styler.SafeGetCharAt(i+1); - bool atEOL = (curr == '\r' && next != '\n') || (curr == '\n'); - if (styler.StyleAt(i) == SCE_JSON_OPERATOR) { - if (curr == '{' || curr == '[') { - nextLevel++; - } else if (curr == '}' || curr == ']') { - nextLevel--; - } - } - if (atEOL || i == (endPos-1)) { - int level = currLevel | nextLevel << 16; - if (!visibleChars && options.foldCompact) { - level |= SC_FOLDLEVELWHITEFLAG; - } else if (nextLevel > currLevel) { - level |= SC_FOLDLEVELHEADERFLAG; - } - if (level != styler.LevelAt(currLine)) { - styler.SetLevel(currLine, level); - } - currLine++; - currLevel = nextLevel; - visibleChars = 0; - } - if (!isspacechar(curr)) { - visibleChars++; - } - } -} - -LexerModule lmJSON(SCLEX_JSON, - LexerJSON::LexerFactoryJSON, - "json", - JSONWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexKVIrc.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexKVIrc.cpp deleted file mode 100644 index 0cae2a234..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexKVIrc.cpp +++ /dev/null @@ -1,471 +0,0 @@ -// Scintilla source code edit control -/** @file LexKVIrc.cxx - ** Lexer for KVIrc script. - **/ -// Copyright 2013 by OmegaPhil , based in -// part from LexPython Copyright 1998-2002 by Neil Hodgson -// and LexCmake Copyright 2007 by Cristian Adam - -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - - -/* KVIrc Script syntactic rules: http://www.kvirc.net/doc/doc_syntactic_rules.html */ - -/* Utility functions */ -static inline bool IsAWordChar(int ch) { - - /* Keyword list includes modules, i.e. words including '.', and - * alias namespaces include ':' */ - return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' - || ch == ':'); -} -static inline bool IsAWordStart(int ch) { - - /* Functions (start with '$') are treated separately to keywords */ - return (ch < 0x80) && (isalnum(ch) || ch == '_' ); -} - -/* Interface function called by Scintilla to request some text to be - syntax highlighted */ -static void ColouriseKVIrcDoc(Sci_PositionU startPos, Sci_Position length, - int initStyle, WordList *keywordlists[], - Accessor &styler) -{ - /* Fetching style context */ - StyleContext sc(startPos, length, initStyle, styler); - - /* Accessing keywords and function-marking keywords */ - WordList &keywords = *keywordlists[0]; - WordList &functionKeywords = *keywordlists[1]; - - /* Looping for all characters - only automatically moving forward - * when asked for (transitions leaving strings and keywords do this - * already) */ - bool next = true; - for( ; sc.More(); next ? sc.Forward() : (void)0 ) - { - /* Resetting next */ - next = true; - - /* Dealing with different states */ - switch (sc.state) - { - case SCE_KVIRC_DEFAULT: - - /* Detecting single-line comments - * Unfortunately KVIrc script allows raw '#' to be used, and appending # to an array returns - * its length... - * Going for a compromise where single line comments not - * starting on a newline are allowed in all cases except - * when they are preceeded with an opening bracket or comma - * (this will probably be the most common style a valid - * string-less channel name will be used with), with the - * array length case included - */ - if ( - (sc.ch == '#' && sc.atLineStart) || - (sc.ch == '#' && ( - sc.chPrev != '(' && sc.chPrev != ',' && - sc.chPrev != ']') - ) - ) - { - sc.SetState(SCE_KVIRC_COMMENT); - break; - } - - /* Detecting multi-line comments */ - if (sc.Match('/', '*')) - { - sc.SetState(SCE_KVIRC_COMMENTBLOCK); - break; - } - - /* Detecting strings */ - if (sc.ch == '"') - { - sc.SetState(SCE_KVIRC_STRING); - break; - } - - /* Detecting functions */ - if (sc.ch == '$') - { - sc.SetState(SCE_KVIRC_FUNCTION); - break; - } - - /* Detecting variables */ - if (sc.ch == '%') - { - sc.SetState(SCE_KVIRC_VARIABLE); - break; - } - - /* Detecting numbers - isdigit is unsafe as it does not - * validate, use CharacterSet.h functions */ - if (IsADigit(sc.ch)) - { - sc.SetState(SCE_KVIRC_NUMBER); - break; - } - - /* Detecting words */ - if (IsAWordStart(sc.ch) && IsAWordChar(sc.chNext)) - { - sc.SetState(SCE_KVIRC_WORD); - sc.Forward(); - break; - } - - /* Detecting operators */ - if (isoperator(sc.ch)) - { - sc.SetState(SCE_KVIRC_OPERATOR); - break; - } - - break; - - case SCE_KVIRC_COMMENT: - - /* Breaking out of single line comment when a newline - * is introduced */ - if (sc.ch == '\r' || sc.ch == '\n') - { - sc.SetState(SCE_KVIRC_DEFAULT); - break; - } - - break; - - case SCE_KVIRC_COMMENTBLOCK: - - /* Detecting end of multi-line comment */ - if (sc.Match('*', '/')) - { - // Moving the current position forward two characters - // so that '*/' is included in the comment - sc.Forward(2); - sc.SetState(SCE_KVIRC_DEFAULT); - - /* Comment has been exited and the current position - * moved forward, yet the new current character - * has yet to be defined - loop without moving - * forward again */ - next = false; - break; - } - - break; - - case SCE_KVIRC_STRING: - - /* Detecting end of string - closing speechmarks */ - if (sc.ch == '"') - { - /* Allowing escaped speechmarks to pass */ - if (sc.chPrev == '\\') - break; - - /* Moving the current position forward to capture the - * terminating speechmarks, and ending string */ - sc.ForwardSetState(SCE_KVIRC_DEFAULT); - - /* String has been exited and the current position - * moved forward, yet the new current character - * has yet to be defined - loop without moving - * forward again */ - next = false; - break; - } - - /* Functions and variables are now highlighted in strings - * Detecting functions */ - if (sc.ch == '$') - { - /* Allowing escaped functions to pass */ - if (sc.chPrev == '\\') - break; - - sc.SetState(SCE_KVIRC_STRING_FUNCTION); - break; - } - - /* Detecting variables */ - if (sc.ch == '%') - { - /* Allowing escaped variables to pass */ - if (sc.chPrev == '\\') - break; - - sc.SetState(SCE_KVIRC_STRING_VARIABLE); - break; - } - - /* Breaking out of a string when a newline is introduced */ - if (sc.ch == '\r' || sc.ch == '\n') - { - /* Allowing escaped newlines */ - if (sc.chPrev == '\\') - break; - - sc.SetState(SCE_KVIRC_DEFAULT); - break; - } - - break; - - case SCE_KVIRC_FUNCTION: - case SCE_KVIRC_VARIABLE: - - /* Detecting the end of a function/variable (word) */ - if (!IsAWordChar(sc.ch)) - { - sc.SetState(SCE_KVIRC_DEFAULT); - - /* Word has been exited yet the current character - * has yet to be defined - loop without moving - * forward again */ - next = false; - break; - } - - break; - - case SCE_KVIRC_STRING_FUNCTION: - case SCE_KVIRC_STRING_VARIABLE: - - /* A function or variable in a string - * Detecting the end of a function/variable (word) */ - if (!IsAWordChar(sc.ch)) - { - sc.SetState(SCE_KVIRC_STRING); - - /* Word has been exited yet the current character - * has yet to be defined - loop without moving - * forward again */ - next = false; - break; - } - - break; - - case SCE_KVIRC_NUMBER: - - /* Detecting the end of a number */ - if (!IsADigit(sc.ch)) - { - sc.SetState(SCE_KVIRC_DEFAULT); - - /* Number has been exited yet the current character - * has yet to be defined - loop without moving - * forward */ - next = false; - break; - } - - break; - - case SCE_KVIRC_OPERATOR: - - /* Because '%' is an operator but is also the marker for - * a variable, I need to always treat operators as single - * character strings and therefore redo their detection - * after every character */ - sc.SetState(SCE_KVIRC_DEFAULT); - - /* Operator has been exited yet the current character - * has yet to be defined - loop without moving - * forward */ - next = false; - break; - - case SCE_KVIRC_WORD: - - /* Detecting the end of a word */ - if (!IsAWordChar(sc.ch)) - { - /* Checking if the word was actually a keyword - - * fetching the current word, NULL-terminated like - * the keyword list */ - char s[100]; - Sci_Position wordLen = sc.currentPos - styler.GetStartSegment(); - if (wordLen > 99) - wordLen = 99; /* Include '\0' in buffer */ - Sci_Position i; - for( i = 0; i < wordLen; ++i ) - { - s[i] = styler.SafeGetCharAt( styler.GetStartSegment() + i ); - } - s[wordLen] = '\0'; - - /* Actually detecting keywords and fixing the state */ - if (keywords.InList(s)) - { - /* The SetState call actually commits the - * previous keyword state */ - sc.ChangeState(SCE_KVIRC_KEYWORD); - } - else if (functionKeywords.InList(s)) - { - // Detecting function keywords and fixing the state - sc.ChangeState(SCE_KVIRC_FUNCTION_KEYWORD); - } - - /* Transitioning to default and committing the previous - * word state */ - sc.SetState(SCE_KVIRC_DEFAULT); - - /* Word has been exited yet the current character - * has yet to be defined - loop without moving - * forward again */ - next = false; - break; - } - - break; - } - } - - /* Indicating processing is complete */ - sc.Complete(); -} - -static void FoldKVIrcDoc(Sci_PositionU startPos, Sci_Position length, int /*initStyle - unused*/, - WordList *[], Accessor &styler) -{ - /* Based on CMake's folder */ - - /* Exiting if folding isnt enabled */ - if ( styler.GetPropertyInt("fold") == 0 ) - return; - - /* Obtaining current line number*/ - Sci_Position currentLine = styler.GetLine(startPos); - - /* Obtaining starting character - indentation is done on a line basis, - * not character */ - Sci_PositionU safeStartPos = styler.LineStart( currentLine ); - - /* Initialising current level - this is defined as indentation level - * in the low 12 bits, with flag bits in the upper four bits. - * It looks like two indentation states are maintained in the returned - * 32bit value - 'nextLevel' in the most-significant bits, 'currentLevel' - * in the least-significant bits. Since the next level is the most - * up to date, this must refer to the current state of indentation. - * So the code bitshifts the old current level out of existence to - * get at the actual current state of indentation - * Based on the LexerCPP.cxx line 958 comment */ - int currentLevel = SC_FOLDLEVELBASE; - if (currentLine > 0) - currentLevel = styler.LevelAt(currentLine - 1) >> 16; - int nextLevel = currentLevel; - - // Looping for characters in range - for (Sci_PositionU i = safeStartPos; i < startPos + length; ++i) - { - /* Folding occurs after syntax highlighting, meaning Scintilla - * already knows where the comments are - * Fetching the current state */ - int state = styler.StyleAt(i) & 31; - - switch( styler.SafeGetCharAt(i) ) - { - case '{': - - /* Indenting only when the braces are not contained in - * a comment */ - if (state != SCE_KVIRC_COMMENT && - state != SCE_KVIRC_COMMENTBLOCK) - ++nextLevel; - break; - - case '}': - - /* Outdenting only when the braces are not contained in - * a comment */ - if (state != SCE_KVIRC_COMMENT && - state != SCE_KVIRC_COMMENTBLOCK) - --nextLevel; - break; - - case '\n': - case '\r': - - /* Preparing indentation information to return - combining - * current and next level data */ - int lev = currentLevel | nextLevel << 16; - - /* If the next level increases the indent level, mark the - * current line as a fold point - current level data is - * in the least significant bits */ - if (nextLevel > currentLevel ) - lev |= SC_FOLDLEVELHEADERFLAG; - - /* Updating indentation level if needed */ - if (lev != styler.LevelAt(currentLine)) - styler.SetLevel(currentLine, lev); - - /* Updating variables */ - ++currentLine; - currentLevel = nextLevel; - - /* Dealing with problematic Windows newlines - - * incrementing to avoid the extra newline breaking the - * fold point */ - if (styler.SafeGetCharAt(i) == '\r' && - styler.SafeGetCharAt(i + 1) == '\n') - ++i; - break; - } - } - - /* At this point the data has ended, so presumably the end of the line? - * Preparing indentation information to return - combining current - * and next level data */ - int lev = currentLevel | nextLevel << 16; - - /* If the next level increases the indent level, mark the current - * line as a fold point - current level data is in the least - * significant bits */ - if (nextLevel > currentLevel ) - lev |= SC_FOLDLEVELHEADERFLAG; - - /* Updating indentation level if needed */ - if (lev != styler.LevelAt(currentLine)) - styler.SetLevel(currentLine, lev); -} - -/* Registering wordlists */ -static const char *const kvircWordListDesc[] = { - "primary", - "function_keywords", - 0 -}; - - -/* Registering functions and wordlists */ -LexerModule lmKVIrc(SCLEX_KVIRC, ColouriseKVIrcDoc, "kvirc", FoldKVIrcDoc, - kvircWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexKix.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexKix.cpp deleted file mode 100644 index bcd68137e..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexKix.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// Scintilla source code edit control -/** @file LexKix.cxx - ** Lexer for KIX-Scripts. - **/ -// Copyright 2004 by Manfred Becker -// The License.txt file describes the conditions under which this software may be distributed. -// Edited by Lee Wilmott (24-Jun-2014) added support for block comments - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -// Extended to accept accented characters -static inline bool IsAWordChar(int ch) { - return ch >= 0x80 || isalnum(ch) || ch == '_'; -} - -static inline bool IsOperator(const int ch) { - return (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '&' || ch == '|' || ch == '<' || ch == '>' || ch == '='); -} - -static void ColouriseKixDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; -// WordList &keywords4 = *keywordlists[3]; - - styler.StartAt(startPos); - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - - if (sc.state == SCE_KIX_COMMENT) { - if (sc.atLineEnd) { - sc.SetState(SCE_KIX_DEFAULT); - } - } else if (sc.state == SCE_KIX_COMMENTSTREAM) { - if (sc.ch == '/' && sc.chPrev == '*') { - sc.ForwardSetState(SCE_KIX_DEFAULT); - } - } else if (sc.state == SCE_KIX_STRING1) { - // This is a doubles quotes string - if (sc.ch == '\"') { - sc.ForwardSetState(SCE_KIX_DEFAULT); - } - } else if (sc.state == SCE_KIX_STRING2) { - // This is a single quote string - if (sc.ch == '\'') { - sc.ForwardSetState(SCE_KIX_DEFAULT); - } - } else if (sc.state == SCE_KIX_NUMBER) { - if (!IsADigit(sc.ch)) { - sc.SetState(SCE_KIX_DEFAULT); - } - } else if (sc.state == SCE_KIX_VAR) { - if (!IsAWordChar(sc.ch)) { - sc.SetState(SCE_KIX_DEFAULT); - } - } else if (sc.state == SCE_KIX_MACRO) { - if (!IsAWordChar(sc.ch) && !IsADigit(sc.ch)) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - - if (!keywords3.InList(&s[1])) { - sc.ChangeState(SCE_KIX_DEFAULT); - } - sc.SetState(SCE_KIX_DEFAULT); - } - } else if (sc.state == SCE_KIX_OPERATOR) { - if (!IsOperator(sc.ch)) { - sc.SetState(SCE_KIX_DEFAULT); - } - } else if (sc.state == SCE_KIX_IDENTIFIER) { - if (!IsAWordChar(sc.ch)) { - char s[100]; - sc.GetCurrentLowered(s, sizeof(s)); - - if (keywords.InList(s)) { - sc.ChangeState(SCE_KIX_KEYWORD); - } else if (keywords2.InList(s)) { - sc.ChangeState(SCE_KIX_FUNCTIONS); - } - sc.SetState(SCE_KIX_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_KIX_DEFAULT) { - if (sc.ch == ';') { - sc.SetState(SCE_KIX_COMMENT); - } else if (sc.ch == '/' && sc.chNext == '*') { - sc.SetState(SCE_KIX_COMMENTSTREAM); - } else if (sc.ch == '\"') { - sc.SetState(SCE_KIX_STRING1); - } else if (sc.ch == '\'') { - sc.SetState(SCE_KIX_STRING2); - } else if (sc.ch == '$') { - sc.SetState(SCE_KIX_VAR); - } else if (sc.ch == '@') { - sc.SetState(SCE_KIX_MACRO); - } else if (IsADigit(sc.ch) || ((sc.ch == '.' || sc.ch == '&') && IsADigit(sc.chNext))) { - sc.SetState(SCE_KIX_NUMBER); - } else if (IsOperator(sc.ch)) { - sc.SetState(SCE_KIX_OPERATOR); - } else if (IsAWordChar(sc.ch)) { - sc.SetState(SCE_KIX_IDENTIFIER); - } - } - } - sc.Complete(); -} - - -LexerModule lmKix(SCLEX_KIX, ColouriseKixDoc, "kix"); - diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLPeg.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLPeg.cpp deleted file mode 100644 index dfba76188..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLPeg.cpp +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Copyright 2006-2018 Mitchell mitchell.att.foicica.com. See License.txt. - * - * Lua-powered dynamic language lexer for Scintilla. - * - * For documentation on writing lexers, see *../doc/LPegLexer.html*. - */ - -#if LPEG_LEXER - -#include -#include -#include -#include -#include -#if CURSES -#include -#endif - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "PropSetSimple.h" -#include "LexAccessor.h" -#include "LexerModule.h" - -extern "C" { -#include "lua.h" -#include "lualib.h" -#include "lauxlib.h" -LUALIB_API int luaopen_lpeg(lua_State *L); -} - -#if _WIN32 -#define strcasecmp _stricmp -#endif -#define streq(s1, s2) (strcasecmp((s1), (s2)) == 0) - -using namespace Scintilla; - -#define l_setmetatable(l, k, mtf) \ - if (luaL_newmetatable(l, k)) { \ - lua_pushcfunction(l, mtf), lua_setfield(l, -2, "__index"); \ - lua_pushcfunction(l, mtf), lua_setfield(l, -2, "__newindex"); \ - } \ - lua_setmetatable(l, -2); -#define l_pushlexerp(l, mtf) do { \ - lua_newtable(l); \ - lua_pushvalue(l, 2), lua_setfield(l, -2, "property"); \ - l_setmetatable(l, "sci_lexerp", mtf); \ -} while(0) -#define l_getlexerobj(l) \ - lua_getfield(l, LUA_REGISTRYINDEX, "sci_lexers"); \ - lua_pushlightuserdata(l, reinterpret_cast(this)); \ - lua_gettable(l, -2), lua_replace(l, -2); -#define l_getlexerfield(l, k) \ - l_getlexerobj(l); \ - lua_getfield(l, -1, k), lua_replace(l, -2); -#if LUA_VERSION_NUM < 502 -#define l_openlib(f, s) \ - (lua_pushcfunction(L, f), lua_pushstring(L, s), lua_call(L, 1, 0)) -#define LUA_BASELIBNAME "" -#define lua_rawlen lua_objlen -#define LUA_OK 0 -#define lua_compare(l, a, b, _) lua_equal(l, a, b) -#define LUA_OPEQ 0 -#else -#define l_openlib(f, s) (luaL_requiref(L, s, f, 1), lua_pop(L, 1)) -#define LUA_BASELIBNAME "_G" -#endif -#define l_setfunction(l, f, k) (lua_pushcfunction(l, f), lua_setfield(l, -2, k)) -#define l_setconstant(l, c, k) (lua_pushinteger(l, c), lua_setfield(l, -2, k)) - -#if CURSES -#define A_COLORCHAR (A_COLOR | A_CHARTEXT) -#endif - -/** The LPeg Scintilla lexer. */ -class LexerLPeg : public ILexer { - /** - * The lexer's Lua state. - * It is cleared each time the lexer language changes unless `own_lua` is - * `true`. - */ - lua_State *L; - /** - * The flag indicating whether or not an existing Lua state was supplied as - * the lexer's Lua state. - */ - bool own_lua; - /** - * The set of properties for the lexer. - * The `lexer.name`, `lexer.lpeg.home`, and `lexer.lpeg.color.theme` - * properties must be defined before running the lexer. - */ - PropSetSimple props; - /** The function to send Scintilla messages with. */ - SciFnDirect SS; - /** The Scintilla object the lexer belongs to. */ - sptr_t sci; - /** - * The flag indicating whether or not the lexer needs to be re-initialized. - * Re-initialization is required after the lexer language changes. - */ - bool reinit; - /** - * The flag indicating whether or not the lexer language has embedded lexers. - */ - bool multilang; - /** - * The list of style numbers considered to be whitespace styles. - * This is used in multi-language lexers when backtracking to whitespace to - * determine which lexer grammar to use. - */ - bool ws[STYLE_MAX + 1]; - - /** - * Logs the given error message or a Lua error message, prints it, and clears - * the stack. - * Error messages are logged to the "lexer.lpeg.error" property. - * @param str The error message to log and print. If `NULL`, logs and prints - * the Lua error message at the top of the stack. - */ - static void l_error(lua_State *L, const char *str=NULL) { - lua_getfield(L, LUA_REGISTRYINDEX, "sci_props"); - PropSetSimple *props = static_cast(lua_touserdata(L, -1)); - lua_pop(L, 1); // props - const char *key = "lexer.lpeg.error"; - const char *value = str ? str : lua_tostring(L, -1); - props->Set(key, value, strlen(key), strlen(value)); - fprintf(stderr, "Lua Error: %s.\n", str ? str : lua_tostring(L, -1)); - lua_settop(L, 0); - } - - /** The lexer's `line_from_position` Lua function. */ - static int l_line_from_position(lua_State *L) { - lua_getfield(L, LUA_REGISTRYINDEX, "sci_buffer"); - IDocument *buffer = static_cast(lua_touserdata(L, -1)); - lua_pushinteger(L, buffer->LineFromPosition(luaL_checkinteger(L, 1) - 1)); - return 1; - } - - /** The lexer's `__index` Lua metatable. */ - static int llexer_property(lua_State *L) { - int newindex = (lua_gettop(L) == 3); - luaL_getmetatable(L, "sci_lexer"); - lua_getmetatable(L, 1); // metatable can be either sci_lexer or sci_lexerp - int is_lexer = lua_compare(L, -1, -2, LUA_OPEQ); - lua_pop(L, 2); // metatable, metatable - - lua_getfield(L, LUA_REGISTRYINDEX, "sci_buffer"); - IDocument *buffer = static_cast(lua_touserdata(L, -1)); - lua_getfield(L, LUA_REGISTRYINDEX, "sci_props"); - PropSetSimple *props = static_cast(lua_touserdata(L, -1)); - lua_pop(L, 2); // sci_props and sci_buffer - - if (is_lexer) - lua_pushvalue(L, 2); // key is given - else - lua_getfield(L, 1, "property"); // indexible property - const char *key = lua_tostring(L, -1); - if (strcmp(key, "fold_level") == 0) { - luaL_argcheck(L, !newindex, 3, "read-only property"); - if (is_lexer) - l_pushlexerp(L, llexer_property); - else - lua_pushinteger(L, buffer->GetLevel(luaL_checkinteger(L, 2))); - } else if (strcmp(key, "indent_amount") == 0) { - luaL_argcheck(L, !newindex, 3, "read-only property"); - if (is_lexer) - l_pushlexerp(L, llexer_property); - else - lua_pushinteger(L, buffer->GetLineIndentation(luaL_checkinteger(L, 2))); - } else if (strcmp(key, "property") == 0) { - luaL_argcheck(L, !is_lexer || !newindex, 3, "read-only property"); - if (is_lexer) - l_pushlexerp(L, llexer_property); - else if (!newindex) - lua_pushstring(L, props->Get(luaL_checkstring(L, 2))); - else - props->Set(luaL_checkstring(L, 2), luaL_checkstring(L, 3), - lua_rawlen(L, 2), lua_rawlen(L, 3)); - } else if (strcmp(key, "property_int") == 0) { - luaL_argcheck(L, !newindex, 3, "read-only property"); - if (is_lexer) - l_pushlexerp(L, llexer_property); - else { - lua_pushstring(L, props->Get(luaL_checkstring(L, 2))); - lua_pushinteger(L, lua_tointeger(L, -1)); - } - } else if (strcmp(key, "style_at") == 0) { - luaL_argcheck(L, !newindex, 3, "read-only property"); - if (is_lexer) - l_pushlexerp(L, llexer_property); - else { - int style = buffer->StyleAt(luaL_checkinteger(L, 2) - 1); - lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexer_obj"); - lua_getfield(L, -1, "_TOKENSTYLES"), lua_replace(L, -2); - lua_pushnil(L); - while (lua_next(L, -2)) { - if (luaL_checkinteger(L, -1) == style) break; - lua_pop(L, 1); // value - } - lua_pop(L, 1); // style_num - } - } else if (strcmp(key, "line_state") == 0) { - luaL_argcheck(L, !is_lexer || !newindex, 3, "read-only property"); - if (is_lexer) - l_pushlexerp(L, llexer_property); - else if (!newindex) - lua_pushinteger(L, buffer->GetLineState(luaL_checkinteger(L, 2))); - else - buffer->SetLineState(luaL_checkinteger(L, 2), - luaL_checkinteger(L, 3)); - } else return !newindex ? (lua_rawget(L, 1), 1) : (lua_rawset(L, 1), 0); - return 1; - } - - /** - * Expands value of the string property key at index *index* and pushes the - * result onto the stack. - * @param L The Lua State. - * @param index The index the string property key. - */ - void lL_getexpanded(lua_State *L, int index) { - lua_getfield(L, LUA_REGISTRYINDEX, "_LOADED"), lua_getfield(L, -1, "lexer"); - lua_getfield(L, -1, "property_expanded"); - lua_pushvalue(L, (index > 0) ? index : index - 3), lua_gettable(L, -2); - lua_replace(L, -4), lua_pop(L, 2); // property_expanded and lexer module - } - - /** - * Parses the given style string to set the properties for the given style - * number. - * @param num The style number to set properties for. - * @param style The style string containing properties to set. - */ - void SetStyle(int num, const char *style) { - char *style_copy = static_cast(malloc(strlen(style) + 1)); - char *option = strcpy(style_copy, style), *next = NULL, *p = NULL; - while (option) { - if ((next = strchr(option, ','))) *next++ = '\0'; - if ((p = strchr(option, ':'))) *p++ = '\0'; - if (streq(option, "font") && p) - SS(sci, SCI_STYLESETFONT, num, reinterpret_cast(p)); - else if (streq(option, "size") && p) - SS(sci, SCI_STYLESETSIZE, num, static_cast(atoi(p))); - else if (streq(option, "bold") || streq(option, "notbold") || - streq(option, "weight")) { -#if !CURSES - int weight = SC_WEIGHT_NORMAL; - if (*option == 'b') - weight = SC_WEIGHT_BOLD; - else if (*option == 'w' && p) - weight = atoi(p); - SS(sci, SCI_STYLESETWEIGHT, num, weight); -#else - // Scintilla curses requires font attributes to be stored in the "font - // weight" style attribute. - // First, clear any existing SC_WEIGHT_NORMAL, SC_WEIGHT_SEMIBOLD, or - // SC_WEIGHT_BOLD values stored in the lower 16 bits. Then set the - // appropriate curses attr. - sptr_t weight = SS(sci, SCI_STYLEGETWEIGHT, num, 0) & ~A_COLORCHAR; - int bold = *option == 'b' || - (*option == 'w' && p && atoi(p) > SC_WEIGHT_NORMAL); - SS(sci, SCI_STYLESETWEIGHT, num, - bold ? weight | A_BOLD : weight & ~A_BOLD); -#endif - } else if (streq(option, "italics") || streq(option, "notitalics")) - SS(sci, SCI_STYLESETITALIC, num, *option == 'i'); - else if (streq(option, "underlined") || streq(option, "notunderlined")) { -#if !CURSES - SS(sci, SCI_STYLESETUNDERLINE, num, *option == 'u'); -#else - // Scintilla curses requires font attributes to be stored in the "font - // weight" style attribute. - // First, clear any existing SC_WEIGHT_NORMAL, SC_WEIGHT_SEMIBOLD, or - // SC_WEIGHT_BOLD values stored in the lower 16 bits. Then set the - // appropriate curses attr. - sptr_t weight = SS(sci, SCI_STYLEGETWEIGHT, num, 0) & ~A_COLORCHAR; - SS(sci, SCI_STYLESETWEIGHT, num, - (*option == 'u') ? weight | A_UNDERLINE : weight & ~A_UNDERLINE); -#endif - } else if ((streq(option, "fore") || streq(option, "back")) && p) { - int msg = (*option == 'f') ? SCI_STYLESETFORE : SCI_STYLESETBACK; - int color = static_cast(strtol(p, NULL, 0)); - if (*p == '#') { // #RRGGBB format; Scintilla format is 0xBBGGRR - color = static_cast(strtol(p + 1, NULL, 16)); - color = ((color & 0xFF0000) >> 16) | (color & 0xFF00) | - ((color & 0xFF) << 16); // convert to 0xBBGGRR - } - SS(sci, msg, num, color); - } else if (streq(option, "eolfilled") || streq(option, "noteolfilled")) - SS(sci, SCI_STYLESETEOLFILLED, num, *option == 'e'); - else if (streq(option, "characterset") && p) - SS(sci, SCI_STYLESETCHARACTERSET, num, static_cast(atoi(p))); - else if (streq(option, "case") && p) { - if (*p == 'u') - SS(sci, SCI_STYLESETCASE, num, SC_CASE_UPPER); - else if (*p == 'l') - SS(sci, SCI_STYLESETCASE, num, SC_CASE_LOWER); - } else if (streq(option, "visible") || streq(option, "notvisible")) - SS(sci, SCI_STYLESETVISIBLE, num, *option == 'v'); - else if (streq(option, "changeable") || streq(option, "notchangeable")) - SS(sci, SCI_STYLESETCHANGEABLE, num, *option == 'c'); - else if (streq(option, "hotspot") || streq(option, "nothotspot")) - SS(sci, SCI_STYLESETHOTSPOT, num, *option == 'h'); - option = next; - } - free(style_copy); - } - - /** - * Iterates through the lexer's `_TOKENSTYLES`, setting the style properties - * for all defined styles. - */ - bool SetStyles() { - // If the lexer defines additional styles, set their properties first (if - // the user has not already defined them). - l_getlexerfield(L, "_EXTRASTYLES"); - lua_pushnil(L); - while (lua_next(L, -2)) { - if (lua_isstring(L, -2) && lua_isstring(L, -1)) { - lua_pushstring(L, "style."), lua_pushvalue(L, -3), lua_concat(L, 2); - if (!*props.Get(lua_tostring(L, -1))) - props.Set(lua_tostring(L, -1), lua_tostring(L, -2), lua_rawlen(L, -1), - lua_rawlen(L, -2)); - lua_pop(L, 1); // style name - } - lua_pop(L, 1); // value - } - lua_pop(L, 1); // _EXTRASTYLES - - l_getlexerfield(L, "_TOKENSTYLES"); - if (!SS || !sci) { - lua_pop(L, 1); // _TOKENSTYLES - // Skip, but do not report an error since `reinit` would remain `false` - // and subsequent calls to `Lex()` and `Fold()` would repeatedly call this - // function and error. - return true; - } - lua_pushstring(L, "style.default"), lL_getexpanded(L, -1); - SetStyle(STYLE_DEFAULT, lua_tostring(L, -1)); - lua_pop(L, 2); // style and "style.default" - SS(sci, SCI_STYLECLEARALL, 0, 0); // set default styles - lua_pushnil(L); - while (lua_next(L, -2)) { - if (lua_isstring(L, -2) && lua_isnumber(L, -1) && - lua_tointeger(L, -1) != STYLE_DEFAULT) { - lua_pushstring(L, "style."), lua_pushvalue(L, -3), lua_concat(L, 2); - lL_getexpanded(L, -1), lua_replace(L, -2); - SetStyle(lua_tointeger(L, -2), lua_tostring(L, -1)); - lua_pop(L, 1); // style - } - lua_pop(L, 1); // value - } - lua_pop(L, 1); // _TOKENSTYLES - return true; - } - - /** - * Returns the style name for the given style number. - * @param style The style number to get the style name for. - * @return style name or NULL - */ - const char *GetStyleName(int style) { - if (!L) return NULL; - const char *name = NULL; - l_getlexerfield(L, "_TOKENSTYLES"); - lua_pushnil(L); - while (lua_next(L, -2)) - if (lua_tointeger(L, -1) == style) { - name = lua_tostring(L, -2); - lua_pop(L, 2); // value and key - break; - } else lua_pop(L, 1); // value - lua_pop(L, 1); // _TOKENSTYLES - return name; - } - - /** - * Initializes the lexer once the `lexer.lpeg.home` and `lexer.name` - * properties are set. - */ - bool Init() { - char home[FILENAME_MAX], lexer[50], theme[FILENAME_MAX]; - props.GetExpanded("lexer.lpeg.home", home); - props.GetExpanded("lexer.name", lexer); - props.GetExpanded("lexer.lpeg.color.theme", theme); - if (!*home || !*lexer || !L) return false; - - lua_pushlightuserdata(L, reinterpret_cast(&props)); - lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); - - // If necessary, load the lexer module and theme. - lua_getfield(L, LUA_REGISTRYINDEX, "_LOADED"), lua_getfield(L, -1, "lexer"); - if (lua_isnil(L, -1)) { - lua_pop(L, 2); // nil and _LOADED - - // Modify `package.path` to find lexers. - lua_getglobal(L, "package"), lua_getfield(L, -1, "path"); - int orig_path = luaL_ref(L, LUA_REGISTRYINDEX); // restore later - lua_pushstring(L, home), lua_pushstring(L, "/?.lua"), lua_concat(L, 2); - lua_setfield(L, -2, "path"), lua_pop(L, 1); // package - - // Load the lexer module. - lua_getglobal(L, "require"); - lua_pushstring(L, "lexer"); - if (lua_pcall(L, 1, 1, 0) != LUA_OK) return (l_error(L), false); - l_setfunction(L, l_line_from_position, "line_from_position"); - l_setconstant(L, SC_FOLDLEVELBASE, "FOLD_BASE"); - l_setconstant(L, SC_FOLDLEVELWHITEFLAG, "FOLD_BLANK"); - l_setconstant(L, SC_FOLDLEVELHEADERFLAG, "FOLD_HEADER"); - l_setmetatable(L, "sci_lexer", llexer_property); - if (*theme) { - // Load the theme. - if (!(strstr(theme, "/") || strstr(theme, "\\"))) { // theme name - lua_pushstring(L, home); - lua_pushstring(L, "/themes/"); - lua_pushstring(L, theme); - lua_pushstring(L, ".lua"); - lua_concat(L, 4); - } else lua_pushstring(L, theme); // path to theme - if (luaL_loadfile(L, lua_tostring(L, -1)) != LUA_OK || - lua_pcall(L, 0, 0, 0) != LUA_OK) return (l_error(L), false); - lua_pop(L, 1); // theme - } - - // Restore `package.path`. - lua_getglobal(L, "package"); - lua_getfield(L, -1, "path"), lua_setfield(L, -3, "path"); // lexer.path = - lua_rawgeti(L, LUA_REGISTRYINDEX, orig_path), lua_setfield(L, -2, "path"); - luaL_unref(L, LUA_REGISTRYINDEX, orig_path), lua_pop(L, 1); // package - } else lua_remove(L, -2); // _LOADED - - // Load the language lexer. - lua_getfield(L, -1, "load"); - if (lua_isfunction(L, -1)) { - lua_pushstring(L, lexer), lua_pushnil(L), lua_pushboolean(L, 1); - if (lua_pcall(L, 3, 1, 0) != LUA_OK) return (l_error(L), false); - } else return (l_error(L, "'lexer.load' function not found"), false); - lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexers"); - lua_pushlightuserdata(L, reinterpret_cast(this)); - lua_pushvalue(L, -3), lua_settable(L, -3), lua_pop(L, 1); // sci_lexers - lua_pushvalue(L, -1), lua_setfield(L, LUA_REGISTRYINDEX, "sci_lexer_obj"); - lua_remove(L, -2); // lexer module - if (!SetStyles()) return false; - - // If the lexer is a parent, it will have children in its _CHILDREN table. - lua_getfield(L, -1, "_CHILDREN"); - if (lua_istable(L, -1)) { - multilang = true; - // Determine which styles are language whitespace styles - // ([lang]_whitespace). This is necessary for determining which language - // to start lexing with. - char style_name[50]; - for (int i = 0; i <= STYLE_MAX; i++) { - PrivateCall(i, reinterpret_cast(style_name)); - ws[i] = strstr(style_name, "whitespace") ? true : false; - } - } - lua_pop(L, 2); // _CHILDREN and lexer object - - reinit = false; - props.Set("lexer.lpeg.error", "", strlen("lexer.lpeg.error"), 0); - return true; - } - - /** - * When *lparam* is `0`, returns the size of the buffer needed to store the - * given string *str* in; otherwise copies *str* into the buffer *lparam* and - * returns the number of bytes copied. - * @param lparam `0` to get the number of bytes needed to store *str* or a - * pointer to a buffer large enough to copy *str* into. - * @param str The string to copy. - * @return number of bytes needed to hold *str* - */ - void *StringResult(long lparam, const char *str) { - if (lparam) strcpy(reinterpret_cast(lparam), str); - return reinterpret_cast(strlen(str)); - } - -public: - /** Constructor. */ - LexerLPeg() : own_lua(true), reinit(true), multilang(false) { - // Initialize the Lua state, load libraries, and set platform variables. - if ((L = luaL_newstate())) { - l_openlib(luaopen_base, LUA_BASELIBNAME); - l_openlib(luaopen_table, LUA_TABLIBNAME); - l_openlib(luaopen_string, LUA_STRLIBNAME); -#if LUA_VERSION_NUM < 502 - l_openlib(luaopen_io, LUA_IOLIBNAME); // for `package.searchpath()` -#endif - l_openlib(luaopen_package, LUA_LOADLIBNAME); - l_openlib(luaopen_lpeg, "lpeg"); -#if _WIN32 - lua_pushboolean(L, 1), lua_setglobal(L, "WIN32"); -#endif -#if __APPLE__ - lua_pushboolean(L, 1), lua_setglobal(L, "OSX"); -#endif -#if GTK - lua_pushboolean(L, 1), lua_setglobal(L, "GTK"); -#endif -#if CURSES - lua_pushboolean(L, 1), lua_setglobal(L, "CURSES"); -#endif - lua_newtable(L), lua_setfield(L, LUA_REGISTRYINDEX, "sci_lexers"); - } else fprintf(stderr, "Lua failed to initialize.\n"); - SS = NULL, sci = 0; - } - - /** Destructor. */ - virtual ~LexerLPeg() {} - - /** Destroys the lexer object. */ - virtual void SCI_METHOD Release() { - if (own_lua && L) - lua_close(L); - else if (!own_lua) { - lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexers"); - lua_pushlightuserdata(L, reinterpret_cast(this)); - lua_pushnil(L), lua_settable(L, -3), lua_pop(L, 1); // sci_lexers - } - L = NULL; - delete this; - } - - /** - * Lexes the Scintilla document. - * @param startPos The position in the document to start lexing at. - * @param lengthDoc The number of bytes in the document to lex. - * @param initStyle The initial style at position *startPos* in the document. - * @param buffer The document interface. - */ - virtual void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, - int initStyle, IDocument *buffer) { - LexAccessor styler(buffer); - if ((reinit && !Init()) || !L) { - // Style everything in the default style. - styler.StartAt(startPos); - styler.StartSegment(startPos); - styler.ColourTo(startPos + lengthDoc - 1, STYLE_DEFAULT); - styler.Flush(); - return; - } - lua_pushlightuserdata(L, reinterpret_cast(&props)); - lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); - lua_pushlightuserdata(L, reinterpret_cast(buffer)); - lua_setfield(L, LUA_REGISTRYINDEX, "sci_buffer"); - - // Ensure the lexer has a grammar. - // This could be done in the lexer module's `lex()`, but for large files, - // passing string arguments from C to Lua is expensive. - l_getlexerfield(L, "_GRAMMAR"); - int has_grammar = !lua_isnil(L, -1); - lua_pop(L, 1); // _GRAMMAR - if (!has_grammar) { - // Style everything in the default style. - styler.StartAt(startPos); - styler.StartSegment(startPos); - styler.ColourTo(startPos + lengthDoc - 1, STYLE_DEFAULT); - styler.Flush(); - return; - } - - // Start from the beginning of the current style so LPeg matches it. - // For multilang lexers, start at whitespace since embedded languages have - // [lang]_whitespace styles. This is so LPeg can start matching child - // languages instead of parent ones if necessary. - if (startPos > 0) { - Sci_PositionU i = startPos; - while (i > 0 && styler.StyleAt(i - 1) == initStyle) i--; - if (multilang) - while (i > 0 && !ws[static_cast(styler.StyleAt(i))]) i--; - lengthDoc += startPos - i, startPos = i; - } - - Sci_PositionU startSeg = startPos, endSeg = startPos + lengthDoc; - int style = 0; - l_getlexerfield(L, "lex") - if (lua_isfunction(L, -1)) { - l_getlexerobj(L); - lua_pushlstring(L, buffer->BufferPointer() + startPos, lengthDoc); - lua_pushinteger(L, styler.StyleAt(startPos)); - if (lua_pcall(L, 3, 1, 0) != LUA_OK) l_error(L); - // Style the text from the token table returned. - if (lua_istable(L, -1)) { - int len = lua_rawlen(L, -1); - if (len > 0) { - styler.StartAt(startPos); - styler.StartSegment(startPos); - l_getlexerfield(L, "_TOKENSTYLES"); - // Loop through token-position pairs. - for (int i = 1; i < len; i += 2) { - style = STYLE_DEFAULT; - lua_rawgeti(L, -2, i), lua_rawget(L, -2); // _TOKENSTYLES[token] - if (!lua_isnil(L, -1)) style = lua_tointeger(L, -1); - lua_pop(L, 1); // _TOKENSTYLES[token] - lua_rawgeti(L, -2, i + 1); // pos - unsigned int position = lua_tointeger(L, -1) - 1; - lua_pop(L, 1); // pos - if (style >= 0 && style <= STYLE_MAX) - styler.ColourTo(startSeg + position - 1, style); - else - l_error(L, "Bad style number"); - if (position > endSeg) break; - } - lua_pop(L, 2); // _TOKENSTYLES and token table returned - styler.ColourTo(endSeg - 1, style); - styler.Flush(); - } - } else l_error(L, "Table of tokens expected from 'lexer.lex'"); - } else l_error(L, "'lexer.lex' function not found"); - } - - /** - * Folds the Scintilla document. - * @param startPos The position in the document to start folding at. - * @param lengthDoc The number of bytes in the document to fold. - * @param initStyle The initial style at position *startPos* in the document. - * @param buffer The document interface. - */ - virtual void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, - int, IDocument *buffer) { - if ((reinit && !Init()) || !L) return; - lua_pushlightuserdata(L, reinterpret_cast(&props)); - lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); - lua_pushlightuserdata(L, reinterpret_cast(buffer)); - lua_setfield(L, LUA_REGISTRYINDEX, "sci_buffer"); - LexAccessor styler(buffer); - - l_getlexerfield(L, "fold"); - if (lua_isfunction(L, -1)) { - l_getlexerobj(L); - Sci_Position currentLine = styler.GetLine(startPos); - lua_pushlstring(L, buffer->BufferPointer() + startPos, lengthDoc); - lua_pushinteger(L, startPos); - lua_pushinteger(L, currentLine); - lua_pushinteger(L, styler.LevelAt(currentLine) & SC_FOLDLEVELNUMBERMASK); - if (lua_pcall(L, 5, 1, 0) != LUA_OK) l_error(L); - // Fold the text from the fold table returned. - if (lua_istable(L, -1)) { - lua_pushnil(L); - while (lua_next(L, -2)) { // line = level - styler.SetLevel(lua_tointeger(L, -2), lua_tointeger(L, -1)); - lua_pop(L, 1); // level - } - lua_pop(L, 1); // fold table returned - } else l_error(L, "Table of folds expected from 'lexer.fold'"); - } else l_error(L, "'lexer.fold' function not found"); - } - - /** This lexer implements the original lexer interface. */ - virtual int SCI_METHOD Version() const { return lvOriginal; } - /** Returning property names is not implemented. */ - virtual const char * SCI_METHOD PropertyNames() { return ""; } - /** Returning property types is not implemented. */ - virtual int SCI_METHOD PropertyType(const char *) { return 0; } - /** Returning property descriptions is not implemented. */ - virtual const char * SCI_METHOD DescribeProperty(const char *) { - return ""; - } - - /** - * Sets the *key* lexer property to *value*. - * If *key* starts with "style.", also set the style for the token. - * @param key The string keyword. - * @param val The string value. - */ - virtual Sci_Position SCI_METHOD PropertySet(const char *key, - const char *value) { - props.Set(key, value, strlen(key), strlen(value)); - if (reinit) - Init(); - else if (L && SS && sci && strncmp(key, "style.", 6) == 0) { - lua_pushlightuserdata(L, reinterpret_cast(&props)); - lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); - l_getlexerfield(L, "_TOKENSTYLES"); - lua_pushstring(L, key + 6), lua_rawget(L, -2); - lua_pushstring(L, key), lL_getexpanded(L, -1), lua_replace(L, -2); - if (lua_isnumber(L, -2)) { - int style_num = lua_tointeger(L, -2); - SetStyle(style_num, lua_tostring(L, -1)); - if (style_num == STYLE_DEFAULT) - // Assume a theme change, with the default style being set first. - // Subsequent style settings will be based on the default. - SS(sci, SCI_STYLECLEARALL, 0, 0); - } - lua_pop(L, 3); // style, style number, _TOKENSTYLES - } - return -1; // no need to re-lex - } - - /** Returning keyword list descriptions is not implemented. */ - virtual const char * SCI_METHOD DescribeWordListSets() { return ""; } - /** Setting keyword lists is not applicable. */ - virtual Sci_Position SCI_METHOD WordListSet(int, const char *) { - return -1; - } - - /** - * Allows for direct communication between the application and the lexer. - * The application uses this to set `SS`, `sci`, `L`, and lexer properties, - * and to retrieve style names. - * @param code The communication code. - * @param arg The argument. - * @return void *data - */ - virtual void * SCI_METHOD PrivateCall(int code, void *arg) { - sptr_t lParam = reinterpret_cast(arg); - const char *val = NULL; - switch(code) { - case SCI_GETDIRECTFUNCTION: - SS = reinterpret_cast(lParam); - return NULL; - case SCI_SETDOCPOINTER: - sci = lParam; - return NULL; - case SCI_CHANGELEXERSTATE: - if (own_lua) lua_close(L); - L = reinterpret_cast(lParam); - lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexers"); - if (lua_isnil(L, -1)) - lua_newtable(L), lua_setfield(L, LUA_REGISTRYINDEX, "sci_lexers"); - lua_pop(L, 1); // sci_lexers or nil - own_lua = false; - return NULL; - case SCI_SETLEXERLANGUAGE: - char lexer_name[50]; - props.GetExpanded("lexer.name", lexer_name); - if (strcmp(lexer_name, reinterpret_cast(arg)) != 0) { - reinit = true; - props.Set("lexer.lpeg.error", "", strlen("lexer.lpeg.error"), 0); - PropertySet("lexer.name", reinterpret_cast(arg)); - } else if (L) - own_lua ? SetStyles() : Init(); - return NULL; - case SCI_GETLEXERLANGUAGE: - if (L) { - l_getlexerfield(L, "_NAME"); - if (SS && sci && multilang) { - int pos = SS(sci, SCI_GETCURRENTPOS, 0, 0); - while (pos >= 0 && !ws[SS(sci, SCI_GETSTYLEAT, pos, 0)]) pos--; - const char *name = NULL, *p = NULL; - if (pos >= 0) { - name = GetStyleName(SS(sci, SCI_GETSTYLEAT, pos, 0)); - if (name) p = strstr(name, "_whitespace"); - } - if (!name) name = lua_tostring(L, -1); // "lexer:lexer" fallback - if (!p) p = name + strlen(name); // "lexer:lexer" fallback - lua_pushstring(L, "/"); - lua_pushlstring(L, name, p - name); - lua_concat(L, 3); - } - val = lua_tostring(L, -1); - lua_pop(L, 1); // lexer_name or lexer language string - } - return StringResult(lParam, val ? val : "null"); - case SCI_GETSTATUS: - return StringResult(lParam, props.Get("lexer.lpeg.error")); - default: // style-related - if (code >= 0 && code <= STYLE_MAX) { // retrieve style names - val = GetStyleName(code); - return StringResult(lParam, val ? val : "Not Available"); - } else return NULL; - } - } - - /** Constructs a new instance of the lexer. */ - static ILexer *LexerFactoryLPeg() { return new LexerLPeg(); } -}; - -LexerModule lmLPeg(SCLEX_LPEG, LexerLPeg::LexerFactoryLPeg, "lpeg"); - -#else - -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static void LPegLex(Sci_PositionU, Sci_Position, int, WordList*[], Accessor&) { - return; -} - -LexerModule lmLPeg(SCLEX_LPEG, LPegLex, "lpeg"); - -#endif // LPEG_LEXER diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLaTeX.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLaTeX.cpp deleted file mode 100644 index ed9e6a6b3..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLaTeX.cpp +++ /dev/null @@ -1,538 +0,0 @@ -// Scintilla source code edit control -/** @file LexLaTeX.cxx - ** Lexer for LaTeX2e. - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -// Modified by G. HU in 2013. Added folding, syntax highting inside math environments, and changed some minor behaviors. - -#include -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "PropSetSimple.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" -#include "LexerBase.h" - -using namespace Scintilla; - -using namespace std; - -struct latexFoldSave { - latexFoldSave() : structLev(0) { - for (int i = 0; i < 8; ++i) openBegins[i] = 0; - } - latexFoldSave(const latexFoldSave &save) : structLev(save.structLev) { - for (int i = 0; i < 8; ++i) openBegins[i] = save.openBegins[i]; - } - int openBegins[8]; - Sci_Position structLev; -}; - -class LexerLaTeX : public LexerBase { -private: - vector modes; - void setMode(Sci_Position line, int mode) { - if (line >= static_cast(modes.size())) modes.resize(line + 1, 0); - modes[line] = mode; - } - int getMode(Sci_Position line) { - if (line >= 0 && line < static_cast(modes.size())) return modes[line]; - return 0; - } - void truncModes(Sci_Position numLines) { - if (static_cast(modes.size()) > numLines * 2 + 256) - modes.resize(numLines + 128); - } - - vector saves; - void setSave(Sci_Position line, const latexFoldSave &save) { - if (line >= static_cast(saves.size())) saves.resize(line + 1); - saves[line] = save; - } - void getSave(Sci_Position line, latexFoldSave &save) { - if (line >= 0 && line < static_cast(saves.size())) save = saves[line]; - else { - save.structLev = 0; - for (int i = 0; i < 8; ++i) save.openBegins[i] = 0; - } - } - void truncSaves(Sci_Position numLines) { - if (static_cast(saves.size()) > numLines * 2 + 256) - saves.resize(numLines + 128); - } -public: - static ILexer *LexerFactoryLaTeX() { - return new LexerLaTeX(); - } - void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; - void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; -}; - -static bool latexIsSpecial(int ch) { - return (ch == '#') || (ch == '$') || (ch == '%') || (ch == '&') || (ch == '_') || - (ch == '{') || (ch == '}') || (ch == ' '); -} - -static bool latexIsBlank(int ch) { - return (ch == ' ') || (ch == '\t'); -} - -static bool latexIsBlankAndNL(int ch) { - return (ch == ' ') || (ch == '\t') || (ch == '\r') || (ch == '\n'); -} - -static bool latexIsLetter(int ch) { - return IsASCII(ch) && isalpha(ch); -} - -static bool latexIsTagValid(Sci_Position &i, Sci_Position l, Accessor &styler) { - while (i < l) { - if (styler.SafeGetCharAt(i) == '{') { - while (i < l) { - i++; - if (styler.SafeGetCharAt(i) == '}') { - return true; - } else if (!latexIsLetter(styler.SafeGetCharAt(i)) && - styler.SafeGetCharAt(i)!='*') { - return false; - } - } - } else if (!latexIsBlank(styler.SafeGetCharAt(i))) { - return false; - } - i++; - } - return false; -} - -static bool latexNextNotBlankIs(Sci_Position i, Accessor &styler, char needle) { - char ch; - while (i < styler.Length()) { - ch = styler.SafeGetCharAt(i); - if (!latexIsBlankAndNL(ch) && ch != '*') { - if (ch == needle) - return true; - else - return false; - } - i++; - } - return false; -} - -static bool latexLastWordIs(Sci_Position start, Accessor &styler, const char *needle) { - Sci_PositionU i = 0; - Sci_PositionU l = static_cast(strlen(needle)); - Sci_Position ini = start-l+1; - char s[32]; - - while (i < l && i < 31) { - s[i] = styler.SafeGetCharAt(ini + i); - i++; - } - s[i] = '\0'; - - return (strcmp(s, needle) == 0); -} - -static bool latexLastWordIsMathEnv(Sci_Position pos, Accessor &styler) { - Sci_Position i, j; - char s[32]; - const char *mathEnvs[] = { "align", "alignat", "flalign", "gather", - "multiline", "displaymath", "eqnarray", "equation" }; - if (styler.SafeGetCharAt(pos) != '}') return false; - for (i = pos - 1; i >= 0; --i) { - if (styler.SafeGetCharAt(i) == '{') break; - if (pos - i >= 20) return false; - } - if (i < 0 || i == pos - 1) return false; - ++i; - for (j = 0; i + j < pos; ++j) - s[j] = styler.SafeGetCharAt(i + j); - s[j] = '\0'; - if (j == 0) return false; - if (s[j - 1] == '*') s[--j] = '\0'; - for (i = 0; i < static_cast(sizeof(mathEnvs) / sizeof(const char *)); ++i) - if (strcmp(s, mathEnvs[i]) == 0) return true; - return false; -} - -static inline void latexStateReset(int &mode, int &state) { - switch (mode) { - case 1: state = SCE_L_MATH; break; - case 2: state = SCE_L_MATH2; break; - default: state = SCE_L_DEFAULT; break; - } -} - -// There are cases not handled correctly, like $abcd\textrm{what is $x+y$}z+w$. -// But I think it's already good enough. -void SCI_METHOD LexerLaTeX::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { - // startPos is assumed to be the first character of a line - Accessor styler(pAccess, &props); - styler.StartAt(startPos); - int mode = getMode(styler.GetLine(startPos) - 1); - int state = initStyle; - if (state == SCE_L_ERROR || state == SCE_L_SHORTCMD || state == SCE_L_SPECIAL) // should not happen - latexStateReset(mode, state); - - char chNext = styler.SafeGetCharAt(startPos); - char chVerbatimDelim = '\0'; - styler.StartSegment(startPos); - Sci_Position lengthDoc = startPos + length; - - for (Sci_Position i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - if (styler.IsLeadByte(ch)) { - i++; - chNext = styler.SafeGetCharAt(i + 1); - continue; - } - - if (ch == '\r' || ch == '\n') - setMode(styler.GetLine(i), mode); - - switch (state) { - case SCE_L_DEFAULT : - switch (ch) { - case '\\' : - styler.ColourTo(i - 1, state); - if (latexIsLetter(chNext)) { - state = SCE_L_COMMAND; - } else if (latexIsSpecial(chNext)) { - styler.ColourTo(i + 1, SCE_L_SPECIAL); - i++; - chNext = styler.SafeGetCharAt(i + 1); - } else if (chNext == '\r' || chNext == '\n') { - styler.ColourTo(i, SCE_L_ERROR); - } else if (IsASCII(chNext)) { - styler.ColourTo(i + 1, SCE_L_SHORTCMD); - if (chNext == '(') { - mode = 1; - state = SCE_L_MATH; - } else if (chNext == '[') { - mode = 2; - state = SCE_L_MATH2; - } - i++; - chNext = styler.SafeGetCharAt(i + 1); - } - break; - case '$' : - styler.ColourTo(i - 1, state); - if (chNext == '$') { - styler.ColourTo(i + 1, SCE_L_SHORTCMD); - mode = 2; - state = SCE_L_MATH2; - i++; - chNext = styler.SafeGetCharAt(i + 1); - } else { - styler.ColourTo(i, SCE_L_SHORTCMD); - mode = 1; - state = SCE_L_MATH; - } - break; - case '%' : - styler.ColourTo(i - 1, state); - state = SCE_L_COMMENT; - break; - } - break; - // These 3 will never be reached. - case SCE_L_ERROR: - case SCE_L_SPECIAL: - case SCE_L_SHORTCMD: - break; - case SCE_L_COMMAND : - if (!latexIsLetter(chNext)) { - styler.ColourTo(i, state); - if (latexNextNotBlankIs(i + 1, styler, '[' )) { - state = SCE_L_CMDOPT; - } else if (latexLastWordIs(i, styler, "\\begin")) { - state = SCE_L_TAG; - } else if (latexLastWordIs(i, styler, "\\end")) { - state = SCE_L_TAG2; - } else if (latexLastWordIs(i, styler, "\\verb") && chNext != '*' && chNext != ' ') { - chVerbatimDelim = chNext; - state = SCE_L_VERBATIM; - } else { - latexStateReset(mode, state); - } - } - break; - case SCE_L_CMDOPT : - if (ch == ']') { - styler.ColourTo(i, state); - latexStateReset(mode, state); - } - break; - case SCE_L_TAG : - if (latexIsTagValid(i, lengthDoc, styler)) { - styler.ColourTo(i, state); - latexStateReset(mode, state); - if (latexLastWordIs(i, styler, "{verbatim}")) { - state = SCE_L_VERBATIM; - } else if (latexLastWordIs(i, styler, "{comment}")) { - state = SCE_L_COMMENT2; - } else if (latexLastWordIs(i, styler, "{math}") && mode == 0) { - mode = 1; - state = SCE_L_MATH; - } else if (latexLastWordIsMathEnv(i, styler) && mode == 0) { - mode = 2; - state = SCE_L_MATH2; - } - } else { - styler.ColourTo(i, SCE_L_ERROR); - latexStateReset(mode, state); - ch = styler.SafeGetCharAt(i); - if (ch == '\r' || ch == '\n') setMode(styler.GetLine(i), mode); - } - chNext = styler.SafeGetCharAt(i+1); - break; - case SCE_L_TAG2 : - if (latexIsTagValid(i, lengthDoc, styler)) { - styler.ColourTo(i, state); - latexStateReset(mode, state); - } else { - styler.ColourTo(i, SCE_L_ERROR); - latexStateReset(mode, state); - ch = styler.SafeGetCharAt(i); - if (ch == '\r' || ch == '\n') setMode(styler.GetLine(i), mode); - } - chNext = styler.SafeGetCharAt(i+1); - break; - case SCE_L_MATH : - switch (ch) { - case '\\' : - styler.ColourTo(i - 1, state); - if (latexIsLetter(chNext)) { - Sci_Position match = i + 3; - if (latexLastWordIs(match, styler, "\\end")) { - match++; - if (latexIsTagValid(match, lengthDoc, styler)) { - if (latexLastWordIs(match, styler, "{math}")) - mode = 0; - } - } - state = SCE_L_COMMAND; - } else if (latexIsSpecial(chNext)) { - styler.ColourTo(i + 1, SCE_L_SPECIAL); - i++; - chNext = styler.SafeGetCharAt(i + 1); - } else if (chNext == '\r' || chNext == '\n') { - styler.ColourTo(i, SCE_L_ERROR); - } else if (IsASCII(chNext)) { - if (chNext == ')') { - mode = 0; - state = SCE_L_DEFAULT; - } - styler.ColourTo(i + 1, SCE_L_SHORTCMD); - i++; - chNext = styler.SafeGetCharAt(i + 1); - } - break; - case '$' : - styler.ColourTo(i - 1, state); - styler.ColourTo(i, SCE_L_SHORTCMD); - mode = 0; - state = SCE_L_DEFAULT; - break; - case '%' : - styler.ColourTo(i - 1, state); - state = SCE_L_COMMENT; - break; - } - break; - case SCE_L_MATH2 : - switch (ch) { - case '\\' : - styler.ColourTo(i - 1, state); - if (latexIsLetter(chNext)) { - Sci_Position match = i + 3; - if (latexLastWordIs(match, styler, "\\end")) { - match++; - if (latexIsTagValid(match, lengthDoc, styler)) { - if (latexLastWordIsMathEnv(match, styler)) - mode = 0; - } - } - state = SCE_L_COMMAND; - } else if (latexIsSpecial(chNext)) { - styler.ColourTo(i + 1, SCE_L_SPECIAL); - i++; - chNext = styler.SafeGetCharAt(i + 1); - } else if (chNext == '\r' || chNext == '\n') { - styler.ColourTo(i, SCE_L_ERROR); - } else if (IsASCII(chNext)) { - if (chNext == ']') { - mode = 0; - state = SCE_L_DEFAULT; - } - styler.ColourTo(i + 1, SCE_L_SHORTCMD); - i++; - chNext = styler.SafeGetCharAt(i + 1); - } - break; - case '$' : - styler.ColourTo(i - 1, state); - if (chNext == '$') { - styler.ColourTo(i + 1, SCE_L_SHORTCMD); - i++; - chNext = styler.SafeGetCharAt(i + 1); - mode = 0; - state = SCE_L_DEFAULT; - } else { // This may not be an error, e.g. \begin{equation}\text{$a$}\end{equation} - styler.ColourTo(i, SCE_L_SHORTCMD); - } - break; - case '%' : - styler.ColourTo(i - 1, state); - state = SCE_L_COMMENT; - break; - } - break; - case SCE_L_COMMENT : - if (ch == '\r' || ch == '\n') { - styler.ColourTo(i - 1, state); - latexStateReset(mode, state); - } - break; - case SCE_L_COMMENT2 : - if (ch == '\\') { - Sci_Position match = i + 3; - if (latexLastWordIs(match, styler, "\\end")) { - match++; - if (latexIsTagValid(match, lengthDoc, styler)) { - if (latexLastWordIs(match, styler, "{comment}")) { - styler.ColourTo(i - 1, state); - state = SCE_L_COMMAND; - } - } - } - } - break; - case SCE_L_VERBATIM : - if (ch == '\\') { - Sci_Position match = i + 3; - if (latexLastWordIs(match, styler, "\\end")) { - match++; - if (latexIsTagValid(match, lengthDoc, styler)) { - if (latexLastWordIs(match, styler, "{verbatim}")) { - styler.ColourTo(i - 1, state); - state = SCE_L_COMMAND; - } - } - } - } else if (chNext == chVerbatimDelim) { - styler.ColourTo(i + 1, state); - latexStateReset(mode, state); - chVerbatimDelim = '\0'; - i++; - chNext = styler.SafeGetCharAt(i + 1); - } else if (chVerbatimDelim != '\0' && (ch == '\n' || ch == '\r')) { - styler.ColourTo(i, SCE_L_ERROR); - latexStateReset(mode, state); - chVerbatimDelim = '\0'; - } - break; - } - } - if (lengthDoc == styler.Length()) truncModes(styler.GetLine(lengthDoc - 1)); - styler.ColourTo(lengthDoc - 1, state); - styler.Flush(); -} - -static int latexFoldSaveToInt(const latexFoldSave &save) { - int sum = 0; - for (int i = 0; i <= save.structLev; ++i) - sum += save.openBegins[i]; - return ((sum + save.structLev + SC_FOLDLEVELBASE) & SC_FOLDLEVELNUMBERMASK); -} - -// Change folding state while processing a line -// Return the level before the first relevant command -void SCI_METHOD LexerLaTeX::Fold(Sci_PositionU startPos, Sci_Position length, int, IDocument *pAccess) { - const char *structWords[7] = {"part", "chapter", "section", "subsection", - "subsubsection", "paragraph", "subparagraph"}; - Accessor styler(pAccess, &props); - Sci_PositionU endPos = startPos + length; - Sci_Position curLine = styler.GetLine(startPos); - latexFoldSave save; - getSave(curLine - 1, save); - do { - char ch, buf[16]; - Sci_Position i, j; - int lev = -1; - bool needFold = false; - for (i = static_cast(startPos); i < static_cast(endPos); ++i) { - ch = styler.SafeGetCharAt(i); - if (ch == '\r' || ch == '\n') break; - if (ch != '\\' || styler.StyleAt(i) != SCE_L_COMMAND) continue; - for (j = 0; j < 15 && i + 1 < static_cast(endPos); ++j, ++i) { - buf[j] = styler.SafeGetCharAt(i + 1); - if (!latexIsLetter(buf[j])) break; - } - buf[j] = '\0'; - if (strcmp(buf, "begin") == 0) { - if (lev < 0) lev = latexFoldSaveToInt(save); - ++save.openBegins[save.structLev]; - needFold = true; - } - else if (strcmp(buf, "end") == 0) { - while (save.structLev > 0 && save.openBegins[save.structLev] == 0) - --save.structLev; - if (lev < 0) lev = latexFoldSaveToInt(save); - if (save.openBegins[save.structLev] > 0) --save.openBegins[save.structLev]; - } - else { - for (j = 0; j < 7; ++j) - if (strcmp(buf, structWords[j]) == 0) break; - if (j >= 7) continue; - save.structLev = j; // level before the command - for (j = save.structLev + 1; j < 8; ++j) { - save.openBegins[save.structLev] += save.openBegins[j]; - save.openBegins[j] = 0; - } - if (lev < 0) lev = latexFoldSaveToInt(save); - ++save.structLev; // level after the command - needFold = true; - } - } - if (lev < 0) lev = latexFoldSaveToInt(save); - if (needFold) lev |= SC_FOLDLEVELHEADERFLAG; - styler.SetLevel(curLine, lev); - setSave(curLine, save); - ++curLine; - startPos = styler.LineStart(curLine); - if (static_cast(startPos) == styler.Length()) { - lev = latexFoldSaveToInt(save); - styler.SetLevel(curLine, lev); - setSave(curLine, save); - truncSaves(curLine); - } - } while (startPos < endPos); - styler.Flush(); -} - -static const char *const emptyWordListDesc[] = { - 0 -}; - -LexerModule lmLatex(SCLEX_LATEX, LexerLaTeX::LexerFactoryLaTeX, "latex", emptyWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLisp.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLisp.cpp deleted file mode 100644 index 8e7586355..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLisp.cpp +++ /dev/null @@ -1,283 +0,0 @@ -// Scintilla source code edit control -/** @file LexLisp.cxx - ** Lexer for Lisp. - ** Written by Alexey Yutkin. - **/ -// Copyright 1998-2001 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -#define SCE_LISP_CHARACTER 29 -#define SCE_LISP_MACRO 30 -#define SCE_LISP_MACRO_DISPATCH 31 - -static inline bool isLispoperator(char ch) { - if (IsASCII(ch) && isalnum(ch)) - return false; - if (ch == '\'' || ch == '`' || ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == '{' || ch == '}') - return true; - return false; -} - -static inline bool isLispwordstart(char ch) { - return IsASCII(ch) && ch != ';' && !isspacechar(ch) && !isLispoperator(ch) && - ch != '\n' && ch != '\r' && ch != '\"'; -} - - -static void classifyWordLisp(Sci_PositionU start, Sci_PositionU end, WordList &keywords, WordList &keywords_kw, Accessor &styler) { - assert(end >= start); - char s[100]; - Sci_PositionU i; - bool digit_flag = true; - for (i = 0; (i < end - start + 1) && (i < 99); i++) { - s[i] = styler[start + i]; - s[i + 1] = '\0'; - if (!isdigit(s[i]) && (s[i] != '.')) digit_flag = false; - } - char chAttr = SCE_LISP_IDENTIFIER; - - if(digit_flag) chAttr = SCE_LISP_NUMBER; - else { - if (keywords.InList(s)) { - chAttr = SCE_LISP_KEYWORD; - } else if (keywords_kw.InList(s)) { - chAttr = SCE_LISP_KEYWORD_KW; - } else if ((s[0] == '*' && s[i-1] == '*') || - (s[0] == '+' && s[i-1] == '+')) { - chAttr = SCE_LISP_SPECIAL; - } - } - styler.ColourTo(end, chAttr); - return; -} - - -static void ColouriseLispDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], - Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &keywords_kw = *keywordlists[1]; - - styler.StartAt(startPos); - - int state = initStyle, radix = -1; - char chNext = styler[startPos]; - Sci_PositionU lengthDoc = startPos + length; - styler.StartSegment(startPos); - for (Sci_PositionU i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - - if (styler.IsLeadByte(ch)) { - chNext = styler.SafeGetCharAt(i + 2); - i += 1; - continue; - } - - if (state == SCE_LISP_DEFAULT) { - if (ch == '#') { - styler.ColourTo(i - 1, state); - radix = -1; - state = SCE_LISP_MACRO_DISPATCH; - } else if (ch == ':' && isLispwordstart(chNext)) { - styler.ColourTo(i - 1, state); - state = SCE_LISP_SYMBOL; - } else if (isLispwordstart(ch)) { - styler.ColourTo(i - 1, state); - state = SCE_LISP_IDENTIFIER; - } - else if (ch == ';') { - styler.ColourTo(i - 1, state); - state = SCE_LISP_COMMENT; - } - else if (isLispoperator(ch) || ch=='\'') { - styler.ColourTo(i - 1, state); - styler.ColourTo(i, SCE_LISP_OPERATOR); - if (ch=='\'' && isLispwordstart(chNext)) { - state = SCE_LISP_SYMBOL; - } - } - else if (ch == '\"') { - styler.ColourTo(i - 1, state); - state = SCE_LISP_STRING; - } - } else if (state == SCE_LISP_IDENTIFIER || state == SCE_LISP_SYMBOL) { - if (!isLispwordstart(ch)) { - if (state == SCE_LISP_IDENTIFIER) { - classifyWordLisp(styler.GetStartSegment(), i - 1, keywords, keywords_kw, styler); - } else { - styler.ColourTo(i - 1, state); - } - state = SCE_LISP_DEFAULT; - } /*else*/ - if (isLispoperator(ch) || ch=='\'') { - styler.ColourTo(i - 1, state); - styler.ColourTo(i, SCE_LISP_OPERATOR); - if (ch=='\'' && isLispwordstart(chNext)) { - state = SCE_LISP_SYMBOL; - } - } - } else if (state == SCE_LISP_MACRO_DISPATCH) { - if (!(IsASCII(ch) && isdigit(ch))) { - if (ch != 'r' && ch != 'R' && (i - styler.GetStartSegment()) > 1) { - state = SCE_LISP_DEFAULT; - } else { - switch (ch) { - case '|': state = SCE_LISP_MULTI_COMMENT; break; - case 'o': - case 'O': radix = 8; state = SCE_LISP_MACRO; break; - case 'x': - case 'X': radix = 16; state = SCE_LISP_MACRO; break; - case 'b': - case 'B': radix = 2; state = SCE_LISP_MACRO; break; - case '\\': state = SCE_LISP_CHARACTER; break; - case ':': - case '-': - case '+': state = SCE_LISP_MACRO; break; - case '\'': if (isLispwordstart(chNext)) { - state = SCE_LISP_SPECIAL; - } else { - styler.ColourTo(i - 1, SCE_LISP_DEFAULT); - styler.ColourTo(i, SCE_LISP_OPERATOR); - state = SCE_LISP_DEFAULT; - } - break; - default: if (isLispoperator(ch)) { - styler.ColourTo(i - 1, SCE_LISP_DEFAULT); - styler.ColourTo(i, SCE_LISP_OPERATOR); - } - state = SCE_LISP_DEFAULT; - break; - } - } - } - } else if (state == SCE_LISP_MACRO) { - if (isLispwordstart(ch) && (radix == -1 || IsADigit(ch, radix))) { - state = SCE_LISP_SPECIAL; - } else { - state = SCE_LISP_DEFAULT; - } - } else if (state == SCE_LISP_CHARACTER) { - if (isLispoperator(ch)) { - styler.ColourTo(i, SCE_LISP_SPECIAL); - state = SCE_LISP_DEFAULT; - } else if (isLispwordstart(ch)) { - styler.ColourTo(i, SCE_LISP_SPECIAL); - state = SCE_LISP_SPECIAL; - } else { - state = SCE_LISP_DEFAULT; - } - } else if (state == SCE_LISP_SPECIAL) { - if (!isLispwordstart(ch) || (radix != -1 && !IsADigit(ch, radix))) { - styler.ColourTo(i - 1, state); - state = SCE_LISP_DEFAULT; - } - if (isLispoperator(ch) || ch=='\'') { - styler.ColourTo(i - 1, state); - styler.ColourTo(i, SCE_LISP_OPERATOR); - if (ch=='\'' && isLispwordstart(chNext)) { - state = SCE_LISP_SYMBOL; - } - } - } else { - if (state == SCE_LISP_COMMENT) { - if (atEOL) { - styler.ColourTo(i - 1, state); - state = SCE_LISP_DEFAULT; - } - } else if (state == SCE_LISP_MULTI_COMMENT) { - if (ch == '|' && chNext == '#') { - i++; - chNext = styler.SafeGetCharAt(i + 1); - styler.ColourTo(i, state); - state = SCE_LISP_DEFAULT; - } - } else if (state == SCE_LISP_STRING) { - if (ch == '\\') { - if (chNext == '\"' || chNext == '\'' || chNext == '\\') { - i++; - chNext = styler.SafeGetCharAt(i + 1); - } - } else if (ch == '\"') { - styler.ColourTo(i, state); - state = SCE_LISP_DEFAULT; - } - } - } - - } - styler.ColourTo(lengthDoc - 1, state); -} - -static void FoldLispDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], - Accessor &styler) { - Sci_PositionU lengthDoc = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - int styleNext = styler.StyleAt(startPos); - for (Sci_PositionU i = startPos; i < lengthDoc; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - if (style == SCE_LISP_OPERATOR) { - if (ch == '(' || ch == '[' || ch == '{') { - levelCurrent++; - } else if (ch == ')' || ch == ']' || ch == '}') { - levelCurrent--; - } - } - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0) - lev |= SC_FOLDLEVELWHITEFLAG; - if ((levelCurrent > levelPrev) && (visibleChars > 0)) - lev |= SC_FOLDLEVELHEADERFLAG; - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - if (!isspacechar(ch)) - visibleChars++; - } - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -static const char * const lispWordListDesc[] = { - "Functions and special operators", - "Keywords", - 0 -}; - -LexerModule lmLISP(SCLEX_LISP, ColouriseLispDoc, "lisp", FoldLispDoc, lispWordListDesc); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLout.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLout.cpp deleted file mode 100644 index abba91ad1..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLout.cpp +++ /dev/null @@ -1,213 +0,0 @@ -// Scintilla source code edit control -/** @file LexLout.cxx - ** Lexer for the Basser Lout (>= version 3) typesetting language - **/ -// Copyright 2003 by Kein-Hong Man -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsAWordChar(const int ch) { - return (ch < 0x80) && (isalpha(ch) || ch == '@' || ch == '_'); -} - -static inline bool IsAnOther(const int ch) { - return (ch < 0x80) && (ch == '{' || ch == '}' || - ch == '!' || ch == '$' || ch == '%' || ch == '&' || ch == '\'' || - ch == '(' || ch == ')' || ch == '*' || ch == '+' || ch == ',' || - ch == '-' || ch == '.' || ch == '/' || ch == ':' || ch == ';' || - ch == '<' || ch == '=' || ch == '>' || ch == '?' || ch == '[' || - ch == ']' || ch == '^' || ch == '`' || ch == '|' || ch == '~'); -} - -static void ColouriseLoutDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) { - - WordList &keywords = *keywordlists[0]; - WordList &keywords2 = *keywordlists[1]; - WordList &keywords3 = *keywordlists[2]; - - int visibleChars = 0; - int firstWordInLine = 0; - int leadingAtSign = 0; - - StyleContext sc(startPos, length, initStyle, styler); - - for (; sc.More(); sc.Forward()) { - - if (sc.atLineStart && (sc.state == SCE_LOUT_STRING)) { - // Prevent SCE_LOUT_STRINGEOL from leaking back to previous line - sc.SetState(SCE_LOUT_STRING); - } - - // Determine if the current state should terminate. - if (sc.state == SCE_LOUT_COMMENT) { - if (sc.atLineEnd) { - sc.SetState(SCE_LOUT_DEFAULT); - visibleChars = 0; - } - } else if (sc.state == SCE_LOUT_NUMBER) { - if (!IsADigit(sc.ch) && sc.ch != '.') { - sc.SetState(SCE_LOUT_DEFAULT); - } - } else if (sc.state == SCE_LOUT_STRING) { - if (sc.ch == '\\') { - if (sc.chNext == '\"' || sc.chNext == '\\') { - sc.Forward(); - } - } else if (sc.ch == '\"') { - sc.ForwardSetState(SCE_LOUT_DEFAULT); - } else if (sc.atLineEnd) { - sc.ChangeState(SCE_LOUT_STRINGEOL); - sc.ForwardSetState(SCE_LOUT_DEFAULT); - visibleChars = 0; - } - } else if (sc.state == SCE_LOUT_IDENTIFIER) { - if (!IsAWordChar(sc.ch)) { - char s[100]; - sc.GetCurrent(s, sizeof(s)); - - if (leadingAtSign) { - if (keywords.InList(s)) { - sc.ChangeState(SCE_LOUT_WORD); - } else { - sc.ChangeState(SCE_LOUT_WORD4); - } - } else if (firstWordInLine && keywords3.InList(s)) { - sc.ChangeState(SCE_LOUT_WORD3); - } - sc.SetState(SCE_LOUT_DEFAULT); - } - } else if (sc.state == SCE_LOUT_OPERATOR) { - if (!IsAnOther(sc.ch)) { - char s[100]; - sc.GetCurrent(s, sizeof(s)); - - if (keywords2.InList(s)) { - sc.ChangeState(SCE_LOUT_WORD2); - } - sc.SetState(SCE_LOUT_DEFAULT); - } - } - - // Determine if a new state should be entered. - if (sc.state == SCE_LOUT_DEFAULT) { - if (sc.ch == '#') { - sc.SetState(SCE_LOUT_COMMENT); - } else if (sc.ch == '\"') { - sc.SetState(SCE_LOUT_STRING); - } else if (IsADigit(sc.ch) || - (sc.ch == '.' && IsADigit(sc.chNext))) { - sc.SetState(SCE_LOUT_NUMBER); - } else if (IsAWordChar(sc.ch)) { - firstWordInLine = (visibleChars == 0); - leadingAtSign = (sc.ch == '@'); - sc.SetState(SCE_LOUT_IDENTIFIER); - } else if (IsAnOther(sc.ch)) { - sc.SetState(SCE_LOUT_OPERATOR); - } - } - - if (sc.atLineEnd) { - // Reset states to begining of colourise so no surprises - // if different sets of lines lexed. - visibleChars = 0; - } - if (!IsASpace(sc.ch)) { - visibleChars++; - } - } - sc.Complete(); -} - -static void FoldLoutDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], - Accessor &styler) { - - Sci_PositionU endPos = startPos + length; - int visibleChars = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; - int levelCurrent = levelPrev; - char chNext = styler[startPos]; - bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; - int styleNext = styler.StyleAt(startPos); - char s[10] = ""; - - for (Sci_PositionU i = startPos; i < endPos; i++) { - char ch = chNext; - chNext = styler.SafeGetCharAt(i + 1); - int style = styleNext; - styleNext = styler.StyleAt(i + 1); - bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); - - if (style == SCE_LOUT_WORD) { - if (ch == '@') { - for (Sci_PositionU j = 0; j < 8; j++) { - if (!IsAWordChar(styler[i + j])) { - break; - } - s[j] = styler[i + j]; - s[j + 1] = '\0'; - } - if (strcmp(s, "@Begin") == 0) { - levelCurrent++; - } else if (strcmp(s, "@End") == 0) { - levelCurrent--; - } - } - } else if (style == SCE_LOUT_OPERATOR) { - if (ch == '{') { - levelCurrent++; - } else if (ch == '}') { - levelCurrent--; - } - } - if (atEOL) { - int lev = levelPrev; - if (visibleChars == 0 && foldCompact) { - lev |= SC_FOLDLEVELWHITEFLAG; - } - if ((levelCurrent > levelPrev) && (visibleChars > 0)) { - lev |= SC_FOLDLEVELHEADERFLAG; - } - if (lev != styler.LevelAt(lineCurrent)) { - styler.SetLevel(lineCurrent, lev); - } - lineCurrent++; - levelPrev = levelCurrent; - visibleChars = 0; - } - if (!isspacechar(ch)) - visibleChars++; - } - // Fill in the real level of the next line, keeping the current flags as they will be filled in later - int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; - styler.SetLevel(lineCurrent, levelPrev | flagsNext); -} - -static const char * const loutWordLists[] = { - "Predefined identifiers", - "Predefined delimiters", - "Predefined keywords", - 0, - }; - -LexerModule lmLout(SCLEX_LOUT, ColouriseLoutDoc, "lout", FoldLoutDoc, loutWordLists); diff --git a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLua.cpp b/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLua.cpp deleted file mode 100644 index 9e6e8a70c..000000000 --- a/3rdparty/unioncode-qscintilla214/scintilla/lexers/LexLua.cpp +++ /dev/null @@ -1,502 +0,0 @@ -// Scintilla source code edit control -/** @file LexLua.cxx - ** Lexer for Lua language. - ** - ** Written by Paul Winwood. - ** Folder by Alexey Yutkin. - ** Modified by Marcos E. Wurzius & Philippe Lhoste - **/ - -#include -#include -#include -#include -#include -#include - -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "StringCopy.h" -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -// Test for [=[ ... ]=] delimiters, returns 0 if it's only a [ or ], -// return 1 for [[ or ]], returns >=2 for [=[ or ]=] and so on. -// The maximum number of '=' characters allowed is 254. -static int LongDelimCheck(StyleContext &sc) { - int sep = 1; - while (sc.GetRelative(sep) == '=' && sep < 0xFF) - sep++; - if (sc.GetRelative(sep) == sc.ch) - return sep; - return 0; -} - -static void ColouriseLuaDoc( - Sci_PositionU startPos, - Sci_Position length, - int initStyle, - WordList *keywordlists[], - Accessor &styler) { - - const WordList &keywords = *keywordlists[0]; - const WordList &keywords2 = *keywordlists[1]; - const WordList &keywords3 = *keywordlists[2]; - const WordList &keywords4 = *keywordlists[3]; - const WordList &keywords5 = *keywordlists[4]; - const WordList &keywords6 = *keywordlists[5]; - const WordList &keywords7 = *keywordlists[6]; - const WordList &keywords8 = *keywordlists[7]; - - // Accepts accented characters - CharacterSet setWordStart(CharacterSet::setAlpha, "_", 0x80, true); - CharacterSet setWord(CharacterSet::setAlphaNum, "_", 0x80, true); - // Not exactly following number definition (several dots are seen as OK, etc.) - // but probably enough in most cases. [pP] is for hex floats. - CharacterSet setNumber(CharacterSet::setDigits, ".-+abcdefpABCDEFP"); - CharacterSet setExponent(CharacterSet::setNone, "eEpP"); - CharacterSet setLuaOperator(CharacterSet::setNone, "*/-+()={}~[];<>,.^%:#&|"); - CharacterSet setEscapeSkip(CharacterSet::setNone, "\"'\\"); - - Sci_Position currentLine = styler.GetLine(startPos); - // Initialize long string [[ ... ]] or block comment --[[ ... ]] nesting level, - // if we are inside such a string. Block comment was introduced in Lua 5.0, - // blocks with separators [=[ ... ]=] in Lua 5.1. - // Continuation of a string (\z whitespace escaping) is controlled by stringWs. - int nestLevel = 0; - int sepCount = 0; - int stringWs = 0; - if (initStyle == SCE_LUA_LITERALSTRING || initStyle == SCE_LUA_COMMENT || - initStyle == SCE_LUA_STRING || initStyle == SCE_LUA_CHARACTER) { - const int lineState = styler.GetLineState(currentLine - 1); - nestLevel = lineState >> 9; - sepCount = lineState & 0xFF; - stringWs = lineState & 0x100; - } - - // results of identifier/keyword matching - Sci_Position idenPos = 0; - Sci_Position idenWordPos = 0; - int idenStyle = SCE_LUA_IDENTIFIER; - bool foundGoto = false; - - // Do not leak onto next line - if (initStyle == SCE_LUA_STRINGEOL || initStyle == SCE_LUA_COMMENTLINE || initStyle == SCE_LUA_PREPROCESSOR) { - initStyle = SCE_LUA_DEFAULT; - } - - StyleContext sc(startPos, length, initStyle, styler); - if (startPos == 0 && sc.ch == '#' && sc.chNext == '!') { - // shbang line: "#!" is a comment only if located at the start of the script - sc.SetState(SCE_LUA_COMMENTLINE); - } - for (; sc.More(); sc.Forward()) { - if (sc.atLineEnd) { - // Update the line state, so it can be seen by next line - currentLine = styler.GetLine(sc.currentPos); - switch (sc.state) { - case SCE_LUA_LITERALSTRING: - case SCE_LUA_COMMENT: - case SCE_LUA_STRING: - case SCE_LUA_CHARACTER: - // Inside a literal string, block comment or string, we set the line state - styler.SetLineState(currentLine, (nestLevel << 9) | stringWs | sepCount); - break; - default: - // Reset the line state - styler.SetLineState(currentLine, 0); - break; - } - } - if (sc.atLineStart && (sc.state == SCE_LUA_STRING)) { - // Prevent SCE_LUA_STRINGEOL from leaking back to previous line - sc.SetState(SCE_LUA_STRING); - } - - // Handle string line continuation - if ((sc.state == SCE_LUA_STRING || sc.state == SCE_LUA_CHARACTER) && - sc.ch == '\\') { - if (sc.chNext == '\n' || sc.chNext == '\r') { - sc.Forward(); - if (sc.ch == '\r' && sc.chNext == '\n') { - sc.Forward(); - } - continue; - } - } - - // Determine if the current state should terminate. - if (sc.state == SCE_LUA_OPERATOR) { - if (sc.ch == ':' && sc.chPrev == ':') { // ::