diff options
Diffstat (limited to 'src/libs')
121 files changed, 30126 insertions, 1 deletions
diff --git a/src/libs/3rdparty/syntax-highlighting/.arcconfig b/src/libs/3rdparty/syntax-highlighting/.arcconfig new file mode 100644 index 0000000000..b9b60c853e --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/.arcconfig @@ -0,0 +1,3 @@ +{ + "phabricator.uri" : "https://phabricator.kde.org/project/profile/152/" +} diff --git a/src/libs/3rdparty/syntax-highlighting/.gitignore b/src/libs/3rdparty/syntax-highlighting/.gitignore new file mode 100644 index 0000000000..02ba11c78a --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/.gitignore @@ -0,0 +1,9 @@ +*.kdev4 +*.orig +*.out +*.rej +*~ +/compile.pl +CMakeLists.txt.user +callgrind.* +heaptrack.* diff --git a/src/libs/3rdparty/syntax-highlighting/.kateconfig b/src/libs/3rdparty/syntax-highlighting/.kateconfig new file mode 100644 index 0000000000..444208643c --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/.kateconfig @@ -0,0 +1 @@ +// kate: space-indent on; indent-width 4; remove-trailing-spaces modified; diff --git a/src/libs/3rdparty/syntax-highlighting/.krazy b/src/libs/3rdparty/syntax-highlighting/.krazy new file mode 100644 index 0000000000..02e434cc0f --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/.krazy @@ -0,0 +1,2 @@ +CHECKSETS kde5 +SKIP /autotests/input/ diff --git a/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt new file mode 100644 index 0000000000..49923fb26e --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt @@ -0,0 +1,134 @@ +cmake_minimum_required(VERSION 3.0) + +set(KF5_VERSION "5.52.0") +project(KSyntaxHighlighting VERSION ${KF5_VERSION}) + +find_package(ECM 5.51.0 REQUIRED NO_MODULE) +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) +if(POLICY CMP0063) + cmake_policy(SET CMP0063 NEW) +endif() + +include(FeatureSummary) +include(GenerateExportHeader) +include(ECMSetupVersion) +include(ECMGenerateHeaders) +include(ECMGeneratePriFile) +include(CMakePackageConfigHelpers) +include(ECMPoQmTools) +include(ECMQtDeclareLoggingCategory) +include(KDEInstallDirs) +include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) +include(KDECMakeSettings) +include(ECMMarkNonGuiExecutable) +include(ECMAddQch) + + +ecm_setup_version(PROJECT + VARIABLE_PREFIX SyntaxHighlighting + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/ksyntaxhighlighting_version.h" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5SyntaxHighlightingConfigVersion.cmake" +) + +# +# Dependencies +# +set(REQUIRED_QT_VERSION 5.8.0) +find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Core Network Test) +option(KSYNTAXHIGHLIGHTING_USE_GUI "Build components depending on Qt5Gui" ON) +if(KSYNTAXHIGHLIGHTING_USE_GUI) + find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Gui) +endif() +find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS Widgets XmlPatterns) +set_package_properties(Qt5 PROPERTIES URL "http://qt-project.org/") +set_package_properties(Qt5Widgets PROPERTIES PURPOSE "Example application.") +set_package_properties(Qt5XmlPatterns PROPERTIES PURPOSE "Compile-time validation of syntax definition files.") + +find_package(Perl REQUIRED) +set_package_properties(Perl PROPERTIES PURPOSE "Auto-generate PHP syntax definition files.") + +# +# allow to install the "differently" licensed syntax xml files instead of putting them in a QRC and link them in +# +option(QRC_SYNTAX "Bundle the syntax definition files inside the library as resources" ON) +add_feature_info(SYNTAX_RESOURCE ${QRC_SYNTAX} "Bundle the syntax definition files inside the library as resources") + +# +# allow to turn of lookup for syntax files and themes via QStandardPaths +# +option(NO_STANDARD_PATHS "Skip lookup of syntax and theme definitions in QStandardPaths locations" OFF) +add_feature_info(FEATURE_NO_STANDARD_PATHS ${NO_STANDARD_PATHS} "Skip lookup of syntax and theme definitions in QStandardPaths locations") + +# +# API documentation +# +option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) +add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") + +# +# Translations +# +if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") + ecm_install_po_files_as_qm(po) +endif() + +# tell the framework if it shall use the syntax files from the resource +if (QRC_SYNTAX) + add_definitions(-DHAS_SYNTAX_RESOURCE) +endif() + +# skip standard paths? +if (NO_STANDARD_PATHS) + add_definitions(-DNO_STANDARD_PATHS) +endif() + +# +# Actually build the stuff +# +include_directories(${CMAKE_CURRENT_BINARY_DIR}) +add_subdirectory(data) +add_subdirectory(src) +if(TARGET Qt5::Gui) + add_subdirectory(examples) +endif() + +# +# CMake package config file generation +# +set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/KF5SyntaxHighlighting") + +if (BUILD_QCH) + ecm_install_qch_export( + TARGETS KF5SyntaxHighlighting_QCH + FILE KF5SyntaxHighlightingQchTargets.cmake + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel + ) + set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5SyntaxHighlightingQchTargets.cmake\")") +endif() + +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/KF5SyntaxHighlightingConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/KF5SyntaxHighlightingConfig.cmake" + INSTALL_DESTINATION "${CMAKECONFIG_INSTALL_DIR}" +) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/KF5SyntaxHighlightingConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/KF5SyntaxHighlightingConfigVersion.cmake" + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel) + +if(TARGET KF5SyntaxHighlighting) + install(EXPORT KF5SyntaxHighlightingTargets + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + FILE KF5SyntaxHighlightingTargets.cmake + NAMESPACE KF5::) +endif() + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ksyntaxhighlighting_version.h" + DESTINATION "${KDE_INSTALL_INCLUDEDIR_KF5}" + COMPONENT Devel) +install(FILES org_kde_ksyntaxhighlighting.categories DESTINATION ${KDE_INSTALL_CONFDIR}) + +feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/src/libs/3rdparty/syntax-highlighting/COPYING b/src/libs/3rdparty/syntax-highlighting/COPYING new file mode 100644 index 0000000000..6b96fea18b --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/COPYING @@ -0,0 +1,20 @@ +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/libs/3rdparty/syntax-highlighting/KF5SyntaxHighlightingConfig.cmake.in b/src/libs/3rdparty/syntax-highlighting/KF5SyntaxHighlightingConfig.cmake.in new file mode 100644 index 0000000000..0fd1778fb8 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/KF5SyntaxHighlightingConfig.cmake.in @@ -0,0 +1,6 @@ +@PACKAGE_INIT@ + +find_package(Qt5 @Qt5Core_VERSION_MAJOR@.@Qt5Core_VERSION_MINOR@ NO_MODULE REQUIRED COMPONENTS Core Gui) + +include("${CMAKE_CURRENT_LIST_DIR}/KF5SyntaxHighlightingTargets.cmake") +@PACKAGE_INCLUDE_QCHTARGETS@ diff --git a/src/libs/3rdparty/syntax-highlighting/QC_README.txt b/src/libs/3rdparty/syntax-highlighting/QC_README.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/QC_README.txt diff --git a/src/libs/3rdparty/syntax-highlighting/README.md b/src/libs/3rdparty/syntax-highlighting/README.md new file mode 100644 index 0000000000..1eedc0af7f --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/README.md @@ -0,0 +1,32 @@ +# Syntax Highlighting + +Syntax highlighting engine for Kate syntax definitions + +## Introduction + +This is a stand-alone implementation of the Kate syntax highlighting engine. +It's meant as a building block for text editors as well as for simple highlighted +text rendering (e.g. as HTML), supporting both integration with a custom editor +as well as a ready-to-use QSyntaxHighlighter sub-class. + +## Syntax Definition Files + +This library uses Kate syntax definition files for the actual highlighting, +the file format is documented [here](https://docs.kde.org/stable5/en/applications/katepart/highlight.html). + +More than 250 syntax definition files are included, additional ones are +picked up from the file system if present, so you can easily extend this +by application-specific syntax definitions for example. + +## Out of scope + +To not turn this into yet another text editor, the following things are considered +out of scope: + +* code folding, beyond providing folding range information +* auto completion +* spell checking +* user interface for configuration +* management of text buffers or documents + +If you need any of this, check out [KTextEditor](https://api.kde.org/frameworks/ktexteditor/html/). diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/autogenerated.pri b/src/libs/3rdparty/syntax-highlighting/autogenerated/autogenerated.pri new file mode 100644 index 0000000000..aee620add9 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/autogenerated.pri @@ -0,0 +1,9 @@ +INCLUDEPATH *= $$PWD/src/lib +INCLUDEPATH *= $$PWD + +SOURCES += \ + $$PWD/src/lib/ksyntaxhighlighting_logging.cpp + +HEADERS += \ + $$PWD/ksyntaxhighlighting_version.h \ + $$PWD/src/lib/ksyntaxhighlighting_logging.h diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/ksyntaxhighlighting_version.h b/src/libs/3rdparty/syntax-highlighting/autogenerated/ksyntaxhighlighting_version.h new file mode 100644 index 0000000000..bd31a4d407 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/ksyntaxhighlighting_version.h @@ -0,0 +1,12 @@ +// This file was generated by ecm_setup_version(): DO NOT EDIT! + +#ifndef SyntaxHighlighting_VERSION_H +#define SyntaxHighlighting_VERSION_H + +#define SyntaxHighlighting_VERSION_STRING "5.52.0" +#define SyntaxHighlighting_VERSION_MAJOR 5 +#define SyntaxHighlighting_VERSION_MINOR 52 +#define SyntaxHighlighting_VERSION_PATCH 0 +#define SyntaxHighlighting_VERSION ((5<<16)|(52<<8)|(0)) + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/AbstractHighlighter b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/AbstractHighlighter new file mode 100644 index 0000000000..b787873771 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/AbstractHighlighter @@ -0,0 +1 @@ +#include "abstracthighlighter.h" diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Definition b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Definition new file mode 100644 index 0000000000..2c3241f841 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Definition @@ -0,0 +1 @@ +#include "definition.h" diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/FoldingRegion b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/FoldingRegion new file mode 100644 index 0000000000..005b829d53 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/FoldingRegion @@ -0,0 +1 @@ +#include "foldingregion.h" diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Format b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Format new file mode 100644 index 0000000000..b0d6a10246 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Format @@ -0,0 +1 @@ +#include "format.h" diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Repository b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Repository new file mode 100644 index 0000000000..189dbc2f69 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Repository @@ -0,0 +1 @@ +#include "repository.h" diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/State b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/State new file mode 100644 index 0000000000..e148d70391 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/State @@ -0,0 +1 @@ +#include "state.h" diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/SyntaxHighlighter b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/SyntaxHighlighter new file mode 100644 index 0000000000..b42982473b --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/SyntaxHighlighter @@ -0,0 +1 @@ +#include "syntaxhighlighter.h" diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Theme b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Theme new file mode 100644 index 0000000000..34a3e98e60 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Theme @@ -0,0 +1 @@ +#include "theme.h" diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/ksyntaxhighlighting_logging.cpp b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/ksyntaxhighlighting_logging.cpp new file mode 100644 index 0000000000..4082ac4aff --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/ksyntaxhighlighting_logging.cpp @@ -0,0 +1,11 @@ +// This file was generated by ecm_qt_declare_logging_category(): DO NOT EDIT! + +#include "ksyntaxhighlighting_logging.h" + + namespace KSyntaxHighlighting { +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) +Q_LOGGING_CATEGORY(Log, "org.kde.ksyntaxhighlighting", QtInfoMsg) +#else +Q_LOGGING_CATEGORY(Log, "org.kde.ksyntaxhighlighting") +#endif +} diff --git a/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/ksyntaxhighlighting_logging.h b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/ksyntaxhighlighting_logging.h new file mode 100644 index 0000000000..c351b2cb92 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/ksyntaxhighlighting_logging.h @@ -0,0 +1,11 @@ +// This file was generated by ecm_qt_declare_logging_category(): DO NOT EDIT! + +#ifndef ECM_QLOGGINGCATEGORY_KSYNTAXHIGHLIGHTING_LOG_KSYNTAXHIGHLIGHTING_LOGGING_H +#define ECM_QLOGGINGCATEGORY_KSYNTAXHIGHLIGHTING_LOG_KSYNTAXHIGHLIGHTING_LOGGING_H + +#include <QLoggingCategory> + namespace KSyntaxHighlighting { +Q_DECLARE_LOGGING_CATEGORY(Log) +} + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/data/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/data/CMakeLists.txt new file mode 100644 index 0000000000..73adbe6d20 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/CMakeLists.txt @@ -0,0 +1,61 @@ +# generate PHP definitions +macro(generate_php_syntax_definition targetFile srcFile) + execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/syntax) + execute_process(COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generators/generate-php.pl + INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/syntax/${srcFile} + OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/syntax/${targetFile}) +endmacro() + +generate_php_syntax_definition(javascript-php.xml javascript.xml) +generate_php_syntax_definition(css-php.xml css.xml) +generate_php_syntax_definition(html-php.xml html.xml) + +# find all definitions +file(GLOB src_defs "${CMAKE_CURRENT_SOURCE_DIR}/syntax/*.xml") +set(defs + ${src_defs} + ${CMAKE_CURRENT_BINARY_DIR}/syntax/html-php.xml + ${CMAKE_CURRENT_BINARY_DIR}/syntax/css-php.xml + ${CMAKE_CURRENT_BINARY_DIR}/syntax/javascript-php.xml +) + +# theme data resource +qt5_add_resources(themes_QRC ${CMAKE_CURRENT_SOURCE_DIR}/themes/theme-data.qrc) + +# do we want syntax files bundled in the library? +if (QRC_SYNTAX) + # generate the resource file + set(qrc_file ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc) + set(qrc_body "") + foreach(def ${defs}) + get_filename_component(def_name ${def} NAME) + string(APPEND qrc_body "<file alias=\"${def_name}\">${def}</file>\n") + endforeach() + set(SYNTAX_DATA_QRC_FILES_STRING ${qrc_body}) + configure_file(syntax-data.qrc.in ${qrc_file} @ONLY) + + # generate the index file + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" + COMMAND katehighlightingindexer "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" "${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd" "${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc" + DEPENDS ${defs} ${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc + ) + + # generate the qrc file manually, to make dependencies on generated files work... + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" + COMMAND ${Qt5Core_RCC_EXECUTABLE} --name syntax_data -o "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" "${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc" + DEPENDS ${defs} ${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax + ) + set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" PROPERTIES SKIP_AUTOMOC ON) + + # object library to make cross-folder dependencies work, themes + syntax files + add_library(SyntaxHighlightingData OBJECT ${themes_QRC} ${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp) +else() + # install the syntax files as normal files into the prefix + install (FILES ${defs} DESTINATION share/org.kde.syntax-highlighting/syntax) + + # object library to make cross-folder dependencies work, only themes + add_library(SyntaxHighlightingData OBJECT ${themes_QRC}) +endif() + +# set PIC to allow use in static and shared libs +set_property(TARGET SyntaxHighlightingData PROPERTY POSITION_INDEPENDENT_CODE 1) diff --git a/src/libs/3rdparty/syntax-highlighting/data/data.pro b/src/libs/3rdparty/syntax-highlighting/data/data.pro new file mode 100644 index 0000000000..1028ea1579 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/data.pro @@ -0,0 +1,11 @@ +TEMPLATE = aux + +include(../../../../../qtcreator.pri) + +STATIC_BASE = $$PWD +STATIC_OUTPUT_BASE = $$IDE_DATA_PATH/generic-highlighter +STATIC_INSTALL_BASE = $$INSTALL_DATA_PATH/generic-highlighter + +STATIC_FILES += $$files($$PWD/syntax/*, true) + +include(../../../../../qtcreatordata.pri) diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/cmake.xml.tpl b/src/libs/3rdparty/syntax-highlighting/data/generators/cmake.xml.tpl new file mode 100644 index 0000000000..33cc7511aa --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/cmake.xml.tpl @@ -0,0 +1,323 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY id_re "[_A-Za-z][\-_0-9A-Za-z]*"> +]> +<!-- + This file is part of KDE's kate project. + + Copyright 2004 Alexander Neundorf (neundorf@kde.org) + Copyright 2005 Dominik Haumann (dhdev@gmx.de) + Copyright 2007,2008,2013,2014 Matthew Woehlke (mw_triad@users.sourceforge.net) + Copyright 2013-2015,2017-2018 Alex Turbov (i.zaufi@gmail.com) + + ********************************************************************** + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library 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 * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the * + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * + * Boston, MA 02110-1301, USA. * + ********************************************************************** + --> + +<language + name="CMake" + version="11" + kateversion="2.4" + section="Other" + extensions="CMakeLists.txt;*.cmake;*.cmake.in" + style="CMake" + mimetype="text/x-cmake" + author="Alex Turbov (i.zaufi@gmail.com)" + license="LGPLv2+" + > + <highlighting> + + <list name="commands"> + {%- for command in commands %} + <item>{{command.name}}</item> + {%- endfor %} + </list> + {% for command in commands -%} + {%- if command.named_args and command.named_args.kw %} + <list name="{{command.name}}_nargs"> + {%- for arg in command.named_args.kw %} + <item>{{arg}}</item> + {%- endfor %} + </list> + {%- endif %} + {%- if command.special_args and command.special_args.kw %} + <list name="{{command.name}}_sargs"> + {%- for arg in command.special_args.kw %} + <item>{{arg}}</item> + {%- endfor %} + </list> + {%- endif %} + {%- endfor %} + + <list name="variables"> + {%- for var in variables.kw %} + <item>{{var}}</item> + {%- endfor %} + </list> + + {%- for kind in properties.kinds %} + <list name="{{ kind|replace('_', '-') }}"> + {%- for prop in properties[kind].kw %} + <item>{{prop}}</item> + {%- endfor %} + </list> + {%- endfor %} + + <list name="generator-expressions"> + {%- for expr in generator_expressions %} + <item>{{ expr }}</item> + {%- endfor %} + </list> + + <contexts> + + <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text"> + <DetectSpaces/> + {% for command in commands -%} + <WordDetect String="{{command.name}}" insensitive="true" attribute="Command" context="{{command.name}}_ctx" /> + {% endfor -%} + <RegExpr attribute="Region Marker" context="RST Documentation" String="^#\[(=*)\[\.rst:" column="0" /> + <RegExpr attribute="Comment" context="Bracketed Comment" String="#\[(=*)\[" /> + <DetectChar attribute="Comment" context="Comment" char="#" /> + <DetectIdentifier attribute="User Function/Macro" context="User Function" /> + <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" /> + <!-- Include keywords matching for language autocompleter work --> + <keyword attribute="Command" context="#stay" String="commands" /> + </context> + + {% for command in commands -%} + {# + <!-- + {{ command|pprint }} + --> + -#} + <context attribute="Normal Text" lineEndContext="#stay" name="{{command.name}}_ctx"> + <DetectChar attribute="Normal Text" context="{{command.name}}_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="{{command.name}}_ctx_op"> + {%- if command.nested_parentheses %} + <DetectChar attribute="Normal Text" context="{{command.name}}_ctx_op_nested" char="(" /> + {%- endif %} + <IncludeRules context="EndCmdPop2" /> + {%- if command.named_args and command.named_args.kw %} + <keyword attribute="Named Args" context="#stay" String="{{command.name}}_nargs" /> + {%- endif %} + {%- if command.special_args and command.special_args.kw %} + <keyword attribute="Special Args" context="#stay" String="{{command.name}}_sargs" /> + {%- endif %} + {%- if command.property_args and command.property_args.kw %} + {%- for kind in command.property_args.kw %} + <keyword attribute="Property" context="#stay" String="{{kind}}" /> + {%- if properties[kind|replace('-', '_')].re %} + <IncludeRules context="Detect More {{kind}}" /> + {%- endif %} + {%- endfor %} + {%- endif %} + {%- if command is not nulary %} + <IncludeRules context="User Function Args" /> + {%- if command.name == 'cmake_policy' %} + <!-- NOTE Handle CMP<NNN> as a special arg of `cmake_policy` command --> + <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9]+\b" /> + {%- endif %} + {%- endif %} + </context> + {%- if command.nested_parentheses %} + <context attribute="Normal Text" lineEndContext="#stay" name="{{command.name}}_ctx_op_nested"> + <IncludeRules context="EndCmdPop" /> + {%- if command.named_args and command.named_args.kw %} + <keyword attribute="Named Args" context="#stay" String="{{command.name}}_nargs" /> + {%- endif %} + {%- if command.special_args and command.special_args.kw %} + <keyword attribute="Special Args" context="#stay" String="{{command.name}}_sargs" /> + {%- endif %} + {%- if command.property_args and command.property_args.kw %} + {%- for kind in command.property_args.kw %} + <keyword attribute="Property" context="#stay" String="{{kind}}" /> + {%- if properties[kind|replace('-', '_')].re %} + <IncludeRules context="Detect More {{kind}}" /> + {%- endif %} + {%- endfor %} + {%- endif %} + <IncludeRules context="User Function Args" /> + </context> + {%- endif %} + {% endfor -%} + + {% for kind in properties.kinds if properties[kind].re -%} + <context attribute="Normal Text" lineEndContext="#stay" name="Detect More {{ kind|replace('_', '-') }}"> + {%- for prop in properties[kind].re %} + <RegExpr attribute="Property" context="#stay" String="{{prop}}" /> + {%- endfor %} + </context>{{ '\n' }} + {% endfor -%} + + <context attribute="Normal Text" lineEndContext="#stay" name="EndCmdPop"> + <DetectChar attribute="Normal Text" context="#pop" char=")" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="EndCmdPop2"> + <DetectChar attribute="Normal Text" context="#pop#pop" char=")" /> + </context> + + <context attribute="User Function/Macro" lineEndContext="#stay" name="User Function"> + <DetectChar attribute="Normal Text" context="User Function Opened" char="(" /> + <IncludeRules context="EndCmdPop2" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="User Function Opened"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Builtin Variables"> + <keyword attribute="Builtin Variable" context="#stay" String="variables" insensitive="false" /> + <IncludeRules context="Detect More Builtin Variables" /> + <RegExpr attribute="Internal Name" context="#stay" String="\b_&id_re;\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables"> + {%- for var in variables.re %} + <RegExpr attribute="Builtin Variable" context="#stay" String="{{var}}" /> + {%- endfor %} + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions"> + <RegExpr attribute="Environment Variable Substitution" context="#stay" String="\$ENV\{\s*[\w-]+\s*\}" /> + <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{" /> + <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" /> + </context> + + <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst"> + <IncludeRules context="Detect Builtin Variables" /> + <DetectIdentifier /> + <DetectChar attribute="Variable Substitution" context="#pop" char="}" /> + <IncludeRules context="Detect Variable Substitutions" /> + </context> + + <context attribute="@Variable Substitution" lineEndContext="#pop" name="@VarSubst"> + <DetectChar attribute="@Variable Substitution" context="VarSubst@" char="@" /> + </context> + + <context attribute="@Variable Substitution" lineEndContext="#pop#pop" name="VarSubst@"> + <IncludeRules context="Detect Builtin Variables" /> + <DetectIdentifier /> + <DetectChar attribute="@Variable Substitution" context="#pop#pop" char="@" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="User Function Args"> + <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="(" /> + <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" /> + <RegExpr attribute="Escapes" context="#stay" String="\\["$n\\]" /> + <DetectChar attribute="Strings" context="String" char=""" /> + <RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" /> + <RegExpr attribute="Comment" context="Bracketed Comment" String="#\[(=*)\[" /> + <DetectChar attribute="Comment" context="Comment" char="#" /> + <IncludeRules context="Detect Builtin Variables" /> + <IncludeRules context="Detect Variable Substitutions" /> + <IncludeRules context="Detect Special Values" /> + <IncludeRules context="Detect Aliased Targets" /> + <IncludeRules context="Detect Generator Expressions" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Special Values"> + <RegExpr attribute="True Special Arg" context="#stay" String="\b(TRUE|ON)\b" /> + <RegExpr attribute="False Special Arg" context="#stay" String="\b(FALSE|OFF|(&id_re;-)?NOTFOUND)\b" /> + <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9][0-9][0-9]\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Aliased Targets"> + <RegExpr attribute="Aliased Targets" context="#stay" String="\b&id_re;::&id_re;(::&id_re;)*\b" /> + </context> + + <context attribute="Comment" lineEndContext="#pop" name="Comment"> + <LineContinue attribute="Comment" context="#pop" /> + <IncludeRules context="##Alerts" /> + <IncludeRules context="##Modelines" /> + </context> + + <context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true"> + <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" /> + <IncludeRules context="##reStructuredText" /> + </context> + + <context attribute="Comment" lineEndContext="#stay" name="Bracketed Comment" dynamic="true"> + <RegExpr attribute="Comment" context="#pop" String=".*\]%1\]" dynamic="true" /> + <IncludeRules context="##Alerts" /> + <IncludeRules context="##Modelines" /> + </context> + + <context attribute="Strings" lineEndContext="#stay" name="String"> + <RegExpr attribute="Strings" context="#pop" String=""(?=[ );]|$)" /> + <RegExpr attribute="Escapes" context="#stay" String="\\["$nrt\\]" /> + <IncludeRules context="Detect Variable Substitutions" /> + <IncludeRules context="Detect Generator Expressions" /> + </context> + + <context attribute="Strings" lineEndContext="#stay" name="Bracketed String" dynamic="true"> + <RegExpr attribute="Strings" context="#pop" String="\]%1\]" dynamic="true" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Generator Expressions"> + <Detect2Chars attribute="Generator Expression" context="Generator Expression" char="$" char1="<" /> + </context> + + <context attribute="Generator Expression" lineEndContext="#stay" name="Generator Expression"> + <IncludeRules context="Detect Generator Expressions" /> + <DetectChar attribute="Comment" context="Comment" char="#" /> + <DetectChar attribute="Generator Expression" context="#pop" char=">" /> + <keyword attribute="Generator Expression Keyword" context="#stay" String="generator-expressions" insensitive="false" /> + <IncludeRules context="Detect Aliased Targets" /> + <IncludeRules context="Detect Variable Substitutions" /> + </context> + + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" /> + <itemData name="Command" defStyleNum="dsKeyword" spellChecking="false" /> + <itemData name="User Function/Macro" defStyleNum="dsFunction" spellChecking="false" /> + <itemData name="Property" defStyleNum="dsOthers" spellChecking="false" /> + <itemData name="Aliased Targets" defStyleNum="dsBaseN" spellChecking="false" /> + <itemData name="Named Args" defStyleNum="dsOthers" spellChecking="false" /> + <itemData name="Special Args" defStyleNum="dsOthers" spellChecking="false" /> + <itemData name="True Special Arg" defStyleNum="dsOthers" color="#30a030" selColor="#30a030" spellChecking="false" /> + <itemData name="False Special Arg" defStyleNum="dsOthers" color="#e05050" selColor="#e05050" spellChecking="false" /> + <itemData name="Strings" defStyleNum="dsString" spellChecking="true" /> + <itemData name="Escapes" defStyleNum="dsChar" spellChecking="false" /> + <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" /> + <itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false" /> + <itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false" /> + <itemData name="Internal Name" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" /> + <itemData name="Environment Variable Substitution" defStyleNum="dsFloat" spellChecking="false" /> + <itemData name="Generator Expression Keyword" defStyleNum="dsKeyword" color="#b84040" selColor="#b84040" spellChecking="false" /> + <itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false" /> + <itemData name="Comment" defStyleNum="dsComment" spellChecking="true" /> + <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" /> + </itemDatas> + + </highlighting> + + <general> + <comments> + <comment name="singleLine" start="#" /> + </comments> + <keywords casesensitive="1" /> + </general> +</language> + +<!-- kate: indent-width 2; tab-width 2; --> diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/cmake.yaml b/src/libs/3rdparty/syntax-highlighting/data/generators/cmake.yaml new file mode 100644 index 0000000000..1174c35215 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/cmake.yaml @@ -0,0 +1,2446 @@ +global-properties: + - ALLOW_DUPLICATE_CUSTOM_TARGETS + - AUTOGEN_SOURCE_GROUP + - AUTOGEN_TARGETS_FOLDER + - AUTOMOC_SOURCE_GROUP + - AUTOMOC_TARGETS_FOLDER + - AUTORCC_SOURCE_GROUP + - CMAKE_C_KNOWN_FEATURES + - CMAKE_CXX_KNOWN_FEATURES + - DEBUG_CONFIGURATIONS + - DISABLED_FEATURES + - ENABLED_FEATURES + - ENABLED_LANGUAGES + - FIND_LIBRARY_USE_LIB32_PATHS + - FIND_LIBRARY_USE_LIB64_PATHS + - FIND_LIBRARY_USE_LIBX32_PATHS + - FIND_LIBRARY_USE_OPENBSD_VERSIONING + - GENERATOR_IS_MULTI_CONFIG + - GLOBAL_DEPENDS_DEBUG_MODE + - GLOBAL_DEPENDS_NO_CYCLES + - IN_TRY_COMPILE + - PACKAGES_FOUND + - PACKAGES_NOT_FOUND + - JOB_POOLS + - PREDEFINED_TARGETS_FOLDER + - ECLIPSE_EXTRA_NATURES + - REPORT_UNDEFINED_PROPERTIES + - RULE_LAUNCH_COMPILE + - RULE_LAUNCH_CUSTOM + - RULE_LAUNCH_LINK + - RULE_MESSAGES + - TARGET_ARCHIVES_MAY_BE_SHARED_LIBS + - TARGET_MESSAGES + - TARGET_SUPPORTS_SHARED_LIBS + - USE_FOLDERS + - XCODE_EMIT_EFFECTIVE_PLATFORM_NAME + # Other well-known global properties + # - FeatureSummary + - FeatureSummary_PKG_TYPES + - FeatureSummary_REQUIRED_PKG_TYPES + - FeatureSummary_DEFAULT_PKG_TYPE + - FeatureSummary_<TYPE>_DESCRIPTION + +directory-properties: + - ADDITIONAL_MAKE_CLEAN_FILES + - BINARY_DIR + - BUILDSYSTEM_TARGETS + - CACHE_VARIABLES + - CLEAN_NO_CUSTOM + - CMAKE_CONFIGURE_DEPENDS + - COMPILE_DEFINITIONS + - COMPILE_OPTIONS + - DEFINITIONS + - EXCLUDE_FROM_ALL + - IMPLICIT_DEPENDS_INCLUDE_TRANSFORM + - INCLUDE_DIRECTORIES + - INCLUDE_REGULAR_EXPRESSION + - INTERPROCEDURAL_OPTIMIZATION_<CONFIG> + - INTERPROCEDURAL_OPTIMIZATION + - LABELS # Since 3.10 + - LINK_DIRECTORIES + - LINK_OPTIONS # Since 3.13 + - LISTFILE_STACK + - MACROS + - PARENT_DIRECTORY + - RULE_LAUNCH_COMPILE + - RULE_LAUNCH_CUSTOM + - RULE_LAUNCH_LINK + - SOURCE_DIR + - SUBDIRECTORIES + - TESTS # Since 3.12 + - TEST_INCLUDE_FILE + - TEST_INCLUDE_FILES # Since 3.10 + - VARIABLES + - VS_GLOBAL_SECTION_POST_<section> + - VS_GLOBAL_SECTION_PRE_<section> + - VS_STARTUP_PROJECT + +# NOTE Copy-n-pasting this list from official docs may contain a redudant item `Example`! Check it! +target-properties: + - ALIASED_TARGET + - ANDROID_ANT_ADDITIONAL_OPTIONS + - ANDROID_API + - ANDROID_API_MIN + - ANDROID_ARCH + - ANDROID_ASSETS_DIRECTORIES + - ANDROID_GUI + - ANDROID_JAR_DEPENDENCIES + - ANDROID_JAR_DIRECTORIES + - ANDROID_JAVA_SOURCE_DIR + - ANDROID_NATIVE_LIB_DEPENDENCIES + - ANDROID_NATIVE_LIB_DIRECTORIES + - ANDROID_PROCESS_MAX + - ANDROID_PROGUARD + - ANDROID_PROGUARD_CONFIG_PATH + - ANDROID_SECURE_PROPS_PATH + - ANDROID_SKIP_ANT_STEP + - ANDROID_STL_TYPE + - ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> + - ARCHIVE_OUTPUT_DIRECTORY + - ARCHIVE_OUTPUT_NAME_<CONFIG> + - ARCHIVE_OUTPUT_NAME + - AUTOGEN_BUILD_DIR + - AUTOGEN_TARGET_DEPENDS + - AUTOMOC_DEPEND_FILTERS + - AUTOMOC_MOC_OPTIONS + - AUTOMOC + - AUTOUIC + - AUTOUIC_OPTIONS + - AUTOUIC_SEARCH_PATHS + - AUTORCC + - AUTORCC_OPTIONS + - BINARY_DIR + - BUILD_RPATH + - BUILD_WITH_INSTALL_NAME_DIR + - BUILD_WITH_INSTALL_RPATH + - BUNDLE_EXTENSION + - BUNDLE + - C_EXTENSIONS + - C_STANDARD + - C_STANDARD_REQUIRED + - COMMON_LANGUAGE_RUNTIME # Sine 3.12 + - COMPATIBLE_INTERFACE_BOOL + - COMPATIBLE_INTERFACE_NUMBER_MAX + - COMPATIBLE_INTERFACE_NUMBER_MIN + - COMPATIBLE_INTERFACE_STRING + - COMPILE_DEFINITIONS + - COMPILE_FEATURES + - COMPILE_FLAGS + - COMPILE_OPTIONS + - COMPILE_PDB_NAME + - COMPILE_PDB_NAME_<CONFIG> + - COMPILE_PDB_OUTPUT_DIRECTORY + - COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG> + - <CONFIG>_OUTPUT_NAME + - <CONFIG>_POSTFIX + - CROSSCOMPILING_EMULATOR + - CUDA_PTX_COMPILATION + - CUDA_SEPARABLE_COMPILATION + - CUDA_RESOLVE_DEVICE_SYMBOLS + - CUDA_EXTENSIONS + - CUDA_STANDARD + - CUDA_STANDARD_REQUIRED + - CXX_EXTENSIONS + - CXX_STANDARD + - CXX_STANDARD_REQUIRED + # - DEBUG_POSTFIX # NOTE: Handled by `<CONFIG>_POSTFIX` + - DEFINE_SYMBOL + - DEPLOYMENT_ADDITIONAL_FILES # Since 3.13 + - DEPLOYMENT_REMOTE_DIRECTORY + - DOTNET_TARGET_FRAMEWORK_VERSION # Since 3.12 + - EchoString + - ENABLE_EXPORTS + - EXCLUDE_FROM_ALL + - EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG> + - EXCLUDE_FROM_DEFAULT_BUILD + - EXPORT_NAME + - EXPORT_PROPERTIES # Since 3.12 + - FOLDER + - Fortran_FORMAT + - Fortran_MODULE_DIRECTORY + - FRAMEWORK + - FRAMEWORK_VERSION + - GENERATOR_FILE_NAME + - GNUtoMS + - HAS_CXX + - IMPLICIT_DEPENDS_INCLUDE_TRANSFORM + - IMPORTED_COMMON_LANGUAGE_RUNTIME # Since 3.12 + - IMPORTED_CONFIGURATIONS + - IMPORTED_GLOBAL # Since 3.11 + - IMPORTED_IMPLIB_<CONFIG> + - IMPORTED_IMPLIB + - IMPORTED_LIBNAME_<CONFIG> + - IMPORTED_LIBNAME + - IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG> + - IMPORTED_LINK_DEPENDENT_LIBRARIES + - IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG> + - IMPORTED_LINK_INTERFACE_LANGUAGES + - IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG> + - IMPORTED_LINK_INTERFACE_LIBRARIES + - IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG> + - IMPORTED_LINK_INTERFACE_MULTIPLICITY + - IMPORTED_LOCATION_<CONFIG> + - IMPORTED_LOCATION + - IMPORTED_NO_SONAME_<CONFIG> + - IMPORTED_NO_SONAME + - IMPORTED_OBJECTS_<CONFIG> + - IMPORTED_OBJECTS + - IMPORTED + - IMPORTED_SONAME_<CONFIG> + - IMPORTED_SONAME + - IMPORT_PREFIX + - IMPORT_SUFFIX + - INCLUDE_DIRECTORIES + - INSTALL_NAME_DIR + - INSTALL_RPATH + - INSTALL_RPATH_USE_LINK_PATH + - INTERFACE_AUTOUIC_OPTIONS + - INTERFACE_COMPILE_DEFINITIONS + - INTERFACE_COMPILE_FEATURES + - INTERFACE_COMPILE_OPTIONS + - INTERFACE_INCLUDE_DIRECTORIES + - INTERFACE_LINK_DEPENDS # Since 3.13 + - INTERFACE_LINK_DIRECTORIES # Since 3.13 + - INTERFACE_LINK_LIBRARIES + - INTERFACE_LINK_OPTIONS # Since 3.13 + - INTERFACE_POSITION_INDEPENDENT_CODE + - INTERFACE_SOURCES + - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES + - INTERPROCEDURAL_OPTIMIZATION_<CONFIG> + - INTERPROCEDURAL_OPTIMIZATION + - IOS_INSTALL_COMBINED + - JOB_POOL_COMPILE + - JOB_POOL_LINK + - LABELS + - <LANG>_CLANG_TIDY + - <LANG>_COMPILER_LAUNCHER + - <LANG>_CPPCHECK # Since 3.10 + - <LANG>_CPPLINT + - <LANG>_INCLUDE_WHAT_YOU_USE + - <LANG>_VISIBILITY_PRESET + - LIBRARY_OUTPUT_DIRECTORY_<CONFIG> + - LIBRARY_OUTPUT_DIRECTORY + - LIBRARY_OUTPUT_NAME_<CONFIG> + - LIBRARY_OUTPUT_NAME + - LINK_DEPENDS_NO_SHARED + - LINK_DEPENDS + - LINK_DIRECTORIES # Since 3.13 + - LINKER_LANGUAGE + - LINK_FLAGS_<CONFIG> + - LINK_FLAGS + - LINK_INTERFACE_LIBRARIES_<CONFIG> + - LINK_INTERFACE_LIBRARIES + - LINK_INTERFACE_MULTIPLICITY_<CONFIG> + - LINK_INTERFACE_MULTIPLICITY + - LINK_LIBRARIES + - LINK_OPTIONS # Since 3.13 + - LINK_SEARCH_END_STATIC + - LINK_SEARCH_START_STATIC + - LINK_WHAT_YOU_USE + - LOCATION_<CONFIG> + - LOCATION + - MACOSX_BUNDLE_INFO_PLIST + - MACOSX_BUNDLE + - MACOSX_FRAMEWORK_INFO_PLIST + - MACOSX_RPATH + - MANUALLY_ADDED_DEPENDENCIES + - MAP_IMPORTED_CONFIG_<CONFIG> + - NAME + - NO_SONAME + - NO_SYSTEM_FROM_IMPORTED + - OSX_ARCHITECTURES_<CONFIG> + - OSX_ARCHITECTURES + - OUTPUT_NAME_<CONFIG> + - OUTPUT_NAME + - PDB_NAME_<CONFIG> + - PDB_NAME + - PDB_OUTPUT_DIRECTORY_<CONFIG> + - PDB_OUTPUT_DIRECTORY + - POSITION_INDEPENDENT_CODE + - PREFIX + - PRIVATE_HEADER + - PROJECT_LABEL + - PUBLIC_HEADER + - RESOURCE + - RULE_LAUNCH_COMPILE + - RULE_LAUNCH_CUSTOM + - RULE_LAUNCH_LINK + - RUNTIME_OUTPUT_DIRECTORY_<CONFIG> + - RUNTIME_OUTPUT_DIRECTORY + - RUNTIME_OUTPUT_NAME_<CONFIG> + - RUNTIME_OUTPUT_NAME + - SKIP_BUILD_RPATH + - SOURCE_DIR + - SOURCES + - SOVERSION + - STATIC_LIBRARY_FLAGS_<CONFIG> + - STATIC_LIBRARY_FLAGS + - STATIC_LIBRARY_OPTIONS # Since 3.13 + - SUFFIX + - TYPE + - VERSION + - VISIBILITY_INLINES_HIDDEN + - VS_CONFIGURATION_TYPE + - VS_DEBUGGER_COMMAND # Since 3.12 + - VS_DEBUGGER_COMMAND_ARGUMENTS # Since 3.13 + - VS_DEBUGGER_ENVIRONMENT # Since 3.13 + - VS_DEBUGGER_WORKING_DIRECTORY + - VS_DESKTOP_EXTENSIONS_VERSION + - VS_DOTNET_REFERENCE_<refname> + - VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname> # Since 3.10 + - VS_DOTNET_REFERENCES + - VS_DOTNET_REFERENCES_COPY_LOCAL + - VS_DOTNET_TARGET_FRAMEWORK_VERSION + - VS_GLOBAL_KEYWORD + - VS_GLOBAL_PROJECT_TYPES + - VS_GLOBAL_ROOTNAMESPACE + - VS_GLOBAL_<variable> + - VS_IOT_EXTENSIONS_VERSION + - VS_IOT_STARTUP_TASK + - VS_KEYWORD + - VS_MOBILE_EXTENSIONS_VERSION + - VS_SCC_AUXPATH + - VS_SCC_LOCALPATH + - VS_SCC_PROJECTNAME + - VS_SCC_PROVIDER + - VS_SDK_REFERENCES + - VS_USER_PROPS + - VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION + - VS_WINRT_COMPONENT + - VS_WINRT_EXTENSIONS + - VS_WINRT_REFERENCES + - WIN32_EXECUTABLE + - WINDOWS_EXPORT_ALL_SYMBOLS + - XCODE_ATTRIBUTE_<an-attribute> + - XCODE_EXPLICIT_FILE_TYPE + - XCODE_PRODUCT_TYPE + - XCODE_SCHEME_ADDRESS_SANITIZER # Since 3.13 + - XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN # Since 3.13 + - XCODE_SCHEME_THREAD_SANITIZER # Since 3.13 + - XCODE_SCHEME_THREAD_SANITIZER_STOP # Since 3.13 + - XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER # Since 3.13 + - XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP # Since 3.13 + - XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER # Since 3.13 + - XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP # Since 3.13 + - XCODE_SCHEME_MALLOC_SCRIBBLE # Since 3.13 + - XCODE_SCHEME_MALLOC_GUARD_EDGES # Since 3.13 + - XCODE_SCHEME_GUARD_MALLOC # Since 3.13 + - XCODE_SCHEME_ZOMBIE_OBJECTS # Since 3.13 + - XCODE_SCHEME_MALLOC_STACK # Since 3.13 + - XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE # Since 3.13 + - XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS # Since 3.13 + - XCODE_SCHEME_EXECUTABLE # Since 3.13 + - XCODE_SCHEME_ARGUMENTS # Since 3.13 + - XCODE_SCHEME_ENVIRONMENT # Since 3.13 + - XCTEST + +test-properties: + - ATTACHED_FILES_ON_FAIL + - ATTACHED_FILES + - COST + - DEPENDS + - DISABLED + - ENVIRONMENT + - FAIL_REGULAR_EXPRESSION + - FIXTURES_CLEANUP + - FIXTURES_REQUIRED + - FIXTURES_SETUP + - LABELS + - MEASUREMENT + - PASS_REGULAR_EXPRESSION + - PROCESSOR_AFFINITY # Since 3.12 + - PROCESSORS + - REQUIRED_FILES + - RESOURCE_LOCK + - RUN_SERIAL + - SKIP_RETURN_CODE + - TIMEOUT + - TIMEOUT_AFTER_MATCH + - WILL_FAIL + - WORKING_DIRECTORY + +source-properties: + - ABSTRACT + - AUTOUIC_OPTIONS + - AUTORCC_OPTIONS + - COMPILE_DEFINITIONS + - COMPILE_FLAGS + - COMPILE_OPTIONS # Since 3.11 + - EXTERNAL_OBJECT + - Fortran_FORMAT + - GENERATED + - HEADER_FILE_ONLY + - INCLUDE_DIRECTORIES # Since 3.11 + - KEEP_EXTENSION + - LABELS + - LANGUAGE + - LOCATION + - MACOSX_PACKAGE_LOCATION + - OBJECT_DEPENDS + - OBJECT_OUTPUTS + - SKIP_AUTOGEN + - SKIP_AUTOMOC + - SKIP_AUTORCC + - SKIP_AUTOUIC + - SYMBOLIC + - VS_COPY_TO_OUT_DIR + - VS_CSHARP_<tagname> + - VS_DEPLOYMENT_CONTENT + - VS_DEPLOYMENT_LOCATION + - VS_INCLUDE_IN_VSIX + - VS_RESOURCE_GENERATOR + - VS_SHADER_DISABLE_OPTIMIZATIONS # Since 3.11 + - VS_SHADER_ENABLE_DEBUG # Since 3.11 + - VS_SHADER_ENTRYPOINT + - VS_SHADER_FLAGS + - VS_SHADER_MODEL + - VS_SHADER_OBJECT_FILE_NAME # Since 3.12 + - VS_SHADER_OUTPUT_HEADER_FILE # Since 3.10 + - VS_SHADER_TYPE + - VS_SHADER_VARIABLE_NAME # Since 3.10 + - VS_TOOL_OVERRIDE + - VS_XAML_TYPE + - WRAP_EXCLUDE + - XCODE_EXPLICIT_FILE_TYPE + - XCODE_FILE_ATTRIBUTES + - XCODE_LAST_KNOWN_FILE_TYPE + +cache-properties: + - ADVANCED + - HELPSTRING + - MODIFIED + - STRINGS + - TYPE + - VALUE + +install-properties: + - CPACK_DESKTOP_SHORTCUTS + - CPACK_NEVER_OVERWRITE + - CPACK_PERMANENT + - CPACK_START_MENU_SHORTCUTS + - CPACK_STARTUP_SHORTCUTS + - CPACK_WIX_ACL + +generator-expressions: + - 0 + - 1 + - AND + - ANGLE-R + - BOOL + - BUILD_INTERFACE + - COMMA + - COMPILE_FEATURES + - COMPILE_LANGUAGE + - CONFIG + - CXX_COMPILER_ID + - CXX_COMPILER_VERSION + - C_COMPILER_ID + - C_COMPILER_VERSION + - EQUAL + - GENEX_EVAL # Since 3.12 + - IF + - INSTALL_INTERFACE + - INSTALL_PREFIX + - IN_LIST # Since 3.12 + - JOIN + - LINK_ONLY + - LOWER_CASE + - MAKE_C_IDENTIFIER + - NOT + - OR + - PLATFORM_ID + - SEMICOLON + - SHELL_PATH + - STREQUAL + - TARGET_BUNDLE_CONTENT_DIR + - TARGET_BUNDLE_DIR + - TARGET_EXISTS # Since 3.12 + - TARGET_FILE + - TARGET_FILE_DIR + - TARGET_FILE_NAME + - TARGET_GENEX_EVAL # Since 3.12 + - TARGET_LINKER_FILE + - TARGET_LINKER_FILE_DIR + - TARGET_LINKER_FILE_NAME + - TARGET_NAME + - TARGET_NAME_IF_EXISTS # Since 3.12 + - TARGET_OBJECTS + - TARGET_PDB_FILE + - TARGET_PDB_FILE_DIR + - TARGET_PDB_FILE_NAME + - TARGET_POLICY + - TARGET_PROPERTY + - TARGET_SONAME_FILE + - TARGET_SONAME_FILE_DIR + - TARGET_SONAME_FILE_NAME + - UPPER_CASE + - VERSION_EQUAL + - VERSION_GREATER + - VERSION_GREATER_EQUAL + - VERSION_LESS + - VERSION_LESS_EQUAL + +variables: + # Variables that Provide Information + - CMAKE_AR + - CMAKE_ARGC + - CMAKE_ARGV0 + - CMAKE_BINARY_DIR + - CMAKE_BUILD_TOOL + - CMAKE_CACHEFILE_DIR + - CMAKE_CACHE_MAJOR_VERSION + - CMAKE_CACHE_MINOR_VERSION + - CMAKE_CACHE_PATCH_VERSION + - CMAKE_CFG_INTDIR + - CMAKE_COMMAND + - CMAKE_CROSSCOMPILING + - CMAKE_CROSSCOMPILING_EMULATOR + - CMAKE_CTEST_COMMAND + - CMAKE_CURRENT_BINARY_DIR + - CMAKE_CURRENT_LIST_DIR + - CMAKE_CURRENT_LIST_FILE + - CMAKE_CURRENT_LIST_LINE + - CMAKE_CURRENT_SOURCE_DIR + - CMAKE_DIRECTORY_LABELS # Since 3.10 + - CMAKE_DL_LIBS + - CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION # Since 3.12 + - CMAKE_EDIT_COMMAND + - CMAKE_EXECUTABLE_SUFFIX + - CMAKE_EXTRA_GENERATOR + - CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES + - CMAKE_FIND_PACKAGE_NAME + - CMAKE_FIND_PACKAGE_SORT_DIRECTION + - CMAKE_FIND_PACKAGE_SORT_ORDER + - CMAKE_GENERATOR + - CMAKE_GENERATOR_INSTANCE # Since 3.11 + - CMAKE_GENERATOR_PLATFORM + - CMAKE_GENERATOR_TOOLSET + - CMAKE_HOME_DIRECTORY + - CMAKE_IMPORT_LIBRARY_PREFIX + - CMAKE_IMPORT_LIBRARY_SUFFIX + - CMAKE_JOB_POOL_COMPILE + - CMAKE_JOB_POOL_LINK + - CMAKE_JOB_POOLS # Since 3.11 + - CMAKE_<LANG>_COMPILER_AR + - CMAKE_<LANG>_COMPILER_RANLIB + - CMAKE_LINK_LIBRARY_SUFFIX + - CMAKE_LINK_SEARCH_END_STATIC + - CMAKE_LINK_SEARCH_START_STATIC + - CMAKE_MAJOR_VERSION + - CMAKE_MAKE_PROGRAM + - CMAKE_MATCH_COUNT + - CMAKE_MATCH_<n> + - CMAKE_MINIMUM_REQUIRED_VERSION + - CMAKE_MINOR_VERSION + - CMAKE_NETRC # Since 3.11 + - CMAKE_NETRC_FILE # Since 3.11 + - CMAKE_PARENT_LIST_FILE + - CMAKE_PATCH_VERSION + - CMAKE_PROJECT_DESCRIPTION + - CMAKE_PROJECT_HOMEPAGE_URL # Since 3.12 + - CMAKE_PROJECT_NAME + - CMAKE_PROJECT_VERSION # Since 3.12 + - CMAKE_PROJECT_VERSION_MAJOR # Since 3.12 + - CMAKE_PROJECT_VERSION_MINOR # Since 3.12 + - CMAKE_PROJECT_VERSION_PATCH # Since 3.12 + - CMAKE_PROJECT_VERSION_TWEAK # Since 3.12 + - CMAKE_RANLIB + - CMAKE_ROOT + - CMAKE_SCRIPT_MODE_FILE + - CMAKE_SHARED_LIBRARY_PREFIX + - CMAKE_SHARED_LIBRARY_SUFFIX + - CMAKE_SHARED_MODULE_PREFIX + - CMAKE_SHARED_MODULE_SUFFIX + - CMAKE_SIZEOF_VOID_P + - CMAKE_SKIP_INSTALL_RULES + - CMAKE_SKIP_RPATH + - CMAKE_SOURCE_DIR + - CMAKE_STATIC_LIBRARY_PREFIX + - CMAKE_STATIC_LIBRARY_SUFFIX + - CMAKE_TOOLCHAIN_FILE + - CMAKE_TWEAK_VERSION + - CMAKE_VERBOSE_MAKEFILE + - CMAKE_VERSION + - CMAKE_VS_DEVENV_COMMAND + - CMAKE_VS_INTEL_Fortran_PROJECT_VERSION + - CMAKE_VS_MSBUILD_COMMAND + - CMAKE_VS_NsightTegra_VERSION + - CMAKE_VS_PLATFORM_NAME + - CMAKE_VS_PLATFORM_TOOLSET + - CMAKE_VS_PLATFORM_TOOLSET_CUDA + - CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE + - CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION + - CMAKE_XCODE_GENERATE_SCHEME + - CMAKE_XCODE_PLATFORM_TOOLSET + - <PROJECT-NAME>_BINARY_DIR + - <PROJECT-NAME>_SOURCE_DIR + - <PROJECT-NAME>_VERSION + - <PROJECT-NAME>_VERSION_MAJOR + - <PROJECT-NAME>_VERSION_MINOR + - <PROJECT-NAME>_VERSION_PATCH + - <PROJECT-NAME>_VERSION_TWEAK + - PROJECT_BINARY_DIR + - PROJECT_DESCRIPTION + - PROJECT_HOMEPAGE_URL # Since 3.12 + - PROJECT_NAME + - PROJECT_SOURCE_DIR + - PROJECT_VERSION + - PROJECT_VERSION_MAJOR + - PROJECT_VERSION_MINOR + - PROJECT_VERSION_PATCH + - PROJECT_VERSION_TWEAK + # Variables that Change Behavior + - BUILD_SHARED_LIBS + - CMAKE_ABSOLUTE_DESTINATION_FILES + - CMAKE_APPBUNDLE_PATH + - CMAKE_AUTOMOC_RELAXED_MODE + - CMAKE_BACKWARDS_COMPATIBILITY + - CMAKE_BUILD_TYPE + - CMAKE_CODEBLOCKS_COMPILER_ID # Since 3.11 + - CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES # Since 3.10 + - CMAKE_CODELITE_USE_TARGETS + - CMAKE_COLOR_MAKEFILE + - CMAKE_CONFIGURATION_TYPES + - CMAKE_DEBUG_TARGET_PROPERTIES + - CMAKE_DEPENDS_IN_PROJECT_ONLY + - CMAKE_DISABLE_FIND_PACKAGE_<PackageName> + - CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES + - CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT + - CMAKE_ECLIPSE_MAKE_ARGUMENTS + - CMAKE_ECLIPSE_VERSION + - CMAKE_ERROR_DEPRECATED + - CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION + - CMAKE_EXPORT_COMPILE_COMMANDS + - CMAKE_EXPORT_NO_PACKAGE_REGISTRY + - CMAKE_FIND_APPBUNDLE + - CMAKE_FIND_FRAMEWORK + - CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX + - CMAKE_FIND_LIBRARY_PREFIXES + - CMAKE_FIND_LIBRARY_SUFFIXES + - CMAKE_FIND_NO_INSTALL_PREFIX + - CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY + - CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY + - CMAKE_FIND_PACKAGE_WARN_NO_MODULE + - CMAKE_FIND_ROOT_PATH + - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE + - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY + - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE + - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM + - CMAKE_FRAMEWORK_PATH + - CMAKE_IGNORE_PATH + - CMAKE_INCLUDE_DIRECTORIES_BEFORE + - CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE + - CMAKE_INCLUDE_PATH + - CMAKE_INSTALL_DEFAULT_COMPONENT_NAME + - CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS # Since 3.11 + - CMAKE_INSTALL_MESSAGE + - CMAKE_INSTALL_PREFIX + - CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT + - CMAKE_LIBRARY_PATH + - CMAKE_LINK_DIRECTORIES_BEFORE # Since 3.13 + - CMAKE_MFC_FLAG + - CMAKE_MODULE_PATH + - CMAKE_NOT_USING_CONFIG_FLAGS + - CMAKE_POLICY_DEFAULT_CMP<NNNN> + - CMAKE_POLICY_WARNING_CMP<NNNN> + - CMAKE_PREFIX_PATH + - CMAKE_PROGRAM_PATH + - CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE + - CMAKE_SKIP_INSTALL_ALL_DEPENDENCY + - CMAKE_STAGING_PREFIX + - CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS + - CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE + - CMAKE_SUPPRESS_REGENERATION # Since 3.12 + - CMAKE_SYSROOT + - CMAKE_SYSROOT_COMPILE + - CMAKE_SYSROOT_LINK + - CMAKE_SYSTEM_APPBUNDLE_PATH + - CMAKE_SYSTEM_FRAMEWORK_PATH + - CMAKE_SYSTEM_IGNORE_PATH + - CMAKE_SYSTEM_INCLUDE_PATH + - CMAKE_SYSTEM_LIBRARY_PATH + - CMAKE_SYSTEM_PREFIX_PATH + - CMAKE_SYSTEM_PROGRAM_PATH + - CMAKE_USER_MAKE_RULES_OVERRIDE + - CMAKE_WARN_DEPRECATED + - CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION + - CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY # Since 3.13 + - CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER # Since 3.13 + - CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN # Since 3.13 + - CMAKE_XCODE_SCHEME_THREAD_SANITIZER # Since 3.13 + - CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP # Since 3.13 + - CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER # Since 3.13 + - CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP # Since 3.13 + - CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER # Since 3.13 + - CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP # Since 3.13 + - CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE # Since 3.13 + - CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES # Since 3.13 + - CMAKE_XCODE_SCHEME_GUARD_MALLOC # Since 3.13 + - CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS # Since 3.13 + - CMAKE_XCODE_SCHEME_MALLOC_STACK # Since 3.13 + - CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE # Since 3.13 + - CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS # Since 3.13 + - CMAKE_SUPPRESS_DEVELOPER_WARNINGS # Undocumented yet (CMake <= 3.10) + - CMAKE_SUPPRESS_DEVELOPER_ERRORS # Undocumented yet (CMake <= 3.10) + # Variables that Describe the System + - ANDROID + - APPLE + - BORLAND + - CMAKE_CL_64 + - CMAKE_COMPILER_2005 + - CMAKE_HOST_APPLE + - CMAKE_HOST_SOLARIS + - CMAKE_HOST_SYSTEM + - CMAKE_HOST_SYSTEM_NAME + - CMAKE_HOST_SYSTEM_PROCESSOR + - CMAKE_HOST_SYSTEM_VERSION + - CMAKE_HOST_UNIX + - CMAKE_HOST_WIN32 + - CMAKE_LIBRARY_ARCHITECTURE + - CMAKE_LIBRARY_ARCHITECTURE_REGEX + - CMAKE_OBJECT_PATH_MAX + - CMAKE_SYSTEM + - CMAKE_SYSTEM_NAME + - CMAKE_SYSTEM_PROCESSOR + - CMAKE_SYSTEM_VERSION + - CYGWIN + # NOTE `ENV` not a variable in fact! + # - ENV + - GHS-MULTI + - MINGW + - MSVC + - MSVC10 + - MSVC11 + - MSVC12 + - MSVC14 + - MSVC60 + - MSVC70 + - MSVC71 + - MSVC80 + - MSVC90 + - MSVC_IDE + - MSVC_TOOLSET_VERSION # Since 3.12 + - MSVC_VERSION + - UNIX + - WIN32 + - WINCE + - WINDOWS_PHONE + - WINDOWS_STORE + - XCODE + - XCODE_VERSION + # Variables that Control the Build + - CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS + - CMAKE_ANDROID_API + - CMAKE_ANDROID_API_MIN + - CMAKE_ANDROID_ARCH + - CMAKE_ANDROID_ARCH_ABI + - CMAKE_ANDROID_ARM_MODE + - CMAKE_ANDROID_ARM_NEON + - CMAKE_ANDROID_ASSETS_DIRECTORIES + - CMAKE_ANDROID_GUI + - CMAKE_ANDROID_JAR_DEPENDENCIES + - CMAKE_ANDROID_JAR_DIRECTORIES + - CMAKE_ANDROID_JAVA_SOURCE_DIR + - CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES + - CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES + - CMAKE_ANDROID_NDK + - CMAKE_ANDROID_NDK_DEPRECATED_HEADERS + - CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG + - CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION + - CMAKE_ANDROID_PROCESS_MAX + - CMAKE_ANDROID_PROGUARD + - CMAKE_ANDROID_PROGUARD_CONFIG_PATH + - CMAKE_ANDROID_SECURE_PROPS_PATH + - CMAKE_ANDROID_SKIP_ANT_STEP + - CMAKE_ANDROID_STANDALONE_TOOLCHAIN + - CMAKE_ANDROID_STL_TYPE + - CMAKE_ARCHIVE_OUTPUT_DIRECTORY + - CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> + - CMAKE_AUTOGEN_PARALLEL + - CMAKE_AUTOGEN_VERBOSE # Since 3.13 + - CMAKE_AUTOMOC + - CMAKE_AUTOMOC_DEPEND_FILTERS + - CMAKE_AUTOMOC_MOC_OPTIONS + - CMAKE_AUTORCC + - CMAKE_AUTORCC_OPTIONS + - CMAKE_AUTOUIC + - CMAKE_AUTOUIC_OPTIONS + - CMAKE_AUTOUIC_SEARCH_PATHS + - CMAKE_BUILD_RPATH + - CMAKE_BUILD_WITH_INSTALL_NAME_DIR + - CMAKE_BUILD_WITH_INSTALL_RPATH + - CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY + - CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG> + - CMAKE_<CONFIG>_POSTFIX + - CMAKE_CUDA_SEPARABLE_COMPILATION # Since 3.11 + - CMAKE_DEBUG_POSTFIX + - CMAKE_ENABLE_EXPORTS + - CMAKE_EXE_LINKER_FLAGS + - CMAKE_EXE_LINKER_FLAGS_<CONFIG> + - CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT + - CMAKE_EXE_LINKER_FLAGS_INIT + - CMAKE_FOLDER # Since 3.12 + - CMAKE_Fortran_FORMAT + - CMAKE_Fortran_MODULE_DIRECTORY + - CMAKE_GNUtoMS + - CMAKE_INCLUDE_CURRENT_DIR + - CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE + - CMAKE_INSTALL_NAME_DIR + - CMAKE_INSTALL_RPATH + - CMAKE_INSTALL_RPATH_USE_LINK_PATH + - CMAKE_INTERPROCEDURAL_OPTIMIZATION + - CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG> + - CMAKE_IOS_INSTALL_COMBINED + - CMAKE_<LANG>_CLANG_TIDY + - CMAKE_<LANG>_COMPILER_LAUNCHER + - CMAKE_<LANG>_CPPCHECK # Since 3.10 + - CMAKE_<LANG>_CPPLINT + - CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE + - CMAKE_<LANG>_VISIBILITY_PRESET + - CMAKE_LIBRARY_OUTPUT_DIRECTORY + - CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG> + - CMAKE_LIBRARY_PATH_FLAG + - CMAKE_LINK_DEF_FILE_FLAG + - CMAKE_LINK_DEPENDS_NO_SHARED + - CMAKE_LINK_INTERFACE_LIBRARIES + - CMAKE_LINK_LIBRARY_FILE_FLAG + - CMAKE_LINK_LIBRARY_FLAG + - CMAKE_LINK_WHAT_YOU_USE + - CMAKE_MACOSX_BUNDLE + - CMAKE_MACOSX_RPATH + - CMAKE_MAP_IMPORTED_CONFIG_<CONFIG> + - CMAKE_MODULE_LINKER_FLAGS + - CMAKE_MODULE_LINKER_FLAGS_<CONFIG> + - CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT + - CMAKE_MODULE_LINKER_FLAGS_INIT + - CMAKE_NINJA_OUTPUT_PATH_PREFIX + - CMAKE_NO_BUILTIN_CHRPATH + - CMAKE_NO_SYSTEM_FROM_IMPORTED + - CMAKE_OSX_ARCHITECTURES + - CMAKE_OSX_DEPLOYMENT_TARGET + - CMAKE_OSX_SYSROOT + - CMAKE_PDB_OUTPUT_DIRECTORY + - CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG> + - CMAKE_POSITION_INDEPENDENT_CODE + - CMAKE_RUNTIME_OUTPUT_DIRECTORY + - CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG> + - CMAKE_SHARED_LINKER_FLAGS + - CMAKE_SHARED_LINKER_FLAGS_<CONFIG> + - CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT + - CMAKE_SHARED_LINKER_FLAGS_INIT + - CMAKE_SKIP_BUILD_RPATH + - CMAKE_SKIP_INSTALL_RPATH + - CMAKE_STATIC_LINKER_FLAGS + - CMAKE_STATIC_LINKER_FLAGS_<CONFIG> + - CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT + - CMAKE_STATIC_LINKER_FLAGS_INIT + - CMAKE_TRY_COMPILE_CONFIGURATION + - CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + - CMAKE_TRY_COMPILE_TARGET_TYPE + - CMAKE_USE_RELATIVE_PATHS + - CMAKE_VISIBILITY_INLINES_HIDDEN + - CMAKE_VS_GLOBALS # Since 3.13 + - CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD + - CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD + - CMAKE_VS_SDK_EXCLUDE_DIRECTORIES # Since 3.12 + - CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES # Since 3.12 + - CMAKE_VS_SDK_INCLUDE_DIRECTORIES # Since 3.12 + - CMAKE_VS_SDK_LIBRARY_DIRECTORIES # Since 3.12 + - CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES # Since 3.12 + - CMAKE_VS_SDK_REFERENCE_DIRECTORIES # Since 3.12 + - CMAKE_VS_SDK_SOURCE_DIRECTORIES # Since 3.12 + - CMAKE_WIN32_EXECUTABLE + - CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS + - CMAKE_XCODE_ATTRIBUTE_<an-attribute> + - EXECUTABLE_OUTPUT_PATH + - LIBRARY_OUTPUT_PATH + # Variables for Languages + - CMAKE_COMPILER_IS_GNUCC + - CMAKE_COMPILER_IS_GNUCXX + - CMAKE_COMPILER_IS_GNUG77 + - CMAKE_CUDA_EXTENSIONS + - CMAKE_CUDA_STANDARD + - CMAKE_CUDA_STANDARD_REQUIRED + - CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES + - CMAKE_CXX_COMPILE_FEATURES + - CMAKE_CXX_EXTENSIONS + - CMAKE_CXX_STANDARD + - CMAKE_CXX_STANDARD_REQUIRED + - CMAKE_C_COMPILE_FEATURES + - CMAKE_C_EXTENSIONS + - CMAKE_C_STANDARD + - CMAKE_C_STANDARD_REQUIRED + - CMAKE_Fortran_MODDIR_DEFAULT + - CMAKE_Fortran_MODDIR_FLAG + - CMAKE_Fortran_MODOUT_FLAG + - CMAKE_INTERNAL_PLATFORM_ABI + - CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE + - CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX + - CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX + - CMAKE_<LANG>_ARCHIVE_APPEND + - CMAKE_<LANG>_ARCHIVE_CREATE + - CMAKE_<LANG>_ARCHIVE_FINISH + - CMAKE_<LANG>_COMPILER + - CMAKE_<LANG>_COMPILER_ABI + - CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN + - CMAKE_<LANG>_COMPILER_ID + - CMAKE_<LANG>_COMPILER_LOADED + - CMAKE_<LANG>_COMPILER_TARGET + - CMAKE_<LANG>_COMPILER_VERSION + - CMAKE_<LANG>_COMPILE_OBJECT + - CMAKE_<LANG>_CREATE_SHARED_LIBRARY + - CMAKE_<LANG>_CREATE_SHARED_MODULE + - CMAKE_<LANG>_CREATE_STATIC_LIBRARY + - CMAKE_<LANG>_FLAGS + - CMAKE_<LANG>_FLAGS_DEBUG + - CMAKE_<LANG>_FLAGS_DEBUG_INIT + - CMAKE_<LANG>_FLAGS_INIT + - CMAKE_<LANG>_FLAGS_MINSIZEREL + - CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT + - CMAKE_<LANG>_FLAGS_RELEASE + - CMAKE_<LANG>_FLAGS_RELEASE_INIT + - CMAKE_<LANG>_FLAGS_RELWITHDEBINFO + - CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT + - CMAKE_<LANG>_GHS_KERNEL_FLAGS_DEBUG + - CMAKE_<LANG>_GHS_KERNEL_FLAGS_MINSIZEREL + - CMAKE_<LANG>_GHS_KERNEL_FLAGS_RELEASE + - CMAKE_<LANG>_GHS_KERNEL_FLAGS_RELWITHDEBINFO + - CMAKE_<LANG>_IGNORE_EXTENSIONS + - CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES + - CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES + - CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES + - CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES + - CMAKE_<LANG>_LIBRARY_ARCHITECTURE + - CMAKE_<LANG>_LINKER_PREFERENCE + - CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES + - CMAKE_<LANG>_LINKER_WRAPPER_FLAG # Since 3.13 + - CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP # Since 3.13 + - CMAKE_<LANG>_LINK_EXECUTABLE + - CMAKE_<LANG>_OUTPUT_EXTENSION + - CMAKE_<LANG>_PLATFORM_ID + - CMAKE_<LANG>_SIMULATE_ID + - CMAKE_<LANG>_SIMULATE_VERSION + - CMAKE_<LANG>_SIZEOF_DATA_PTR + - CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS + - CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES + - CMAKE_<LANG>_STANDARD_LIBRARIES + - CMAKE_Swift_LANGUAGE_VERSION + - CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG> + # Variables for CTest + - CTEST_BINARY_DIRECTORY + - CTEST_BUILD_COMMAND + - CTEST_BUILD_NAME + - CTEST_BZR_COMMAND + - CTEST_BZR_UPDATE_OPTIONS + - CTEST_CHANGE_ID + - CTEST_CHECKOUT_COMMAND + - CTEST_CONFIGURATION_TYPE + - CTEST_CONFIGURE_COMMAND + - CTEST_COVERAGE_COMMAND + - CTEST_COVERAGE_EXTRA_FLAGS + - CTEST_CURL_OPTIONS + - CTEST_CUSTOM_COVERAGE_EXCLUDE + - CTEST_CUSTOM_ERROR_EXCEPTION + - CTEST_CUSTOM_ERROR_MATCH + - CTEST_CUSTOM_ERROR_POST_CONTEXT + - CTEST_CUSTOM_ERROR_PRE_CONTEXT + - CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE + - CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS + - CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS + - CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE + - CTEST_CUSTOM_MEMCHECK_IGNORE + - CTEST_CUSTOM_POST_MEMCHECK + - CTEST_CUSTOM_POST_TEST + - CTEST_CUSTOM_PRE_MEMCHECK + - CTEST_CUSTOM_PRE_TEST + - CTEST_CUSTOM_TEST_IGNORE + - CTEST_CUSTOM_WARNING_EXCEPTION + - CTEST_CUSTOM_WARNING_MATCH + - CTEST_CVS_CHECKOUT + - CTEST_CVS_COMMAND + - CTEST_CVS_UPDATE_OPTIONS + - CTEST_DROP_LOCATION + - CTEST_DROP_METHOD + - CTEST_DROP_SITE + - CTEST_DROP_SITE_CDASH + - CTEST_DROP_SITE_PASSWORD + - CTEST_DROP_SITE_USER + - CTEST_EXTRA_COVERAGE_GLOB + - CTEST_GIT_COMMAND + - CTEST_GIT_INIT_SUBMODULES + - CTEST_GIT_UPDATE_CUSTOM + - CTEST_GIT_UPDATE_OPTIONS + - CTEST_HG_COMMAND + - CTEST_HG_UPDATE_OPTIONS + - CTEST_LABELS_FOR_SUBPROJECTS # Since 3.10 + - CTEST_MEMORYCHECK_COMMAND + - CTEST_MEMORYCHECK_COMMAND_OPTIONS + - CTEST_MEMORYCHECK_SANITIZER_OPTIONS + - CTEST_MEMORYCHECK_SUPPRESSIONS_FILE + - CTEST_MEMORYCHECK_TYPE + - CTEST_NIGHTLY_START_TIME + - CTEST_P4_CLIENT + - CTEST_P4_COMMAND + - CTEST_P4_OPTIONS + - CTEST_P4_UPDATE_OPTIONS + - CTEST_SCP_COMMAND + - CTEST_SITE + - CTEST_SOURCE_DIRECTORY + - CTEST_SVN_COMMAND + - CTEST_SVN_OPTIONS + - CTEST_SVN_UPDATE_OPTIONS + - CTEST_TEST_LOAD + - CTEST_TEST_TIMEOUT + - CTEST_TRIGGER_SITE + - CTEST_UPDATE_COMMAND + - CTEST_UPDATE_OPTIONS + - CTEST_UPDATE_VERSION_ONLY + - CTEST_USE_LAUNCHERS + # Variables for CPack + - CPACK_ABSOLUTE_DESTINATION_FILES + - CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY + - CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION + - CPACK_INCLUDE_TOPLEVEL_DIRECTORY + - CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS # Since 3.11 + - CPACK_INSTALL_SCRIPT + - CPACK_PACKAGING_INSTALL_PREFIX + - CPACK_SET_DESTDIR + - CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION + # Variables for `find_package()` + - PACKAGE_FIND_NAME + - PACKAGE_FIND_VERSION + - PACKAGE_FIND_VERSION_MAJOR + - PACKAGE_FIND_VERSION_MINOR + - PACKAGE_FIND_VERSION_PATCH + - PACKAGE_FIND_VERSION_TWEAK + - PACKAGE_FIND_VERSION_COUNT + - PACKAGE_VERSION + - PACKAGE_VERSION_EXACT + - PACKAGE_VERSION_COMPATIBLE + - PACKAGE_VERSION_UNSUITABLE + # NOTE <SMTH>_VERSION and components already defined above, so skipped here + - <package>_FOUND + - <package>_VERSION_COUNT + - <package>_FIND_REQUIRED + - <package>_FIND_QUIETLY + - <package>_FIND_VERSION + - <package>_FIND_VERSION_MAJOR + - <package>_FIND_VERSION_MINOR + - <package>_FIND_VERSION_PATCH + - <package>_FIND_VERSION_TWEAK + - <package>_FIND_VERSION_COUNT + - <package>_FIND_VERSION_EXACT + - <package>_FIND_COMPONENTS + - <package>_FIND_REQUIRED_<c> + - <package>_CONSIDERED_CONFIGS + - <package>_CONSIDERED_VERSIONS + - <PackageName>_ROOT # Since 3.12 + # Other standard variables/patterns + # - `try_run` + - <RUN_RESULT_VAR>__TRYRUN_OUTPUT + # Well known CMake's official module's variables + # - CheckCCompilerFlag + # - CheckCSourceCompiles + # - CheckCSourceRuns + # - CheckCxxCompilerFlag + # - CheckCxxSourceCompiles + # - CheckCxxSourceRuns + # - CheckCXXSymbolExists + # - CheckFortranCompilerFlag + # - CheckFortranFunctionExists + # - CheckFortranSourceCompiles + # - CheckFortranSourceCompiles + # - CheckFunctionExists + # - CheckIncludeFileCXX + # - CheckIncludeFile + # - CheckIncludeFiles + # - CheckLibraryExists + # - CheckPrototypeDefinition + # - CheckStructHasMember + # - CheckSymbolExists + # - CheckTypeSize + # - CheckVariableExists + - CMAKE_REQUIRED_DEFINITIONS + - CMAKE_REQUIRED_FLAGS + - CMAKE_REQUIRED_INCLUDES + - CMAKE_REQUIRED_LIBRARIES + - CMAKE_REQUIRED_QUIET + # - CheckTypeSize + # - CMakePushCheckState + - CMAKE_EXTRA_INCLUDE_FILES + # - CMakeBackwardCompatibilityCXX + - CMAKE_ANSI_CXXFLAGS + - CMAKE_HAS_ANSI_STRING_STREAM + # - CMakeFindFrameworks + - CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS + # - CMakeGraphVizOptions + - GRAPHVIZ_GRAPH_TYPE + - GRAPHVIZ_GRAPH_NAME + - GRAPHVIZ_GRAPH_HEADER + - GRAPHVIZ_NODE_PREFIX + - GRAPHVIZ_EXECUTABLES + - GRAPHVIZ_STATIC_LIBS + - GRAPHVIZ_SHARED_LIBS + - GRAPHVIZ_MODULE_LIBS + - GRAPHVIZ_EXTERNAL_LIBS + - GRAPHVIZ_IGNORE_TARGETS + - GRAPHVIZ_GENERATE_PER_TARGET + # - CPackArchive + - CPACK_ARCHIVE_FILE_NAME + - CPACK_ARCHIVE_<COMPONENT>_FILE_NAME + - CPACK_ARCHIVE_COMPONENT_INSTALL + # - CPackBundle + - CPACK_BUNDLE_NAME + - CPACK_BUNDLE_PLIST + - CPACK_BUNDLE_ICON + - CPACK_BUNDLE_STARTUP_COMMAND + - CPACK_BUNDLE_APPLE_CERT_APP + - CPACK_BUNDLE_APPLE_ENTITLEMENTS + - CPACK_BUNDLE_APPLE_CODESIGN_FILES + - CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER + - CPACK_COMMAND_CODESIGN + # - CPackComponent + - CPACK_COMPONENTS_ALL + - CPACK_<GENNAME>_COMPONENT_INSTALL + - CPACK_COMPONENTS_GROUPING + - CPACK_COMPONENT_<COMPNAME>_DISPLAY_NAME + - CPACK_COMPONENT_<COMPNAME>_DESCRIPTION + - CPACK_COMPONENT_<COMPNAME>_GROUP + - CPACK_COMPONENT_<COMPNAME>_DEPENDS + - CPACK_COMPONENT_<COMPNAME>_HIDDEN + - CPACK_COMPONENT_<COMPNAME>_REQUIRED + - CPACK_COMPONENT_<COMPNAME>_DISABLED + # - CPackCygwin + - CPACK_CYGWIN_PATCH_NUMBER + - CPACK_CYGWIN_PATCH_FILE + - CPACK_CYGWIN_BUILD_SCRIPT + # - CPackDeb + - CPACK_DEB_COMPONENT_INSTALL + - CPACK_DEBIAN_PACKAGE_NAME + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_NAME + - CPACK_DEBIAN_FILE_NAME + - CPACK_DEBIAN_<COMPONENT>_FILE_NAME + - CPACK_DEBIAN_PACKAGE_EPOCH # Since 3.10 + - CPACK_DEBIAN_PACKAGE_VERSION + - CPACK_DEBIAN_PACKAGE_RELEASE + - CPACK_DEBIAN_PACKAGE_ARCHITECTURE + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE + - CPACK_DEBIAN_PACKAGE_DEPENDS + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS + - CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS + - CPACK_DEBIAN_PACKAGE_MAINTAINER + - CPACK_DEBIAN_PACKAGE_DESCRIPTION + - CPACK_COMPONENT_<COMPONENT>_DESCRIPTION + - CPACK_DEBIAN_PACKAGE_SECTION + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION + - CPACK_DEBIAN_ARCHIVE_TYPE + - CPACK_DEBIAN_COMPRESSION_TYPE + - CPACK_DEBIAN_PACKAGE_PRIORITY + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY + - CPACK_DEBIAN_PACKAGE_HOMEPAGE + - CPACK_DEBIAN_PACKAGE_SHLIBDEPS + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS + - CPACK_DEBIAN_PACKAGE_DEBUG + - CPACK_DEBIAN_PACKAGE_PREDEPENDS + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS + - CPACK_DEBIAN_PACKAGE_ENHANCES + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES + - CPACK_DEBIAN_PACKAGE_BREAKS + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS + - CPACK_DEBIAN_PACKAGE_CONFLICTS + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS + - CPACK_DEBIAN_PACKAGE_PROVIDES + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES + - CPACK_DEBIAN_PACKAGE_REPLACES + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES + - CPACK_DEBIAN_PACKAGE_RECOMMENDS + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS + - CPACK_DEBIAN_PACKAGE_SUGGESTS + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS + - CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS + - CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY + - CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_EXTRA + - CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_STRICT_PERMISSION + - CPACK_DEBIAN_PACKAGE_SOURCE + - CPACK_DEBIAN_<COMPONENT>_PACKAGE_SOURCE + - CPACK_DEBIAN_DEBUGINFO_PACKAGE # Since 3.13 + - CPACK_DEBIAN_<component>_DEBUGINFO_PACKAGE # Since 3.13 + # - CPackDMG + - CPACK_DMG_VOLUME_NAME + - CPACK_DMG_FORMAT + - CPACK_DMG_DS_STORE + - CPACK_DMG_DS_STORE_SETUP_SCRIPT + - CPACK_DMG_BACKGROUND_IMAGE + - CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK + - CPACK_DMG_SLA_DIR + - CPACK_DMG_SLA_LANGUAGES + - CPACK_COMMAND_HDIUTIL + - CPACK_COMMAND_SETFILE + - CPACK_COMMAND_REZ + # -CPackExt (Since 3.13) + - CPACK_EXT_REQUESTED_VERSIONS + - CPACK_EXT_ENABLE_STAGING + - CPACK_EXT_PACKAGE_SCRIPT + # - CPackIFW + - CPACK_IFW_ROOT + - QTIFWDIR + - CPACK_IFW_VERBOSE + - CPACK_IFW_PACKAGE_TITLE + - CPACK_IFW_PACKAGE_PUBLISHER + - CPACK_IFW_PRODUCT_URL + - CPACK_IFW_PACKAGE_ICON + - CPACK_IFW_PACKAGE_WINDOW_ICON + - CPACK_IFW_PACKAGE_LOGO + - CPACK_IFW_PACKAGE_WATERMARK + - CPACK_IFW_PACKAGE_BANNER + - CPACK_IFW_PACKAGE_BACKGROUND + - CPACK_IFW_PACKAGE_WIZARD_STYLE + - CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH + - CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT + - CPACK_IFW_PACKAGE_TITLE_COLOR + - CPACK_IFW_PACKAGE_START_MENU_DIRECTORY + - CPACK_IFW_TARGET_DIRECTORY + - CPACK_IFW_ADMIN_TARGET_DIRECTORY + - CPACK_IFW_PACKAGE_GROUP + - CPACK_IFW_PACKAGE_NAME + - CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME + - CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE + - CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS + - CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH + - CPACK_IFW_PACKAGE_CONTROL_SCRIPT + - CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR # Since 3.11 + - CPACK_IFW_PACKAGE_RESOURCES + - CPACK_IFW_REPOSITORIES_ALL + - CPACK_IFW_DOWNLOAD_ALL + - CPACK_IFW_RESOLVE_DUPLICATE_NAMES + - CPACK_IFW_PACKAGES_DIRECTORIES + - CPACK_IFW_FRAMEWORK_VERSION + - CPACK_IFW_BINARYCREATOR_EXECUTABLE + - CPACK_IFW_REPOGEN_EXECUTABLE + - CPACK_IFW_INSTALLERBASE_EXECUTABLE + - CPACK_IFW_DEVTOOL_EXECUTABLE + # - CPackNSIS + - CPACK_NSIS_INSTALL_ROOT + - CPACK_NSIS_MUI_ICON + - CPACK_NSIS_MUI_UNIICON + - CPACK_NSIS_INSTALLER_MUI_ICON_CODE + - CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP + - CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP + - CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS + - CPACK_NSIS_EXTRA_INSTALL_COMMANDS + - CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS + - CPACK_NSIS_COMPRESSOR + - CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL + - CPACK_NSIS_MODIFY_PATH + - CPACK_NSIS_DISPLAY_NAME + - CPACK_NSIS_PACKAGE_NAME + - CPACK_NSIS_INSTALLED_ICON_NAME + - CPACK_NSIS_HELP_LINK + - CPACK_NSIS_URL_INFO_ABOUT + - CPACK_NSIS_CONTACT + - CPACK_NSIS_<compName>_INSTALL_DIRECTORY + - CPACK_NSIS_CREATE_ICONS_EXTRA + - CPACK_NSIS_DELETE_ICONS_EXTRA + - CPACK_NSIS_EXECUTABLES_DIRECTORY + - CPACK_NSIS_MUI_FINISHPAGE_RUN + - CPACK_NSIS_MENU_LINKS + # - CPackNuGet (since 3.12) + - CPACK_NUGET_COMPONENT_INSTALL + - CPACK_NUGET_PACKAGE_NAME + - CPACK_NUGET_<compName>_PACKAGE_NAME + - CPACK_NUGET_PACKAGE_VERSION + - CPACK_NUGET_<compName>_PACKAGE_VERSION + - CPACK_NUGET_PACKAGE_DESCRIPTION + - CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION + - CPACK_NUGET_PACKAGE_AUTHORS + - CPACK_NUGET_<compName>_PACKAGE_AUTHORS + - CPACK_NUGET_PACKAGE_TITLE + - CPACK_NUGET_<compName>_PACKAGE_TITLE + - CPACK_NUGET_PACKAGE_OWNERS + - CPACK_NUGET_<compName>_PACKAGE_OWNERS + - CPACK_NUGET_PACKAGE_HOMEPAGE_URL + - CPACK_NUGET_<compName>_PACKAGE_HOMEPAGE_URL + - CPACK_NUGET_PACKAGE_LICENSEURL + - CPACK_NUGET_<compName>_PACKAGE_LICENSEURL + - CPACK_NUGET_PACKAGE_ICONURL + - CPACK_NUGET_<compName>_PACKAGE_ICONURL + - CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY + - CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION_SUMMARY + - CPACK_NUGET_PACKAGE_RELEASE_NOTES + - CPACK_NUGET_<compName>_PACKAGE_RELEASE_NOTES + - CPACK_NUGET_PACKAGE_COPYRIGHT + - CPACK_NUGET_<compName>_PACKAGE_COPYRIGHT + - CPACK_NUGET_PACKAGE_TAGS + - CPACK_NUGET_<compName>_PACKAGE_TAGS + - CPACK_NUGET_PACKAGE_DEPENDENCIES + - CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES + - CPACK_NUGET_PACKAGE_DEPENDENCIES_<dependency>_VERSION + - CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<dependency>_VERSION + - CPACK_NUGET_PACKAGE_DEBUG + # - CPackPackageMaker + - CPACK_OSX_PACKAGE_VERSION + # - CPackProductBuild + - CPACK_COMMAND_PRODUCTBUILD + - CPACK_PRODUCTBUILD_IDENTITY_NAME + - CPACK_PRODUCTBUILD_KEYCHAIN_PATH + - CPACK_COMMAND_PKGBUILD + - CPACK_PKGBUILD_IDENTITY_NAME + - CPACK_PKGBUILD_KEYCHAIN_PATH + - CPACK_PRODUCTBUILD_RESOURCES_DIR + # - CPackRPM + - CPACK_RPM_COMPONENT_INSTALL + - CPACK_RPM_PACKAGE_SUMMARY + - CPACK_RPM_<COMPONENT>_PACKAGE_SUMMARY + - CPACK_RPM_PACKAGE_NAME + - CPACK_RPM_<COMPONENT>_PACKAGE_NAME + - CPACK_RPM_FILE_NAME + - CPACK_RPM_<COMPONENT>_FILE_NAME + - CPACK_RPM_MAIN_COMPONENT + - CPACK_RPM_PACKAGE_EPOCH # Since 3.10 + - CPACK_RPM_PACKAGE_VERSION + - CPACK_RPM_PACKAGE_ARCHITECTURE + - CPACK_RPM_<COMPONENT>_PACKAGE_ARCHITECTURE + - CPACK_RPM_PACKAGE_RELEASE + - CPACK_RPM_PACKAGE_RELEASE_DIST + - CPACK_RPM_PACKAGE_LICENSE + - CPACK_RPM_PACKAGE_GROUP + - CPACK_RPM_<COMPONENT>_PACKAGE_GROUP + - CPACK_RPM_PACKAGE_VENDOR + - CPACK_RPM_PACKAGE_URL + - CPACK_RPM_<COMPONENT>_PACKAGE_URL + - CPACK_RPM_PACKAGE_DESCRIPTION + - CPACK_RPM_<COMPONENT>_PACKAGE_DESCRIPTION + - CPACK_RPM_COMPRESSION_TYPE + - CPACK_RPM_PACKAGE_AUTOREQ + - CPACK_RPM_<COMPONENT>_PACKAGE_AUTOREQ + - CPACK_RPM_PACKAGE_AUTOPROV + - CPACK_RPM_<COMPONENT>_PACKAGE_AUTOPROV + - CPACK_RPM_PACKAGE_AUTOREQPROV + - CPACK_RPM_<COMPONENT>_PACKAGE_AUTOREQPROV + - CPACK_RPM_PACKAGE_REQUIRES + - CPACK_RPM_<COMPONENT>_PACKAGE_REQUIRES + - CPACK_RPM_PACKAGE_CONFLICTS + - CPACK_RPM_<COMPONENT>_PACKAGE_CONFLICTS + - CPACK_RPM_PACKAGE_REQUIRES_PRE + - CPACK_RPM_<COMPONENT>_PACKAGE_REQUIRES_PRE + - CPACK_RPM_PACKAGE_REQUIRES_POST + - CPACK_RPM_<COMPONENT>_PACKAGE_REQUIRES_POST + - CPACK_RPM_PACKAGE_REQUIRES_POSTUN + - CPACK_RPM_<COMPONENT>_PACKAGE_REQUIRES_POSTUN + - CPACK_RPM_PACKAGE_REQUIRES_PREUN + - CPACK_RPM_<COMPONENT>_PACKAGE_REQUIRES_PREUN + - CPACK_RPM_PACKAGE_SUGGESTS + - CPACK_RPM_<COMPONENT>_PACKAGE_SUGGESTS + - CPACK_RPM_PACKAGE_PROVIDES + - CPACK_RPM_<COMPONENT>_PACKAGE_PROVIDES + - CPACK_RPM_PACKAGE_OBSOLETES + - CPACK_RPM_<COMPONENT>_PACKAGE_OBSOLETES + - CPACK_RPM_PACKAGE_RELOCATABLE + - CPACK_RPM_SPEC_INSTALL_POST + - CPACK_RPM_SPEC_MORE_DEFINE + - CPACK_RPM_PACKAGE_DEBUG + - CPACK_RPM_USER_BINARY_SPECFILE + - CPACK_RPM_<COMPONENTNAME>_USER_BINARY_SPECFILE + - CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE + - CPACK_RPM_PRE_INSTALL_SCRIPT_FILE + - CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE + - CPACK_RPM_POST_INSTALL_SCRIPT_FILE + - CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE + - CPACK_RPM_USER_FILELIST + - CPACK_RPM_<COMPONENT>_USER_FILELIST + - CPACK_RPM_CHANGELOG_FILE + - CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST + - CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + - CPACK_RPM_RELOCATION_PATHS + - CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX + - CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION + - CPACK_RPM_NO_<COMPONENT>_INSTALL_PREFIX_RELOCATION + - CPACK_RPM_ADDITIONAL_MAN_DIRS + - CPACK_RPM_DEFAULT_USER + - CPACK_RPM_<COMPNAME>_DEFAULT_USER + - CPACK_RPM_DEFAULT_GROUP + - CPACK_RPM_<COMPNAME>_DEFAULT_GROUP + - CPACK_RPM_DEFAULT_FILE_PERMISSIONS + - CPACK_RPM_<COMPNAME>_DEFAULT_FILE_PERMISSIONS + - CPACK_RPM_DEFAULT_DIR_PERMISSIONS + - CPACK_RPM_<COMPNAME>_DEFAULT_DIR_PERMISSIONS + - CPACK_RPM_INSTALL_WITH_EXEC # Since 3.11 + - CPACK_RPM_DEBUGINFO_PACKAGE + - CPACK_RPM_<COMPONENT>_DEBUGINFO_PACKAGE + - CPACK_BUILD_SOURCE_DIRS + - CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX + - CPACK_RPM_<COMPONENT>_BUILD_SOURCE_DIRS_PREFIX + - CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS + - CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION + - CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE + - CPACK_RPM_DEBUGINFO_FILE_NAME + - CPACK_RPM_<COMPONENT>_DEBUGINFO_FILE_NAME + - CPACK_RPM_FILE_NAME + - CPACK_RPM_PACKAGE_SOURCES + - CPACK_RPM_SOURCE_PKG_BUILD_PARAMS + - CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX + - CPACK_RPM_BUILDREQUIRES + # - CPack + - CPACK_PACKAGE_NAME + - CPACK_PACKAGE_VENDOR + # `CPACK_PACKAGE_CONTACT` used by some modules (like Deb and NSIS), + # but not documented yet... + - CPACK_PACKAGE_CONTACT + - CPACK_PACKAGE_DIRECTORY + - CPACK_PACKAGE_VERSION_MAJOR + - CPACK_PACKAGE_VERSION_MINOR + - CPACK_PACKAGE_VERSION_PATCH + - CPACK_PACKAGE_DESCRIPTION # Documented since 3.12 + - CPACK_PACKAGE_DESCRIPTION_FILE + - CPACK_PACKAGE_DESCRIPTION_SUMMARY + - CPACK_PACKAGE_HOMEPAGE_URL # Since 3.12 + - CPACK_PACKAGE_FILE_NAME + - CPACK_PACKAGE_INSTALL_DIRECTORY + - CPACK_PACKAGE_ICON + - CPACK_PACKAGE_CHECKSUM + - CPACK_PROJECT_CONFIG_FILE + - CPACK_RESOURCE_FILE_LICENSE + - CPACK_RESOURCE_FILE_README + - CPACK_RESOURCE_FILE_WELCOME + - CPACK_MONOLITHIC_INSTALL + - CPACK_GENERATOR + - CPACK_OUTPUT_CONFIG_FILE + - CPACK_PACKAGE_EXECUTABLES + - CPACK_STRIP_FILES + - CPACK_VERBATIM_VARIABLES + - CPACK_SOURCE_PACKAGE_FILE_NAME + - CPACK_SOURCE_STRIP_FILES + - CPACK_SOURCE_GENERATOR + - CPACK_SOURCE_OUTPUT_CONFIG_FILE + - CPACK_SOURCE_IGNORE_FILES + - CPACK_CMAKE_GENERATOR + - CPACK_INSTALL_CMAKE_PROJECTS + - CPACK_SYSTEM_NAME + - CPACK_PACKAGE_VERSION + - CPACK_TOPLEVEL_TAG + - CPACK_INSTALL_COMMANDS + - CPACK_INSTALLED_DIRECTORIES + - CPACK_PACKAGE_INSTALL_REGISTRY_KEY + - CPACK_CREATE_DESKTOP_LINKS + - CPACK_BINARY_<GENNAME> + # - CPackWIX + - CPACK_WIX_UPGRADE_GUID + - CPACK_WIX_PRODUCT_GUID + - CPACK_WIX_LICENSE_RTF + - CPACK_WIX_PRODUCT_ICON + - CPACK_WIX_UI_REF + - CPACK_WIX_UI_BANNER + - CPACK_WIX_UI_DIALOG + - CPACK_WIX_PROGRAM_MENU_FOLDER + - CPACK_WIX_CULTURES + - CPACK_WIX_TEMPLATE + - CPACK_WIX_PATCH_FILE + - CPACK_WIX_EXTRA_SOURCES + - CPACK_WIX_EXTRA_OBJECTS + - CPACK_WIX_EXTENSIONS + - CPACK_WIX_<TOOL>_EXTENSIONS + - CPACK_WIX_<TOOL>_EXTRA_FLAGS + - CPACK_WIX_CMAKE_PACKAGE_REGISTRY + - CPACK_WIX_PROPERTY_<PROPERTY> + - CPACK_WIX_ROOT_FEATURE_TITLE + - CPACK_WIX_ROOT_FEATURE_DESCRIPTION + - CPACK_WIX_SKIP_PROGRAM_FOLDER + - CPACK_WIX_ROOT_FOLDER_ID + - CPACK_WIX_ROOT + # - CTest + # - Dart + - BUILD_TESTING + # - ExternalData + - ExternalData_BINARY_ROOT + - ExternalData_CUSTOM_SCRIPT_<key> + - ExternalData_LINK_CONTENT + - ExternalData_NO_SYMLINKS + - ExternalData_OBJECT_STORES + - ExternalData_SERIES_PARSE + - ExternalData_SERIES_PARSE_PREFIX + - ExternalData_SERIES_PARSE_NUMBER + - ExternalData_SERIES_PARSE_SUFFIX + - ExternalData_SERIES_MATCH + - ExternalData_SOURCE_ROOT + - ExternalData_TIMEOUT_ABSOLUTE + - ExternalData_TIMEOUT_INACTIVITY + - ExternalData_URL_ALGO_<algo>_<key> + - ExternalData_URL_TEMPLATES + - ExternalData_CUSTOM_LOCATION + - ExternalData_CUSTOM_FILE + - ExternalData_CUSTOM_ERROR + # - FindXXX module "standard" variables + - <package>_INCLUDE_DIRS + - <package>_LIBRARIES + - <package>_LIBRARY_DIRS + - <package>_VERSION_STRING + # - FindDoxygen + - DOXYGEN_<TAG> + # - FindPkgConfig + - PKG_CONFIG_EXECUTABLE + - PKG_CONFIG_VERSION_STRING + - PKG_CONFIG_USE_CMAKE_PREFIX_PATH + # - FindThreads + - CMAKE_THREAD_LIBS_INIT + - CMAKE_USE_SPROC_INIT + - CMAKE_USE_WIN32_THREADS_INIT + - CMAKE_USE_PTHREADS_INIT + - CMAKE_HP_PTHREADS_INIT + - CMAKE_THREAD_PREFER_PTHREAD + - THREADS_PREFER_PTHREAD_FLAG + # - GNUInstallDirs + - CMAKE_INSTALL_BINDIR + - CMAKE_INSTALL_FULL_BINDIR + - CMAKE_INSTALL_SBINDIR + - CMAKE_INSTALL_FULL_SBINDIR + - CMAKE_INSTALL_LIBEXECDIR + - CMAKE_INSTALL_FULL_LIBEXECDIR + - CMAKE_INSTALL_SYSCONFDIR + - CMAKE_INSTALL_FULL_SYSCONFDIR + - CMAKE_INSTALL_SHAREDSTATEDIR + - CMAKE_INSTALL_FULL_SHAREDSTATEDIR + - CMAKE_INSTALL_LOCALSTATEDIR + - CMAKE_INSTALL_FULL_LOCALSTATEDIR + - CMAKE_INSTALL_RUNSTATEDIR + - CMAKE_INSTALL_FULL_RUNSTATEDIR + - CMAKE_INSTALL_LIBDIR + - CMAKE_INSTALL_FULL_LIBDIR + - CMAKE_INSTALL_INCLUDEDIR + - CMAKE_INSTALL_FULL_INCLUDEDIR + - CMAKE_INSTALL_OLDINCLUDEDIR + - CMAKE_INSTALL_FULL_OLDINCLUDEDIR + - CMAKE_INSTALL_DATAROOTDIR + - CMAKE_INSTALL_FULL_DATAROOTDIR + - CMAKE_INSTALL_DATADIR + - CMAKE_INSTALL_FULL_DATADIR + - CMAKE_INSTALL_INFODIR + - CMAKE_INSTALL_FULL_INFODIR + - CMAKE_INSTALL_LOCALEDIR + - CMAKE_INSTALL_FULL_LOCALEDIR + - CMAKE_INSTALL_MANDIR + - CMAKE_INSTALL_FULL_MANDIR + - CMAKE_INSTALL_DOCDIR + - CMAKE_INSTALL_FULL_DOCDIR + # - InstallRequiredSystemLibraries + - CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS + - CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP + - CMAKE_INSTALL_DEBUG_LIBRARIES + - CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY + - CMAKE_INSTALL_UCRT_LIBRARIES + - CMAKE_INSTALL_MFC_LIBRARIES + - CMAKE_INSTALL_OPENMP_LIBRARIES + - CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION + - CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS + - CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT + # - TestForANSIForScope + - CMAKE_NO_ANSI_FOR_SCOPE + # - TestForANSIStreamHeaders + - CMAKE_NO_ANSI_STREAM_HEADERS + # - TestForSSTREAM + - CMAKE_NO_ANSI_STRING_STREAM + # - TestForSTDNamespace + - CMAKE_NO_STD_NAMESPACE + # - UseSWIG + - CMAKE_SWIG_FLAGS + - CMAKE_SWIG_OUTDIR + - SWIG_MODULE_<name>_EXTRA_DEPS + +scripting-commands: + - + name: break + nulary?: true + - + name: cmake_host_system_information + named-args: [RESULT, QUERY] + special-args: [ + NUMBER_OF_LOGICAL_CORES + , NUMBER_OF_PHYSICAL_CORES + , HOSTNAME + , FQDN + , TOTAL_VIRTUAL_MEMORY + , AVAILABLE_VIRTUAL_MEMORY + , TOTAL_PHYSICAL_MEMORY + , AVAILABLE_PHYSICAL_MEMORY + # Since 3.10 + , IS_64BIT + , HAS_FPU + , HAS_MMX + , HAS_MMX_PLUS + , HAS_SSE + , HAS_SSE2 + , HAS_SSE_FP + , HAS_SSE_MMX + , HAS_AMD_3DNOW + , HAS_AMD_3DNOW_PLUS + , HAS_IA64 + , HAS_SERIAL_NUMBER + , PROCESSOR_SERIAL_NUMBER + , PROCESSOR_NAME + , PROCESSOR_DESCRIPTION + , OS_NAME + , OS_RELEASE + , OS_VERSION + , OS_PLATFORM + ] + - + name: cmake_minimum_required + named-args: [VERSION, FATAL_ERROR] + - + name: cmake_parse_arguments + named-args: [PARSE_ARGV] + - + name: cmake_policy + named-args: [GET, SET, PUSH, POP, VERSION] + special-args: [OLD, NEW] + - + name: configure_file + named-args: [COPYONLY, ESCAPE_QUOTES, "@ONLY", NEWLINE_STYLE] + special-args: [UNIX, DOS, WIN32, LF, CRLF] + - + name: continue + nulary?: true + - + name: elseif + named-args: &if [ + NOT + , AND + , OR + , POLICY + , TARGET + , TEST + , EXISTS + , IS_NEWER_THAN + , IS_NEWER_THAN + , IS_DIRECTORY + , IS_SYMLINK + , IS_ABSOLUTE + , MATCHES + , LESS + , GREATER + , EQUAL + , LESS_EQUAL + , GREATER_EQUAL + , STRLESS + , STRGREATER + , STREQUAL + , STRLESS_EQUAL + , STRGREATER_EQUAL + , VERSION_LESS + , VERSION_GREATER + , VERSION_EQUAL + , VERSION_LESS_EQUAL + , VERSION_GREATER_EQUAL + , IN_LIST + , DEFINED + ] + nested-parentheses?: true + - + name: else + nulary?: true + - + name: endforeach + nulary?: true + - + name: endfunction + nulary?: true + - + name: endif + nulary?: true + - + name: endmacro + nulary?: true + - + name: endwhile + nulary?: true + - + name: execute_process + named-args: [ + COMMAND + , WORKING_DIRECTORY + , TIMEOUT + , RESULT_VARIABLE + , RESULTS_VARIABLE # Since 3.10 + , OUTPUT_VARIABLE + , ERROR_VARIABLE + , INPUT_FILE + , OUTPUT_FILE + , ERROR_FILE + , OUTPUT_QUIET + , ERROR_QUIET + , OUTPUT_STRIP_TRAILING_WHITESPACE + , ERROR_STRIP_TRAILING_WHITESPACE + , ENCODING + ] + special-args: [NONE, AUTO, ANSI, OEM, UTF8] + - + name: file + named-args: [ + WRITE + , APPEND + , TOUCH # Since 3.12 + , TOUCH_NOCREATE # Since 3.12 + , READ + , OFFSET + , LIMIT + , HEX + , STRINGS + , LENGTH_MAXIMUM + , LENGTH_MINIMUM + , LIMIT_COUNT + , LIMIT_INPUT + , LIMIT_OUTPUT + , NEWLINE_CONSUME + , NO_HEX_CONVERSION + , REGEX + , ENCODING + , MD5 + , SHA1 + , SHA224 + , SHA256 + , SHA384 + , SHA512 + , SHA3_224 + , SHA3_256 + , SHA3_384 + , SHA3_512 + , GLOB + , GLOB_RECURSE + , LIST_DIRECTORIES + , RELATIVE + , CONFIGURE_DEPENDS # Since 3.12 + , FOLLOW_SYMLINKS + , RENAME + , REMOVE + , REMOVE_RECURSE + , MAKE_DIRECTORY + , RELATIVE_PATH + , TO_CMAKE_PATH + , TO_NATIVE_PATH + , DOWNLOAD + , UPLOAD + , INACTIVITY_TIMEOUT + , LOG + , SHOW_PROGRESS + , STATUS + , TIMEOUT + , USERPWD + , HTTPHEADER + , EXPECTED_HASH + , EXPECTED_MD5 + , TLS_VERIFY + , TLS_CAINFO + , TIMESTAMP + , UTC + , GENERATE + , OUTPUT + , INPUT + , CONTENT + , CONDITION + , COPY + , INSTALL + , DESTINATION + , FILE_PERMISSIONS + , DIRECTORY_PERMISSIONS + , NO_SOURCE_PERMISSIONS + , USE_SOURCE_PERMISSIONS + , FILES_MATCHING + , PATTERN + , REGEX + , EXCLUDE + , PERMISSIONS + , LOCK + , DIRECTORY + , RELEASE + , GUARD + , RESULT_VARIABLE + , TIMEOUT + # Sub-options of UPLOAD/DOWNLOAD since 3.11 + , NETRC + , NETRC_FILE + ] + special-args: [ + UTF-8 + , UTF-16LE + , UTF-16BE + , UTF-32LE + , UTF-32B + , FUNCTION + , FILE + , PROCESS + , OWNER_READ + , OWNER_WRITE + , OWNER_EXECUTE + , GROUP_READ + , GROUP_WRITE + , GROUP_EXECUTE + , WORLD_READ + , WORLD_WRITE + , WORLD_EXECUTE + , SETUID + , SETGID + , IGNORED # NETRC options since 3.11 + , OPTIONAL + , REQUIRED + ] + - + name: find_file + named-args: &find_file [ + NAMES + , HINTS + , PATHS + , PATH_SUFFIXES + , DOC + , NO_DEFAULT_PATH + , NO_PACKAGE_ROOT_PATH + , NO_CMAKE_PATH + , NO_CMAKE_ENVIRONMENT_PATH + , NO_SYSTEM_ENVIRONMENT_PATH + , NO_CMAKE_SYSTEM_PATH + , CMAKE_FIND_ROOT_PATH_BOTH + , ONLY_CMAKE_FIND_ROOT_PATH + , NO_CMAKE_FIND_ROOT_PATH + ] + - + name: find_library + named-args: &find_library [ + NAMES + , NAMES_PER_DIR + , HINTS + , PATHS + , PATH_SUFFIXES + , DOC + , NO_DEFAULT_PATH + , NO_PACKAGE_ROOT_PATH + , NO_CMAKE_PATH + , NO_CMAKE_ENVIRONMENT_PATH + , NO_SYSTEM_ENVIRONMENT_PATH + , NO_CMAKE_SYSTEM_PATH + , CMAKE_FIND_ROOT_PATH_BOTH + , ONLY_CMAKE_FIND_ROOT_PATH + , NO_CMAKE_FIND_ROOT_PATH + ] + - + name: find_package + named-args: [ + EXACT + , QUIET + , MODULE + , REQUIRED + , COMPONENTS + , OPTIONAL_COMPONENTS + , NO_POLICY_SCOPE + , CONFIG + , NO_MODULE + , NAMES + , CONFIGS + , HINTS + , PATHS + , PATH_SUFFIXES + , NO_DEFAULT_PATH + , NO_PACAKGE_ROOT_PATH + , NO_CMAKE_PATH + , NO_CMAKE_ENVIRONMENT_PATH + , NO_SYSTEM_ENVIRONMENT_PATH + , NO_CMAKE_PACKAGE_REGISTRY + , NO_CMAKE_SYSTEM_PATH + , NO_CMAKE_SYSTEM_PACKAGE_REGISTRY + , CMAKE_FIND_ROOT_PATH_BOTH + , ONLY_CMAKE_FIND_ROOT_PATH + , NO_CMAKE_FIND_ROOT_PATH + ] + - + name: find_path + named-args: *find_file + - + name: find_program + named-args: *find_library + - + name: foreach + named-args: [RANGE, IN, LISTS, ITEMS] + - + name: function + - + name: get_cmake_property + property-args: [global-properties] + - + name: get_directory_property + named-args: [DIRECTORY, DEFINITION] + property-args: &get_directory_property [directory-properties] + - + name: get_filename_component + named-args: [DIRECTORY, NAME, EXT, NAME_WE, PATH, CACHE, BASE_DIR, ABSOLUTE, REALPATH, PROGRAM, PROGRAM_ARGS] + - + name: get_property + named-args: [GLOBAL, DIRECTORY, TARGET, SOURCE, INSTALL, TEST, CACHE, VARIABLE, PROPERTY, SET, DEFINED, BRIEF_DOCS, FULL_DOCS] + property-args: &get-property [ + global-properties + , directory-properties + , target-properties + , test-properties + , source-properties + , cache-properties + , install-properties + ] + - + name: if + named-args: *if + nested-parentheses?: true + - + name: include + named-args: [OPTIONAL, RESULT_VARIABLE, NO_POLICY_SCOPE] + - + # Since 3.10 + name: include_guard + named-args: [DIRECTORY, GLOBAL] + - + name: list + named-args: [ + LENGTH + , GET + , APPEND + , FILTER + , INCLUDE + , EXCLUDE + , REGEX + , FIND + , INSERT + , REMOVE_ITEM + , REMOVE_AT + , REMOVE_DUPLICATES + , REVERSE + , SORT + # Since 3.13 + , COMPARE + , CASE + , ORDER + # Since 3.12 + , JOIN + , SUBLIST + , TRANSFORM + # `TRANSFORM`'s actions + # NOTE Another `APPEND` named arg has already added + , PREPEND + , TOLOWER + , TOLOWER + , STRIP + , GENEX_STRIP + , REPLACE + # `TRANSFORM`'s selectors + , AT + , FOR + # NOTE Another `REGEX` named arg has already added + , OUTPUT_VARIABLE + ] + # Since 3.13 + special-args: [STRING, FILE_BASENAME, SENSITIVE, INSENSITIVE, ASCENDING, DESCENDING] + - + name: macro + - + name: mark_as_advanced + named-args: [CLEAR, FORCE] + - + name: math + named-args: [ + EXPR + , OUTPUT_FORMAT # Since 3.13 + ] + # Since 3.13 + special-args: [DECIMAL, HEXADECIMAL] + - + name: message + named-args: [STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, FATAL_ERROR, DEPRECATION] + - + name: option + - + name: return + nulary?: true + - + name: separate_arguments + named-args: [NATIVE_COMMAND, UNIX_COMMAND, WINDOWS_COMMAND] + - + name: set_directory_properties + named-args: [PROPERTIES] + property-args: *get-property + - + name: set_property + named-args: [GLOBAL, DIRECTORY, TARGET, DIRECTORY, SOURCE, INSTALL, TEST, CACHE, VARIABLE, APPEND, APPEND_STRING, PROPERTY] + property-args: *get-property + - + name: set + named-args: [PARENT_SCOPE, CACHE, FORCE] + special-args: [BOOL, FILEPATH, PATH, STRING, INTERNAL, STATIC] + - + name: site_name + - + name: string + named-args: [ + FIND + , REVERSE + , REPLACE + , REGEX + , MATCH + , MATCHALL + , APPEND + , PREPEND # Since 3.10 + , CONCAT + , JOIN # Since 3.12 + , TOLOWER + , TOUPPER + , LENGTH + , SUBSTRING + , STRIP + , GENEX_STRIP + , COMPARE + , LESS + , GREATER + , EQUAL + , NOTEQUAL + , LESS_EQUAL + , GREATER_EQUAL + , MD5 + , SHA1 + , SHA224 + , SHA256 + , SHA384 + , SHA512 + , SHA3_224 + , SHA3_256 + , SHA3_384 + , SHA3_512 + , ASCII + , CONFIGURE + , "@ONLY" + , ESCAPE_QUOTES + , RANDOM + , LENGTH + , ALPHABET + , RANDOM_SEED + , TIMESTAMP + , UTC + , MAKE_C_IDENTIFIER + , UUID + , NAMESPACE + , NAME + , TYPE + , UPPER + ] + - + name: unset + named-args: [CACHE, PARENT_SCOPE] + - + name: variable_watch + - + name: while + named-args: *if + nested-parentheses?: true + +project-commands: + - + name: add_compile_definitions # Since 3.12 + - + name: add_compile_options + - + name: add_custom_command + named-args: [ + OUTPUT + , COMMAND + , ARGS + , MAIN_DEPENDENCY + , DEPENDS + , BYPRODUCTS + , IMPLICIT_DEPENDS + , WORKING_DIRECTORY + , COMMENT + , DEPFILE + , VERBATIM + , APPEND + , USES_TERMINAL + , COMMAND_EXPAND_LISTS + , TARGET + , PRE_BUILD + , PRE_LINK + , POST_BUILD + ] + - + name: add_custom_target + named-args: [ + ALL + , COMMAND + , DEPENDS + , BYPRODUCTS + , IMPLICIT_DEPENDS + , WORKING_DIRECTORY + , COMMENT + , DEPFILE + , VERBATIM + , APPEND + , USES_TERMINAL + , COMMAND_EXPAND_LISTS + , SOURCES + ] + - + name: add_definitions + - + name: add_dependencies + - + name: add_executable + named-args: [WIN32, MACOSX_BUNDLE, EXCLUDE_FROM_ALL, IMPORTED, GLOBAL, ALIAS] + - + name: add_library + named-args: [STATIC, SHARED, MODULE, OBJECT, EXCLUDE_FROM_ALL, IMPORTED, UNKNOWN, GLOBAL, ALIAS, INTERFACE] + - + name: add_link_options + - + name: add_subdirectory + named-args: [EXCLUDE_FROM_ALL] + - + name: add_test + named-args: [NAME, COMMAND, CONFIGURATIONS, WORKING_DIRECTORY] + - + name: aux_source_directory + - + name: build_command + named-args: [CONFIGURATION, TARGET] + - + name: create_test_sourcelist + named-args: [EXTRA_INCLUDE, FUNCTION] + - + name: define_property + named-args: [GLOBAL, DIRECTORY, DIRECTORY, SOURCE, TEST, VARIABLE, CACHED_VARIABLE, PROPERTY, INHERITED, BRIEF_DOCS, FULL_DOCS] + property-args: *get-property + - + name: enable_language + named-args: [OPTIONAL] + special-args: [C, CXX, RC, Fortran] + - + name: enable_testing + - + name: export + named-args: [EXPORT, NAMESPACE, FILE, TARGETS, APPEND, EXPORT_LINK_INTERFACE_LIBRARIES, ANDROID_MK] + - + name: fltk_wrap_ui + - + name: get_source_file_property + property-args: &get_source_file_property [source-properties] + - + name: get_target_property + property-args: &get_target_property [target-properties] + - + name: get_test_property + property-args: &get_test_property [test-properties] + - + name: include_directories + named-args: [AFTER, BEFORE, SYSTEM] + - + name: include_external_msproject + named-args: [TYPE, GUID, PLATFORM] + - + name: include_regular_expression + - + name: install + named-args: [ + # Common + DESTINATION + , PERMISSIONS + , CONFIGURATIONS + , COMPONENT + , NAMELINK_COMPONENT # Since 3.12 + , EXCLUDE_FROM_ALL + , RENAME + , OPTIONAL + # Installing Targets + , TARGETS + , EXPORT + , ARCHIVE + , LIBRARY + , RUNTIME + , OBJECTS + , FRAMEWORK + , BUNDLE + , PRIVATE_HEADER + , PUBLIC_HEADER + , RESOURCE + , INCLUDES + , NAMELINK_ONLY + , NAMELINK_SKIP + # Installing Files + , FILES + , PROGRAMS + # Installing Directories + , DIRECTORY + , FILE_PERMISSIONS + , DIRECTORY_PERMISSIONS + , USE_SOURCE_PERMISSIONS + , MESSAGE_NEVER + , FILES_MATCHING + , PATTERN + , REGEX + , EXCLUDE + # Custom Installation Logic + , SCRIPT + , CODE + # Installing Exports + , NAMESPACE + , FILE + , EXPORT_ANDROID_MK + , EXPORT_LINK_INTERFACE_LIBRARIES + ] + special-args: &valid_permissions [ + OWNER_READ + , OWNER_WRITE + , OWNER_EXECUTE + , GROUP_READ + , GROUP_WRITE + , GROUP_EXECUTE + , WORLD_READ + , WORLD_WRITE + , WORLD_EXECUTE + , SETUID + , SETGID + ] + - + name: link_directories + named-args: [AFTER, BEFORE] + - + name: link_libraries + named-args: [debug, optimized, general] + - + name: load_cache + named-args: [READ_WITH_PREFIX, EXCLUDE, INCLUDE_INTERNALS] + - + name: project + named-args: [ + VERSION + , DESCRIPTION # Since 3.8 or 3.9 (?) + , HOMEPAGE_URL # Since 3.12 + , LANGUAGES + ] + special-args: [NONE, C, CXX, RC, CUDA, Fortran, ASM] + - + name: qt_wrap_cpp + - + name: qt_wrap_ui + - + name: remove_definitions + - + name: set_source_files_properties + named-args: [PROPERTIES] + property-args: *get_source_file_property + - + name: set_target_properties + named-args: [PROPERTIES] + property-args: *get_target_property + - + name: set_tests_properties + named-args: [PROPERTIES] + property-args: *get_test_property + - + name: source_group + named-args: [FILES, REGULAR_EXPRESSION, TREE, PREFIX] + - + name: target_compile_definitions + named-args: &target_compile_definitions [INTERFACE, PUBLIC, PRIVATE] + - + name: target_compile_features + named-args: *target_compile_definitions + special-args: [ + # CMAKE_CXX_KNOWN_FEATURES + cxx_std_98 + , cxx_std_11 + , cxx_std_14 + , cxx_std_17 + , cxx_std_20 # Since 3.12 + , cxx_aggregate_default_initializers + , cxx_alias_templates + , cxx_alignas + , cxx_alignof + , cxx_attributes + , cxx_attribute_deprecated + , cxx_auto_type + , cxx_binary_literals + , cxx_constexpr + , cxx_contextual_conversions + , cxx_decltype_incomplete_return_types + , cxx_decltype + , cxx_decltype_auto + , cxx_default_function_template_args + , cxx_defaulted_functions + , cxx_defaulted_move_initializers + , cxx_delegating_constructors + , cxx_deleted_functions + , cxx_digit_separators + , cxx_enum_forward_declarations + , cxx_explicit_conversions + , cxx_extended_friend_declarations + , cxx_extern_templates + , cxx_final + , cxx_func_identifier + , cxx_generalized_initializers + , cxx_generic_lambdas + , cxx_inheriting_constructors + , cxx_inline_namespaces + , cxx_lambdas + , cxx_lambda_init_captures + , cxx_local_type_template_args + , cxx_long_long_type + , cxx_noexcept + , cxx_nonstatic_member_init + , cxx_nullptr + , cxx_override + , cxx_range_for + , cxx_raw_string_literals + , cxx_reference_qualified_functions + , cxx_relaxed_constexpr + , cxx_return_type_deduction + , cxx_right_angle_brackets + , cxx_rvalue_references + , cxx_sizeof_member + , cxx_static_assert + , cxx_strong_enums + , cxx_thread_local + , cxx_trailing_return_types + , cxx_unicode_literals + , cxx_uniform_initialization + , cxx_unrestricted_unions + , cxx_user_literals + , cxx_variable_templates + , cxx_variadic_macros + , cxx_variadic_templates + , cxx_template_template_parameters + # CMAKE_C_KNOWN_FEATURES + , c_std_90 + , c_std_99 + , c_std_11 + , c_function_prototypes + , c_restrict + , c_static_assert + , c_variadic_macros + ] + - + name: target_compile_options + named-args: &target_compile_options [BEFORE, INTERFACE, PUBLIC, PRIVATE] + - + name: target_include_directories + named-args: [BEFORE, SYSTEM, INTERFACE, PUBLIC, PRIVATE] + - + # Since 3.13 + name: target_link_directories + named-args: *target_compile_options + - + name: target_link_libraries + named-args: *target_compile_definitions + - + name: target_link_options + named-args: *target_compile_definitions + - + name: target_sources + named-args: *target_compile_definitions + - + name: try_compile + named-args: [ + RESULT_VAR + , CMAKE_FLAGS + , OUTPUT_VARIABLE + , SOURCES + , COMPILE_DEFINITIONS + , LINK_LIBRARIES + , COPY_FILE + , COPY_FILE_ERROR + , <LANG>_STANDARD + , <LANG>_STANDARD_REQUIRED + , <LANG>_EXTENSIONS + ] + - + name: try_run + named-args: [ + RUN_RESULT_VAR + , COMPILE_RESULT_VAR + , CMAKE_FLAGS + , COMPILE_DEFINITIONS + , LINK_LIBRARIES + , COMPILE_OUTPUT_VARIABLE + , RUN_OUTPUT_VARIABLE + , OUTPUT_VARIABLE + , ARGS + ] + +ctest-commands: + - + name: ctest_build + named-args: [BUILD, APPEND, CONFIGURATION, FLAGS, PROJECT_NAME, TARGET, NUMBER_ERRORS, NUMBER_WARNINGS, RETURN_VALUE, CAPTURE_CMAKE_ERROR] + - + name: ctest_configure + named-args: [BUILD, SOURCE, APPEND, OPTIONS, RETURN_VALUE, QUIET, CAPTURE_CMAKE_ERROR] + - + name: ctest_coverage + named-args: [BUILD, LABELS, APPEND, RETURN_VALUE, CAPTURE_CMAKE_ERROR, QUIET] + - + name: ctest_empty_binary_directory + - + name: ctest_memcheck + named-args: [ + BUILD + , APPEND + , START + , END + , STRIDE + , EXCLUDE + , INCLUDE + , EXCLUDE_LABEL + , INCLUDE_LABEL + , EXCLUDE_FIXTURE + , EXCLUDE_FIXTURE_SETUP + , EXCLUDE_FIXTURE_CLEANUP + , PARALLEL_LEVEL + , TEST_LOAD + , SCHEDULE_RANDOM + , STOP_TIME + , RETURN_VALUE + , DEFECT_COUNT + , QUIET + ] + - + name: ctest_read_custom_files + - + name: ctest_run_script + named-args: [NEW_PROCESS, RETURN_VALUE] + - + name: ctest_sleep + - + name: ctest_start + named-args: [TRACK, APPEND, QUIET] + - + name: ctest_submit + named-args: [PARTS, FILES, HTTPHEADER, RETRY_COUNT, RETRY_DELAY, RETURN_VALUE, QUIET, CDASH_UPLOAD, CDASH_UPLOAD_TYPE] + - + name: ctest_test + named-args: [ + BUILD + , APPEND + , START + , END + , STRIDE + , EXCLUDE + , INCLUDE + , EXCLUDE_LABEL + , INCLUDE_LABEL + , EXCLUDE_FIXTURE + , EXCLUDE_FIXTURE_SETUP + , EXCLUDE_FIXTURE_CLEANUP + , PARALLEL_LEVEL + , TEST_LOAD + , SCHEDULE_RANDOM + , STOP_TIME + , RETURN_VALUE + , CAPTURE_CMAKE_ERROR + , QUIET + ] + - + name: ctest_update + named-args: [SOURCE, RETURN_VALUE, QUIET] + - + name: ctest_upload + named-args: [FILES, CAPTURE_CMAKE_ERROR, QUIET] diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/generate-cmake-syntax.py b/src/libs/3rdparty/syntax-highlighting/data/generators/generate-cmake-syntax.py new file mode 100644 index 0000000000..61f60a682d --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/generate-cmake-syntax.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Generate Kate syntax file for CMake +# +# Copyright (c) 2017, Alex Turbov <i.zaufi@gmail.com> +# +# To install prerequisites: +# +# $ pip install --user click jinja2 yaml +# +# To use: +# +# $ ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml +# +import click +import jinja2 +import pathlib +import re +import yaml + +import pprint + + +_TEMPLATED_NAME = re.compile('<[^>]+>') +_PROPERTY_KEYS = [ + 'global-properties' + , 'directory-properties' + , 'target-properties' + , 'source-properties' + , 'test-properties' + , 'cache-properties' + , 'install-properties' + ] +_KW_RE_LIST = ['kw', 're'] + + +def try_transform_placeholder_string_to_regex(name): + ''' + NOTE Some placeholders are not IDs, but numbers... + `CMAKE_MATCH_<N>` 4 example + ''' + m = _TEMPLATED_NAME.split(name) + if 'CMAKE_MATCH_' in m: + return '\\bCMAKE_MATCH_[0-9]+\\b' + + return '\\b{}\\b'.format('&id_re;'.join(list(m))) if 1 < len(m) else name + + +def partition_iterable(fn, iterable): + true, false = [], [] + for i in iterable: + (false, true)[int(fn(i))].append(i) + return true, false + + +def _transform_command_set(cmd, list_name): + args, args_re = partition_iterable(lambda x: _TEMPLATED_NAME.search(x) is None, cmd[list_name]) + del cmd[list_name] + list_name = list_name.replace('-', '_') + + cmd[list_name] = {k: sorted(set(v)) for k, v in zip(_KW_RE_LIST, [args, args_re])} + cmd[list_name]['re'] = [*map(lambda x: try_transform_placeholder_string_to_regex(x), args_re)] + + return cmd + + +def transform_command(cmd): + can_be_nulary = True + + if 'name' not in cmd: + raise RuntimeError('Command have no name') + + if 'named-args' in cmd: + new_cmd = _transform_command_set(cmd, 'named-args') + assert new_cmd == cmd + can_be_nulary = False + + if 'special-args' in cmd: + new_cmd = _transform_command_set(cmd, 'special-args') + assert new_cmd == cmd + can_be_nulary = False + + if 'property-args' in cmd: + new_cmd = _transform_command_set(cmd, 'property-args') + assert new_cmd == cmd + can_be_nulary = False + + cmd['nested_parentheses'] = cmd['nested-parentheses?'] if 'nested-parentheses?' in cmd else False + + if 'nulary?' in cmd and cmd['nulary?'] and not can_be_nulary: + raise RuntimeError('Command `{}` w/ args declared nulary!?'.format(cmd['name'])) + + return cmd + + +#BEGIN Jinja filters + +def cmd_is_nulary(cmd): + assert not ('named-args' in cmd or 'special-args' in cmd or 'property-args' in cmd) + return 'nulary?' in cmd and cmd['nulary?'] + +#END Jinja filters + + +@click.command() +@click.argument('input_yaml', type=click.File('r')) +@click.argument('template', type=click.File('r'), default='./cmake.xml.tpl') +def cli(input_yaml, template): + data = yaml.load(input_yaml) + + # Partition `variables` list into "pure" words and regexes to match + data['variables'] = { + k: sorted(set(v)) for k, v in zip(_KW_RE_LIST, [*partition_iterable(lambda x: _TEMPLATED_NAME.search(x) is None, data['variables'])]) + } + data['variables']['re'] = [*map(lambda x: try_transform_placeholder_string_to_regex(x), data['variables']['re'])] + + # Transform properties and make all-properties list + data['properties'] = {} + for prop in _PROPERTY_KEYS: + python_prop_list_name = prop.replace('-', '_') + props, props_re = partition_iterable(lambda x: _TEMPLATED_NAME.search(x) is None, data[prop]) + del data[prop] + + data['properties'][python_prop_list_name] = {k: sorted(set(v)) for k, v in zip(_KW_RE_LIST, [props, props_re])} + data['properties'][python_prop_list_name]['re'] = [*map(lambda x: try_transform_placeholder_string_to_regex(x), props_re)] + + + data['properties']['kinds'] = [*map(lambda name: name.replace('-', '_'), _PROPERTY_KEYS)] + + # Make all commands list + data['commands'] = [*map(lambda cmd: transform_command(cmd), data['scripting-commands'] + data['project-commands'] + data['ctest-commands'])] + + data['generator_expressions'] = data['generator-expressions'] + + + env = jinja2.Environment( + keep_trailing_newline=True + ) + + # Register convenience filters + env.tests['nulary'] = cmd_is_nulary + + tpl = env.from_string(template.read()) + result = tpl.render(data) + print(result) + + +if __name__ == '__main__': + cli() + # TODO Handle execptions and show errors diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/generate-php.pl b/src/libs/3rdparty/syntax-highlighting/data/generators/generate-php.pl new file mode 100644 index 0000000000..c8274aab58 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/generate-php.pl @@ -0,0 +1,58 @@ +#!/usr/bin/perl + +# This perl script read stdin and write on stdout. It shall be an XML language file. +# +# * If the name of the language is 'HTML', then it creates the language 'PHP (HTML)' +# which shall be used for PHP hl. +# +# * If the name of the language is something else (say '*'), it creates the language '*/PHP'. +# This new language is the same as the old one, but is able to detect PHP everywhere. +# +# This script will correctly set extensions & mimetype, and will replace +# <IncludeRules context="##*"> by <IncludeRules context="##*/PHP"> +# +# Generated languages need a language named 'PHP/PHP', which shall take care of PHP hl itself +# and which will be called every time something like <?php is encountred. +# +# Author: Jan Villat <jan.villat@net2000.ch> +# License: LGPL + +my $file = ""; + +while (<>) +{ + $file .= $_; +} + +$warning = "\n\n<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT ***** -->\n"; + +$file =~ s/(?=<language)/$warning\n\n\n/; + +if ($file =~ /<language[^>]+name="HTML"/) +{ + $root = 1; +} + +if ($root == 1) +{ + $file =~ s/<language([^>]+)name="[^"]*"/<language$1name="PHP (HTML)"/s; + $file =~ s/<language([^>]+)section="[^"]*"/<language$1section="Scripts"/s; + $file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions="*.php;*.php3;*.wml;*.phtml;*.phtm;*.inc;*.ctp"/s; + $file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype="text\/x-php4-src;text\/x-php3-src;text\/vnd.wap.wml;application\/x-php"/s; +} +else +{ + $file =~ s/<language([^>]+)name="([^"]*)"/<language$1name="$2\/PHP" hidden="true"/s; + $file =~ s/<language([^>]+)section="[^"]*"/<language$1section="Other"/s; + $file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions=""/s; + $file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype=""/s; +} + +$findphp = "<context name=\"FindPHP\" attribute=\"Normal Text\" lineEndContext=\"#stay\">\n<RegExpr context=\"##PHP/PHP\" String=\"<\\?(?:=|php)?\" lookAhead=\"true\" />\n</context>\n"; + +$file =~ s/<IncludeRules\s([^>]*)context="([^"#]*)##(?!Alerts|Doxygen|Modelines)([^"]+)"/<IncludeRules $1context="$2##$3\/PHP"/g; +$file =~ s/(<context\s[^>]*>)/$1\n<IncludeRules context="FindPHP" \/>/g; +$file =~ s/(?=<\/contexts\s*>)/$findphp/; + +print $file; +print $warning; diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/get-Qt-classes.sh b/src/libs/3rdparty/syntax-highlighting/data/generators/get-Qt-classes.sh new file mode 100644 index 0000000000..f2735c88a5 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/get-Qt-classes.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# +# Copyright (c) 2012-2013 by Alex Turbov +# +# Grab a documented (officially) class list from Qt project web site: +# http://qt-project.org/doc/qt-${version}/classes.html +# + +version=$1 +shift + +case "$version" in +5*) + url="http://qt-project.org/doc/qt-${version}/qtdoc/classes.html" + ;; +4*) + url="http://qt-project.org/doc/qt-${version}/classes.html" + ;; +*) + echo "*** Error: Only Qt4 and Qt5 supported!" +esac + +if [ -n "$version" ]; then + tmp=`mktemp` + wget -O $tmp "$url" + cat $tmp | egrep '^<dd><a href=".*\.html">.*</a></dd>$' \ + | sed -e 's,<dd><a href=".*\.html">\(.*\)</a></dd>,<item> \1 </item>,' \ + | grep -v 'qoutputrange' + rm $tmp +else + cat <<EOF +Usage: + $0 Qt-version + +Note: Only major and minor version required + +Example: + $0 4.8 +EOF +fi diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/get-Qt-macros.sh b/src/libs/3rdparty/syntax-highlighting/data/generators/get-Qt-macros.sh new file mode 100644 index 0000000000..db2a32d7a3 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/get-Qt-macros.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# +# Copyright (c) 2011-2012 by Alex Turbov +# +# Simplest (and stupid) way to get #defines from a header file(s) +# +# TODO Think about to use clang to get (an actual) list of free functions and/or types, classes, etc +# Using python bindings it seems possible and not so hard to code... +# + +basepath=$1 +shift + +if [ -n "$*" ]; then + for f in $*; do + egrep '^\s*#\s*define\s+(Q|QT|QT3)_' ${basepath}/$f + done \ + | sed 's,^\s*#\s*define\s\+\(Q[A-Z0-9_]\+\).*,<item> \1 </item>,' \ + | sort \ + | uniq \ + | grep -v EXPORT \ + | grep -v QT_BEGIN_ \ + | grep -v QT_END_ \ + | grep -v QT_MANGLE_ +else + cat <<EOF +Usage: + $0 basepath [qt-header-filenames] + +Example: + $0 /usr/include/qt4/Qt qglobal.h qconfig.h qfeatures.h +EOF +fi diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/nsis-gen.py b/src/libs/3rdparty/syntax-highlighting/data/generators/nsis-gen.py new file mode 100644 index 0000000000..4f03bd44ff --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/nsis-gen.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +from __future__ import print_function + +tokens = [] +with open("makensiscmdhelp.output") as f: # output from `makensis /cmdhelp` + for line in f: + if line.startswith(" "): + continue # line continuation + + tokens.append(line.split()[0]) + +keywords = [x[1:] for x in tokens if x.startswith("!")] +basefuncs = [x for x in tokens if not x.startswith("!")] + +print("KEYWORDS") +for keyword in keywords: + print("<item> %s </item>" % keyword) +print() + +print("BASEFUNCS") +for basefunc in basefuncs: + print("<item> %s </item>" % basefunc) diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/qmake-gen.py b/src/libs/3rdparty/syntax-highlighting/data/generators/qmake-gen.py new file mode 100644 index 0000000000..3b20361708 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/qmake-gen.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python + +# Copyright (C) 2016 Kevin Funk <kfunk@kde.org> +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published by +# the Free Software Foundation; either version 2 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 Library 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 <http://www.gnu.org/licenses/>. + +# This script will print XML-like code you can put into the qmake.xml +# syntax definition file +# +# Prerequisite: You need to have a qtbase checkout somewhere +# +# Usage: qmake-gen.py /path/to/qtbase/ + +from __future__ import print_function + +import subprocess +import os +import sys + +qt5Source = sys.argv[1] + +qmakeKeywords = subprocess.check_output("ag --nofilename 'QMAKE_[A-Z_0-9]+' {0}/mkspecs -o".format(qt5Source), shell=True).split(os.linesep) +extraKeywords = subprocess.check_output("sed -nr 's/\\\section1 ([A-Z_0-9]{{2,100}}).*/\\1/p' {0}/qmake/doc/src/qmake-manual.qdoc".format(qt5Source), shell=True).split(os.linesep) +keywords = [] +keywords = [x.strip() for x in qmakeKeywords] +keywords += [x.strip() for x in extraKeywords] +keywords = list(set(keywords)) # remove duplicates +keywords.sort() + +functions = subprocess.check_output("sed -nr 's/\{{ \\\"(.+)\\\", T_.+/\\1/p' {0}/qmake/library/qmakebuiltins.cpp".format(qt5Source), shell=True).split(os.linesep) +functions.sort() + +def printItems(container): + for item in container: + trimmedText = item.strip() + if not trimmedText: + continue + + print("<item> %s </item>" % trimmedText) + print() + +print("KEYWORDS") +printItems(keywords) + +print("FUNCTIONS") +printItems(functions) diff --git a/src/libs/3rdparty/syntax-highlighting/data/schema/language.xsd b/src/libs/3rdparty/syntax-highlighting/data/schema/language.xsd new file mode 100644 index 0000000000..6f05aad7b5 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/schema/language.xsd @@ -0,0 +1,668 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2001 Joseph Wenninger <jowenn@kde.org> + modified (c) 2002 Anders Lund <anders@alweb.dk> + modified (c) 2003 Simon Huerlimann <simon.huerlimann@access.unizh.ch> + modified (c) 2005 Dominik Haumann <dhdev@gmx.de> + modified (c) 2008 Wilbert Berendsen <info@wilbertberendsen.nl> + + This file describes the XML format used for syntax highlight descriptions + for the Kate text editor (http://kate.kde.org), which is part of the KDE + desktop environment (http://www.kde.org). + You'll find the "Writing a Kate Highlighting XML File HOWTO" at + http://kate.kde.org/doc/hlhowto.php + + This format is identified using the SYSTEM identifier + SYSTEM "language.dtd" + + Files using this format should include a DOCTYPE declaration like this: + <!DOCTYPE language SYSTEM "language.dtd"> + + You can validate your syntax files using "validatehl.sh yourSyntax.xml". + This needs xmllint from the libxml2 XML library. + + In any case, the katehighlightingindexer will validate all files bundled + with KTextEditor during compile time and fail on errors. + + To use your syntax file, copy it to ~/.local/share/katepart5/syntax/ in + your home directory. You have to open a new instance of kwrite/kate to use + the new syntax file. + + TODO + - find a more readable way for the - -dtdvalid stuff, it's just annoying + xml comments don't allow it. +--> +<!-- + Entity declarations + You can use '&per;' instead of '.'. This seems to be useful in <item> elements. + + TODO + - Are there any more such pre-defined entities? +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> + <!-- + Default Styles + Allowed predefined default styles for itemData, available are: + - dsNormal, used for normal text + - dsKeyword, used for keywords + - dsFunction, used for function calls + - dsVariable, used for variables + - dsControlFlow, used for control flow, e.g. if, then, else, continue, break + - dsOperator, used for operators such as +, -, *, :: + - dsBuiltIn, used for built-in language classes and functions + - dsExtension,used for extensions, such as boost, Qt + - dsPreprocessor, used for preprocessor statements + - dsAttribute,used for attributes, e.g. @override in java + + - dsChar, used for a character + - dsSpecialChar, used for escaped characters + - dsString, used for strings + - dsVerbatimString, used for strings such as HERE docs + - dsSpecialString, used for strings such as regular expressions or LaTeX math mode + - dsImport, used for includes, imports and modules + + - dsDataType, used for data types + - dsDecVal, used for decimal values + - dsBaseN, used for values with a base other than 10 + - dsFloat, used for float values + - dsConstant, used for language constants + + - dsComment, used for comments + - dsDocumentation, used for comments that are API documentation + - dsAnnotation, used for annotation in comments, e.g. @param in doxygen + - dsCommentVar, used for variables in comments, e.g. after @param in doxygen + - dsRegionMarker, used for region markers + - dsInformation, used for information in comments, e.g. @note in doxygen + - dsWarning, used for warnings in comments, e.g. @warning in doxygen + - dsAlert, used for warning messages such as TODO, WARNING in comments + + - dsOthers, used for 'other' things + - dsError, used for error highlighting. + --> + <xs:simpleType name="defStyles"> + <xs:restriction base="xs:token"> + <xs:enumeration value="dsNormal"/> + <xs:enumeration value="dsKeyword"/> + <xs:enumeration value="dsFunction"/> + <xs:enumeration value="dsVariable"/> + <xs:enumeration value="dsControlFlow"/> + <xs:enumeration value="dsOperator"/> + <xs:enumeration value="dsBuiltIn"/> + <xs:enumeration value="dsExtension"/> + <xs:enumeration value="dsPreprocessor"/> + <xs:enumeration value="dsAttribute"/> + <xs:enumeration value="dsChar"/> + <xs:enumeration value="dsSpecialChar"/> + <xs:enumeration value="dsString"/> + <xs:enumeration value="dsVerbatimString"/> + <xs:enumeration value="dsSpecialString"/> + <xs:enumeration value="dsImport"/> + <xs:enumeration value="dsDataType"/> + <xs:enumeration value="dsDecVal"/> + <xs:enumeration value="dsBaseN"/> + <xs:enumeration value="dsFloat"/> + <xs:enumeration value="dsConstant"/> + <xs:enumeration value="dsComment"/> + <xs:enumeration value="dsDocumentation"/> + <xs:enumeration value="dsAnnotation"/> + <xs:enumeration value="dsCommentVar"/> + <xs:enumeration value="dsRegionMarker"/> + <xs:enumeration value="dsInformation"/> + <xs:enumeration value="dsWarning"/> + <xs:enumeration value="dsAlert"/> + <xs:enumeration value="dsOthers"/> + <xs:enumeration value="dsError"/> + </xs:restriction> + </xs:simpleType> + <!-- + Language specification + name: The name of this syntax description. Used in the Highlightning Mode menu + section: The logical group to which this syntax description belongs. Used for sub menus + extensions: A file glob or pattern to decide for which documents to use this syntax description + style: The style that this highlighter provides. It is used through required-syntax-style by the indenters. [optional] + mimetype: A list of mimetypes to decide for which documents to use this syntax description [optional] + version: Version number of this syntax description [optional] + kateversion: Kate version required for using this file [optional] + casesensitive: Whether text is matched case sensitive. [boolean, optional, default=true] FIXME: This is not implemented yet + priority: Priority of this language, if more than one are usable for the file [optional] + author: Name of author of this hl file [optional] + license: License for this hl file [optional] + indenter: Name of the Indenter to use for this highlighting mode per default, like "cstyle" [optional] + hidden: Should it be hidden in menu [boolean, optional, default=false] + + TODO + - Which matches are affected by casesensitive? keyword, RegExpr, StringDetect, WordDetect...? + + WARNING: due to helper scripts, the language opening tag must be on a + *single line* and *cannot* be split in multiple lines. + + --> + <xs:element name="language"> + <xs:complexType> + <xs:sequence> + <xs:element ref="highlighting"/> + <xs:element minOccurs="0" ref="general"/> + <xs:element minOccurs="0" ref="spellchecking"/> + </xs:sequence> + <xs:attribute name="name" use="required"/> + <xs:attribute name="section" use="required" type="xs:NMTOKEN"/> + <xs:attribute name="extensions" use="required"/> + <xs:attribute name="version" use="required" type="xs:integer"/> + <xs:attribute name="kateversion" use="required" type="xs:decimal"/> + <xs:attribute name="style"/> + <xs:attribute name="mimetype"/> + <xs:attribute name="casesensitive" type="xs:boolean"/> + <xs:attribute name="priority" type="xs:integer"/> + <xs:attribute name="author"/> + <xs:attribute name="license"/> + <xs:attribute name="indenter"/> + <xs:attribute name="hidden" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- General options --> + <xs:element name="general"> + <xs:complexType> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element ref="folding"/> + <xs:element ref="comments"/> + <xs:element ref="keywords"/> + <xs:element ref="emptyLines"/> + </xs:choice> + </xs:complexType> + </xs:element> + <!-- + List of folding + indentationsensitive: If true, the code folding is indentation based. + --> + <xs:element name="folding"> + <xs:complexType> + <xs:attribute name="indentationsensitive" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- List of comments --> + <xs:element name="comments"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="comment"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- + Comment specification + name: Type of this comment. Allowed are 'singleLine' and 'multiLine' + start: The comment starts with this string + end: The comment ends with this string [optional] + region: The region name of the foldable multiline comment. If you have + beginRegion="Comment" ... endRegion="Comment" you should use + region="Comment". This way uncomment works even if you do not + select all the text of the multiline comment. + position: only availalbe for type singleLine. Default is column0, to insert + the single line comment characters after the whitespaces + (= before the first non space) set position to "afterwhitespace" + --> + <xs:element name="comment"> + <xs:complexType> + <xs:attribute name="name" use="required"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="singleLine"/> + <xs:enumeration value="multiLine"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="start" use="required"/> + <xs:attribute name="end"/> + <xs:attribute name="region"/> + <xs:attribute name="position"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="afterwhitespace"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <!-- + Keyword options + casesensitive: Whether keywords are matched case sensitive. [boolean, optional, default=true] + weakDeliminator: Add weak deliminators [optional, default: ""] + additionalDeliminator: Add deliminators [optional] + wordWrapDeliminator: characters that are used to wrap long lines [optional] + + --> + <xs:element name="keywords"> + <xs:complexType> + <xs:attribute name="casesensitive" type="xs:boolean"/> + <xs:attribute name="weakDeliminator"/> + <xs:attribute name="additionalDeliminator"/> + <xs:attribute name="wordWrapDeliminator"/> + </xs:complexType> + </xs:element> + <!-- + Treat lines that match a given regular expression as empty line. This is + needed for example in Python for comments (#...), as then the indentation + based folding should ignore the line. + This is only implemented for indentation based folding. If the folding + is not indentation based, the emptyLines are not used. + --> + <xs:element name="emptyLines"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="emptyLine"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- + One empty line regular expression. + regexpr: The regular expression, example from python: ^\s*#.*$ + casesensitive: Sets, whether the regular expression match is performed case sesitive + --> + <xs:element name="emptyLine"> + <xs:complexType> + <xs:attribute name="regexpr" use="required"/> + <xs:attribute name="casesensitive" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- Highlighting specification --> + <xs:element name="highlighting"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="list"/> + <xs:element ref="contexts"/> + <xs:element ref="itemDatas"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- + List of items + name: Name of this list + --> + <xs:element name="list"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/> + </xs:sequence> + <xs:attribute name="name" use="required"/> + </xs:complexType> + </xs:element> + <!-- + List item + contains string used in <keyword> + --> + <xs:element name="item" type="xs:string"/> + <!-- List of contexts --> + <xs:element name="contexts"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="context"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- + context specification + name: The name of this context specification. Used in '*Context' attributes [optional] + attribute: The name of the ItemData to be used for matching text + lineEndContext: Next context if end of line is encountered + lineEmptyContext: Next context if an empty line is encountered [optional] + fallthrough: Use a fallthrough context [optional] + fallthroughContext: Fall through to this context [optional] + dynamic: Dynamic context [boolean, optional] + noIndentationBasedFolding: Python uses indentation based folding. However, Python has parts where + it does not use indentation based folding (e.g. for """ strings). In this case + switch to an own context and set this attribute to true. Then the indentation + based folding will ignore this parts and not change folding markers. [optional] + + TODO: + - Explain fallthrough. + - Do we need fallthrough at all? It could be true, if fallthroughContext is set, false otherwise. + - Make lineEndContext optional, defaults to '#stay'. Reasonable? + --> + <xs:element name="context"> + <xs:complexType> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element ref="keyword"/> + <xs:element ref="Float"/> + <xs:element ref="HlCOct"/> + <xs:element ref="HlCHex"/> + <xs:element ref="HlCFloat"/> + <xs:element ref="Int"/> + <xs:element ref="DetectChar"/> + <xs:element ref="Detect2Chars"/> + <xs:element ref="AnyChar"/> + <xs:element ref="StringDetect"/> + <xs:element ref="WordDetect"/> + <xs:element ref="RegExpr"/> + <xs:element ref="LineContinue"/> + <xs:element ref="HlCStringChar"/> + <xs:element ref="RangeDetect"/> + <xs:element ref="HlCChar"/> + <xs:element ref="IncludeRules"/> + <xs:element ref="DetectSpaces"/> + <xs:element ref="DetectIdentifier"/> + </xs:choice> + <xs:attribute name="name"/> + <xs:attribute name="attribute" use="required"/> + <xs:attribute name="lineEndContext" use="required"/> + <xs:attribute name="lineEmptyContext"/> + <xs:attribute name="fallthrough" type="xs:boolean"/> + <xs:attribute name="fallthroughContext"/> + <xs:attribute name="dynamic" type="xs:boolean"/> + <xs:attribute name="noIndentationBasedFolding" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- + Common attributes + attribute: The name of the ItemData to be used for matching text + context: The name of the context to go to when this rule matches + beginRegion: Begin a region of type beginRegion [optional] + endRegion: End a region of type endRegion [optional] + firstNonSpace: should this rule only match at first non-space char in line? + column: should this rule only match at given column in line (column == count of chars in front) + --> + <xs:attributeGroup name="commonAttributes"> + <xs:attribute name="attribute"/> + <xs:attribute name="context"/> + <xs:attribute name="beginRegion"/> + <xs:attribute name="endRegion"/> + <xs:attribute name="lookAhead" type="xs:boolean"/> + <xs:attribute name="firstNonSpace" type="xs:boolean"/> + <xs:attribute name="column" type="xs:integer"/> + </xs:attributeGroup> + <!-- + Detect members of a keyword list + commonAttributes: Common attributes + insensitive: Is this list case-insensitive? [boolean, optional, see note] + String: Name of the list + weakDelimiter: Use weak deliminator + + By default, case sensitivity is determined from <keywords casesensitive> in + <general> (default=true), but can be overridden per-list with 'insensitive'. + + TODO: + - Should be weakDeliminator + - Explain deliminator + - Doesn't seem to be supported in highligh.cpp + --> + <xs:element name="keyword"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="insensitive" type="xs:boolean"/> + <xs:attribute name="String" use="required"/> + <xs:attribute name="weakDelimiter"/> + </xs:complexType> + </xs:element> + <!-- + Detect a floating point number + commonAttributes: Common attributes + --> + <xs:element name="Float"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- + Detect an octal number + commonAttributes: Common attributes + --> + <xs:element name="HlCOct"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- + Detect a hexadecimal number + commonAttributes: Common attributes + --> + <xs:element name="HlCHex"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- + Detect a C-style floating point number + commonAttributes: Common attributes + --> + <xs:element name="HlCFloat"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- + Detect C-style character + commonAttributes: Common attributes + + TODO + - Did I get this right? + --> + <xs:element name="HlCChar"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- + Detect an integer number + commonAttributes: Common attributes + --> + <xs:element name="Int"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- + Detect a single character + commonAttributes: Common attributes + char: The character to look for + dynamic: Uses 1 .. 9 as placeholders for dynamic arguments (in fact, first char of arg...) [boolean, optional, default=false] + --> + <xs:element name="DetectChar"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="char" use="required"/> + <xs:attribute name="dynamic" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- + Detect two characters + commonAttributes: Common attributes + char: The first character + char1: The second character + --> + <xs:element name="Detect2Chars"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="char" use="required"/> + <xs:attribute name="char1" use="required"/> + </xs:complexType> + </xs:element> + <!-- + Detect any group of characters + commonAttributes: Common attributes + String: A string representing the characters to look for + + TODO + - Description is not descriptive enough, I'm not sure what it exactly does:-( + --> + <xs:element name="AnyChar"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="String" use="required"/> + </xs:complexType> + </xs:element> + <!-- + Detect a string + commonAttributes: Common attributes + String: The string to look for + insensitive: Whether the string is matched case INsensitive. [boolean, optional, default=false] + dynamic: Uses %1 .. %9 as placeholders for dynamic arguments [boolean, optional, default=false] + + TODO + - What's default of insensitive? I'm not sure... + --> + <xs:element name="StringDetect"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="String" use="required"/> + <xs:attribute name="insensitive" type="xs:boolean"/> + <xs:attribute name="dynamic" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- + Detect a word, i.e. a string at word boundaries + commonAttributes: Common attributes + String: The string to look for + insensitive: Whether the string is matched case INsensitive. [boolean, optional, default=false] + + TODO + - What's default of insensitive? I'm not sure... + --> + <xs:element name="WordDetect"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="String" use="required"/> + <xs:attribute name="insensitive" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- + Detect a match of a regular expression + commonAttributes: Common attributes + String: The regular expression pattern + insensitive: Whether the text is matched case INsensitive. [boolean, optional, default=false] + minimal: Wheather to use minimal matching for wild cards in the pattern [boolean, optional, default='false'] + dynamic: Uses %1 .. %9 as placeholders for dynamic arguments [boolean, optional, default=false] + --> + <xs:element name="RegExpr"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="String" use="required"/> + <xs:attribute name="insensitive" type="xs:boolean"/> + <xs:attribute name="minimal" type="xs:boolean"/> + <xs:attribute name="dynamic" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- + Detect a line continuation + commonAttributes: Common attributes + char: The char marking the end of line [char, optional, default='\\'] + --> + <xs:element name="LineContinue"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="char"/> + </xs:complexType> + </xs:element> + <!-- + Detect a C-style escaped character + commonAttributes: Common attributes + + TODO: + - Did I get this right? Only one character, or a string? + --> + <xs:element name="HlCStringChar"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- + Detect a range of characters + commonAttributes: Common attributes + char: The character starting the range + char1: The character terminating the range + --> + <xs:element name="RangeDetect"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + <xs:attribute name="char" use="required"/> + <xs:attribute name="char1" use="required"/> + </xs:complexType> + </xs:element> + <!-- + Include Rules of another context + context: The name of the context to include + includeAttrib: If this is true, the host context of the IncludeRules + will be given the attribute of the source context + --> + <xs:element name="IncludeRules"> + <xs:complexType> + <xs:attribute name="context" use="required"/> + <xs:attribute name="includeAttrib" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- Detect all following Spaces --> + <xs:element name="DetectSpaces"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- Detect an Identifier ( == LETTER(LETTER|NUMBER|_)*) --> + <xs:element name="DetectIdentifier"> + <xs:complexType> + <xs:attributeGroup ref="commonAttributes"/> + </xs:complexType> + </xs:element> + <!-- List of attributes --> + <xs:element name="itemDatas"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="itemData"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- + Attribute specification + name CDATA #REQUIRED The name of this attribute + defStyleNum CDATA #REQUIRED The index of the default style to use + color CDATA #IMPLIED Color for this style, either a hex triplet, a name or some other format recognized by Qt [optional] + selColor CDATA #IMPLIED The color for this style when text is selected [optional] + italic CDATA #IMPLIED Whether this attribute should be rendered using an italic typeface [optional, boolean, default=false] + bold CDATA #IMPLIED Whether this attribute should be renederd using a bold typeface [optional, boolean, default=false] + underline CDATA #IMPLIED Whether this attribute should be underlined [optional, boolean, default=false] + strikeOut CDATA #IMPLIED Whether this attribute should be striked out [optional, boolean, default=false] + backgroundColor CDATA #IMPLIED The background color for this style [optional] + selBackgroundColor CDATA #IMPLIED The background color for this style when text is selected [optional] + spellChecking CDATA #IMPLIED Whether this attribute should be spell checked [optional, boolean, default=true] + --> + <xs:element name="itemData"> + <xs:complexType> + <xs:attribute name="name" use="required"/> + <xs:attribute name="defStyleNum" use="required" type="defStyles"/> + <xs:attribute name="color"/> + <xs:attribute name="selColor"/> + <xs:attribute name="italic" type="xs:boolean"/> + <xs:attribute name="bold" type="xs:boolean"/> + <xs:attribute name="underline" type="xs:boolean"/> + <xs:attribute name="strikeOut" type="xs:boolean"/> + <xs:attribute name="backgroundColor"/> + <xs:attribute name="selBackgroundColor"/> + <xs:attribute name="spellChecking" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <!-- Spellchecking specification --> + <xs:element name="spellchecking"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" ref="encodings"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- List of character encodings --> + <xs:element name="encodings"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="encoding"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- + Encoding specification + sequence CDATA #REQUIRED Character sequence of the encoding; must not contain new-line characters, i.e. \n or \r + character CDATA #IMPLIED Encoded character; must be of length 1 + ignored (%boolean;) #IMPLIED If true, then the encoding sequence is ignored for spellchecking + --> + <xs:element name="encoding"> + <xs:complexType> + <xs:attribute name="string" use="required"/> + <xs:attribute name="char"/> + <xs:attribute name="ignored" type="xs:boolean"/> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/src/libs/3rdparty/syntax-highlighting/data/schema/validatehl.sh b/src/libs/3rdparty/syntax-highlighting/data/schema/validatehl.sh new file mode 100644 index 0000000000..06bf60ce35 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/schema/validatehl.sh @@ -0,0 +1,2 @@ +#!/bin/sh +xmllint --noout --schema language.xsd $@ diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax-data.qrc.in b/src/libs/3rdparty/syntax-highlighting/data/syntax-data.qrc.in new file mode 100644 index 0000000000..352d3f035b --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax-data.qrc.in @@ -0,0 +1,7 @@ +<!DOCTYPE RCC> +<RCC version="1.0"> +<qresource prefix="/org.kde.syntax-highlighting/syntax"> +<file alias="index.katesyntax">@CMAKE_CURRENT_BINARY_DIR@/index.katesyntax</file> +@SYNTAX_DATA_QRC_FILES_STRING@ +</qresource> +</RCC> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/alert.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/alert.xml new file mode 100644 index 0000000000..ec881f1503 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/alert.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<language version="5" kateversion="3.1" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" hidden="true"> + <highlighting> + <list name="alerts_hi"> + <item>ALERT</item> + <item>ATTENTION</item> + <item>DANGER</item> + <item>HACK</item> + <item>SECURITY</item> + </list> + <list name="alerts_mid"> + <item>BUG</item> + <item>FIXME</item> + <item>DEPRECATED</item> + <item>TASK</item> + <item>TODO</item> + <item>TBD</item> + <item>WARNING</item> + <item>CAUTION</item> + <item>NOLINT</item> + </list> + <list name="alerts_lo"> + <item>###</item> + <item>NOTE</item> + <item>NOTICE</item> + <item>TEST</item> + <item>TESTING</item> + </list> + <contexts> + <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" > + <StringDetect attribute="Region Marker" context="#stay" String="{{{" beginRegion="AlertRegion1" /> + <StringDetect attribute="Region Marker" context="#stay" String="}}}" endRegion="AlertRegion1" /> + <WordDetect attribute="Region Marker" context="#stay" String="BEGIN" beginRegion="AlertRegion2" /> + <WordDetect attribute="Region Marker" context="#stay" String="END" endRegion="AlertRegion2" /> + <keyword attribute="Alert Level 1" context="#stay" String="alerts_hi" /> + <keyword attribute="Alert Level 2" context="#stay" String="alerts_mid" /> + <keyword attribute="Alert Level 3" context="#stay" String="alerts_lo" /> + </context> + </contexts> + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal"/> + <itemData name="Alert Level 1" defStyleNum="dsAlert" color="#e85848" selColor="#e85848" backgroundColor="#451e1a" /> + <itemData name="Alert Level 2" defStyleNum="dsAlert" color="#ca9219" selColor="#ca9219" backgroundColor="#451e1a" /> + <itemData name="Alert Level 3" defStyleNum="dsAlert" color="#81ca2d" selColor="#81ca2d" /> + <itemData name="Region Marker" defStyleNum="dsRegionMarker"/> + </itemDatas> + </highlighting> + <general> + <keywords casesensitive="1"/> + </general> +</language> +<!-- kate: indent-width 2; --> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/bash.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/bash.xml new file mode 100644 index 0000000000..cdfdf95844 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/bash.xml @@ -0,0 +1,980 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#%@-]*"> + <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*"> + <!ENTITY word "[^|&;()<>\s]+"> <!-- see man bash --> + <!ENTITY eos "(?=($|\s))"> <!-- eol or space following --> + <!ENTITY noword "(?![\w$+-])"> <!-- no word, $, + or - following --> + <!ENTITY pathpart "([\w_@.%*?+-]|\\ )"> <!-- valid character in a file name --> +]> +<language name="Bash" version="9" kateversion="5.0" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL"> + +<!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl) + Changes by Matthew Woehlke (mw_triad@users.sourceforge.net) + Changes by Sebastian Pipping (webmaster@hartwork.org) + Changes by Luiz Angelo Daros de Luca (luizluca@gmail.com) + Released under the LGPL, part of kdelibs/kate --> + + <highlighting> + <list name="keywords"> + <item>else</item> + <item>for</item> + <item>function</item> + <item>in</item> + <item>select</item> + <item>until</item> + <item>while</item> + <item>elif</item> + <item>then</item> + <item>set</item> + </list> + + <list name="builtins"> + <item>:</item> + <item>source</item> + <item>alias</item> + <item>bg</item> + <item>bind</item> + <item>break</item> + <item>builtin</item> + <item>cd</item> + <item>caller</item> + <item>command</item> + <item>compgen</item> + <item>complete</item> + <item>continue</item> + <item>dirs</item> + <item>disown</item> + <item>echo</item> + <item>enable</item> + <item>eval</item> + <item>exec</item> + <item>exit</item> + <item>fc</item> + <item>fg</item> + <item>getopts</item> + <item>hash</item> + <item>help</item> + <item>history</item> + <item>jobs</item> + <item>kill</item> + <item>let</item> + <item>logout</item> + <item>popd</item> + <item>printf</item> + <item>pushd</item> + <item>pwd</item> + <item>return</item> + <item>set</item> + <item>shift</item> + <item>shopt</item> + <item>suspend</item> + <item>test</item> + <item>time</item> + <item>times</item> + <item>trap</item> + <item>type</item> + <item>ulimit</item> + <item>umask</item> + <item>unalias</item> + <item>wait</item> + </list> + + <list name="builtins_var"> + <item>export</item> + <item>unset</item> + <item>declare</item> + <item>typeset</item> + <item>local</item> + <item>read</item> + <item>readonly</item> + </list> + + <list name="unixcommands"> + <!-- /bin --> + <item>arch</item> + <item>awk</item> + <item>bash</item> + <item>bunzip2</item> + <item>bzcat</item> + <item>bzcmp</item> + <item>bzdiff</item> + <item>bzegrep</item> + <item>bzfgrep</item> + <item>bzgrep</item> + <item>bzip2</item> + <item>bzip2recover</item> + <item>bzless</item> + <item>bzmore</item> + <item>cat</item> + <item>chattr</item> + <item>chgrp</item> + <item>chmod</item> + <item>chown</item> + <item>chvt</item> + <item>cp</item> + <item>date</item> + <item>dd</item> + <item>deallocvt</item> + <item>df</item> + <item>dir</item> + <item>dircolors</item> + <item>dmesg</item> + <item>dnsdomainname</item> + <item>domainname</item> + <item>du</item> + <item>dumpkeys</item> + <item>echo</item> + <item>ed</item> + <item>egrep</item> + <item>false</item> + <item>fgconsole</item> + <item>fgrep</item> + <item>fuser</item> + <item>gawk</item> + <item>getkeycodes</item> + <item>gocr</item> + <item>grep</item> + <item>groff</item> + <item>groups</item> + <item>gunzip</item> + <item>gzexe</item> + <item>gzip</item> + <item>hostname</item> + <item>igawk</item> + <item>install</item> + <item>kbd_mode</item> + <item>kbdrate</item> + <item>killall</item> + <item>last</item> + <item>lastb</item> + <item>link</item> + <item>ln</item> + <item>loadkeys</item> + <item>loadunimap</item> + <item>login</item> + <item>ls</item> + <item>lsattr</item> + <item>lsmod</item> + <item>lsmod.old</item> + <item>lzcat</item> + <item>lzcmp</item> + <item>lzdiff</item> + <item>lzegrep</item> + <item>lzfgrep</item> + <item>lzgrep</item> + <item>lzless</item> + <item>lzcat</item> + <item>lzma</item> + <item>lzmainfo</item> + <item>lzmore</item> + <item>mapscrn</item> + <item>mesg</item> + <item>mkdir</item> + <item>mkfifo</item> + <item>mknod</item> + <item>mktemp</item> + <item>more</item> + <item>mount</item> + <item>mv</item> + <item>nano</item> + <item>netstat</item> + <item>nisdomainname</item> + <item>nroff</item> + <item>openvt</item> + <item>pgawk</item> + <item>pidof</item> + <item>ping</item> + <item>ps</item> + <item>pstree</item> + <item>pwd</item> + <item>rbash</item> + <item>readlink</item> + <item>red</item> + <item>resizecons</item> + <item>rm</item> + <item>rmdir</item> + <item>run-parts</item> + <item>sash</item> + <item>sed</item> + <item>setfont</item> + <item>setkeycodes</item> + <item>setleds</item> + <item>setmetamode</item> + <item>setserial</item> + <item>sh</item> + <item>showkey</item> + <item>shred</item> + <item>sleep</item> + <item>ssed</item> + <item>stat</item> + <item>stty</item> + <item>su</item> + <item>sync</item> + <item>tar</item> + <item>tempfile</item> + <item>touch</item> + <item>troff</item> + <item>true</item> + <item>umount</item> + <item>uname</item> + <item>unicode_start</item> + <item>unicode_stop</item> + <item>unlink</item> + <item>unlzma</item> + <item>unxz</item> + <item>utmpdump</item> + <item>uuidgen</item> + <item>vdir</item> + <item>wall</item> + <item>wc</item> + <item>xz</item> + <item>xzcat</item> + <item>ypdomainname</item> + <item>zcat</item> + <item>zcmp</item> + <item>zdiff</item> + <item>zegrep</item> + <item>zfgrep</item> + <item>zforce</item> + <item>zgrep</item> + <item>zless</item> + <item>zmore</item> + <item>znew</item> + <item>zsh</item> + + <!-- some from /usr/bin --> + <item>aclocal</item> + <item>aconnect</item> + <item>aplay</item> + <item>apm</item> + <item>apmsleep</item> + <item>apropos</item> + <item>ar</item> + <item>arecord</item> + <item>as</item> + <item>as86</item> + <item>autoconf</item> + <item>autoheader</item> + <item>automake</item> + <item>awk</item> + <item>basename</item> + <item>bc</item> + <item>bison</item> + <item>c++</item> + <item>cal</item> + <item>cat</item> + <item>cc</item> + <item>cdda2wav</item> + <item>cdparanoia</item> + <item>cdrdao</item> + <item>cd-read</item> + <item>cdrecord</item> + <item>chfn</item> + <item>chgrp</item> + <item>chmod</item> + <item>chown</item> + <item>chroot</item> + <item>chsh</item> + <item>clear</item> + <item>cmp</item> + <item>co</item> + <item>col</item> + <item>comm</item> + <item>cp</item> + <item>cpio</item> + <item>cpp</item> + <item>cut</item> + <item>dc</item> + <item>dd</item> + <item>df</item> + <item>diff</item> + <item>diff3</item> + <item>dir</item> + <item>dircolors</item> + <item>directomatic</item> + <item>dirname</item> + <item>du</item> + <item>env</item> + <item>expr</item> + <item>fbset</item> + <item>file</item> + <item>find</item> + <item>flex</item> + <item>flex++</item> + <item>fmt</item> + <item>free</item> + <item>ftp</item> + <item>funzip</item> + <item>fuser</item> + <item>g++</item> + <item>gawk</item> + <item>gc</item> + <item>gcc</item> + <item>clang</item> + <item>valgrind</item> + <item>xdg-open</item> + <item>cmake</item> + <item>qmake</item> + <item>svn</item> + <item>git</item> + <item>rsync</item> + <item>gdb</item> + <item>getent</item> + <item>getopt</item> + <item>gettext</item> + <item>gettextize</item> + <item>gimp</item> + <item>gimp-remote</item> + <item>gimptool</item> + <item>gmake</item> + <item>gs</item> + <item>head</item> + <item>hexdump</item> + <item>id</item> + <item>install</item> + <item>join</item> + <item>kill</item> + <item>killall</item> + <item>ld</item> + <item>ld86</item> + <item>ldd</item> + <item>less</item> + <item>lex</item> + <item>ln</item> + <item>locate</item> + <item>lockfile</item> + <item>logname</item> + <item>lp</item> + <item>lpr</item> + <item>ls</item> + <item>lynx</item> + <item>m4</item> + <item>make</item> + <item>man</item> + <item>mkdir</item> + <item>mknod</item> + <item>msgfmt</item> + <item>mv</item> + <item>namei</item> + <item>nasm</item> + <item>nawk</item> + <item>nice</item> + <item>nl</item> + <item>nm</item> + <item>nm86</item> + <item>nmap</item> + <item>nohup</item> + <item>nop</item> + <item>od</item> + <item>passwd</item> + <item>patch</item> + <item>pcregrep</item> + <item>pcretest</item> + <item>perl</item> + <item>perror</item> + <item>pidof</item> + <item>pr</item> + <item>printf</item> + <item>procmail</item> + <item>prune</item> + <item>ps2ascii</item> + <item>ps2epsi</item> + <item>ps2frag</item> + <item>ps2pdf</item> + <item>ps2ps</item> + <item>psbook</item> + <item>psmerge</item> + <item>psnup</item> + <item>psresize</item> + <item>psselect</item> + <item>pstops</item> + <item>rcs</item> + <item>rev</item> + <item>rm</item> + <item>scp</item> + <item>sed</item> + <item>seq</item> + <item>setterm</item> + <item>shred</item> + <item>size</item> + <item>size86</item> + <item>skill</item> + <item>slogin</item> + <item>snice</item> + <item>sort</item> + <item>sox</item> + <item>split</item> + <item>ssh</item> + <item>ssh-add</item> + <item>ssh-agent</item> + <item>ssh-keygen</item> + <item>ssh-keyscan</item> + <item>stat</item> + <item>strings</item> + <item>strip</item> + <item>sudo</item> + <item>suidperl</item> + <item>sum</item> + <item>tac</item> + <item>tail</item> + <item>tee</item> + <item>test</item> + <item>tr</item> + <item>uniq</item> + <item>unlink</item> + <item>unzip</item> + <item>updatedb</item> + <item>updmap</item> + <item>uptime</item> + <item>users</item> + <item>vmstat</item> + <item>w</item> + <item>wc</item> + <item>wget</item> + <item>whatis</item> + <item>whereis</item> + <item>which</item> + <item>who</item> + <item>whoami</item> + <item>write</item> + <item>xargs</item> + <item>yacc</item> + <item>yes</item> + <item>zip</item> + <item>zsoelim</item> + + <!-- others --> + <item>dcop</item> + <item>kdialog</item> + <item>kfile</item> + <item>xhost</item> + <item>xmodmap</item> + <item>xset</item> + </list> + + + <contexts> + <context attribute="Normal Text" lineEndContext="#stay" name="Start"> + <IncludeRules context="FindAll" /> + </context> + +<!-- ====== The following rulessets are meant to be included ======== --> + <!-- FindAll tries to interpret everything --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindAll"> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- FindMost tries to interpret anything except commands --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindMost"> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + + <!-- FindComments consumes shell comments till EOL --> + <context attribute="Normal Text" lineEndContext="#pop" name="FindComments"> + <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/> + <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="Comment"> + <IncludeRules context="##Alerts" /> + <IncludeRules context="##Modelines" /> + </context> + + <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese --> + <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsParen"> + <DetectChar attribute="Comment" context="CommentParen" char="#" firstNonSpace="true"/> + <RegExpr attribute="Normal Text" context="CommentParen" String="[\s;](?=#)" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="CommentParen"> + <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" /> + <IncludeRules context="##Alerts" /> + </context> + + <!-- FindCommentsBackq consumes shell comments till EOL or a backquote --> + <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsBackq"> + <DetectChar attribute="Comment" context="CommentBackq" char="#" firstNonSpace="true"/> + <RegExpr attribute="Normal Text" context="CommentBackq" String="[\s;](?=#)" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="CommentBackq"> + <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" /> + <IncludeRules context="##Alerts" /> + </context> + + + <!-- FindCommands matches many items that can be expected outside strings, substitutions etc. --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindCommands"> + <IncludeRules context="FindSpecialCommands" /> + <IncludeRules context="FindNormalCommands" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="FindSpecialCommands"> + <!-- start expression in double parentheses --> + <Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" /> + <!-- start expression in double brackets --> + <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[&eos;" beginRegion="expression" column="0"/> + <RegExpr attribute="Keyword" context="ExprDblBracket" String="\s\[\[&eos;" beginRegion="expression" /> + <!-- start expression in single brackets --> + <RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression" column="0"/> + <RegExpr attribute="Builtin" context="ExprBracket" String="\s\[&eos;" beginRegion="expression" /> + <!-- start a group command with { --> + <RegExpr attribute="Keyword" context="Group" String="\{&eos;" beginRegion="group" /> + <!-- start a subshell --> + <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell" /> + <!-- match do and if blocks --> + <RegExpr attribute="Keyword" context="#stay" String="\bdo&noword;" beginRegion="do" /> + <RegExpr attribute="Keyword" context="#stay" String="\bdone&noword;" endRegion="do" /> + <RegExpr attribute="Keyword" context="#stay" String="\bif&eos;" beginRegion="if" /> + <RegExpr attribute="Keyword" context="#stay" String="\bfi&noword;" endRegion="if" /> + <!-- handle case as a special case --> + <RegExpr attribute="Keyword" context="Case" String="\bcase&noword;" beginRegion="case" /> + <!-- handle variable assignments --> + <RegExpr attribute="Variable" context="Assign" String="\b&varname;\+?=" /> + <RegExpr attribute="Variable" context="AssignSubscr" String="\b&varname;(?=\[.+\]\+?=)" /> + <!-- handle functions with function keyword before keywords --> + <StringDetect attribute="Function" context="#stay" String=":()" /> + <WordDetect attribute="Keyword" context="FunctionDef" String="function" /> + <!-- mark function definitions without function keyword --> + <RegExpr attribute="Function" context="#stay" String="&funcname;\s*\(\)" /> + <!-- handle keywords --> + <keyword attribute="Keyword" context="#stay" String="keywords" /> + <RegExpr attribute="Builtin" context="#stay" String="\.(?=\s)" /> + <!-- handle commands that have variable names as argument --> + <keyword attribute="Builtin" context="VarName" String="builtins_var" /> + <!-- handle here-string --> + <RegExpr attribute="Redirection" context="#stay" String="\d*<<<" /> + <!-- handle here document --> + <Detect2Chars attribute="Redirection" context="HereDoc" char="<" char1="<" lookAhead="true" /> + <!-- handle process subst --> + <RegExpr attribute="Redirection" context="ProcessSubst" String="[<>]\(" /> + <!-- handle redirection --> + <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(>{1,2}|<)(&[0-9]+-?)?|&>|>&|[0-9]*<>)" /> + <!-- handle &, &&, | and || --> + <RegExpr attribute="Control" context="#stay" String="([|&])\1?" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalCommands"> + <keyword attribute="Builtin" context="CommandArgs" String="builtins" /> + <keyword attribute="Command" context="CommandArgs" String="unixcommands" /> + <RegExpr attribute="OtherCommand" context="#stay" String="&pathpart;*(?=/)" /> + <RegExpr attribute="OtherCommand" context="#stay" String="~\w*" /> + <RegExpr attribute="OtherCommand" context="#stay" String="/&pathpart;*(?=([/);$`'"]|$))" /> + <RegExpr attribute="OtherCommand" context="CommandArgs" String="/&pathpart;*(?=([\s);$`'"]|$))" /> + <!-- This list is not complete. ie, ":" is missing but as it is in bash completition. --> + <RegExpr attribute="OtherCommand" context="CommandArgs" String="&pathpart;*" /> + </context> + + <!-- CommandArgs matches the items after a command --> + <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs"> + <LineContinue /> + <IncludeRules context="FindMost" /> + <RegExpr attribute="Keyword" context="#stay" String="\\$" /> + <!-- handle keywords --> + <RegExpr attribute="Option" context="#stay" String="\.(?=\s)" /> + <!-- handle here-string --> + <RegExpr attribute="Redirection" context="#stay" String="\d*<<<" /> + <!-- handle here document --> + <Detect2Chars attribute="Redirection" context="HereDoc" char="<" char1="<" lookAhead="true" /> + <!-- handle process subst --> + <RegExpr attribute="Redirection" context="ProcessSubst" String="[<>]\(" /> + <!-- handle redirection --> + <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(>{1,2}|<)(&[0-9]+-?)?|&>|>&|[0-9]*<>)" /> + <!-- handle &, &&, | and || --> + <RegExpr attribute="Control" context="#pop" String="([|&;])\1?" /> + <RegExpr attribute="Normal Text" context="#stay" String="[a-zA-Z_]+-[A-Za-z0-9_-]*" /> + <RegExpr attribute="Option" context="#stay" String="-?-[a-zA-Z_][A-Za-z0-9_-]*" /> + <keyword attribute="Option" context="#stay" String="keywords" /> + <AnyChar String=")}" context="#pop" lookAhead="true"/> + </context> + + <!-- FindCommands matches many items that can be expected outside strings, substitutions etc, when inside a Backquote --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindCommandsBackq"> + <IncludeRules context="FindSpecialCommands" /> + <IncludeRules context="FindNormalCommandsBackq" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalCommandsBackq"> + <keyword attribute="Builtin" context="CommandArgsBackq" String="builtins" /> + <keyword attribute="Command" context="CommandArgsBackq" String="unixcommands" /> + <RegExpr attribute="OtherCommand" context="#stay" String="&pathpart;*(?=/)" /> + <RegExpr attribute="OtherCommand" context="#stay" String="~\w*" /> + <RegExpr attribute="OtherCommand" context="#stay" String="/&pathpart;*(?=([/);$`'"]|$))" /> + <RegExpr attribute="OtherCommand" context="CommandArgsBackq" String="/&pathpart;*(?=([\s);$`'"]|$))" /> + <RegExpr attribute="OtherCommand" context="CommandArgsBackq" String="&pathpart;*" /> + </context> + <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgsBackq"> + <LineContinue /> + <DetectChar attribute="Keyword" context="#pop" char="`" lookAhead="true"/> + <IncludeRules context="CommandArgs" /> + </context> + + <!-- FindOthers contains various rules to mark different shell input --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindOthers"> + <IncludeRules context="Escapes" /> + <RegExpr attribute="Keyword" context="#stay" String="\\$" /> + <!-- Only highlighting closed braces. The "BraceExpansion" context corrects + the closure of braces and allows recursive braces (bug #387915). --> + <RegExpr attribute="Escape" context="BraceExpansion" String="\{(?=(\\[ \{\}]|[^\s\{\}]|\{(\\[ ]|\S)*\})+\})" /> + <RegExpr attribute="Path" context="#stay" String="&pathpart;*(?=/)" /> + <RegExpr attribute="Path" context="#stay" String="~\w*" /> + <RegExpr attribute="Path" context="#stay" String="/&pathpart;*(?=([\s/):;$`'"]|$))" /> + <!-- TODO: shell globs beside * and ? (in Path's) --> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="Escapes"> + <RegExpr attribute="Escape" context="#stay" String="\\[][;\\$`{}()|&<>* ]" /> + </context> + <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion"> + <DetectSpaces context="#pop" lookAhead="true" /> + <DetectChar attribute="Escape" context="#pop" char="}" /> + <DetectChar attribute="Escape" context="BraceExpansion" char="{" /> + <RegExpr attribute="Error" context="#stay" String="[^\s\{\}\\](?=\s|$)" /> + <IncludeRules context="Escapes" /> + <IncludeRules context="FindSubstitutions" /> + </context> + + <!-- FindStrings looks for single and double quoted strings, also with $-prefix --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings"> + <Detect2Chars attribute="Escape" context="#stay" char="\" char1="'" /> + <Detect2Chars attribute="Escape" context="#stay" char="\" char1=""" /> + <DetectChar attribute="String SingleQ" context="StringSQ" char="'" /> + <DetectChar attribute="String DoubleQ" context="StringDQ" char=""" /> + <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" /> + <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1=""" /> + </context> + + <!-- FindSubstitutions goes after anything starting with $ and ` and their escapes --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions"> + <RegExpr attribute="Variable" context="Subscript" String="\$&varname;\[" /> + <RegExpr attribute="Variable" context="#stay" String="\$&varname;" /> + <RegExpr attribute="Variable" context="#stay" String="\$[*@#?$!_0-9-]" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{[*@#?$!_0-9-]\}" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{#&varname;(\[[*@]\])?\}" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{!&varname;(\[[*@]\]|[*@])?\}" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{#[0-9]+\}" /> + <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" /> + <RegExpr attribute="Variable" context="VarBrace" String="\$\{[*@#?$!_0-9-](?=[:#%/=?+-])" /> + <StringDetect attribute="Variable" context="ExprDblParenSubst" String="$((" beginRegion="expression" /> + <StringDetect attribute="Redirection" context="SubstFile" String="$(<" /> + <Detect2Chars attribute="Variable" context="SubstCommand" char="$" char1="(" /> + <DetectChar attribute="Backquote" context="SubstBackq" char="`" /> + <RegExpr attribute="Escape" context="#stay" String="\\[`$\\]" /> + </context> + + <!-- FindTests finds operators valid in tests --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindTests"> + <RegExpr attribute="Expression" context="#stay" String="-[abcdefghkprstuwxOGLSNozn](?=\s)"/> + <RegExpr attribute="Expression" context="#stay" String="-([no]t|ef)(?=\s)"/> + <RegExpr attribute="Expression" context="#stay" String="([!=]=?|[><])(?=\s)"/> + <RegExpr attribute="Expression" context="#stay" String="-(eq|ne|[gl][te])(?=\s)"/> + </context> + + +<!-- ====== These are the contexts that can be branched to ======= --> + + <!-- ExprDblParen consumes an expression started in command mode till )) --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen"> + <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst"> + <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- ExprSubParen consumes an expression till ) --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubParen"> + <DetectChar attribute="Normal Text" context="#pop" char=")" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- ExprBracket consumes an expression till ] --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket"> + <RegExpr attribute="Builtin" context="#pop" String="\s\](?=($|[\s;|&]))" endRegion="expression" /> + <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&]))" endRegion="expression" column="0"/> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindTests" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- ExprDblBracket consumes an expression till ]] --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket"> + <RegExpr attribute="Keyword" context="#pop" String="\s\]\](?=($|[\s;|&]))" endRegion="expression" /> + <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&]))" endRegion="expression" column="0"/> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindTests" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- Group consumes shell input till } --> + <context attribute="Normal Text" lineEndContext="#stay" name="Group"> + <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="group" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- SubShell consumes shell input till ) --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubShell"> + <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- Assign consumes an expression till EOL or whitespace --> + <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthrough="true" fallthroughContext="#pop"> + <DetectChar attribute="Variable" context="AssignArray" char="(" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + <RegExpr attribute="Normal Text" context="#stay" String="[\w:,+_./-]" /> + </context> + + <!-- AssignArray consumes everything till ), marking assignments --> + <context attribute="Normal Text" lineEndContext="#pop" name="AssignArray"> + <DetectChar attribute="Variable" context="#pop" char=")" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- AssignSubscr first expects a [ then parses subscript and continues with '=value' --> + <context attribute="Normal Text" lineEndContext="#pop" name="AssignSubscr" fallthrough="true" fallthroughContext="#pop"> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <Detect2Chars attribute="Variable" context="Assign" char="+" char1="=" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- Subscript consumes anything till ], marks as Variable --> + <context attribute="Variable" lineEndContext="#stay" name="Subscript"> + <DetectChar attribute="Variable" context="#pop" char="]" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- FunctionDef consumes a name, possibly with (), marks as Function --> + <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthrough="true" fallthroughContext="#pop"> + <RegExpr attribute="Function" context="#pop" String="\s+&funcname;(\s*\(\))?" /> + </context> + + <!-- VarName consumes spare variable names and assignments --> + <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthrough="true" fallthroughContext="#pop"> + <!-- handle command line options --> + <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+" /> + <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" /> + <RegExpr attribute="Variable" context="#stay" String="\b&varname;" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindMost" /> + <!-- stay here in spaces and other safe characters --> + <RegExpr attribute="Normal Text" context="#stay" String="[^]})|;`&><]" /> + </context> + + <!-- ProcessSubst handles <(command) and >(command) --> + <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst"> + <DetectChar attribute="Redirection" context="#pop" char=")" /> + <IncludeRules context="FindCommentsParen" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- StringSQ consumes anything till ' --> + <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ"> + <DetectChar attribute="String SingleQ" context="#pop" char="'" /> + </context> + + <!-- StringDQ consumes anything till ", substitutes vars and expressions --> + <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ"> + <DetectChar attribute="String DoubleQ" context="#pop" char=""" /> + <RegExpr attribute="String Escape" context="#stay" String="\\[`"\\$\n]" /> + <IncludeRules context="FindSubstitutions" /> + </context> + + <!-- StringEsc eats till ', but escaping many characters --> + <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc"> + <DetectChar attribute="String SingleQ" context="#pop" char="'" /> + <RegExpr attribute="String Escape" context="#stay" String="\\[abefnrtv\\']" /> + <RegExpr attribute="String Escape" context="#stay" String="\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)" /> + </context> + + <!-- VarBrace is called as soon as ${xxx is encoutered --> + <context attribute="Error" lineEndContext="#stay" name="VarBrace"> + <DetectChar attribute="Variable" context="#pop" char="}" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <RegExpr attribute="Variable" context="VarAlt" String="(:?[-=?+@]|##?|%%?|\^\^?|,,?)" /> + <RegExpr attribute="Variable" context="VarSubst" String="//?" /> + <DetectChar attribute="Variable" context="VarSub" char=":" /> + </context> + + <!-- VarAlt is to handle default/alternate/etc values of variables --> + <context attribute="Normal Text" lineEndContext="#stay" name="VarAlt"> + <DetectChar attribute="Variable" context="#pop#pop" char="}" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + </context> + + <!-- VarSubst is to handle substitutions on variables --> + <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst"> + <DetectChar attribute="Variable" context="#pop#pop" char="}" /> + <DetectChar attribute="Variable" context="VarSubst2" char="/" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst2"> + <DetectChar attribute="Variable" context="#pop#pop#pop" char="}" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + </context> + + <!-- VarSub is to substrings of variables --> + <context attribute="Error" lineEndContext="#stay" name="VarSub"> + <DetectSpaces attribute="Variable" context="#stay" /> + <DetectChar attribute="Variable" context="VarSub2" char=":" /> + <DetectChar attribute="Variable" context="#pop#pop" char="}" /> + <RegExpr attribute="Variable" context="#stay" String="&varname;" /> + <RegExpr attribute="Variable" context="#stay" String="([\-\+]\s*)?[0-9]+\s*(?=[:}])" /> + <IncludeRules context="FindSubstitutions" /> + </context> + <context attribute="Error" lineEndContext="#stay" name="VarSub2"> + <DetectSpaces attribute="Variable" context="#stay" /> + <DetectChar attribute="Variable" context="#pop#pop#pop" char="}" /> + <RegExpr attribute="Variable" context="#stay" String="&varname;" /> + <RegExpr attribute="Variable" context="#stay" String="([\-\+]\s*)?[0-9]+\s*(?=[:}])" /> + <IncludeRules context="FindSubstitutions" /> + </context> + + + <!-- SubstFile is called after a <( or >( is encoutered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstFile"> + <DetectChar attribute="Redirection" context="#pop" char=")" /> + <IncludeRules context="FindCommentsParen" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- SubstCommand is called after a $( is encountered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand"> + <DetectChar attribute="Variable" context="#pop" char=")" /> + <IncludeRules context="FindCommentsParen" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- SubstBackq is called when a backquote is encountered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstBackq"> + <DetectChar attribute="Backquote" context="#pop" char="`" /> + <IncludeRules context="FindCommentsBackq" /> + <IncludeRules context="FindCommandsBackq" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- Case is called after the case keyword is encoutered. We handle this because of + the lonely closing parentheses that would otherwise disturb the expr matching --> + <context attribute="Normal Text" lineEndContext="#stay" name="Case"> + <RegExpr attribute="Keyword" context="CaseIn" String="\sin\b" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- CaseIn is called when the construct 'case ... in' has been found. --> + <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn"> + <RegExpr attribute="Keyword" context="#pop#pop" String="\besac(?=$|[\s;)])" endRegion="case" /> + <DetectChar attribute="Keyword" context="CaseExpr" char=")" beginRegion="caseexpr" /> + <AnyChar attribute="Keyword" context="#stay" String="(|" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- CaseExpr eats shell input till ;; --> + <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr"> + <Detect2Chars attribute="Keyword" context="#pop" char=";" char1=";" endRegion="caseexpr" /> + <RegExpr attribute="Keyword" context="#pop" String="esac(?=$|[\s;)])" lookAhead="true" firstNonSpace="true" endRegion="caseexpr"/> + <IncludeRules context="FindAll" /> + </context> + + <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. --> + <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc"> + <RegExpr attribute="Redirection" context="HereDocIQ" String="(<<-\s*"(&word;)")" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocIQ" String="(<<-\s*'(&word;)')" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocIQ" String="(<<-\s*\\(&word;))" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocINQ" String="(<<-\s*(&word;))" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocQ" String="(<<\s*"(&word;)")" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocQ" String="(<<\s*'(&word;)')" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocQ" String="(<<\s*\\(&word;))" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocNQ" String="(<<\s*(&word;))" lookAhead="true" /> + <Detect2Chars attribute="Redirection" context="#pop" char="<" char1="<" /><!-- always met --> + </context> + + <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder"> + <IncludeRules context="FindAll" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="HereDocQ" dynamic="true"> + <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" /> + <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="HereDocNQ" dynamic="true"> + <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" /> + <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/> + <IncludeRules context="FindSubstitutions" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="HereDocIQ" dynamic="true"> + <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" /> + <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="HereDocINQ" dynamic="true"> + <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" /> + <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/> + <IncludeRules context="FindSubstitutions" /> + </context> + + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Keyword" defStyleNum="dsKeyword" /> + <itemData name="Control" defStyleNum="dsKeyword" /> + <itemData name="Builtin" defStyleNum="dsBuiltIn" /> + <itemData name="Command" defStyleNum="dsFunction" /> + <itemData name="OtherCommand" defStyleNum="dsExtension" /> + <itemData name="Redirection" defStyleNum="dsOperator" /> + <itemData name="Escape" defStyleNum="dsDataType" /> + <itemData name="String SingleQ" defStyleNum="dsString" /> + <itemData name="String DoubleQ" defStyleNum="dsString" /> + <itemData name="Backquote" defStyleNum="dsKeyword" /> + <itemData name="String Transl." defStyleNum="dsString" /> + <itemData name="String Escape" defStyleNum="dsDataType" /> + <itemData name="Variable" defStyleNum="dsVariable" /> + <itemData name="Expression" defStyleNum="dsOthers" /> + <itemData name="Function" defStyleNum="dsFunction" /> + <itemData name="Path" defStyleNum="dsNormal" /> + <itemData name="Option" defStyleNum="dsNormal" /> + <itemData name="Error" defStyleNum="dsError" /> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="#"/> + </comments> + <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-/" additionalDeliminator="`"/> + </general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/cmake.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/cmake.xml new file mode 100644 index 0000000000..2a9088b46c --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/cmake.xml @@ -0,0 +1,3829 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY id_re "[_A-Za-z][\-_0-9A-Za-z]*"> +]> +<!-- + This file is part of KDE's kate project. + + Copyright 2004 Alexander Neundorf (neundorf@kde.org) + Copyright 2005 Dominik Haumann (dhdev@gmx.de) + Copyright 2007,2008,2013,2014 Matthew Woehlke (mw_triad@users.sourceforge.net) + Copyright 2013-2015,2017-2018 Alex Turbov (i.zaufi@gmail.com) + + ********************************************************************** + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library 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 * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the * + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * + * Boston, MA 02110-1301, USA. * + ********************************************************************** + --> + +<language + name="CMake" + version="11" + kateversion="2.4" + section="Other" + extensions="CMakeLists.txt;*.cmake;*.cmake.in" + style="CMake" + mimetype="text/x-cmake" + author="Alex Turbov (i.zaufi@gmail.com)" + license="LGPLv2+" + > + <highlighting> + + <list name="commands"> + <item>break</item> + <item>cmake_host_system_information</item> + <item>cmake_minimum_required</item> + <item>cmake_parse_arguments</item> + <item>cmake_policy</item> + <item>configure_file</item> + <item>continue</item> + <item>elseif</item> + <item>else</item> + <item>endforeach</item> + <item>endfunction</item> + <item>endif</item> + <item>endmacro</item> + <item>endwhile</item> + <item>execute_process</item> + <item>file</item> + <item>find_file</item> + <item>find_library</item> + <item>find_package</item> + <item>find_path</item> + <item>find_program</item> + <item>foreach</item> + <item>function</item> + <item>get_cmake_property</item> + <item>get_directory_property</item> + <item>get_filename_component</item> + <item>get_property</item> + <item>if</item> + <item>include</item> + <item>include_guard</item> + <item>list</item> + <item>macro</item> + <item>mark_as_advanced</item> + <item>math</item> + <item>message</item> + <item>option</item> + <item>return</item> + <item>separate_arguments</item> + <item>set_directory_properties</item> + <item>set_property</item> + <item>set</item> + <item>site_name</item> + <item>string</item> + <item>unset</item> + <item>variable_watch</item> + <item>while</item> + <item>add_compile_definitions</item> + <item>add_compile_options</item> + <item>add_custom_command</item> + <item>add_custom_target</item> + <item>add_definitions</item> + <item>add_dependencies</item> + <item>add_executable</item> + <item>add_library</item> + <item>add_link_options</item> + <item>add_subdirectory</item> + <item>add_test</item> + <item>aux_source_directory</item> + <item>build_command</item> + <item>create_test_sourcelist</item> + <item>define_property</item> + <item>enable_language</item> + <item>enable_testing</item> + <item>export</item> + <item>fltk_wrap_ui</item> + <item>get_source_file_property</item> + <item>get_target_property</item> + <item>get_test_property</item> + <item>include_directories</item> + <item>include_external_msproject</item> + <item>include_regular_expression</item> + <item>install</item> + <item>link_directories</item> + <item>link_libraries</item> + <item>load_cache</item> + <item>project</item> + <item>qt_wrap_cpp</item> + <item>qt_wrap_ui</item> + <item>remove_definitions</item> + <item>set_source_files_properties</item> + <item>set_target_properties</item> + <item>set_tests_properties</item> + <item>source_group</item> + <item>target_compile_definitions</item> + <item>target_compile_features</item> + <item>target_compile_options</item> + <item>target_include_directories</item> + <item>target_link_directories</item> + <item>target_link_libraries</item> + <item>target_link_options</item> + <item>target_sources</item> + <item>try_compile</item> + <item>try_run</item> + <item>ctest_build</item> + <item>ctest_configure</item> + <item>ctest_coverage</item> + <item>ctest_empty_binary_directory</item> + <item>ctest_memcheck</item> + <item>ctest_read_custom_files</item> + <item>ctest_run_script</item> + <item>ctest_sleep</item> + <item>ctest_start</item> + <item>ctest_submit</item> + <item>ctest_test</item> + <item>ctest_update</item> + <item>ctest_upload</item> + </list> + + <list name="cmake_host_system_information_nargs"> + <item>QUERY</item> + <item>RESULT</item> + </list> + <list name="cmake_host_system_information_sargs"> + <item>AVAILABLE_PHYSICAL_MEMORY</item> + <item>AVAILABLE_VIRTUAL_MEMORY</item> + <item>FQDN</item> + <item>HAS_AMD_3DNOW</item> + <item>HAS_AMD_3DNOW_PLUS</item> + <item>HAS_FPU</item> + <item>HAS_IA64</item> + <item>HAS_MMX</item> + <item>HAS_MMX_PLUS</item> + <item>HAS_SERIAL_NUMBER</item> + <item>HAS_SSE</item> + <item>HAS_SSE2</item> + <item>HAS_SSE_FP</item> + <item>HAS_SSE_MMX</item> + <item>HOSTNAME</item> + <item>IS_64BIT</item> + <item>NUMBER_OF_LOGICAL_CORES</item> + <item>NUMBER_OF_PHYSICAL_CORES</item> + <item>OS_NAME</item> + <item>OS_PLATFORM</item> + <item>OS_RELEASE</item> + <item>OS_VERSION</item> + <item>PROCESSOR_DESCRIPTION</item> + <item>PROCESSOR_NAME</item> + <item>PROCESSOR_SERIAL_NUMBER</item> + <item>TOTAL_PHYSICAL_MEMORY</item> + <item>TOTAL_VIRTUAL_MEMORY</item> + </list> + <list name="cmake_minimum_required_nargs"> + <item>FATAL_ERROR</item> + <item>VERSION</item> + </list> + <list name="cmake_parse_arguments_nargs"> + <item>PARSE_ARGV</item> + </list> + <list name="cmake_policy_nargs"> + <item>GET</item> + <item>POP</item> + <item>PUSH</item> + <item>SET</item> + <item>VERSION</item> + </list> + <list name="cmake_policy_sargs"> + <item>NEW</item> + <item>OLD</item> + </list> + <list name="configure_file_nargs"> + <item>@ONLY</item> + <item>COPYONLY</item> + <item>ESCAPE_QUOTES</item> + <item>NEWLINE_STYLE</item> + </list> + <list name="configure_file_sargs"> + <item>CRLF</item> + <item>DOS</item> + <item>LF</item> + <item>UNIX</item> + <item>WIN32</item> + </list> + <list name="elseif_nargs"> + <item>AND</item> + <item>DEFINED</item> + <item>EQUAL</item> + <item>EXISTS</item> + <item>GREATER</item> + <item>GREATER_EQUAL</item> + <item>IN_LIST</item> + <item>IS_ABSOLUTE</item> + <item>IS_DIRECTORY</item> + <item>IS_NEWER_THAN</item> + <item>IS_SYMLINK</item> + <item>LESS</item> + <item>LESS_EQUAL</item> + <item>MATCHES</item> + <item>NOT</item> + <item>OR</item> + <item>POLICY</item> + <item>STREQUAL</item> + <item>STRGREATER</item> + <item>STRGREATER_EQUAL</item> + <item>STRLESS</item> + <item>STRLESS_EQUAL</item> + <item>TARGET</item> + <item>TEST</item> + <item>VERSION_EQUAL</item> + <item>VERSION_GREATER</item> + <item>VERSION_GREATER_EQUAL</item> + <item>VERSION_LESS</item> + <item>VERSION_LESS_EQUAL</item> + </list> + <list name="execute_process_nargs"> + <item>COMMAND</item> + <item>ENCODING</item> + <item>ERROR_FILE</item> + <item>ERROR_QUIET</item> + <item>ERROR_STRIP_TRAILING_WHITESPACE</item> + <item>ERROR_VARIABLE</item> + <item>INPUT_FILE</item> + <item>OUTPUT_FILE</item> + <item>OUTPUT_QUIET</item> + <item>OUTPUT_STRIP_TRAILING_WHITESPACE</item> + <item>OUTPUT_VARIABLE</item> + <item>RESULTS_VARIABLE</item> + <item>RESULT_VARIABLE</item> + <item>TIMEOUT</item> + <item>WORKING_DIRECTORY</item> + </list> + <list name="execute_process_sargs"> + <item>ANSI</item> + <item>AUTO</item> + <item>NONE</item> + <item>OEM</item> + <item>UTF8</item> + </list> + <list name="file_nargs"> + <item>APPEND</item> + <item>CONDITION</item> + <item>CONFIGURE_DEPENDS</item> + <item>CONTENT</item> + <item>COPY</item> + <item>DESTINATION</item> + <item>DIRECTORY</item> + <item>DIRECTORY_PERMISSIONS</item> + <item>DOWNLOAD</item> + <item>ENCODING</item> + <item>EXCLUDE</item> + <item>EXPECTED_HASH</item> + <item>EXPECTED_MD5</item> + <item>FILES_MATCHING</item> + <item>FILE_PERMISSIONS</item> + <item>FOLLOW_SYMLINKS</item> + <item>GENERATE</item> + <item>GLOB</item> + <item>GLOB_RECURSE</item> + <item>GUARD</item> + <item>HEX</item> + <item>HTTPHEADER</item> + <item>INACTIVITY_TIMEOUT</item> + <item>INPUT</item> + <item>INSTALL</item> + <item>LENGTH_MAXIMUM</item> + <item>LENGTH_MINIMUM</item> + <item>LIMIT</item> + <item>LIMIT_COUNT</item> + <item>LIMIT_INPUT</item> + <item>LIMIT_OUTPUT</item> + <item>LIST_DIRECTORIES</item> + <item>LOCK</item> + <item>LOG</item> + <item>MAKE_DIRECTORY</item> + <item>MD5</item> + <item>NETRC</item> + <item>NETRC_FILE</item> + <item>NEWLINE_CONSUME</item> + <item>NO_HEX_CONVERSION</item> + <item>NO_SOURCE_PERMISSIONS</item> + <item>OFFSET</item> + <item>OUTPUT</item> + <item>PATTERN</item> + <item>PERMISSIONS</item> + <item>READ</item> + <item>REGEX</item> + <item>RELATIVE</item> + <item>RELATIVE_PATH</item> + <item>RELEASE</item> + <item>REMOVE</item> + <item>REMOVE_RECURSE</item> + <item>RENAME</item> + <item>RESULT_VARIABLE</item> + <item>SHA1</item> + <item>SHA224</item> + <item>SHA256</item> + <item>SHA384</item> + <item>SHA3_224</item> + <item>SHA3_256</item> + <item>SHA3_384</item> + <item>SHA3_512</item> + <item>SHA512</item> + <item>SHOW_PROGRESS</item> + <item>STATUS</item> + <item>STRINGS</item> + <item>TIMEOUT</item> + <item>TIMESTAMP</item> + <item>TLS_CAINFO</item> + <item>TLS_VERIFY</item> + <item>TOUCH</item> + <item>TOUCH_NOCREATE</item> + <item>TO_CMAKE_PATH</item> + <item>TO_NATIVE_PATH</item> + <item>UPLOAD</item> + <item>USERPWD</item> + <item>USE_SOURCE_PERMISSIONS</item> + <item>UTC</item> + <item>WRITE</item> + </list> + <list name="file_sargs"> + <item>FILE</item> + <item>FUNCTION</item> + <item>GROUP_EXECUTE</item> + <item>GROUP_READ</item> + <item>GROUP_WRITE</item> + <item>IGNORED</item> + <item>OPTIONAL</item> + <item>OWNER_EXECUTE</item> + <item>OWNER_READ</item> + <item>OWNER_WRITE</item> + <item>PROCESS</item> + <item>REQUIRED</item> + <item>SETGID</item> + <item>SETUID</item> + <item>UTF-16BE</item> + <item>UTF-16LE</item> + <item>UTF-32B</item> + <item>UTF-32LE</item> + <item>UTF-8</item> + <item>WORLD_EXECUTE</item> + <item>WORLD_READ</item> + <item>WORLD_WRITE</item> + </list> + <list name="find_file_nargs"> + <item>CMAKE_FIND_ROOT_PATH_BOTH</item> + <item>DOC</item> + <item>HINTS</item> + <item>NAMES</item> + <item>NO_CMAKE_ENVIRONMENT_PATH</item> + <item>NO_CMAKE_FIND_ROOT_PATH</item> + <item>NO_CMAKE_PATH</item> + <item>NO_CMAKE_SYSTEM_PATH</item> + <item>NO_DEFAULT_PATH</item> + <item>NO_PACKAGE_ROOT_PATH</item> + <item>NO_SYSTEM_ENVIRONMENT_PATH</item> + <item>ONLY_CMAKE_FIND_ROOT_PATH</item> + <item>PATHS</item> + <item>PATH_SUFFIXES</item> + </list> + <list name="find_library_nargs"> + <item>CMAKE_FIND_ROOT_PATH_BOTH</item> + <item>DOC</item> + <item>HINTS</item> + <item>NAMES</item> + <item>NAMES_PER_DIR</item> + <item>NO_CMAKE_ENVIRONMENT_PATH</item> + <item>NO_CMAKE_FIND_ROOT_PATH</item> + <item>NO_CMAKE_PATH</item> + <item>NO_CMAKE_SYSTEM_PATH</item> + <item>NO_DEFAULT_PATH</item> + <item>NO_PACKAGE_ROOT_PATH</item> + <item>NO_SYSTEM_ENVIRONMENT_PATH</item> + <item>ONLY_CMAKE_FIND_ROOT_PATH</item> + <item>PATHS</item> + <item>PATH_SUFFIXES</item> + </list> + <list name="find_package_nargs"> + <item>CMAKE_FIND_ROOT_PATH_BOTH</item> + <item>COMPONENTS</item> + <item>CONFIG</item> + <item>CONFIGS</item> + <item>EXACT</item> + <item>HINTS</item> + <item>MODULE</item> + <item>NAMES</item> + <item>NO_CMAKE_ENVIRONMENT_PATH</item> + <item>NO_CMAKE_FIND_ROOT_PATH</item> + <item>NO_CMAKE_PACKAGE_REGISTRY</item> + <item>NO_CMAKE_PATH</item> + <item>NO_CMAKE_SYSTEM_PACKAGE_REGISTRY</item> + <item>NO_CMAKE_SYSTEM_PATH</item> + <item>NO_DEFAULT_PATH</item> + <item>NO_MODULE</item> + <item>NO_PACAKGE_ROOT_PATH</item> + <item>NO_POLICY_SCOPE</item> + <item>NO_SYSTEM_ENVIRONMENT_PATH</item> + <item>ONLY_CMAKE_FIND_ROOT_PATH</item> + <item>OPTIONAL_COMPONENTS</item> + <item>PATHS</item> + <item>PATH_SUFFIXES</item> + <item>QUIET</item> + <item>REQUIRED</item> + </list> + <list name="find_path_nargs"> + <item>CMAKE_FIND_ROOT_PATH_BOTH</item> + <item>DOC</item> + <item>HINTS</item> + <item>NAMES</item> + <item>NO_CMAKE_ENVIRONMENT_PATH</item> + <item>NO_CMAKE_FIND_ROOT_PATH</item> + <item>NO_CMAKE_PATH</item> + <item>NO_CMAKE_SYSTEM_PATH</item> + <item>NO_DEFAULT_PATH</item> + <item>NO_PACKAGE_ROOT_PATH</item> + <item>NO_SYSTEM_ENVIRONMENT_PATH</item> + <item>ONLY_CMAKE_FIND_ROOT_PATH</item> + <item>PATHS</item> + <item>PATH_SUFFIXES</item> + </list> + <list name="find_program_nargs"> + <item>CMAKE_FIND_ROOT_PATH_BOTH</item> + <item>DOC</item> + <item>HINTS</item> + <item>NAMES</item> + <item>NAMES_PER_DIR</item> + <item>NO_CMAKE_ENVIRONMENT_PATH</item> + <item>NO_CMAKE_FIND_ROOT_PATH</item> + <item>NO_CMAKE_PATH</item> + <item>NO_CMAKE_SYSTEM_PATH</item> + <item>NO_DEFAULT_PATH</item> + <item>NO_PACKAGE_ROOT_PATH</item> + <item>NO_SYSTEM_ENVIRONMENT_PATH</item> + <item>ONLY_CMAKE_FIND_ROOT_PATH</item> + <item>PATHS</item> + <item>PATH_SUFFIXES</item> + </list> + <list name="foreach_nargs"> + <item>IN</item> + <item>ITEMS</item> + <item>LISTS</item> + <item>RANGE</item> + </list> + <list name="get_directory_property_nargs"> + <item>DEFINITION</item> + <item>DIRECTORY</item> + </list> + <list name="get_filename_component_nargs"> + <item>ABSOLUTE</item> + <item>BASE_DIR</item> + <item>CACHE</item> + <item>DIRECTORY</item> + <item>EXT</item> + <item>NAME</item> + <item>NAME_WE</item> + <item>PATH</item> + <item>PROGRAM</item> + <item>PROGRAM_ARGS</item> + <item>REALPATH</item> + </list> + <list name="get_property_nargs"> + <item>BRIEF_DOCS</item> + <item>CACHE</item> + <item>DEFINED</item> + <item>DIRECTORY</item> + <item>FULL_DOCS</item> + <item>GLOBAL</item> + <item>INSTALL</item> + <item>PROPERTY</item> + <item>SET</item> + <item>SOURCE</item> + <item>TARGET</item> + <item>TEST</item> + <item>VARIABLE</item> + </list> + <list name="if_nargs"> + <item>AND</item> + <item>DEFINED</item> + <item>EQUAL</item> + <item>EXISTS</item> + <item>GREATER</item> + <item>GREATER_EQUAL</item> + <item>IN_LIST</item> + <item>IS_ABSOLUTE</item> + <item>IS_DIRECTORY</item> + <item>IS_NEWER_THAN</item> + <item>IS_SYMLINK</item> + <item>LESS</item> + <item>LESS_EQUAL</item> + <item>MATCHES</item> + <item>NOT</item> + <item>OR</item> + <item>POLICY</item> + <item>STREQUAL</item> + <item>STRGREATER</item> + <item>STRGREATER_EQUAL</item> + <item>STRLESS</item> + <item>STRLESS_EQUAL</item> + <item>TARGET</item> + <item>TEST</item> + <item>VERSION_EQUAL</item> + <item>VERSION_GREATER</item> + <item>VERSION_GREATER_EQUAL</item> + <item>VERSION_LESS</item> + <item>VERSION_LESS_EQUAL</item> + </list> + <list name="include_nargs"> + <item>NO_POLICY_SCOPE</item> + <item>OPTIONAL</item> + <item>RESULT_VARIABLE</item> + </list> + <list name="include_guard_nargs"> + <item>DIRECTORY</item> + <item>GLOBAL</item> + </list> + <list name="list_nargs"> + <item>APPEND</item> + <item>AT</item> + <item>CASE</item> + <item>COMPARE</item> + <item>EXCLUDE</item> + <item>FILTER</item> + <item>FIND</item> + <item>FOR</item> + <item>GENEX_STRIP</item> + <item>GET</item> + <item>INCLUDE</item> + <item>INSERT</item> + <item>JOIN</item> + <item>LENGTH</item> + <item>ORDER</item> + <item>OUTPUT_VARIABLE</item> + <item>PREPEND</item> + <item>REGEX</item> + <item>REMOVE_AT</item> + <item>REMOVE_DUPLICATES</item> + <item>REMOVE_ITEM</item> + <item>REPLACE</item> + <item>REVERSE</item> + <item>SORT</item> + <item>STRIP</item> + <item>SUBLIST</item> + <item>TOLOWER</item> + <item>TRANSFORM</item> + </list> + <list name="list_sargs"> + <item>ASCENDING</item> + <item>DESCENDING</item> + <item>FILE_BASENAME</item> + <item>INSENSITIVE</item> + <item>SENSITIVE</item> + <item>STRING</item> + </list> + <list name="mark_as_advanced_nargs"> + <item>CLEAR</item> + <item>FORCE</item> + </list> + <list name="math_nargs"> + <item>EXPR</item> + <item>OUTPUT_FORMAT</item> + </list> + <list name="math_sargs"> + <item>DECIMAL</item> + <item>HEXADECIMAL</item> + </list> + <list name="message_nargs"> + <item>AUTHOR_WARNING</item> + <item>DEPRECATION</item> + <item>FATAL_ERROR</item> + <item>SEND_ERROR</item> + <item>STATUS</item> + <item>WARNING</item> + </list> + <list name="separate_arguments_nargs"> + <item>NATIVE_COMMAND</item> + <item>UNIX_COMMAND</item> + <item>WINDOWS_COMMAND</item> + </list> + <list name="set_directory_properties_nargs"> + <item>PROPERTIES</item> + </list> + <list name="set_property_nargs"> + <item>APPEND</item> + <item>APPEND_STRING</item> + <item>CACHE</item> + <item>DIRECTORY</item> + <item>GLOBAL</item> + <item>INSTALL</item> + <item>PROPERTY</item> + <item>SOURCE</item> + <item>TARGET</item> + <item>TEST</item> + <item>VARIABLE</item> + </list> + <list name="set_nargs"> + <item>CACHE</item> + <item>FORCE</item> + <item>PARENT_SCOPE</item> + </list> + <list name="set_sargs"> + <item>BOOL</item> + <item>FILEPATH</item> + <item>INTERNAL</item> + <item>PATH</item> + <item>STATIC</item> + <item>STRING</item> + </list> + <list name="string_nargs"> + <item>@ONLY</item> + <item>ALPHABET</item> + <item>APPEND</item> + <item>ASCII</item> + <item>COMPARE</item> + <item>CONCAT</item> + <item>CONFIGURE</item> + <item>EQUAL</item> + <item>ESCAPE_QUOTES</item> + <item>FIND</item> + <item>GENEX_STRIP</item> + <item>GREATER</item> + <item>GREATER_EQUAL</item> + <item>JOIN</item> + <item>LENGTH</item> + <item>LESS</item> + <item>LESS_EQUAL</item> + <item>MAKE_C_IDENTIFIER</item> + <item>MATCH</item> + <item>MATCHALL</item> + <item>MD5</item> + <item>NAME</item> + <item>NAMESPACE</item> + <item>NOTEQUAL</item> + <item>PREPEND</item> + <item>RANDOM</item> + <item>RANDOM_SEED</item> + <item>REGEX</item> + <item>REPLACE</item> + <item>REVERSE</item> + <item>SHA1</item> + <item>SHA224</item> + <item>SHA256</item> + <item>SHA384</item> + <item>SHA3_224</item> + <item>SHA3_256</item> + <item>SHA3_384</item> + <item>SHA3_512</item> + <item>SHA512</item> + <item>STRIP</item> + <item>SUBSTRING</item> + <item>TIMESTAMP</item> + <item>TOLOWER</item> + <item>TOUPPER</item> + <item>TYPE</item> + <item>UPPER</item> + <item>UTC</item> + <item>UUID</item> + </list> + <list name="unset_nargs"> + <item>CACHE</item> + <item>PARENT_SCOPE</item> + </list> + <list name="while_nargs"> + <item>AND</item> + <item>DEFINED</item> + <item>EQUAL</item> + <item>EXISTS</item> + <item>GREATER</item> + <item>GREATER_EQUAL</item> + <item>IN_LIST</item> + <item>IS_ABSOLUTE</item> + <item>IS_DIRECTORY</item> + <item>IS_NEWER_THAN</item> + <item>IS_SYMLINK</item> + <item>LESS</item> + <item>LESS_EQUAL</item> + <item>MATCHES</item> + <item>NOT</item> + <item>OR</item> + <item>POLICY</item> + <item>STREQUAL</item> + <item>STRGREATER</item> + <item>STRGREATER_EQUAL</item> + <item>STRLESS</item> + <item>STRLESS_EQUAL</item> + <item>TARGET</item> + <item>TEST</item> + <item>VERSION_EQUAL</item> + <item>VERSION_GREATER</item> + <item>VERSION_GREATER_EQUAL</item> + <item>VERSION_LESS</item> + <item>VERSION_LESS_EQUAL</item> + </list> + <list name="add_custom_command_nargs"> + <item>APPEND</item> + <item>ARGS</item> + <item>BYPRODUCTS</item> + <item>COMMAND</item> + <item>COMMAND_EXPAND_LISTS</item> + <item>COMMENT</item> + <item>DEPENDS</item> + <item>DEPFILE</item> + <item>IMPLICIT_DEPENDS</item> + <item>MAIN_DEPENDENCY</item> + <item>OUTPUT</item> + <item>POST_BUILD</item> + <item>PRE_BUILD</item> + <item>PRE_LINK</item> + <item>TARGET</item> + <item>USES_TERMINAL</item> + <item>VERBATIM</item> + <item>WORKING_DIRECTORY</item> + </list> + <list name="add_custom_target_nargs"> + <item>ALL</item> + <item>APPEND</item> + <item>BYPRODUCTS</item> + <item>COMMAND</item> + <item>COMMAND_EXPAND_LISTS</item> + <item>COMMENT</item> + <item>DEPENDS</item> + <item>DEPFILE</item> + <item>IMPLICIT_DEPENDS</item> + <item>SOURCES</item> + <item>USES_TERMINAL</item> + <item>VERBATIM</item> + <item>WORKING_DIRECTORY</item> + </list> + <list name="add_executable_nargs"> + <item>ALIAS</item> + <item>EXCLUDE_FROM_ALL</item> + <item>GLOBAL</item> + <item>IMPORTED</item> + <item>MACOSX_BUNDLE</item> + <item>WIN32</item> + </list> + <list name="add_library_nargs"> + <item>ALIAS</item> + <item>EXCLUDE_FROM_ALL</item> + <item>GLOBAL</item> + <item>IMPORTED</item> + <item>INTERFACE</item> + <item>MODULE</item> + <item>OBJECT</item> + <item>SHARED</item> + <item>STATIC</item> + <item>UNKNOWN</item> + </list> + <list name="add_subdirectory_nargs"> + <item>EXCLUDE_FROM_ALL</item> + </list> + <list name="add_test_nargs"> + <item>COMMAND</item> + <item>CONFIGURATIONS</item> + <item>NAME</item> + <item>WORKING_DIRECTORY</item> + </list> + <list name="build_command_nargs"> + <item>CONFIGURATION</item> + <item>TARGET</item> + </list> + <list name="create_test_sourcelist_nargs"> + <item>EXTRA_INCLUDE</item> + <item>FUNCTION</item> + </list> + <list name="define_property_nargs"> + <item>BRIEF_DOCS</item> + <item>CACHED_VARIABLE</item> + <item>DIRECTORY</item> + <item>FULL_DOCS</item> + <item>GLOBAL</item> + <item>INHERITED</item> + <item>PROPERTY</item> + <item>SOURCE</item> + <item>TEST</item> + <item>VARIABLE</item> + </list> + <list name="enable_language_nargs"> + <item>OPTIONAL</item> + </list> + <list name="enable_language_sargs"> + <item>C</item> + <item>CXX</item> + <item>Fortran</item> + <item>RC</item> + </list> + <list name="export_nargs"> + <item>ANDROID_MK</item> + <item>APPEND</item> + <item>EXPORT</item> + <item>EXPORT_LINK_INTERFACE_LIBRARIES</item> + <item>FILE</item> + <item>NAMESPACE</item> + <item>TARGETS</item> + </list> + <list name="include_directories_nargs"> + <item>AFTER</item> + <item>BEFORE</item> + <item>SYSTEM</item> + </list> + <list name="include_external_msproject_nargs"> + <item>GUID</item> + <item>PLATFORM</item> + <item>TYPE</item> + </list> + <list name="install_nargs"> + <item>ARCHIVE</item> + <item>BUNDLE</item> + <item>CODE</item> + <item>COMPONENT</item> + <item>CONFIGURATIONS</item> + <item>DESTINATION</item> + <item>DIRECTORY</item> + <item>DIRECTORY_PERMISSIONS</item> + <item>EXCLUDE</item> + <item>EXCLUDE_FROM_ALL</item> + <item>EXPORT</item> + <item>EXPORT_ANDROID_MK</item> + <item>EXPORT_LINK_INTERFACE_LIBRARIES</item> + <item>FILE</item> + <item>FILES</item> + <item>FILES_MATCHING</item> + <item>FILE_PERMISSIONS</item> + <item>FRAMEWORK</item> + <item>INCLUDES</item> + <item>LIBRARY</item> + <item>MESSAGE_NEVER</item> + <item>NAMELINK_COMPONENT</item> + <item>NAMELINK_ONLY</item> + <item>NAMELINK_SKIP</item> + <item>NAMESPACE</item> + <item>OBJECTS</item> + <item>OPTIONAL</item> + <item>PATTERN</item> + <item>PERMISSIONS</item> + <item>PRIVATE_HEADER</item> + <item>PROGRAMS</item> + <item>PUBLIC_HEADER</item> + <item>REGEX</item> + <item>RENAME</item> + <item>RESOURCE</item> + <item>RUNTIME</item> + <item>SCRIPT</item> + <item>TARGETS</item> + <item>USE_SOURCE_PERMISSIONS</item> + </list> + <list name="install_sargs"> + <item>GROUP_EXECUTE</item> + <item>GROUP_READ</item> + <item>GROUP_WRITE</item> + <item>OWNER_EXECUTE</item> + <item>OWNER_READ</item> + <item>OWNER_WRITE</item> + <item>SETGID</item> + <item>SETUID</item> + <item>WORLD_EXECUTE</item> + <item>WORLD_READ</item> + <item>WORLD_WRITE</item> + </list> + <list name="link_directories_nargs"> + <item>AFTER</item> + <item>BEFORE</item> + </list> + <list name="link_libraries_nargs"> + <item>debug</item> + <item>general</item> + <item>optimized</item> + </list> + <list name="load_cache_nargs"> + <item>EXCLUDE</item> + <item>INCLUDE_INTERNALS</item> + <item>READ_WITH_PREFIX</item> + </list> + <list name="project_nargs"> + <item>DESCRIPTION</item> + <item>HOMEPAGE_URL</item> + <item>LANGUAGES</item> + <item>VERSION</item> + </list> + <list name="project_sargs"> + <item>ASM</item> + <item>C</item> + <item>CUDA</item> + <item>CXX</item> + <item>Fortran</item> + <item>NONE</item> + <item>RC</item> + </list> + <list name="set_source_files_properties_nargs"> + <item>PROPERTIES</item> + </list> + <list name="set_target_properties_nargs"> + <item>PROPERTIES</item> + </list> + <list name="set_tests_properties_nargs"> + <item>PROPERTIES</item> + </list> + <list name="source_group_nargs"> + <item>FILES</item> + <item>PREFIX</item> + <item>REGULAR_EXPRESSION</item> + <item>TREE</item> + </list> + <list name="target_compile_definitions_nargs"> + <item>INTERFACE</item> + <item>PRIVATE</item> + <item>PUBLIC</item> + </list> + <list name="target_compile_features_nargs"> + <item>INTERFACE</item> + <item>PRIVATE</item> + <item>PUBLIC</item> + </list> + <list name="target_compile_features_sargs"> + <item>c_function_prototypes</item> + <item>c_restrict</item> + <item>c_static_assert</item> + <item>c_std_11</item> + <item>c_std_90</item> + <item>c_std_99</item> + <item>c_variadic_macros</item> + <item>cxx_aggregate_default_initializers</item> + <item>cxx_alias_templates</item> + <item>cxx_alignas</item> + <item>cxx_alignof</item> + <item>cxx_attribute_deprecated</item> + <item>cxx_attributes</item> + <item>cxx_auto_type</item> + <item>cxx_binary_literals</item> + <item>cxx_constexpr</item> + <item>cxx_contextual_conversions</item> + <item>cxx_decltype</item> + <item>cxx_decltype_auto</item> + <item>cxx_decltype_incomplete_return_types</item> + <item>cxx_default_function_template_args</item> + <item>cxx_defaulted_functions</item> + <item>cxx_defaulted_move_initializers</item> + <item>cxx_delegating_constructors</item> + <item>cxx_deleted_functions</item> + <item>cxx_digit_separators</item> + <item>cxx_enum_forward_declarations</item> + <item>cxx_explicit_conversions</item> + <item>cxx_extended_friend_declarations</item> + <item>cxx_extern_templates</item> + <item>cxx_final</item> + <item>cxx_func_identifier</item> + <item>cxx_generalized_initializers</item> + <item>cxx_generic_lambdas</item> + <item>cxx_inheriting_constructors</item> + <item>cxx_inline_namespaces</item> + <item>cxx_lambda_init_captures</item> + <item>cxx_lambdas</item> + <item>cxx_local_type_template_args</item> + <item>cxx_long_long_type</item> + <item>cxx_noexcept</item> + <item>cxx_nonstatic_member_init</item> + <item>cxx_nullptr</item> + <item>cxx_override</item> + <item>cxx_range_for</item> + <item>cxx_raw_string_literals</item> + <item>cxx_reference_qualified_functions</item> + <item>cxx_relaxed_constexpr</item> + <item>cxx_return_type_deduction</item> + <item>cxx_right_angle_brackets</item> + <item>cxx_rvalue_references</item> + <item>cxx_sizeof_member</item> + <item>cxx_static_assert</item> + <item>cxx_std_11</item> + <item>cxx_std_14</item> + <item>cxx_std_17</item> + <item>cxx_std_20</item> + <item>cxx_std_98</item> + <item>cxx_strong_enums</item> + <item>cxx_template_template_parameters</item> + <item>cxx_thread_local</item> + <item>cxx_trailing_return_types</item> + <item>cxx_unicode_literals</item> + <item>cxx_uniform_initialization</item> + <item>cxx_unrestricted_unions</item> + <item>cxx_user_literals</item> + <item>cxx_variable_templates</item> + <item>cxx_variadic_macros</item> + <item>cxx_variadic_templates</item> + </list> + <list name="target_compile_options_nargs"> + <item>BEFORE</item> + <item>INTERFACE</item> + <item>PRIVATE</item> + <item>PUBLIC</item> + </list> + <list name="target_include_directories_nargs"> + <item>BEFORE</item> + <item>INTERFACE</item> + <item>PRIVATE</item> + <item>PUBLIC</item> + <item>SYSTEM</item> + </list> + <list name="target_link_directories_nargs"> + <item>BEFORE</item> + <item>INTERFACE</item> + <item>PRIVATE</item> + <item>PUBLIC</item> + </list> + <list name="target_link_libraries_nargs"> + <item>INTERFACE</item> + <item>PRIVATE</item> + <item>PUBLIC</item> + </list> + <list name="target_link_options_nargs"> + <item>INTERFACE</item> + <item>PRIVATE</item> + <item>PUBLIC</item> + </list> + <list name="target_sources_nargs"> + <item>INTERFACE</item> + <item>PRIVATE</item> + <item>PUBLIC</item> + </list> + <list name="try_compile_nargs"> + <item>CMAKE_FLAGS</item> + <item>COMPILE_DEFINITIONS</item> + <item>COPY_FILE</item> + <item>COPY_FILE_ERROR</item> + <item>LINK_LIBRARIES</item> + <item>OUTPUT_VARIABLE</item> + <item>RESULT_VAR</item> + <item>SOURCES</item> + </list> + <list name="try_run_nargs"> + <item>ARGS</item> + <item>CMAKE_FLAGS</item> + <item>COMPILE_DEFINITIONS</item> + <item>COMPILE_OUTPUT_VARIABLE</item> + <item>COMPILE_RESULT_VAR</item> + <item>LINK_LIBRARIES</item> + <item>OUTPUT_VARIABLE</item> + <item>RUN_OUTPUT_VARIABLE</item> + <item>RUN_RESULT_VAR</item> + </list> + <list name="ctest_build_nargs"> + <item>APPEND</item> + <item>BUILD</item> + <item>CAPTURE_CMAKE_ERROR</item> + <item>CONFIGURATION</item> + <item>FLAGS</item> + <item>NUMBER_ERRORS</item> + <item>NUMBER_WARNINGS</item> + <item>PROJECT_NAME</item> + <item>RETURN_VALUE</item> + <item>TARGET</item> + </list> + <list name="ctest_configure_nargs"> + <item>APPEND</item> + <item>BUILD</item> + <item>CAPTURE_CMAKE_ERROR</item> + <item>OPTIONS</item> + <item>QUIET</item> + <item>RETURN_VALUE</item> + <item>SOURCE</item> + </list> + <list name="ctest_coverage_nargs"> + <item>APPEND</item> + <item>BUILD</item> + <item>CAPTURE_CMAKE_ERROR</item> + <item>LABELS</item> + <item>QUIET</item> + <item>RETURN_VALUE</item> + </list> + <list name="ctest_memcheck_nargs"> + <item>APPEND</item> + <item>BUILD</item> + <item>DEFECT_COUNT</item> + <item>END</item> + <item>EXCLUDE</item> + <item>EXCLUDE_FIXTURE</item> + <item>EXCLUDE_FIXTURE_CLEANUP</item> + <item>EXCLUDE_FIXTURE_SETUP</item> + <item>EXCLUDE_LABEL</item> + <item>INCLUDE</item> + <item>INCLUDE_LABEL</item> + <item>PARALLEL_LEVEL</item> + <item>QUIET</item> + <item>RETURN_VALUE</item> + <item>SCHEDULE_RANDOM</item> + <item>START</item> + <item>STOP_TIME</item> + <item>STRIDE</item> + <item>TEST_LOAD</item> + </list> + <list name="ctest_run_script_nargs"> + <item>NEW_PROCESS</item> + <item>RETURN_VALUE</item> + </list> + <list name="ctest_start_nargs"> + <item>APPEND</item> + <item>QUIET</item> + <item>TRACK</item> + </list> + <list name="ctest_submit_nargs"> + <item>CDASH_UPLOAD</item> + <item>CDASH_UPLOAD_TYPE</item> + <item>FILES</item> + <item>HTTPHEADER</item> + <item>PARTS</item> + <item>QUIET</item> + <item>RETRY_COUNT</item> + <item>RETRY_DELAY</item> + <item>RETURN_VALUE</item> + </list> + <list name="ctest_test_nargs"> + <item>APPEND</item> + <item>BUILD</item> + <item>CAPTURE_CMAKE_ERROR</item> + <item>END</item> + <item>EXCLUDE</item> + <item>EXCLUDE_FIXTURE</item> + <item>EXCLUDE_FIXTURE_CLEANUP</item> + <item>EXCLUDE_FIXTURE_SETUP</item> + <item>EXCLUDE_LABEL</item> + <item>INCLUDE</item> + <item>INCLUDE_LABEL</item> + <item>PARALLEL_LEVEL</item> + <item>QUIET</item> + <item>RETURN_VALUE</item> + <item>SCHEDULE_RANDOM</item> + <item>START</item> + <item>STOP_TIME</item> + <item>STRIDE</item> + <item>TEST_LOAD</item> + </list> + <list name="ctest_update_nargs"> + <item>QUIET</item> + <item>RETURN_VALUE</item> + <item>SOURCE</item> + </list> + <list name="ctest_upload_nargs"> + <item>CAPTURE_CMAKE_ERROR</item> + <item>FILES</item> + <item>QUIET</item> + </list> + + <list name="variables"> + <item>ANDROID</item> + <item>APPLE</item> + <item>BORLAND</item> + <item>BUILD_SHARED_LIBS</item> + <item>BUILD_TESTING</item> + <item>CMAKE_ABSOLUTE_DESTINATION_FILES</item> + <item>CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS</item> + <item>CMAKE_ANDROID_API</item> + <item>CMAKE_ANDROID_API_MIN</item> + <item>CMAKE_ANDROID_ARCH</item> + <item>CMAKE_ANDROID_ARCH_ABI</item> + <item>CMAKE_ANDROID_ARM_MODE</item> + <item>CMAKE_ANDROID_ARM_NEON</item> + <item>CMAKE_ANDROID_ASSETS_DIRECTORIES</item> + <item>CMAKE_ANDROID_GUI</item> + <item>CMAKE_ANDROID_JAR_DEPENDENCIES</item> + <item>CMAKE_ANDROID_JAR_DIRECTORIES</item> + <item>CMAKE_ANDROID_JAVA_SOURCE_DIR</item> + <item>CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES</item> + <item>CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES</item> + <item>CMAKE_ANDROID_NDK</item> + <item>CMAKE_ANDROID_NDK_DEPRECATED_HEADERS</item> + <item>CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG</item> + <item>CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION</item> + <item>CMAKE_ANDROID_PROCESS_MAX</item> + <item>CMAKE_ANDROID_PROGUARD</item> + <item>CMAKE_ANDROID_PROGUARD_CONFIG_PATH</item> + <item>CMAKE_ANDROID_SECURE_PROPS_PATH</item> + <item>CMAKE_ANDROID_SKIP_ANT_STEP</item> + <item>CMAKE_ANDROID_STANDALONE_TOOLCHAIN</item> + <item>CMAKE_ANDROID_STL_TYPE</item> + <item>CMAKE_ANSI_CXXFLAGS</item> + <item>CMAKE_APPBUNDLE_PATH</item> + <item>CMAKE_AR</item> + <item>CMAKE_ARCHIVE_OUTPUT_DIRECTORY</item> + <item>CMAKE_ARGC</item> + <item>CMAKE_ARGV0</item> + <item>CMAKE_AUTOGEN_PARALLEL</item> + <item>CMAKE_AUTOGEN_VERBOSE</item> + <item>CMAKE_AUTOMOC</item> + <item>CMAKE_AUTOMOC_DEPEND_FILTERS</item> + <item>CMAKE_AUTOMOC_MOC_OPTIONS</item> + <item>CMAKE_AUTOMOC_RELAXED_MODE</item> + <item>CMAKE_AUTORCC</item> + <item>CMAKE_AUTORCC_OPTIONS</item> + <item>CMAKE_AUTOUIC</item> + <item>CMAKE_AUTOUIC_OPTIONS</item> + <item>CMAKE_AUTOUIC_SEARCH_PATHS</item> + <item>CMAKE_BACKWARDS_COMPATIBILITY</item> + <item>CMAKE_BINARY_DIR</item> + <item>CMAKE_BUILD_RPATH</item> + <item>CMAKE_BUILD_TOOL</item> + <item>CMAKE_BUILD_TYPE</item> + <item>CMAKE_BUILD_WITH_INSTALL_NAME_DIR</item> + <item>CMAKE_BUILD_WITH_INSTALL_RPATH</item> + <item>CMAKE_CACHEFILE_DIR</item> + <item>CMAKE_CACHE_MAJOR_VERSION</item> + <item>CMAKE_CACHE_MINOR_VERSION</item> + <item>CMAKE_CACHE_PATCH_VERSION</item> + <item>CMAKE_CFG_INTDIR</item> + <item>CMAKE_CL_64</item> + <item>CMAKE_CODEBLOCKS_COMPILER_ID</item> + <item>CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES</item> + <item>CMAKE_CODELITE_USE_TARGETS</item> + <item>CMAKE_COLOR_MAKEFILE</item> + <item>CMAKE_COMMAND</item> + <item>CMAKE_COMPILER_2005</item> + <item>CMAKE_COMPILER_IS_GNUCC</item> + <item>CMAKE_COMPILER_IS_GNUCXX</item> + <item>CMAKE_COMPILER_IS_GNUG77</item> + <item>CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY</item> + <item>CMAKE_CONFIGURATION_TYPES</item> + <item>CMAKE_CROSSCOMPILING</item> + <item>CMAKE_CROSSCOMPILING_EMULATOR</item> + <item>CMAKE_CTEST_COMMAND</item> + <item>CMAKE_CUDA_EXTENSIONS</item> + <item>CMAKE_CUDA_SEPARABLE_COMPILATION</item> + <item>CMAKE_CUDA_STANDARD</item> + <item>CMAKE_CUDA_STANDARD_REQUIRED</item> + <item>CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES</item> + <item>CMAKE_CURRENT_BINARY_DIR</item> + <item>CMAKE_CURRENT_LIST_DIR</item> + <item>CMAKE_CURRENT_LIST_FILE</item> + <item>CMAKE_CURRENT_LIST_LINE</item> + <item>CMAKE_CURRENT_SOURCE_DIR</item> + <item>CMAKE_CXX_COMPILE_FEATURES</item> + <item>CMAKE_CXX_EXTENSIONS</item> + <item>CMAKE_CXX_STANDARD</item> + <item>CMAKE_CXX_STANDARD_REQUIRED</item> + <item>CMAKE_C_COMPILE_FEATURES</item> + <item>CMAKE_C_EXTENSIONS</item> + <item>CMAKE_C_STANDARD</item> + <item>CMAKE_C_STANDARD_REQUIRED</item> + <item>CMAKE_DEBUG_POSTFIX</item> + <item>CMAKE_DEBUG_TARGET_PROPERTIES</item> + <item>CMAKE_DEPENDS_IN_PROJECT_ONLY</item> + <item>CMAKE_DIRECTORY_LABELS</item> + <item>CMAKE_DL_LIBS</item> + <item>CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION</item> + <item>CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES</item> + <item>CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT</item> + <item>CMAKE_ECLIPSE_MAKE_ARGUMENTS</item> + <item>CMAKE_ECLIPSE_VERSION</item> + <item>CMAKE_EDIT_COMMAND</item> + <item>CMAKE_ENABLE_EXPORTS</item> + <item>CMAKE_ERROR_DEPRECATED</item> + <item>CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item> + <item>CMAKE_EXECUTABLE_SUFFIX</item> + <item>CMAKE_EXE_LINKER_FLAGS</item> + <item>CMAKE_EXE_LINKER_FLAGS_INIT</item> + <item>CMAKE_EXPORT_COMPILE_COMMANDS</item> + <item>CMAKE_EXPORT_NO_PACKAGE_REGISTRY</item> + <item>CMAKE_EXTRA_GENERATOR</item> + <item>CMAKE_EXTRA_INCLUDE_FILES</item> + <item>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</item> + <item>CMAKE_FIND_APPBUNDLE</item> + <item>CMAKE_FIND_FRAMEWORK</item> + <item>CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS</item> + <item>CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX</item> + <item>CMAKE_FIND_LIBRARY_PREFIXES</item> + <item>CMAKE_FIND_LIBRARY_SUFFIXES</item> + <item>CMAKE_FIND_NO_INSTALL_PREFIX</item> + <item>CMAKE_FIND_PACKAGE_NAME</item> + <item>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</item> + <item>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</item> + <item>CMAKE_FIND_PACKAGE_SORT_DIRECTION</item> + <item>CMAKE_FIND_PACKAGE_SORT_ORDER</item> + <item>CMAKE_FIND_PACKAGE_WARN_NO_MODULE</item> + <item>CMAKE_FIND_ROOT_PATH</item> + <item>CMAKE_FIND_ROOT_PATH_MODE_INCLUDE</item> + <item>CMAKE_FIND_ROOT_PATH_MODE_LIBRARY</item> + <item>CMAKE_FIND_ROOT_PATH_MODE_PACKAGE</item> + <item>CMAKE_FIND_ROOT_PATH_MODE_PROGRAM</item> + <item>CMAKE_FOLDER</item> + <item>CMAKE_FRAMEWORK_PATH</item> + <item>CMAKE_Fortran_FORMAT</item> + <item>CMAKE_Fortran_MODDIR_DEFAULT</item> + <item>CMAKE_Fortran_MODDIR_FLAG</item> + <item>CMAKE_Fortran_MODOUT_FLAG</item> + <item>CMAKE_Fortran_MODULE_DIRECTORY</item> + <item>CMAKE_GENERATOR</item> + <item>CMAKE_GENERATOR_INSTANCE</item> + <item>CMAKE_GENERATOR_PLATFORM</item> + <item>CMAKE_GENERATOR_TOOLSET</item> + <item>CMAKE_GNUtoMS</item> + <item>CMAKE_HAS_ANSI_STRING_STREAM</item> + <item>CMAKE_HOME_DIRECTORY</item> + <item>CMAKE_HOST_APPLE</item> + <item>CMAKE_HOST_SOLARIS</item> + <item>CMAKE_HOST_SYSTEM</item> + <item>CMAKE_HOST_SYSTEM_NAME</item> + <item>CMAKE_HOST_SYSTEM_PROCESSOR</item> + <item>CMAKE_HOST_SYSTEM_VERSION</item> + <item>CMAKE_HOST_UNIX</item> + <item>CMAKE_HOST_WIN32</item> + <item>CMAKE_HP_PTHREADS_INIT</item> + <item>CMAKE_IGNORE_PATH</item> + <item>CMAKE_IMPORT_LIBRARY_PREFIX</item> + <item>CMAKE_IMPORT_LIBRARY_SUFFIX</item> + <item>CMAKE_INCLUDE_CURRENT_DIR</item> + <item>CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE</item> + <item>CMAKE_INCLUDE_DIRECTORIES_BEFORE</item> + <item>CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE</item> + <item>CMAKE_INCLUDE_PATH</item> + <item>CMAKE_INSTALL_BINDIR</item> + <item>CMAKE_INSTALL_DATADIR</item> + <item>CMAKE_INSTALL_DATAROOTDIR</item> + <item>CMAKE_INSTALL_DEBUG_LIBRARIES</item> + <item>CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY</item> + <item>CMAKE_INSTALL_DEFAULT_COMPONENT_NAME</item> + <item>CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item> + <item>CMAKE_INSTALL_DOCDIR</item> + <item>CMAKE_INSTALL_FULL_BINDIR</item> + <item>CMAKE_INSTALL_FULL_DATADIR</item> + <item>CMAKE_INSTALL_FULL_DATAROOTDIR</item> + <item>CMAKE_INSTALL_FULL_DOCDIR</item> + <item>CMAKE_INSTALL_FULL_INCLUDEDIR</item> + <item>CMAKE_INSTALL_FULL_INFODIR</item> + <item>CMAKE_INSTALL_FULL_LIBDIR</item> + <item>CMAKE_INSTALL_FULL_LIBEXECDIR</item> + <item>CMAKE_INSTALL_FULL_LOCALEDIR</item> + <item>CMAKE_INSTALL_FULL_LOCALSTATEDIR</item> + <item>CMAKE_INSTALL_FULL_MANDIR</item> + <item>CMAKE_INSTALL_FULL_OLDINCLUDEDIR</item> + <item>CMAKE_INSTALL_FULL_RUNSTATEDIR</item> + <item>CMAKE_INSTALL_FULL_SBINDIR</item> + <item>CMAKE_INSTALL_FULL_SHAREDSTATEDIR</item> + <item>CMAKE_INSTALL_FULL_SYSCONFDIR</item> + <item>CMAKE_INSTALL_INCLUDEDIR</item> + <item>CMAKE_INSTALL_INFODIR</item> + <item>CMAKE_INSTALL_LIBDIR</item> + <item>CMAKE_INSTALL_LIBEXECDIR</item> + <item>CMAKE_INSTALL_LOCALEDIR</item> + <item>CMAKE_INSTALL_LOCALSTATEDIR</item> + <item>CMAKE_INSTALL_MANDIR</item> + <item>CMAKE_INSTALL_MESSAGE</item> + <item>CMAKE_INSTALL_MFC_LIBRARIES</item> + <item>CMAKE_INSTALL_NAME_DIR</item> + <item>CMAKE_INSTALL_OLDINCLUDEDIR</item> + <item>CMAKE_INSTALL_OPENMP_LIBRARIES</item> + <item>CMAKE_INSTALL_PREFIX</item> + <item>CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT</item> + <item>CMAKE_INSTALL_RPATH</item> + <item>CMAKE_INSTALL_RPATH_USE_LINK_PATH</item> + <item>CMAKE_INSTALL_RUNSTATEDIR</item> + <item>CMAKE_INSTALL_SBINDIR</item> + <item>CMAKE_INSTALL_SHAREDSTATEDIR</item> + <item>CMAKE_INSTALL_SYSCONFDIR</item> + <item>CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT</item> + <item>CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION</item> + <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS</item> + <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS</item> + <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP</item> + <item>CMAKE_INSTALL_UCRT_LIBRARIES</item> + <item>CMAKE_INTERNAL_PLATFORM_ABI</item> + <item>CMAKE_INTERPROCEDURAL_OPTIMIZATION</item> + <item>CMAKE_IOS_INSTALL_COMBINED</item> + <item>CMAKE_JOB_POOLS</item> + <item>CMAKE_JOB_POOL_COMPILE</item> + <item>CMAKE_JOB_POOL_LINK</item> + <item>CMAKE_LIBRARY_ARCHITECTURE</item> + <item>CMAKE_LIBRARY_ARCHITECTURE_REGEX</item> + <item>CMAKE_LIBRARY_OUTPUT_DIRECTORY</item> + <item>CMAKE_LIBRARY_PATH</item> + <item>CMAKE_LIBRARY_PATH_FLAG</item> + <item>CMAKE_LINK_DEF_FILE_FLAG</item> + <item>CMAKE_LINK_DEPENDS_NO_SHARED</item> + <item>CMAKE_LINK_DIRECTORIES_BEFORE</item> + <item>CMAKE_LINK_INTERFACE_LIBRARIES</item> + <item>CMAKE_LINK_LIBRARY_FILE_FLAG</item> + <item>CMAKE_LINK_LIBRARY_FLAG</item> + <item>CMAKE_LINK_LIBRARY_SUFFIX</item> + <item>CMAKE_LINK_SEARCH_END_STATIC</item> + <item>CMAKE_LINK_SEARCH_START_STATIC</item> + <item>CMAKE_LINK_WHAT_YOU_USE</item> + <item>CMAKE_MACOSX_BUNDLE</item> + <item>CMAKE_MACOSX_RPATH</item> + <item>CMAKE_MAJOR_VERSION</item> + <item>CMAKE_MAKE_PROGRAM</item> + <item>CMAKE_MATCH_COUNT</item> + <item>CMAKE_MFC_FLAG</item> + <item>CMAKE_MINIMUM_REQUIRED_VERSION</item> + <item>CMAKE_MINOR_VERSION</item> + <item>CMAKE_MODULE_LINKER_FLAGS</item> + <item>CMAKE_MODULE_LINKER_FLAGS_INIT</item> + <item>CMAKE_MODULE_PATH</item> + <item>CMAKE_NETRC</item> + <item>CMAKE_NETRC_FILE</item> + <item>CMAKE_NINJA_OUTPUT_PATH_PREFIX</item> + <item>CMAKE_NOT_USING_CONFIG_FLAGS</item> + <item>CMAKE_NO_ANSI_FOR_SCOPE</item> + <item>CMAKE_NO_ANSI_STREAM_HEADERS</item> + <item>CMAKE_NO_ANSI_STRING_STREAM</item> + <item>CMAKE_NO_BUILTIN_CHRPATH</item> + <item>CMAKE_NO_STD_NAMESPACE</item> + <item>CMAKE_NO_SYSTEM_FROM_IMPORTED</item> + <item>CMAKE_OBJECT_PATH_MAX</item> + <item>CMAKE_OSX_ARCHITECTURES</item> + <item>CMAKE_OSX_DEPLOYMENT_TARGET</item> + <item>CMAKE_OSX_SYSROOT</item> + <item>CMAKE_PARENT_LIST_FILE</item> + <item>CMAKE_PATCH_VERSION</item> + <item>CMAKE_PDB_OUTPUT_DIRECTORY</item> + <item>CMAKE_POSITION_INDEPENDENT_CODE</item> + <item>CMAKE_PREFIX_PATH</item> + <item>CMAKE_PROGRAM_PATH</item> + <item>CMAKE_PROJECT_DESCRIPTION</item> + <item>CMAKE_PROJECT_HOMEPAGE_URL</item> + <item>CMAKE_PROJECT_NAME</item> + <item>CMAKE_PROJECT_VERSION</item> + <item>CMAKE_PROJECT_VERSION_MAJOR</item> + <item>CMAKE_PROJECT_VERSION_MINOR</item> + <item>CMAKE_PROJECT_VERSION_PATCH</item> + <item>CMAKE_PROJECT_VERSION_TWEAK</item> + <item>CMAKE_RANLIB</item> + <item>CMAKE_REQUIRED_DEFINITIONS</item> + <item>CMAKE_REQUIRED_FLAGS</item> + <item>CMAKE_REQUIRED_INCLUDES</item> + <item>CMAKE_REQUIRED_LIBRARIES</item> + <item>CMAKE_REQUIRED_QUIET</item> + <item>CMAKE_ROOT</item> + <item>CMAKE_RUNTIME_OUTPUT_DIRECTORY</item> + <item>CMAKE_SCRIPT_MODE_FILE</item> + <item>CMAKE_SHARED_LIBRARY_PREFIX</item> + <item>CMAKE_SHARED_LIBRARY_SUFFIX</item> + <item>CMAKE_SHARED_LINKER_FLAGS</item> + <item>CMAKE_SHARED_LINKER_FLAGS_INIT</item> + <item>CMAKE_SHARED_MODULE_PREFIX</item> + <item>CMAKE_SHARED_MODULE_SUFFIX</item> + <item>CMAKE_SIZEOF_VOID_P</item> + <item>CMAKE_SKIP_BUILD_RPATH</item> + <item>CMAKE_SKIP_INSTALL_ALL_DEPENDENCY</item> + <item>CMAKE_SKIP_INSTALL_RPATH</item> + <item>CMAKE_SKIP_INSTALL_RULES</item> + <item>CMAKE_SKIP_RPATH</item> + <item>CMAKE_SOURCE_DIR</item> + <item>CMAKE_STAGING_PREFIX</item> + <item>CMAKE_STATIC_LIBRARY_PREFIX</item> + <item>CMAKE_STATIC_LIBRARY_SUFFIX</item> + <item>CMAKE_STATIC_LINKER_FLAGS</item> + <item>CMAKE_STATIC_LINKER_FLAGS_INIT</item> + <item>CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS</item> + <item>CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE</item> + <item>CMAKE_SUPPRESS_DEVELOPER_ERRORS</item> + <item>CMAKE_SUPPRESS_DEVELOPER_WARNINGS</item> + <item>CMAKE_SUPPRESS_REGENERATION</item> + <item>CMAKE_SWIG_FLAGS</item> + <item>CMAKE_SWIG_OUTDIR</item> + <item>CMAKE_SYSROOT</item> + <item>CMAKE_SYSROOT_COMPILE</item> + <item>CMAKE_SYSROOT_LINK</item> + <item>CMAKE_SYSTEM</item> + <item>CMAKE_SYSTEM_APPBUNDLE_PATH</item> + <item>CMAKE_SYSTEM_FRAMEWORK_PATH</item> + <item>CMAKE_SYSTEM_IGNORE_PATH</item> + <item>CMAKE_SYSTEM_INCLUDE_PATH</item> + <item>CMAKE_SYSTEM_LIBRARY_PATH</item> + <item>CMAKE_SYSTEM_NAME</item> + <item>CMAKE_SYSTEM_PREFIX_PATH</item> + <item>CMAKE_SYSTEM_PROCESSOR</item> + <item>CMAKE_SYSTEM_PROGRAM_PATH</item> + <item>CMAKE_SYSTEM_VERSION</item> + <item>CMAKE_Swift_LANGUAGE_VERSION</item> + <item>CMAKE_THREAD_LIBS_INIT</item> + <item>CMAKE_THREAD_PREFER_PTHREAD</item> + <item>CMAKE_TOOLCHAIN_FILE</item> + <item>CMAKE_TRY_COMPILE_CONFIGURATION</item> + <item>CMAKE_TRY_COMPILE_PLATFORM_VARIABLES</item> + <item>CMAKE_TRY_COMPILE_TARGET_TYPE</item> + <item>CMAKE_TWEAK_VERSION</item> + <item>CMAKE_USER_MAKE_RULES_OVERRIDE</item> + <item>CMAKE_USE_PTHREADS_INIT</item> + <item>CMAKE_USE_RELATIVE_PATHS</item> + <item>CMAKE_USE_SPROC_INIT</item> + <item>CMAKE_USE_WIN32_THREADS_INIT</item> + <item>CMAKE_VERBOSE_MAKEFILE</item> + <item>CMAKE_VERSION</item> + <item>CMAKE_VISIBILITY_INLINES_HIDDEN</item> + <item>CMAKE_VS_DEVENV_COMMAND</item> + <item>CMAKE_VS_GLOBALS</item> + <item>CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD</item> + <item>CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD</item> + <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item> + <item>CMAKE_VS_MSBUILD_COMMAND</item> + <item>CMAKE_VS_NsightTegra_VERSION</item> + <item>CMAKE_VS_PLATFORM_NAME</item> + <item>CMAKE_VS_PLATFORM_TOOLSET</item> + <item>CMAKE_VS_PLATFORM_TOOLSET_CUDA</item> + <item>CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE</item> + <item>CMAKE_VS_SDK_EXCLUDE_DIRECTORIES</item> + <item>CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES</item> + <item>CMAKE_VS_SDK_INCLUDE_DIRECTORIES</item> + <item>CMAKE_VS_SDK_LIBRARY_DIRECTORIES</item> + <item>CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES</item> + <item>CMAKE_VS_SDK_REFERENCE_DIRECTORIES</item> + <item>CMAKE_VS_SDK_SOURCE_DIRECTORIES</item> + <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION</item> + <item>CMAKE_WARN_DEPRECATED</item> + <item>CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item> + <item>CMAKE_WIN32_EXECUTABLE</item> + <item>CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS</item> + <item>CMAKE_XCODE_GENERATE_SCHEME</item> + <item>CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY</item> + <item>CMAKE_XCODE_PLATFORM_TOOLSET</item> + <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER</item> + <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item> + <item>CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item> + <item>CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item> + <item>CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item> + <item>CMAKE_XCODE_SCHEME_GUARD_MALLOC</item> + <item>CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP</item> + <item>CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES</item> + <item>CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE</item> + <item>CMAKE_XCODE_SCHEME_MALLOC_STACK</item> + <item>CMAKE_XCODE_SCHEME_THREAD_SANITIZER</item> + <item>CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP</item> + <item>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</item> + <item>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</item> + <item>CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS</item> + <item>CPACK_ABSOLUTE_DESTINATION_FILES</item> + <item>CPACK_ARCHIVE_COMPONENT_INSTALL</item> + <item>CPACK_ARCHIVE_FILE_NAME</item> + <item>CPACK_BUILD_SOURCE_DIRS</item> + <item>CPACK_BUNDLE_APPLE_CERT_APP</item> + <item>CPACK_BUNDLE_APPLE_CODESIGN_FILES</item> + <item>CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER</item> + <item>CPACK_BUNDLE_APPLE_ENTITLEMENTS</item> + <item>CPACK_BUNDLE_ICON</item> + <item>CPACK_BUNDLE_NAME</item> + <item>CPACK_BUNDLE_PLIST</item> + <item>CPACK_BUNDLE_STARTUP_COMMAND</item> + <item>CPACK_CMAKE_GENERATOR</item> + <item>CPACK_COMMAND_CODESIGN</item> + <item>CPACK_COMMAND_HDIUTIL</item> + <item>CPACK_COMMAND_PKGBUILD</item> + <item>CPACK_COMMAND_PRODUCTBUILD</item> + <item>CPACK_COMMAND_REZ</item> + <item>CPACK_COMMAND_SETFILE</item> + <item>CPACK_COMPONENTS_ALL</item> + <item>CPACK_COMPONENTS_GROUPING</item> + <item>CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY</item> + <item>CPACK_CREATE_DESKTOP_LINKS</item> + <item>CPACK_CYGWIN_BUILD_SCRIPT</item> + <item>CPACK_CYGWIN_PATCH_FILE</item> + <item>CPACK_CYGWIN_PATCH_NUMBER</item> + <item>CPACK_DEBIAN_ARCHIVE_TYPE</item> + <item>CPACK_DEBIAN_COMPRESSION_TYPE</item> + <item>CPACK_DEBIAN_DEBUGINFO_PACKAGE</item> + <item>CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS</item> + <item>CPACK_DEBIAN_FILE_NAME</item> + <item>CPACK_DEBIAN_PACKAGE_ARCHITECTURE</item> + <item>CPACK_DEBIAN_PACKAGE_BREAKS</item> + <item>CPACK_DEBIAN_PACKAGE_CONFLICTS</item> + <item>CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA</item> + <item>CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION</item> + <item>CPACK_DEBIAN_PACKAGE_DEBUG</item> + <item>CPACK_DEBIAN_PACKAGE_DEPENDS</item> + <item>CPACK_DEBIAN_PACKAGE_DESCRIPTION</item> + <item>CPACK_DEBIAN_PACKAGE_ENHANCES</item> + <item>CPACK_DEBIAN_PACKAGE_EPOCH</item> + <item>CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS</item> + <item>CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY</item> + <item>CPACK_DEBIAN_PACKAGE_HOMEPAGE</item> + <item>CPACK_DEBIAN_PACKAGE_MAINTAINER</item> + <item>CPACK_DEBIAN_PACKAGE_NAME</item> + <item>CPACK_DEBIAN_PACKAGE_PREDEPENDS</item> + <item>CPACK_DEBIAN_PACKAGE_PRIORITY</item> + <item>CPACK_DEBIAN_PACKAGE_PROVIDES</item> + <item>CPACK_DEBIAN_PACKAGE_RECOMMENDS</item> + <item>CPACK_DEBIAN_PACKAGE_RELEASE</item> + <item>CPACK_DEBIAN_PACKAGE_REPLACES</item> + <item>CPACK_DEBIAN_PACKAGE_SECTION</item> + <item>CPACK_DEBIAN_PACKAGE_SHLIBDEPS</item> + <item>CPACK_DEBIAN_PACKAGE_SOURCE</item> + <item>CPACK_DEBIAN_PACKAGE_SUGGESTS</item> + <item>CPACK_DEBIAN_PACKAGE_VERSION</item> + <item>CPACK_DEB_COMPONENT_INSTALL</item> + <item>CPACK_DMG_BACKGROUND_IMAGE</item> + <item>CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK</item> + <item>CPACK_DMG_DS_STORE</item> + <item>CPACK_DMG_DS_STORE_SETUP_SCRIPT</item> + <item>CPACK_DMG_FORMAT</item> + <item>CPACK_DMG_SLA_DIR</item> + <item>CPACK_DMG_SLA_LANGUAGES</item> + <item>CPACK_DMG_VOLUME_NAME</item> + <item>CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item> + <item>CPACK_EXT_ENABLE_STAGING</item> + <item>CPACK_EXT_PACKAGE_SCRIPT</item> + <item>CPACK_EXT_REQUESTED_VERSIONS</item> + <item>CPACK_GENERATOR</item> + <item>CPACK_IFW_ADMIN_TARGET_DIRECTORY</item> + <item>CPACK_IFW_BINARYCREATOR_EXECUTABLE</item> + <item>CPACK_IFW_DEVTOOL_EXECUTABLE</item> + <item>CPACK_IFW_DOWNLOAD_ALL</item> + <item>CPACK_IFW_FRAMEWORK_VERSION</item> + <item>CPACK_IFW_INSTALLERBASE_EXECUTABLE</item> + <item>CPACK_IFW_PACKAGES_DIRECTORIES</item> + <item>CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS</item> + <item>CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH</item> + <item>CPACK_IFW_PACKAGE_BACKGROUND</item> + <item>CPACK_IFW_PACKAGE_BANNER</item> + <item>CPACK_IFW_PACKAGE_CONTROL_SCRIPT</item> + <item>CPACK_IFW_PACKAGE_GROUP</item> + <item>CPACK_IFW_PACKAGE_ICON</item> + <item>CPACK_IFW_PACKAGE_LOGO</item> + <item>CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE</item> + <item>CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME</item> + <item>CPACK_IFW_PACKAGE_NAME</item> + <item>CPACK_IFW_PACKAGE_PUBLISHER</item> + <item>CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR</item> + <item>CPACK_IFW_PACKAGE_RESOURCES</item> + <item>CPACK_IFW_PACKAGE_START_MENU_DIRECTORY</item> + <item>CPACK_IFW_PACKAGE_TITLE</item> + <item>CPACK_IFW_PACKAGE_TITLE_COLOR</item> + <item>CPACK_IFW_PACKAGE_WATERMARK</item> + <item>CPACK_IFW_PACKAGE_WINDOW_ICON</item> + <item>CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT</item> + <item>CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH</item> + <item>CPACK_IFW_PACKAGE_WIZARD_STYLE</item> + <item>CPACK_IFW_PRODUCT_URL</item> + <item>CPACK_IFW_REPOGEN_EXECUTABLE</item> + <item>CPACK_IFW_REPOSITORIES_ALL</item> + <item>CPACK_IFW_RESOLVE_DUPLICATE_NAMES</item> + <item>CPACK_IFW_ROOT</item> + <item>CPACK_IFW_TARGET_DIRECTORY</item> + <item>CPACK_IFW_VERBOSE</item> + <item>CPACK_INCLUDE_TOPLEVEL_DIRECTORY</item> + <item>CPACK_INSTALLED_DIRECTORIES</item> + <item>CPACK_INSTALL_CMAKE_PROJECTS</item> + <item>CPACK_INSTALL_COMMANDS</item> + <item>CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item> + <item>CPACK_INSTALL_SCRIPT</item> + <item>CPACK_MONOLITHIC_INSTALL</item> + <item>CPACK_NSIS_COMPRESSOR</item> + <item>CPACK_NSIS_CONTACT</item> + <item>CPACK_NSIS_CREATE_ICONS_EXTRA</item> + <item>CPACK_NSIS_DELETE_ICONS_EXTRA</item> + <item>CPACK_NSIS_DISPLAY_NAME</item> + <item>CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL</item> + <item>CPACK_NSIS_EXECUTABLES_DIRECTORY</item> + <item>CPACK_NSIS_EXTRA_INSTALL_COMMANDS</item> + <item>CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS</item> + <item>CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS</item> + <item>CPACK_NSIS_HELP_LINK</item> + <item>CPACK_NSIS_INSTALLED_ICON_NAME</item> + <item>CPACK_NSIS_INSTALLER_MUI_ICON_CODE</item> + <item>CPACK_NSIS_INSTALL_ROOT</item> + <item>CPACK_NSIS_MENU_LINKS</item> + <item>CPACK_NSIS_MODIFY_PATH</item> + <item>CPACK_NSIS_MUI_FINISHPAGE_RUN</item> + <item>CPACK_NSIS_MUI_ICON</item> + <item>CPACK_NSIS_MUI_UNIICON</item> + <item>CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP</item> + <item>CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP</item> + <item>CPACK_NSIS_PACKAGE_NAME</item> + <item>CPACK_NSIS_URL_INFO_ABOUT</item> + <item>CPACK_NUGET_COMPONENT_INSTALL</item> + <item>CPACK_NUGET_PACKAGE_AUTHORS</item> + <item>CPACK_NUGET_PACKAGE_COPYRIGHT</item> + <item>CPACK_NUGET_PACKAGE_DEBUG</item> + <item>CPACK_NUGET_PACKAGE_DEPENDENCIES</item> + <item>CPACK_NUGET_PACKAGE_DESCRIPTION</item> + <item>CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY</item> + <item>CPACK_NUGET_PACKAGE_HOMEPAGE_URL</item> + <item>CPACK_NUGET_PACKAGE_ICONURL</item> + <item>CPACK_NUGET_PACKAGE_LICENSEURL</item> + <item>CPACK_NUGET_PACKAGE_NAME</item> + <item>CPACK_NUGET_PACKAGE_OWNERS</item> + <item>CPACK_NUGET_PACKAGE_RELEASE_NOTES</item> + <item>CPACK_NUGET_PACKAGE_TAGS</item> + <item>CPACK_NUGET_PACKAGE_TITLE</item> + <item>CPACK_NUGET_PACKAGE_VERSION</item> + <item>CPACK_OSX_PACKAGE_VERSION</item> + <item>CPACK_OUTPUT_CONFIG_FILE</item> + <item>CPACK_PACKAGE_CHECKSUM</item> + <item>CPACK_PACKAGE_CONTACT</item> + <item>CPACK_PACKAGE_DESCRIPTION</item> + <item>CPACK_PACKAGE_DESCRIPTION_FILE</item> + <item>CPACK_PACKAGE_DESCRIPTION_SUMMARY</item> + <item>CPACK_PACKAGE_DIRECTORY</item> + <item>CPACK_PACKAGE_EXECUTABLES</item> + <item>CPACK_PACKAGE_FILE_NAME</item> + <item>CPACK_PACKAGE_HOMEPAGE_URL</item> + <item>CPACK_PACKAGE_ICON</item> + <item>CPACK_PACKAGE_INSTALL_DIRECTORY</item> + <item>CPACK_PACKAGE_INSTALL_REGISTRY_KEY</item> + <item>CPACK_PACKAGE_NAME</item> + <item>CPACK_PACKAGE_VENDOR</item> + <item>CPACK_PACKAGE_VERSION</item> + <item>CPACK_PACKAGE_VERSION_MAJOR</item> + <item>CPACK_PACKAGE_VERSION_MINOR</item> + <item>CPACK_PACKAGE_VERSION_PATCH</item> + <item>CPACK_PACKAGING_INSTALL_PREFIX</item> + <item>CPACK_PKGBUILD_IDENTITY_NAME</item> + <item>CPACK_PKGBUILD_KEYCHAIN_PATH</item> + <item>CPACK_PRODUCTBUILD_IDENTITY_NAME</item> + <item>CPACK_PRODUCTBUILD_KEYCHAIN_PATH</item> + <item>CPACK_PRODUCTBUILD_RESOURCES_DIR</item> + <item>CPACK_PROJECT_CONFIG_FILE</item> + <item>CPACK_RESOURCE_FILE_LICENSE</item> + <item>CPACK_RESOURCE_FILE_README</item> + <item>CPACK_RESOURCE_FILE_WELCOME</item> + <item>CPACK_RPM_ADDITIONAL_MAN_DIRS</item> + <item>CPACK_RPM_BUILDREQUIRES</item> + <item>CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX</item> + <item>CPACK_RPM_CHANGELOG_FILE</item> + <item>CPACK_RPM_COMPONENT_INSTALL</item> + <item>CPACK_RPM_COMPRESSION_TYPE</item> + <item>CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS</item> + <item>CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION</item> + <item>CPACK_RPM_DEBUGINFO_FILE_NAME</item> + <item>CPACK_RPM_DEBUGINFO_PACKAGE</item> + <item>CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE</item> + <item>CPACK_RPM_DEFAULT_DIR_PERMISSIONS</item> + <item>CPACK_RPM_DEFAULT_FILE_PERMISSIONS</item> + <item>CPACK_RPM_DEFAULT_GROUP</item> + <item>CPACK_RPM_DEFAULT_USER</item> + <item>CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST</item> + <item>CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION</item> + <item>CPACK_RPM_FILE_NAME</item> + <item>CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE</item> + <item>CPACK_RPM_INSTALL_WITH_EXEC</item> + <item>CPACK_RPM_MAIN_COMPONENT</item> + <item>CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION</item> + <item>CPACK_RPM_PACKAGE_ARCHITECTURE</item> + <item>CPACK_RPM_PACKAGE_AUTOPROV</item> + <item>CPACK_RPM_PACKAGE_AUTOREQ</item> + <item>CPACK_RPM_PACKAGE_AUTOREQPROV</item> + <item>CPACK_RPM_PACKAGE_CONFLICTS</item> + <item>CPACK_RPM_PACKAGE_DEBUG</item> + <item>CPACK_RPM_PACKAGE_DESCRIPTION</item> + <item>CPACK_RPM_PACKAGE_EPOCH</item> + <item>CPACK_RPM_PACKAGE_GROUP</item> + <item>CPACK_RPM_PACKAGE_LICENSE</item> + <item>CPACK_RPM_PACKAGE_NAME</item> + <item>CPACK_RPM_PACKAGE_OBSOLETES</item> + <item>CPACK_RPM_PACKAGE_PROVIDES</item> + <item>CPACK_RPM_PACKAGE_RELEASE</item> + <item>CPACK_RPM_PACKAGE_RELEASE_DIST</item> + <item>CPACK_RPM_PACKAGE_RELOCATABLE</item> + <item>CPACK_RPM_PACKAGE_REQUIRES</item> + <item>CPACK_RPM_PACKAGE_REQUIRES_POST</item> + <item>CPACK_RPM_PACKAGE_REQUIRES_POSTUN</item> + <item>CPACK_RPM_PACKAGE_REQUIRES_PRE</item> + <item>CPACK_RPM_PACKAGE_REQUIRES_PREUN</item> + <item>CPACK_RPM_PACKAGE_SOURCES</item> + <item>CPACK_RPM_PACKAGE_SUGGESTS</item> + <item>CPACK_RPM_PACKAGE_SUMMARY</item> + <item>CPACK_RPM_PACKAGE_URL</item> + <item>CPACK_RPM_PACKAGE_VENDOR</item> + <item>CPACK_RPM_PACKAGE_VERSION</item> + <item>CPACK_RPM_POST_INSTALL_SCRIPT_FILE</item> + <item>CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE</item> + <item>CPACK_RPM_PRE_INSTALL_SCRIPT_FILE</item> + <item>CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE</item> + <item>CPACK_RPM_RELOCATION_PATHS</item> + <item>CPACK_RPM_SOURCE_PKG_BUILD_PARAMS</item> + <item>CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX</item> + <item>CPACK_RPM_SPEC_INSTALL_POST</item> + <item>CPACK_RPM_SPEC_MORE_DEFINE</item> + <item>CPACK_RPM_USER_BINARY_SPECFILE</item> + <item>CPACK_RPM_USER_FILELIST</item> + <item>CPACK_SET_DESTDIR</item> + <item>CPACK_SOURCE_GENERATOR</item> + <item>CPACK_SOURCE_IGNORE_FILES</item> + <item>CPACK_SOURCE_OUTPUT_CONFIG_FILE</item> + <item>CPACK_SOURCE_PACKAGE_FILE_NAME</item> + <item>CPACK_SOURCE_STRIP_FILES</item> + <item>CPACK_STRIP_FILES</item> + <item>CPACK_SYSTEM_NAME</item> + <item>CPACK_TOPLEVEL_TAG</item> + <item>CPACK_VERBATIM_VARIABLES</item> + <item>CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item> + <item>CPACK_WIX_CMAKE_PACKAGE_REGISTRY</item> + <item>CPACK_WIX_CULTURES</item> + <item>CPACK_WIX_EXTENSIONS</item> + <item>CPACK_WIX_EXTRA_OBJECTS</item> + <item>CPACK_WIX_EXTRA_SOURCES</item> + <item>CPACK_WIX_LICENSE_RTF</item> + <item>CPACK_WIX_PATCH_FILE</item> + <item>CPACK_WIX_PRODUCT_GUID</item> + <item>CPACK_WIX_PRODUCT_ICON</item> + <item>CPACK_WIX_PROGRAM_MENU_FOLDER</item> + <item>CPACK_WIX_ROOT</item> + <item>CPACK_WIX_ROOT_FEATURE_DESCRIPTION</item> + <item>CPACK_WIX_ROOT_FEATURE_TITLE</item> + <item>CPACK_WIX_ROOT_FOLDER_ID</item> + <item>CPACK_WIX_SKIP_PROGRAM_FOLDER</item> + <item>CPACK_WIX_TEMPLATE</item> + <item>CPACK_WIX_UI_BANNER</item> + <item>CPACK_WIX_UI_DIALOG</item> + <item>CPACK_WIX_UI_REF</item> + <item>CPACK_WIX_UPGRADE_GUID</item> + <item>CTEST_BINARY_DIRECTORY</item> + <item>CTEST_BUILD_COMMAND</item> + <item>CTEST_BUILD_NAME</item> + <item>CTEST_BZR_COMMAND</item> + <item>CTEST_BZR_UPDATE_OPTIONS</item> + <item>CTEST_CHANGE_ID</item> + <item>CTEST_CHECKOUT_COMMAND</item> + <item>CTEST_CONFIGURATION_TYPE</item> + <item>CTEST_CONFIGURE_COMMAND</item> + <item>CTEST_COVERAGE_COMMAND</item> + <item>CTEST_COVERAGE_EXTRA_FLAGS</item> + <item>CTEST_CURL_OPTIONS</item> + <item>CTEST_CUSTOM_COVERAGE_EXCLUDE</item> + <item>CTEST_CUSTOM_ERROR_EXCEPTION</item> + <item>CTEST_CUSTOM_ERROR_MATCH</item> + <item>CTEST_CUSTOM_ERROR_POST_CONTEXT</item> + <item>CTEST_CUSTOM_ERROR_PRE_CONTEXT</item> + <item>CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE</item> + <item>CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS</item> + <item>CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS</item> + <item>CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE</item> + <item>CTEST_CUSTOM_MEMCHECK_IGNORE</item> + <item>CTEST_CUSTOM_POST_MEMCHECK</item> + <item>CTEST_CUSTOM_POST_TEST</item> + <item>CTEST_CUSTOM_PRE_MEMCHECK</item> + <item>CTEST_CUSTOM_PRE_TEST</item> + <item>CTEST_CUSTOM_TEST_IGNORE</item> + <item>CTEST_CUSTOM_WARNING_EXCEPTION</item> + <item>CTEST_CUSTOM_WARNING_MATCH</item> + <item>CTEST_CVS_CHECKOUT</item> + <item>CTEST_CVS_COMMAND</item> + <item>CTEST_CVS_UPDATE_OPTIONS</item> + <item>CTEST_DROP_LOCATION</item> + <item>CTEST_DROP_METHOD</item> + <item>CTEST_DROP_SITE</item> + <item>CTEST_DROP_SITE_CDASH</item> + <item>CTEST_DROP_SITE_PASSWORD</item> + <item>CTEST_DROP_SITE_USER</item> + <item>CTEST_EXTRA_COVERAGE_GLOB</item> + <item>CTEST_GIT_COMMAND</item> + <item>CTEST_GIT_INIT_SUBMODULES</item> + <item>CTEST_GIT_UPDATE_CUSTOM</item> + <item>CTEST_GIT_UPDATE_OPTIONS</item> + <item>CTEST_HG_COMMAND</item> + <item>CTEST_HG_UPDATE_OPTIONS</item> + <item>CTEST_LABELS_FOR_SUBPROJECTS</item> + <item>CTEST_MEMORYCHECK_COMMAND</item> + <item>CTEST_MEMORYCHECK_COMMAND_OPTIONS</item> + <item>CTEST_MEMORYCHECK_SANITIZER_OPTIONS</item> + <item>CTEST_MEMORYCHECK_SUPPRESSIONS_FILE</item> + <item>CTEST_MEMORYCHECK_TYPE</item> + <item>CTEST_NIGHTLY_START_TIME</item> + <item>CTEST_P4_CLIENT</item> + <item>CTEST_P4_COMMAND</item> + <item>CTEST_P4_OPTIONS</item> + <item>CTEST_P4_UPDATE_OPTIONS</item> + <item>CTEST_SCP_COMMAND</item> + <item>CTEST_SITE</item> + <item>CTEST_SOURCE_DIRECTORY</item> + <item>CTEST_SVN_COMMAND</item> + <item>CTEST_SVN_OPTIONS</item> + <item>CTEST_SVN_UPDATE_OPTIONS</item> + <item>CTEST_TEST_LOAD</item> + <item>CTEST_TEST_TIMEOUT</item> + <item>CTEST_TRIGGER_SITE</item> + <item>CTEST_UPDATE_COMMAND</item> + <item>CTEST_UPDATE_OPTIONS</item> + <item>CTEST_UPDATE_VERSION_ONLY</item> + <item>CTEST_USE_LAUNCHERS</item> + <item>CYGWIN</item> + <item>EXECUTABLE_OUTPUT_PATH</item> + <item>ExternalData_BINARY_ROOT</item> + <item>ExternalData_CUSTOM_ERROR</item> + <item>ExternalData_CUSTOM_FILE</item> + <item>ExternalData_CUSTOM_LOCATION</item> + <item>ExternalData_LINK_CONTENT</item> + <item>ExternalData_NO_SYMLINKS</item> + <item>ExternalData_OBJECT_STORES</item> + <item>ExternalData_SERIES_MATCH</item> + <item>ExternalData_SERIES_PARSE</item> + <item>ExternalData_SERIES_PARSE_NUMBER</item> + <item>ExternalData_SERIES_PARSE_PREFIX</item> + <item>ExternalData_SERIES_PARSE_SUFFIX</item> + <item>ExternalData_SOURCE_ROOT</item> + <item>ExternalData_TIMEOUT_ABSOLUTE</item> + <item>ExternalData_TIMEOUT_INACTIVITY</item> + <item>ExternalData_URL_TEMPLATES</item> + <item>GHS-MULTI</item> + <item>GRAPHVIZ_EXECUTABLES</item> + <item>GRAPHVIZ_EXTERNAL_LIBS</item> + <item>GRAPHVIZ_GENERATE_PER_TARGET</item> + <item>GRAPHVIZ_GRAPH_HEADER</item> + <item>GRAPHVIZ_GRAPH_NAME</item> + <item>GRAPHVIZ_GRAPH_TYPE</item> + <item>GRAPHVIZ_IGNORE_TARGETS</item> + <item>GRAPHVIZ_MODULE_LIBS</item> + <item>GRAPHVIZ_NODE_PREFIX</item> + <item>GRAPHVIZ_SHARED_LIBS</item> + <item>GRAPHVIZ_STATIC_LIBS</item> + <item>LIBRARY_OUTPUT_PATH</item> + <item>MINGW</item> + <item>MSVC</item> + <item>MSVC10</item> + <item>MSVC11</item> + <item>MSVC12</item> + <item>MSVC14</item> + <item>MSVC60</item> + <item>MSVC70</item> + <item>MSVC71</item> + <item>MSVC80</item> + <item>MSVC90</item> + <item>MSVC_IDE</item> + <item>MSVC_TOOLSET_VERSION</item> + <item>MSVC_VERSION</item> + <item>PACKAGE_FIND_NAME</item> + <item>PACKAGE_FIND_VERSION</item> + <item>PACKAGE_FIND_VERSION_COUNT</item> + <item>PACKAGE_FIND_VERSION_MAJOR</item> + <item>PACKAGE_FIND_VERSION_MINOR</item> + <item>PACKAGE_FIND_VERSION_PATCH</item> + <item>PACKAGE_FIND_VERSION_TWEAK</item> + <item>PACKAGE_VERSION</item> + <item>PACKAGE_VERSION_COMPATIBLE</item> + <item>PACKAGE_VERSION_EXACT</item> + <item>PACKAGE_VERSION_UNSUITABLE</item> + <item>PKG_CONFIG_EXECUTABLE</item> + <item>PKG_CONFIG_USE_CMAKE_PREFIX_PATH</item> + <item>PKG_CONFIG_VERSION_STRING</item> + <item>PROJECT_BINARY_DIR</item> + <item>PROJECT_DESCRIPTION</item> + <item>PROJECT_HOMEPAGE_URL</item> + <item>PROJECT_NAME</item> + <item>PROJECT_SOURCE_DIR</item> + <item>PROJECT_VERSION</item> + <item>PROJECT_VERSION_MAJOR</item> + <item>PROJECT_VERSION_MINOR</item> + <item>PROJECT_VERSION_PATCH</item> + <item>PROJECT_VERSION_TWEAK</item> + <item>QTIFWDIR</item> + <item>THREADS_PREFER_PTHREAD_FLAG</item> + <item>UNIX</item> + <item>WIN32</item> + <item>WINCE</item> + <item>WINDOWS_PHONE</item> + <item>WINDOWS_STORE</item> + <item>XCODE</item> + <item>XCODE_VERSION</item> + </list> + <list name="global-properties"> + <item>ALLOW_DUPLICATE_CUSTOM_TARGETS</item> + <item>AUTOGEN_SOURCE_GROUP</item> + <item>AUTOGEN_TARGETS_FOLDER</item> + <item>AUTOMOC_SOURCE_GROUP</item> + <item>AUTOMOC_TARGETS_FOLDER</item> + <item>AUTORCC_SOURCE_GROUP</item> + <item>CMAKE_CXX_KNOWN_FEATURES</item> + <item>CMAKE_C_KNOWN_FEATURES</item> + <item>DEBUG_CONFIGURATIONS</item> + <item>DISABLED_FEATURES</item> + <item>ECLIPSE_EXTRA_NATURES</item> + <item>ENABLED_FEATURES</item> + <item>ENABLED_LANGUAGES</item> + <item>FIND_LIBRARY_USE_LIB32_PATHS</item> + <item>FIND_LIBRARY_USE_LIB64_PATHS</item> + <item>FIND_LIBRARY_USE_LIBX32_PATHS</item> + <item>FIND_LIBRARY_USE_OPENBSD_VERSIONING</item> + <item>FeatureSummary_DEFAULT_PKG_TYPE</item> + <item>FeatureSummary_PKG_TYPES</item> + <item>FeatureSummary_REQUIRED_PKG_TYPES</item> + <item>GENERATOR_IS_MULTI_CONFIG</item> + <item>GLOBAL_DEPENDS_DEBUG_MODE</item> + <item>GLOBAL_DEPENDS_NO_CYCLES</item> + <item>IN_TRY_COMPILE</item> + <item>JOB_POOLS</item> + <item>PACKAGES_FOUND</item> + <item>PACKAGES_NOT_FOUND</item> + <item>PREDEFINED_TARGETS_FOLDER</item> + <item>REPORT_UNDEFINED_PROPERTIES</item> + <item>RULE_LAUNCH_COMPILE</item> + <item>RULE_LAUNCH_CUSTOM</item> + <item>RULE_LAUNCH_LINK</item> + <item>RULE_MESSAGES</item> + <item>TARGET_ARCHIVES_MAY_BE_SHARED_LIBS</item> + <item>TARGET_MESSAGES</item> + <item>TARGET_SUPPORTS_SHARED_LIBS</item> + <item>USE_FOLDERS</item> + <item>XCODE_EMIT_EFFECTIVE_PLATFORM_NAME</item> + </list> + <list name="directory-properties"> + <item>ADDITIONAL_MAKE_CLEAN_FILES</item> + <item>BINARY_DIR</item> + <item>BUILDSYSTEM_TARGETS</item> + <item>CACHE_VARIABLES</item> + <item>CLEAN_NO_CUSTOM</item> + <item>CMAKE_CONFIGURE_DEPENDS</item> + <item>COMPILE_DEFINITIONS</item> + <item>COMPILE_OPTIONS</item> + <item>DEFINITIONS</item> + <item>EXCLUDE_FROM_ALL</item> + <item>IMPLICIT_DEPENDS_INCLUDE_TRANSFORM</item> + <item>INCLUDE_DIRECTORIES</item> + <item>INCLUDE_REGULAR_EXPRESSION</item> + <item>INTERPROCEDURAL_OPTIMIZATION</item> + <item>LABELS</item> + <item>LINK_DIRECTORIES</item> + <item>LINK_OPTIONS</item> + <item>LISTFILE_STACK</item> + <item>MACROS</item> + <item>PARENT_DIRECTORY</item> + <item>RULE_LAUNCH_COMPILE</item> + <item>RULE_LAUNCH_CUSTOM</item> + <item>RULE_LAUNCH_LINK</item> + <item>SOURCE_DIR</item> + <item>SUBDIRECTORIES</item> + <item>TESTS</item> + <item>TEST_INCLUDE_FILE</item> + <item>TEST_INCLUDE_FILES</item> + <item>VARIABLES</item> + <item>VS_STARTUP_PROJECT</item> + </list> + <list name="target-properties"> + <item>ALIASED_TARGET</item> + <item>ANDROID_ANT_ADDITIONAL_OPTIONS</item> + <item>ANDROID_API</item> + <item>ANDROID_API_MIN</item> + <item>ANDROID_ARCH</item> + <item>ANDROID_ASSETS_DIRECTORIES</item> + <item>ANDROID_GUI</item> + <item>ANDROID_JAR_DEPENDENCIES</item> + <item>ANDROID_JAR_DIRECTORIES</item> + <item>ANDROID_JAVA_SOURCE_DIR</item> + <item>ANDROID_NATIVE_LIB_DEPENDENCIES</item> + <item>ANDROID_NATIVE_LIB_DIRECTORIES</item> + <item>ANDROID_PROCESS_MAX</item> + <item>ANDROID_PROGUARD</item> + <item>ANDROID_PROGUARD_CONFIG_PATH</item> + <item>ANDROID_SECURE_PROPS_PATH</item> + <item>ANDROID_SKIP_ANT_STEP</item> + <item>ANDROID_STL_TYPE</item> + <item>ARCHIVE_OUTPUT_DIRECTORY</item> + <item>ARCHIVE_OUTPUT_NAME</item> + <item>AUTOGEN_BUILD_DIR</item> + <item>AUTOGEN_TARGET_DEPENDS</item> + <item>AUTOMOC</item> + <item>AUTOMOC_DEPEND_FILTERS</item> + <item>AUTOMOC_MOC_OPTIONS</item> + <item>AUTORCC</item> + <item>AUTORCC_OPTIONS</item> + <item>AUTOUIC</item> + <item>AUTOUIC_OPTIONS</item> + <item>AUTOUIC_SEARCH_PATHS</item> + <item>BINARY_DIR</item> + <item>BUILD_RPATH</item> + <item>BUILD_WITH_INSTALL_NAME_DIR</item> + <item>BUILD_WITH_INSTALL_RPATH</item> + <item>BUNDLE</item> + <item>BUNDLE_EXTENSION</item> + <item>COMMON_LANGUAGE_RUNTIME</item> + <item>COMPATIBLE_INTERFACE_BOOL</item> + <item>COMPATIBLE_INTERFACE_NUMBER_MAX</item> + <item>COMPATIBLE_INTERFACE_NUMBER_MIN</item> + <item>COMPATIBLE_INTERFACE_STRING</item> + <item>COMPILE_DEFINITIONS</item> + <item>COMPILE_FEATURES</item> + <item>COMPILE_FLAGS</item> + <item>COMPILE_OPTIONS</item> + <item>COMPILE_PDB_NAME</item> + <item>COMPILE_PDB_OUTPUT_DIRECTORY</item> + <item>CROSSCOMPILING_EMULATOR</item> + <item>CUDA_EXTENSIONS</item> + <item>CUDA_PTX_COMPILATION</item> + <item>CUDA_RESOLVE_DEVICE_SYMBOLS</item> + <item>CUDA_SEPARABLE_COMPILATION</item> + <item>CUDA_STANDARD</item> + <item>CUDA_STANDARD_REQUIRED</item> + <item>CXX_EXTENSIONS</item> + <item>CXX_STANDARD</item> + <item>CXX_STANDARD_REQUIRED</item> + <item>C_EXTENSIONS</item> + <item>C_STANDARD</item> + <item>C_STANDARD_REQUIRED</item> + <item>DEFINE_SYMBOL</item> + <item>DEPLOYMENT_ADDITIONAL_FILES</item> + <item>DEPLOYMENT_REMOTE_DIRECTORY</item> + <item>DOTNET_TARGET_FRAMEWORK_VERSION</item> + <item>ENABLE_EXPORTS</item> + <item>EXCLUDE_FROM_ALL</item> + <item>EXCLUDE_FROM_DEFAULT_BUILD</item> + <item>EXPORT_NAME</item> + <item>EXPORT_PROPERTIES</item> + <item>EchoString</item> + <item>FOLDER</item> + <item>FRAMEWORK</item> + <item>FRAMEWORK_VERSION</item> + <item>Fortran_FORMAT</item> + <item>Fortran_MODULE_DIRECTORY</item> + <item>GENERATOR_FILE_NAME</item> + <item>GNUtoMS</item> + <item>HAS_CXX</item> + <item>IMPLICIT_DEPENDS_INCLUDE_TRANSFORM</item> + <item>IMPORTED</item> + <item>IMPORTED_COMMON_LANGUAGE_RUNTIME</item> + <item>IMPORTED_CONFIGURATIONS</item> + <item>IMPORTED_GLOBAL</item> + <item>IMPORTED_IMPLIB</item> + <item>IMPORTED_LIBNAME</item> + <item>IMPORTED_LINK_DEPENDENT_LIBRARIES</item> + <item>IMPORTED_LINK_INTERFACE_LANGUAGES</item> + <item>IMPORTED_LINK_INTERFACE_LIBRARIES</item> + <item>IMPORTED_LINK_INTERFACE_MULTIPLICITY</item> + <item>IMPORTED_LOCATION</item> + <item>IMPORTED_NO_SONAME</item> + <item>IMPORTED_OBJECTS</item> + <item>IMPORTED_SONAME</item> + <item>IMPORT_PREFIX</item> + <item>IMPORT_SUFFIX</item> + <item>INCLUDE_DIRECTORIES</item> + <item>INSTALL_NAME_DIR</item> + <item>INSTALL_RPATH</item> + <item>INSTALL_RPATH_USE_LINK_PATH</item> + <item>INTERFACE_AUTOUIC_OPTIONS</item> + <item>INTERFACE_COMPILE_DEFINITIONS</item> + <item>INTERFACE_COMPILE_FEATURES</item> + <item>INTERFACE_COMPILE_OPTIONS</item> + <item>INTERFACE_INCLUDE_DIRECTORIES</item> + <item>INTERFACE_LINK_DEPENDS</item> + <item>INTERFACE_LINK_DIRECTORIES</item> + <item>INTERFACE_LINK_LIBRARIES</item> + <item>INTERFACE_LINK_OPTIONS</item> + <item>INTERFACE_POSITION_INDEPENDENT_CODE</item> + <item>INTERFACE_SOURCES</item> + <item>INTERFACE_SYSTEM_INCLUDE_DIRECTORIES</item> + <item>INTERPROCEDURAL_OPTIMIZATION</item> + <item>IOS_INSTALL_COMBINED</item> + <item>JOB_POOL_COMPILE</item> + <item>JOB_POOL_LINK</item> + <item>LABELS</item> + <item>LIBRARY_OUTPUT_DIRECTORY</item> + <item>LIBRARY_OUTPUT_NAME</item> + <item>LINKER_LANGUAGE</item> + <item>LINK_DEPENDS</item> + <item>LINK_DEPENDS_NO_SHARED</item> + <item>LINK_DIRECTORIES</item> + <item>LINK_FLAGS</item> + <item>LINK_INTERFACE_LIBRARIES</item> + <item>LINK_INTERFACE_MULTIPLICITY</item> + <item>LINK_LIBRARIES</item> + <item>LINK_OPTIONS</item> + <item>LINK_SEARCH_END_STATIC</item> + <item>LINK_SEARCH_START_STATIC</item> + <item>LINK_WHAT_YOU_USE</item> + <item>LOCATION</item> + <item>MACOSX_BUNDLE</item> + <item>MACOSX_BUNDLE_INFO_PLIST</item> + <item>MACOSX_FRAMEWORK_INFO_PLIST</item> + <item>MACOSX_RPATH</item> + <item>MANUALLY_ADDED_DEPENDENCIES</item> + <item>NAME</item> + <item>NO_SONAME</item> + <item>NO_SYSTEM_FROM_IMPORTED</item> + <item>OSX_ARCHITECTURES</item> + <item>OUTPUT_NAME</item> + <item>PDB_NAME</item> + <item>PDB_OUTPUT_DIRECTORY</item> + <item>POSITION_INDEPENDENT_CODE</item> + <item>PREFIX</item> + <item>PRIVATE_HEADER</item> + <item>PROJECT_LABEL</item> + <item>PUBLIC_HEADER</item> + <item>RESOURCE</item> + <item>RULE_LAUNCH_COMPILE</item> + <item>RULE_LAUNCH_CUSTOM</item> + <item>RULE_LAUNCH_LINK</item> + <item>RUNTIME_OUTPUT_DIRECTORY</item> + <item>RUNTIME_OUTPUT_NAME</item> + <item>SKIP_BUILD_RPATH</item> + <item>SOURCES</item> + <item>SOURCE_DIR</item> + <item>SOVERSION</item> + <item>STATIC_LIBRARY_FLAGS</item> + <item>STATIC_LIBRARY_OPTIONS</item> + <item>SUFFIX</item> + <item>TYPE</item> + <item>VERSION</item> + <item>VISIBILITY_INLINES_HIDDEN</item> + <item>VS_CONFIGURATION_TYPE</item> + <item>VS_DEBUGGER_COMMAND</item> + <item>VS_DEBUGGER_COMMAND_ARGUMENTS</item> + <item>VS_DEBUGGER_ENVIRONMENT</item> + <item>VS_DEBUGGER_WORKING_DIRECTORY</item> + <item>VS_DESKTOP_EXTENSIONS_VERSION</item> + <item>VS_DOTNET_REFERENCES</item> + <item>VS_DOTNET_REFERENCES_COPY_LOCAL</item> + <item>VS_DOTNET_TARGET_FRAMEWORK_VERSION</item> + <item>VS_GLOBAL_KEYWORD</item> + <item>VS_GLOBAL_PROJECT_TYPES</item> + <item>VS_GLOBAL_ROOTNAMESPACE</item> + <item>VS_IOT_EXTENSIONS_VERSION</item> + <item>VS_IOT_STARTUP_TASK</item> + <item>VS_KEYWORD</item> + <item>VS_MOBILE_EXTENSIONS_VERSION</item> + <item>VS_SCC_AUXPATH</item> + <item>VS_SCC_LOCALPATH</item> + <item>VS_SCC_PROJECTNAME</item> + <item>VS_SCC_PROVIDER</item> + <item>VS_SDK_REFERENCES</item> + <item>VS_USER_PROPS</item> + <item>VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION</item> + <item>VS_WINRT_COMPONENT</item> + <item>VS_WINRT_EXTENSIONS</item> + <item>VS_WINRT_REFERENCES</item> + <item>WIN32_EXECUTABLE</item> + <item>WINDOWS_EXPORT_ALL_SYMBOLS</item> + <item>XCODE_EXPLICIT_FILE_TYPE</item> + <item>XCODE_PRODUCT_TYPE</item> + <item>XCODE_SCHEME_ADDRESS_SANITIZER</item> + <item>XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item> + <item>XCODE_SCHEME_ARGUMENTS</item> + <item>XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item> + <item>XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item> + <item>XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item> + <item>XCODE_SCHEME_ENVIRONMENT</item> + <item>XCODE_SCHEME_EXECUTABLE</item> + <item>XCODE_SCHEME_GUARD_MALLOC</item> + <item>XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP</item> + <item>XCODE_SCHEME_MALLOC_GUARD_EDGES</item> + <item>XCODE_SCHEME_MALLOC_SCRIBBLE</item> + <item>XCODE_SCHEME_MALLOC_STACK</item> + <item>XCODE_SCHEME_THREAD_SANITIZER</item> + <item>XCODE_SCHEME_THREAD_SANITIZER_STOP</item> + <item>XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</item> + <item>XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</item> + <item>XCODE_SCHEME_ZOMBIE_OBJECTS</item> + <item>XCTEST</item> + </list> + <list name="source-properties"> + <item>ABSTRACT</item> + <item>AUTORCC_OPTIONS</item> + <item>AUTOUIC_OPTIONS</item> + <item>COMPILE_DEFINITIONS</item> + <item>COMPILE_FLAGS</item> + <item>COMPILE_OPTIONS</item> + <item>EXTERNAL_OBJECT</item> + <item>Fortran_FORMAT</item> + <item>GENERATED</item> + <item>HEADER_FILE_ONLY</item> + <item>INCLUDE_DIRECTORIES</item> + <item>KEEP_EXTENSION</item> + <item>LABELS</item> + <item>LANGUAGE</item> + <item>LOCATION</item> + <item>MACOSX_PACKAGE_LOCATION</item> + <item>OBJECT_DEPENDS</item> + <item>OBJECT_OUTPUTS</item> + <item>SKIP_AUTOGEN</item> + <item>SKIP_AUTOMOC</item> + <item>SKIP_AUTORCC</item> + <item>SKIP_AUTOUIC</item> + <item>SYMBOLIC</item> + <item>VS_COPY_TO_OUT_DIR</item> + <item>VS_DEPLOYMENT_CONTENT</item> + <item>VS_DEPLOYMENT_LOCATION</item> + <item>VS_INCLUDE_IN_VSIX</item> + <item>VS_RESOURCE_GENERATOR</item> + <item>VS_SHADER_DISABLE_OPTIMIZATIONS</item> + <item>VS_SHADER_ENABLE_DEBUG</item> + <item>VS_SHADER_ENTRYPOINT</item> + <item>VS_SHADER_FLAGS</item> + <item>VS_SHADER_MODEL</item> + <item>VS_SHADER_OBJECT_FILE_NAME</item> + <item>VS_SHADER_OUTPUT_HEADER_FILE</item> + <item>VS_SHADER_TYPE</item> + <item>VS_SHADER_VARIABLE_NAME</item> + <item>VS_TOOL_OVERRIDE</item> + <item>VS_XAML_TYPE</item> + <item>WRAP_EXCLUDE</item> + <item>XCODE_EXPLICIT_FILE_TYPE</item> + <item>XCODE_FILE_ATTRIBUTES</item> + <item>XCODE_LAST_KNOWN_FILE_TYPE</item> + </list> + <list name="test-properties"> + <item>ATTACHED_FILES</item> + <item>ATTACHED_FILES_ON_FAIL</item> + <item>COST</item> + <item>DEPENDS</item> + <item>DISABLED</item> + <item>ENVIRONMENT</item> + <item>FAIL_REGULAR_EXPRESSION</item> + <item>FIXTURES_CLEANUP</item> + <item>FIXTURES_REQUIRED</item> + <item>FIXTURES_SETUP</item> + <item>LABELS</item> + <item>MEASUREMENT</item> + <item>PASS_REGULAR_EXPRESSION</item> + <item>PROCESSORS</item> + <item>PROCESSOR_AFFINITY</item> + <item>REQUIRED_FILES</item> + <item>RESOURCE_LOCK</item> + <item>RUN_SERIAL</item> + <item>SKIP_RETURN_CODE</item> + <item>TIMEOUT</item> + <item>TIMEOUT_AFTER_MATCH</item> + <item>WILL_FAIL</item> + <item>WORKING_DIRECTORY</item> + </list> + <list name="cache-properties"> + <item>ADVANCED</item> + <item>HELPSTRING</item> + <item>MODIFIED</item> + <item>STRINGS</item> + <item>TYPE</item> + <item>VALUE</item> + </list> + <list name="install-properties"> + <item>CPACK_DESKTOP_SHORTCUTS</item> + <item>CPACK_NEVER_OVERWRITE</item> + <item>CPACK_PERMANENT</item> + <item>CPACK_STARTUP_SHORTCUTS</item> + <item>CPACK_START_MENU_SHORTCUTS</item> + <item>CPACK_WIX_ACL</item> + </list> + + <list name="generator-expressions"> + <item>0</item> + <item>1</item> + <item>AND</item> + <item>ANGLE-R</item> + <item>BOOL</item> + <item>BUILD_INTERFACE</item> + <item>COMMA</item> + <item>COMPILE_FEATURES</item> + <item>COMPILE_LANGUAGE</item> + <item>CONFIG</item> + <item>CXX_COMPILER_ID</item> + <item>CXX_COMPILER_VERSION</item> + <item>C_COMPILER_ID</item> + <item>C_COMPILER_VERSION</item> + <item>EQUAL</item> + <item>GENEX_EVAL</item> + <item>IF</item> + <item>INSTALL_INTERFACE</item> + <item>INSTALL_PREFIX</item> + <item>IN_LIST</item> + <item>JOIN</item> + <item>LINK_ONLY</item> + <item>LOWER_CASE</item> + <item>MAKE_C_IDENTIFIER</item> + <item>NOT</item> + <item>OR</item> + <item>PLATFORM_ID</item> + <item>SEMICOLON</item> + <item>SHELL_PATH</item> + <item>STREQUAL</item> + <item>TARGET_BUNDLE_CONTENT_DIR</item> + <item>TARGET_BUNDLE_DIR</item> + <item>TARGET_EXISTS</item> + <item>TARGET_FILE</item> + <item>TARGET_FILE_DIR</item> + <item>TARGET_FILE_NAME</item> + <item>TARGET_GENEX_EVAL</item> + <item>TARGET_LINKER_FILE</item> + <item>TARGET_LINKER_FILE_DIR</item> + <item>TARGET_LINKER_FILE_NAME</item> + <item>TARGET_NAME</item> + <item>TARGET_NAME_IF_EXISTS</item> + <item>TARGET_OBJECTS</item> + <item>TARGET_PDB_FILE</item> + <item>TARGET_PDB_FILE_DIR</item> + <item>TARGET_PDB_FILE_NAME</item> + <item>TARGET_POLICY</item> + <item>TARGET_PROPERTY</item> + <item>TARGET_SONAME_FILE</item> + <item>TARGET_SONAME_FILE_DIR</item> + <item>TARGET_SONAME_FILE_NAME</item> + <item>UPPER_CASE</item> + <item>VERSION_EQUAL</item> + <item>VERSION_GREATER</item> + <item>VERSION_GREATER_EQUAL</item> + <item>VERSION_LESS</item> + <item>VERSION_LESS_EQUAL</item> + </list> + + <contexts> + + <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text"> + <DetectSpaces/> + <WordDetect String="break" insensitive="true" attribute="Command" context="break_ctx" /> + <WordDetect String="cmake_host_system_information" insensitive="true" attribute="Command" context="cmake_host_system_information_ctx" /> + <WordDetect String="cmake_minimum_required" insensitive="true" attribute="Command" context="cmake_minimum_required_ctx" /> + <WordDetect String="cmake_parse_arguments" insensitive="true" attribute="Command" context="cmake_parse_arguments_ctx" /> + <WordDetect String="cmake_policy" insensitive="true" attribute="Command" context="cmake_policy_ctx" /> + <WordDetect String="configure_file" insensitive="true" attribute="Command" context="configure_file_ctx" /> + <WordDetect String="continue" insensitive="true" attribute="Command" context="continue_ctx" /> + <WordDetect String="elseif" insensitive="true" attribute="Command" context="elseif_ctx" /> + <WordDetect String="else" insensitive="true" attribute="Command" context="else_ctx" /> + <WordDetect String="endforeach" insensitive="true" attribute="Command" context="endforeach_ctx" /> + <WordDetect String="endfunction" insensitive="true" attribute="Command" context="endfunction_ctx" /> + <WordDetect String="endif" insensitive="true" attribute="Command" context="endif_ctx" /> + <WordDetect String="endmacro" insensitive="true" attribute="Command" context="endmacro_ctx" /> + <WordDetect String="endwhile" insensitive="true" attribute="Command" context="endwhile_ctx" /> + <WordDetect String="execute_process" insensitive="true" attribute="Command" context="execute_process_ctx" /> + <WordDetect String="file" insensitive="true" attribute="Command" context="file_ctx" /> + <WordDetect String="find_file" insensitive="true" attribute="Command" context="find_file_ctx" /> + <WordDetect String="find_library" insensitive="true" attribute="Command" context="find_library_ctx" /> + <WordDetect String="find_package" insensitive="true" attribute="Command" context="find_package_ctx" /> + <WordDetect String="find_path" insensitive="true" attribute="Command" context="find_path_ctx" /> + <WordDetect String="find_program" insensitive="true" attribute="Command" context="find_program_ctx" /> + <WordDetect String="foreach" insensitive="true" attribute="Command" context="foreach_ctx" /> + <WordDetect String="function" insensitive="true" attribute="Command" context="function_ctx" /> + <WordDetect String="get_cmake_property" insensitive="true" attribute="Command" context="get_cmake_property_ctx" /> + <WordDetect String="get_directory_property" insensitive="true" attribute="Command" context="get_directory_property_ctx" /> + <WordDetect String="get_filename_component" insensitive="true" attribute="Command" context="get_filename_component_ctx" /> + <WordDetect String="get_property" insensitive="true" attribute="Command" context="get_property_ctx" /> + <WordDetect String="if" insensitive="true" attribute="Command" context="if_ctx" /> + <WordDetect String="include" insensitive="true" attribute="Command" context="include_ctx" /> + <WordDetect String="include_guard" insensitive="true" attribute="Command" context="include_guard_ctx" /> + <WordDetect String="list" insensitive="true" attribute="Command" context="list_ctx" /> + <WordDetect String="macro" insensitive="true" attribute="Command" context="macro_ctx" /> + <WordDetect String="mark_as_advanced" insensitive="true" attribute="Command" context="mark_as_advanced_ctx" /> + <WordDetect String="math" insensitive="true" attribute="Command" context="math_ctx" /> + <WordDetect String="message" insensitive="true" attribute="Command" context="message_ctx" /> + <WordDetect String="option" insensitive="true" attribute="Command" context="option_ctx" /> + <WordDetect String="return" insensitive="true" attribute="Command" context="return_ctx" /> + <WordDetect String="separate_arguments" insensitive="true" attribute="Command" context="separate_arguments_ctx" /> + <WordDetect String="set_directory_properties" insensitive="true" attribute="Command" context="set_directory_properties_ctx" /> + <WordDetect String="set_property" insensitive="true" attribute="Command" context="set_property_ctx" /> + <WordDetect String="set" insensitive="true" attribute="Command" context="set_ctx" /> + <WordDetect String="site_name" insensitive="true" attribute="Command" context="site_name_ctx" /> + <WordDetect String="string" insensitive="true" attribute="Command" context="string_ctx" /> + <WordDetect String="unset" insensitive="true" attribute="Command" context="unset_ctx" /> + <WordDetect String="variable_watch" insensitive="true" attribute="Command" context="variable_watch_ctx" /> + <WordDetect String="while" insensitive="true" attribute="Command" context="while_ctx" /> + <WordDetect String="add_compile_definitions" insensitive="true" attribute="Command" context="add_compile_definitions_ctx" /> + <WordDetect String="add_compile_options" insensitive="true" attribute="Command" context="add_compile_options_ctx" /> + <WordDetect String="add_custom_command" insensitive="true" attribute="Command" context="add_custom_command_ctx" /> + <WordDetect String="add_custom_target" insensitive="true" attribute="Command" context="add_custom_target_ctx" /> + <WordDetect String="add_definitions" insensitive="true" attribute="Command" context="add_definitions_ctx" /> + <WordDetect String="add_dependencies" insensitive="true" attribute="Command" context="add_dependencies_ctx" /> + <WordDetect String="add_executable" insensitive="true" attribute="Command" context="add_executable_ctx" /> + <WordDetect String="add_library" insensitive="true" attribute="Command" context="add_library_ctx" /> + <WordDetect String="add_link_options" insensitive="true" attribute="Command" context="add_link_options_ctx" /> + <WordDetect String="add_subdirectory" insensitive="true" attribute="Command" context="add_subdirectory_ctx" /> + <WordDetect String="add_test" insensitive="true" attribute="Command" context="add_test_ctx" /> + <WordDetect String="aux_source_directory" insensitive="true" attribute="Command" context="aux_source_directory_ctx" /> + <WordDetect String="build_command" insensitive="true" attribute="Command" context="build_command_ctx" /> + <WordDetect String="create_test_sourcelist" insensitive="true" attribute="Command" context="create_test_sourcelist_ctx" /> + <WordDetect String="define_property" insensitive="true" attribute="Command" context="define_property_ctx" /> + <WordDetect String="enable_language" insensitive="true" attribute="Command" context="enable_language_ctx" /> + <WordDetect String="enable_testing" insensitive="true" attribute="Command" context="enable_testing_ctx" /> + <WordDetect String="export" insensitive="true" attribute="Command" context="export_ctx" /> + <WordDetect String="fltk_wrap_ui" insensitive="true" attribute="Command" context="fltk_wrap_ui_ctx" /> + <WordDetect String="get_source_file_property" insensitive="true" attribute="Command" context="get_source_file_property_ctx" /> + <WordDetect String="get_target_property" insensitive="true" attribute="Command" context="get_target_property_ctx" /> + <WordDetect String="get_test_property" insensitive="true" attribute="Command" context="get_test_property_ctx" /> + <WordDetect String="include_directories" insensitive="true" attribute="Command" context="include_directories_ctx" /> + <WordDetect String="include_external_msproject" insensitive="true" attribute="Command" context="include_external_msproject_ctx" /> + <WordDetect String="include_regular_expression" insensitive="true" attribute="Command" context="include_regular_expression_ctx" /> + <WordDetect String="install" insensitive="true" attribute="Command" context="install_ctx" /> + <WordDetect String="link_directories" insensitive="true" attribute="Command" context="link_directories_ctx" /> + <WordDetect String="link_libraries" insensitive="true" attribute="Command" context="link_libraries_ctx" /> + <WordDetect String="load_cache" insensitive="true" attribute="Command" context="load_cache_ctx" /> + <WordDetect String="project" insensitive="true" attribute="Command" context="project_ctx" /> + <WordDetect String="qt_wrap_cpp" insensitive="true" attribute="Command" context="qt_wrap_cpp_ctx" /> + <WordDetect String="qt_wrap_ui" insensitive="true" attribute="Command" context="qt_wrap_ui_ctx" /> + <WordDetect String="remove_definitions" insensitive="true" attribute="Command" context="remove_definitions_ctx" /> + <WordDetect String="set_source_files_properties" insensitive="true" attribute="Command" context="set_source_files_properties_ctx" /> + <WordDetect String="set_target_properties" insensitive="true" attribute="Command" context="set_target_properties_ctx" /> + <WordDetect String="set_tests_properties" insensitive="true" attribute="Command" context="set_tests_properties_ctx" /> + <WordDetect String="source_group" insensitive="true" attribute="Command" context="source_group_ctx" /> + <WordDetect String="target_compile_definitions" insensitive="true" attribute="Command" context="target_compile_definitions_ctx" /> + <WordDetect String="target_compile_features" insensitive="true" attribute="Command" context="target_compile_features_ctx" /> + <WordDetect String="target_compile_options" insensitive="true" attribute="Command" context="target_compile_options_ctx" /> + <WordDetect String="target_include_directories" insensitive="true" attribute="Command" context="target_include_directories_ctx" /> + <WordDetect String="target_link_directories" insensitive="true" attribute="Command" context="target_link_directories_ctx" /> + <WordDetect String="target_link_libraries" insensitive="true" attribute="Command" context="target_link_libraries_ctx" /> + <WordDetect String="target_link_options" insensitive="true" attribute="Command" context="target_link_options_ctx" /> + <WordDetect String="target_sources" insensitive="true" attribute="Command" context="target_sources_ctx" /> + <WordDetect String="try_compile" insensitive="true" attribute="Command" context="try_compile_ctx" /> + <WordDetect String="try_run" insensitive="true" attribute="Command" context="try_run_ctx" /> + <WordDetect String="ctest_build" insensitive="true" attribute="Command" context="ctest_build_ctx" /> + <WordDetect String="ctest_configure" insensitive="true" attribute="Command" context="ctest_configure_ctx" /> + <WordDetect String="ctest_coverage" insensitive="true" attribute="Command" context="ctest_coverage_ctx" /> + <WordDetect String="ctest_empty_binary_directory" insensitive="true" attribute="Command" context="ctest_empty_binary_directory_ctx" /> + <WordDetect String="ctest_memcheck" insensitive="true" attribute="Command" context="ctest_memcheck_ctx" /> + <WordDetect String="ctest_read_custom_files" insensitive="true" attribute="Command" context="ctest_read_custom_files_ctx" /> + <WordDetect String="ctest_run_script" insensitive="true" attribute="Command" context="ctest_run_script_ctx" /> + <WordDetect String="ctest_sleep" insensitive="true" attribute="Command" context="ctest_sleep_ctx" /> + <WordDetect String="ctest_start" insensitive="true" attribute="Command" context="ctest_start_ctx" /> + <WordDetect String="ctest_submit" insensitive="true" attribute="Command" context="ctest_submit_ctx" /> + <WordDetect String="ctest_test" insensitive="true" attribute="Command" context="ctest_test_ctx" /> + <WordDetect String="ctest_update" insensitive="true" attribute="Command" context="ctest_update_ctx" /> + <WordDetect String="ctest_upload" insensitive="true" attribute="Command" context="ctest_upload_ctx" /> + <RegExpr attribute="Region Marker" context="RST Documentation" String="^#\[(=*)\[\.rst:" column="0" /> + <RegExpr attribute="Comment" context="Bracketed Comment" String="#\[(=*)\[" /> + <DetectChar attribute="Comment" context="Comment" char="#" /> + <DetectIdentifier attribute="User Function/Macro" context="User Function" /> + <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" /> + <!-- Include keywords matching for language autocompleter work --> + <keyword attribute="Command" context="#stay" String="commands" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="break_ctx"> + <DetectChar attribute="Normal Text" context="break_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="break_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="cmake_host_system_information_ctx"> + <DetectChar attribute="Normal Text" context="cmake_host_system_information_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="cmake_host_system_information_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="cmake_host_system_information_nargs" /> + <keyword attribute="Special Args" context="#stay" String="cmake_host_system_information_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="cmake_minimum_required_ctx"> + <DetectChar attribute="Normal Text" context="cmake_minimum_required_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="cmake_minimum_required_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="cmake_minimum_required_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="cmake_parse_arguments_ctx"> + <DetectChar attribute="Normal Text" context="cmake_parse_arguments_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="cmake_parse_arguments_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="cmake_parse_arguments_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="cmake_policy_ctx"> + <DetectChar attribute="Normal Text" context="cmake_policy_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="cmake_policy_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="cmake_policy_nargs" /> + <keyword attribute="Special Args" context="#stay" String="cmake_policy_sargs" /> + <IncludeRules context="User Function Args" /> + <!-- NOTE Handle CMP<NNN> as a special arg of `cmake_policy` command --> + <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9]+\b" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="configure_file_ctx"> + <DetectChar attribute="Normal Text" context="configure_file_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="configure_file_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="configure_file_nargs" /> + <keyword attribute="Special Args" context="#stay" String="configure_file_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="continue_ctx"> + <DetectChar attribute="Normal Text" context="continue_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="continue_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx"> + <DetectChar attribute="Normal Text" context="elseif_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx_op"> + <DetectChar attribute="Normal Text" context="elseif_ctx_op_nested" char="(" /> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="elseif_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx_op_nested"> + <IncludeRules context="EndCmdPop" /> + <keyword attribute="Named Args" context="#stay" String="elseif_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="else_ctx"> + <DetectChar attribute="Normal Text" context="else_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="else_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endforeach_ctx"> + <DetectChar attribute="Normal Text" context="endforeach_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endforeach_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endfunction_ctx"> + <DetectChar attribute="Normal Text" context="endfunction_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endfunction_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endif_ctx"> + <DetectChar attribute="Normal Text" context="endif_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endif_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endmacro_ctx"> + <DetectChar attribute="Normal Text" context="endmacro_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endmacro_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endwhile_ctx"> + <DetectChar attribute="Normal Text" context="endwhile_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="endwhile_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx"> + <DetectChar attribute="Normal Text" context="execute_process_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="execute_process_nargs" /> + <keyword attribute="Special Args" context="#stay" String="execute_process_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="file_ctx"> + <DetectChar attribute="Normal Text" context="file_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="file_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="file_nargs" /> + <keyword attribute="Special Args" context="#stay" String="file_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_file_ctx"> + <DetectChar attribute="Normal Text" context="find_file_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_file_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="find_file_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_library_ctx"> + <DetectChar attribute="Normal Text" context="find_library_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_library_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="find_library_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_package_ctx"> + <DetectChar attribute="Normal Text" context="find_package_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_package_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="find_package_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_path_ctx"> + <DetectChar attribute="Normal Text" context="find_path_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_path_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="find_path_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_program_ctx"> + <DetectChar attribute="Normal Text" context="find_program_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="find_program_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="find_program_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="foreach_ctx"> + <DetectChar attribute="Normal Text" context="foreach_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="foreach_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="foreach_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="function_ctx"> + <DetectChar attribute="Normal Text" context="function_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="function_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_cmake_property_ctx"> + <DetectChar attribute="Normal Text" context="get_cmake_property_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_cmake_property_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Property" context="#stay" String="global-properties" /> + <IncludeRules context="Detect More global-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_directory_property_ctx"> + <DetectChar attribute="Normal Text" context="get_directory_property_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_directory_property_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="get_directory_property_nargs" /> + <keyword attribute="Property" context="#stay" String="directory-properties" /> + <IncludeRules context="Detect More directory-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_filename_component_ctx"> + <DetectChar attribute="Normal Text" context="get_filename_component_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_filename_component_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="get_filename_component_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_property_ctx"> + <DetectChar attribute="Normal Text" context="get_property_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_property_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="get_property_nargs" /> + <keyword attribute="Property" context="#stay" String="cache-properties" /> + <keyword attribute="Property" context="#stay" String="directory-properties" /> + <IncludeRules context="Detect More directory-properties" /> + <keyword attribute="Property" context="#stay" String="global-properties" /> + <IncludeRules context="Detect More global-properties" /> + <keyword attribute="Property" context="#stay" String="install-properties" /> + <keyword attribute="Property" context="#stay" String="source-properties" /> + <IncludeRules context="Detect More source-properties" /> + <keyword attribute="Property" context="#stay" String="target-properties" /> + <IncludeRules context="Detect More target-properties" /> + <keyword attribute="Property" context="#stay" String="test-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx"> + <DetectChar attribute="Normal Text" context="if_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx_op"> + <DetectChar attribute="Normal Text" context="if_ctx_op_nested" char="(" /> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="if_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx_op_nested"> + <IncludeRules context="EndCmdPop" /> + <keyword attribute="Named Args" context="#stay" String="if_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_ctx"> + <DetectChar attribute="Normal Text" context="include_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="include_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_guard_ctx"> + <DetectChar attribute="Normal Text" context="include_guard_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_guard_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="include_guard_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="list_ctx"> + <DetectChar attribute="Normal Text" context="list_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="list_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="list_nargs" /> + <keyword attribute="Special Args" context="#stay" String="list_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="macro_ctx"> + <DetectChar attribute="Normal Text" context="macro_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="macro_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="mark_as_advanced_ctx"> + <DetectChar attribute="Normal Text" context="mark_as_advanced_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="mark_as_advanced_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="mark_as_advanced_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="math_ctx"> + <DetectChar attribute="Normal Text" context="math_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="math_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="math_nargs" /> + <keyword attribute="Special Args" context="#stay" String="math_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="message_ctx"> + <DetectChar attribute="Normal Text" context="message_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="message_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="message_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="option_ctx"> + <DetectChar attribute="Normal Text" context="option_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="option_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="return_ctx"> + <DetectChar attribute="Normal Text" context="return_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="return_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="separate_arguments_ctx"> + <DetectChar attribute="Normal Text" context="separate_arguments_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="separate_arguments_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="separate_arguments_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_directory_properties_ctx"> + <DetectChar attribute="Normal Text" context="set_directory_properties_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_directory_properties_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="set_directory_properties_nargs" /> + <keyword attribute="Property" context="#stay" String="cache-properties" /> + <keyword attribute="Property" context="#stay" String="directory-properties" /> + <IncludeRules context="Detect More directory-properties" /> + <keyword attribute="Property" context="#stay" String="global-properties" /> + <IncludeRules context="Detect More global-properties" /> + <keyword attribute="Property" context="#stay" String="install-properties" /> + <keyword attribute="Property" context="#stay" String="source-properties" /> + <IncludeRules context="Detect More source-properties" /> + <keyword attribute="Property" context="#stay" String="target-properties" /> + <IncludeRules context="Detect More target-properties" /> + <keyword attribute="Property" context="#stay" String="test-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_property_ctx"> + <DetectChar attribute="Normal Text" context="set_property_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_property_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="set_property_nargs" /> + <keyword attribute="Property" context="#stay" String="cache-properties" /> + <keyword attribute="Property" context="#stay" String="directory-properties" /> + <IncludeRules context="Detect More directory-properties" /> + <keyword attribute="Property" context="#stay" String="global-properties" /> + <IncludeRules context="Detect More global-properties" /> + <keyword attribute="Property" context="#stay" String="install-properties" /> + <keyword attribute="Property" context="#stay" String="source-properties" /> + <IncludeRules context="Detect More source-properties" /> + <keyword attribute="Property" context="#stay" String="target-properties" /> + <IncludeRules context="Detect More target-properties" /> + <keyword attribute="Property" context="#stay" String="test-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_ctx"> + <DetectChar attribute="Normal Text" context="set_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="set_nargs" /> + <keyword attribute="Special Args" context="#stay" String="set_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="site_name_ctx"> + <DetectChar attribute="Normal Text" context="site_name_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="site_name_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="string_ctx"> + <DetectChar attribute="Normal Text" context="string_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="string_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="string_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="unset_ctx"> + <DetectChar attribute="Normal Text" context="unset_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="unset_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="unset_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="variable_watch_ctx"> + <DetectChar attribute="Normal Text" context="variable_watch_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="variable_watch_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx"> + <DetectChar attribute="Normal Text" context="while_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx_op"> + <DetectChar attribute="Normal Text" context="while_ctx_op_nested" char="(" /> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="while_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx_op_nested"> + <IncludeRules context="EndCmdPop" /> + <keyword attribute="Named Args" context="#stay" String="while_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_compile_definitions_ctx"> + <DetectChar attribute="Normal Text" context="add_compile_definitions_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_compile_definitions_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_compile_options_ctx"> + <DetectChar attribute="Normal Text" context="add_compile_options_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_compile_options_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx"> + <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx"> + <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_definitions_ctx"> + <DetectChar attribute="Normal Text" context="add_definitions_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_definitions_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_dependencies_ctx"> + <DetectChar attribute="Normal Text" context="add_dependencies_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_dependencies_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx"> + <DetectChar attribute="Normal Text" context="add_executable_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="add_executable_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx"> + <DetectChar attribute="Normal Text" context="add_library_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="add_library_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_link_options_ctx"> + <DetectChar attribute="Normal Text" context="add_link_options_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_link_options_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_subdirectory_ctx"> + <DetectChar attribute="Normal Text" context="add_subdirectory_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_subdirectory_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="add_subdirectory_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx"> + <DetectChar attribute="Normal Text" context="add_test_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="add_test_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="aux_source_directory_ctx"> + <DetectChar attribute="Normal Text" context="aux_source_directory_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="aux_source_directory_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="build_command_ctx"> + <DetectChar attribute="Normal Text" context="build_command_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="build_command_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="build_command_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="create_test_sourcelist_ctx"> + <DetectChar attribute="Normal Text" context="create_test_sourcelist_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="create_test_sourcelist_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="create_test_sourcelist_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="define_property_ctx"> + <DetectChar attribute="Normal Text" context="define_property_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="define_property_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="define_property_nargs" /> + <keyword attribute="Property" context="#stay" String="cache-properties" /> + <keyword attribute="Property" context="#stay" String="directory-properties" /> + <IncludeRules context="Detect More directory-properties" /> + <keyword attribute="Property" context="#stay" String="global-properties" /> + <IncludeRules context="Detect More global-properties" /> + <keyword attribute="Property" context="#stay" String="install-properties" /> + <keyword attribute="Property" context="#stay" String="source-properties" /> + <IncludeRules context="Detect More source-properties" /> + <keyword attribute="Property" context="#stay" String="target-properties" /> + <IncludeRules context="Detect More target-properties" /> + <keyword attribute="Property" context="#stay" String="test-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="enable_language_ctx"> + <DetectChar attribute="Normal Text" context="enable_language_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="enable_language_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="enable_language_nargs" /> + <keyword attribute="Special Args" context="#stay" String="enable_language_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="enable_testing_ctx"> + <DetectChar attribute="Normal Text" context="enable_testing_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="enable_testing_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="export_ctx"> + <DetectChar attribute="Normal Text" context="export_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="export_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="export_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="fltk_wrap_ui_ctx"> + <DetectChar attribute="Normal Text" context="fltk_wrap_ui_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="fltk_wrap_ui_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_source_file_property_ctx"> + <DetectChar attribute="Normal Text" context="get_source_file_property_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_source_file_property_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Property" context="#stay" String="source-properties" /> + <IncludeRules context="Detect More source-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_target_property_ctx"> + <DetectChar attribute="Normal Text" context="get_target_property_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_target_property_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Property" context="#stay" String="target-properties" /> + <IncludeRules context="Detect More target-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_test_property_ctx"> + <DetectChar attribute="Normal Text" context="get_test_property_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="get_test_property_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Property" context="#stay" String="test-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_directories_ctx"> + <DetectChar attribute="Normal Text" context="include_directories_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_directories_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="include_directories_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_external_msproject_ctx"> + <DetectChar attribute="Normal Text" context="include_external_msproject_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_external_msproject_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="include_external_msproject_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_regular_expression_ctx"> + <DetectChar attribute="Normal Text" context="include_regular_expression_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="include_regular_expression_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="install_ctx"> + <DetectChar attribute="Normal Text" context="install_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="install_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="install_nargs" /> + <keyword attribute="Special Args" context="#stay" String="install_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="link_directories_ctx"> + <DetectChar attribute="Normal Text" context="link_directories_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="link_directories_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="link_directories_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="link_libraries_ctx"> + <DetectChar attribute="Normal Text" context="link_libraries_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="link_libraries_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="link_libraries_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="load_cache_ctx"> + <DetectChar attribute="Normal Text" context="load_cache_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="load_cache_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="load_cache_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="project_ctx"> + <DetectChar attribute="Normal Text" context="project_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="project_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="project_nargs" /> + <keyword attribute="Special Args" context="#stay" String="project_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="qt_wrap_cpp_ctx"> + <DetectChar attribute="Normal Text" context="qt_wrap_cpp_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="qt_wrap_cpp_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="qt_wrap_ui_ctx"> + <DetectChar attribute="Normal Text" context="qt_wrap_ui_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="qt_wrap_ui_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="remove_definitions_ctx"> + <DetectChar attribute="Normal Text" context="remove_definitions_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="remove_definitions_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_source_files_properties_ctx"> + <DetectChar attribute="Normal Text" context="set_source_files_properties_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_source_files_properties_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="set_source_files_properties_nargs" /> + <keyword attribute="Property" context="#stay" String="source-properties" /> + <IncludeRules context="Detect More source-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_target_properties_ctx"> + <DetectChar attribute="Normal Text" context="set_target_properties_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_target_properties_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="set_target_properties_nargs" /> + <keyword attribute="Property" context="#stay" String="target-properties" /> + <IncludeRules context="Detect More target-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_tests_properties_ctx"> + <DetectChar attribute="Normal Text" context="set_tests_properties_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="set_tests_properties_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="set_tests_properties_nargs" /> + <keyword attribute="Property" context="#stay" String="test-properties" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="source_group_ctx"> + <DetectChar attribute="Normal Text" context="source_group_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="source_group_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="source_group_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx"> + <DetectChar attribute="Normal Text" context="target_compile_definitions_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="target_compile_definitions_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx"> + <DetectChar attribute="Normal Text" context="target_compile_features_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="target_compile_features_nargs" /> + <keyword attribute="Special Args" context="#stay" String="target_compile_features_sargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx"> + <DetectChar attribute="Normal Text" context="target_compile_options_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="target_compile_options_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx"> + <DetectChar attribute="Normal Text" context="target_include_directories_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="target_include_directories_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_link_directories_ctx"> + <DetectChar attribute="Normal Text" context="target_link_directories_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_link_directories_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="target_link_directories_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx"> + <DetectChar attribute="Normal Text" context="target_link_libraries_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="target_link_libraries_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_link_options_ctx"> + <DetectChar attribute="Normal Text" context="target_link_options_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_link_options_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="target_link_options_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx"> + <DetectChar attribute="Normal Text" context="target_sources_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="target_sources_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="try_compile_ctx"> + <DetectChar attribute="Normal Text" context="try_compile_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="try_compile_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="try_compile_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="try_run_ctx"> + <DetectChar attribute="Normal Text" context="try_run_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="try_run_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="try_run_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_build_ctx"> + <DetectChar attribute="Normal Text" context="ctest_build_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_build_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_build_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_configure_ctx"> + <DetectChar attribute="Normal Text" context="ctest_configure_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_configure_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_configure_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_ctx"> + <DetectChar attribute="Normal Text" context="ctest_coverage_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_coverage_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_empty_binary_directory_ctx"> + <DetectChar attribute="Normal Text" context="ctest_empty_binary_directory_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_empty_binary_directory_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_memcheck_ctx"> + <DetectChar attribute="Normal Text" context="ctest_memcheck_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_memcheck_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_memcheck_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_read_custom_files_ctx"> + <DetectChar attribute="Normal Text" context="ctest_read_custom_files_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_read_custom_files_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_run_script_ctx"> + <DetectChar attribute="Normal Text" context="ctest_run_script_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_run_script_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_run_script_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_sleep_ctx"> + <DetectChar attribute="Normal Text" context="ctest_sleep_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_sleep_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_start_ctx"> + <DetectChar attribute="Normal Text" context="ctest_start_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_start_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_start_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_submit_ctx"> + <DetectChar attribute="Normal Text" context="ctest_submit_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_submit_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_submit_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_test_ctx"> + <DetectChar attribute="Normal Text" context="ctest_test_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_test_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_test_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_update_ctx"> + <DetectChar attribute="Normal Text" context="ctest_update_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_update_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_update_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_upload_ctx"> + <DetectChar attribute="Normal Text" context="ctest_upload_ctx_op" char="(" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="ctest_upload_ctx_op"> + <IncludeRules context="EndCmdPop2" /> + <keyword attribute="Named Args" context="#stay" String="ctest_upload_nargs" /> + <IncludeRules context="User Function Args" /> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="Detect More global-properties"> + <RegExpr attribute="Property" context="#stay" String="\bFeatureSummary_&id_re;_DESCRIPTION\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect More directory-properties"> + <RegExpr attribute="Property" context="#stay" String="\bINTERPROCEDURAL_OPTIMIZATION_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bVS_GLOBAL_SECTION_POST_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bVS_GLOBAL_SECTION_PRE_&id_re;\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect More target-properties"> + <RegExpr attribute="Property" context="#stay" String="\bARCHIVE_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bARCHIVE_OUTPUT_NAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bCOMPILE_PDB_NAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bCOMPILE_PDB_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\b&id_re;_OUTPUT_NAME\b" /> + <RegExpr attribute="Property" context="#stay" String="\b&id_re;_POSTFIX\b" /> + <RegExpr attribute="Property" context="#stay" String="\bEXCLUDE_FROM_DEFAULT_BUILD_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_IMPLIB_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LIBNAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_DEPENDENT_LIBRARIES_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_INTERFACE_LANGUAGES_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_INTERFACE_LIBRARIES_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_INTERFACE_MULTIPLICITY_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LOCATION_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_NO_SONAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_OBJECTS_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_SONAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bINTERPROCEDURAL_OPTIMIZATION_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\b&id_re;_CLANG_TIDY\b" /> + <RegExpr attribute="Property" context="#stay" String="\b&id_re;_COMPILER_LAUNCHER\b" /> + <RegExpr attribute="Property" context="#stay" String="\b&id_re;_CPPCHECK\b" /> + <RegExpr attribute="Property" context="#stay" String="\b&id_re;_CPPLINT\b" /> + <RegExpr attribute="Property" context="#stay" String="\b&id_re;_INCLUDE_WHAT_YOU_USE\b" /> + <RegExpr attribute="Property" context="#stay" String="\b&id_re;_VISIBILITY_PRESET\b" /> + <RegExpr attribute="Property" context="#stay" String="\bLIBRARY_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bLIBRARY_OUTPUT_NAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bLINK_FLAGS_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bLINK_INTERFACE_LIBRARIES_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bLINK_INTERFACE_MULTIPLICITY_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bLOCATION_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bMAP_IMPORTED_CONFIG_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bOSX_ARCHITECTURES_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bOUTPUT_NAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bPDB_NAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bPDB_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bRUNTIME_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bRUNTIME_OUTPUT_NAME_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bSTATIC_LIBRARY_FLAGS_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bVS_DOTNET_REFERENCE_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bVS_DOTNET_REFERENCEPROP_&id_re;_TAG_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bVS_GLOBAL_&id_re;\b" /> + <RegExpr attribute="Property" context="#stay" String="\bXCODE_ATTRIBUTE_&id_re;\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect More source-properties"> + <RegExpr attribute="Property" context="#stay" String="\bVS_CSHARP_&id_re;\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="EndCmdPop"> + <DetectChar attribute="Normal Text" context="#pop" char=")" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="EndCmdPop2"> + <DetectChar attribute="Normal Text" context="#pop#pop" char=")" /> + </context> + + <context attribute="User Function/Macro" lineEndContext="#stay" name="User Function"> + <DetectChar attribute="Normal Text" context="User Function Opened" char="(" /> + <IncludeRules context="EndCmdPop2" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="User Function Opened"> + <IncludeRules context="EndCmdPop2" /> + <IncludeRules context="User Function Args" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Builtin Variables"> + <keyword attribute="Builtin Variable" context="#stay" String="variables" insensitive="false" /> + <IncludeRules context="Detect More Builtin Variables" /> + <RegExpr attribute="Internal Name" context="#stay" String="\b_&id_re;\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables"> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_BINARY_DIR\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_SOURCE_DIR\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_MAJOR\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_MINOR\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_PATCH\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_TWEAK\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_ROOT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;__TRYRUN_OUTPUT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_CONSIDERED_CONFIGS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_CONSIDERED_VERSIONS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_COMPONENTS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_QUIETLY\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_REQUIRED\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_REQUIRED_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_COUNT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_EXACT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_MAJOR\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_MINOR\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_PATCH\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_TWEAK\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FOUND\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_INCLUDE_DIRS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_LIBRARIES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_LIBRARY_DIRS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_COUNT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_STRING\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_POSTFIX\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_SUFFIX\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ARCHIVE_APPEND\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ARCHIVE_CREATE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ARCHIVE_FINISH\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CLANG_TIDY\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ABI\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_AR\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_EXTERNAL_TOOLCHAIN\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ID\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_LAUNCHER\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_LOADED\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_RANLIB\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_TARGET\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_VERSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILE_OBJECT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CPPCHECK\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CPPLINT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CREATE_SHARED_LIBRARY\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CREATE_SHARED_MODULE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CREATE_STATIC_LIBRARY\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_DEBUG\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_DEBUG_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_MINSIZEREL\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_MINSIZEREL_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_RELEASE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_RELEASE_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_RELWITHDEBINFO\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_RELWITHDEBINFO_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_GHS_KERNEL_FLAGS_DEBUG\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_GHS_KERNEL_FLAGS_MINSIZEREL\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_GHS_KERNEL_FLAGS_RELEASE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_GHS_KERNEL_FLAGS_RELWITHDEBINFO\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IGNORE_EXTENSIONS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IMPLICIT_INCLUDE_DIRECTORIES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IMPLICIT_LINK_DIRECTORIES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IMPLICIT_LINK_LIBRARIES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_INCLUDE_WHAT_YOU_USE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LIBRARY_ARCHITECTURE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_PREFERENCE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_PREFERENCE_PROPAGATES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_WRAPPER_FLAG\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_WRAPPER_FLAG_SEP\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINK_EXECUTABLE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_OUTPUT_EXTENSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_PLATFORM_ID\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIMULATE_ID\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIMULATE_VERSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIZEOF_DATA_PTR\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SOURCE_FILE_EXTENSIONS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_STANDARD_INCLUDE_DIRECTORIES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_STANDARD_LIBRARIES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_VISIBILITY_PRESET\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_DISABLE_FIND_PACKAGE_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_EXE_LINKER_FLAGS_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_EXE_LINKER_FLAGS_&id_re;_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_INTERPROCEDURAL_OPTIMIZATION_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_LIBRARY_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MAP_IMPORTED_CONFIG_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MATCH_[0-9]+\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MODULE_LINKER_FLAGS_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_PDB_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_DEFAULT_CMP&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_WARNING_CMP&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_PROJECT_&id_re;_INCLUDE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_SHARED_LINKER_FLAGS_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_SHARED_LINKER_FLAGS_&id_re;_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_STATIC_LINKER_FLAGS_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_STATIC_LINKER_FLAGS_&id_re;_INIT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_USER_MAKE_RULES_OVERRIDE_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_XCODE_ATTRIBUTE_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_&id_re;_COMPONENT_INSTALL\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_ARCHIVE_&id_re;_FILE_NAME\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_BINARY_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DEPENDS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DESCRIPTION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DISABLED\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DISPLAY_NAME\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_GROUP\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_HIDDEN\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_REQUIRED\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DESCRIPTION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_FILE_NAME\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_BREAKS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_CONFLICTS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_EXTRA\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_STRICT_PERMISSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_DEPENDS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_ENHANCES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_NAME\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_PREDEPENDS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_PRIORITY\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_PROVIDES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_RECOMMENDS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_REPLACES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SECTION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SHLIBDEPS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SOURCE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SUGGESTS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_DEBUGINFO_PACKAGE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NSIS_&id_re;_INSTALL_DIRECTORY\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_AUTHORS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_COPYRIGHT\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES_&id_re;_VERSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION_SUMMARY\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_HOMEPAGE_URL\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_ICONURL\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_LICENSEURL\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_NAME\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_OWNERS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_RELEASE_NOTES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_TAGS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_TITLE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_VERSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_PACKAGE_DEPENDENCIES_&id_re;_VERSION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_DIR_PERMISSIONS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_FILE_PERMISSIONS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_GROUP\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_USER\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_BUILD_SOURCE_DIRS_PREFIX\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEBUGINFO_FILE_NAME\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEBUGINFO_PACKAGE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_FILE_NAME\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_ARCHITECTURE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_AUTOPROV\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_AUTOREQ\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_AUTOREQPROV\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_CONFLICTS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_DESCRIPTION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_GROUP\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_NAME\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_OBSOLETES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_PREFIX\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_PROVIDES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES_POST\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES_POSTUN\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES_PRE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES_PREUN\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_SUGGESTS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_SUMMARY\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_URL\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_USER_FILELIST\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_USER_BINARY_SPECFILE\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_NO_&id_re;_INSTALL_PREFIX_RELOCATION\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_WIX_&id_re;_EXTENSIONS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_WIX_&id_re;_EXTRA_FLAGS\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_WIX_PROPERTY_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bDOXYGEN_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bExternalData_CUSTOM_SCRIPT_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bExternalData_URL_ALGO_&id_re;_&id_re;\b" /> + <RegExpr attribute="Builtin Variable" context="#stay" String="\bSWIG_MODULE_&id_re;_EXTRA_DEPS\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions"> + <RegExpr attribute="Environment Variable Substitution" context="#stay" String="\$ENV\{\s*[\w-]+\s*\}" /> + <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{" /> + <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" /> + </context> + + <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst"> + <IncludeRules context="Detect Builtin Variables" /> + <DetectIdentifier /> + <DetectChar attribute="Variable Substitution" context="#pop" char="}" /> + <IncludeRules context="Detect Variable Substitutions" /> + </context> + + <context attribute="@Variable Substitution" lineEndContext="#pop" name="@VarSubst"> + <DetectChar attribute="@Variable Substitution" context="VarSubst@" char="@" /> + </context> + + <context attribute="@Variable Substitution" lineEndContext="#pop#pop" name="VarSubst@"> + <IncludeRules context="Detect Builtin Variables" /> + <DetectIdentifier /> + <DetectChar attribute="@Variable Substitution" context="#pop#pop" char="@" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="User Function Args"> + <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="(" /> + <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" /> + <RegExpr attribute="Escapes" context="#stay" String="\\["$n\\]" /> + <DetectChar attribute="Strings" context="String" char=""" /> + <RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" /> + <RegExpr attribute="Comment" context="Bracketed Comment" String="#\[(=*)\[" /> + <DetectChar attribute="Comment" context="Comment" char="#" /> + <IncludeRules context="Detect Builtin Variables" /> + <IncludeRules context="Detect Variable Substitutions" /> + <IncludeRules context="Detect Special Values" /> + <IncludeRules context="Detect Aliased Targets" /> + <IncludeRules context="Detect Generator Expressions" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Special Values"> + <RegExpr attribute="True Special Arg" context="#stay" String="\b(TRUE|ON)\b" /> + <RegExpr attribute="False Special Arg" context="#stay" String="\b(FALSE|OFF|(&id_re;-)?NOTFOUND)\b" /> + <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9][0-9][0-9]\b" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Aliased Targets"> + <RegExpr attribute="Aliased Targets" context="#stay" String="\b&id_re;::&id_re;(::&id_re;)*\b" /> + </context> + + <context attribute="Comment" lineEndContext="#pop" name="Comment"> + <LineContinue attribute="Comment" context="#pop" /> + <IncludeRules context="##Alerts" /> + <IncludeRules context="##Modelines" /> + </context> + + <context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true"> + <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" /> + <IncludeRules context="##reStructuredText" /> + </context> + + <context attribute="Comment" lineEndContext="#stay" name="Bracketed Comment" dynamic="true"> + <RegExpr attribute="Comment" context="#pop" String=".*\]%1\]" dynamic="true" /> + <IncludeRules context="##Alerts" /> + <IncludeRules context="##Modelines" /> + </context> + + <context attribute="Strings" lineEndContext="#stay" name="String"> + <RegExpr attribute="Strings" context="#pop" String=""(?=[ );]|$)" /> + <RegExpr attribute="Escapes" context="#stay" String="\\["$nrt\\]" /> + <IncludeRules context="Detect Variable Substitutions" /> + <IncludeRules context="Detect Generator Expressions" /> + </context> + + <context attribute="Strings" lineEndContext="#stay" name="Bracketed String" dynamic="true"> + <RegExpr attribute="Strings" context="#pop" String="\]%1\]" dynamic="true" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="Detect Generator Expressions"> + <Detect2Chars attribute="Generator Expression" context="Generator Expression" char="$" char1="<" /> + </context> + + <context attribute="Generator Expression" lineEndContext="#stay" name="Generator Expression"> + <IncludeRules context="Detect Generator Expressions" /> + <DetectChar attribute="Comment" context="Comment" char="#" /> + <DetectChar attribute="Generator Expression" context="#pop" char=">" /> + <keyword attribute="Generator Expression Keyword" context="#stay" String="generator-expressions" insensitive="false" /> + <IncludeRules context="Detect Aliased Targets" /> + <IncludeRules context="Detect Variable Substitutions" /> + </context> + + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" /> + <itemData name="Command" defStyleNum="dsKeyword" spellChecking="false" /> + <itemData name="User Function/Macro" defStyleNum="dsFunction" spellChecking="false" /> + <itemData name="Property" defStyleNum="dsOthers" spellChecking="false" /> + <itemData name="Aliased Targets" defStyleNum="dsBaseN" spellChecking="false" /> + <itemData name="Named Args" defStyleNum="dsOthers" spellChecking="false" /> + <itemData name="Special Args" defStyleNum="dsOthers" spellChecking="false" /> + <itemData name="True Special Arg" defStyleNum="dsOthers" color="#30a030" selColor="#30a030" spellChecking="false" /> + <itemData name="False Special Arg" defStyleNum="dsOthers" color="#e05050" selColor="#e05050" spellChecking="false" /> + <itemData name="Strings" defStyleNum="dsString" spellChecking="true" /> + <itemData name="Escapes" defStyleNum="dsChar" spellChecking="false" /> + <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" /> + <itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false" /> + <itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false" /> + <itemData name="Internal Name" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" /> + <itemData name="Environment Variable Substitution" defStyleNum="dsFloat" spellChecking="false" /> + <itemData name="Generator Expression Keyword" defStyleNum="dsKeyword" color="#b84040" selColor="#b84040" spellChecking="false" /> + <itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false" /> + <itemData name="Comment" defStyleNum="dsComment" spellChecking="true" /> + <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" /> + </itemDatas> + + </highlighting> + + <general> + <comments> + <comment name="singleLine" start="#" /> + </comments> + <keywords casesensitive="1" /> + </general> +</language> + +<!-- kate: indent-width 2; tab-width 2; --> + diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/css.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/css.xml new file mode 100644 index 0000000000..25a614e826 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/css.xml @@ -0,0 +1,1735 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization --> + <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])"> + <!ENTITY nmchar "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])"> +]> + +<!-- + +Kate CSS syntax highlighting definition + +Changelog: + +- Version 8, by Jonathan Poelen +- fix some Operator and Selector Tag highlighting + +- Version 7, by Jonathan Poelen +- fix tag followed by a pseudo-class in a nested rule (@media, ...) +- fix constraint in a rule +- fix Kate auto-completion for properties and rules +- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Variable, Value Keyword, Color, Number, Unit, Selector Tag + +- Version 4, by Guo Yunhe guoyunhebrave@gmail.com +- Remake for complex CSS syntax, avoid errors + +- Version 2.13, by Guo Yunhe +- Add all W3C Work Draft properties + +- Version 2.06, by Mte90: +- CSS3 tag + +- Version 2.03, by Milian Wolff: +- Make it spelling aware + +- Version 2.08, Joseph Wenninger: +- CSS3 media queries + +--> + +<language name="CSS" version="8" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10"> + + <highlighting> + <list name="properties"> + <!-- W3C > Work Draft, from https://www.w3.org/Style/CSS/all-properties --> + <item>align-content</item> + <item>align-items</item> + <item>alignment-baseline</item> + <item>align-self</item> + <item>all</item> + <item>animation</item> + <item>animation-delay</item> + <item>animation-direction</item> + <item>animation-duration</item> + <item>animation-fill-mode</item> + <item>animation-iteration-count</item> + <item>animation-name</item> + <item>animation-play-state</item> + <item>animation-timing-function</item> + <item>appearance</item> + <item>azimuth</item> + <item>backface-visibility</item> + <item>background</item> + <item>background-attachment</item> + <item>background-blend-mode</item> + <item>background-clip</item> + <item>background-color</item> + <item>background-image</item> + <item>background-image-transform</item> + <item>background-origin</item> + <item>background-position</item> + <item>background-repeat</item> + <item>background-size</item> + <item>baseline-shift</item> + <item>block-size</item> + <item>block-step</item> + <item>block-step-align</item> + <item>block-step-insert</item> + <item>block-step-round</item> + <item>block-step-size</item> + <item>bookmark-label</item> + <item>bookmark-level</item> + <item>bookmark-state</item> + <item>border</item> + <item>border-block</item> + <item>border-block-color</item> + <item>border-block-end</item> + <item>border-block-end-color</item> + <item>border-block-end-style</item> + <item>border-block-end-width</item> + <item>border-block-start</item> + <item>border-block-start-color</item> + <item>border-block-start-style</item> + <item>border-block-start-width</item> + <item>border-block-style</item> + <item>border-block-width</item> + <item>border-bottom</item> + <item>border-bottom-color</item> + <item>border-bottom-left-radius</item> + <item>border-bottom-right-radius</item> + <item>border-bottom-style</item> + <item>border-bottom-width</item> + <item>border-boundary</item> + <item>border-collapse</item> + <item>border-color</item> + <item>border-image</item> + <item>border-image-outset</item> + <item>border-image-repeat</item> + <item>border-image-slice</item> + <item>border-image-source</item> + <item>border-image-transform</item> + <item>border-image-width</item> + <item>border-inline</item> + <item>border-inline-color</item> + <item>border-inline-end</item> + <item>border-inline-end-color</item> + <item>border-inline-end-style</item> + <item>border-inline-end-width</item> + <item>border-inline-start</item> + <item>border-inline-start-color</item> + <item>border-inline-start-style</item> + <item>border-inline-start-width</item> + <item>border-inline-style</item> + <item>border-inline-width</item> + <item>border-left</item> + <item>border-left-color</item> + <item>border-left-style</item> + <item>border-left-width</item> + <item>border-radius</item> + <item>border-right</item> + <item>border-right-color</item> + <item>border-right-style</item> + <item>border-right-width</item> + <item>border-spacing</item> + <item>border-style</item> + <item>border-top</item> + <item>border-top-color</item> + <item>border-top-left-radius</item> + <item>border-top-right-radius</item> + <item>border-top-style</item> + <item>border-top-width</item> + <item>border-width</item> + <item>bottom</item> + <item>box-decoration-break</item> + <item>box-shadow</item> + <item>box-sizing</item> + <item>box-snap</item> + <item>break-after</item> + <item>break-before</item> + <item>break-inside</item> + <item>caption-side</item> + <item>caret</item> + <item>caret-color</item> + <item>caret-shape</item> + <item>clear</item> + <item>clip</item> + <item>clip-path</item> + <item>clip-rule</item> + <item>color</item> + <item>color-adjust</item> + <item>color-interpolation-filters</item> + <item>columns</item> + <item>column-count</item> + <item>column-fill</item> + <item>column-gap</item> + <item>column-rule</item> + <item>column-rule-color</item> + <item>column-rule-style</item> + <item>column-rule-width</item> + <item>column-span</item> + <item>column-width</item> + <item>contain</item> + <item>content</item> + <item>continue</item> + <item>counter-increment</item> + <item>counter-reset</item> + <item>counter-set</item> + <item>cue</item> + <item>cue-after</item> + <item>cue-before</item> + <item>cursor</item> + <item>direction</item> + <item>display</item> + <item>dominant-baseline</item> + <item>elevation</item> + <item>empty-cells</item> + <item>fill</item> + <item>fill-break</item> + <item>fill-color</item> + <item>fill-image</item> + <item>fill-opacity</item> + <item>fill-origin</item> + <item>fill-position</item> + <item>fill-repeat</item> + <item>fill-rule</item> + <item>fill-size</item> + <item>filter</item> + <item>flex</item> + <item>flex-basis</item> + <item>flex-direction</item> + <item>flex-flow</item> + <item>flex-grow</item> + <item>flex-shrink</item> + <item>flex-wrap</item> + <item>float</item> + <item>float-defer</item> + <item>float-offset</item> + <item>float-reference</item> + <item>flood-color</item> + <item>flood-opacity</item> + <item>flow-from</item> + <item>flow-into</item> + <item>font</item> + <item>font-family</item> + <item>font-feature-settings</item> + <item>font-kerning</item> + <item>font-language-override</item> + <item>font-max-size</item> + <item>font-min-size</item> + <item>font-optical-sizing</item> + <item>font-palette</item> + <item>font-size</item> + <item>font-size-adjust</item> + <item>font-stretch</item> + <item>font-style</item> + <item>font-synthesis</item> + <item>font-variant</item> + <item>font-variant-alternates</item> + <item>font-variant-caps</item> + <item>font-variant-east-asian</item> + <item>font-variant-emoji</item> + <item>font-variant-ligatures</item> + <item>font-variant-numeric</item> + <item>font-variant-position</item> + <item>font-variation-settings</item> + <item>font-weight</item> + <item>footnote-display</item> + <item>footnote-policy</item> + <item>gap</item> + <item>glyph-orientation-vertical</item> + <item>grid</item> + <item>grid-area</item> + <item>grid-auto-columns</item> + <item>grid-auto-flow</item> + <item>grid-auto-rows</item> + <item>grid-column</item> + <item>grid-column-end</item> + <item>grid-column-gap</item> + <item>grid-column-start</item> + <item>grid-gap</item> + <item>grid-row</item> + <item>grid-row-end</item> + <item>grid-row-gap</item> + <item>grid-row-start</item> + <item>grid-template</item> + <item>grid-template-areas</item> + <item>grid-template-columns</item> + <item>grid-template-rows</item> + <item>hanging-punctuation</item> + <item>height</item> + <item>hyphenate-character</item> + <item>hyphenate-limit-chars</item> + <item>hyphenate-limit-last</item> + <item>hyphenate-limit-lines</item> + <item>hyphenate-limit-zone</item> + <item>hyphens</item> + <item>image-orientation</item> + <item>image-rendering</item> + <item>image-resolution</item> + <item>initial-letter</item> + <item>initial-letter-align</item> + <item>initial-letter-wrap</item> + <item>inline-size</item> + <item>inset</item> + <item>inset-block</item> + <item>inset-block-end</item> + <item>inset-block-start</item> + <item>inset-inline</item> + <item>inset-inline-end</item> + <item>inset-inline-start</item> + <item>isolation</item> + <item>justify-content</item> + <item>justify-items</item> + <item>justify-self</item> + <item>left</item> + <item>letter-spacing</item> + <item>lighting-color</item> + <item>line-break</item> + <item>line-grid</item> + <item>line-height</item> + <item>line-height-step</item> + <item>line-snap</item> + <item>list-style</item> + <item>list-style-image</item> + <item>list-style-position</item> + <item>list-style-type</item> + <item>margin</item> + <item>margin-block</item> + <item>margin-block-end</item> + <item>margin-block-start</item> + <item>margin-bottom</item> + <item>margin-inline</item> + <item>margin-inline-end</item> + <item>margin-inline-start</item> + <item>margin-left</item> + <item>margin-right</item> + <item>margin-top</item> + <item>marker</item> + <item>marker-end</item> + <item>marker-knockout-left</item> + <item>marker-knockout-right</item> + <item>marker-mid</item> + <item>marker-pattern</item> + <item>marker-segment</item> + <item>marker-side</item> + <item>marker-start</item> + <item>marquee-direction</item> + <item>marquee-loop</item> + <item>marquee-speed</item> + <item>marquee-style</item> + <item>mask</item> + <item>mask-border</item> + <item>mask-border-mode</item> + <item>mask-border-outset</item> + <item>mask-border-repeat</item> + <item>mask-border-slice</item> + <item>mask-border-source</item> + <item>mask-border-width</item> + <item>mask-clip</item> + <item>mask-composite</item> + <item>mask-image</item> + <item>mask-mode</item> + <item>mask-origin</item> + <item>mask-position</item> + <item>mask-repeat</item> + <item>mask-size</item> + <item>mask-type</item> + <item>max-block-size</item> + <item>max-height</item> + <item>max-inline-size</item> + <item>max-lines</item> + <item>max-width</item> + <item>min-block-size</item> + <item>min-height</item> + <item>min-inline-size</item> + <item>min-width</item> + <item>mix-blend-mode</item> + <item>nav-up</item> + <item>nav-down</item> + <item>nav-left</item> + <item>nav-right</item> + <item>object-fit</item> + <item>object-position</item> + <item>offset</item> + <item>offset-after</item> + <item>offset-anchor</item> + <item>offset-before</item> + <item>offset-distance</item> + <item>offset-end</item> + <item>offset-path</item> + <item>offset-position</item> + <item>offset-rotate</item> + <item>offset-start</item> + <item>opacity</item> + <item>order</item> + <item>orphans</item> + <item>outline</item> + <item>outline-color</item> + <item>outline-offset</item> + <item>outline-style</item> + <item>outline-width</item> + <item>overflow</item> + <item>overflow-style</item> + <item>overflow-wrap</item> + <item>overflow-x</item> + <item>overflow-y</item> + <item>padding</item> + <item>padding-block</item> + <item>padding-block-end</item> + <item>padding-block-start</item> + <item>padding-bottom</item> + <item>padding-inline</item> + <item>padding-inline-end</item> + <item>padding-inline-start</item> + <item>padding-left</item> + <item>padding-right</item> + <item>padding-top</item> + <item>page</item> + <item>page-break-after</item> + <item>page-break-before</item> + <item>page-break-inside</item> + <item>pause</item> + <item>pause-after</item> + <item>pause-before</item> + <item>perspective</item> + <item>perspective-origin</item> + <item>pitch</item> + <item>pitch-range</item> + <item>place-content</item> + <item>place-items</item> + <item>place-self</item> + <item>play-during</item> + <item>pointer-events</item> + <item>position</item> + <item>quotes</item> + <item>region-fragment</item> + <item>resize</item> + <item>richness</item> + <item>right</item> + <item>rotation</item> + <item>rotation-point</item> + <item>row-gap</item> + <item>ruby-align</item> + <item>ruby-merge</item> + <item>ruby-position</item> + <item>running</item> + <item>scrollbar-gutter</item> + <item>shape-image-threshold</item> + <item>shape-inside</item> + <item>shape-margin</item> + <item>shape-outside</item> + <item>size</item> + <item>speak</item> + <item>speak-header</item> + <item>speak-numeral</item> + <item>speak-punctuation</item> + <item>speech-rate</item> + <item>stress</item> + <item>string-set</item> + <item>table-layout</item> + <item>tab-size</item> + <item>text-align-all</item> + <item>text-align</item> + <item>text-align-last</item> + <item>text-combine-upright</item> + <item>text-decoration-color</item> + <item>text-decoration</item> + <item>text-decoration-line</item> + <item>text-decoration-skip</item> + <item>text-decoration-skip-ink</item> + <item>text-decoration-style</item> + <item>text-decoration-width</item> + <item>text-emphasis</item> + <item>text-emphasis-color</item> + <item>text-emphasis-position</item> + <item>text-emphasis-skip</item> + <item>text-emphasis-style</item> + <item>text-indent</item> + <item>text-justify</item> + <item>text-orientation</item> + <item>text-overflow</item> + <item>text-shadow</item> + <item>text-space-collapse</item> + <item>text-space-trim</item> + <item>text-spacing</item> + <item>text-transform</item> + <item>text-underline-offset</item> + <item>text-underline-position</item> + <item>text-wrap</item> + <item>top</item> + <item>transform</item> + <item>transform-box</item> + <item>transform-origin</item> + <item>transform-style</item> + <item>transition</item> + <item>transition-delay</item> + <item>transition-duration</item> + <item>transition-property</item> + <item>transition-timing-function</item> + <item>unicode-bidi</item> + <item>user-select</item> + <item>vertical-align</item> + <item>visibility</item> + <item>voice-family</item> + <item>volume</item> + <item>white-space</item> + <item>widows</item> + <item>width</item> + <item>will-change</item> + <item>word-break</item> + <item>word-spacing</item> + <item>word-wrap</item> + <item>wrap-after</item> + <item>wrap-before</item> + <item>wrap-flow</item> + <item>wrap-inside</item> + <item>wrap-through</item> + <item>writing-mode</item> + <item>z-index</item> + + <!-- Gecko rendering engine CSS property extensions --> + <item>-moz-animation</item> + <item>-moz-animation-delay</item> + <item>-moz-animation-direction</item> + <item>-moz-animation-duration</item> + <item>-moz-animation-fill-mode</item> + <item>-moz-animation-iteration-count</item> + <item>-moz-animation-name</item> + <item>-moz-animation-play-state</item> + <item>-moz-animation-timing-function</item> + <item>-moz-appearance</item> + <item>-moz-background-clip</item> + <item>-moz-background-origin</item> + <item>-moz-background-size</item> + <item>-moz-border-image</item> + <item>-moz-border-radius</item> + <item>-moz-border-radius-bottomleft</item> + <item>-moz-border-radius-bottomright</item> + <item>-moz-border-radius-topleft</item> + <item>-moz-border-radius-topright</item> + <item>-moz-box-align</item> + <item>-moz-box-direction</item> + <item>-moz-box-flex</item> + <item>-moz-box-flex-group</item> + <item>-moz-box-ordinal-group</item> + <item>-moz-box-orient</item> + <item>-moz-box-pack</item> + <item>-moz-box-shadow</item> + <item>-moz-box-sizing</item> + <item>-moz-box</item> + <item>-moz-column-count</item> + <item>-moz-column-fill</item> + <item>-moz-column-gap</item> + <item>-moz-column-rule</item> + <item>-moz-column-rule-color</item> + <item>-moz-column-rule-style</item> + <item>-moz-column-rule-width</item> + <item>-moz-columns</item> + <item>-moz-column-width</item> + <item>-moz-hyphens</item> + <item>-moz-opacity</item> + <item>-moz-outline-style</item> + <item>-moz-perspective</item> + <item>-moz-resize</item> + <item>-moz-text-align-last</item> + <item>-moz-text-decoration-color</item> + <item>-moz-text-decoration-line</item> + <item>-moz-text-decoration-style</item> + <item>-moz-transform</item> + <item>-moz-transform-origin</item> + <item>-moz-transform-style</item> + <item>-moz-transition</item> + <item>-moz-transition-delay</item> + <item>-moz-transition-duration</item> + <item>-moz-transition-property</item> + <item>-moz-transition-timing-function</item> + <item>-moz-user-select</item> + + <!-- Opera rendering engine CSS property extensions --> + <item>-o-background-size</item> + <item>-o-linear-gradient</item> + <item>-o-text-overflow</item> + <item>-o-transition</item> + <item>-o-transform-origin</item> + + <!-- konq specific --> + <item>konq_bgpos_x</item> + <item>konq_bgpos_y</item> + <item>-khtml-background-size</item> + <item>-khtml-border-top-left-radius</item> + <item>-khtml-border-top-right-radius</item> + <item>-khtml-border-bottom-left-radius</item> + <item>-khtml-border-bottom-right-radius</item> + <item>-khtml-border-radius</item> + <item>-khtml-box-shadow</item> + <item>-khtml-opacity</item> + + <!-- Webkit rendering engine CSS property extensions --> + <item>-webkit-appearance</item> + <item>-webkit-animation</item> + <item>-webkit-animation-name</item> + <item>-webkit-animation-duration</item> + <item>-webkit-animation-iteration</item> + <item>-webkit-animation-direction</item> + <item>-webkit-animation-delay</item> + <item>-webkit-animation-play-state</item> + <item>-webkit-animation-fill-mode</item> + <item>-webkit-background-size</item> + <item>-webkit-backface-visibility</item> + <item>-webkit-border-image</item> + <item>-webkit-border-bottom-colors</item> + <item>-webkit-border-left-colors</item> + <item>-webkit-border-radius</item> + <item>-webkit-border-right-colors</item> + <item>-webkit-border-top-colors</item> + <item>-webkit-border-top-left-radius</item> + <item>-webkit-border-top-right-radius</item> + <item>-webkit-border-bottom-left-radius</item> + <item>-webkit-border-bottom-right-radius</item> + <item>-webkit-border-radius-bottomleft</item> + <item>-webkit-border-radius-bottomright</item> + <item>-webkit-box-align</item> + <item>-webkit-box-direction</item> + <item>-webkit-box-flex</item> + <item>-webkit-box-ordinal-group</item> + <item>-webkit-box-orient</item> + <item>-webkit-box-pack</item> + <item>-webkit-box-reflect</item> + <item>-webkit-box-shadow</item> + <item>-webkit-box-sizing</item> + <item>-webkit-column-count</item> + <item>-webkit-column-gap</item> + <item>-webkit-hyphens</item> + <item>-webkit-linear-gradient</item> + <item>-webkit-gradient</item> + <item>-webkit-overflow-scrolling</item> + <item>-webkit-perspective</item> + <item>-webkit-text-decoration</item> + <item>-webkit-text-decoration-skip</item> + <item>-webkit-text-fill-color</item> + <item>-webkit-text-stroke-color</item> + <item>-webkit-text-stroke-width</item> + <item>-webkit-text-size-adjust</item> + <item>-webkit-tap-highlight-color</item> + <item>-webkit-transform</item> + <item>-webkit-transform-origin</item> + <item>-webkit-transform-style</item> + <item>-webkit-transition</item> + <item>-webkit-transition-property</item> + <item>-webkit-transition-delay</item> + <item>-webkit-transition-duration</item> + <item>-webkit-user-select</item> + + <!-- Trident (a.k.a., MSHTML) CSS property extensions --> + <item>zoom</item> + <item>-ms-animation-name</item> + <item>-ms-animation-duration</item> + <item>-ms-animation-iteration</item> + <item>-ms-animation-direction</item> + <item>-ms-animation-delay</item> + <item>-ms-animation-play-state</item> + <item>-ms-animation-fill-mode</item> + <item>-ms-box-sizing</item> + <item>-ms-filter</item> + <item>-ms-flex</item> + <item>-ms-flex-align</item> + <item>-ms-flex-direction</item> + <item>-ms-flex-flow</item> + <item>-ms-flex-item-align</item> + <item>-ms-flex-line-pack</item> + <item>-ms-flex-negative</item> + <item>-ms-flex-order</item> + <item>-ms-flex-pack</item> + <item>-ms-flex-positive</item> + <item>-ms-flex-position</item> + <item>-ms-flex-preferred-size</item> + <item>-ms-flex-wrap</item> + <item>-ms-interpolation-mode</item> + <item>-ms-linear-gradient</item> + <item>-ms-overflow-style</item> + <item>-ms-text-size-adjust</item> + <item>-ms-transform</item> + <item>-ms-transition</item> + <item>-ms-user-select</item> + </list> + + <list name="value keywords"> + <item>inherit</item> + <item>unset</item> + <item>auto</item> + <!-- <item>revert</item> --> + </list> + + <list name="values"> + <item>none</item> + <item>hidden</item> + <item>dotted</item> + <item>dashed</item> + <item>solid</item> + <item>double</item> + <item>groove</item> + <item>ridge</item> + <item>inset</item> + <item>outset</item> + <item>xx-small</item> + <item>x-small</item> + <item>small</item> + <item>medium</item> + <item>large</item> + <item>x-large</item> + <item>xx-large</item> + <item>smaller</item> + <item>larger</item> + <item>italic</item> + <item>oblique</item> + <item>small-caps</item> + <item>normal</item> + <item>bold</item> + <item>bolder</item> + <item>lighter</item> + <item>light</item> + <item>transparent</item> + <item>repeat</item> + <item>repeat-x</item> + <item>repeat-y</item> + <item>no-repeat</item> + <item>baseline</item> + <item>sub</item> + <item>super</item> + <item>top</item> + <item>text-top</item> + <item>middle</item> + <item>bottom</item> + <item>text-bottom</item> + <item>left</item> + <item>right</item> + <item>center</item> + <item>justify</item> + <item>konq-center</item> + <item>disc</item> + <item>circle</item> + <item>square</item> + <item>box</item> + <item>decimal</item> + <item>decimal-leading-zero</item> + <item>lower-roman</item> + <item>upper-roman</item> + <item>lower-greek</item> + <item>lower-alpha</item> + <item>lower-latin</item> + <item>upper-alpha</item> + <item>upper-latin</item> + <item>hebrew</item> + <item>armenian</item> + <item>georgian</item> + <item>cjk-ideographic</item> + <item>hiragana</item> + <item>katakana</item> + <item>hiragana-iroha</item> + <item>katakana-iroha</item> + <item>inline</item> + <item>inline-block</item> + <item>block</item> + <item>list-item</item> + <item>run-in</item> + <item>compact</item> + <item>marker</item> + <item>table</item> + <item>inline-table</item> + <item>table-row-group</item> + <item>table-header-group</item> + <item>table-footer-group</item> + <item>table-row</item> + <item>table-column-group</item> + <item>table-column</item> + <item>table-cell</item> + <item>table-caption</item> + <item>crosshair</item> + <item>default</item> + <item>pointer</item> + <item>move</item> + <item>e-resize</item> + <item>ne-resize</item> + <item>nw-resize</item> + <item>n-resize</item> + <item>se-resize</item> + <item>sw-resize</item> + <item>s-resize</item> + <item>w-resize</item> + <item>text</item> + <item>wait</item> + <item>help</item> + <item>above</item> + <item>absolute</item> + <item>always</item> + <item>avoid</item> + <item>below</item> + <item>bidi-override</item> + <item>blink</item> + <item>both</item> + <item>capitalize</item> + <item>caption</item> + <item>clip</item> + <item>close-quote</item> + <item>collapse</item> + <item>condensed</item> + <item>crop</item> + <item>cross</item> + <item>ellipsis</item> + <item>ellipsis-word</item> + <item>embed</item> + <item>expanded</item> + <item>extra-condensed</item> + <item>extra-expanded</item> + <item>fixed</item> + <item>hand</item> + <item>hide</item> + <item>higher</item> + <item>icon</item> + <item>inside</item> + <item>invert</item> + <item>landscape</item> + <item>level</item> + <item>line-through</item> + <item>loud</item> + <item>lower</item> + <item>lowercase</item> + <item>ltr</item> + <item>menu</item> + <item>message-box</item> + <item>mix</item> + <item>narrower</item> + <item>no-close-quote</item> + <item>no-open-quote</item> + <item>nowrap</item> + <item>open-quote</item> + <item>outside</item> + <item>overline</item> + <item>portrait</item> + <item>pre</item> + <item>pre-line</item> + <item>pre-wrap</item> + <item>relative</item> + <item>rtl</item> + <item>scroll</item> + <item>semi-condensed</item> + <item>semi-expanded</item> + <item>separate</item> + <item>show</item> + <item>small-caption</item> + <item>static</item> + <item>static-position</item> + <item>status-bar</item> + <item>thick</item> + <item>thin</item> + <item>ultra-condensed</item> + <item>ultra-expanded</item> + <item>underline</item> + <item>uppercase</item> + <item>visible</item> + <item>wider</item> + <item>break</item> + <item>serif</item> + <item>sans-serif</item> + <item>cursive</item> + <item>fantasy</item> + <item>monospace</item> + <item>border-box</item> + <item>content-box</item> + <item>-epub-hyphens</item> + <item>contain</item> + <item>cover</item> + + <!-- transition and animation --> + <item>all</item> + <item>ease</item> + <item>ease-in</item> + <item>ease-out</item> + <item>ease-in-out</item> + <item>step-start</item> + <item>step-end</item> + <item>linear</item> + + <!-- animation --> + <item>infinite</item> + <item>reverse</item> + <item>alternate</item> + <item>alternate-reverse</item> + <item>forwards</item> + <item>backwards</item> + <item>running</item> + <item>paused</item> + </list> + + <list name="colors"> + <item>black</item> + <item>silver</item> + <item>gray</item> + <item>white</item> + <item>maroon</item> + <item>red</item> + <item>purple</item> + <item>fuchsia</item> + <item>green</item> + <item>lime</item> + <item>olive</item> + <item>yellow</item> + <item>navy</item> + <item>blue</item> + <item>teal</item> + <item>aqua</item> + <item>orange</item> + <item>aliceblue</item> + <item>antiquewhite</item> + <item>aquamarine</item> + <item>azure</item> + <item>beige</item> + <item>bisque</item> + <item>blanchedalmond</item> + <item>blueviolet</item> + <item>brown</item> + <item>burlywood</item> + <item>cadetblue</item> + <item>chartreuse</item> + <item>chocolate</item> + <item>coral</item> + <item>cornflowerblue</item> + <item>cornsilk</item> + <item>crimson</item> + <item>cyan</item> + <item>aqua</item> + <item>darkblue</item> + <item>darkcyan</item> + <item>darkgoldenrod</item> + <item>darkgray</item> + <item>darkgreen</item> + <item>darkgrey</item> + <item>darkkhaki</item> + <item>darkmagenta</item> + <item>darkolivegreen</item> + <item>darkorange</item> + <item>darkorchid</item> + <item>darkred</item> + <item>darksalmon</item> + <item>darkseagreen</item> + <item>darkslateblue</item> + <item>darkslategray</item> + <item>darkslategrey</item> + <item>darkturquoise</item> + <item>darkviolet</item> + <item>deeppink</item> + <item>deepskyblue</item> + <item>dimgray</item> + <item>dimgrey</item> + <item>dodgerblue</item> + <item>firebrick</item> + <item>floralwhite</item> + <item>forestgreen</item> + <item>gainsboro</item> + <item>ghostwhite</item> + <item>gold</item> + <item>goldenrod</item> + <item>greenyellow</item> + <item>grey</item> + <item>honeydew</item> + <item>hotpink</item> + <item>indianred</item> + <item>indigo</item> + <item>ivory</item> + <item>khaki</item> + <item>lavender</item> + <item>lavenderblush</item> + <item>lawngreen</item> + <item>lemonchiffon</item> + <item>lightblue</item> + <item>lightcoral</item> + <item>lightcyan</item> + <item>lightgoldenrodyellow</item> + <item>lightgray</item> + <item>lightgreen</item> + <item>lightgrey</item> + <item>lightpink</item> + <item>lightsalmon</item> + <item>lightseagreen</item> + <item>lightskyblue</item> + <item>lightslategray</item> + <item>lightslategrey</item> + <item>lightsteelblue</item> + <item>lightyellow</item> + <item>limegreen</item> + <item>linen</item> + <item>magenta</item> + <item>fuchsia</item> + <item>mediumaquamarine</item> + <item>mediumblue</item> + <item>mediumorchid</item> + <item>mediumpurple</item> + <item>mediumseagreen</item> + <item>mediumslateblue</item> + <item>mediumspringgreen</item> + <item>mediumturquoise</item> + <item>mediumvioletred</item> + <item>midnightblue</item> + <item>mintcream</item> + <item>mistyrose</item> + <item>moccasin</item> + <item>navajowhite</item> + <item>oldlace</item> + <item>olivedrab</item> + <item>orangered</item> + <item>orchid</item> + <item>palegoldenrod</item> + <item>palegreen</item> + <item>paleturquoise</item> + <item>palevioletred</item> + <item>papayawhip</item> + <item>peachpuff</item> + <item>peru</item> + <item>pink</item> + <item>plum</item> + <item>powderblue</item> + <item>rosybrown</item> + <item>royalblue</item> + <item>saddlebrown</item> + <item>salmon</item> + <item>sandybrown</item> + <item>seagreen</item> + <item>seashell</item> + <item>sienna</item> + <item>skyblue</item> + <item>slateblue</item> + <item>slategray</item> + <item>slategrey</item> + <item>snow</item> + <item>springgreen</item> + <item>steelblue</item> + <item>tan</item> + <item>thistle</item> + <item>tomato</item> + <item>turquoise</item> + <item>violet</item> + <item>wheat</item> + <item>whitesmoke</item> + <item>yellowgreen</item> + <item>rebeccapurple</item> + + <item>ActiveBorder</item> + <item>ActiveCaption</item> + <item>AppWorkspace</item> + <item>Background</item> + <item>ButtonFace</item> + <item>ButtonHighlight</item> + <item>ButtonShadow</item> + <item>ButtonText</item> + <item>CaptionText</item> + <item>GrayText</item> + <item>Highlight</item> + <item>HighlightText</item> + <item>InactiveBorder</item> + <item>InactiveCaption</item> + <item>InactiveCaptionText</item> + <item>InfoBackground</item> + <item>InfoText</item> + <item>Menu</item> + <item>MenuText</item> + <item>Scrollbar</item> + <item>ThreeDDarkShadow</item> + <item>ThreeDFace</item> + <item>ThreeDHighlight</item> + <item>ThreeDLightShadow</item> + <item>ThreeDShadow</item> + <item>Window</item> + <item>WindowFrame</item> + <item>WindowText</item> + </list> + + <list name="functions"> + <item>attr</item> + <item>calc</item> + <item>hsl</item> + <item>hsla</item> + <item>linear-gradient</item> + <item>radial-gradient</item> + <item>repeating-linear-gradient</item> + <item>repeating-radial-gradient</item> + <item>rgb</item> + <item>rgba</item> + <item>var</item> + <item>url</item> + + <!-- clip --> + <item>rect</item> + + <!-- shape-outside and clip-path --> + <item>inset</item> + <item>circle</item> + <item>ellipse</item> + <item>polygon</item> + + <!-- filter and backdrop-filter --> + <item>blur</item> + <item>brightness</item> + <item>contrast</item> + <item>drop-shadow</item> + <item>grayscale</item> + <item>hue-rotate</item> + <item>invert</item> + <item>opacity</item> + <item>saturate</item> + <item>sepia</item> + + <!-- grid-template-columns and grid-template-rows --> + <item>max-content</item> + <item>min-content</item> + <item>minmax</item> + <item>fix-content</item> + <item>repeat</item> + + <!-- transition and animation --> + <item>cubic-bezier</item> + <item>frames</item> + <item>steps</item> + + <!-- transform --> + <item>matrix</item> + <item>matrix3d</item> + <item>perspective</item> + <item>rotate</item> + <item>rotate3d</item> + <item>rotateX</item> + <item>rotateY</item> + <item>rotateZ</item> + <item>scale</item> + <item>scale3d</item> + <item>scaleX</item> + <item>scaleY</item> + <item>scaleZ</item> + <item>skew</item> + <item>skewX</item> + <item>skewY</item> + <item>translate</item> + <item>translate3d</item> + <item>translateX</item> + <item>translateY</item> + <item>translateZ</item> + + <!-- inner @font-face --> + <item>local</item> + <item>format</item> + </list> + + <list name="medias"> + <!-- types --> + <item>all</item> + <item>print</item> + <item>screen</item> + <item>speech</item> + + <!-- features --> + <item>any-pointer</item> + <item>any-hover</item> + <item>aspect-ratio</item> + <item>color</item> + <item>color-gamut</item> + <item>color-index</item> + <item>display-mode</item> + <item>grid</item> + <item>height</item> + <item>hover</item> + <item>max-aspect-ratio</item> + <item>max-color</item> + <item>max-color-index</item> + <item>max-device-aspect-ratio</item> + <item>max-device-height</item> + <item>max-device-width</item> + <item>max-height</item> + <item>max-monochrome</item> + <item>max-resolution</item> + <item>max-width</item> + <item>min-aspect-ratio</item> + <item>min-color</item> + <item>min-color-index</item> + <item>min-device-aspect-ratio</item> + <item>min-device-height</item> + <item>min-device-width</item> + <item>min-height</item> + <item>min-monochrome</item> + <item>min-resolution</item> + <item>min-width</item> + <item>monochrome</item> + <item>orientation</item> + <item>pointer</item> + <item>resolution</item> + <item>scan</item> + <item>update</item> + <item>width</item> + </list> + + <!-- prefixed by :: --> + <list name="pseudoelements"> + <item>after</item> + <item>before</item> + <item>cue</item> + <item>first-letter</item> + <item>first-line</item> + <item>selection</item> + + <!-- experimental --> + <item>backdrop</item> + <item>placeholder</item> + <!-- <item>marker</item> --> + <item>slotted</item> + <!-- <item>spelling-error</item> --> + <!-- <item>grammar-error</item> --> + + <!-- UI pseudo-classes --> + <item>value</item> + <item>choices</item> + <item>repeat-item</item> + <item>repeat-index</item> + + <item>-moz-progress-bar</item> + <item>-moz-range-progress</item> + <item>-moz-range-thumb</item> + <item>-moz-range-track</item> + <item>-moz-selection</item> + <item>-ms-fill</item> + <item>-ms-fill-lower</item> + <item>-ms-fill-upper</item> + <item>-ms-thumb</item> + <item>-ms-track</item> + <item>-webkit-progress-bar</item> + <item>-webkit-progress-value</item> + <item>-webkit-slider-runnable-track</item> + <item>-webkit-slider-thumb</item> + </list> + + <!-- prefixed by : --> + <list name="pseudoclasses"> + <item>active</item> + <item>any-link</item> + <item>checked</item> + <item>default</item> + <item>defined</item> + <!-- <item>dir</item> --> + <item>disabled</item> + <item>empty</item> + <item>enabled</item> + <item>first-child</item> + <item>first-of-type</item> + <item>fullscreen</item> + <item>focus</item> + <item>focus-within</item> + <item>host</item> + <item>hover</item> + <item>in-range</item> + <item>indeterminate</item> + <item>invalid</item> + <item>lang</item> + <item>last-child</item> + <item>last-of-type</item> + <item>link</item> + <item>not</item> + <item>nth-child</item> + <item>nth-last-child</item> + <item>nth-last-of-type</item> + <item>nth-of-type</item> + <item>only-child</item> + <item>only-of-type</item> + <item>optional</item> + <item>out-of-range</item> + <item>placeholder-shown</item> + <item>read-only</item> + <item>read-write</item> + <item>required</item> + <item>root</item> + <item>scope</item> + <item>target</item> + <item>valid</item> + <item>visited</item> + + <!-- pseudo-elements --> + <item>after</item> + <item>before</item> + <item>cue</item> + <item>first-letter</item> + <item>first-line</item> + <item>selection</item> + </list> + + <list name="pseudoclass-not"> + <item>not</item> + </list> + + <list name="pseudoclasses-@page"> + <item>blank</item> + <item>first</item> + <item>left</item> + <item>recto</item> + <item>right</item> + <item>verso</item> + </list> + + <list name="at-rules"> + <item>@character</item> + <item>@charset</item> + <item>@import</item> + <item>@namespace</item> + </list> + + <list name="nested at-rules"> + <item>@document</item> + <item>@media</item> + <item>@supports</item> + </list> + + <list name="@viewport"> + <item>@viewport</item> + </list> + + <list name="within-@viewport"> + <item>min-width</item> + <item>max-width</item> + <item>width</item> + <item>min-height</item> + <item>max-height</item> + <item>height</item> + <item>zoom</item> + <item>min-zoom</item> + <item>max-zoom</item> + <item>user-zoom</item> + <item>orientation</item> + <item>viewport-fit</item> + </list> + + <list name="@page"> + <item>@page</item> + </list> + + <list name="within-@page"> + <item>size</item> + <item>marks</item> + <item>bleed</item> + </list> + + <list name="@font-face"> + <item>@font-face</item> + </list> + + <list name="within-@font-face"> + <item>font-display</item> + <item>font-family</item> + <item>font-stretch</item> + <item>font-style</item> + <item>font-weight</item> + <item>font-variant</item> + <item>font-feature-settings</item> + <item>font-variation-settings</item> + <item>src</item> + <item>unicode-range</item> + </list> + + <list name="@keyframes"> + <item>@keyframes</item> + </list> + + <list name="within-@keyframes"> + <item>from</item> + <item>to</item> + </list> + + <list name="media operators"> + <item>and</item> + <item>only</item> + <item>not</item> + </list> + + <contexts> + <context name="Base" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <IncludeRules context="FindComments" /> + <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" /> + <DetectChar attribute="At Rule" context="SelectAtRule" char="@" lookAhead="true" /> + <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] --> + <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" /> + <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" /> + <DetectChar attribute="Separator Symbol" context="#stay" char="," /> + <AnyChar attribute="Operator" context="#stay" String="*>+~|" /> + <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" /> + <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" /> + <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" /> + </context> + + <context name="FindSelector" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="FindComments" /> + <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] --> + <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" /> + <DetectChar attribute="Separator Symbol" context="#stay" char="," /> + <AnyChar attribute="Operator" context="#stay" String="*>+~|" /> + <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" /> + <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" /> + <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" /> + </context> + + <!-- find functions // rgba(255,255,255,0.75) --> + <context name="FindFunctions" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Function" context="Function" String="[a-z\-]{2,}\(" lookAhead="true" /> + </context> + + <!-- find values // 10px 12pt 2.5em 1rem 75% #ffcc99 red solid --> + <context name="FindValues" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Annotation" context="Annotation" char="!" /> + <keyword attribute="Value Keyword" context="#stay" String="value keywords" /> + <keyword attribute="Value" context="#stay" String="values" /> + <keyword attribute="Color" context="#stay" String="colors" /> + <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3}){1,2}\b" /> + <RegExpr attribute="Number" context="FindUnits" String="[-+]?[0-9.]+(?![-+])" /> + <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" /> + </context> + + <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> + <WordDetect attribute="Annotation" context="#pop" String="important" /> + </context> + + <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> + <RegExpr attribute="Unit" context="#stay" String="(%|(em|ex|ch|rem|vw|vh|vm|px|in|cm|mm|pt|pc|deg|rad|grad|turn|ms|s|Hz|kHz)\b)(?![-+])" /> + </context> + + <!-- find strings // "some words" 'some words' --> + <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="String" context="StringDQ" char=""" /> + <DetectChar attribute="String" context="StringSQ" char="'" /> + </context> + + <!-- find comments // /* comment */ --> + <context name="FindComments" attribute="Normal Text" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="true"/> + <Detect2Chars attribute="Error" context="Error" char="/" char1="/" /> + </context> + + <context name="Error" attribute="Error" lineEndContext="#pop"> + <RegExpr attribute="Error" context="#pop" String=".*" /> + </context> + + <context name="IsComments" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*BEGIN\b.*\*/" beginRegion="UserDefined" /> + <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*END\b.*\*/" endRegion="UserDefined" /> + <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" /> + </context> + + <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop"> + <keyword attribute="At Rule" context="#pop!NestedAtRule" String="nested at-rules" /> + <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" /> + <keyword attribute="At Rule" context="#pop!@keyframes" String="@keyframes" /> + <keyword attribute="At Rule" context="#pop!@viewport" String="@viewport" /> + <keyword attribute="At Rule" context="#pop!@font-face" String="@font-face" /> + <keyword attribute="At Rule" context="#pop!@page" String="@page" /> + <RegExpr attribute="At Rule" context="#pop!UnknownAtRule" String="@[a-zA-Z0-9\-_]+\b" /> + </context> + + <context name="@keyframes" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <IncludeRules context="FindComments" /> + <DetectChar attribute="Normal Text" context="Within-@keyframes" char="{" beginRegion="ruleset" /> + </context> + + <context name="Within-@keyframes" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <IncludeRules context="FindComments" /> + <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" /> + <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" /> + <keyword attribute="Value" context="#stay" String="within-@keyframes" /> + <RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+%" /> + </context> + + <context name="@viewport" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <IncludeRules context="FindComments" /> + <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" /> + <DetectChar attribute="Normal Text" context="#pop!Within-@viewport" char="{" beginRegion="ruleset" /> + </context> + + <context name="Within-@viewport" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <keyword attribute="Property" context="IsProperty" String="within-@viewport" /> + <IncludeRules context="RuleSet" /> + </context> + + <context name="@font-face" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <IncludeRules context="FindComments" /> + <DetectChar attribute="Normal Text" context="#pop!Within-@font-face" char="{" beginRegion="ruleset" /> + </context> + + <context name="Within-@font-face" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <IncludeRules context="FindComments" /> + <keyword attribute="Property" context="IsProperty" String="within-@font-face" /> + <RegExpr attribute="Unknown Property" context="IsProperty" String="[A-Za-z_-]+\b" /> + <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" /> + </context> + + <context name="@page" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <IncludeRules context="FindComments" /> + <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" /> + <DetectChar attribute="Normal Text" context="#pop!Within-@page" char="{" beginRegion="ruleset" /> + </context> + + <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop"> + <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" /> + <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" /> + </context> + + <context name="Within-@page" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <keyword attribute="Property" context="IsProperty" String="within-@page" /> + <IncludeRules context="RuleSet" /> + </context> + + <context name="IsProperty" attribute="Error" lineEndContext="#stay"> + <DetectSpaces attribute="Normal Text" /> + <DetectChar attribute="Normal Text" context="RuleParameters" char=":" /> + </context> + + <context name="NestedAtRule" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="NestedBase" char="{" beginRegion="ruleset" /> + <IncludeRules context="AtRuleValue" /> + </context> + + <context name="NestedBase" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" /> + <IncludeRules context="Base" /> + </context> + + <context name="AtRule" attribute="Normal Text" lineEndContext="#pop"> + <DetectSpaces /> + <DetectChar attribute="Separator Symbol" context="#pop" char=";" /> + <IncludeRules context="AtRuleValue" /> + </context> + + <context name="UnknownAtRule" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="Separator Symbol" context="#pop" char=";" /> + <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" /> + <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" /> + <IncludeRules context="AtRuleValue" /> + </context> + + <context name="AtRuleValue" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindFunctions" /> + <keyword attribute="Keyword" context="#stay" String="media operators" /> + <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" /> + <keyword attribute="Value" context="#stay" String="medias" /> + <IncludeRules context="FindValues" /> + </context> + + <context name="SelectorAttr" attribute="Selector Attribute" lineEndContext="#stay"> + <DetectChar attribute="Selector Attribute" context="#pop" char="]" /> + <IncludeRules context="FindStrings" /> + <DetectChar attribute="Operator" context="SelectorAttrValue" char="=" /> + <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="~" char1="=" /> + <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="^" char1="=" /> + <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="$" char1="=" /> + <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="*" char1="=" /> + <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="|" char1="=" /> + <DetectIdentifier /> + </context> + + <context name="SelectorAttrValue" attribute="String" lineEndContext="#stay"> + <DetectChar attribute="Selector Attribute" context="#pop#pop" char="]" /> + <DetectIdentifier /> + </context> + + <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop"> + <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" /> + <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-not" /> + <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" /> + <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" /> + </context> + + <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop"> + <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" /> + <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" /> + </context> + + <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop"> + <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" /> + </context> + + <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" /> + <DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset" /> + <IncludeRules context="FindSelector" /> + </context> + + <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop"> + <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" /> + </context> + + <context name="SelectorPseudoValueClose" attribute="Selector Pseudo" lineEndContext="#pop#pop#pop"> + <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" /> + <DetectIdentifier /> + </context> + + <context name="Comment" attribute="Comment" lineEndContext="#stay"> + <DetectSpaces /> + <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" /> + <IncludeRules context="##Alerts" /> + <DetectIdentifier /> + </context> + + <context name="RuleSet" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" /> + <RegExpr attribute="Property" context="Rule" String="[A-Za-z_-]+(?=\s*:)" lookAhead="true" /> + <IncludeRules context="Base" /> + <RegExpr attribute="Normal Text" context="#stay" String="[A-Za-z_-]+" /> + <!-- auto-completion only, includes by previous rule --> + <keyword attribute="Normal Text" context="#stay" String="properties" /> + </context> + + <context name="Rule" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Normal Text" context="RuleParameters" char=":" /> + <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" /> + <keyword attribute="Property" context="#stay" String="properties" /> + <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" /> + </context> + + <context name="IsVariable" attribute="Normal Text" lineEndContext="#pop"> + <DetectChar attribute="Normal Text" context="#pop!RuleParameters" char=":" /> + <RegExpr attribute="Variable" context="#stay" String="[^:]+" /> + </context> + + <context name="RuleParameters" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindFunctions" /> + <IncludeRules context="FindValues" /> + <!-- Jump out conditions --> + <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";" /> + <DetectChar attribute="Separator Symbol" context="#stay" char="," /> + <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" /> + <!-- auto-completion only --> + <keyword attribute="Normal Text" context="#stay" String="functions" /> + </context> + + <context name="Function" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Function" context="FunctionParameters" char="(" /> + <StringDetect attribute="Function" context="FunctionVar" String="var(" /> + <StringDetect attribute="Function" context="FunctionUrl" String="url(" /> + <StringDetect attribute="Function" context="FunctionCalc" String="calc(" /> + <keyword attribute="Function" context="#stay" String="functions" /> + <RegExpr attribute="Normal Text" context="#stay" String="[-a-zA-Z][-a-zA-Z0-9]*" /> + </context> + + <context name="FunctionVar" attribute="Variable" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!FunctionParameters"> + <DetectSpaces /> + <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" /> + </context> + + <context name="FunctionCalc" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="Function" context="#pop#pop" char=")" /> + <IncludeRules context="Calc" /> + </context> + + <context name="NestedCalc" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="#pop" char=")" /> + <IncludeRules context="Calc" /> + </context> + + <context name="Calc" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Separator Symbol" context="#stay" char="," /> + <DetectChar attribute="Normal Text" context="NestedCalc" char="(" /> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindFunctions" /> + <IncludeRules context="FindValues" /> + <RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" /> + <!-- auto-completion only --> + <keyword attribute="Normal Text" context="#stay" String="functions" /> + </context> + + <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="UrlValue"> + <DetectSpaces /> + <IncludeRules context="FindStrings" /> + <DetectChar attribute="Function" context="#pop#pop" char=")" /> + </context> + + <context name="UrlValue" attribute="String" lineEndContext="#stay"> + <DetectChar attribute="Function" context="#pop#pop#pop" char=")" /> + </context> + + <context name="FunctionParameters" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="Function" context="#pop#pop" char=")" /> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindValues" /> + <DetectChar attribute="Separator Symbol" context="#stay" char="," /> + </context> + + <!-- string contexts --> + <context name="StringDQ" attribute="String" lineEndContext="#stay"> + <DetectChar attribute="String" context="#pop" char=""" /> + <IncludeRules context="InsideString" /> + </context> + + <context name="StringSQ" attribute="String" lineEndContext="#stay"> + <DetectChar attribute="String" context="#pop" char="'" /> + <IncludeRules context="InsideString" /> + </context> + + <context name="InsideString" attribute="String" lineEndContext="#stay"> + <RegExpr attribute="SpecialChar" context="#stay" String="\\([0-9A-Fa-f]{1,6}|.?)" /> + <RegExpr attribute="String" context="#stay" String="\\?[^"'\\]+" /> + </context> + + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/> + <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/> + <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/> + <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/> + <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/> + <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/> + <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/> + <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/> + <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/> + <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/> + <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/> + <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/> + <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/> + <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/> + <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/> + <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/> + <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/> + <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/> + <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/> + <itemData name="Error" defStyleNum="dsError" spellChecking="false"/> + </itemDatas> + </highlighting> + + <general> + <keywords casesensitive="0" weakDeliminator="-%@" /> + <comments> + <comment name="multiLine" start="/*" end="*/" /> + </comments> + </general> + +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/doxygen.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/doxygen.xml new file mode 100644 index 0000000000..99b1d79c02 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/doxygen.xml @@ -0,0 +1,489 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)"> <!-- things that end a TagWord --> +]> +<language name="Doxygen" + version="5" + kateversion="5.0" + section="Markup" + extensions="*.dox;*.doxygen" + mimetype="text/x-doxygen" + author="Dominik Haumann (dhaumann@kde.org)" + license="MIT" + priority="9"> + <highlighting> + <!-- NOTE: all tags may begin with a \ or @ char + so if you add/change tags you have to do it twice --> + <!-- NOTE: Tags @code/@endcode, @dot/@enddot, @vermatim/@endverbatim, @msc/@endmsc, @f[/@f] + do not present in keywords due separate handle rules... + --> + <list name="TagOnly"> + <item>\arg</item> <item>@arg</item> + <item>\author</item> <item>@author</item> + <item>\authors</item> <item>@authors</item> + <item>\brief</item> <item>@brief</item> + <item>\callgraph</item> <item>@callgraph</item> + <item>\callergraph</item> <item>@callergraph</item> + <item>\date</item> <item>@date</item> + <item>\deprecated</item> <item>@deprecated</item> + <item>\details</item> <item>@details</item> + <item>\docbookonly</item> <item>@docbookonly</item> + <item>\else</item> <item>@else</item> + <item>\endcond</item> <item>@endcond</item> + <item>\enddocbookonly</item> <item>@enddocbookonly</item> + <item>\endhtmlonly</item> <item>@endhtmlonly</item> + <item>\endif</item> <item>@endif</item> + <item>\endinternal</item> <item>@endinternal</item> + <item>\endlatexonly</item> <item>@endlatexonly</item> + <item>\endlink</item> <item>@endlink</item> + <item>\endmanonly</item> <item>@endmanonly</item> + <item>\endparblock</item> <item>@endparblock</item> + <item>\endrtfonly</item> <item>@endrtfonly</item> + <item>\endsecreflist</item> <item>@endsecreflist</item> + <item>\endxmlonly</item> <item>@endxmlonly</item> + <item>\f[</item> <item>@f[</item> + <item>\f]</item> <item>@f]</item> + <item>\f$</item> <item>@f$</item> + <!-- TODO Add @f{environment}{ and @f} --> + <item>\hideinitializer</item> <item>@hideinitializer</item> + <item>\htmlonly</item> <item>@htmlonly</item> + <!-- TODO @internal is a candidate to be handled separately, cuz may introduce folding region --> + <item>\internal</item> <item>@internal</item> + <item>\invariant</item> <item>@invariant</item> + <item>\latexonly</item> <item>@latexonly</item> + <item>\li</item> <item>@li</item> + <item>\manonly</item> <item>@manonly</item> + <item>\n</item> <item>@n</item> + <item>\nosubgrouping</item> <item>@nosubgrouping</item> + <item>\only</item> <item>@only</item> + <item>\parblock</item> <item>@parblock</item> + <item>\post</item> <item>@post</item> + <item>\pre</item> <item>@pre</item> + <item>\private</item> <item>@pivate</item> + <item>\privatesection</item> <item>@pivatesection</item> + <item>\protected</item> <item>@protected</item> + <item>\protectedsection</item> <item>@protectedsection</item> + <item>\public</item> <item>@public</item> + <item>\publicsection</item> <item>@publicsection</item> + <item>\pure</item> <item>@pure</item> + <item>\remark</item> <item>@remark</item> + <item>\remarks</item> <item>@remarks</item> + <item>\return</item> <item>@return</item> + <item>\returns</item> <item>@returns</item> + <item>\result</item> <item>@result</item> + <item>\rtfonly</item> <item>@rtfonly</item> + <item>\sa</item> <item>@sa</item> + <item>\secreflist</item> <item>@secreflist</item> + <item>\see</item> <item>@see</item> + <item>\short</item> <item>@short</item> + <item>\showinitializer</item> <item>@showinitializer</item> + <item>\since</item> <item>@since</item> + <item>\static</item> <item>@static</item> + <item>\tableofcontents</item> <item>@tableofcontents</item> + <item>\test</item> <item>@test</item> + <item>\version</item> <item>@version</item> + <item>\xmlonly</item> <item>@xmlonly</item> + <!-- TODO Introduce separate context for @~ ? --> + <item>\#</item> <item>@#</item> + <item>\$</item> <item>@$</item> + <item>\%</item> <item>@%</item> + <item>\&</item> <item>@&</item> + <item>\></item> <item>@></item> + <item>\<</item> <item>@<</item> + <item>\"</item> <item>@"</item> + <item>\::</item> <item>@::</item> + <item>\@</item> <item>@@</item> + <item>\\</item> <item>@\</item> + <item>\~</item> <item>@~</item> + <item>\.</item> <item>@.</item> + <item>\--</item> <item>@--</item> + <item>\---</item> <item>@---</item> + </list> + + <list name="TagWord"> + <item>\a</item> <item>@a</item> + <item>\anchor</item> <item>@anchor</item> + <item>\b</item> <item>@b</item> + <item>\c</item> <item>@c</item> + <item>\cite</item> <item>@cite</item> + <item>\cond</item> <item>@cond</item> + <item>\copybrief</item> <item>@copybrief</item> + <item>\copydetails</item> <item>@copydetails</item> + <item>\copydoc</item> <item>@copydoc</item> + <item>\def</item> <item>@def</item> + <item>\dir</item> <item>@dir</item> + <item>\dontinclude</item> <item>@dontinclude</item> + <item>\e</item> <item>@e</item> + <item>\elseif</item> <item>@elseif</item> + <item>\em</item> <item>@em</item> + <item>\enum</item> <item>@enum</item> + <item>\example</item> <item>@example</item> + <item>\exception</item> <item>@exception</item> + <item>\exceptions</item> <item>@exceptions</item> + <item>\extends</item> <item>@extends</item> + <item>\file</item> <item>@file</item> + <item>\htmlinclude</item> <item>@htmlinclude</item> + <item>\idlexcept</item> <item>@idlexcept</item> + <item>\if</item> <item>@if</item> + <item>\ifnot</item> <item>@ifnot</item> + <item>\implements</item> <item>@implements</item> + <item>\include</item> <item>@include</item> + <item>\includelineno</item> <item>@includelineno</item> + <item>\latexinclude</item> <item>@latexinclude</item> + <item>\link</item> <item>@link</item> + <item>\memberof</item> <item>@memberof</item> + <item>\namespace</item> <item>@namespace</item> + <item>\p</item> <item>@p</item> + <item>\package</item> <item>@package</item> + <item>\property</item> <item>@property</item> + <item>\relatedalso</item> <item>@relatedalso</item> + <item>\relatesalso</item> <item>@relatesalso</item> + <item>\related</item> <item>@related</item> + <item>\relates</item> <item>@relates</item> + <item>\retval</item> <item>@retval</item> + <item>\throw</item> <item>@throw</item> + <item>\throws</item> <item>@throws</item> + <item>\verbinclude</item> <item>@verbinclude</item> + <item>\version</item> <item>@version</item> + <!-- TODO Introduce separate context for @xrefitem? --> + <item>\xrefitem</item> <item>@xrefitem</item> + </list> + <list name="TagParam"> + <item>\param</item> <item>@param</item> + <!-- TODO @tparam has no optional direction actually! --> + <item>\tparam</item> <item>@tparam</item> + </list> + <!-- TODO Better (separate?) highlighting for @image required --> + <list name="TagWordWord"> + <item>\image</item> <item>@image</item> + </list> + <!-- TODO @union, @struct, @protocol, @interface, @class, @category + actually takes 3 params, 1 mandatory and 2 optional + --> + <!-- TODO @headerfile actually takes 2 params, where last one is optional --> + <list name="TagWordString"> + <item>\addtogroup</item> <item>@addtogroup</item> + <item>\category</item> <item>@category</item> + <item>\class</item> <item>@class</item> + <item>\diafile</item> <item>@diafile</item> + <item>\dotfile</item> <item>@dotfile</item> + <item>\defgroup</item> <item>@defgroup</item> + <item>\interface</item> <item>@interface</item> + <item>\headerfile</item> <item>@headerfile</item> + <item>\mscfile</item> <item>@mscfile</item> + <item>\page</item> <item>@page</item> + <item>\paragraph</item> <item>@paragraph</item> + <item>\protocol</item> <item>@prtocol</item> + <item>\ref</item> <item>@ref</item> + <item>\section</item> <item>@section</item> + <item>\snippet</item> <item>@snippet</item> + <item>\struct</item> <item>@struct</item> + <item>\subpage</item> <item>@subpage</item> + <item>\subsection</item> <item>@subsection</item> + <item>\subsubsection</item> <item>@subsubsection</item> + <item>\union</item> <item>@union</item> + <item>\weakgroup</item> <item>@weakgroup</item> + </list> + <list name="TagString"> + <item>\addindex</item> <item>@addindex</item> + <item>\copyright</item> <item>@copyright</item> + <item>\fn</item> <item>@fn</item> + <item>\ingroup</item> <item>@ingroup</item> + <item>\line</item> <item>@line</item> + <item>\mainpage</item> <item>@mainpage</item> + <item>\name</item> <item>@name</item> + <item>\overload</item> <item>@overload</item> + <item>\par</item> <item>@par</item> + <item>\skip</item> <item>@skip</item> + <item>\skipline</item> <item>@skipline</item> + <item>\typedef</item> <item>@typedef</item> + <item>\until</item> <item>@until</item> + <item>\var</item> <item>@var</item> + <item>\vhdlflow</item> <item>@vhdlflow</item> + </list> + <list name="Note"> + <item>\note</item> <item>@note</item> + </list> + <list name="Warning"> + <item>\warning</item> <item>@warning</item> + </list> + <list name="Attention"> + <item>\attention</item> <item>@attention</item> + <item>\bug</item> <item>@bug</item> + </list> + <list name="Todo"> + <item>\todo</item> <item>@todo</item> + </list> + + <contexts> + <!-- + Different types of recognized command formats: + (w/ params specified according doxygen manual (http://www.stack.nl/~dimitri/doxygen/commands.html)) + + @tag : TagOnly + @tag <word> : TagWord + @tag (rest_of_line) : TagString + @tag {paragraph} : TagOnly + @tag <word> <word> : TagWordWord + @tag <word> (rest_of_line) : TagWordString + + TODO Not all commands are handled properly nowadays :( Need few more contexts... + --> + <context attribute="Normal Text" lineEndContext="#stay" name="Normal"> + <RegExpr attribute="Comment" context="LineComment" String="//(!|(/(?=[^/]|$)))<?" /> + <RegExpr attribute="Comment" context="BlockComment" String="/\*(\*[^*/]|!|[*!]<|\*$)" beginRegion="BlockComment" /> + <RegExpr attribute="Region" context="#stay" String="//\s*@\{\s*$" beginRegion="MemberGroup" /> + <RegExpr attribute="Region" context="#stay" String="//\s*@\}\s*$" endRegion="MemberGroup" /> + <RegExpr attribute="Region" context="#stay" String="/\*\s*@\{\s*\*/" beginRegion="MemberGroup" /> + <RegExpr attribute="Region" context="#stay" String="/\*\s*@\}\s*\*/" endRegion="MemberGroup" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="LineComment"> + <LineContinue attribute="Comment" context="#stay" /> + <DetectSpaces /> + <IncludeRules context="##Alerts" /> + <IncludeRules context="SL_DetectEnv" /> + <keyword attribute="Tags" context="#stay" String="TagOnly" /> + <keyword attribute="Tags" context="SL_TagWord" String="TagWord" /> + <keyword attribute="Tags" context="SL_TagParam" String="TagParam" /> + <keyword attribute="Tags" context="SL_TagWordWord" String="TagWordWord" /> + <keyword attribute="Tags" context="SL_TagString" String="TagString" /> + <keyword attribute="Tags" context="SL_TagWordString" String="TagWordString" /> + <RegExpr attribute="Custom Tags" context="#stay" String="[@\\][^@\\ \t]+" /> + <DetectIdentifier /> + <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="<!--" /> + <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> + <RegExpr attribute="HTML Tag" context="SL_htmltag" String="<\/?[-\w0-9._:@]+" /> + </context> + <context attribute="Comment" lineEndContext="#stay" name="BlockComment"> + <DetectSpaces /> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" /> + <IncludeRules context="##Alerts" /> + <Detect2Chars attribute="Region" context="#stay" char="@" char1="{" beginRegion="Group" /> + <Detect2Chars attribute="Region" context="#stay" char="@" char1="}" endRegion="Group" /> + <IncludeRules context="SL_DetectEnv" /> + <keyword attribute="Tags" context="#stay" String="TagOnly" /> + <keyword attribute="Tags" context="ML_TagWord" String="TagWord" /> + <keyword attribute="Tags" context="ML_TagParam" String="TagParam" /> + <keyword attribute="Tags" context="ML_TagWordWord" String="TagWordWord" /> + <keyword attribute="Tags" context="ML_TagString" String="TagString" /> + <keyword attribute="Tags" context="ML_TagWordString" String="TagWordString" /> + <RegExpr attribute="Custom Tags" context="#stay" String="[@\\]([^@\\ \t\*]|\*(?!/))+" /> + <DetectIdentifier /> + <RegExpr attribute="Tags" context="#stay" String="\\(<|>)" /> + <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> + <RegExpr attribute="HTML Tag" context="ML_htmltag" String="<\/?[-\w0-9._:@]+" /> + <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="<!--" /> + </context> + + <!-- NOTE: all contexts beginning with ML_ are for multiline comments + The following contexts contain a Detect2Chars that looks for a */ sequence + to end multiline comments. Singleline comments do not have this limitation - + that's why all contexts are copy&pasted and the line <Detect2Chars ... */> is removed. + <IncludeRules context="acontext"> could be used instead but it would make context switching + much more complex and very hard to understand! (But use IncludeRules where the rules don't + refer to another SL_*/ML_* context, to help maintainability.) + --> + <!-- tag contexts --> + <context attribute="Comment" lineEndContext="#pop" name="ML_TagWord"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <IncludeRules context="SL_TagWord" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="ML_TagParam"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <DetectSpaces /> + <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in]" /> + <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[out]" /> + <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in,out]" /> + <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" /> + <RegExpr attribute="Word" context="#stay" String="\S" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordWord"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <DetectSpaces /> + <RegExpr attribute="Word" context="ML_Tag2ndWord" String="\S(?=&wordsep;)" /> + <RegExpr attribute="Word" context="#stay" String="\S" /> + </context> + <!-- TODO for kate 2.x, convert references to "#pop!ML_TagWord" --> + <context attribute="Comment" lineEndContext="#pop#pop" name="ML_Tag2ndWord"> + <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" lookAhead="true" /> + <IncludeRules context="SL_Tag2ndWord" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="ML_TagString"> + <DetectSpaces /> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="<!--" /> + <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> + <RegExpr attribute="HTML Tag" context="ML_htmltag" String="<\/?[-\w0-9._:@]+" /> + <RegExpr attribute="Description" context="#stay" String="." /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordString"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <IncludeRules context="SL_TagWordString" /> + </context> + + <!-- html contexts --> + <context name="ML_htmltag" attribute="Identifier" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1=">" /> + <DetectChar attribute="HTML Tag" context="#pop" char=">" /> + <RegExpr attribute="Identifier" context="ML_identifiers" String="\s*=\s*" /> + </context> + <context name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <IncludeRules context="##Alerts" /> + <StringDetect attribute="HTML Comment" context="#pop" String="-->" /> + </context> + <context name="ML_identifiers" attribute="Identifier" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" /> + <DetectChar attribute="Types" context="ML_types1" char="'" /> + <DetectChar attribute="Types" context="ML_types2" char=""" /> + </context> + <context name="ML_types1" attribute="Types" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <DetectChar attribute="Types" context="#pop#pop" char="'" /> + </context> + <context name="ML_types2" attribute="Types" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> + <DetectChar attribute="Types" context="#pop#pop" char=""" /> + </context> + + <!-- NOTE: all contexts beginning with SL_ are for singleline comments --> + <!-- tag contexts --> + <context attribute="Comment" lineEndContext="#pop" name="SL_TagWord"> + <DetectSpaces /> + <keyword attribute="Tags" context="#pop" String="TagWord" lookAhead="true" /> + <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" /> + <RegExpr attribute="Word" context="#stay" String="\S" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="SL_TagParam"> + <DetectSpaces /> + <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in]" /> + <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[out]" /> + <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in,out]" /> + <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" /> + <RegExpr attribute="Word" context="#stay" String="\S" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord"> + <DetectSpaces /> + <RegExpr attribute="Word" context="SL_Tag2ndWord" String="\S(?=&wordsep;)" /> + <RegExpr attribute="Word" context="#stay" String="\S" /> + </context> + <!-- TODO for kate 2.x, convert references to "#pop!SL_TagWord" --> + <context attribute="Comment" lineEndContext="#pop#pop" name="SL_Tag2ndWord"> + <DetectSpaces /> + <RegExpr attribute="Word" context="#pop#pop" String="\S(?=&wordsep;)" /> + <RegExpr attribute="Word" context="#stay" String="\S" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="SL_TagString"> + <DetectSpaces /> + <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="<!--" /> + <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> + <RegExpr attribute="HTML Tag" context="SL_htmltag" String="<\/?[-\w0-9._:@]+" /> + <RegExpr attribute="Description" context="#stay" String="." /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString"> + <DetectSpaces /> + <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" /> + <RegExpr attribute="Word" context="#stay" String="\S" /> + </context> + + <!-- html contexts --> + <context name="SL_htmltag" attribute="Identifier" lineEndContext="#pop"> + <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1=">" /> + <DetectChar attribute="HTML Tag" context="#pop" char=">" /> + <RegExpr attribute="Identifier" context="SL_identifiers" String="\s*=\s*" /> + </context> + <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop"> + <IncludeRules context="##Alerts" /> + <StringDetect attribute="HTML Comment" context="#pop" String="-->" /> + </context> + <context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop"> + <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" /> + <DetectChar attribute="Types" context="SL_types1" char="'" /> + <DetectChar attribute="Types" context="SL_types2" char=""" /> + </context> + <context name="SL_types1" attribute="Types" lineEndContext="#pop"> + <DetectChar attribute="Types" context="#pop#pop" char="'" /> + </context> + <context name="SL_types2" attribute="Types" lineEndContext="#pop"> + <DetectChar attribute="Types" context="#pop#pop" char=""" /> + </context> + + <context attribute="Comment" name="SL_DetectEnv" lineEndContext="#pop"> + <RegExpr attribute="Tags" context="Code" String="[@\\]code\b" beginRegion="Code" /> + <RegExpr attribute="Tags" context="Verbatim" String="[@\\]verbatim\b" beginRegion="Verbatim" /> + <RegExpr attribute="Tags" context="Formula" String="[@\\]f\[" beginRegion="Formula" /> + <RegExpr attribute="Tags" context="Msc" String="[@\\]msc\b" beginRegion="Msc" /> + <RegExpr attribute="Tags" context="Dot" String="[@\\]dot\b" beginRegion="Dot" /> + <keyword attribute="Note" context="#stay" String="Note" /> + <keyword attribute="Warning" context="#stay" String="Warning" /> + <keyword attribute="Attention" context="#stay" String="Attention" /> + <keyword attribute="Todo" context="#stay" String="Todo" /> + <RegExpr attribute="Entities" context="#stay" String="&[A-Za-z]+;" /> + </context> + + <context attribute="Comment" name="SL_DetectComment" lineEndContext="#pop"> + <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" /> + <DetectChar attribute="Comment" context="#stay" char="*" /> + <StringDetect attribute="Comment" context="#stay" String="///" /> + </context> + + <context attribute="Code" lineEndContext="#stay" name="Code"> + <IncludeRules context="SL_DetectComment" /> + <RegExpr attribute="Tags" context="#pop" String="[@\\]endcode\b" endRegion="Code" /> + </context> + + <context attribute="Verbatim" lineEndContext="#stay" name="Verbatim"> + <IncludeRules context="SL_DetectComment" /> + <RegExpr attribute="Tags" context="#pop" String="[@\\]endverbatim\b" endRegion="Verbatim" /> + </context> + + <context attribute="Formulas" lineEndContext="#stay" name="Formula"> + <IncludeRules context="SL_DetectComment" /> + <RegExpr attribute="Tags" context="#pop" String="[@\\]f\]" endRegion="Formula" /> + <!-- TODO: How to force LaTeX math context here?? --> + <!-- <IncludeRules context="##LaTeX" /> --> + </context> + + <context attribute="Message Sequence Chart" lineEndContext="#stay" name="Msc"> + <IncludeRules context="SL_DetectComment" /> + <RegExpr attribute="Tags" context="#pop" String="[@\\]endmsc\b" endRegion="Msc" /> + </context> + + <context attribute="Dot Graph" lineEndContext="#stay" name="Dot"> + <IncludeRules context="SL_DetectComment" /> + <RegExpr attribute="Tags" context="#pop" String="[@\\]enddot\b" endRegion="Dot" /> + </context> + + </contexts> + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Tags" defStyleNum="dsAnnotation" bold="1" /> + <itemData name="Custom Tags" defStyleNum="dsAnnotation" /> + <itemData name="Word" defStyleNum="dsCommentVar" bold="1" italic="0" /> + <itemData name="HTML Tag" defStyleNum="dsKeyword" color="#000000" bold="1" italic="0" /> + <itemData name="Entities" defStyleNum="dsOthers" color="#4086C0" bold="1" italic="1" /> + <itemData name="Description" defStyleNum="dsDocumentation" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Region" defStyleNum="dsRegionMarker" /> + <itemData name="Identifier" defStyleNum="dsOthers" /> + <itemData name="HTML Comment" defStyleNum="dsComment" /> + <itemData name="Types" defStyleNum="dsDataType" /> + <itemData name="Code" defStyleNum="dsComment" /> + <itemData name="Dot Graph" defStyleNum="dsComment" color="#00A000" selColor="#ffffff" italic="1" /> + <itemData name="Formulas" defStyleNum="dsComment" color="#00A000" selColor="#ffffff" italic="1" /> + <itemData name="Message Sequence Chart" defStyleNum="dsComment" color="#00A000" selColor="#ffffff" italic="1" /> + <itemData name="Verbatim" defStyleNum="dsComment" /> + <itemData name="Note" defStyleNum="dsInformation" bold="1" italic="0" /> + <itemData name="Warning" defStyleNum="dsWarning" bold="1" italic="0" /> + <itemData name="Attention" defStyleNum="dsAnnotation" bold="1" italic="0" /> + <itemData name="Todo" defStyleNum="dsAnnotation" bold="1" italic="0" /> + </itemDatas> + </highlighting> + <general> + <keywords casesensitive="1" weakDeliminator="\$~" /> + </general> +</language> +<!-- kate: indent-width 2; --> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/dtd.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/dtd.xml new file mode 100644 index 0000000000..5c39c1b597 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/dtd.xml @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE language SYSTEM "language.dtd"[ + <!ENTITY nmtoken "[\-\w\d\.:_]+"> + <!ENTITY entref "(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);"> +]> +<language name="DTD" version="2" kateversion="3.4" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL"> + <highlighting> + + <list name="Category"> + <item>EMPTY</item> + <item>ANY</item> + <item>CDATA</item> + <item>ID</item> + <item>IDREF</item> + <item>IDREFS</item> + <item>NMTOKEN</item> + <item>NMTOKENS</item> + <item>ENTITY</item> + <item>ENTITIES</item> + <item>NOTATION</item> + <item>PUBLIC</item> + <item>SYSTEM</item> + <item>NDATA</item> + </list> + + <list name="Keywords"> + <item>#PCDATA</item> + <item>#REQUIRED</item> + <item>#IMPLIED</item> + <item>#FIXED</item> + </list> + + <contexts> + <context name="Normal" attribute="Normal" lineEndContext="#stay"> + <DetectSpaces /> + <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> + <StringDetect attribute="Processing Instruction" context="PI" String="<?xml" beginRegion="pi" /> + <StringDetect attribute="Declaration" context="Declaration" String="<!ELEMENT" beginRegion="declaration" /> + <StringDetect attribute="Declaration" context="Declaration" String="<!ATTLIST" beginRegion="declaration" /> + <StringDetect attribute="Declaration" context="Declaration" String="<!NOTATION" beginRegion="declaration" /> + <StringDetect attribute="Declaration" context="Declaration" String="<!ENTITY" beginRegion="declaration" /> + <DetectIdentifier /> + </context> + + <context name="Comment" attribute="Comment" lineEndContext="#stay"> + <DetectSpaces /> + <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment" /> + <IncludeRules context="##Alerts" /> + <DetectIdentifier /> + </context> + + <context name="PI" attribute="Other" lineEndContext="#stay"> + <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1=">" endRegion="pi" /> + </context> + + <context name="Declaration" attribute="Other" lineEndContext="#stay"> + <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> + <Detect2Chars attribute="Comment" context="InlineComment" char="-" char1="-" /> + <DetectChar attribute="Declaration" context="#pop" char=">" endRegion="declaration" /> + <DetectChar attribute="String" context="String" char=""" /> + <RegExpr attribute="Declaration" context="#stay" String="(-|O)\s(-|O)" /> + <AnyChar attribute="Delimiter" context="#stay" String="(|)," /> + <RegExpr attribute="Entity" context="#stay" String="(%|&)&entref;" /> + <AnyChar attribute="Symbol" context="#stay" String="?*+-&" /> + <RegExpr attribute="Local" context="#stay" String="%\s" /> + <keyword attribute="Keyword" context="#stay" String="Category" /> + <keyword attribute="Keyword" context="#stay" String="Keywords" /> + <RegExpr attribute="Name" context="#stay" String="\b&nmtoken;\b" /> + </context> + + <context name="String" attribute="String" lineEndContext="#stay"> + <DetectSpaces /> + <DetectChar attribute="String" context="#pop" char=""" /> + <RegExpr attribute="Entity" context="#stay" String="%&nmtoken;;" /> + </context> + + <context name="InlineComment" attribute="Comment" lineEndContext="#pop"> + <DetectSpaces /> + <Detect2Chars attribute="Comment" context="#pop" char="-" char1="-" /> + <IncludeRules context="##Alerts" /> + <DetectIdentifier /> + </context> + + </contexts> + + <itemDatas> + <itemData name="Normal" defStyleNum="dsNormal" /> + <itemData name="Other" defStyleNum="dsNormal" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false" /> + <itemData name="Declaration" defStyleNum="dsDataType" bold="1" spellChecking="false" /> + <itemData name="Name" defStyleNum="dsFunction" spellChecking="false" /> + <itemData name="Delimiter" defStyleNum="dsDecVal" spellChecking="false" /> + <itemData name="Symbol" defStyleNum="dsFloat" bold="1" spellChecking="false" /> + <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" /> + <itemData name="String" defStyleNum="dsString" spellChecking="false" /> + <itemData name="Entity" defStyleNum="dsDecVal" spellChecking="false" /> + <itemData name="Local" defStyleNum="dsDecVal" bold="1" spellChecking="false" /> + </itemDatas> + </highlighting> + + <general> + <comments> + <comment name="multiLine" start="<!--" end="-->" /> + </comments> + </general> + +</language> +<!-- kate: indent-width 2; indent-mode normal; tab-indents on; --> + diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/html.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/html.xml new file mode 100644 index 0000000000..4f9eb962d7 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/html.xml @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY name "[A-Za-z_:][\w.:_-]*"> + <!ENTITY attributeName "[A-Za-z_:*#\(\[][\)\]\w.:_-]*"> + <!ENTITY entref "&(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> +]> +<language name="HTML" version="5" kateversion="3.4" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10"> + +<highlighting> +<contexts> + <context name="Start" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="FindHTML" /> + </context> + + <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces/> + <DetectIdentifier/> + <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> + <StringDetect attribute="CDATA" context="CDATA" String="<![CDATA[" beginRegion="cdata" /> + <RegExpr attribute="Doctype" context="Doctype" String="<!DOCTYPE\s+" insensitive="true" beginRegion="doctype" /> + <RegExpr attribute="Processing Instruction" context="PI" String="<\?[\w:-]*" beginRegion="pi" /> + <RegExpr attribute="Element" context="CSS" String="<style\b" insensitive="true" beginRegion="style" /> + <RegExpr attribute="Element" context="JS" String="<script\b" insensitive="true" beginRegion="script" /> + <RegExpr attribute="Element" context="El Open" String="<pre\b" insensitive="true" beginRegion="pre" /> + <RegExpr attribute="Element" context="El Open" String="<div\b" insensitive="true" beginRegion="div" /> + <RegExpr attribute="Element" context="El Open" String="<table\b" insensitive="true" beginRegion="table" /> + <RegExpr attribute="Element" context="El Open" String="<ul\b" insensitive="true" beginRegion="ul" /> + <RegExpr attribute="Element" context="El Open" String="<ol\b" insensitive="true" beginRegion="ol" /> + <RegExpr attribute="Element" context="El Open" String="<dl\b" insensitive="true" beginRegion="dl" /> + <RegExpr attribute="Element" context="El Open" String="<article\b" insensitive="true" beginRegion="article" /> + <RegExpr attribute="Element" context="El Open" String="<aside\b" insensitive="true" beginRegion="aside" /> + <RegExpr attribute="Element" context="El Open" String="<details\b" insensitive="true" beginRegion="details" /> + <RegExpr attribute="Element" context="El Open" String="<figure\b" insensitive="true" beginRegion="figure" /> + <RegExpr attribute="Element" context="El Open" String="<footer\b" insensitive="true" beginRegion="footer" /> + <RegExpr attribute="Element" context="El Open" String="<header\b" insensitive="true" beginRegion="header" /> + <RegExpr attribute="Element" context="El Open" String="<main\b" insensitive="true" beginRegion="main" /> + <RegExpr attribute="Element" context="El Open" String="<nav\b" insensitive="true" beginRegion="nav" /> + <RegExpr attribute="Element" context="El Open" String="<section\b" insensitive="true" beginRegion="section" /> + <RegExpr attribute="Element" context="El Open" String="<&name;" /> + <RegExpr attribute="Element" context="El Close" String="</pre\b" insensitive="true" endRegion="pre" /> + <RegExpr attribute="Element" context="El Close" String="</div\b" insensitive="true" endRegion="div" /> + <RegExpr attribute="Element" context="El Close" String="</table\b" insensitive="true" endRegion="table" /> + <RegExpr attribute="Element" context="El Close" String="</ul\b" insensitive="true" endRegion="ul" /> + <RegExpr attribute="Element" context="El Close" String="</ol\b" insensitive="true" endRegion="ol" /> + <RegExpr attribute="Element" context="El Close" String="</dl\b" insensitive="true" endRegion="dl" /> + <RegExpr attribute="Element" context="El Close" String="</article\b" insensitive="true" endRegion="article" /> + <RegExpr attribute="Element" context="El Close" String="</aside\b" insensitive="true" endRegion="aside" /> + <RegExpr attribute="Element" context="El Close" String="</details\b" insensitive="true" endRegion="details" /> + <RegExpr attribute="Element" context="El Close" String="</figure\b" insensitive="true" endRegion="figure" /> + <RegExpr attribute="Element" context="El Close" String="</footer\b" insensitive="true" endRegion="footer" /> + <RegExpr attribute="Element" context="El Close" String="</header\b" insensitive="true" endRegion="header" /> + <RegExpr attribute="Element" context="El Close" String="</main\b" insensitive="true" endRegion="main" /> + <RegExpr attribute="Element" context="El Close" String="</nav\b" insensitive="true" endRegion="nav" /> + <RegExpr attribute="Element" context="El Close" String="</section\b" insensitive="true" endRegion="section" /> + <RegExpr attribute="Element" context="El Close" String="</&name;" /> + <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" /> + <IncludeRules context="FindEntityRefs" /> + </context> + + <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="EntityRef" context="#stay" String="&entref;" /> + <AnyChar attribute="Error" context="#stay" String="&<" /> + </context> + + <context name="FindPEntityRefs" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="EntityRef" context="#stay" String="&entref;" /> + <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" /> + <AnyChar attribute="Error" context="#stay" String="&%" /> + </context> + + <context name="FindAttributes" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="Attribute" context="#stay" String="&attributeName;" column="0"/> + <RegExpr attribute="Attribute" context="#stay" String="\s+&attributeName;" /> + <DetectChar attribute="Attribute" context="Value" char="=" /> + </context> + + <context name="FindDTDRules" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" /> + </context> + + + <context name="Comment" attribute="Comment" lineEndContext="#stay"> + <DetectSpaces/> + <IncludeRules context="##Alerts" /> + <DetectIdentifier/> + <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment" /> + <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+" /> + </context> + + <context name="CDATA" attribute="Other Text" lineEndContext="#stay"> + <DetectSpaces/> + <DetectIdentifier/> + <StringDetect attribute="CDATA" context="#pop" String="]]>" endRegion="cdata" /> + <StringDetect attribute="EntityRef" context="#stay" String="]]&gt;" /> + </context> + + <context name="PI" attribute="Other Text" lineEndContext="#stay"> + <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1=">" endRegion="pi" /> + </context> + + <context name="Doctype" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char=">" endRegion="doctype" /> + <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" /> + </context> + + <context name="Doctype Internal Subset" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" /> + <IncludeRules context="FindDTDRules" /> + <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> + <RegExpr attribute="Processing Instruction" context="PI" String="<\?[\w:-]*" beginRegion="pi" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char=">" /> + <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char=""" /> + <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="'" /> + </context> + + <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay"> + <DetectChar attribute="Value" context="#pop" char=""" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay"> + <DetectChar attribute="Value" context="#pop" char="'" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="El Open" attribute="Other Text" lineEndContext="#stay"> + <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" /> + <DetectChar attribute="Element" context="#pop" char=">" /> + <IncludeRules context="FindAttributes" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="El Close" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Element" context="#pop" char=">" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="El Close 2" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Element" context="#pop#pop#pop" char=">" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="El Close 3" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Element" context="#pop#pop#pop#pop" char=">" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="CSS" attribute="Other Text" lineEndContext="#stay"> + <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="style" /> + <DetectChar attribute="Element" context="CSS content" char=">" /> + <IncludeRules context="FindAttributes" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="CSS content" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="Element" context="El Close 2" String="</style\b" insensitive="true" endRegion="style" /> + <IncludeRules context="##CSS" includeAttrib="true"/> + </context> + + <context name="JS" attribute="Other Text" lineEndContext="#stay"> + <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="script" /> + <DetectChar attribute="Element" context="JS content" char=">" /> + <IncludeRules context="FindAttributes" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="JS content" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="Element" context="El Close 2" String="</script\b" insensitive="true" endRegion="script" /> + <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*</script\b)" insensitive="true" /> + <IncludeRules context="Normal##JavaScript" includeAttrib="true"/> + </context> + + <context name="JS comment close" attribute="Comment" lineEndContext="#pop"> + <RegExpr attribute="Element" context="El Close 3" String="</script\b" insensitive="true" endRegion="script" /> + <IncludeRules context="##Alerts" /> + </context> + + <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ"> + <DetectChar attribute="Value" context="Value DQ" char=""" /> + <DetectChar attribute="Value" context="Value SQ" char="'" /> + <DetectSpaces /> + </context> + + <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop"> + <IncludeRules context="FindEntityRefs" /> + <RegExpr attribute="Value" context="#stay" String="/(?!>)" /> + <RegExpr attribute="Value" context="#stay" String="[^/><"'\s]" /> + </context> + + <context name="Value DQ" attribute="Value" lineEndContext="#stay"> + <DetectChar attribute="Value" context="#pop#pop" char=""" /> + <IncludeRules context="FindEntityRefs" /> + </context> + + <context name="Value SQ" attribute="Value" lineEndContext="#stay"> + <DetectChar attribute="Value" context="#pop#pop" char="'" /> + <IncludeRules context="FindEntityRefs" /> + </context> + +</contexts> +<itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Other Text" defStyleNum="dsNormal" spellChecking="false" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" spellChecking="false" /> + <itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false" /> + <itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false" /> + <itemData name="Element" defStyleNum="dsKeyword" spellChecking="false" /> + <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false" /> + <itemData name="Value" defStyleNum="dsString" spellChecking="false" /> + <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false" /> + <itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false" /> + <itemData name="Error" defStyleNum="dsError" spellChecking="false" /> +</itemDatas> + +</highlighting> +<general> + <comments> + <comment name="multiLine" start="<!--" end="-->" /> + </comments> +</general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/ini.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/ini.xml new file mode 100644 index 0000000000..465422f0b0 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/ini.xml @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc;*.conf" mimetype="" version="4" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL"> + +<highlighting> +<list name="keywords"> +<item>On</item> +<item>Off</item> +<item>Default</item> +<item>Defaults</item> +<item>Localhost</item> +<item>Null</item> +<item>True</item> +<item>False</item> +<item>Yes</item> +<item>No</item> +<item>Normal</item> + +<!-- PHP Keywords --> +<item>E_ALL</item> +<item>E_ERROR</item> +<item>E_WARNING</item> +<item>E_PARSE</item> +<item>E_NOTICE</item> +<item>E_STRICT</item> +<item>E_CORE_ERROR</item> +<item>E_CORE_WARNING</item> +<item>E_COMPILE_ERROR</item> +<item>E_COMPILE_WARNING</item> +<item>E_USER_ERROR</item> +<item>E_USER_WARNING</item> +<item>E_USER_NOTICE</item> +</list> + +<contexts> + <context name="ini" attribute="Normal Text" lineEndContext="#stay"> + <RangeDetect attribute="Section" context="#stay" char="[" char1="]" beginRegion="Section" endRegion="Section" /> + <DetectChar attribute="Assignment" context="Value" char="=" /> + <DetectChar char=";" attribute="Comment" context="Comment" firstNonSpace="true" /> + <DetectChar char="#" attribute="Comment" context="Comment" firstNonSpace="true" /> + </context> + + <context name="Value" attribute="Value" lineEndContext="#pop" > + <Float attribute="Float" /> + <Int attribute="Int" /> + <keyword attribute="Keyword" String="keywords" /> + </context> + + <context name="Comment" attribute="Comment" lineEndContext="#pop"> + <DetectSpaces /> + <IncludeRules context="##Alerts" /> + <DetectIdentifier /> + </context> +</contexts> + + +<itemDatas> + <itemData name="Normal Text" defStyleNum="dsDataType" /> + <itemData name="Section" defStyleNum="dsKeyword" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Assignment" defStyleNum="dsOthers" /> + <itemData name="Value" defStyleNum="dsString" /> + <itemData name="Float" defStyleNum="dsFloat" /> + <itemData name="Int" defStyleNum="dsDecVal" /> + <itemData name="Keyword" defStyleNum="dsKeyword" /> +</itemDatas> +</highlighting> + + +<general> + <comments> + <comment name="singleLine" start="#" /> + <comment name="singleLine" start=";" /> + </comments> + <keywords casesensitive="0" /> +</general> + +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/java.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/java.xml new file mode 100644 index 0000000000..f59415048e --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/java.xml @@ -0,0 +1,3865 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY int "[0-9]([0-9_]*[0-9])?"> + <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?"> +]> +<language name="Java" version="5" kateversion="5.0" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)"> + <highlighting> + <list name="java15"> + <item>ACTIVE</item> + <item>ACTIVITY_COMPLETED</item> + <item>ACTIVITY_REQUIRED</item> + <item>ARG_IN</item> + <item>ARG_INOUT</item> + <item>ARG_OUT</item> + <item>AWTError</item> + <item>AWTEvent</item> + <item>AWTEventListener</item> + <item>AWTEventListenerProxy</item> + <item>AWTEventMulticaster</item> + <item>AWTException</item> + <item>AWTKeyStroke</item> + <item>AWTPermission</item> + <item>AbstractAction</item> + <item>AbstractBorder</item> + <item>AbstractButton</item> + <item>AbstractCellEditor</item> + <item>AbstractCollection</item> + <item>AbstractColorChooserPanel</item> + <item>AbstractDocument</item> + <item>AbstractDocument.AttributeContext</item> + <item>AbstractDocument.Content</item> + <item>AbstractDocument.ElementEdit</item> + <item>AbstractExecutorService</item> + <item>AbstractInterruptibleChannel</item> + <item>AbstractLayoutCache</item> + <item>AbstractLayoutCache.NodeDimensions</item> + <item>AbstractList</item> + <item>AbstractListModel</item> + <item>AbstractMap</item> + <item>AbstractMethodError</item> + <item>AbstractPreferences</item> + <item>AbstractQueue</item> + <item>AbstractQueuedSynchronizer</item> + <item>AbstractSelectableChannel</item> + <item>AbstractSelectionKey</item> + <item>AbstractSelector</item> + <item>AbstractSequentialList</item> + <item>AbstractSet</item> + <item>AbstractSpinnerModel</item> + <item>AbstractTableModel</item> + <item>AbstractUndoableEdit</item> + <item>AbstractWriter</item> + <item>AccessControlContext</item> + <item>AccessControlException</item> + <item>AccessController</item> + <item>AccessException</item> + <item>Accessible</item> + <item>AccessibleAction</item> + <item>AccessibleAttributeSequence</item> + <item>AccessibleBundle</item> + <item>AccessibleComponent</item> + <item>AccessibleContext</item> + <item>AccessibleEditableText</item> + <item>AccessibleExtendedComponent</item> + <item>AccessibleExtendedTable</item> + <item>AccessibleExtendedText</item> + <item>AccessibleHyperlink</item> + <item>AccessibleHypertext</item> + <item>AccessibleIcon</item> + <item>AccessibleKeyBinding</item> + <item>AccessibleObject</item> + <item>AccessibleRelation</item> + <item>AccessibleRelationSet</item> + <item>AccessibleResourceBundle</item> + <item>AccessibleRole</item> + <item>AccessibleSelection</item> + <item>AccessibleState</item> + <item>AccessibleStateSet</item> + <item>AccessibleStreamable</item> + <item>AccessibleTable</item> + <item>AccessibleTableModelChange</item> + <item>AccessibleText</item> + <item>AccessibleTextSequence</item> + <item>AccessibleValue</item> + <item>AccountException</item> + <item>AccountExpiredException</item> + <item>AccountLockedException</item> + <item>AccountNotFoundException</item> + <item>Acl</item> + <item>AclEntry</item> + <item>AclNotFoundException</item> + <item>Action</item> + <item>ActionEvent</item> + <item>ActionListener</item> + <item>ActionMap</item> + <item>ActionMapUIResource</item> + <item>Activatable</item> + <item>ActivateFailedException</item> + <item>ActivationDesc</item> + <item>ActivationException</item> + <item>ActivationGroup</item> + <item>ActivationGroupDesc</item> + <item>ActivationGroupDesc.CommandEnvironment</item> + <item>ActivationGroupID</item> + <item>ActivationGroup_Stub</item> + <item>ActivationID</item> + <item>ActivationInstantiator</item> + <item>ActivationMonitor</item> + <item>ActivationSystem</item> + <item>Activator</item> + <item>ActiveEvent</item> + <item>ActivityCompletedException</item> + <item>ActivityRequiredException</item> + <item>AdapterActivator</item> + <item>AdapterActivatorOperations</item> + <item>AdapterAlreadyExists</item> + <item>AdapterAlreadyExistsHelper</item> + <item>AdapterInactive</item> + <item>AdapterInactiveHelper</item> + <item>AdapterManagerIdHelper</item> + <item>AdapterNameHelper</item> + <item>AdapterNonExistent</item> + <item>AdapterNonExistentHelper</item> + <item>AdapterStateHelper</item> + <item>AddressHelper</item> + <item>Adjustable</item> + <item>AdjustmentEvent</item> + <item>AdjustmentListener</item> + <item>Adler32</item> + <item>AffineTransform</item> + <item>AffineTransformOp</item> + <item>AlgorithmParameterGenerator</item> + <item>AlgorithmParameterGeneratorSpi</item> + <item>AlgorithmParameterSpec</item> + <item>AlgorithmParameters</item> + <item>AlgorithmParametersSpi</item> + <item>AllPermission</item> + <item>AlphaComposite</item> + <item>AlreadyBound</item> + <item>AlreadyBoundException</item> + <item>AlreadyBoundHelper</item> + <item>AlreadyBoundHolder</item> + <item>AlreadyConnectedException</item> + <item>AncestorEvent</item> + <item>AncestorListener</item> + <item>AnnotatedElement</item> + <item>Annotation</item> + <item>AnnotationFormatError</item> + <item>AnnotationTypeMismatchException</item> + <item>Any</item> + <item>AnyHolder</item> + <item>AnySeqHelper</item> + <item>AnySeqHelper</item> + <item>AnySeqHolder</item> + <item>AppConfigurationEntry</item> + <item>AppConfigurationEntry.LoginModuleControlFlag</item> + <item>Appendable</item> + <item>Applet</item> + <item>AppletContext</item> + <item>AppletInitializer</item> + <item>AppletStub</item> + <item>ApplicationException</item> + <item>Arc2D</item> + <item>Arc2D.Double</item> + <item>Arc2D.Float</item> + <item>Area</item> + <item>AreaAveragingScaleFilter</item> + <item>ArithmeticException</item> + <item>Array</item> + <item>Array</item> + <item>ArrayBlockingQueue</item> + <item>ArrayIndexOutOfBoundsException</item> + <item>ArrayList</item> + <item>ArrayStoreException</item> + <item>ArrayType</item> + <item>Arrays</item> + <item>AssertionError</item> + <item>AsyncBoxView</item> + <item>AsynchronousCloseException</item> + <item>AtomicBoolean</item> + <item>AtomicInteger</item> + <item>AtomicIntegerArray</item> + <item>AtomicIntegerFieldUpdater</item> + <item>AtomicLong</item> + <item>AtomicLongArray</item> + <item>AtomicLongFieldUpdater</item> + <item>AtomicMarkableReference</item> + <item>AtomicReference</item> + <item>AtomicReferenceArray</item> + <item>AtomicReferenceFieldUpdater</item> + <item>AtomicStampedReference</item> + <item>Attr</item> + <item>Attribute</item> + <item>Attribute</item> + <item>Attribute</item> + <item>AttributeChangeNotification</item> + <item>AttributeChangeNotificationFilter</item> + <item>AttributeException</item> + <item>AttributeInUseException</item> + <item>AttributeList</item> + <item>AttributeList</item> + <item>AttributeList</item> + <item>AttributeListImpl</item> + <item>AttributeModificationException</item> + <item>AttributeNotFoundException</item> + <item>AttributeSet</item> + <item>AttributeSet</item> + <item>AttributeSet.CharacterAttribute</item> + <item>AttributeSet.ColorAttribute</item> + <item>AttributeSet.FontAttribute</item> + <item>AttributeSet.ParagraphAttribute</item> + <item>AttributeSetUtilities</item> + <item>AttributeValueExp</item> + <item>AttributedCharacterIterator</item> + <item>AttributedCharacterIterator.Attribute</item> + <item>AttributedString</item> + <item>Attributes</item> + <item>Attributes</item> + <item>Attributes</item> + <item>Attributes.Name</item> + <item>Attributes2</item> + <item>Attributes2Impl</item> + <item>AttributesImpl</item> + <item>AudioClip</item> + <item>AudioFileFormat</item> + <item>AudioFileFormat.Type</item> + <item>AudioFileReader</item> + <item>AudioFileWriter</item> + <item>AudioFormat</item> + <item>AudioFormat.Encoding</item> + <item>AudioInputStream</item> + <item>AudioPermission</item> + <item>AudioSystem</item> + <item>AuthPermission</item> + <item>AuthProvider</item> + <item>AuthenticationException</item> + <item>AuthenticationException</item> + <item>AuthenticationNotSupportedException</item> + <item>Authenticator</item> + <item>Authenticator.RequestorType</item> + <item>AuthorizeCallback</item> + <item>Autoscroll</item> + <item>BAD_CONTEXT</item> + <item>BAD_INV_ORDER</item> + <item>BAD_OPERATION</item> + <item>BAD_PARAM</item> + <item>BAD_POLICY</item> + <item>BAD_POLICY_TYPE</item> + <item>BAD_POLICY_VALUE</item> + <item>BAD_QOS</item> + <item>BAD_TYPECODE</item> + <item>BMPImageWriteParam</item> + <item>BackingStoreException</item> + <item>BadAttributeValueExpException</item> + <item>BadBinaryOpValueExpException</item> + <item>BadKind</item> + <item>BadLocationException</item> + <item>BadPaddingException</item> + <item>BadStringOperationException</item> + <item>BandCombineOp</item> + <item>BandedSampleModel</item> + <item>BaseRowSet</item> + <item>BasicArrowButton</item> + <item>BasicAttribute</item> + <item>BasicAttributes</item> + <item>BasicBorders</item> + <item>BasicBorders.ButtonBorder</item> + <item>BasicBorders.FieldBorder</item> + <item>BasicBorders.MarginBorder</item> + <item>BasicBorders.MenuBarBorder</item> + <item>BasicBorders.RadioButtonBorder</item> + <item>BasicBorders.RolloverButtonBorder</item> + <item>BasicBorders.SplitPaneBorder</item> + <item>BasicBorders.ToggleButtonBorder</item> + <item>BasicButtonListener</item> + <item>BasicButtonUI</item> + <item>BasicCheckBoxMenuItemUI</item> + <item>BasicCheckBoxUI</item> + <item>BasicColorChooserUI</item> + <item>BasicComboBoxEditor</item> + <item>BasicComboBoxEditor.UIResource</item> + <item>BasicComboBoxRenderer</item> + <item>BasicComboBoxRenderer.UIResource</item> + <item>BasicComboBoxUI</item> + <item>BasicComboPopup</item> + <item>BasicControl</item> + <item>BasicDesktopIconUI</item> + <item>BasicDesktopPaneUI</item> + <item>BasicDirectoryModel</item> + <item>BasicEditorPaneUI</item> + <item>BasicFileChooserUI</item> + <item>BasicFormattedTextFieldUI</item> + <item>BasicGraphicsUtils</item> + <item>BasicHTML</item> + <item>BasicIconFactory</item> + <item>BasicInternalFrameTitlePane</item> + <item>BasicInternalFrameUI</item> + <item>BasicLabelUI</item> + <item>BasicListUI</item> + <item>BasicLookAndFeel</item> + <item>BasicMenuBarUI</item> + <item>BasicMenuItemUI</item> + <item>BasicMenuUI</item> + <item>BasicOptionPaneUI</item> + <item>BasicOptionPaneUI.ButtonAreaLayout</item> + <item>BasicPanelUI</item> + <item>BasicPasswordFieldUI</item> + <item>BasicPermission</item> + <item>BasicPopupMenuSeparatorUI</item> + <item>BasicPopupMenuUI</item> + <item>BasicProgressBarUI</item> + <item>BasicRadioButtonMenuItemUI</item> + <item>BasicRadioButtonUI</item> + <item>BasicRootPaneUI</item> + <item>BasicScrollBarUI</item> + <item>BasicScrollPaneUI</item> + <item>BasicSeparatorUI</item> + <item>BasicSliderUI</item> + <item>BasicSpinnerUI</item> + <item>BasicSplitPaneDivider</item> + <item>BasicSplitPaneUI</item> + <item>BasicStroke</item> + <item>BasicTabbedPaneUI</item> + <item>BasicTableHeaderUI</item> + <item>BasicTableUI</item> + <item>BasicTextAreaUI</item> + <item>BasicTextFieldUI</item> + <item>BasicTextPaneUI</item> + <item>BasicTextUI</item> + <item>BasicTextUI.BasicCaret</item> + <item>BasicTextUI.BasicHighlighter</item> + <item>BasicToggleButtonUI</item> + <item>BasicToolBarSeparatorUI</item> + <item>BasicToolBarUI</item> + <item>BasicToolTipUI</item> + <item>BasicTreeUI</item> + <item>BasicViewportUI</item> + <item>BatchUpdateException</item> + <item>BeanContext</item> + <item>BeanContextChild</item> + <item>BeanContextChildComponentProxy</item> + <item>BeanContextChildSupport</item> + <item>BeanContextContainerProxy</item> + <item>BeanContextEvent</item> + <item>BeanContextMembershipEvent</item> + <item>BeanContextMembershipListener</item> + <item>BeanContextProxy</item> + <item>BeanContextServiceAvailableEvent</item> + <item>BeanContextServiceProvider</item> + <item>BeanContextServiceProviderBeanInfo</item> + <item>BeanContextServiceRevokedEvent</item> + <item>BeanContextServiceRevokedListener</item> + <item>BeanContextServices</item> + <item>BeanContextServicesListener</item> + <item>BeanContextServicesSupport</item> + <item>BeanContextServicesSupport.BCSSServiceProvider</item> + <item>BeanContextSupport</item> + <item>BeanContextSupport.BCSIterator</item> + <item>BeanDescriptor</item> + <item>BeanInfo</item> + <item>Beans</item> + <item>BevelBorder</item> + <item>Bidi</item> + <item>BigDecimal</item> + <item>BigInteger</item> + <item>BinaryRefAddr</item> + <item>BindException</item> + <item>Binding</item> + <item>Binding</item> + <item>BindingHelper</item> + <item>BindingHolder</item> + <item>BindingIterator</item> + <item>BindingIteratorHelper</item> + <item>BindingIteratorHolder</item> + <item>BindingIteratorOperations</item> + <item>BindingIteratorPOA</item> + <item>BindingListHelper</item> + <item>BindingListHolder</item> + <item>BindingType</item> + <item>BindingTypeHelper</item> + <item>BindingTypeHolder</item> + <item>BitSet</item> + <item>Blob</item> + <item>BlockView</item> + <item>BlockingQueue</item> + <item>Book</item> + <item>Boolean</item> + <item>BooleanControl</item> + <item>BooleanControl.Type</item> + <item>BooleanHolder</item> + <item>BooleanSeqHelper</item> + <item>BooleanSeqHolder</item> + <item>Border</item> + <item>BorderFactory</item> + <item>BorderLayout</item> + <item>BorderUIResource</item> + <item>BorderUIResource.BevelBorderUIResource</item> + <item>BorderUIResource.CompoundBorderUIResource</item> + <item>BorderUIResource.EmptyBorderUIResource</item> + <item>BorderUIResource.EtchedBorderUIResource</item> + <item>BorderUIResource.LineBorderUIResource</item> + <item>BorderUIResource.MatteBorderUIResource</item> + <item>BorderUIResource.TitledBorderUIResource</item> + <item>BoundedRangeModel</item> + <item>Bounds</item> + <item>Bounds</item> + <item>Box</item> + <item>Box.Filler</item> + <item>BoxLayout</item> + <item>BoxView</item> + <item>BoxedValueHelper</item> + <item>BreakIterator</item> + <item>BrokenBarrierException</item> + <item>Buffer</item> + <item>BufferCapabilities</item> + <item>BufferCapabilities.FlipContents</item> + <item>BufferOverflowException</item> + <item>BufferStrategy</item> + <item>BufferUnderflowException</item> + <item>BufferedImage</item> + <item>BufferedImageFilter</item> + <item>BufferedImageOp</item> + <item>BufferedInputStream</item> + <item>BufferedOutputStream</item> + <item>BufferedReader</item> + <item>BufferedWriter</item> + <item>Button</item> + <item>ButtonGroup</item> + <item>ButtonModel</item> + <item>ButtonUI</item> + <item>Byte</item> + <item>ByteArrayInputStream</item> + <item>ByteArrayOutputStream</item> + <item>ByteBuffer</item> + <item>ByteChannel</item> + <item>ByteHolder</item> + <item>ByteLookupTable</item> + <item>ByteOrder</item> + <item>CDATASection</item> + <item>CMMException</item> + <item>CODESET_INCOMPATIBLE</item> + <item>COMM_FAILURE</item> + <item>CRC32</item> + <item>CRL</item> + <item>CRLException</item> + <item>CRLSelector</item> + <item>CSS</item> + <item>CSS.Attribute</item> + <item>CTX_RESTRICT_SCOPE</item> + <item>CacheRequest</item> + <item>CacheResponse</item> + <item>CachedRowSet</item> + <item>Calendar</item> + <item>Callable</item> + <item>CallableStatement</item> + <item>Callback</item> + <item>CallbackHandler</item> + <item>CancelablePrintJob</item> + <item>CancellationException</item> + <item>CancelledKeyException</item> + <item>CannotProceed</item> + <item>CannotProceedException</item> + <item>CannotProceedHelper</item> + <item>CannotProceedHolder</item> + <item>CannotRedoException</item> + <item>CannotUndoException</item> + <item>Canvas</item> + <item>CardLayout</item> + <item>Caret</item> + <item>CaretEvent</item> + <item>CaretListener</item> + <item>CellEditor</item> + <item>CellEditorListener</item> + <item>CellRendererPane</item> + <item>CertPath</item> + <item>CertPath.CertPathRep</item> + <item>CertPathBuilder</item> + <item>CertPathBuilderException</item> + <item>CertPathBuilderResult</item> + <item>CertPathBuilderSpi</item> + <item>CertPathParameters</item> + <item>CertPathTrustManagerParameters</item> + <item>CertPathValidator</item> + <item>CertPathValidatorException</item> + <item>CertPathValidatorResult</item> + <item>CertPathValidatorSpi</item> + <item>CertSelector</item> + <item>CertStore</item> + <item>CertStoreException</item> + <item>CertStoreParameters</item> + <item>CertStoreSpi</item> + <item>Certificate</item> + <item>Certificate</item> + <item>Certificate</item> + <item>Certificate.CertificateRep</item> + <item>CertificateEncodingException</item> + <item>CertificateEncodingException</item> + <item>CertificateException</item> + <item>CertificateException</item> + <item>CertificateExpiredException</item> + <item>CertificateExpiredException</item> + <item>CertificateFactory</item> + <item>CertificateFactorySpi</item> + <item>CertificateNotYetValidException</item> + <item>CertificateNotYetValidException</item> + <item>CertificateParsingException</item> + <item>CertificateParsingException</item> + <item>ChangeEvent</item> + <item>ChangeListener</item> + <item>ChangedCharSetException</item> + <item>Channel</item> + <item>ChannelBinding</item> + <item>Channels</item> + <item>CharArrayReader</item> + <item>CharArrayWriter</item> + <item>CharBuffer</item> + <item>CharConversionException</item> + <item>CharHolder</item> + <item>CharSeqHelper</item> + <item>CharSeqHolder</item> + <item>CharSequence</item> + <item>Character</item> + <item>Character.Subset</item> + <item>Character.UnicodeBlock</item> + <item>CharacterCodingException</item> + <item>CharacterData</item> + <item>CharacterIterator</item> + <item>Charset</item> + <item>CharsetDecoder</item> + <item>CharsetEncoder</item> + <item>CharsetProvider</item> + <item>Checkbox</item> + <item>CheckboxGroup</item> + <item>CheckboxMenuItem</item> + <item>CheckedInputStream</item> + <item>CheckedOutputStream</item> + <item>Checksum</item> + <item>Choice</item> + <item>ChoiceCallback</item> + <item>ChoiceFormat</item> + <item>Chromaticity</item> + <item>Cipher</item> + <item>CipherInputStream</item> + <item>CipherOutputStream</item> + <item>CipherSpi</item> + <item>Class</item> + <item>ClassCastException</item> + <item>ClassCircularityError</item> + <item>ClassDefinition</item> + <item>ClassDesc</item> + <item>ClassFileTransformer</item> + <item>ClassFormatError</item> + <item>ClassLoader</item> + <item>ClassLoaderRepository</item> + <item>ClassLoadingMXBean</item> + <item>ClassNotFoundException</item> + <item>ClientRequestInfo</item> + <item>ClientRequestInfoOperations</item> + <item>ClientRequestInterceptor</item> + <item>ClientRequestInterceptorOperations</item> + <item>Clip</item> + <item>Clipboard</item> + <item>ClipboardOwner</item> + <item>Clob</item> + <item>CloneNotSupportedException</item> + <item>Cloneable</item> + <item>Closeable</item> + <item>ClosedByInterruptException</item> + <item>ClosedChannelException</item> + <item>ClosedSelectorException</item> + <item>CodeSets</item> + <item>CodeSigner</item> + <item>CodeSource</item> + <item>Codec</item> + <item>CodecFactory</item> + <item>CodecFactoryHelper</item> + <item>CodecFactoryOperations</item> + <item>CodecOperations</item> + <item>CoderMalfunctionError</item> + <item>CoderResult</item> + <item>CodingErrorAction</item> + <item>CollationElementIterator</item> + <item>CollationKey</item> + <item>Collator</item> + <item>Collection</item> + <item>CollectionCertStoreParameters</item> + <item>Collections</item> + <item>Color</item> + <item>ColorChooserComponentFactory</item> + <item>ColorChooserUI</item> + <item>ColorConvertOp</item> + <item>ColorModel</item> + <item>ColorSelectionModel</item> + <item>ColorSpace</item> + <item>ColorSupported</item> + <item>ColorType</item> + <item>ColorUIResource</item> + <item>ComboBoxEditor</item> + <item>ComboBoxModel</item> + <item>ComboBoxUI</item> + <item>ComboPopup</item> + <item>Comment</item> + <item>CommunicationException</item> + <item>Comparable</item> + <item>Comparator</item> + <item>CompilationMXBean</item> + <item>Compiler</item> + <item>CompletionService</item> + <item>CompletionStatus</item> + <item>CompletionStatusHelper</item> + <item>Component</item> + <item>ComponentAdapter</item> + <item>ComponentColorModel</item> + <item>ComponentEvent</item> + <item>ComponentIdHelper</item> + <item>ComponentInputMap</item> + <item>ComponentInputMapUIResource</item> + <item>ComponentListener</item> + <item>ComponentOrientation</item> + <item>ComponentSampleModel</item> + <item>ComponentUI</item> + <item>ComponentView</item> + <item>Composite</item> + <item>CompositeContext</item> + <item>CompositeData</item> + <item>CompositeDataSupport</item> + <item>CompositeName</item> + <item>CompositeType</item> + <item>CompositeView</item> + <item>CompoundBorder</item> + <item>CompoundControl</item> + <item>CompoundControl.Type</item> + <item>CompoundEdit</item> + <item>CompoundName</item> + <item>Compression</item> + <item>ConcurrentHashMap</item> + <item>ConcurrentLinkedQueue</item> + <item>ConcurrentMap</item> + <item>ConcurrentModificationException</item> + <item>Condition</item> + <item>Configuration</item> + <item>ConfigurationException</item> + <item>ConfirmationCallback</item> + <item>ConnectException</item> + <item>ConnectException</item> + <item>ConnectIOException</item> + <item>Connection</item> + <item>ConnectionEvent</item> + <item>ConnectionEventListener</item> + <item>ConnectionPendingException</item> + <item>ConnectionPoolDataSource</item> + <item>ConsoleHandler</item> + <item>Constructor</item> + <item>Container</item> + <item>ContainerAdapter</item> + <item>ContainerEvent</item> + <item>ContainerListener</item> + <item>ContainerOrderFocusTraversalPolicy</item> + <item>ContentHandler</item> + <item>ContentHandler</item> + <item>ContentHandlerFactory</item> + <item>ContentModel</item> + <item>Context</item> + <item>Context</item> + <item>ContextList</item> + <item>ContextNotEmptyException</item> + <item>ContextualRenderedImageFactory</item> + <item>Control</item> + <item>Control</item> + <item>Control.Type</item> + <item>ControlFactory</item> + <item>ControllerEventListener</item> + <item>ConvolveOp</item> + <item>CookieHandler</item> + <item>CookieHolder</item> + <item>Copies</item> + <item>CopiesSupported</item> + <item>CopyOnWriteArrayList</item> + <item>CopyOnWriteArraySet</item> + <item>CountDownLatch</item> + <item>CounterMonitor</item> + <item>CounterMonitorMBean</item> + <item>CredentialException</item> + <item>CredentialExpiredException</item> + <item>CredentialNotFoundException</item> + <item>CropImageFilter</item> + <item>CubicCurve2D</item> + <item>CubicCurve2D.Double</item> + <item>CubicCurve2D.Float</item> + <item>Currency</item> + <item>Current</item> + <item>Current</item> + <item>Current</item> + <item>CurrentHelper</item> + <item>CurrentHelper</item> + <item>CurrentHelper</item> + <item>CurrentHolder</item> + <item>CurrentOperations</item> + <item>CurrentOperations</item> + <item>CurrentOperations</item> + <item>Cursor</item> + <item>CustomMarshal</item> + <item>CustomValue</item> + <item>Customizer</item> + <item>CyclicBarrier</item> + <item>DATA_CONVERSION</item> + <item>DESKeySpec</item> + <item>DESedeKeySpec</item> + <item>DGC</item> + <item>DHGenParameterSpec</item> + <item>DHKey</item> + <item>DHParameterSpec</item> + <item>DHPrivateKey</item> + <item>DHPrivateKeySpec</item> + <item>DHPublicKey</item> + <item>DHPublicKeySpec</item> + <item>DISCARDING</item> + <item>DOMConfiguration</item> + <item>DOMError</item> + <item>DOMErrorHandler</item> + <item>DOMException</item> + <item>DOMImplementation</item> + <item>DOMImplementationLS</item> + <item>DOMImplementationList</item> + <item>DOMImplementationRegistry</item> + <item>DOMImplementationSource</item> + <item>DOMLocator</item> + <item>DOMLocator</item> + <item>DOMResult</item> + <item>DOMSource</item> + <item>DOMStringList</item> + <item>DSAKey</item> + <item>DSAKeyPairGenerator</item> + <item>DSAParameterSpec</item> + <item>DSAParams</item> + <item>DSAPrivateKey</item> + <item>DSAPrivateKeySpec</item> + <item>DSAPublicKey</item> + <item>DSAPublicKeySpec</item> + <item>DTD</item> + <item>DTDConstants</item> + <item>DTDHandler</item> + <item>DataBuffer</item> + <item>DataBufferByte</item> + <item>DataBufferDouble</item> + <item>DataBufferFloat</item> + <item>DataBufferInt</item> + <item>DataBufferShort</item> + <item>DataBufferUShort</item> + <item>DataFlavor</item> + <item>DataFormatException</item> + <item>DataInput</item> + <item>DataInputStream</item> + <item>DataInputStream</item> + <item>DataLine</item> + <item>DataLine.Info</item> + <item>DataOutput</item> + <item>DataOutputStream</item> + <item>DataOutputStream</item> + <item>DataSource</item> + <item>DataTruncation</item> + <item>DatabaseMetaData</item> + <item>DatagramChannel</item> + <item>DatagramPacket</item> + <item>DatagramSocket</item> + <item>DatagramSocketImpl</item> + <item>DatagramSocketImplFactory</item> + <item>DatatypeConfigurationException</item> + <item>DatatypeConstants</item> + <item>DatatypeConstants.Field</item> + <item>DatatypeFactory</item> + <item>Date</item> + <item>Date</item> + <item>DateFormat</item> + <item>DateFormat.Field</item> + <item>DateFormatSymbols</item> + <item>DateFormatter</item> + <item>DateTimeAtCompleted</item> + <item>DateTimeAtCreation</item> + <item>DateTimeAtProcessing</item> + <item>DateTimeSyntax</item> + <item>DebugGraphics</item> + <item>DecimalFormat</item> + <item>DecimalFormatSymbols</item> + <item>DeclHandler</item> + <item>DefaultBoundedRangeModel</item> + <item>DefaultButtonModel</item> + <item>DefaultCaret</item> + <item>DefaultCellEditor</item> + <item>DefaultColorSelectionModel</item> + <item>DefaultComboBoxModel</item> + <item>DefaultDesktopManager</item> + <item>DefaultEditorKit</item> + <item>DefaultEditorKit.BeepAction</item> + <item>DefaultEditorKit.CopyAction</item> + <item>DefaultEditorKit.CutAction</item> + <item>DefaultEditorKit.DefaultKeyTypedAction</item> + <item>DefaultEditorKit.InsertBreakAction</item> + <item>DefaultEditorKit.InsertContentAction</item> + <item>DefaultEditorKit.InsertTabAction</item> + <item>DefaultEditorKit.PasteAction</item> + <item>DefaultFocusManager</item> + <item>DefaultFocusTraversalPolicy</item> + <item>DefaultFormatter</item> + <item>DefaultFormatterFactory</item> + <item>DefaultHandler</item> + <item>DefaultHandler2</item> + <item>DefaultHighlighter</item> + <item>DefaultHighlighter.DefaultHighlightPainter</item> + <item>DefaultKeyboardFocusManager</item> + <item>DefaultListCellRenderer</item> + <item>DefaultListCellRenderer.UIResource</item> + <item>DefaultListModel</item> + <item>DefaultListSelectionModel</item> + <item>DefaultLoaderRepository</item> + <item>DefaultLoaderRepository</item> + <item>DefaultMenuLayout</item> + <item>DefaultMetalTheme</item> + <item>DefaultMutableTreeNode</item> + <item>DefaultPersistenceDelegate</item> + <item>DefaultSingleSelectionModel</item> + <item>DefaultStyledDocument</item> + <item>DefaultStyledDocument.AttributeUndoableEdit</item> + <item>DefaultStyledDocument.ElementSpec</item> + <item>DefaultTableCellRenderer</item> + <item>DefaultTableCellRenderer.UIResource</item> + <item>DefaultTableColumnModel</item> + <item>DefaultTableModel</item> + <item>DefaultTextUI</item> + <item>DefaultTreeCellEditor</item> + <item>DefaultTreeCellRenderer</item> + <item>DefaultTreeModel</item> + <item>DefaultTreeSelectionModel</item> + <item>DefinitionKind</item> + <item>DefinitionKindHelper</item> + <item>Deflater</item> + <item>DeflaterOutputStream</item> + <item>DelayQueue</item> + <item>Delayed</item> + <item>Delegate</item> + <item>Delegate</item> + <item>Delegate</item> + <item>DelegationPermission</item> + <item>Deprecated</item> + <item>Descriptor</item> + <item>DescriptorAccess</item> + <item>DescriptorSupport</item> + <item>DesignMode</item> + <item>DesktopIconUI</item> + <item>DesktopManager</item> + <item>DesktopPaneUI</item> + <item>Destination</item> + <item>DestroyFailedException</item> + <item>Destroyable</item> + <item>Dialog</item> + <item>Dictionary</item> + <item>DigestException</item> + <item>DigestInputStream</item> + <item>DigestOutputStream</item> + <item>Dimension</item> + <item>Dimension2D</item> + <item>DimensionUIResource</item> + <item>DirContext</item> + <item>DirObjectFactory</item> + <item>DirStateFactory</item> + <item>DirStateFactory.Result</item> + <item>DirectColorModel</item> + <item>DirectoryManager</item> + <item>DisplayMode</item> + <item>DnDConstants</item> + <item>Doc</item> + <item>DocAttribute</item> + <item>DocAttributeSet</item> + <item>DocFlavor</item> + <item>DocFlavor.BYTE_ARRAY</item> + <item>DocFlavor.CHAR_ARRAY</item> + <item>DocFlavor.INPUT_STREAM</item> + <item>DocFlavor.READER</item> + <item>DocFlavor.SERVICE_FORMATTED</item> + <item>DocFlavor.STRING</item> + <item>DocFlavor.URL</item> + <item>DocPrintJob</item> + <item>Document</item> + <item>Document</item> + <item>DocumentBuilder</item> + <item>DocumentBuilderFactory</item> + <item>DocumentEvent</item> + <item>DocumentEvent.ElementChange</item> + <item>DocumentEvent.EventType</item> + <item>DocumentFilter</item> + <item>DocumentFilter.FilterBypass</item> + <item>DocumentFragment</item> + <item>DocumentHandler</item> + <item>DocumentListener</item> + <item>DocumentName</item> + <item>DocumentParser</item> + <item>DocumentType</item> + <item>Documented</item> + <item>DomainCombiner</item> + <item>DomainManager</item> + <item>DomainManagerOperations</item> + <item>Double</item> + <item>DoubleBuffer</item> + <item>DoubleHolder</item> + <item>DoubleSeqHelper</item> + <item>DoubleSeqHolder</item> + <item>DragGestureEvent</item> + <item>DragGestureListener</item> + <item>DragGestureRecognizer</item> + <item>DragSource</item> + <item>DragSourceAdapter</item> + <item>DragSourceContext</item> + <item>DragSourceDragEvent</item> + <item>DragSourceDropEvent</item> + <item>DragSourceEvent</item> + <item>DragSourceListener</item> + <item>DragSourceMotionListener</item> + <item>Driver</item> + <item>DriverManager</item> + <item>DriverPropertyInfo</item> + <item>DropTarget</item> + <item>DropTarget.DropTargetAutoScroller</item> + <item>DropTargetAdapter</item> + <item>DropTargetContext</item> + <item>DropTargetDragEvent</item> + <item>DropTargetDropEvent</item> + <item>DropTargetEvent</item> + <item>DropTargetListener</item> + <item>DuplicateFormatFlagsException</item> + <item>DuplicateName</item> + <item>DuplicateNameHelper</item> + <item>Duration</item> + <item>DynAny</item> + <item>DynAny</item> + <item>DynAnyFactory</item> + <item>DynAnyFactoryHelper</item> + <item>DynAnyFactoryOperations</item> + <item>DynAnyHelper</item> + <item>DynAnyOperations</item> + <item>DynAnySeqHelper</item> + <item>DynArray</item> + <item>DynArray</item> + <item>DynArrayHelper</item> + <item>DynArrayOperations</item> + <item>DynEnum</item> + <item>DynEnum</item> + <item>DynEnumHelper</item> + <item>DynEnumOperations</item> + <item>DynFixed</item> + <item>DynFixed</item> + <item>DynFixedHelper</item> + <item>DynFixedOperations</item> + <item>DynSequence</item> + <item>DynSequence</item> + <item>DynSequenceHelper</item> + <item>DynSequenceOperations</item> + <item>DynStruct</item> + <item>DynStruct</item> + <item>DynStructHelper</item> + <item>DynStructOperations</item> + <item>DynUnion</item> + <item>DynUnion</item> + <item>DynUnionHelper</item> + <item>DynUnionOperations</item> + <item>DynValue</item> + <item>DynValue</item> + <item>DynValueBox</item> + <item>DynValueBoxOperations</item> + <item>DynValueCommon</item> + <item>DynValueCommonOperations</item> + <item>DynValueHelper</item> + <item>DynValueOperations</item> + <item>DynamicImplementation</item> + <item>DynamicImplementation</item> + <item>DynamicMBean</item> + <item>ECField</item> + <item>ECFieldF2m</item> + <item>ECFieldFp</item> + <item>ECGenParameterSpec</item> + <item>ECKey</item> + <item>ECParameterSpec</item> + <item>ECPoint</item> + <item>ECPrivateKey</item> + <item>ECPrivateKeySpec</item> + <item>ECPublicKey</item> + <item>ECPublicKeySpec</item> + <item>ENCODING_CDR_ENCAPS</item> + <item>EOFException</item> + <item>EditorKit</item> + <item>Element</item> + <item>Element</item> + <item>Element</item> + <item>ElementIterator</item> + <item>ElementType</item> + <item>Ellipse2D</item> + <item>Ellipse2D.Double</item> + <item>Ellipse2D.Float</item> + <item>EllipticCurve</item> + <item>EmptyBorder</item> + <item>EmptyStackException</item> + <item>EncodedKeySpec</item> + <item>Encoder</item> + <item>Encoding</item> + <item>EncryptedPrivateKeyInfo</item> + <item>Entity</item> + <item>Entity</item> + <item>EntityReference</item> + <item>EntityResolver</item> + <item>EntityResolver2</item> + <item>Enum</item> + <item>EnumConstantNotPresentException</item> + <item>EnumControl</item> + <item>EnumControl.Type</item> + <item>EnumMap</item> + <item>EnumSet</item> + <item>EnumSyntax</item> + <item>Enumeration</item> + <item>Environment</item> + <item>Error</item> + <item>ErrorHandler</item> + <item>ErrorListener</item> + <item>ErrorManager</item> + <item>EtchedBorder</item> + <item>Event</item> + <item>EventContext</item> + <item>EventDirContext</item> + <item>EventHandler</item> + <item>EventListener</item> + <item>EventListenerList</item> + <item>EventListenerProxy</item> + <item>EventObject</item> + <item>EventQueue</item> + <item>EventSetDescriptor</item> + <item>Exception</item> + <item>ExceptionDetailMessage</item> + <item>ExceptionInInitializerError</item> + <item>ExceptionList</item> + <item>ExceptionListener</item> + <item>Exchanger</item> + <item>ExecutionException</item> + <item>Executor</item> + <item>ExecutorCompletionService</item> + <item>ExecutorService</item> + <item>Executors</item> + <item>ExemptionMechanism</item> + <item>ExemptionMechanismException</item> + <item>ExemptionMechanismSpi</item> + <item>ExpandVetoException</item> + <item>ExportException</item> + <item>Expression</item> + <item>ExtendedRequest</item> + <item>ExtendedResponse</item> + <item>Externalizable</item> + <item>FREE_MEM</item> + <item>FactoryConfigurationError</item> + <item>FailedLoginException</item> + <item>FeatureDescriptor</item> + <item>Fidelity</item> + <item>Field</item> + <item>FieldNameHelper</item> + <item>FieldNameHelper</item> + <item>FieldPosition</item> + <item>FieldView</item> + <item>File</item> + <item>FileCacheImageInputStream</item> + <item>FileCacheImageOutputStream</item> + <item>FileChannel</item> + <item>FileChannel.MapMode</item> + <item>FileChooserUI</item> + <item>FileDescriptor</item> + <item>FileDialog</item> + <item>FileFilter</item> + <item>FileFilter</item> + <item>FileHandler</item> + <item>FileImageInputStream</item> + <item>FileImageOutputStream</item> + <item>FileInputStream</item> + <item>FileLock</item> + <item>FileLockInterruptionException</item> + <item>FileNameMap</item> + <item>FileNotFoundException</item> + <item>FileOutputStream</item> + <item>FilePermission</item> + <item>FileReader</item> + <item>FileSystemView</item> + <item>FileView</item> + <item>FileWriter</item> + <item>FilenameFilter</item> + <item>Filter</item> + <item>FilterInputStream</item> + <item>FilterOutputStream</item> + <item>FilterReader</item> + <item>FilterWriter</item> + <item>FilteredImageSource</item> + <item>FilteredRowSet</item> + <item>Finishings</item> + <item>FixedHeightLayoutCache</item> + <item>FixedHolder</item> + <item>FlatteningPathIterator</item> + <item>FlavorEvent</item> + <item>FlavorException</item> + <item>FlavorListener</item> + <item>FlavorMap</item> + <item>FlavorTable</item> + <item>Float</item> + <item>FloatBuffer</item> + <item>FloatControl</item> + <item>FloatControl.Type</item> + <item>FloatHolder</item> + <item>FloatSeqHelper</item> + <item>FloatSeqHolder</item> + <item>FlowLayout</item> + <item>FlowView</item> + <item>FlowView.FlowStrategy</item> + <item>Flushable</item> + <item>FocusAdapter</item> + <item>FocusEvent</item> + <item>FocusListener</item> + <item>FocusManager</item> + <item>FocusTraversalPolicy</item> + <item>Font</item> + <item>FontFormatException</item> + <item>FontMetrics</item> + <item>FontRenderContext</item> + <item>FontUIResource</item> + <item>FormSubmitEvent</item> + <item>FormSubmitEvent.MethodType</item> + <item>FormView</item> + <item>Format</item> + <item>Format.Field</item> + <item>FormatConversionProvider</item> + <item>FormatFlagsConversionMismatchException</item> + <item>FormatMismatch</item> + <item>FormatMismatchHelper</item> + <item>Formattable</item> + <item>FormattableFlags</item> + <item>Formatter</item> + <item>Formatter</item> + <item>FormatterClosedException</item> + <item>ForwardRequest</item> + <item>ForwardRequest</item> + <item>ForwardRequestHelper</item> + <item>ForwardRequestHelper</item> + <item>Frame</item> + <item>Future</item> + <item>FutureTask</item> + <item>GSSContext</item> + <item>GSSCredential</item> + <item>GSSException</item> + <item>GSSManager</item> + <item>GSSName</item> + <item>GZIPInputStream</item> + <item>GZIPOutputStream</item> + <item>GapContent</item> + <item>GarbageCollectorMXBean</item> + <item>GatheringByteChannel</item> + <item>GaugeMonitor</item> + <item>GaugeMonitorMBean</item> + <item>GeneralPath</item> + <item>GeneralSecurityException</item> + <item>GenericArrayType</item> + <item>GenericDeclaration</item> + <item>GenericSignatureFormatError</item> + <item>GlyphJustificationInfo</item> + <item>GlyphMetrics</item> + <item>GlyphVector</item> + <item>GlyphView</item> + <item>GlyphView.GlyphPainter</item> + <item>GradientPaint</item> + <item>GraphicAttribute</item> + <item>Graphics</item> + <item>Graphics2D</item> + <item>GraphicsConfigTemplate</item> + <item>GraphicsConfiguration</item> + <item>GraphicsDevice</item> + <item>GraphicsEnvironment</item> + <item>GrayFilter</item> + <item>GregorianCalendar</item> + <item>GridBagConstraints</item> + <item>GridBagLayout</item> + <item>GridLayout</item> + <item>Group</item> + <item>Guard</item> + <item>GuardedObject</item> + <item>HOLDING</item> + <item>HTML</item> + <item>HTML.Attribute</item> + <item>HTML.Tag</item> + <item>HTML.UnknownTag</item> + <item>HTMLDocument</item> + <item>HTMLDocument.Iterator</item> + <item>HTMLEditorKit</item> + <item>HTMLEditorKit.HTMLFactory</item> + <item>HTMLEditorKit.HTMLTextAction</item> + <item>HTMLEditorKit.InsertHTMLTextAction</item> + <item>HTMLEditorKit.LinkController</item> + <item>HTMLEditorKit.Parser</item> + <item>HTMLEditorKit.ParserCallback</item> + <item>HTMLFrameHyperlinkEvent</item> + <item>HTMLWriter</item> + <item>Handler</item> + <item>HandlerBase</item> + <item>HandshakeCompletedEvent</item> + <item>HandshakeCompletedListener</item> + <item>HasControls</item> + <item>HashAttributeSet</item> + <item>HashDocAttributeSet</item> + <item>HashMap</item> + <item>HashPrintJobAttributeSet</item> + <item>HashPrintRequestAttributeSet</item> + <item>HashPrintServiceAttributeSet</item> + <item>HashSet</item> + <item>Hashtable</item> + <item>HeadlessException</item> + <item>HierarchyBoundsAdapter</item> + <item>HierarchyBoundsListener</item> + <item>HierarchyEvent</item> + <item>HierarchyListener</item> + <item>Highlighter</item> + <item>Highlighter.Highlight</item> + <item>Highlighter.HighlightPainter</item> + <item>HostnameVerifier</item> + <item>HttpRetryException</item> + <item>HttpURLConnection</item> + <item>HttpsURLConnection</item> + <item>HyperlinkEvent</item> + <item>HyperlinkEvent.EventType</item> + <item>HyperlinkListener</item> + <item>ICC_ColorSpace</item> + <item>ICC_Profile</item> + <item>ICC_ProfileGray</item> + <item>ICC_ProfileRGB</item> + <item>IDLEntity</item> + <item>IDLType</item> + <item>IDLTypeHelper</item> + <item>IDLTypeOperations</item> + <item>ID_ASSIGNMENT_POLICY_ID</item> + <item>ID_UNIQUENESS_POLICY_ID</item> + <item>IIOByteBuffer</item> + <item>IIOException</item> + <item>IIOImage</item> + <item>IIOInvalidTreeException</item> + <item>IIOMetadata</item> + <item>IIOMetadataController</item> + <item>IIOMetadataFormat</item> + <item>IIOMetadataFormatImpl</item> + <item>IIOMetadataNode</item> + <item>IIOParam</item> + <item>IIOParamController</item> + <item>IIOReadProgressListener</item> + <item>IIOReadUpdateListener</item> + <item>IIOReadWarningListener</item> + <item>IIORegistry</item> + <item>IIOServiceProvider</item> + <item>IIOWriteProgressListener</item> + <item>IIOWriteWarningListener</item> + <item>IMPLICIT_ACTIVATION_POLICY_ID</item> + <item>IMP_LIMIT</item> + <item>INACTIVE</item> + <item>INITIALIZE</item> + <item>INTERNAL</item> + <item>INTF_REPOS</item> + <item>INVALID_ACTIVITY</item> + <item>INVALID_TRANSACTION</item> + <item>INV_FLAG</item> + <item>INV_IDENT</item> + <item>INV_OBJREF</item> + <item>INV_POLICY</item> + <item>IOException</item> + <item>IOR</item> + <item>IORHelper</item> + <item>IORHolder</item> + <item>IORInfo</item> + <item>IORInfoOperations</item> + <item>IORInterceptor</item> + <item>IORInterceptorOperations</item> + <item>IORInterceptor_3_0</item> + <item>IORInterceptor_3_0Helper</item> + <item>IORInterceptor_3_0Holder</item> + <item>IORInterceptor_3_0Operations</item> + <item>IRObject</item> + <item>IRObjectOperations</item> + <item>Icon</item> + <item>IconUIResource</item> + <item>IconView</item> + <item>IdAssignmentPolicy</item> + <item>IdAssignmentPolicyOperations</item> + <item>IdAssignmentPolicyValue</item> + <item>IdUniquenessPolicy</item> + <item>IdUniquenessPolicyOperations</item> + <item>IdUniquenessPolicyValue</item> + <item>IdentifierHelper</item> + <item>Identity</item> + <item>IdentityHashMap</item> + <item>IdentityScope</item> + <item>IllegalAccessError</item> + <item>IllegalAccessException</item> + <item>IllegalArgumentException</item> + <item>IllegalBlockSizeException</item> + <item>IllegalBlockingModeException</item> + <item>IllegalCharsetNameException</item> + <item>IllegalClassFormatException</item> + <item>IllegalComponentStateException</item> + <item>IllegalFormatCodePointException</item> + <item>IllegalFormatConversionException</item> + <item>IllegalFormatException</item> + <item>IllegalFormatFlagsException</item> + <item>IllegalFormatPrecisionException</item> + <item>IllegalFormatWidthException</item> + <item>IllegalMonitorStateException</item> + <item>IllegalPathStateException</item> + <item>IllegalSelectorException</item> + <item>IllegalStateException</item> + <item>IllegalThreadStateException</item> + <item>Image</item> + <item>ImageCapabilities</item> + <item>ImageConsumer</item> + <item>ImageFilter</item> + <item>ImageGraphicAttribute</item> + <item>ImageIO</item> + <item>ImageIcon</item> + <item>ImageInputStream</item> + <item>ImageInputStreamImpl</item> + <item>ImageInputStreamSpi</item> + <item>ImageObserver</item> + <item>ImageOutputStream</item> + <item>ImageOutputStreamImpl</item> + <item>ImageOutputStreamSpi</item> + <item>ImageProducer</item> + <item>ImageReadParam</item> + <item>ImageReader</item> + <item>ImageReaderSpi</item> + <item>ImageReaderWriterSpi</item> + <item>ImageTranscoder</item> + <item>ImageTranscoderSpi</item> + <item>ImageTypeSpecifier</item> + <item>ImageView</item> + <item>ImageWriteParam</item> + <item>ImageWriter</item> + <item>ImageWriterSpi</item> + <item>ImagingOpException</item> + <item>ImplicitActivationPolicy</item> + <item>ImplicitActivationPolicyOperations</item> + <item>ImplicitActivationPolicyValue</item> + <item>IncompatibleClassChangeError</item> + <item>IncompleteAnnotationException</item> + <item>InconsistentTypeCode</item> + <item>InconsistentTypeCode</item> + <item>InconsistentTypeCodeHelper</item> + <item>IndexColorModel</item> + <item>IndexOutOfBoundsException</item> + <item>IndexedPropertyChangeEvent</item> + <item>IndexedPropertyDescriptor</item> + <item>IndirectionException</item> + <item>Inet4Address</item> + <item>Inet6Address</item> + <item>InetAddress</item> + <item>InetSocketAddress</item> + <item>Inflater</item> + <item>InflaterInputStream</item> + <item>InheritableThreadLocal</item> + <item>Inherited</item> + <item>InitialContext</item> + <item>InitialContextFactory</item> + <item>InitialContextFactoryBuilder</item> + <item>InitialDirContext</item> + <item>InitialLdapContext</item> + <item>InlineView</item> + <item>InputContext</item> + <item>InputEvent</item> + <item>InputMap</item> + <item>InputMapUIResource</item> + <item>InputMethod</item> + <item>InputMethodContext</item> + <item>InputMethodDescriptor</item> + <item>InputMethodEvent</item> + <item>InputMethodHighlight</item> + <item>InputMethodListener</item> + <item>InputMethodRequests</item> + <item>InputMismatchException</item> + <item>InputSource</item> + <item>InputStream</item> + <item>InputStream</item> + <item>InputStream</item> + <item>InputStreamReader</item> + <item>InputSubset</item> + <item>InputVerifier</item> + <item>Insets</item> + <item>InsetsUIResource</item> + <item>InstanceAlreadyExistsException</item> + <item>InstanceNotFoundException</item> + <item>InstantiationError</item> + <item>InstantiationException</item> + <item>Instrument</item> + <item>Instrumentation</item> + <item>InsufficientResourcesException</item> + <item>IntBuffer</item> + <item>IntHolder</item> + <item>Integer</item> + <item>IntegerSyntax</item> + <item>Interceptor</item> + <item>InterceptorOperations</item> + <item>InternalError</item> + <item>InternalFrameAdapter</item> + <item>InternalFrameEvent</item> + <item>InternalFrameFocusTraversalPolicy</item> + <item>InternalFrameListener</item> + <item>InternalFrameUI</item> + <item>InternationalFormatter</item> + <item>InterruptedException</item> + <item>InterruptedIOException</item> + <item>InterruptedNamingException</item> + <item>InterruptibleChannel</item> + <item>IntrospectionException</item> + <item>IntrospectionException</item> + <item>Introspector</item> + <item>Invalid</item> + <item>InvalidActivityException</item> + <item>InvalidAddress</item> + <item>InvalidAddressHelper</item> + <item>InvalidAddressHolder</item> + <item>InvalidAlgorithmParameterException</item> + <item>InvalidApplicationException</item> + <item>InvalidAttributeIdentifierException</item> + <item>InvalidAttributeValueException</item> + <item>InvalidAttributeValueException</item> + <item>InvalidAttributesException</item> + <item>InvalidClassException</item> + <item>InvalidDnDOperationException</item> + <item>InvalidKeyException</item> + <item>InvalidKeyException</item> + <item>InvalidKeySpecException</item> + <item>InvalidMarkException</item> + <item>InvalidMidiDataException</item> + <item>InvalidName</item> + <item>InvalidName</item> + <item>InvalidName</item> + <item>InvalidNameException</item> + <item>InvalidNameHelper</item> + <item>InvalidNameHelper</item> + <item>InvalidNameHolder</item> + <item>InvalidObjectException</item> + <item>InvalidOpenTypeException</item> + <item>InvalidParameterException</item> + <item>InvalidParameterSpecException</item> + <item>InvalidPolicy</item> + <item>InvalidPolicyHelper</item> + <item>InvalidPreferencesFormatException</item> + <item>InvalidPropertiesFormatException</item> + <item>InvalidRelationIdException</item> + <item>InvalidRelationServiceException</item> + <item>InvalidRelationTypeException</item> + <item>InvalidRoleInfoException</item> + <item>InvalidRoleValueException</item> + <item>InvalidSearchControlsException</item> + <item>InvalidSearchFilterException</item> + <item>InvalidSeq</item> + <item>InvalidSlot</item> + <item>InvalidSlotHelper</item> + <item>InvalidTargetObjectTypeException</item> + <item>InvalidTransactionException</item> + <item>InvalidTypeForEncoding</item> + <item>InvalidTypeForEncodingHelper</item> + <item>InvalidValue</item> + <item>InvalidValue</item> + <item>InvalidValueHelper</item> + <item>InvocationEvent</item> + <item>InvocationHandler</item> + <item>InvocationTargetException</item> + <item>InvokeHandler</item> + <item>IstringHelper</item> + <item>ItemEvent</item> + <item>ItemListener</item> + <item>ItemSelectable</item> + <item>Iterable</item> + <item>Iterator</item> + <item>IvParameterSpec</item> + <item>JApplet</item> + <item>JButton</item> + <item>JCheckBox</item> + <item>JCheckBoxMenuItem</item> + <item>JColorChooser</item> + <item>JComboBox</item> + <item>JComboBox.KeySelectionManager</item> + <item>JComponent</item> + <item>JDesktopPane</item> + <item>JDialog</item> + <item>JEditorPane</item> + <item>JFileChooser</item> + <item>JFormattedTextField</item> + <item>JFormattedTextField.AbstractFormatter</item> + <item>JFormattedTextField.AbstractFormatterFactory</item> + <item>JFrame</item> + <item>JInternalFrame</item> + <item>JInternalFrame.JDesktopIcon</item> + <item>JLabel</item> + <item>JLayeredPane</item> + <item>JList</item> + <item>JMException</item> + <item>JMRuntimeException</item> + <item>JMXAuthenticator</item> + <item>JMXConnectionNotification</item> + <item>JMXConnector</item> + <item>JMXConnectorFactory</item> + <item>JMXConnectorProvider</item> + <item>JMXConnectorServer</item> + <item>JMXConnectorServerFactory</item> + <item>JMXConnectorServerMBean</item> + <item>JMXConnectorServerProvider</item> + <item>JMXPrincipal</item> + <item>JMXProviderException</item> + <item>JMXServerErrorException</item> + <item>JMXServiceURL</item> + <item>JMenu</item> + <item>JMenuBar</item> + <item>JMenuItem</item> + <item>JOptionPane</item> + <item>JPEGHuffmanTable</item> + <item>JPEGImageReadParam</item> + <item>JPEGImageWriteParam</item> + <item>JPEGQTable</item> + <item>JPanel</item> + <item>JPasswordField</item> + <item>JPopupMenu</item> + <item>JPopupMenu.Separator</item> + <item>JProgressBar</item> + <item>JRadioButton</item> + <item>JRadioButtonMenuItem</item> + <item>JRootPane</item> + <item>JScrollBar</item> + <item>JScrollPane</item> + <item>JSeparator</item> + <item>JSlider</item> + <item>JSpinner</item> + <item>JSpinner.DateEditor</item> + <item>JSpinner.DefaultEditor</item> + <item>JSpinner.ListEditor</item> + <item>JSpinner.NumberEditor</item> + <item>JSplitPane</item> + <item>JTabbedPane</item> + <item>JTable</item> + <item>JTable.PrintMode</item> + <item>JTableHeader</item> + <item>JTextArea</item> + <item>JTextComponent</item> + <item>JTextComponent.KeyBinding</item> + <item>JTextField</item> + <item>JTextPane</item> + <item>JToggleButton</item> + <item>JToggleButton.ToggleButtonModel</item> + <item>JToolBar</item> + <item>JToolBar.Separator</item> + <item>JToolTip</item> + <item>JTree</item> + <item>JTree.DynamicUtilTreeNode</item> + <item>JTree.EmptySelectionModel</item> + <item>JViewport</item> + <item>JWindow</item> + <item>JarEntry</item> + <item>JarException</item> + <item>JarFile</item> + <item>JarInputStream</item> + <item>JarOutputStream</item> + <item>JarURLConnection</item> + <item>JdbcRowSet</item> + <item>JobAttributes</item> + <item>JobAttributes.DefaultSelectionType</item> + <item>JobAttributes.DestinationType</item> + <item>JobAttributes.DialogType</item> + <item>JobAttributes.MultipleDocumentHandlingType</item> + <item>JobAttributes.SidesType</item> + <item>JobHoldUntil</item> + <item>JobImpressions</item> + <item>JobImpressionsCompleted</item> + <item>JobImpressionsSupported</item> + <item>JobKOctets</item> + <item>JobKOctetsProcessed</item> + <item>JobKOctetsSupported</item> + <item>JobMediaSheets</item> + <item>JobMediaSheetsCompleted</item> + <item>JobMediaSheetsSupported</item> + <item>JobMessageFromOperator</item> + <item>JobName</item> + <item>JobOriginatingUserName</item> + <item>JobPriority</item> + <item>JobPrioritySupported</item> + <item>JobSheets</item> + <item>JobState</item> + <item>JobStateReason</item> + <item>JobStateReasons</item> + <item>JoinRowSet</item> + <item>Joinable</item> + <item>KerberosKey</item> + <item>KerberosPrincipal</item> + <item>KerberosTicket</item> + <item>Kernel</item> + <item>Key</item> + <item>KeyAdapter</item> + <item>KeyAgreement</item> + <item>KeyAgreementSpi</item> + <item>KeyAlreadyExistsException</item> + <item>KeyEvent</item> + <item>KeyEventDispatcher</item> + <item>KeyEventPostProcessor</item> + <item>KeyException</item> + <item>KeyFactory</item> + <item>KeyFactorySpi</item> + <item>KeyGenerator</item> + <item>KeyGeneratorSpi</item> + <item>KeyListener</item> + <item>KeyManagementException</item> + <item>KeyManager</item> + <item>KeyManagerFactory</item> + <item>KeyManagerFactorySpi</item> + <item>KeyPair</item> + <item>KeyPairGenerator</item> + <item>KeyPairGeneratorSpi</item> + <item>KeyRep</item> + <item>KeyRep.Type</item> + <item>KeySpec</item> + <item>KeyStore</item> + <item>KeyStore.Builder</item> + <item>KeyStore.CallbackHandlerProtection</item> + <item>KeyStore.Entry</item> + <item>KeyStore.LoadStoreParameter</item> + <item>KeyStore.PasswordProtection</item> + <item>KeyStore.PrivateKeyEntry</item> + <item>KeyStore.ProtectionParameter</item> + <item>KeyStore.SecretKeyEntry</item> + <item>KeyStore.TrustedCertificateEntry</item> + <item>KeyStoreBuilderParameters</item> + <item>KeyStoreException</item> + <item>KeyStoreSpi</item> + <item>KeyStroke</item> + <item>KeyboardFocusManager</item> + <item>Keymap</item> + <item>LDAPCertStoreParameters</item> + <item>LIFESPAN_POLICY_ID</item> + <item>LOCATION_FORWARD</item> + <item>LSException</item> + <item>LSInput</item> + <item>LSLoadEvent</item> + <item>LSOutput</item> + <item>LSParser</item> + <item>LSParserFilter</item> + <item>LSProgressEvent</item> + <item>LSResourceResolver</item> + <item>LSSerializer</item> + <item>LSSerializerFilter</item> + <item>Label</item> + <item>LabelUI</item> + <item>LabelView</item> + <item>LanguageCallback</item> + <item>LastOwnerException</item> + <item>LayeredHighlighter</item> + <item>LayeredHighlighter.LayerPainter</item> + <item>LayoutFocusTraversalPolicy</item> + <item>LayoutManager</item> + <item>LayoutManager2</item> + <item>LayoutQueue</item> + <item>LdapContext</item> + <item>LdapName</item> + <item>LdapReferralException</item> + <item>Lease</item> + <item>Level</item> + <item>LexicalHandler</item> + <item>LifespanPolicy</item> + <item>LifespanPolicyOperations</item> + <item>LifespanPolicyValue</item> + <item>LimitExceededException</item> + <item>Line</item> + <item>Line.Info</item> + <item>Line2D</item> + <item>Line2D.Double</item> + <item>Line2D.Float</item> + <item>LineBorder</item> + <item>LineBreakMeasurer</item> + <item>LineEvent</item> + <item>LineEvent.Type</item> + <item>LineListener</item> + <item>LineMetrics</item> + <item>LineNumberInputStream</item> + <item>LineNumberReader</item> + <item>LineUnavailableException</item> + <item>LinkException</item> + <item>LinkLoopException</item> + <item>LinkRef</item> + <item>LinkageError</item> + <item>LinkedBlockingQueue</item> + <item>LinkedHashMap</item> + <item>LinkedHashSet</item> + <item>LinkedList</item> + <item>List</item> + <item>List</item> + <item>ListCellRenderer</item> + <item>ListDataEvent</item> + <item>ListDataListener</item> + <item>ListIterator</item> + <item>ListModel</item> + <item>ListResourceBundle</item> + <item>ListSelectionEvent</item> + <item>ListSelectionListener</item> + <item>ListSelectionModel</item> + <item>ListUI</item> + <item>ListView</item> + <item>ListenerNotFoundException</item> + <item>LoaderHandler</item> + <item>LocalObject</item> + <item>Locale</item> + <item>LocateRegistry</item> + <item>Locator</item> + <item>Locator2</item> + <item>Locator2Impl</item> + <item>LocatorImpl</item> + <item>Lock</item> + <item>LockSupport</item> + <item>LogManager</item> + <item>LogRecord</item> + <item>LogStream</item> + <item>Logger</item> + <item>LoggingMXBean</item> + <item>LoggingPermission</item> + <item>LoginContext</item> + <item>LoginException</item> + <item>LoginModule</item> + <item>Long</item> + <item>LongBuffer</item> + <item>LongHolder</item> + <item>LongLongSeqHelper</item> + <item>LongLongSeqHolder</item> + <item>LongSeqHelper</item> + <item>LongSeqHolder</item> + <item>LookAndFeel</item> + <item>LookupOp</item> + <item>LookupTable</item> + <item>MARSHAL</item> + <item>MBeanAttributeInfo</item> + <item>MBeanConstructorInfo</item> + <item>MBeanException</item> + <item>MBeanFeatureInfo</item> + <item>MBeanInfo</item> + <item>MBeanNotificationInfo</item> + <item>MBeanOperationInfo</item> + <item>MBeanParameterInfo</item> + <item>MBeanPermission</item> + <item>MBeanRegistration</item> + <item>MBeanRegistrationException</item> + <item>MBeanServer</item> + <item>MBeanServerBuilder</item> + <item>MBeanServerConnection</item> + <item>MBeanServerDelegate</item> + <item>MBeanServerDelegateMBean</item> + <item>MBeanServerFactory</item> + <item>MBeanServerForwarder</item> + <item>MBeanServerInvocationHandler</item> + <item>MBeanServerNotification</item> + <item>MBeanServerNotificationFilter</item> + <item>MBeanServerPermission</item> + <item>MBeanTrustPermission</item> + <item>MGF1ParameterSpec</item> + <item>MLet</item> + <item>MLetMBean</item> + <item>Mac</item> + <item>MacSpi</item> + <item>MalformedInputException</item> + <item>MalformedLinkException</item> + <item>MalformedObjectNameException</item> + <item>MalformedParameterizedTypeException</item> + <item>MalformedURLException</item> + <item>ManageReferralControl</item> + <item>ManagementFactory</item> + <item>ManagementPermission</item> + <item>ManagerFactoryParameters</item> + <item>Manifest</item> + <item>Map</item> + <item>Map.Entry</item> + <item>MappedByteBuffer</item> + <item>MarshalException</item> + <item>MarshalledObject</item> + <item>MaskFormatter</item> + <item>MatchResult</item> + <item>Matcher</item> + <item>Math</item> + <item>MathContext</item> + <item>MatteBorder</item> + <item>Media</item> + <item>MediaName</item> + <item>MediaPrintableArea</item> + <item>MediaSize</item> + <item>MediaSize.Engineering</item> + <item>MediaSize.ISO</item> + <item>MediaSize.JIS</item> + <item>MediaSize.NA</item> + <item>MediaSize.Other</item> + <item>MediaSizeName</item> + <item>MediaTracker</item> + <item>MediaTray</item> + <item>Member</item> + <item>MemoryCacheImageInputStream</item> + <item>MemoryCacheImageOutputStream</item> + <item>MemoryHandler</item> + <item>MemoryImageSource</item> + <item>MemoryMXBean</item> + <item>MemoryManagerMXBean</item> + <item>MemoryNotificationInfo</item> + <item>MemoryPoolMXBean</item> + <item>MemoryType</item> + <item>MemoryUsage</item> + <item>Menu</item> + <item>MenuBar</item> + <item>MenuBarUI</item> + <item>MenuComponent</item> + <item>MenuContainer</item> + <item>MenuDragMouseEvent</item> + <item>MenuDragMouseListener</item> + <item>MenuElement</item> + <item>MenuEvent</item> + <item>MenuItem</item> + <item>MenuItemUI</item> + <item>MenuKeyEvent</item> + <item>MenuKeyListener</item> + <item>MenuListener</item> + <item>MenuSelectionManager</item> + <item>MenuShortcut</item> + <item>MessageDigest</item> + <item>MessageDigestSpi</item> + <item>MessageFormat</item> + <item>MessageFormat.Field</item> + <item>MessageProp</item> + <item>MetaEventListener</item> + <item>MetaMessage</item> + <item>MetalBorders</item> + <item>MetalBorders.ButtonBorder</item> + <item>MetalBorders.Flush3DBorder</item> + <item>MetalBorders.InternalFrameBorder</item> + <item>MetalBorders.MenuBarBorder</item> + <item>MetalBorders.MenuItemBorder</item> + <item>MetalBorders.OptionDialogBorder</item> + <item>MetalBorders.PaletteBorder</item> + <item>MetalBorders.PopupMenuBorder</item> + <item>MetalBorders.RolloverButtonBorder</item> + <item>MetalBorders.ScrollPaneBorder</item> + <item>MetalBorders.TableHeaderBorder</item> + <item>MetalBorders.TextFieldBorder</item> + <item>MetalBorders.ToggleButtonBorder</item> + <item>MetalBorders.ToolBarBorder</item> + <item>MetalButtonUI</item> + <item>MetalCheckBoxIcon</item> + <item>MetalCheckBoxUI</item> + <item>MetalComboBoxButton</item> + <item>MetalComboBoxEditor</item> + <item>MetalComboBoxEditor.UIResource</item> + <item>MetalComboBoxIcon</item> + <item>MetalComboBoxUI</item> + <item>MetalDesktopIconUI</item> + <item>MetalFileChooserUI</item> + <item>MetalIconFactory</item> + <item>MetalIconFactory.FileIcon16</item> + <item>MetalIconFactory.FolderIcon16</item> + <item>MetalIconFactory.PaletteCloseIcon</item> + <item>MetalIconFactory.TreeControlIcon</item> + <item>MetalIconFactory.TreeFolderIcon</item> + <item>MetalIconFactory.TreeLeafIcon</item> + <item>MetalInternalFrameTitlePane</item> + <item>MetalInternalFrameUI</item> + <item>MetalLabelUI</item> + <item>MetalLookAndFeel</item> + <item>MetalMenuBarUI</item> + <item>MetalPopupMenuSeparatorUI</item> + <item>MetalProgressBarUI</item> + <item>MetalRadioButtonUI</item> + <item>MetalRootPaneUI</item> + <item>MetalScrollBarUI</item> + <item>MetalScrollButton</item> + <item>MetalScrollPaneUI</item> + <item>MetalSeparatorUI</item> + <item>MetalSliderUI</item> + <item>MetalSplitPaneUI</item> + <item>MetalTabbedPaneUI</item> + <item>MetalTextFieldUI</item> + <item>MetalTheme</item> + <item>MetalToggleButtonUI</item> + <item>MetalToolBarUI</item> + <item>MetalToolTipUI</item> + <item>MetalTreeUI</item> + <item>Method</item> + <item>MethodDescriptor</item> + <item>MidiChannel</item> + <item>MidiDevice</item> + <item>MidiDevice.Info</item> + <item>MidiDeviceProvider</item> + <item>MidiEvent</item> + <item>MidiFileFormat</item> + <item>MidiFileReader</item> + <item>MidiFileWriter</item> + <item>MidiMessage</item> + <item>MidiSystem</item> + <item>MidiUnavailableException</item> + <item>MimeTypeParseException</item> + <item>MinimalHTMLWriter</item> + <item>MissingFormatArgumentException</item> + <item>MissingFormatWidthException</item> + <item>MissingResourceException</item> + <item>Mixer</item> + <item>Mixer.Info</item> + <item>MixerProvider</item> + <item>ModelMBean</item> + <item>ModelMBeanAttributeInfo</item> + <item>ModelMBeanConstructorInfo</item> + <item>ModelMBeanInfo</item> + <item>ModelMBeanInfoSupport</item> + <item>ModelMBeanNotificationBroadcaster</item> + <item>ModelMBeanNotificationInfo</item> + <item>ModelMBeanOperationInfo</item> + <item>ModificationItem</item> + <item>Modifier</item> + <item>Monitor</item> + <item>MonitorMBean</item> + <item>MonitorNotification</item> + <item>MonitorSettingException</item> + <item>MouseAdapter</item> + <item>MouseDragGestureRecognizer</item> + <item>MouseEvent</item> + <item>MouseInfo</item> + <item>MouseInputAdapter</item> + <item>MouseInputListener</item> + <item>MouseListener</item> + <item>MouseMotionAdapter</item> + <item>MouseMotionListener</item> + <item>MouseWheelEvent</item> + <item>MouseWheelListener</item> + <item>MultiButtonUI</item> + <item>MultiColorChooserUI</item> + <item>MultiComboBoxUI</item> + <item>MultiDesktopIconUI</item> + <item>MultiDesktopPaneUI</item> + <item>MultiDoc</item> + <item>MultiDocPrintJob</item> + <item>MultiDocPrintService</item> + <item>MultiFileChooserUI</item> + <item>MultiInternalFrameUI</item> + <item>MultiLabelUI</item> + <item>MultiListUI</item> + <item>MultiLookAndFeel</item> + <item>MultiMenuBarUI</item> + <item>MultiMenuItemUI</item> + <item>MultiOptionPaneUI</item> + <item>MultiPanelUI</item> + <item>MultiPixelPackedSampleModel</item> + <item>MultiPopupMenuUI</item> + <item>MultiProgressBarUI</item> + <item>MultiRootPaneUI</item> + <item>MultiScrollBarUI</item> + <item>MultiScrollPaneUI</item> + <item>MultiSeparatorUI</item> + <item>MultiSliderUI</item> + <item>MultiSpinnerUI</item> + <item>MultiSplitPaneUI</item> + <item>MultiTabbedPaneUI</item> + <item>MultiTableHeaderUI</item> + <item>MultiTableUI</item> + <item>MultiTextUI</item> + <item>MultiToolBarUI</item> + <item>MultiToolTipUI</item> + <item>MultiTreeUI</item> + <item>MultiViewportUI</item> + <item>MulticastSocket</item> + <item>MultipleComponentProfileHelper</item> + <item>MultipleComponentProfileHolder</item> + <item>MultipleDocumentHandling</item> + <item>MultipleMaster</item> + <item>MutableAttributeSet</item> + <item>MutableComboBoxModel</item> + <item>MutableTreeNode</item> + <item>NON_EXISTENT</item> + <item>NO_IMPLEMENT</item> + <item>NO_MEMORY</item> + <item>NO_PERMISSION</item> + <item>NO_RESOURCES</item> + <item>NO_RESPONSE</item> + <item>NVList</item> + <item>Name</item> + <item>NameAlreadyBoundException</item> + <item>NameCallback</item> + <item>NameClassPair</item> + <item>NameComponent</item> + <item>NameComponentHelper</item> + <item>NameComponentHolder</item> + <item>NameDynAnyPair</item> + <item>NameDynAnyPairHelper</item> + <item>NameDynAnyPairSeqHelper</item> + <item>NameHelper</item> + <item>NameHolder</item> + <item>NameList</item> + <item>NameNotFoundException</item> + <item>NameParser</item> + <item>NameValuePair</item> + <item>NameValuePair</item> + <item>NameValuePairHelper</item> + <item>NameValuePairHelper</item> + <item>NameValuePairSeqHelper</item> + <item>NamedNodeMap</item> + <item>NamedValue</item> + <item>NamespaceChangeListener</item> + <item>NamespaceContext</item> + <item>NamespaceSupport</item> + <item>Naming</item> + <item>NamingContext</item> + <item>NamingContextExt</item> + <item>NamingContextExtHelper</item> + <item>NamingContextExtHolder</item> + <item>NamingContextExtOperations</item> + <item>NamingContextExtPOA</item> + <item>NamingContextHelper</item> + <item>NamingContextHolder</item> + <item>NamingContextOperations</item> + <item>NamingContextPOA</item> + <item>NamingEnumeration</item> + <item>NamingEvent</item> + <item>NamingException</item> + <item>NamingExceptionEvent</item> + <item>NamingListener</item> + <item>NamingManager</item> + <item>NamingSecurityException</item> + <item>NavigationFilter</item> + <item>NavigationFilter.FilterBypass</item> + <item>NegativeArraySizeException</item> + <item>NetPermission</item> + <item>NetworkInterface</item> + <item>NoClassDefFoundError</item> + <item>NoConnectionPendingException</item> + <item>NoContext</item> + <item>NoContextHelper</item> + <item>NoInitialContextException</item> + <item>NoPermissionException</item> + <item>NoRouteToHostException</item> + <item>NoServant</item> + <item>NoServantHelper</item> + <item>NoSuchAlgorithmException</item> + <item>NoSuchAttributeException</item> + <item>NoSuchElementException</item> + <item>NoSuchFieldError</item> + <item>NoSuchFieldException</item> + <item>NoSuchMethodError</item> + <item>NoSuchMethodException</item> + <item>NoSuchObjectException</item> + <item>NoSuchPaddingException</item> + <item>NoSuchProviderException</item> + <item>Node</item> + <item>NodeChangeEvent</item> + <item>NodeChangeListener</item> + <item>NodeList</item> + <item>NonReadableChannelException</item> + <item>NonWritableChannelException</item> + <item>NoninvertibleTransformException</item> + <item>NotActiveException</item> + <item>NotBoundException</item> + <item>NotCompliantMBeanException</item> + <item>NotContextException</item> + <item>NotEmpty</item> + <item>NotEmptyHelper</item> + <item>NotEmptyHolder</item> + <item>NotFound</item> + <item>NotFoundHelper</item> + <item>NotFoundHolder</item> + <item>NotFoundReason</item> + <item>NotFoundReasonHelper</item> + <item>NotFoundReasonHolder</item> + <item>NotOwnerException</item> + <item>NotSerializableException</item> + <item>NotYetBoundException</item> + <item>NotYetConnectedException</item> + <item>Notation</item> + <item>Notification</item> + <item>NotificationBroadcaster</item> + <item>NotificationBroadcasterSupport</item> + <item>NotificationEmitter</item> + <item>NotificationFilter</item> + <item>NotificationFilterSupport</item> + <item>NotificationListener</item> + <item>NotificationResult</item> + <item>NullCipher</item> + <item>NullPointerException</item> + <item>Number</item> + <item>NumberFormat</item> + <item>NumberFormat.Field</item> + <item>NumberFormatException</item> + <item>NumberFormatter</item> + <item>NumberOfDocuments</item> + <item>NumberOfInterveningJobs</item> + <item>NumberUp</item> + <item>NumberUpSupported</item> + <item>NumericShaper</item> + <item>OAEPParameterSpec</item> + <item>OBJECT_NOT_EXIST</item> + <item>OBJ_ADAPTER</item> + <item>OMGVMCID</item> + <item>ORB</item> + <item>ORB</item> + <item>ORBIdHelper</item> + <item>ORBInitInfo</item> + <item>ORBInitInfoOperations</item> + <item>ORBInitializer</item> + <item>ORBInitializerOperations</item> + <item>ObjID</item> + <item>Object</item> + <item>Object</item> + <item>ObjectAlreadyActive</item> + <item>ObjectAlreadyActiveHelper</item> + <item>ObjectChangeListener</item> + <item>ObjectFactory</item> + <item>ObjectFactoryBuilder</item> + <item>ObjectHelper</item> + <item>ObjectHolder</item> + <item>ObjectIdHelper</item> + <item>ObjectIdHelper</item> + <item>ObjectImpl</item> + <item>ObjectImpl</item> + <item>ObjectInput</item> + <item>ObjectInputStream</item> + <item>ObjectInputStream.GetField</item> + <item>ObjectInputValidation</item> + <item>ObjectInstance</item> + <item>ObjectName</item> + <item>ObjectNotActive</item> + <item>ObjectNotActiveHelper</item> + <item>ObjectOutput</item> + <item>ObjectOutputStream</item> + <item>ObjectOutputStream.PutField</item> + <item>ObjectReferenceFactory</item> + <item>ObjectReferenceFactoryHelper</item> + <item>ObjectReferenceFactoryHolder</item> + <item>ObjectReferenceTemplate</item> + <item>ObjectReferenceTemplateHelper</item> + <item>ObjectReferenceTemplateHolder</item> + <item>ObjectReferenceTemplateSeqHelper</item> + <item>ObjectReferenceTemplateSeqHolder</item> + <item>ObjectStreamClass</item> + <item>ObjectStreamConstants</item> + <item>ObjectStreamException</item> + <item>ObjectStreamField</item> + <item>ObjectView</item> + <item>Observable</item> + <item>Observer</item> + <item>OceanTheme</item> + <item>OctetSeqHelper</item> + <item>OctetSeqHolder</item> + <item>Oid</item> + <item>OpenDataException</item> + <item>OpenMBeanAttributeInfo</item> + <item>OpenMBeanAttributeInfoSupport</item> + <item>OpenMBeanConstructorInfo</item> + <item>OpenMBeanConstructorInfoSupport</item> + <item>OpenMBeanInfo</item> + <item>OpenMBeanInfoSupport</item> + <item>OpenMBeanOperationInfo</item> + <item>OpenMBeanOperationInfoSupport</item> + <item>OpenMBeanParameterInfo</item> + <item>OpenMBeanParameterInfoSupport</item> + <item>OpenType</item> + <item>OpenType</item> + <item>OperatingSystemMXBean</item> + <item>Operation</item> + <item>OperationNotSupportedException</item> + <item>OperationsException</item> + <item>Option</item> + <item>OptionPaneUI</item> + <item>OptionalDataException</item> + <item>OrientationRequested</item> + <item>OutOfMemoryError</item> + <item>OutputDeviceAssigned</item> + <item>OutputKeys</item> + <item>OutputStream</item> + <item>OutputStream</item> + <item>OutputStream</item> + <item>OutputStreamWriter</item> + <item>OverlappingFileLockException</item> + <item>OverlayLayout</item> + <item>Override</item> + <item>Owner</item> + <item>PBEKey</item> + <item>PBEKeySpec</item> + <item>PBEParameterSpec</item> + <item>PDLOverrideSupported</item> + <item>PERSIST_STORE</item> + <item>PKCS8EncodedKeySpec</item> + <item>PKIXBuilderParameters</item> + <item>PKIXCertPathBuilderResult</item> + <item>PKIXCertPathChecker</item> + <item>PKIXCertPathValidatorResult</item> + <item>PKIXParameters</item> + <item>POA</item> + <item>POAHelper</item> + <item>POAManager</item> + <item>POAManagerOperations</item> + <item>POAOperations</item> + <item>PRIVATE_MEMBER</item> + <item>PSSParameterSpec</item> + <item>PSource</item> + <item>PSource.PSpecified</item> + <item>PUBLIC_MEMBER</item> + <item>Pack200</item> + <item>Pack200.Packer</item> + <item>Pack200.Unpacker</item> + <item>Package</item> + <item>PackedColorModel</item> + <item>PageAttributes</item> + <item>PageAttributes.ColorType</item> + <item>PageAttributes.MediaType</item> + <item>PageAttributes.OrientationRequestedType</item> + <item>PageAttributes.OriginType</item> + <item>PageAttributes.PrintQualityType</item> + <item>PageFormat</item> + <item>PageRanges</item> + <item>Pageable</item> + <item>PagedResultsControl</item> + <item>PagedResultsResponseControl</item> + <item>PagesPerMinute</item> + <item>PagesPerMinuteColor</item> + <item>Paint</item> + <item>PaintContext</item> + <item>PaintEvent</item> + <item>Panel</item> + <item>PanelUI</item> + <item>Paper</item> + <item>ParagraphView</item> + <item>ParagraphView</item> + <item>Parameter</item> + <item>ParameterBlock</item> + <item>ParameterDescriptor</item> + <item>ParameterMetaData</item> + <item>ParameterMode</item> + <item>ParameterModeHelper</item> + <item>ParameterModeHolder</item> + <item>ParameterizedType</item> + <item>ParseException</item> + <item>ParsePosition</item> + <item>Parser</item> + <item>Parser</item> + <item>ParserAdapter</item> + <item>ParserConfigurationException</item> + <item>ParserDelegator</item> + <item>ParserFactory</item> + <item>PartialResultException</item> + <item>PasswordAuthentication</item> + <item>PasswordCallback</item> + <item>PasswordView</item> + <item>Patch</item> + <item>PathIterator</item> + <item>Pattern</item> + <item>PatternSyntaxException</item> + <item>Permission</item> + <item>Permission</item> + <item>PermissionCollection</item> + <item>Permissions</item> + <item>PersistenceDelegate</item> + <item>PersistentMBean</item> + <item>PhantomReference</item> + <item>Pipe</item> + <item>Pipe.SinkChannel</item> + <item>Pipe.SourceChannel</item> + <item>PipedInputStream</item> + <item>PipedOutputStream</item> + <item>PipedReader</item> + <item>PipedWriter</item> + <item>PixelGrabber</item> + <item>PixelInterleavedSampleModel</item> + <item>PlainDocument</item> + <item>PlainView</item> + <item>Point</item> + <item>Point2D</item> + <item>Point2D.Double</item> + <item>Point2D.Float</item> + <item>PointerInfo</item> + <item>Policy</item> + <item>Policy</item> + <item>Policy</item> + <item>PolicyError</item> + <item>PolicyErrorCodeHelper</item> + <item>PolicyErrorHelper</item> + <item>PolicyErrorHolder</item> + <item>PolicyFactory</item> + <item>PolicyFactoryOperations</item> + <item>PolicyHelper</item> + <item>PolicyHolder</item> + <item>PolicyListHelper</item> + <item>PolicyListHolder</item> + <item>PolicyNode</item> + <item>PolicyOperations</item> + <item>PolicyQualifierInfo</item> + <item>PolicyTypeHelper</item> + <item>Polygon</item> + <item>PooledConnection</item> + <item>Popup</item> + <item>PopupFactory</item> + <item>PopupMenu</item> + <item>PopupMenuEvent</item> + <item>PopupMenuListener</item> + <item>PopupMenuUI</item> + <item>Port</item> + <item>Port.Info</item> + <item>PortUnreachableException</item> + <item>PortableRemoteObject</item> + <item>PortableRemoteObjectDelegate</item> + <item>Position</item> + <item>Position.Bias</item> + <item>Predicate</item> + <item>PreferenceChangeEvent</item> + <item>PreferenceChangeListener</item> + <item>Preferences</item> + <item>PreferencesFactory</item> + <item>PreparedStatement</item> + <item>PresentationDirection</item> + <item>Principal</item> + <item>Principal</item> + <item>PrincipalHolder</item> + <item>PrintEvent</item> + <item>PrintException</item> + <item>PrintGraphics</item> + <item>PrintJob</item> + <item>PrintJobAdapter</item> + <item>PrintJobAttribute</item> + <item>PrintJobAttributeEvent</item> + <item>PrintJobAttributeListener</item> + <item>PrintJobAttributeSet</item> + <item>PrintJobEvent</item> + <item>PrintJobListener</item> + <item>PrintQuality</item> + <item>PrintRequestAttribute</item> + <item>PrintRequestAttributeSet</item> + <item>PrintService</item> + <item>PrintServiceAttribute</item> + <item>PrintServiceAttributeEvent</item> + <item>PrintServiceAttributeListener</item> + <item>PrintServiceAttributeSet</item> + <item>PrintServiceLookup</item> + <item>PrintStream</item> + <item>PrintWriter</item> + <item>Printable</item> + <item>PrinterAbortException</item> + <item>PrinterException</item> + <item>PrinterGraphics</item> + <item>PrinterIOException</item> + <item>PrinterInfo</item> + <item>PrinterIsAcceptingJobs</item> + <item>PrinterJob</item> + <item>PrinterLocation</item> + <item>PrinterMakeAndModel</item> + <item>PrinterMessageFromOperator</item> + <item>PrinterMoreInfo</item> + <item>PrinterMoreInfoManufacturer</item> + <item>PrinterName</item> + <item>PrinterResolution</item> + <item>PrinterState</item> + <item>PrinterStateReason</item> + <item>PrinterStateReasons</item> + <item>PrinterURI</item> + <item>PriorityBlockingQueue</item> + <item>PriorityQueue</item> + <item>PrivateClassLoader</item> + <item>PrivateCredentialPermission</item> + <item>PrivateKey</item> + <item>PrivateMLet</item> + <item>PrivilegedAction</item> + <item>PrivilegedActionException</item> + <item>PrivilegedExceptionAction</item> + <item>Process</item> + <item>ProcessBuilder</item> + <item>ProcessingInstruction</item> + <item>ProfileDataException</item> + <item>ProfileIdHelper</item> + <item>ProgressBarUI</item> + <item>ProgressMonitor</item> + <item>ProgressMonitorInputStream</item> + <item>Properties</item> + <item>PropertyChangeEvent</item> + <item>PropertyChangeListener</item> + <item>PropertyChangeListenerProxy</item> + <item>PropertyChangeSupport</item> + <item>PropertyDescriptor</item> + <item>PropertyEditor</item> + <item>PropertyEditorManager</item> + <item>PropertyEditorSupport</item> + <item>PropertyPermission</item> + <item>PropertyResourceBundle</item> + <item>PropertyVetoException</item> + <item>ProtectionDomain</item> + <item>ProtocolException</item> + <item>Provider</item> + <item>Provider.Service</item> + <item>ProviderException</item> + <item>Proxy</item> + <item>Proxy</item> + <item>Proxy.Type</item> + <item>ProxySelector</item> + <item>PublicKey</item> + <item>PushbackInputStream</item> + <item>PushbackReader</item> + <item>QName</item> + <item>QuadCurve2D</item> + <item>QuadCurve2D.Double</item> + <item>QuadCurve2D.Float</item> + <item>Query</item> + <item>QueryEval</item> + <item>QueryExp</item> + <item>Queue</item> + <item>QueuedJobCount</item> + <item>RC2ParameterSpec</item> + <item>RC5ParameterSpec</item> + <item>REBIND</item> + <item>REQUEST_PROCESSING_POLICY_ID</item> + <item>RGBImageFilter</item> + <item>RMIClassLoader</item> + <item>RMIClassLoaderSpi</item> + <item>RMIClientSocketFactory</item> + <item>RMIConnection</item> + <item>RMIConnectionImpl</item> + <item>RMIConnectionImpl_Stub</item> + <item>RMIConnector</item> + <item>RMIConnectorServer</item> + <item>RMICustomMaxStreamFormat</item> + <item>RMIFailureHandler</item> + <item>RMIIIOPServerImpl</item> + <item>RMIJRMPServerImpl</item> + <item>RMISecurityException</item> + <item>RMISecurityManager</item> + <item>RMIServer</item> + <item>RMIServerImpl</item> + <item>RMIServerImpl_Stub</item> + <item>RMIServerSocketFactory</item> + <item>RMISocketFactory</item> + <item>RSAKey</item> + <item>RSAKeyGenParameterSpec</item> + <item>RSAMultiPrimePrivateCrtKey</item> + <item>RSAMultiPrimePrivateCrtKeySpec</item> + <item>RSAOtherPrimeInfo</item> + <item>RSAPrivateCrtKey</item> + <item>RSAPrivateCrtKeySpec</item> + <item>RSAPrivateKey</item> + <item>RSAPrivateKeySpec</item> + <item>RSAPublicKey</item> + <item>RSAPublicKeySpec</item> + <item>RTFEditorKit</item> + <item>Random</item> + <item>RandomAccess</item> + <item>RandomAccessFile</item> + <item>Raster</item> + <item>RasterFormatException</item> + <item>RasterOp</item> + <item>Rdn</item> + <item>ReadOnlyBufferException</item> + <item>ReadWriteLock</item> + <item>Readable</item> + <item>ReadableByteChannel</item> + <item>Reader</item> + <item>RealmCallback</item> + <item>RealmChoiceCallback</item> + <item>Receiver</item> + <item>Rectangle</item> + <item>Rectangle2D</item> + <item>Rectangle2D.Double</item> + <item>Rectangle2D.Float</item> + <item>RectangularShape</item> + <item>ReentrantLock</item> + <item>ReentrantReadWriteLock</item> + <item>ReentrantReadWriteLock.ReadLock</item> + <item>ReentrantReadWriteLock.WriteLock</item> + <item>Ref</item> + <item>RefAddr</item> + <item>Reference</item> + <item>Reference</item> + <item>ReferenceQueue</item> + <item>ReferenceUriSchemesSupported</item> + <item>Referenceable</item> + <item>ReferralException</item> + <item>ReflectPermission</item> + <item>ReflectionException</item> + <item>RefreshFailedException</item> + <item>Refreshable</item> + <item>Region</item> + <item>RegisterableService</item> + <item>Registry</item> + <item>RegistryHandler</item> + <item>RejectedExecutionException</item> + <item>RejectedExecutionHandler</item> + <item>Relation</item> + <item>RelationException</item> + <item>RelationNotFoundException</item> + <item>RelationNotification</item> + <item>RelationService</item> + <item>RelationServiceMBean</item> + <item>RelationServiceNotRegisteredException</item> + <item>RelationSupport</item> + <item>RelationSupportMBean</item> + <item>RelationType</item> + <item>RelationTypeNotFoundException</item> + <item>RelationTypeSupport</item> + <item>RemarshalException</item> + <item>Remote</item> + <item>RemoteCall</item> + <item>RemoteException</item> + <item>RemoteObject</item> + <item>RemoteObjectInvocationHandler</item> + <item>RemoteRef</item> + <item>RemoteServer</item> + <item>RemoteStub</item> + <item>RenderContext</item> + <item>RenderableImage</item> + <item>RenderableImageOp</item> + <item>RenderableImageProducer</item> + <item>RenderedImage</item> + <item>RenderedImageFactory</item> + <item>Renderer</item> + <item>RenderingHints</item> + <item>RenderingHints.Key</item> + <item>RepaintManager</item> + <item>ReplicateScaleFilter</item> + <item>RepositoryIdHelper</item> + <item>Request</item> + <item>RequestInfo</item> + <item>RequestInfoOperations</item> + <item>RequestProcessingPolicy</item> + <item>RequestProcessingPolicyOperations</item> + <item>RequestProcessingPolicyValue</item> + <item>RequestingUserName</item> + <item>RequiredModelMBean</item> + <item>RescaleOp</item> + <item>ResolutionSyntax</item> + <item>ResolveResult</item> + <item>Resolver</item> + <item>ResourceBundle</item> + <item>ResponseCache</item> + <item>ResponseHandler</item> + <item>Result</item> + <item>ResultSet</item> + <item>ResultSetMetaData</item> + <item>Retention</item> + <item>RetentionPolicy</item> + <item>ReverbType</item> + <item>Robot</item> + <item>Role</item> + <item>RoleInfo</item> + <item>RoleInfoNotFoundException</item> + <item>RoleList</item> + <item>RoleNotFoundException</item> + <item>RoleResult</item> + <item>RoleStatus</item> + <item>RoleUnresolved</item> + <item>RoleUnresolvedList</item> + <item>RootPaneContainer</item> + <item>RootPaneUI</item> + <item>RoundRectangle2D</item> + <item>RoundRectangle2D.Double</item> + <item>RoundRectangle2D.Float</item> + <item>RoundingMode</item> + <item>RowMapper</item> + <item>RowSet</item> + <item>RowSetEvent</item> + <item>RowSetInternal</item> + <item>RowSetListener</item> + <item>RowSetMetaData</item> + <item>RowSetMetaDataImpl</item> + <item>RowSetReader</item> + <item>RowSetWarning</item> + <item>RowSetWriter</item> + <item>RuleBasedCollator</item> + <item>RunTime</item> + <item>RunTimeOperations</item> + <item>Runnable</item> + <item>Runtime</item> + <item>RuntimeErrorException</item> + <item>RuntimeException</item> + <item>RuntimeMBeanException</item> + <item>RuntimeMXBean</item> + <item>RuntimeOperationsException</item> + <item>RuntimePermission</item> + <item>SAXException</item> + <item>SAXNotRecognizedException</item> + <item>SAXNotSupportedException</item> + <item>SAXParseException</item> + <item>SAXParser</item> + <item>SAXParserFactory</item> + <item>SAXResult</item> + <item>SAXSource</item> + <item>SAXTransformerFactory</item> + <item>SERVANT_RETENTION_POLICY_ID</item> + <item>SQLData</item> + <item>SQLException</item> + <item>SQLInput</item> + <item>SQLInputImpl</item> + <item>SQLOutput</item> + <item>SQLOutputImpl</item> + <item>SQLPermission</item> + <item>SQLWarning</item> + <item>SSLContext</item> + <item>SSLContextSpi</item> + <item>SSLEngine</item> + <item>SSLEngineResult</item> + <item>SSLEngineResult.HandshakeStatus</item> + <item>SSLEngineResult.Status</item> + <item>SSLException</item> + <item>SSLHandshakeException</item> + <item>SSLKeyException</item> + <item>SSLPeerUnverifiedException</item> + <item>SSLPermission</item> + <item>SSLProtocolException</item> + <item>SSLServerSocket</item> + <item>SSLServerSocketFactory</item> + <item>SSLSession</item> + <item>SSLSessionBindingEvent</item> + <item>SSLSessionBindingListener</item> + <item>SSLSessionContext</item> + <item>SSLSocket</item> + <item>SSLSocketFactory</item> + <item>SUCCESSFUL</item> + <item>SYNC_WITH_TRANSPORT</item> + <item>SYSTEM_EXCEPTION</item> + <item>SampleModel</item> + <item>Sasl</item> + <item>SaslClient</item> + <item>SaslClientFactory</item> + <item>SaslException</item> + <item>SaslServer</item> + <item>SaslServerFactory</item> + <item>Savepoint</item> + <item>Scanner</item> + <item>ScatteringByteChannel</item> + <item>ScheduledExecutorService</item> + <item>ScheduledFuture</item> + <item>ScheduledThreadPoolExecutor</item> + <item>Schema</item> + <item>SchemaFactory</item> + <item>SchemaFactoryLoader</item> + <item>SchemaViolationException</item> + <item>ScrollBarUI</item> + <item>ScrollPane</item> + <item>ScrollPaneAdjustable</item> + <item>ScrollPaneConstants</item> + <item>ScrollPaneLayout</item> + <item>ScrollPaneLayout.UIResource</item> + <item>ScrollPaneUI</item> + <item>Scrollable</item> + <item>Scrollbar</item> + <item>SealedObject</item> + <item>SearchControls</item> + <item>SearchResult</item> + <item>SecretKey</item> + <item>SecretKeyFactory</item> + <item>SecretKeyFactorySpi</item> + <item>SecretKeySpec</item> + <item>SecureCacheResponse</item> + <item>SecureClassLoader</item> + <item>SecureRandom</item> + <item>SecureRandomSpi</item> + <item>Security</item> + <item>SecurityException</item> + <item>SecurityManager</item> + <item>SecurityPermission</item> + <item>Segment</item> + <item>SelectableChannel</item> + <item>SelectionKey</item> + <item>Selector</item> + <item>SelectorProvider</item> + <item>Semaphore</item> + <item>SeparatorUI</item> + <item>Sequence</item> + <item>SequenceInputStream</item> + <item>Sequencer</item> + <item>Sequencer.SyncMode</item> + <item>SerialArray</item> + <item>SerialBlob</item> + <item>SerialClob</item> + <item>SerialDatalink</item> + <item>SerialException</item> + <item>SerialJavaObject</item> + <item>SerialRef</item> + <item>SerialStruct</item> + <item>Serializable</item> + <item>SerializablePermission</item> + <item>Servant</item> + <item>ServantActivator</item> + <item>ServantActivatorHelper</item> + <item>ServantActivatorOperations</item> + <item>ServantActivatorPOA</item> + <item>ServantAlreadyActive</item> + <item>ServantAlreadyActiveHelper</item> + <item>ServantLocator</item> + <item>ServantLocatorHelper</item> + <item>ServantLocatorOperations</item> + <item>ServantLocatorPOA</item> + <item>ServantManager</item> + <item>ServantManagerOperations</item> + <item>ServantNotActive</item> + <item>ServantNotActiveHelper</item> + <item>ServantObject</item> + <item>ServantRetentionPolicy</item> + <item>ServantRetentionPolicyOperations</item> + <item>ServantRetentionPolicyValue</item> + <item>ServerCloneException</item> + <item>ServerError</item> + <item>ServerException</item> + <item>ServerIdHelper</item> + <item>ServerNotActiveException</item> + <item>ServerRef</item> + <item>ServerRequest</item> + <item>ServerRequestInfo</item> + <item>ServerRequestInfoOperations</item> + <item>ServerRequestInterceptor</item> + <item>ServerRequestInterceptorOperations</item> + <item>ServerRuntimeException</item> + <item>ServerSocket</item> + <item>ServerSocketChannel</item> + <item>ServerSocketFactory</item> + <item>ServiceContext</item> + <item>ServiceContextHelper</item> + <item>ServiceContextHolder</item> + <item>ServiceContextListHelper</item> + <item>ServiceContextListHolder</item> + <item>ServiceDetail</item> + <item>ServiceDetailHelper</item> + <item>ServiceIdHelper</item> + <item>ServiceInformation</item> + <item>ServiceInformationHelper</item> + <item>ServiceInformationHolder</item> + <item>ServiceNotFoundException</item> + <item>ServicePermission</item> + <item>ServiceRegistry</item> + <item>ServiceRegistry.Filter</item> + <item>ServiceUI</item> + <item>ServiceUIFactory</item> + <item>ServiceUnavailableException</item> + <item>Set</item> + <item>SetOfIntegerSyntax</item> + <item>SetOverrideType</item> + <item>SetOverrideTypeHelper</item> + <item>Severity</item> + <item>Shape</item> + <item>ShapeGraphicAttribute</item> + <item>SheetCollate</item> + <item>Short</item> + <item>ShortBuffer</item> + <item>ShortBufferException</item> + <item>ShortHolder</item> + <item>ShortLookupTable</item> + <item>ShortMessage</item> + <item>ShortSeqHelper</item> + <item>ShortSeqHolder</item> + <item>Sides</item> + <item>Signature</item> + <item>SignatureException</item> + <item>SignatureSpi</item> + <item>SignedObject</item> + <item>Signer</item> + <item>SimpleAttributeSet</item> + <item>SimpleBeanInfo</item> + <item>SimpleDateFormat</item> + <item>SimpleDoc</item> + <item>SimpleFormatter</item> + <item>SimpleTimeZone</item> + <item>SimpleType</item> + <item>SinglePixelPackedSampleModel</item> + <item>SingleSelectionModel</item> + <item>Size2DSyntax</item> + <item>SizeLimitExceededException</item> + <item>SizeRequirements</item> + <item>SizeSequence</item> + <item>Skeleton</item> + <item>SkeletonMismatchException</item> + <item>SkeletonNotFoundException</item> + <item>SliderUI</item> + <item>Socket</item> + <item>SocketAddress</item> + <item>SocketChannel</item> + <item>SocketException</item> + <item>SocketFactory</item> + <item>SocketHandler</item> + <item>SocketImpl</item> + <item>SocketImplFactory</item> + <item>SocketOptions</item> + <item>SocketPermission</item> + <item>SocketSecurityException</item> + <item>SocketTimeoutException</item> + <item>SoftBevelBorder</item> + <item>SoftReference</item> + <item>SortControl</item> + <item>SortKey</item> + <item>SortResponseControl</item> + <item>SortedMap</item> + <item>SortedSet</item> + <item>SortingFocusTraversalPolicy</item> + <item>Soundbank</item> + <item>SoundbankReader</item> + <item>SoundbankResource</item> + <item>Source</item> + <item>SourceDataLine</item> + <item>SourceLocator</item> + <item>SpinnerDateModel</item> + <item>SpinnerListModel</item> + <item>SpinnerModel</item> + <item>SpinnerNumberModel</item> + <item>SpinnerUI</item> + <item>SplitPaneUI</item> + <item>Spring</item> + <item>SpringLayout</item> + <item>SpringLayout.Constraints</item> + <item>SslRMIClientSocketFactory</item> + <item>SslRMIServerSocketFactory</item> + <item>Stack</item> + <item>StackOverflowError</item> + <item>StackTraceElement</item> + <item>StandardMBean</item> + <item>StartTlsRequest</item> + <item>StartTlsResponse</item> + <item>State</item> + <item>StateEdit</item> + <item>StateEditable</item> + <item>StateFactory</item> + <item>Statement</item> + <item>Statement</item> + <item>StreamCorruptedException</item> + <item>StreamHandler</item> + <item>StreamPrintService</item> + <item>StreamPrintServiceFactory</item> + <item>StreamResult</item> + <item>StreamSource</item> + <item>StreamTokenizer</item> + <item>Streamable</item> + <item>StreamableValue</item> + <item>StrictMath</item> + <item>String</item> + <item>StringBuffer</item> + <item>StringBufferInputStream</item> + <item>StringBuilder</item> + <item>StringCharacterIterator</item> + <item>StringContent</item> + <item>StringHolder</item> + <item>StringIndexOutOfBoundsException</item> + <item>StringMonitor</item> + <item>StringMonitorMBean</item> + <item>StringNameHelper</item> + <item>StringReader</item> + <item>StringRefAddr</item> + <item>StringSelection</item> + <item>StringSeqHelper</item> + <item>StringSeqHolder</item> + <item>StringTokenizer</item> + <item>StringValueExp</item> + <item>StringValueHelper</item> + <item>StringWriter</item> + <item>Stroke</item> + <item>Struct</item> + <item>StructMember</item> + <item>StructMemberHelper</item> + <item>Stub</item> + <item>StubDelegate</item> + <item>StubNotFoundException</item> + <item>Style</item> + <item>StyleConstants</item> + <item>StyleConstants.CharacterConstants</item> + <item>StyleConstants.ColorConstants</item> + <item>StyleConstants.FontConstants</item> + <item>StyleConstants.ParagraphConstants</item> + <item>StyleContext</item> + <item>StyleSheet</item> + <item>StyleSheet.BoxPainter</item> + <item>StyleSheet.ListPainter</item> + <item>StyledDocument</item> + <item>StyledEditorKit</item> + <item>StyledEditorKit.AlignmentAction</item> + <item>StyledEditorKit.BoldAction</item> + <item>StyledEditorKit.FontFamilyAction</item> + <item>StyledEditorKit.FontSizeAction</item> + <item>StyledEditorKit.ForegroundAction</item> + <item>StyledEditorKit.ItalicAction</item> + <item>StyledEditorKit.StyledTextAction</item> + <item>StyledEditorKit.UnderlineAction</item> + <item>Subject</item> + <item>SubjectDelegationPermission</item> + <item>SubjectDomainCombiner</item> + <item>SupportedValuesAttribute</item> + <item>SuppressWarnings</item> + <item>SwingConstants</item> + <item>SwingPropertyChangeSupport</item> + <item>SwingUtilities</item> + <item>SyncFactory</item> + <item>SyncFactoryException</item> + <item>SyncFailedException</item> + <item>SyncProvider</item> + <item>SyncProviderException</item> + <item>SyncResolver</item> + <item>SyncScopeHelper</item> + <item>SynchronousQueue</item> + <item>SynthConstants</item> + <item>SynthContext</item> + <item>SynthGraphicsUtils</item> + <item>SynthLookAndFeel</item> + <item>SynthPainter</item> + <item>SynthStyle</item> + <item>SynthStyleFactory</item> + <item>Synthesizer</item> + <item>SysexMessage</item> + <item>System</item> + <item>SystemColor</item> + <item>SystemException</item> + <item>SystemFlavorMap</item> + <item>TAG_ALTERNATE_IIOP_ADDRESS</item> + <item>TAG_CODE_SETS</item> + <item>TAG_INTERNET_IOP</item> + <item>TAG_JAVA_CODEBASE</item> + <item>TAG_MULTIPLE_COMPONENTS</item> + <item>TAG_ORB_TYPE</item> + <item>TAG_POLICIES</item> + <item>TAG_RMI_CUSTOM_MAX_STREAM_FORMAT</item> + <item>TCKind</item> + <item>THREAD_POLICY_ID</item> + <item>TIMEOUT</item> + <item>TRANSACTION_MODE</item> + <item>TRANSACTION_REQUIRED</item> + <item>TRANSACTION_ROLLEDBACK</item> + <item>TRANSACTION_UNAVAILABLE</item> + <item>TRANSIENT</item> + <item>TRANSPORT_RETRY</item> + <item>TabExpander</item> + <item>TabSet</item> + <item>TabStop</item> + <item>TabableView</item> + <item>TabbedPaneUI</item> + <item>TableCellEditor</item> + <item>TableCellRenderer</item> + <item>TableColumn</item> + <item>TableColumnModel</item> + <item>TableColumnModelEvent</item> + <item>TableColumnModelListener</item> + <item>TableHeaderUI</item> + <item>TableModel</item> + <item>TableModelEvent</item> + <item>TableModelListener</item> + <item>TableUI</item> + <item>TableView</item> + <item>TabularData</item> + <item>TabularDataSupport</item> + <item>TabularType</item> + <item>TagElement</item> + <item>TaggedComponent</item> + <item>TaggedComponentHelper</item> + <item>TaggedComponentHolder</item> + <item>TaggedProfile</item> + <item>TaggedProfileHelper</item> + <item>TaggedProfileHolder</item> + <item>Target</item> + <item>TargetDataLine</item> + <item>TargetedNotification</item> + <item>Templates</item> + <item>TemplatesHandler</item> + <item>Text</item> + <item>TextAction</item> + <item>TextArea</item> + <item>TextAttribute</item> + <item>TextComponent</item> + <item>TextEvent</item> + <item>TextField</item> + <item>TextHitInfo</item> + <item>TextInputCallback</item> + <item>TextLayout</item> + <item>TextLayout.CaretPolicy</item> + <item>TextListener</item> + <item>TextMeasurer</item> + <item>TextOutputCallback</item> + <item>TextSyntax</item> + <item>TextUI</item> + <item>TexturePaint</item> + <item>Thread</item> + <item>Thread.State</item> + <item>Thread.UncaughtExceptionHandler</item> + <item>ThreadDeath</item> + <item>ThreadFactory</item> + <item>ThreadGroup</item> + <item>ThreadInfo</item> + <item>ThreadLocal</item> + <item>ThreadMXBean</item> + <item>ThreadPolicy</item> + <item>ThreadPolicyOperations</item> + <item>ThreadPolicyValue</item> + <item>ThreadPoolExecutor</item> + <item>ThreadPoolExecutor.AbortPolicy</item> + <item>ThreadPoolExecutor.CallerRunsPolicy</item> + <item>ThreadPoolExecutor.DiscardOldestPolicy</item> + <item>ThreadPoolExecutor.DiscardPolicy</item> + <item>Throwable</item> + <item>Tie</item> + <item>TileObserver</item> + <item>Time</item> + <item>TimeLimitExceededException</item> + <item>TimeUnit</item> + <item>TimeZone</item> + <item>TimeoutException</item> + <item>Timer</item> + <item>Timer</item> + <item>Timer</item> + <item>TimerAlarmClockNotification</item> + <item>TimerMBean</item> + <item>TimerNotification</item> + <item>TimerTask</item> + <item>Timestamp</item> + <item>Timestamp</item> + <item>TitledBorder</item> + <item>TooManyListenersException</item> + <item>ToolBarUI</item> + <item>ToolTipManager</item> + <item>ToolTipUI</item> + <item>Toolkit</item> + <item>Track</item> + <item>TransactionRequiredException</item> + <item>TransactionRolledbackException</item> + <item>TransactionService</item> + <item>TransactionalWriter</item> + <item>TransferHandler</item> + <item>Transferable</item> + <item>TransformAttribute</item> + <item>Transformer</item> + <item>TransformerConfigurationException</item> + <item>TransformerException</item> + <item>TransformerFactory</item> + <item>TransformerFactoryConfigurationError</item> + <item>TransformerHandler</item> + <item>Transmitter</item> + <item>Transparency</item> + <item>TreeCellEditor</item> + <item>TreeCellRenderer</item> + <item>TreeExpansionEvent</item> + <item>TreeExpansionListener</item> + <item>TreeMap</item> + <item>TreeModel</item> + <item>TreeModelEvent</item> + <item>TreeModelListener</item> + <item>TreeNode</item> + <item>TreePath</item> + <item>TreeSelectionEvent</item> + <item>TreeSelectionListener</item> + <item>TreeSelectionModel</item> + <item>TreeSet</item> + <item>TreeUI</item> + <item>TreeWillExpandListener</item> + <item>TrustAnchor</item> + <item>TrustManager</item> + <item>TrustManagerFactory</item> + <item>TrustManagerFactorySpi</item> + <item>Type</item> + <item>TypeCode</item> + <item>TypeCodeHolder</item> + <item>TypeInfo</item> + <item>TypeInfoProvider</item> + <item>TypeMismatch</item> + <item>TypeMismatch</item> + <item>TypeMismatch</item> + <item>TypeMismatchHelper</item> + <item>TypeMismatchHelper</item> + <item>TypeNotPresentException</item> + <item>TypeVariable</item> + <item>Types</item> + <item>UID</item> + <item>UIDefaults</item> + <item>UIDefaults.ActiveValue</item> + <item>UIDefaults.LazyInputMap</item> + <item>UIDefaults.LazyValue</item> + <item>UIDefaults.ProxyLazyValue</item> + <item>UIManager</item> + <item>UIManager.LookAndFeelInfo</item> + <item>UIResource</item> + <item>ULongLongSeqHelper</item> + <item>ULongLongSeqHolder</item> + <item>ULongSeqHelper</item> + <item>ULongSeqHolder</item> + <item>UNKNOWN</item> + <item>UNKNOWN</item> + <item>UNSUPPORTED_POLICY</item> + <item>UNSUPPORTED_POLICY_VALUE</item> + <item>URI</item> + <item>URIException</item> + <item>URIResolver</item> + <item>URISyntax</item> + <item>URISyntaxException</item> + <item>URL</item> + <item>URLClassLoader</item> + <item>URLConnection</item> + <item>URLDecoder</item> + <item>URLEncoder</item> + <item>URLStreamHandler</item> + <item>URLStreamHandlerFactory</item> + <item>URLStringHelper</item> + <item>USER_EXCEPTION</item> + <item>UShortSeqHelper</item> + <item>UShortSeqHolder</item> + <item>UTFDataFormatException</item> + <item>UUID</item> + <item>UndeclaredThrowableException</item> + <item>UndoManager</item> + <item>UndoableEdit</item> + <item>UndoableEditEvent</item> + <item>UndoableEditListener</item> + <item>UndoableEditSupport</item> + <item>UnexpectedException</item> + <item>UnicastRemoteObject</item> + <item>UnionMember</item> + <item>UnionMemberHelper</item> + <item>UnknownEncoding</item> + <item>UnknownEncodingHelper</item> + <item>UnknownError</item> + <item>UnknownException</item> + <item>UnknownFormatConversionException</item> + <item>UnknownFormatFlagsException</item> + <item>UnknownGroupException</item> + <item>UnknownHostException</item> + <item>UnknownHostException</item> + <item>UnknownObjectException</item> + <item>UnknownServiceException</item> + <item>UnknownUserException</item> + <item>UnknownUserExceptionHelper</item> + <item>UnknownUserExceptionHolder</item> + <item>UnmappableCharacterException</item> + <item>UnmarshalException</item> + <item>UnmodifiableClassException</item> + <item>UnmodifiableSetException</item> + <item>UnrecoverableEntryException</item> + <item>UnrecoverableKeyException</item> + <item>Unreferenced</item> + <item>UnresolvedAddressException</item> + <item>UnresolvedPermission</item> + <item>UnsatisfiedLinkError</item> + <item>UnsolicitedNotification</item> + <item>UnsolicitedNotificationEvent</item> + <item>UnsolicitedNotificationListener</item> + <item>UnsupportedAddressTypeException</item> + <item>UnsupportedAudioFileException</item> + <item>UnsupportedCallbackException</item> + <item>UnsupportedCharsetException</item> + <item>UnsupportedClassVersionError</item> + <item>UnsupportedEncodingException</item> + <item>UnsupportedFlavorException</item> + <item>UnsupportedLookAndFeelException</item> + <item>UnsupportedOperationException</item> + <item>UserDataHandler</item> + <item>UserException</item> + <item>Util</item> + <item>UtilDelegate</item> + <item>Utilities</item> + <item>VMID</item> + <item>VM_ABSTRACT</item> + <item>VM_CUSTOM</item> + <item>VM_NONE</item> + <item>VM_TRUNCATABLE</item> + <item>Validator</item> + <item>ValidatorHandler</item> + <item>ValueBase</item> + <item>ValueBaseHelper</item> + <item>ValueBaseHolder</item> + <item>ValueExp</item> + <item>ValueFactory</item> + <item>ValueHandler</item> + <item>ValueHandlerMultiFormat</item> + <item>ValueInputStream</item> + <item>ValueMember</item> + <item>ValueMemberHelper</item> + <item>ValueOutputStream</item> + <item>VariableHeightLayoutCache</item> + <item>Vector</item> + <item>VerifyError</item> + <item>VersionSpecHelper</item> + <item>VetoableChangeListener</item> + <item>VetoableChangeListenerProxy</item> + <item>VetoableChangeSupport</item> + <item>View</item> + <item>ViewFactory</item> + <item>ViewportLayout</item> + <item>ViewportUI</item> + <item>VirtualMachineError</item> + <item>Visibility</item> + <item>VisibilityHelper</item> + <item>VoiceStatus</item> + <item>Void</item> + <item>VolatileImage</item> + <item>WCharSeqHelper</item> + <item>WCharSeqHolder</item> + <item>WStringSeqHelper</item> + <item>WStringSeqHolder</item> + <item>WStringValueHelper</item> + <item>WeakHashMap</item> + <item>WeakReference</item> + <item>WebRowSet</item> + <item>WildcardType</item> + <item>Window</item> + <item>WindowAdapter</item> + <item>WindowConstants</item> + <item>WindowEvent</item> + <item>WindowFocusListener</item> + <item>WindowListener</item> + <item>WindowStateListener</item> + <item>WrappedPlainView</item> + <item>WritableByteChannel</item> + <item>WritableRaster</item> + <item>WritableRenderedImage</item> + <item>WriteAbortedException</item> + <item>Writer</item> + <item>WrongAdapter</item> + <item>WrongAdapterHelper</item> + <item>WrongPolicy</item> + <item>WrongPolicyHelper</item> + <item>WrongTransaction</item> + <item>WrongTransactionHelper</item> + <item>WrongTransactionHolder</item> + <item>X500Principal</item> + <item>X500PrivateCredential</item> + <item>X509CRL</item> + <item>X509CRLEntry</item> + <item>X509CRLSelector</item> + <item>X509CertSelector</item> + <item>X509Certificate</item> + <item>X509Certificate</item> + <item>X509EncodedKeySpec</item> + <item>X509ExtendedKeyManager</item> + <item>X509Extension</item> + <item>X509KeyManager</item> + <item>X509TrustManager</item> + <item>XAConnection</item> + <item>XADataSource</item> + <item>XAException</item> + <item>XAResource</item> + <item>XMLConstants</item> + <item>XMLDecoder</item> + <item>XMLEncoder</item> + <item>XMLFilter</item> + <item>XMLFilterImpl</item> + <item>XMLFormatter</item> + <item>XMLGregorianCalendar</item> + <item>XMLParseException</item> + <item>XMLReader</item> + <item>XMLReaderAdapter</item> + <item>XMLReaderFactory</item> + <item>XPath</item> + <item>XPathConstants</item> + <item>XPathException</item> + <item>XPathExpression</item> + <item>XPathExpressionException</item> + <item>XPathFactory</item> + <item>XPathFactoryConfigurationException</item> + <item>XPathFunction</item> + <item>XPathFunctionException</item> + <item>XPathFunctionResolver</item> + <item>XPathVariableResolver</item> + <item>Xid</item> + <item>XmlReader</item> + <item>XmlWriter</item> + <item>ZipEntry</item> + <item>ZipException</item> + <item>ZipFile</item> + <item>ZipInputStream</item> + <item>ZipOutputStream</item> + <item>ZoneView</item> + <item>_BindingIteratorImplBase</item> + <item>_BindingIteratorStub</item> + <item>_DynAnyFactoryStub</item> + <item>_DynAnyStub</item> + <item>_DynArrayStub</item> + <item>_DynEnumStub</item> + <item>_DynFixedStub</item> + <item>_DynSequenceStub</item> + <item>_DynStructStub</item> + <item>_DynUnionStub</item> + <item>_DynValueStub</item> + <item>_IDLTypeStub</item> + <item>_NamingContextExtStub</item> + <item>_NamingContextImplBase</item> + <item>_NamingContextStub</item> + <item>_PolicyStub</item> + <item>_Remote_Stub</item> + <item>_ServantActivatorStub</item> + <item>_ServantLocatorStub</item> + +<!-- new classes of jdk 6.0 --> + + <item>AbstractAnnotationValueVisitor6</item> + <item>AbstractElementVisitor6</item> + <item>AbstractMarshallerImpl</item> + <item>AbstractOwnableSynchronizer</item> + <item>AbstractProcessor</item> + <item>AbstractQueuedLongSynchronizer</item> + <item>AbstractScriptEngine</item> + <item>AbstractTypeVisitor6</item> + <item>AbstractUnmarshallerImpl</item> + <item>ActivationDataFlavor</item> + <item>AlgorithmMethod</item> + <item>AnnotationMirror</item> + <item>AnnotationValue</item> + <item>AnnotationValueVisitor</item> + <item>ArrayDeque</item> + <item>AsyncHandler</item> + <item>AttachmentMarshaller</item> + <item>AttachmentPart</item> + <item>AttachmentUnmarshaller</item> + <item>Binder</item> + <item>BindingProvider</item> + <item>Bindings</item> + <item>BlockingDeque</item> + <item>BreakIteratorProvider</item> + <item>C14NMethodParameterSpec</item> + <item>CanonicalizationMethod</item> + <item>Characters</item> + <item>ClientInfoStatus</item> + <item>CollapsedStringAdapter</item> + <item>CollatorProvider</item> + <item>CommandInfo</item> + <item>CommandMap</item> + <item>CommandObject</item> + <item>CommonDataSource</item> + <item>Compilable</item> + <item>CompiledScript</item> + <item>Completion</item> + <item>Completions</item> + <item>CompositeDataInvocationHandler</item> + <item>CompositeDataView</item> + <item>ConcurrentNavigableMap</item> + <item>ConcurrentSkipListMap</item> + <item>ConcurrentSkipListSet</item> + <item>ConfigurationSpi</item> + <item>Console</item> + <item>ConstructorProperties</item> + <item>CookieManager</item> + <item>CookiePolicy</item> + <item>CookieStore</item> + <item>CurrencyNameProvider</item> + <item>Data</item> + <item>DataContentHandler</item> + <item>DataContentHandlerFactory</item> + <item>DataHandler</item> + <item>DatatypeConverter</item> + <item>DatatypeConverterInterface</item> + <item>DateFormatProvider</item> + <item>DateFormatSymbolsProvider</item> + <item>DecimalFormatSymbolsProvider</item> + <item>DeclaredType</item> + <item>DefaultRowSorter</item> + <item>DefaultValidationEventHandler</item> + <item>DeflaterInputStream</item> + <item>Deque</item> + <item>DescriptorKey</item> + <item>DescriptorRead</item> + <item>Desktop</item> + <item>Detail</item> + <item>DetailEntry</item> + <item>Diagnostic</item> + <item>DiagnosticCollector</item> + <item>DiagnosticListener</item> + <item>DigestMethod</item> + <item>DigestMethodParameterSpec</item> + <item>Dispatch</item> + <item>DOMCryptoContext</item> + <item>DomHandler</item> + <item>DOMSignContext</item> + <item>DOMStructure</item> + <item>DOMURIReference</item> + <item>DOMValidateContext</item> + <item>DropMode</item> + <item>ElementFilter</item> + <item>ElementKind</item> + <item>ElementKindVisitor6</item> + <item>Elements</item> + <item>ElementScanner6</item> + <item>ElementVisitor</item> + <item>EndDocument</item> + <item>EndElement</item> + <item>Endpoint</item> + <item>EntityDeclaration</item> + <item>ErrorType</item> + <item>EventException</item> + <item>EventFilter</item> + <item>EventReaderDelegate</item> + <item>EventTarget</item> + <item>ExcC14NParameterSpec</item> + <item>ExecutableElement</item> + <item>ExecutableType</item> + <item>FileDataSource</item> + <item>FileNameExtensionFilter</item> + <item>FileObject</item> + <item>Filer</item> + <item>FilerException</item> + <item>FileTypeMap</item> + <item>ForwardingFileObject</item> + <item>ForwardingJavaFileManager</item> + <item>ForwardingJavaFileObject</item> + <item>Generated</item> + <item>GridBagLayoutInfo</item> + <item>GroupLayout</item> + <item>HandlerChain</item> + <item>HandlerResolver</item> + <item>HexBinaryAdapter</item> + <item>HMACParameterSpec</item> + <item>Holder</item> + <item>HTTPBinding</item> + <item>HttpCookie</item> + <item>HTTPException</item> + <item>IDN</item> + <item>ImmutableDescriptor</item> + <item>InflaterOutputStream</item> + <item>InitParam</item> + <item>InterfaceAddress</item> + <item>Invocable</item> + <item>IOError</item> + <item>JavaCompiler</item> + <item>JavaFileManager</item> + <item>JavaFileObject</item> + <item>JAXBContext</item> + <item>JAXBElement</item> + <item>JAXBException</item> + <item>JAXBIntrospector</item> + <item>JAXBResult</item> + <item>JAXBSource</item> + <item>JMX</item> + <item>JMXAddressable</item> + <item>KeyInfo</item> + <item>KeyInfoFactory</item> + <item>KeyName</item> + <item>KeySelector</item> + <item>KeySelectorException</item> + <item>KeySelectorResult</item> + <item>KeyValue</item> + <item>LayoutPath</item> + <item>LayoutStyle</item> + <item>LinearGradientPaint</item> + <item>LinkedBlockingDeque</item> + <item>LocaleNameProvider</item> + <item>LocaleServiceProvider</item> + <item>Location</item> + <item>LockInfo</item> + <item>LogicalHandler</item> + <item>LogicalMessage</item> + <item>LogicalMessageContext</item> + <item>MailcapCommandMap</item> + <item>Marshaller</item> + <item>MessageContext</item> + <item>MessageFactory</item> + <item>Messager</item> + <item>MimeHeader</item> + <item>MimeHeaders</item> + <item>MimeType</item> + <item>MimeTypeParameterList</item> + <item>MimetypesFileTypeMap</item> + <item>MirroredTypeException</item> + <item>MirroredTypesException</item> + <item>MLetContent</item> + <item>MonitorInfo</item> + <item>MultipleGradientPaint</item> + <item>MutationEvent</item> + <item>MXBean</item> + <item>Namespace</item> + <item>NavigableMap</item> + <item>NavigableSet</item> + <item>NClob</item> + <item>NestingKind</item> + <item>NodeSetData</item> + <item>NormalizedStringAdapter</item> + <item>Normalizer</item> + <item>NoSuchMechanismException</item> + <item>NotationDeclaration</item> + <item>NotIdentifiableEvent</item> + <item>NotIdentifiableEventImpl</item> + <item>NoType</item> + <item>NullType</item> + <item>NumberFormatProvider</item> + <item>OctetStreamData</item> + <item>Oneway</item> + <item>OptionChecker</item> + <item>PackageElement</item> + <item>ParseConversionEvent</item> + <item>ParseConversionEventImpl</item> + <item>Path2D</item> + <item>PGPData</item> + <item>PolicySpi</item> + <item>PortInfo</item> + <item>PostConstruct</item> + <item>PreDestroy</item> + <item>PrimitiveType</item> + <item>PrintConversionEvent</item> + <item>PrintConversionEventImpl</item> + <item>ProcessingEnvironment</item> + <item>Processor</item> + <item>PropertyException</item> + <item>RadialGradientPaint</item> + <item>ReferenceType</item> + <item>RequestWrapper</item> + <item>Resource</item> + <item>Resources</item> + <item>Response</item> + <item>ResponseWrapper</item> + <item>RetrievalMethod</item> + <item>RoundEnvironment</item> + <item>RowFilter</item> + <item>RowId</item> + <item>RowIdLifetime</item> + <item>RowSorter</item> + <item>RowSorterEvent</item> + <item>RowSorterListener</item> + <item>RunnableFuture</item> + <item>RunnableScheduledFuture</item> + <item>SAAJMetaFactory</item> + <item>SAAJResult</item> + <item>SchemaOutputResolver</item> + <item>ScriptContext</item> + <item>ScriptEngine</item> + <item>ScriptEngineFactory</item> + <item>ScriptEngineManager</item> + <item>ScriptException</item> + <item>Service</item> + <item>ServiceConfigurationError</item> + <item>ServiceDelegate</item> + <item>ServiceLoader</item> + <item>ServiceMode</item> + <item>SignatureMethod</item> + <item>SignatureMethodParameterSpec</item> + <item>SignatureProperties</item> + <item>SignatureProperty</item> + <item>SignedInfo</item> + <item>SimpleAnnotationValueVisitor6</item> + <item>SimpleBindings</item> + <item>SimpleElementVisitor6</item> + <item>SimpleJavaFileObject</item> + <item>SimpleScriptContext</item> + <item>SimpleTypeVisitor6</item> + <item>SOAPBinding</item> + <item>SOAPBinding</item> + <item>SOAPBody</item> + <item>SOAPBodyElement</item> + <item>SOAPConnection</item> + <item>SOAPConnectionFactory</item> + <item>SOAPConstants</item> + <item>SOAPElement</item> + <item>SOAPElementFactory</item> + <item>SOAPEnvelope</item> + <item>SOAPException</item> + <item>SOAPFactory</item> + <item>SOAPFault</item> + <item>SOAPFaultElement</item> + <item>SOAPFaultException</item> + <item>SOAPHandler</item> + <item>SOAPHeader</item> + <item>SOAPHeaderElement</item> + <item>SOAPMessage</item> + <item>SOAPMessageContext</item> + <item>SOAPMessageHandler</item> + <item>SOAPMessageHandlers</item> + <item>SOAPPart</item> + <item>SortOrder</item> + <item>SourceVersion</item> + <item>SplashScreen</item> + <item>SQLClientInfoException</item> + <item>SQLDataException</item> + <item>SQLFeatureNotSupportedException</item> + <item>SQLIntegrityConstraintViolationException</item> + <item>SQLInvalidAuthorizationSpecException</item> + <item>SQLNonTransientConnectionException</item> + <item>SQLNonTransientException</item> + <item>SQLRecoverableException</item> + <item>SQLSyntaxErrorException</item> + <item>SQLTimeoutException</item> + <item>SQLTransactionRollbackException</item> + <item>SQLTransientConnectionException</item> + <item>SQLTransientException</item> + <item>SQLXML</item> + <item>SSLParameters</item> + <item>StandardEmitterMBean</item> + <item>StandardJavaFileManager</item> + <item>StandardLocation</item> + <item>StartDocument</item> + <item>StartElement</item> + <item>StatementEvent</item> + <item>StatementEventListener</item> + <item>StAXResult</item> + <item>StAXSource</item> + <item>StreamFilter</item> + <item>StreamReaderDelegate</item> + <item>SupportedAnnotationTypes</item> + <item>SupportedOptions</item> + <item>SupportedSourceVersion</item> + <item>SwingWorker</item> + <item>SystemTray</item> + <item>TableRowSorter</item> + <item>TableStringConverter</item> + <item>TimeZoneNameProvider</item> + <item>Tool</item> + <item>ToolProvider</item> + <item>Transform</item> + <item>TransformException</item> + <item>TransformParameterSpec</item> + <item>TransformService</item> + <item>TrayIcon</item> + <item>TypeConstraintException</item> + <item>TypeElement</item> + <item>TypeKind</item> + <item>TypeKindVisitor6</item> + <item>TypeMirror</item> + <item>TypeParameterElement</item> + <item>TypeVisitor</item> + <item>UIEvent</item> + <item>UnknownAnnotationValueException</item> + <item>UnknownElementException</item> + <item>UnknownTypeException</item> + <item>Unmarshaller</item> + <item>UnmarshallerHandler</item> + <item>UnsupportedDataTypeException</item> + <item>URIDereferencer</item> + <item>URIParameter</item> + <item>URIReference</item> + <item>URIReferenceException</item> + <item>URLDataSource</item> + <item>ValidationEvent</item> + <item>ValidationEventCollector</item> + <item>ValidationEventHandler</item> + <item>ValidationEventImpl</item> + <item>ValidationEventLocator</item> + <item>ValidationEventLocatorImpl</item> + <item>ValidationException</item> + <item>VariableElement</item> + <item>W3CDomHandler</item> + <item>WebEndpoint</item> + <item>WebFault</item> + <item>WebMethod</item> + <item>WebParam</item> + <item>WebResult</item> + <item>WebService</item> + <item>WebServiceClient</item> + <item>WebServiceContext</item> + <item>WebServiceException</item> + <item>WebServicePermission</item> + <item>WebServiceProvider</item> + <item>WebServiceRef</item> + <item>WebServiceRefs</item> + <item>Wrapper</item> + <item>X509Data</item> + <item>X509IssuerSerial</item> + <item>XmlAccessOrder</item> + <item>XmlAccessorOrder</item> + <item>XmlAccessorType</item> + <item>XmlAccessType</item> + <item>XmlAdapter</item> + <item>XmlAnyAttribute</item> + <item>XmlAnyElement</item> + <item>XmlAttachmentRef</item> + <item>XmlAttribute</item> + <item>XMLCryptoContext</item> + <item>XmlElement</item> + <item>XmlElementDecl</item> + <item>XmlElementRef</item> + <item>XmlElementRefs</item> + <item>XmlElements</item> + <item>XmlElementWrapper</item> + <item>XmlEnum</item> + <item>XmlEnumValue</item> + <item>XMLEvent</item> + <item>XMLEventAllocator</item> + <item>XMLEventConsumer</item> + <item>XMLEventFactory</item> + <item>XMLEventReader</item> + <item>XMLEventWriter</item> + <item>XmlID</item> + <item>XmlIDREF</item> + <item>XmlInlineBinaryData</item> + <item>XMLInputFactory</item> + <item>XmlJavaTypeAdapter</item> + <item>XmlJavaTypeAdapters</item> + <item>XmlList</item> + <item>XmlMimeType</item> + <item>XmlMixed</item> + <item>XmlNs</item> + <item>XmlNsForm</item> + <item>XMLObject</item> + <item>XMLOutputFactory</item> + <item>XmlRegistry</item> + <item>XMLReporter</item> + <item>XMLResolver</item> + <item>XmlRootElement</item> + <item>XmlSchema</item> + <item>XmlSchemaType</item> + <item>XmlSchemaTypes</item> + <item>XMLSignature</item> + <item>XMLSignatureException</item> + <item>XMLSignatureFactory</item> + <item>XMLSignContext</item> + <item>XMLStreamConstants</item> + <item>XMLStreamException</item> + <item>XMLStreamReader</item> + <item>XMLStreamWriter</item> + <item>XMLStructure</item> + <item>XmlTransient</item> + <item>XmlType</item> + <item>XMLValidateContext</item> + <item>XmlValue</item> + <item>XPathFilter2ParameterSpec</item> + <item>XPathFilterParameterSpec</item> + <item>XPathType</item> + <item>XSLTTransformParameterSpec</item> + <item>ZipError</item> + +<!-- end new classes --> + </list> + <list name="keywords"> + <item>abstract</item> + <item>break</item> + <item>case</item> + <item>catch</item> + <item>class</item> + <item>continue</item> + <item>default</item> + <item>do</item> + <item>else</item> + <item>enum</item> + <item>extends</item> + <item>false</item> + <item>finally</item> + <item>for</item> + <item>goto</item> + <item>if</item> + <item>implements</item> + <item>instanceof</item> + <item>@interface</item> + <item>interface</item> + <item>native</item> + <item>new</item> + <item>null</item> + <item>private</item> + <item>protected</item> + <item>public</item> + <item>return</item> + <item>super</item> + <item>strictfp</item> + <item>switch</item> + <item>synchronized</item> + <item>this</item> + <item>throws</item> + <item>throw</item> + <item>transient</item> + <item>true</item> + <item>try</item> + <item>volatile</item> + <item>while</item> + </list> + <list name="types"> + <item>boolean</item> + <item>byte</item> + <item>char</item> + <item>const</item> + <item>double</item> + <item>final</item> + <item>float</item> + <item>int</item> + <item>long</item> + <item>short</item> + <item>static</item> + <item>void</item> + </list> + <contexts> + <context attribute="Normal Text" lineEndContext="#stay" name="Normal"> + <!-- Comment next line if you don't use Javadoc tool --> + <IncludeRules context="##Javadoc"/> + <keyword attribute="Keyword" context="#stay" String="keywords"/> + <keyword attribute="Data Type" context="#stay" String="types"/> + <keyword attribute="Java15" context="#stay" String="java15"/> + <RegExpr attribute="Float" context="#stay" String="(\b∫\.?|(\b∫)?\.∫)([eE][\-\+]?∫[fFdD]?|[fFdD])\b"/> + <RegExpr attribute="Float" context="#stay" String="(\b∫\.|(\b∫)?\.∫\b)"/> + <RegExpr attribute="Float" context="#stay" String="\b0[xX](&hex;\.?|(&hex;)?\.&hex;)[pP][\-\+]?∫[fFdD]?\b"/> + <RegExpr attribute="Hex" context="#stay" String="\b0[xX]&hex;[lL]?\b"/> + <RegExpr attribute="Binary" context="#stay" String="\b0[bB][01]([01_]*[01])?[lL]?\b"/> + <RegExpr attribute="Octal" context="#stay" String="\b0[0-7]([0-7_]*[0-7])?[lL]?\b"/> + <RegExpr attribute="Decimal" context="#stay" String="\b(0|[1-9]([0-9_]*[0-9])?)[lL]?\b"/> + <HlCChar attribute="Char" context="#stay"/> + <RegExpr attribute="Char" context="#stay" String="'\\u[0-9a-fA-F]{4}'"/> + <RegExpr attribute="Decimal" context="#stay" String="//\s*BEGIN.*$" beginRegion="Region1"/> + <RegExpr attribute="Decimal" context="#stay" String="//\s*END.*$" endRegion="Region1"/> + <DetectChar attribute="String" context="String" char="""/> + <RegExpr attribute="Function" context="EnterPrintf" String="\.(format|printf)\b"/> + <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/> + <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/> + <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/> + <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/> + <RegExpr attribute="Keyword" context="#stay" String="\.{3,3}\s+" /> + <RegExpr attribute="Keyword" context="StaticImports" String="\b(import\s+static)\b" /> + <RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" /> + <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" /> + <RegExpr attribute="Annotation" context="#stay" String="@[_\w][_\w\d]*" /> + <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" /> + <DetectChar attribute="Symbol" context="InFunctionCall" char="("/> + <AnyChar attribute="Symbol" context="#stay" String=":!%&+,-/.*<=>?[]|~^;"/> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="InFunctionCall"> + <IncludeRules context="Normal"/> + <DetectChar attribute="Symbol" context="#pop" char=")"/> + </context> + <context attribute="String" lineEndContext="#pop" name="String"> + <LineContinue attribute="String" context="#stay"/> + <HlCStringChar attribute="String Char" context="#stay"/> + <RegExpr attribute="String Char" context="#stay" String="\\u[0-9a-fA-F]{4}"/> + <DetectChar attribute="String" context="#pop" char="""/> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="EnterPrintf" fallthrough="true" fallthroughContext="#pop"> + <DetectChar attribute="Symbol" context="Printf" char="("/> + <DetectSpaces attribute="Normal Text" context="#stay"/> + </context> + <context attribute="Normal Text" lineEndContext="#stay" name="Printf"> + <DetectChar attribute="String" context="PrintfString" char="""/> + <IncludeRules context="InFunctionCall"/> + </context> + <context attribute="PrintfString" lineEndContext="#pop" name="PrintfString"> + <LineContinue attribute="String" context="#stay"/> + <HlCStringChar attribute="String Char" context="#stay"/> + <DetectChar attribute="String" context="#pop" char="""/> + <RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(\.\d+)?[a-hosxA-CEGHSX]" /> + <RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(t|T)(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|N|p|P|Q|r|R|s|S|T|y|Y|z|Z)" /> + <RegExpr attribute="String Char" context="#stay" String="%(%|n)" /> + </context> + <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop"> + <RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)" /> + </context> + <context attribute="Normal Text" lineEndContext="#pop" name="StaticImports"> + <RegExpr attribute="StaticImports" context="#pop" String="\s*.*;" /> + </context> + <context attribute="Normal Text" lineEndContext="#pop" name="Imports"> + <RegExpr attribute="Imports" context="#pop" String="\s*.*;" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"> + <IncludeRules context="##Alerts"/> + </context> + <context attribute="Comment" lineEndContext="#stay" name="Commentar 2"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/> + <IncludeRules context="##Alerts"/> + </context> + </contexts> + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/> + <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/> + <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/> + <itemData name="StaticImports" defStyleNum="dsImport" spellChecking="false"/> + <itemData name="Imports" defStyleNum="dsImport" spellChecking="false"/> + <itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/> + <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/> + <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/> + <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/> + <itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/> + <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/> + <itemData name="Char" defStyleNum="dsChar" spellChecking="false"/> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/> + <itemData name="PrintfString" defStyleNum="dsString"/> + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="Java15" defStyleNum="dsBuiltIn" spellChecking="false"/> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="//"/> + <comment name="multiLine" start="/*" end="*/"/> + </comments> + <keywords casesensitive="1"/> + </general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/javadoc.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/javadoc.xml new file mode 100644 index 0000000000..e72488b221 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/javadoc.xml @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<language name="Javadoc" version="3" kateversion="5.0" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)"> + <highlighting> + <contexts> + <context name="Start" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="FindJavadoc" /> + </context> + <context name="FindJavadoc" attribute="Normal Text" lineEndContext="#stay"> + <StringDetect attribute="JavadocFS" context="#stay" String="/**/"/> + <StringDetect attribute="JavadocFS" context="JavadocFSar" String="/**" beginRegion="Javadoc"/> + </context> + <context attribute="JavadocFS" lineEndContext="#stay" name="JavadocFSar"> + <Detect2Chars attribute="JavadocFS" context="#pop" char="*" char1="/" endRegion="Javadoc"/> + <RegExpr attribute="JavadocFS" context="Javadocar" String="(!|\?)" /> + <RegExpr attribute="JavadocFS" context="Javadocar" String="(\.\s*$)" /> + <RegExpr attribute="JavadocFS" context="Javadocar" String="(\.\s)(?![\da-z])" /> + <RegExpr attribute="JavadocFS" context="Javadocar" String="\**\s*(?=@(author|deprecated|exception|param|return|see|serial|serialData|serialField|since|throws|version)(\s|$))" firstNonSpace="true"/> + <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code " /> + <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code	" /> + <StringDetect attribute="InlineTag" context="#stay" String="{@docRoot}" /> + <StringDetect attribute="InlineTag" context="#stay" String="{@inheritDoc}" /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@link " /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@link	" /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain " /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain	" /> + <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal " /> + <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal	" /> + <StringDetect attribute="InlineTag" context="#stay" String="{@value}" /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@value	" /> + <IncludeRules context="##Alerts"/> + <IncludeRules context="##HTML"/> + </context> + <context attribute="Javadoc" lineEndContext="#stay" name="Javadocar"> + <Detect2Chars attribute="JavadocFS" context="#pop#pop" char="*" char1="/" endRegion="Javadoc"/> + <RegExpr attribute="JavadocFS" context="#stay" String="\*+(?!/)" firstNonSpace="true"/> + <StringDetect attribute="BlockTag" context="#stay" String="@author " /> + <StringDetect attribute="BlockTag" context="#stay" String="@deprecated " /> + <StringDetect attribute="BlockTag" context="JavadocParam" String="@exception " /> + <StringDetect attribute="BlockTag" context="JavadocParam" String="@param " /> + <StringDetect attribute="BlockTag" context="#stay" String="@return " /> + <StringDetect attribute="BlockTag" context="SeeTag" String="@see "/> + <StringDetect attribute="BlockTag" context="#stay" String="@serial " /> + <StringDetect attribute="BlockTag" context="#stay" String="@serialData " /> + <StringDetect attribute="BlockTag" context="#stay" String="@serialField " /> + <StringDetect attribute="BlockTag" context="#stay" String="@since " /> + <StringDetect attribute="BlockTag" context="JavadocParam" String="@throws " /> + <StringDetect attribute="BlockTag" context="#stay" String="@version " /> + <StringDetect attribute="BlockTag" context="#stay" String="@author	" /> + <StringDetect attribute="BlockTag" context="#stay" String="@deprecated	" /> + <StringDetect attribute="BlockTag" context="JavadocParam" String="@exception	" /> + <StringDetect attribute="BlockTag" context="JavadocParam" String="@param	" /> + <StringDetect attribute="BlockTag" context="#stay" String="@return	" /> + <StringDetect attribute="BlockTag" context="SeeTag" String="@see	" /> + <StringDetect attribute="BlockTag" context="#stay" String="@serial	" /> + <StringDetect attribute="BlockTag" context="#stay" String="@serialData	" /> + <StringDetect attribute="BlockTag" context="#stay" String="@serialField	" /> + <StringDetect attribute="BlockTag" context="#stay" String="@since	" /> + <StringDetect attribute="BlockTag" context="JavadocParam" String="@throws	" /> + <StringDetect attribute="BlockTag" context="#stay" String="@version	" /> + <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code " /> + <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code	" /> + <StringDetect attribute="InlineTag" context="#stay" String="{@docRoot}" /> + <StringDetect attribute="InlineTag" context="#stay" String="{@inheritDoc}" /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@link " /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@link	" /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain " /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain	" /> + <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal " /> + <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal	" /> + <StringDetect attribute="InlineTag" context="#stay" String="{@value}" /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " /> + <StringDetect attribute="InlineTag" context="InlineTagar" String="{@value	" /> + <IncludeRules context="##Alerts"/> + <IncludeRules context="##HTML"/> + </context> + <context attribute="Javadoc" lineEndContext="#pop" name="JavadocParam"> + <DetectSpaces /> + <RegExpr attribute="JavadocParam" context="#pop#pop" String="\S*(?=\*/)" /> + <RegExpr attribute="JavadocParam" context="#pop" String="\S*(\s|$)" /> + <IncludeRules context="##Alerts"/> + </context> + <context attribute="InlineTag" name="InlineTagar" lineEndContext="#stay"> + <DetectChar attribute="InlineTag" context="#pop" char="}" /> + <Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" /> + <IncludeRules context="##HTML"/> + </context> + <context attribute="InlineTag" name="LiteralTagar" lineEndContext="#stay"> + <DetectChar attribute="InlineTag" context="#pop" char="}" /> + <Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" /> + </context> + <context attribute="SeeTag" lineEndContext="#pop" name="SeeTag"> + <Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" /> + <IncludeRules context="##HTML"/> + </context> + </contexts> + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal"/> + <itemData name="BlockTag" defStyleNum="dsAnnotation" bold="1" italic="0" spellChecking="false"/> + <itemData name="InlineTag" defStyleNum="dsAnnotation" bold="0" italic="0" spellChecking="false"/> + <itemData name="JavadocParam" defStyleNum="dsAnnotation" bold="0" italic="1" spellChecking="false"/> + <itemData name="SeeTag" defStyleNum="dsAnnotation" bold="0" italic="1" spellChecking="false"/> + <itemData name="JavadocFS" defStyleNum="dsComment" bold="1" italic="0" spellChecking="false"/> + <itemData name="Javadoc" defStyleNum="dsComment"/> + </itemDatas> + </highlighting> + <general> + <keywords casesensitive="1"/> + </general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/json.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/json.xml new file mode 100644 index 0000000000..28ad8e8a33 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/json.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<!-- + *************************************************************************** + ** Writing a Kate Highlighting XML File + ** http://kate-editor.org/article/writing_a_kate_highlighting_xml_file + ** + ** Introducing JSON + ** http://www.json.org/ + ** + ** The application/json Media Type for JavaScript Object Notation (JSON) + ** http://tools.ietf.org/html/rfc4627 + *************************************************************************** +--> +<language name="JSON" section="Markup" version="3" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.gltf" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL"> + <highlighting> + <list name="Constants"> + <item>null</item> + <item>true</item> + <item>false</item> + </list> + + <contexts> + <context name="Normal" lineEndContext="#stay" attribute="Style_Error"> + <DetectChar char="{" context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" /> + <DetectChar char="[" context="Array" beginRegion="Region_Array" attribute="Style_Seperator_Array" /> + + <DetectSpaces context="#stay" attribute="Style_Normal" /> + </context> + + <context name="Pair" lineEndContext="#stay" attribute="Style_Error"> + <DetectChar char=""" context="String_Key" attribute="Style_String_Key" /> + <DetectChar char=":" context="Value" attribute="Style_Seperator_Pair" /> + <DetectChar char="}" context="#pop" endRegion="Region_Object" attribute="Style_Seperator_Pair" /> + <DetectChar char="," context="#stay" attribute="Style_Seperator_Pair" /> + + <DetectSpaces context="#stay" attribute="Style_Normal" /> + </context> + + <context name="String_Key" lineEndContext="#stay" attribute="Style_String_Key"> + <DetectChar char=""" context="#pop" attribute="Style_String_Key" /> + <RegExpr String="\\(?:["\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" insensitive="false" minimal="false" attribute="Style_String_Key_Char" /> + </context> + + <context name="Value" lineEndContext="#stay" attribute="Style_Error" > + <DetectChar char=""" context="String_Value" attribute="Style_String_Value" /> + <DetectChar char="{" context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" /> + <DetectChar char="[" context="Array" beginRegion="Region_Array" attribute="Style_Seperator_Array" /> + <DetectChar char="}" context="#pop" lookAhead="true" /> + <DetectChar char="," context="#pop" lookAhead="true" /> + + <DetectSpaces context="#stay" attribute="Style_Normal" /> + + <keyword String="Constants" context="#stay" attribute="Style_Keyword" /> + + <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)\.[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Float" /> + <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Decimal" /> + </context> + + <context name="String_Value" lineEndContext="#stay" attribute="Style_String_Value"> + <DetectChar char=""" context="#pop" attribute="Style_String_Value" /> + <RegExpr String="\\(?:["\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" insensitive="false" minimal="false" attribute="Style_String_Value_Char" /> + </context> + + <context name="Array" lineEndContext="#stay" attribute="Style_Error"> + <DetectChar char="," context="#stay" attribute="Style_Seperator_Array" /> + <DetectChar char="]" context="#pop" endRegion="Region_Array" attribute="Style_Seperator_Array" /> + + <DetectChar char="{" context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" /> + <DetectChar char="[" context="Array" beginRegion="Region_Array" attribute="Style_Seperator_Array" /> + <DetectChar char=""" context="String_Value" attribute="Style_String_Value" /> + + <DetectSpaces context="#stay" attribute="Style_Normal" /> + + <keyword String="Constants" context="#stay" attribute="Style_Keyword" /> + + <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)\.[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Float" /> + <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Decimal" /> + </context> + </contexts> + + <itemDatas> + <itemData name="Style_Normal" defStyleNum="dsNormal" /> + + <itemData name="Style_Seperator_Pair" defStyleNum="dsFunction" bold="true" /> + <itemData name="Style_Seperator_Array" defStyleNum="dsOthers" bold="true" /> + + <itemData name="Style_Decimal" defStyleNum="dsDecVal" /> + <itemData name="Style_Float" defStyleNum="dsFloat" /> + <itemData name="Style_String_Key" defStyleNum="dsDataType" /> + <itemData name="Style_String_Value" defStyleNum="dsString" /> + <itemData name="Style_String_Key_Char" defStyleNum="dsChar" /> + <itemData name="Style_String_Value_Char" defStyleNum="dsChar" /> + + <itemData name="Style_Keyword" defStyleNum="dsKeyword" /> + + <itemData name="Style_Error" defStyleNum="dsError" /> + </itemDatas> + </highlighting> +</language> +<!-- +// kate: space-indent on; indent-width 2; replace-tabs on; +--> + diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/makefile.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/makefile.xml new file mode 100644 index 0000000000..6067a2470f --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/makefile.xml @@ -0,0 +1,498 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<!-- Makefile syntaxfile v0.9 by Per Wigren <wigren@home.se> --> +<!-- Modified by Joseph Wenninger <jowenn@kde.org> --> +<!-- Modified by Rui Santana <santana.rui@gmail.com> --> +<!-- v2.0 by Andreas Nordal <andreas.nordal@gmail.com> --> +<!-- small priority to allow for example Makefile.cpp to be detected as cpp file --> +<!-- v2.1 by Alex Turbov <i.zaufi@gmail.com> + improve comments handling --> +<!-- v4 by Alex Richardson <arichardson.kde@gmail.com> + added bmake support --> +<language name="Makefile" section="Other" + version="7" kateversion="3.4" + extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk" + mimetype="text/x-makefile" priority="11" + author="Per Wigren (wigren@home.se)" license=""> + <highlighting> + <list name = "keywords" > + <item>include</item> + <item>-include</item> + <item>define</item> + <item>endef</item> + </list> + <!-- https://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html --> + <list name="gmake_if_keywords"> + <item>if</item> + <item>ifeq</item> + <item>ifneq</item> + <item>ifdef</item> + <item>ifndef</item> + </list> + <list name="gmake_else_keywords"><item>else</item></list> + <list name="gmake_endif_keywords"><item>endif</item></list> + <!-- bmake statements: https://www.freebsd.org/cgi/man.cgi?make(1)#INCLUDE_STATEMENTS,_CONDITIONALS_AND_FOR_LOOPS --> + <list name="bmake_if_keywords"> + <item>.if</item> + <item>.ifdef</item> + <item>.ifndef</item> + <item>.ifmake</item> + <item>.ifnmake</item> + </list> + <list name="bmake_else_keywords"> + <item>.elif</item> + <item>.elifdef</item> + <item>.elifndef</item> + <item>.elifmake</item> + <item>.elifnmake</item> + <item>.else</item> <!-- TODO: anything following .else should be highlighted as an error --> + </list> + <list name="bmake_endif_keywords"><item>.endif</item></list> + + <list name="bmake_expressions"> + <item>defined</item> + <item>empty</item> + <item>exists</item> + <item>target</item> + <item>commands</item> + </list> + + <list name="bmake_include_stmt"> + <item>.include</item> + <item>.-include</item> + <item>.sinclude</item> + <!-- For compat bmake also handles include but this is already highlighted. <item>include</item> --> + </list> + <list name="bmake_message_stmt"> + <item>.info</item> + <item>.warning</item> + <item>.error</item> + </list> + <!-- Use single element list here so that .for/.endfor also shows up in code completion --> + <list name="bmake_for_stmt"><item>.for</item></list> + <list name="bmake_endfor_stmt"><item>.endfor</item></list> + + <!-- https://www.freebsd.org/cgi/man.cgi?make(1)#SPECIAL_TARGETS --> + <list name="bmake_special_targets"> + <item>.BEGIN</item> + <item>.DEFAULT</item> + <item>.END</item> + <item>.ERROR</item> + <item>.IGNORE</item> + <item>.INTERRUPT</item> + <item>.MAIN</item> + <item>.MAKEFLAGS</item> + <item>.NOPATH</item> + <item>.NOTPARALLEL</item> + <item>.NO_PARALLEL</item> + <item>.OBJDIR</item> + <item>.ORDER</item> + <item>.PATH</item> + <item>.PHONY</item> + <item>.PRECIOUS</item> + <item>.SHELL</item> + <item>.SILENT</item> + <item>.STALE</item> + <item>.SUFFIXES</item> + </list> + <!-- https://www.freebsd.org/cgi/man.cgi?make(1)#SPECIAL_SOURCES_(ATTRIBUTES) --> + <list name="bmake_special_sources"> + <item>.EXEC</item> + <item>.IGNORE</item> + <item>.MADE</item> + <item>.MAKE</item> + <item>.META</item> + <item>.NOMETA</item> + <item>.NOMETA_CMP</item> + <item>.NOPATH</item> + <item>.NOTMAIN</item> + <item>.OPTIONAL</item> + <item>.PHONY</item> + <item>.PRECIOUS</item> + <item>.RECURSIVE</item> + <item>.SILENT</item> + <item>.USE</item> + <item>.USEBEFORE</item> + <item>.WAIT</item> + </list> + + <list name="bmake_other_stmts"> + <item>.unexport-env</item> + <item>.unexport</item> + <item>.undef</item> + <item>.export-env</item> + <item>.export</item> + </list> + + <list name = "functions"> + <item>call</item> + <item>subst</item> + <item>patsubst</item> + <item>strip</item> + <item>findstring</item> + <item>filter</item> + <item>filter-out</item> + <item>sort</item> + <item>word</item> + <item>wordlist</item> + <item>words</item> + <item>firstword</item> + <item>lastword</item> + <item>dir</item> + <item>notdir</item> + <item>suffix</item> + <item>basename</item> + <item>addsuffix</item> + <item>addprefix</item> + <item>join</item> + <item>wildcard</item> + <item>realpath</item> + <item>abspath</item> + <item>if</item> + <item>or</item> + <item>and</item> + <item>foreach</item> + <item>value</item> + <item>eval</item> + <item>origin</item> + <item>flavor</item> + <item>shell</item> + <item>error</item> + <item>warning</item> + <item>info</item> + </list> + <contexts> + <context name="normal" attribute="Normal" lineEndContext="#stay"> + <DetectSpaces/> + <DetectChar attribute="Comment" context="Comment" char="#"/> + <keyword attribute="ControlFlow" String="bmake_if_keywords" context="bmake_conditional" beginRegion="bmake_if" firstNonSpace="true"/> + <!--TODO: trailing non-space after .else should be highlighted as an error --> + <keyword attribute="ControlFlow" String="bmake_else_keywords" context="bmake_conditional" endRegion="bmake_if" beginRegion="bmake_if" firstNonSpace="true"/> + <keyword attribute="ControlFlow" String="bmake_endif_keywords" context="#stay" endRegion="bmake_if"/> + + <keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay" beginRegion="gmake_if" firstNonSpace="true"/> + <!--TODO: trailing non-space after .else should be highlighted as an error --> + <keyword attribute="ControlFlow" String="gmake_else_keywords" context="gmake_else" endRegion="gmake_if" beginRegion="gmake_if" firstNonSpace="true"/> + <keyword attribute="ControlFlow" String="gmake_endif_keywords" context="#stay" endRegion="gmake_if"/> + + <keyword attribute="Keyword" context="#stay" String="keywords"/> + <keyword attribute="Keyword" context="bmake_other_stmts" String="bmake_other_stmts" firstNonSpace="true"/> + <RegExpr attribute="Variable" context="assign" String="[^\s+:?+]*\s*(?=:=|=|\+=|\?=)"/> + <keyword attribute="SpecialTarget" context="bmake_special_target" String="bmake_special_targets" firstNonSpace="true"/> + <RegExpr attribute="SpecialTarget" context="prereq" String="\.PATH\.[^:]*:" firstNonSpace="true"/> + <keyword attribute="Keyword" context="bmake_include" String="bmake_include_stmt" firstNonSpace="true"/> + <keyword attribute="Keyword" context="bmake_message" String="bmake_message_stmt" firstNonSpace="true"/> + <keyword attribute="Keyword" context="bmake_for_loop" String="bmake_for_stmt" firstNonSpace="true" beginRegion="for"/> + <keyword attribute="Keyword" context="#stay" String="bmake_endfor_stmt" firstNonSpace="true" endRegion="for"/> + + <RegExpr attribute="Section" context="prereq" String="^\.[^.][^:]*:"/> + <RegExpr attribute="Target" context="prereq" String="^[^:]*:"/> + <DetectIdentifier/> + <DetectChar attribute="String" context="string"" char="""/> + <DetectChar attribute="String" context="string'" char="'"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> + <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> + <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/> + </context> + + <context name="strings_and_vars" attribute="Normal" lineEndContext="#pop"> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <DetectChar attribute="String" context="string"" char="""/> + <DetectChar attribute="String" context="string'" char="'"/> + <DetectChar attribute="Comment" context="Comment" char="#"/> + </context> + + <context name="gmake_else" attribute="Error" lineEndContext="#pop"> + <DetectSpaces attribute="Normal"/> + <keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay"/> + <IncludeRules context="strings_and_vars"/> + </context> + + <context name="bmake_include" attribute="Normal" lineEndContext="#pop"> + <DetectSpaces /> + <RangeDetect char="<" char1=">" context="#stay" attribute="Include" /> + <RangeDetect char=""" char1=""" context="#stay" attribute="Include" /> + </context> + + + <context name="bmake_conditional" attribute="Normal" lineEndContext="#pop"> + <DetectSpaces/> + <IncludeRules context="strings_and_vars"/> + <keyword attribute="Builtin" context="bmake_expression" String="bmake_expressions"/> + <Detect2Chars attribute="RealOperator" context="#stay" char="&" char1="&"/> + <Detect2Chars attribute="RealOperator" context="#stay" char="|" char1="|"/> + <Detect2Chars attribute="RealOperator" context="#stay" char="!" char1="="/> + <Detect2Chars attribute="RealOperator" context="#stay" char="=" char1="="/> + <DetectChar attribute="RealOperator" context="#stay" char="!"/> + <HlCHex attribute="Number" context="#stay"/> + <Int attribute="Number" context="#stay"/> + <DetectIdentifier attribute="Variable" context="#stay"/> + <LineContinue attribute="Operator" context="#stay"/> + </context> + + <context name="bmake_for_loop" attribute="Variable" lineEndContext="#pop"> + <DetectSpaces/> + <IncludeRules context="strings_and_vars"/> + <WordDetect attribute="RealOperator" context="#stay" String="in" /> + </context> + + <context name="bmake_other_stmts" attribute="Variable" lineEndContext="#pop"> + <DetectSpaces/> + <IncludeRules context="strings_and_vars"/> + </context> + + <context name="bmake_expression" attribute="Variable" lineEndContext="#pop"> + <DetectSpaces/> + <IncludeRules context="strings_and_vars"/> + <DetectChar attribute="Normal" context="#stay" char="("/> + <DetectChar attribute="Normal" context="#pop" char=")"/> + <DetectIdentifier attribute="Variable"/> + </context> + + <context name="bmake_special_target" attribute="Error" lineEndContext="rule"> + <!-- anything but spaces before the : should be an error --> + <DetectSpaces attribute="Normal" /> + <DetectChar attribute="SpecialTarget" context="#pop!prereq" char=":"/> + </context> + + <context name="bmake_message" attribute="String" lineEndContext="#pop"> + <DetectChar attribute="Operator" context="dollar" char="$"/> + </context> + + <context name="prereq" attribute="Prereq" lineEndContext="rule"> + <DetectSpaces/> + <keyword attribute="SpecialPrereq" context="#stay" String="bmake_special_sources"/> + <DetectIdentifier/> + <LineContinue attribute="Operator" context="#stay"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> + <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> + <DetectChar attribute="Comment" context="Comment" char="#"/> + </context> + + <context name="rule" attribute="Normal" lineEndContext="#stay"> + <LineContinue attribute="Operator" context="#stay"/> + <!-- pop if there is a leading non-tab, + and in particular, mark leading spaces as errors --> + <RegExpr attribute="Error" context="#pop#pop#pop" String="^ +" firstNonSpace="1"/> + <RegExpr context="#pop#pop#pop" String="^[^\t]" lookAhead="1" firstNonSpace="1"/> + <DetectSpaces/> + <DetectIdentifier/> + <DetectChar attribute="String" context="string"" char="""/> + <DetectChar attribute="String" context="string'" char="'"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> + <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> + <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/> + <DetectChar attribute="Comment" context="Comment" char="#"/> + </context> + + <context name="silent" attribute="Silent" lineEndContext="#pop"> + <LineContinue attribute="Operator" context="#stay"/> + <DetectSpaces/> + <DetectIdentifier/> + <DetectChar attribute="String" context="string"" char="""/> + <DetectChar attribute="String" context="string'" char="'"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> + <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> + <DetectChar attribute="Comment" context="Comment" char="#"/> + </context> + + <context name="string"" attribute="String" lineEndContext="#pop"> + <LineContinue attribute="Operator" context="#stay"/> + <DetectChar attribute="String" context="#pop" char="""/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + </context> + + <context name="string'" attribute="String" lineEndContext="#pop"> + <LineContinue attribute="String" context="#stay"/> + <DetectChar attribute="String" context="#pop" char="'"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + </context> + + <context name="assign" attribute="Operator" lineEndContext="#pop"> + <DetectChar attribute="Operator" context="value" char="="/> + </context> + + <context name="value" attribute="String" lineEndContext="#pop#pop"> + <LineContinue attribute="Operator"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <RegExpr attribute="Special" context="#pop#pop" String="@[-_\d\w]*@"/> + <DetectChar attribute="Operator" char=";" context="#pop#pop"/> + </context> + + <context name="dollar" attribute="Operator" lineEndContext="#pop"> + <DetectChar attribute="Operator" context="call(" char="("/> + <DetectChar attribute="Operator" context="call{" char="{"/> + <RegExpr attribute="Operator" context="#pop" String="."/> + </context> + + <context name="call(" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar(" fallthrough="1"> + <keyword attribute="Keyword" context="callFunc(" String="functions"/> + </context> + + <context name="call{" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar{" fallthrough="1"> + <keyword attribute="Keyword" context="callFunc{" String="functions"/> + </context> + + <context name="callVar(" attribute="Variable" lineEndContext="#stay"> + <DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <DetectSpaces attribute="Error" context="#stay"/> + <AnyChar attribute="Error" context="#stay" String="=#:"/> + </context> + + <context name="callVar{" attribute="Variable" lineEndContext="#stay"> + <DetectChar attribute="Operator" char="}" context="#pop#pop#pop"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <DetectSpaces attribute="Error" context="#stay"/> + <!-- Handle bmake Variable modifiers: ${variable[:modifier[:...]]} --> + <Detect2Chars context="#stay" char="\" char1=":"/> + <!-- other modifiers --> + <DetectChar attribute="RealOperator" context="bmake_var_modifier" char=":"/> + <AnyChar attribute="Error" context="#stay" String="=#"/> + </context> + + <context name="bmake_var_modifier_arg" attribute="VarModifier" lineEndContext="#pop"> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <Detect2Chars context="#stay" char="\" char1="}"/> + <DetectChar attribute="Operator" char="}" context="#pop#pop#pop#pop"/> + <Detect2Chars context="#stay" char="\" char1=":"/> + <DetectChar attribute="RealOperator" context="#pop!bmake_var_modifier" char=":"/> + </context> + + <!-- TODO: once all modifiers are properly handled change fallthroughContext to "expect}" --> + <context name="bmake_var_modifier" attribute="VarModifier" lineEndContext="#pop" fallthroughContext="#pop!bmake_var_modifier_arg" fallthrough="true"> + <DetectChar attribute="Operator" context="dollar" char="$"/> + + <!-- + TODO :?true_string:false_string + TODO :old_string=new_string This is the AT&T System V UNIX style variable substitution. + TODO :@temp@string@ This is the loop expansion mechanism from the OSF Development Environment (ODE) make. + TODO :!cmd! The output of running cmd is the value. + TODO :[range] + --> + <!-- Modifiers without arguments:--> + <!-- + :E Replaces each word in the variable with its suffix. + :H Replaces each word in the variable with everything but the last component. + :O Order every word in variable alphabetically. + :Q Quotes every shell meta-character in the variable + :R Replaces each word in the variable with everything but its suffix. + :T Replaces each word in the variable with its last component. + :u Remove adjacent duplicate words (like uniq(1)). + :L The name of the variable is the value. + :P The path of the node which has the same name as the variable is the value. + --> + <AnyChar attribute="Builtin" context="#pop!expect}" String="EHOQRTuLP"/> + <!-- :sh If the variable is non-empty it is run as a command and the output becomes the new value. --> + <Detect2Chars attribute="Builtin" context="#pop!expect}" char="s" char1="h"/> + <!-- :Ox Randomize words in variable. --> + <Detect2Chars attribute="Builtin" context="#pop!expect}" char="O" char1="x"/> + <!-- :tA Attempt to convert variable to an absolute path using realpath(3),--> + <Detect2Chars attribute="Builtin" context="#pop!expect}" char="t" char1="A"/> + <!-- :tl Converts variable to lower-case letters.--> + <Detect2Chars attribute="Builtin" context="#pop!expect}" char="t" char1="L"/> + <!-- :gmtime The value is a format string for strftime(3), using the current gmtime(3). --> + <StringDetect attribute="Builtin" String="gmtime" context="#pop!expect}" /> + <!-- :hash Compute a 32bit hash of the value and encode it as hex digits. --> + <StringDetect attribute="Builtin" String="hash" context="#pop!expect}" /> + <!-- :localtime The value is a format string for strftime(3), using the current localtime(3). --> + <StringDetect attribute="Builtin" String="localtime" context="#pop!expect}" /> + <!--Now the modifiers with arguments:--> + <!-- + :Mpattern Select only those words that match pattern. + :Npattern This is identical to `:M', but selects all words which do not match pattern. + :Dnewval If the variable is defined newval is the value. + :Unewval If the variable is undefined newval is the value. + --> + <AnyChar attribute="Builtin" context="#pop!bmake_var_modifier_arg" String="MNDU"/> + <!-- TODO: add new context to highligh old_string and new_string differently + :S/old_string/new_string/[1gW] + :C/pattern/replacement/[1gW] + --> + <AnyChar attribute="Builtin" context="#pop!bmake_var_modifier_arg" String="SC"/> + <!-- ::=str The variable is assigned the value str after substitution. --> + <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char=":" char1="="/> + <!-- ::?=str As for ::= but only if the variable does not already have a value. --> + <StringDetect attribute="Builtin" String=":?=" context="#pop!bmake_var_modifier_arg" /> + <!-- ::+=str Append str to the variable. --> + <StringDetect attribute="Builtin" String=":+=" context="#pop!bmake_var_modifier_arg" /> + <!-- ::!=cmd Assign the output of cmd to the variable. --> + <StringDetect attribute="Builtin" String=":!=" context="#pop!bmake_var_modifier_arg" /> + <!-- :tu Converts variable to upper-case letters. --> + <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="u"/> + <!-- :tW Causes the value to be treated as a single word. See also `:[*]'. --> + <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="W"/> + <!-- :tw Causes the value to be treated as a sequence of words delimited by white space. See also `:[@]'.--> + <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="w"/> + <!-- :tsc Words in the variable are normally separated by a space on + expansion. This modifier sets the separator to the character c. If + c is omitted, then no separator is used. The common escapes + (including octal numeric codes), work as expected. --> + <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="s"/> + + <IncludeRules context="bmake_var_modifier_arg"/> + </context> + + <context name="expect}" attribute="Error" lineEndContext="#pop#pop#pop#pop"> + <Detect2Chars context="#stay" char="\" char1="}"/> + <DetectChar attribute="Operator" char="}" context="#pop#pop#pop#pop"/> + </context> + + <context name="callFunc(" attribute="FuncParam" lineEndContext="#stay"> + <DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <DetectChar attribute="Keyword" context="#stay" char=","/> + <DetectChar attribute="String" context="string'" char="'"/> + </context> + + <context name="callFunc{" attribute="FuncParam" lineEndContext="#stay"> + <DetectChar attribute="Operator" char="}" context="#pop#pop#pop"/> + <DetectChar attribute="Operator" context="dollar" char="$"/> + <DetectChar attribute="Keyword" context="#stay" char=","/> + <DetectChar attribute="String" context="string'" char="'"/> + </context> + + <context attribute="Comment" lineEndContext="#pop" name="Comment"> + <LineContinue attribute="Comment" context="#stay" /> + <IncludeRules context="##Alerts" /> + <IncludeRules context="##Modelines" /> + </context> + + </contexts> + <itemDatas> + <itemData name="Normal" defStyleNum="dsNormal" spellChecking="0"/> + <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0"/> + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="String" defStyleNum="dsString" spellChecking="0"/> + <itemData name="Variable" defStyleNum="dsDataType" spellChecking="0"/> + <itemData name="Target" defStyleNum="dsDecVal" spellChecking="0"/> + <itemData name="Section" defStyleNum="dsOthers" spellChecking="0"/> + <itemData name="Prereq" defStyleNum="dsDataType" spellChecking="0"/> + <itemData name="FuncParam" defStyleNum="dsString" spellChecking="0"/> + <itemData name="Operator" defStyleNum="dsChar" spellChecking="0"/> + <itemData name="Silent" defStyleNum="dsFunction" spellChecking="0"/> + <itemData name="Special" defStyleNum="dsFloat" spellChecking="0"/> + <itemData name="Error" defStyleNum="dsError" spellChecking="0"/> + <itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="0"/> + <itemData name="Number" defStyleNum="dsDecVal" spellChecking="0"/> + <itemData name="Include" defStyleNum="dsImport" spellChecking="0"/> + <itemData name="ControlFlow" defStyleNum="dsControlFlow" spellChecking="0"/> + <itemData name="VarModifier" defStyleNum="dsSpecialString" spellChecking="0"/> + <itemData name="RealOperator" defStyleNum="dsKeyword" spellChecking="0"/> + <itemData name="SpecialTarget" defStyleNum="dsOthers" spellChecking="0" bold="1"/> + <itemData name="SpecialPrereq" defStyleNum="dsDataType" spellChecking="0" bold="1"/> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name = "singleLine" start = "#"/> + </comments> + <!-- '-' is not a deliminator in function filter-out --> + <keywords casesensitive="1" weakDeliminator = ".-"/> + </general> +</language> +<!-- kate: space-indent on; indent-width 2; replace-tabs on; --> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/markdown.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/markdown.xml new file mode 100644 index 0000000000..39ffaf77af --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/markdown.xml @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Kate syntax highlight filter for Markdown/MultiMarkdown documents. + + Copyright 2008 Darrin Yeager. http://www.dyeager.org/ + Dual-Licensed under both GPL and BSD licenses. + + Extended 2009 Claes Holmerson. http://github.com/claes/kate-markdown/ +--> +<!-- + The [^\s]{1} is in the regex to avoid interfering with bullet list which + starts "* item". Thus emphasis/strong MUST be formed like *words here* + with the asterisks next to the beginning of the first word. + + Match space or newline, followed by "*", followed by one non-space, + followed by anything non-asterisk, followed by "*", followed by + space, end-of-sentence punctuation, or the end of the line. +--> +<!DOCTYPE language SYSTEM "language.dtd" +[ +<!ENTITY strongemphasisregex "(\s|^)[\*_]{3}[^\*_]+[\*_]{3}(\s|\.|,|;|:|\-|\?|$)"> +<!ENTITY strongregex "(\s|^)[\*_]{2}[^\s]{1}[^\*_]+[\*_]{2}(\s|\.|,|;|:|\-|\?|$)"> +<!ENTITY emphasisregex "(\s|^)[\*_]{1}[^\s]{1}[^\*_]+[\*_]{1}(\s|\.|,|;|:|\-|\?|$)"> +<!ENTITY reflinkregex '\[[^\]\^]+\]\s*\[[^\]]*\]\s*(\s+\"[^\"]*\"){0,1}'> +<!ENTITY reflinktargetregex '\[[^\]\^]+\]\:\s+[^\s]+(\s+\"[^\"]*\"){0,1}'> +<!ENTITY footnoteregex "\[\^[^\]]+\]"> +<!ENTITY inlinelinkregex "\[[^\]\^]+\]\s*\([^\(]*\)"> +<!ENTITY inlineimageregex "\!\[[^\]\^]+\]\([^\(]*\)"> +<!ENTITY refimageregex "\!\[[^\]\^]+\]\[[^\[]*\]"> +<!ENTITY autolinkregex '<(https?|ftp):[^\">\s]+>'> +<!ENTITY mailtolinkregex "<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>"> +<!ENTITY rulerregex "\s*([\*\-_]\s?){3,}\s*"> +<!-- two spaces at end of line generates linebreak --> +<!ENTITY linebreakregex " $"> +<!ENTITY strikeoutregex "[~]{2}[^~].*[^~][~]{2}"> +<!-- pandoc style --> +]> +<language name="Markdown" version="3" kateversion="3.8" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD"> + <highlighting> + <contexts> + <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text"> + <DetectChar context="blockquote" char=">" column="0"/> + <RegExpr attribute="h1" String="^#\s.*[#]?$"/> + <RegExpr attribute="h2" String="^##\s.*[#]?$"/> + <RegExpr attribute="h3" String="^###\s.*[#]?$"/> + <RegExpr attribute="h4" String="^####\s.*[#]?$"/> + <RegExpr attribute="h5" String="^#####\s.*[#]?$"/> + <RegExpr attribute="h6" String="^######\s.*[#]?$"/> + <RegExpr attribute="ruler" String="&rulerregex;"/> + <RegExpr attribute="strong" String="&strongregex;"/> + <RegExpr attribute="emphasis" String="&emphasisregex;"/> + <RegExpr attribute="strongemphasis" String="&strongemphasisregex;"/> + <RegExpr attribute="code" String="^([\s]{4,}|\t+).*$"/> + <RegExpr context="bullet" String="^[\*\+\-]\s"/> + <RegExpr context="numlist" String="^[\d]+\.\s"/> + <RegExpr attribute="meta" String="^(Title|Author|Date|Copyright|Revision|CSS|LaTeX\ XSLT|Categories|Tags|BaseName|Excerpt):(.*)+$"/> + <IncludeRules context="inc"/> + </context> + <context attribute="blockquote" lineEndContext="#stay" lineEmptyContext="#pop" name="blockquote"> + <RegExpr attribute="bq-strong" String="&strongregex;"/> + <RegExpr attribute="bq-emphasis" String="&emphasisregex;"/> + <IncludeRules context="inc"/> + </context> + <context attribute="bullet" lineEndContext="#stay" lineEmptyContext="#pop" name="bullet"> + <RegExpr attribute="bl-strong" String="&strongregex;"/> + <RegExpr attribute="bl-emphasis" String="&emphasisregex;"/> + <IncludeRules context="inc"/> + </context> + <context attribute="numlist" lineEndContext="#stay" lineEmptyContext="#pop" name="numlist"> + <RegExpr attribute="nl-strong" String="&strongregex;"/> + <RegExpr attribute="nl-emphasis" String="&emphasisregex;"/> + <IncludeRules context="inc"/> + </context> + <context attribute="comment" lineEndContext="#stay" name="comment"> + <RegExpr String="-->" attribute="comment" context="#pop" endRegion="comment"/> + </context> + <context attribute="code" lineEndContext="#stay" name="php-code"> + <WordDetect attribute="code" context="#pop" String="```"/> + <IncludeRules context="phpsource##PHP/PHP"/> + </context> + <context attribute="code" lineEndContext="#stay" name="python-code"> + <WordDetect attribute="code" context="#pop" String="```"/> + <IncludeRules context="##Python"/> + </context> + <context attribute="code" lineEndContext="#stay" name="code"> + <WordDetect attribute="code" context="#pop" String="```"/> + </context> + <context attribute="common" name="inc" lineEndContext="#stay"> + <RegExpr attribute="code" String="`[^`]+`"/> + <RegExpr context="comment" String="<!--" beginRegion="comment"/> + <RegExpr attribute="reflink" String="&reflinkregex;"/> + <RegExpr attribute="footnote" String="&footnoteregex;"/> + <RegExpr attribute="inlinelink" String="&inlinelinkregex;"/> + <RegExpr attribute="reflinktarget" String="&reflinktargetregex;"/> + <RegExpr attribute="inlineimage" String="&inlineimageregex;"/> + <RegExpr attribute="refimage" String="&refimageregex;"/> + <RegExpr attribute="autolink" String="&autolinkregex;"/> + <RegExpr attribute="mailtolink" String="&mailtolinkregex;"/> + <RegExpr attribute="strikeout" minimal="true" String="&strikeoutregex;"/> + <RegExpr attribute="linebreak" minimal="true" String="&linebreakregex;"/> + <WordDetect attribute="code" context="php-code" String="```php"/> + <WordDetect attribute="code" context="python-code" String="```python"/> + <StringDetect attribute="code" context="code" String="```"/> + </context> + </contexts> + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal"/> + <itemData name="common" defStyleNum="dsNormal"/> + <itemData name="strongemphasis" defStyleNum="dsNormal" italic="true" bold="true"/> + <itemData name="emphasis" defStyleNum="dsNormal" italic="true"/> + <itemData name="strong" defStyleNum="dsNormal" bold="true"/> + <itemData name="ruler" defStyleNum="dsNormal" bold="true"/> + <itemData name="strikeout" defStyleNum="dsNormal" strikeOut="true"/> + <itemData name="linebreak" defStyleNum="dsNormal" underline="true" color="#999999"/> + <itemData name="h1" defStyleNum="dsFunction" bold="true"/> + <itemData name="h2" defStyleNum="dsFunction" bold="true"/> + <itemData name="h3" defStyleNum="dsFunction" bold="true"/> + <itemData name="h4" defStyleNum="dsFunction" bold="true"/> + <itemData name="h5" defStyleNum="dsFunction" bold="true"/> + <itemData name="h6" defStyleNum="dsFunction" bold="true"/> + <itemData name="blockquote" defStyleNum="dsDataType"/> + <itemData name="bq-emphasis" defStyleNum="dsDataType" italic="true"/> + <itemData name="bq-strong" defStyleNum="dsDataType" bold="true"/> + <itemData name="bullet" defStyleNum="dsFloat"/> + <itemData name="bl-emphasis" defStyleNum="dsFloat" italic="true"/> + <itemData name="bl-strong" defStyleNum="dsFloat" bold="true"/> + <itemData name="numlist" defStyleNum="dsFloat"/> + <itemData name="nl-emphasis" defStyleNum="dsFloat" italic="true"/> + <itemData name="nl-strong" defStyleNum="dsFloat" bold="true"/> + <itemData name="comment" defStyleNum="dsComment"/> + <itemData name="code" defStyleNum="dsBaseN"/> + <itemData name="reflink" defStyleNum="dsOthers" underline="true"/> + <itemData name="inlinelink" defStyleNum="dsOthers" underline="true"/> + <itemData name="autolink" defStyleNum="dsOthers" underline="true"/> + <itemData name="mailtolink" defStyleNum="dsOthers" underline="true"/> + <itemData name="footnote" defStyleNum="dsOthers" italic="true"/> + <itemData name="meta" defStyleNum="dsComment"/> + <itemData name="reflinktarget" defStyleNum="dsOthers" italic="false" bold="false"/> + <itemData name="inlineimage" defStyleNum="dsAlert" italic="false" bold="false"/> + <itemData name="refimage" defStyleNum="dsAlert" italic="false" bold="false"/> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="multiLine" start="<!--" end="-->" region="comment"/> + </comments> + </general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/perl.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/perl.xml new file mode 100644 index 0000000000..cd3d3ce65c --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/perl.xml @@ -0,0 +1,878 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<!-- + This file is part of the KDE project + Copyright (C) 2001, 2002, 2003, 2004 Anders Lund <anders@alweb.dk> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2 as published by the Free Software Foundation. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + *** NOTICE *** + This file is maintained by Anders Lund <anders@alweb.dk> + Please do not commit changes without checking with me. + + *** TODO *** + + Work on the comment support in the REPLACEMENT part of s/// - we may support + the comment, if the line remainder does not contain the delimiter char. + + Try to support ?PATTERN? (at least in one line, like if "\?(?=.*\?)" matches). + + parse code behind '<<HEREDELIMITER' as code, or at least ignore it, to eol. + Requires the ability to pass the delimiter through a context level. + + find a here delimiter like '*END*' (Shell.pm). Requires that when a regex is + inserting a dynamic string, it escapes [*(){}$[] + + support for more regex extensions, such as (?>), (?{}), (?(cond)yes|no) + + Enhance tr/// and y/// support. +--> +<language name="Perl" version="7" kateversion="2.4" section="Scripts" extensions="*.pl;*.PL;*.pm;*.pl6;*.PL6;*.p6;*.pm6;" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2"> + <highlighting> + <list name="keywords"> + <item>if</item> + <item>unless</item> + <item>else</item> + <item>elsif</item> + <item>while</item> + <item>until</item> + <item>for</item> + <item>each</item> + <item>foreach</item> + <item>next</item> + <item>last</item> + <item>break</item> + <item>continue</item> + <item>return</item> + <item>my</item> + <item>our</item> + <item>local</item> + <item>state</item> + <item>BEGIN</item> + <item>END</item> + <item>package</item> + <item>sub</item> + <item>do</item> + <item>given</item> + <item>when</item> + <item>default</item> + <item>__END__</item> + <item>__DATA__</item> + <item>__FILE__</item> + <item>__LINE__</item> + <item>__PACKAGE__</item> + </list> + <list name="operators"> + <item>=</item> + <item>!=</item> + <item>~=</item> + <item>+=</item> + <item>-=</item> + <item>*=</item> + <item>/=</item> + <item>**=</item> + <item>|=</item> + <item>||=</item> + <item>//=</item> + <item>&=</item> + <item>&&=</item> + <item>?=</item> + <item>+</item> + <item>-</item> + <item>*</item> + <!-- <item>/</item>//--> + <item>%</item> + <item>||</item> + <item>//</item> + <item>&&</item> + <item>|</item> + <item>&</item> + <item><</item> + <item><<</item> + <item>></item> + <item>>></item> + <item>^</item> + <item>-></item> + <item>=></item> + <item>.</item> + <item>,</item> + <item>;</item> + <item>::</item> + <item>\</item> + <item>and</item> + <item>or</item> + <item>not</item> + <item>eq</item> + <item>ne</item> + <item>lt</item> + <item>gt</item> + <item>le</item> + <item>ge</item> + <item>cmp</item> + </list> + <list name="functions"> + <item>abs</item> + <item>accept</item> + <item>alarm</item> + <item>atan2</item> + <item>bind</item> + <item>binmode</item> + <item>bless</item> + <item>caller</item> + <item>chdir</item> + <item>chmod</item> + <item>chomp</item> + <item>chop</item> + <item>chown</item> + <item>chr</item> + <item>chroot</item> + <item>close</item> + <item>closedir</item> + <item>connect</item> + <item>cos</item> + <item>crypt</item> + <item>dbmclose</item> + <item>dbmopen</item> + <item>defined</item> + <item>delete</item> + <item>die</item> + <item>dump</item> + <item>endgrent</item> + <item>endhostent</item> + <item>endnetent</item> + <item>endprotoent</item> + <item>endpwent</item> + <item>endservent</item> + <item>eof</item> + <item>eval</item> + <item>exec</item> + <item>exists</item> + <item>exit</item> + <item>exp</item> + <item>fcntl</item> + <item>fileno</item> + <item>flock</item> + <item>fork</item> + <item>format</item> + <item>formline</item> + <item>getc</item> + <item>getgrent</item> + <item>getgrgid</item> + <item>getgrnam</item> + <item>gethostbyaddr</item> + <item>gethostbyname</item> + <item>gethostent</item> + <item>getlogin</item> + <item>getnetbyaddr</item> + <item>getnetbyname</item> + <item>getnetent</item> + <item>getpeername</item> + <item>getpgrp</item> + <item>getppid</item> + <item>getpriority</item> + <item>getprotobyname</item> + <item>getprotobynumber</item> + <item>getprotoent</item> + <item>getpwent</item> + <item>getpwnam</item> + <item>getpwuid</item> + <item>getservbyname</item> + <item>getservbyport</item> + <item>getservent</item> + <item>getsockname</item> + <item>getsockopt</item> + <item>glob</item> + <item>gmtime</item> + <item>goto</item> + <item>grep</item> + <item>hex</item> + <item>import</item> + <item>index</item> + <item>int</item> + <item>ioctl</item> + <item>join</item> + <item>keys</item> + <item>kill</item> + <item>last</item> + <item>lc</item> + <item>lcfirst</item> + <item>length</item> + <item>link</item> + <item>listen</item> + <item>localtime</item> + <item>lock</item> + <item>log</item> + <item>lstat</item> + <item>map</item> + <item>mkdir</item> + <item>msgctl</item> + <item>msgget</item> + <item>msgrcv</item> + <item>msgsnd</item> + <item>no</item> + <item>oct</item> + <item>open</item> + <item>opendir</item> + <item>ord</item> + <item>pack</item> + <item>package</item> + <item>pipe</item> + <item>pop</item> + <item>pos</item> + <item>print</item> + <item>printf</item> + <item>prototype</item> + <item>push</item> + <item>quotemeta</item> + <item>rand</item> + <item>read</item> + <item>readdir</item> + <item>readline</item> + <item>readlink</item> + <item>recv</item> + <item>redo</item> + <item>ref</item> + <item>rename</item> + <item>require</item> + <item>reset</item> + <item>return</item> + <item>reverse</item> + <item>rewinddir</item> + <item>rindex</item> + <item>rmdir</item> + <item>scalar</item> + <item>seek</item> + <item>seekdir</item> + <item>select</item> + <item>semctl</item> + <item>semget</item> + <item>semop</item> + <item>send</item> + <item>setgrent</item> + <item>sethostent</item> + <item>setnetent</item> + <item>setpgrp</item> + <item>setpriority</item> + <item>setprotoent</item> + <item>setpwent</item> + <item>setservent</item> + <item>setsockopt</item> + <item>shift</item> + <item>shmctl</item> + <item>shmget</item> + <item>shmread</item> + <item>shmwrite</item> + <item>shutdown</item> + <item>sin</item> + <item>sleep</item> + <item>socket</item> + <item>socketpair</item> + <item>sort</item> + <item>splice</item> + <item>split</item> + <item>sprintf</item> + <item>sqrt</item> + <item>srand</item> + <item>stat</item> + <item>study</item> + <item>sub</item> + <item>substr</item> + <item>symlink</item> + <item>syscall</item> + <item>sysread</item> + <item>sysseek</item> + <item>system</item> + <item>syswrite</item> + <item>tell</item> + <item>telldir</item> + <item>tie</item> + <item>time</item> + <item>times</item> + <item>truncate</item> + <item>uc</item> + <item>ucfirst</item> + <item>umask</item> + <item>undef</item> + <item>unlink</item> + <item>unpack</item> + <item>unshift</item> + <item>untie</item> + <item>use</item> + <item>utime</item> + <item>values</item> + <item>vec</item> + <item>wait</item> + <item>waitpid</item> + <item>wantarray</item> + <item>warn</item> + <item>write</item> + </list> + <list name="pragmas"> + <item>strict</item> + <item>english</item> + <item>warnings</item> + <item>vars</item> + <item>subs</item> + <item>utf8</item> + <item>sigtrap</item> + <item>locale</item> + <item>open</item> + <item>less</item> + <item>integer</item> + <item>filetest</item> + <item>constant</item> + <item>bytes</item> + <item>diagnostics</item> + </list> + <contexts> + <context name="normal" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="#stay" String="^#!\/.*" /> + <StringDetect attribute="Keyword" context="data_handle" String="__DATA__" firstNonSpace="true" /> + <StringDetect attribute="Keyword" context="#stay" String="__END__" firstNonSpace="true"/> + <RegExpr attribute="Keyword" context="sub_name_def" String="\bsub\s+" /> + <keyword attribute="Keyword" context="#stay" String="keywords" /> + <keyword attribute="Operator" context="#stay" String="operators" /> + <keyword attribute="Function" context="#stay" String="functions" /> + <keyword attribute="Pragma" context="#stay" String="pragmas" /> + <RegExpr attribute="Pod" context="pod" String="\=\w+(\s|$)" column="0" beginRegion="POD"/> + <DetectSpaces /> + <DetectChar attribute="Comment" context="comment" char="#" /> + + <!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). --> + <RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="slash_safe_escape"/> + <RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="slash_safe_escape"/> + <RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="slash_safe_escape"/> + <RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="slash_safe_escape"/> + <RegExpr attribute="Decimal" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="slash_safe_escape"/> + <Int attribute="Decimal" context="slash_safe_escape" /> + + <!-- Allow strings as scalar references (ex: \'string') (see bug #348765). --> + <!-- <RegExpr attribute="Normal Text" context="#stay" String="\\(["'])[^\1]" /> --> + <Detect2Chars attribute="Normal Text" context="#stay" char="&" char1="'" /><!-- ??? --> + <DetectChar attribute="Operator" context="ip_string" char=""" beginRegion="String" /> + <DetectChar attribute="Operator" context="string" char="'" beginRegion="String"/> + <DetectChar attribute="Operator" context="Backticked" char="`" /> + + <RegExpr attribute="Normal Text" context="find_variable" String="(?:[$@]\S|%([\w\{\+\-!]|\^H)|\*[^\d\*{\$@%=(])" lookAhead="true" /> + + <RegExpr attribute="Keyword" context="#stay" String="<[A-Z0-9_]+>" /> + + <RegExpr attribute="Operator" context="find_here_document" String="\s*<<(?=\w+|\s*["'])" beginRegion="HereDocument" /> + + <RegExpr attribute="Normal Text" context="#stay" String="\s*\}\s*/{1,2}" endRegion="Block"/> + <RegExpr attribute="Normal Text" context="#stay" String="\s*[)\]]\s*/{1,2}" /> + + <RegExpr attribute="Function" context="sub_name_def" String="\w+::" /> + <RegExpr attribute="Normal Text" context="#stay" String="\w+[=]" /> + + <RegExpr attribute="Operator" context="find_quoted" String="\bq(?=[qwx]?\s*[^\w\s])" /> + <RegExpr attribute="Operator" context="find_subst" String="\bs(?=\s*[^\w\s\]})])" /> + <RegExpr attribute="Operator" context="tr" String="\b(?:tr|y)\s*(?=[^\w\s\]})])" /> + + <RegExpr attribute="Operator" context="find_pattern" String="\b(?:m|qr)(?=\s*[^\w\s\]})])" /> + + <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*/" /> + <RegExpr attribute="Normal Text" context="#stay" String="[<>"':]/" /> + <DetectChar attribute="Operator" context="pattern_slash" char="/" beginRegion="Pattern" /> + <RegExpr attribute="Operator" context="#stay" String="-[rwxoRWXOeszfdlpSbctugkTBMAC]\b" /> + + <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Block" /> + <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Block" /> + </context> + + <!-- ====== quoted construct central ===== --> + <context name="find_quoted" attribute="Normal Text" lineEndContext="#stay" > + <!-- NOTE - qx'not interpolated regex' does not cover newline between "qr" and "'" --> + <RegExpr attribute="Operator" context="string_6" String="x\s*(')" beginRegion="String" /> + <AnyChar attribute="Operator" context="find_qqx" String="qx" /> + <DetectChar attribute="Operator" context="find_qw" char="w" /> + <DetectChar attribute="Operator" context="string_2" char="(" beginRegion="String" /> + <DetectChar attribute="Operator" context="string_3" char="{" beginRegion="String" /> + <DetectChar attribute="Operator" context="string_4" char="[" beginRegion="String" /> + <DetectChar attribute="Operator" context="string_5" char="<" beginRegion="String" /> + <RegExpr attribute="Operator" context="string_6" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="String" /> + <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line --> + </context> + <context name="find_qqx" attribute="Normal Text" lineEndContext="#stay" > + <DetectChar attribute="Operator" context="ip_string_2" char="(" beginRegion="String" /> + <DetectChar attribute="Operator" context="ip_string_3" char="{" beginRegion="String" /> + <DetectChar attribute="Operator" context="ip_string_4" char="[" beginRegion="String" /> + <DetectChar attribute="Operator" context="ip_string_5" char="<" beginRegion="String" /> + <RegExpr attribute="Operator" context="ip_string_6" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="String" /> + <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line --> + </context> + <context name="find_qw" attribute="Normal Text" lineEndContext="#stay" > + <DetectChar attribute="Operator" context="quote_word_paren" char="(" beginRegion="Wordlist" /> + <DetectChar attribute="Operator" context="quote_word_brace" char="{" beginRegion="Wordlist" /> + <DetectChar attribute="Operator" context="quote_word_bracket" char="[" beginRegion="Wordlist" /> + <RegExpr attribute="Operator" context="quote_word" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="Wordlist" /> + <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line --> + </context> + + <!-- ====== Contexts for strings ===== --> + <context name="ipstring_internal" attribute="String (interpolated)" lineEndContext="#stay"> + <DetectIdentifier /> + <RegExpr attribute="String Special Character" context="#stay" String="\\c[^\s\\]" /> + <RegExpr attribute="String Special Character" context="#stay" String="\\g(\{(\w+|\-\d+)\}|\d+)" /> + <RegExpr attribute="String Special Character" context="#stay" String="\\k(\{\w+\}|<\w+>|'\w+')" /> + <RegExpr attribute="String Special Character" context="#stay" String="\\N\{[^\{\}]*\}" /> + <RegExpr attribute="String Special Character" context="#stay" String="\\o\{[0-7]+\}" /> + <RegExpr attribute="String Special Character" context="#stay" String="\\[pP](\{\w+\}|P)" /> + <RegExpr attribute="String Special Character" context="#stay" String="\\x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})" /> + <RegExpr attribute="String Special Character" context="#stay" String="\\[0-7]{3}" /> + <RegExpr attribute="String Special Character" context="#stay" String="\\[1aAbBdDeEfFGhHKlLnNQrRsStuUvVwWXzZ]" /> + <RegExpr attribute="String (interpolated)" context="#stay" String="\\." /> + <RegExpr attribute="Normal Text" context="find_variable_unsafe" String="(?:[\$@]\S|%([\w\{\-\+!]|\^H))" lookAhead="true" /> + </context> + <context name="ip_string" attribute="String (interpolated)" lineEndContext="#stay"> + <DetectChar attribute="Operator" context="#pop" char=""" endRegion="String"/> + <IncludeRules context="ipstring_internal" /> + </context> + <context name="ip_string_2" attribute="String (interpolated)" lineEndContext="#stay"> + <RangeDetect attribute="String (interpolated)" context="#stay" char="(" char1=")" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char=")" endRegion="String" /> + <IncludeRules context="ipstring_internal" /> + </context> + <context name="ip_string_3" attribute="String (interpolated)" lineEndContext="#stay"> + <RangeDetect attribute="String (interpolated)" context="#stay" char="{" char1="}" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char="}" endRegion="String" /> + <IncludeRules context="ipstring_internal" /> + </context> + <context name="ip_string_4" attribute="String (interpolated)" lineEndContext="#stay"> + <RangeDetect attribute="String (interpolated)" context="#stay" char="[" char1="]" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char="]" endRegion="String" /> + <IncludeRules context="ipstring_internal" /> + </context> + <context name="ip_string_5" attribute="String (interpolated)" lineEndContext="#stay"> + <RangeDetect attribute="String (interpolated)" context="#stay" char="<" char1=">" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char=">" endRegion="String" /> + <IncludeRules context="ipstring_internal" /> + </context> + <context name="ip_string_6" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="String (interpolated)" context="#stay" String="\%1" dynamic="true" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true" endRegion="String"/> + <IncludeRules context="ipstring_internal" /> + </context> + + <context name="string" attribute="String" lineEndContext="#stay"> + <DetectIdentifier /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="'" /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" /> + <DetectChar attribute="Operator" context="#pop" char="'" endRegion="String" /> + </context> + <context name="string_2" attribute="String" lineEndContext="#stay"> + <DetectIdentifier /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1=")" /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" /> + <RangeDetect attribute="String" context="#stay" char="(" char1=")" /> + <DetectChar attribute="Operator" context="#pop#pop" char=")" endRegion="String" /> + </context> + <context name="string_3" attribute="String" lineEndContext="#stay"> + <DetectIdentifier /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="}" /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" /> + <RangeDetect attribute="String" context="#stay" char="{" char1="}" /> + <DetectChar attribute="Operator" context="#pop#pop" char="}" endRegion="String" /> + </context> + <context name="string_4" attribute="String" lineEndContext="#stay"> + <DetectIdentifier /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="]" /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" /> + <RangeDetect attribute="String" context="#stay" char="[" char1="]" /> + <DetectChar attribute="Operator" context="#pop#pop" char="]" endRegion="String" /> + </context> + <context name="string_5" attribute="String" lineEndContext="#stay"> + <DetectIdentifier /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="<" /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" /> + <Detect2Chars attribute="String" context="#stay" char="\" char1=">" /> + <RangeDetect attribute="String" context="#stay" char="<" char1=">" /> + <DetectChar attribute="Operator" context="#pop#pop" char=">" endRegion="String" /> + </context> + <context name="string_6" attribute="String" lineEndContext="#stay" dynamic="true"> + <DetectIdentifier /> + <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" /> + <RegExpr attribute="String Special Character" context="#stay" String="\%1" dynamic="true"/> + <DetectChar attribute="Operator" context="#pop#pop" char="1" dynamic="true" endRegion="String" /> + </context> + + <!-- ====== contexts for s/// ====== --> + <context name="find_subst" attribute="Normal Text" lineEndContext="#stay" > + <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line --> + <DetectChar attribute="Operator" context="subst_curlybrace_pattern" char="{" beginRegion="Pattern" /> + <DetectChar attribute="Operator" context="subst_paren_pattern" char="(" beginRegion="Pattern" /> + <DetectChar attribute="Operator" context="subst_bracket_pattern" char="[" beginRegion="Pattern" /> + <DetectChar attribute="Operator" context="subst_sq_pattern" char="'" beginRegion="Pattern" /> + <RegExpr attribute="Operator" context="subst_slash_pattern" String="([^\w\s[\]{}()])" beginRegion="Pattern" /> + </context> + + <!-- Fully parse s {} {}. + This means that + - comments are legal between PATTERN and REPLACEMENT + - REPLACEMENT can contain resursive {} blocks --> + <context name="subst_curlybrace_pattern" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" /> + <IncludeRules context="regex_pattern_internal_ip" /> + <DetectChar attribute="Operator" context="subst_curlybrace_middle" char="}" endRegion="Pattern" /> + <!-- Recursive brackets. Avoid closing brackets incorrectly (bug #364866). --> + <DetectChar attribute="Pattern" context="subst_curlybrace_pattern_recursive" char="{" /> + </context> + <context name="subst_curlybrace_middle" attribute="Normal Text" lineEndContext="#stay" > + <RegExpr attribute="Comment" context="#stay" String="#.*$" /> + <DetectChar attribute="Operator" context="subst_curlybrace_replace" char="{" beginRegion="Replacement" /> + </context> + <context name="subst_curlybrace_replace" attribute="String (interpolated)" lineEndContext="#stay"> + <IncludeRules context="ipstring_internal" /> + <DetectChar attribute="Normal Text" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" /> + <RegExpr attribute="Operator" context="#pop#pop#pop#pop" String="\}[cegimosx]*" endRegion="Replacement" /> + </context> + <context name="subst_curlybrace_replace_recursive" attribute="String (interpolated)" lineEndContext="#stay" > + <DetectChar attribute="String (interpolated)" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" /> + <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Block" /> + <IncludeRules context="ipstring_internal" /> + </context> + <context name="subst_curlybrace_pattern_recursive" attribute="Pattern" lineEndContext="#stay"> + <DetectChar attribute="Pattern" context="#pop" char="}" /> + <IncludeRules context="subst_curlybrace_pattern" /> + </context> + + <context name="subst_paren_pattern" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" /> + <DetectChar attribute="Operator" context="subst_paren_replace" char=")" endRegion="Pattern" /> + <!-- Round brackets of RegExp pattern inside --> + <DetectChar attribute="Pattern Internal Operator" context="subst_paren_pattern_internal_recursive" char="(" /> + <IncludeRules context="regex_pattern_internal_ip" /> + </context> + <context name="subst_paren_replace" attribute="String (interpolated)" lineEndContext="#stay"> + <IncludeRules context="ipstring_internal" /> + <DetectChar attribute="Operator" context="#stay" char="(" beginRegion="Replacement" /> + <RegExpr attribute="Operator" context="#pop#pop#pop" String="\)[cegimosx]*" endRegion="Replacement" /> + </context> + <context name="subst_paren_pattern_internal_recursive" attribute="Pattern" lineEndContext="#stay"> + <DetectChar attribute="Pattern Internal Operator" context="#pop" char=")" /> + <IncludeRules context="subst_paren_pattern" /> + </context> + + <context name="subst_bracket_pattern" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" /> + <IncludeRules context="regex_pattern_internal_ip" /> + <DetectChar attribute="Operator" context="subst_bracket_replace" char="]" endRegion="Pattern" /> + </context> + <context name="subst_bracket_replace" attribute="String (interpolated)" lineEndContext="#stay"> + <IncludeRules context="ipstring_internal" /> + <DetectChar attribute="Operator" context="#stay" char="[" beginRegion="Replacement" /> + <RegExpr attribute="Operator" context="#pop#pop#pop" String="\][cegimosx]*" endRegion="Replacement" /> + </context> + + <context name="subst_slash_pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" /> + <RegExpr attribute="Operator" context="subst_slash_replace" String="(%1)" dynamic="true" endRegion="Pattern" beginRegion="Replacement" /> + <IncludeRules context="regex_pattern_internal_ip" /> + </context> + <context name="subst_slash_replace" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Operator" context="#pop#pop#pop" String="%1[cegimosx]*" dynamic="true" endRegion="Replacement" /> + <IncludeRules context="ipstring_internal" /> + + </context> + + <context name="subst_sq_pattern" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" /> + <IncludeRules context="regex_pattern_internal" /> + <DetectChar attribute="Operator" context="subst_sq_replace" char="'" endRegion="Pattern" beginRegion="Pattern" /> + </context> + <context name="subst_sq_replace" attribute="String" lineEndContext="#stay"> + <RegExpr attribute="Operator" context="#pop#pop#pop" String="'[cegimosx]*" endRegion="Replacement" /> + </context> + + <context name="tr" attribute="Pattern" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" > + <RegExpr attribute="Pattern" context="#pop" String="\([^)]*\)\s*\(?:[^)]*\)" /> + <RegExpr attribute="Pattern" context="#pop" String="\{[^}]*\}\s*\{[^}]*\}" /> + <RegExpr attribute="Pattern" context="#pop" String="\[[^]]*\]\s*\[[^\]]*\]" /> + <RegExpr attribute="Pattern" context="#pop" String="([^a-zA-Z0-9_\s[\]{}()]).*\1.*\1" minimal="true"/> + </context> + + <!-- ====== PATTERNs ====== --> + <context name="find_pattern" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line --> + <DetectChar attribute="Operator" context="pattern_brace" char="{" beginRegion="Pattern" /> + <DetectChar attribute="Operator" context="pattern_paren" char="(" beginRegion="Pattern" /> + <DetectChar attribute="Operator" context="pattern_bracket" char="[" beginRegion="Pattern" /> + <DetectChar attribute="Operator" context="pattern_sq" char="'" beginRegion="Pattern" /> + <RegExpr attribute="Operator" context="pattern" String="([^\w\s])" beginRegion="Pattern" /> + </context> + <context name="pattern_slash" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=/)" /> + <IncludeRules context="regex_pattern_internal_ip" /> + <RegExpr attribute="Operator" context="#pop" String="/[cgimosx]*" endRegion="Pattern" /> + </context> + <context name="pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" /> + <RegExpr attribute="Operator" context="#pop#pop" String="%1[cgimosx]*" dynamic="true" endRegion="Pattern" /> + <IncludeRules context="regex_pattern_internal_ip" /> + <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=\%1)" dynamic="true" /> + </context> + <context name="pattern_brace" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Operator" context="#pop#pop" String="\}[cgimosx]*" endRegion="Pattern" /> + <IncludeRules context="regex_pattern_internal_ip" /> + <!-- Recursive brackets. Avoid closing brackets incorrectly. --> + <DetectChar attribute="Pattern" context="pattern_brace_recursive" char="{" /> + </context> + <context name="pattern_brace_recursive" attribute="Pattern" lineEndContext="#stay"> + <DetectChar attribute="Pattern" context="#pop" char="}" /> + <IncludeRules context="pattern_brace" /> + </context> + <context name="pattern_bracket" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Operator" context="#pop#pop" String="\][cgimosx]*" endRegion="Pattern" /> + <IncludeRules context="regex_pattern_internal_ip" /> + </context> + <context name="pattern_paren" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Operator" context="#pop#pop" String="\)[cgimosx]*" endRegion="Pattern" /> + <!-- Round brackets of RegExp pattern inside --> + <DetectChar attribute="Pattern Internal Operator" context="pattern_paren_internal_recursive" char="(" /> + <IncludeRules context="regex_pattern_internal_ip" /> + </context> + <context name="pattern_paren_internal_recursive" attribute="Pattern" lineEndContext="#stay"> + <DetectChar attribute="Pattern Internal Operator" context="#pop" char=")" /> + <IncludeRules context="pattern_paren" /> + </context> + <context name="pattern_sq" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Operator" context="#pop#pop" String="'[cgimosx]*" endRegion="Pattern" /> + <IncludeRules context="regex_pattern_internal" /> + </context> + + <!-- rules internal stuff wrt regex patterns --> + <context name="regex_pattern_internal_rules_1" attribute="Pattern" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="#stay" String="#.*$" firstNonSpace="true" /> + <RegExpr attribute="Special Variable" context="#stay" String="\\c[^\s\\]" /> + <RegExpr attribute="Special Variable" context="#stay" String="\\g(\{(\w+|\-\d+)\}|\d+)" /> + <RegExpr attribute="Special Variable" context="#stay" String="\\k(\{\w+\}|<\w+>|'\w+')" /> + <RegExpr attribute="Special Variable" context="#stay" String="\\N\{[^\{\}]*\}" /> + <RegExpr attribute="Special Variable" context="#stay" String="\\o\{[0-7]+\}" /> + <RegExpr attribute="Special Variable" context="#stay" String="\\[pP](\{\w+\}|P)" /> + <RegExpr attribute="Special Variable" context="#stay" String="\\x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})" /> + <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[anDdSsWw]" /> + <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[ABbEGLlNUuQdQZz]" /> <!-- Also?: efFhHKrRtvVX --> + <RegExpr attribute="Special Variable" context="#stay" String="\\[\d]+" /> + <RegExpr attribute="Pattern" context="#stay" String="\\." /> + </context> + <context name="regex_pattern_internal_rules_2" attribute="Pattern" lineEndContext="#stay"> + <Detect2Chars attribute="Pattern Internal Operator" context="pat_ext" char="(" char1="?" /> + <DetectChar attribute="Pattern Internal Operator" context="pat_char_class" char="[" /> + <RegExpr attribute="Pattern Internal Operator" context="#stay" String="[()?^*+|]" /> + <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" /> + <DetectChar attribute="Pattern Internal Operator" context="#stay" char="$" /> + <RegExpr attribute="Comment" context="#stay" String="\s{3,}#.*$" /> + </context> + <context name="regex_pattern_internal" attribute="Pattern" lineEndContext="#stay"> + <IncludeRules context="regex_pattern_internal_rules_1" /> + <IncludeRules context="regex_pattern_internal_rules_2" /> + </context> + <context name="regex_pattern_internal_ip" attribute="Pattern" lineEndContext="#stay" > + <IncludeRules context="regex_pattern_internal_rules_1" /> + <!-- NOTE the below means that the special variables $' $], $} and $> are not supported + within interpolated PATTERNs (apart from $(, $) and ${ and $| not supported by perl). + This is because perl considers + s{foo$} {bar} OK as well as s{foo$}} {bar}, and detecting that is a huge work overload + for something that is unlikely to happen. --> + <RegExpr attribute="Data Type" context="find_variable_unsafe" String="[$@][^]\s{}()|>']" lookAhead="true" /> + <IncludeRules context="regex_pattern_internal_rules_2" /> + </context> + <context name="pat_ext" attribute="Pattern Internal Operator" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="#pop" String="\#[^)]*" /> + <RegExpr attribute="Pattern Internal Operator" context="#pop" String="[:=!><]+" /> + <DetectChar attribute="Pattern Internal Operator" context="#pop" char=")" /> + </context> + <context name="pat_char_class" attribute="Pattern Character Class" lineEndContext="#stay"> + <DetectChar attribute="Pattern Internal Operator" context="#stay" char="^" /> + <Detect2Chars attribute="Pattern Character Class" context="#stay" char="\" char1="\" /> + <Detect2Chars attribute="Pattern Character Class" context="#stay" char="\" char1="]" /> + <RegExpr attribute="Pattern Character Class" context="#stay" String="\[:\^?[a-z]+:\]" /> + <DetectChar attribute="Pattern Internal Operator" context="#pop" char="]" /> + </context> + + <!-- ====== Variables ====== --> + <context name="find_variable" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" > + <RegExpr attribute="Data Type" context="var_detect" String="\$[#_][\w_]" /> + <RegExpr attribute="Special Variable" context="var_detect" String="\$[0-9]+" /> + <RegExpr attribute="Special Variable" context="var_detect" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" /> + <RegExpr attribute="Special Variable" context="var_detect" String="[%\$](?:INC\b|ENV\b|SIG\b)" /> + <RegExpr attribute="Special Variable" context="var_detect" String="\$\^[A-Z_\]\[\^\?\\]" /> + <RegExpr attribute="Special Variable" context="var_detect" String="%([\-\+!]|\^H)" /> + <RegExpr attribute="Data Type" context="var_detect" String="\$\$[\$\w_]" /> + <RegExpr attribute="Data Type" context="var_detect" String="\$+::" /> + <RegExpr attribute="Special Variable" context="var_detect" String="\$[^a-zA-Z0-9\s{][A-Z]?" /> + <RegExpr attribute="Data Type" context="var_detect" String="[\$@%]\{\^?[\w_]+\}" /> + <AnyChar attribute="Data Type" context="var_detect" String="$@%" /> + <RegExpr attribute="Data Type" context="var_detect" String="\*[a-zA-Z_]+" /> + <!-- Do not highlight brackets after *, Ex: (... @*) (see bug #391577) --> + <RegExpr attribute="Special Variable" context="#stay" String="\*[^a-zA-Z0-9\s\{\(\)\[\]\}][A-Z]?" /> + <!-- this should be a rare case! --> + <AnyChar attribute="Operator" context="#pop" String="$@%*" /> + </context> + <!-- This does not check fo a trailing slash, for usage in strings. --> + <context name="find_variable_unsafe" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" > + <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$[#_][\w_]" /> + <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="\$[0-9]+" /> + <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" /> + <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[%\$](?:INC\b|ENV\b|SIG\b)" /> + <RegExpr attribute="Special Variable" context="var_detect" String="\$\^[A-Z_\]\[\^\?\\]" /> + <RegExpr attribute="Special Variable" context="var_detect" String="%([\-\+!]|\^H)" /> + <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$\$[\$\w_]" /> + <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$+::" /> + <RegExpr attribute="Special Variable" context="#stay" String="\$[^a-zA-Z0-9\s{][A-Z]?" /> + <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]\{\^?[\w_]+\}" /> + <AnyChar attribute="Data Type" context="var_detect_unsafe" String="$@%" /> + <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\*\w+" /> + <AnyChar attribute="Operator" context="#pop" String="$@%*" /> + </context> + <context name="var_detect" attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop"> + <IncludeRules context="var_detect_rules" /> + <IncludeRules context="slash_safe_escape" /> + </context> + <context name="var_detect_unsafe" attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop"> + <IncludeRules context="var_detect_rules" /> + </context> + <context name="var_detect_rules" attribute="Data Type" lineEndContext="#pop#pop" > + <RegExpr attribute="Data Type" context="#stay" String="[\w_]+" /> + <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" /> + <DetectChar attribute="Operator" context="#stay" char="'" /> + <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1=">" /> + <!-- safe with operator / --> + <Detect2Chars attribute="Normal Text" context="#stay" char="+" char1="+" /> + <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1="-" /> + </context> + + + <!-- ====== Word lists ====== --> + <context name="quote_word" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <DetectSpaces /> + <DetectIdentifier /> + <RegExpr attribute="Normal Text" context="#stay" String="\\%1" dynamic="true" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true" endRegion="Wordlist" /> + </context> + <context name="quote_word_paren" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectIdentifier /> + <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char=")" endRegion="Wordlist" /> + </context> + <context name="quote_word_brace" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectIdentifier /> + <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="}" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char="}" endRegion="Wordlist" /> + </context> + <context name="quote_word_bracket" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectIdentifier /> + <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="]" /> + <DetectChar attribute="Operator" context="#pop#pop#pop" char="]" endRegion="Wordlist" /> + </context> + + <!-- ====== Here Documents ====== --> + <context name="find_here_document" attribute="Normal Text" lineEndContext="#pop" > + <RegExpr attribute="Keyword" context="here_document" String="(\w+)\s*;?" /> + <RegExpr attribute="Keyword" context="here_document" String="\s*"([^"]+)"\s*;?" /> + <RegExpr attribute="Keyword" context="here_document" String="\s*`([^`]+)`\s*;?" /> + <RegExpr attribute="Keyword" context="here_document_dumb" String="\s*'([^']+)'\s*;?" /> + </context> + <context name="here_document" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1\b" column="0" dynamic="true" endRegion="HereDocument"/> + <RegExpr attribute="Keyword" context="here_document" String="\=\s*<<\s*["']?([A-Z0-9_\-]+)["']?" beginRegion="HEREDoc" /> + <IncludeRules context="ipstring_internal" /> + <DetectSpaces /> + </context> + <context name="here_document_dumb" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/> + <DetectSpaces /> + <DetectIdentifier /> + </context> + + <!-- ====== Misc ====== --> + <context name="data_handle" attribute="Data" lineEndContext="#stay"> + <RegExpr attribute="Pod" context="pod" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s+.*" column="0" beginRegion="POD"/> + <StringDetect attribute="Keyword" context="normal" String="__END__" firstNonSpace="true" /> + </context> + + <context name="Backticked" attribute="String (interpolated)" lineEndContext="#stay"> + <IncludeRules context="ipstring_internal"/> + <DetectChar attribute="Operator" context="#pop" char="`"/> + </context> + + <context name="slash_safe_escape" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> + <RegExpr attribute="Normal Text" context="#pop" String="\s*\}\s*/{1,2}" endRegion="Block"/> + <RegExpr attribute="Normal Text" context="#pop" String="\s*[)\]]?\s*/{1,2}" /> + <keyword attribute="Keyword" context="#pop" String="keywords" /><!-- wonder why??? --> + </context> + + <context name="sub_name_def" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> + <RegExpr attribute="Function" context="#stay" String="\w+" /> + <RegExpr attribute="Normal Text" context="find_variable" String="\$\S" lookAhead="true" /> + <RegExpr attribute="Normal Text" context="sub_arg_definition" String="\s*\(" /> + <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" /> + </context> + + <context name="sub_arg_definition" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop"> + <AnyChar attribute="Data Type" context="#stay" String="*$@%" /> + <AnyChar attribute="Normal Text" context="#stay" String="&\[];" /> + <DetectChar attribute="Normal Text" context="slash_safe_escape" char=")" /> + </context> + + <context name="pod" attribute="Pod" lineEndContext="#stay"> + <DetectSpaces /> + <DetectIdentifier /> + <RegExpr attribute="Pod" context="#stay" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*" column="0" beginRegion="POD" endRegion="POD"/> + <RegExpr attribute="Pod" context="#pop" String="\=cut.*$" column="0" endRegion="POD"/> + </context> + + <context name="comment" attribute="Comment" lineEndContext="#pop"> + <DetectSpaces /> + <IncludeRules context="##Alerts" /> + <DetectIdentifier /> + </context> + + </contexts> + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Keyword" defStyleNum="dsKeyword" /> + <itemData name="Pragma" defStyleNum="dsKeyword" /> + <itemData name="Function" defStyleNum="dsFunction" /> + <itemData name="Operator" defStyleNum="dsKeyword" color="#008000"/> + <itemData name="Data Type" defStyleNum="dsDataType" /> + <itemData name="Special Variable" defStyleNum="dsDataType" color="#C00000" selColor="#C00000" bold="0" italic="0" /> + <itemData name="Decimal" defStyleNum="dsDecVal" /> + <itemData name="Octal" defStyleNum="dsBaseN" /> + <itemData name="Hex" defStyleNum="dsBaseN" /> + <itemData name="Bin" defStyleNum="dsBaseN" /> + <itemData name="Float" defStyleNum="dsFloat" /> + <itemData name="String" defStyleNum="dsString" color="#FF6C6C" selColor="#FF6C6C" bold="0" italic="0" /> + <itemData name="String (interpolated)" defStyleNum="dsString" /> + <itemData name="String Special Character" defStyleNum="dsChar" /> + <itemData name="Pattern" defStyleNum="dsOthers" /> + <itemData name="Pattern Internal Operator" defStyleNum="dsChar" /> + <itemData name="Pattern Character Class" defStyleNum="dsBaseN" /> + <itemData name="Data" defStyleNum="dsNormal" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Pod" defStyleNum="dsComment" /> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="#" /> + </comments> + <keywords casesensitive="1" /> + </general> +</language> +<!-- kate: space-indent on; indent-width 2; replace-tabs on; --> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/powershell.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/powershell.xml new file mode 100644 index 0000000000..8208fd7aae --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/powershell.xml @@ -0,0 +1,934 @@ +<!DOCTYPE language SYSTEM "language.dtd"> +<language + name="PowerShell" + version="4" + kateversion="5.0" + extensions="*.ps1;*.ps1m;*.ps1d" + section="Scripts" + author="Motoki Kashihara (motoki8791@gmail.com); Michael Lombardi (Michael.T.Lombardi@outlook.com)" + casesensitive="0" + license="MIT"> + <highlighting> + <list name="keywords"> + <item>Begin</item> + <item>Exit</item> + <item>Process</item> + <item>Break</item> + <item>Filter</item> + <item>Return</item> + <item>Catch</item> + <item>Finally</item> + <item>Sequence</item> + <item>Class</item> + <item>For</item> + <item>Switch</item> + <item>Continue</item> + <item>ForEach</item> + <item>Throw</item> + <item>Data</item> + <item>From</item> + <item>Trap</item> + <item>Define</item> + <item>Function</item> + <item>Try</item> + <item>Do</item> + <item>If</item> + <item>Until</item> + <item>DynamicParam</item> + <item>In</item> + <item>Using</item> + <item>Else</item> + <item>InlineScript</item> + <item>Var</item> + <item>ElseIf</item> + <item>Parallel</item> + <item>While</item> + <item>End</item> + <item>Param</item> + <item>Workflow</item> + </list> +<!-- TODO: Seems unused?! + <list name="attributes"> + <item>CmdletBinding</item> + <item>ConfirmImpact</item> + <item>DefaultParameterSetName</item> + <item>HelpURI</item> + <item>SupportsPaging</item> + <item>SupportsShouldProcess</item> + <item>PositionalBinding</item> + </list>--> + <list name="types"> + <item>bool</item> + <item>byte</item> + <item>char</item> + <item>decimal</item> + <item>double</item> + <item>float</item> + <item>int</item> + <item>long</item> + <item>object</item> + <item>sbyte</item> + <item>short</item> + <item>string</item> + <item>switch</item> + <item>uint</item> + <item>ulong</item> + <item>ushort</item> + </list> +<!-- TODO: Seems unused?! + <list name="operators"> + <item>-split</item> + <item>-isplit</item> + <item>-csplit</item> + <item>-join</item> + <item>-is</item> + <item>-isnot</item> + <item>-as</item> + <item>-eq</item> + <item>-ieq</item> + <item>-ceq</item> + <item>-ne</item> + <item>-ine</item> + <item>-cne</item> + <item>-gt</item> + <item>-igt</item> + <item>-cgt</item> + <item>-ge</item> + <item>-ige</item> + <item>-cge</item> + <item>-lt</item> + <item>-ilt</item> + <item>-clt</item> + <item>-le</item> + <item>-ile</item> + <item>-cle</item> + <item>-like</item> + <item>-ilike</item> + <item>-clike</item> + <item>-notlike</item> + <item>-inotlike</item> + <item>-cnotlike</item> + <item>-match</item> + <item>-imatch</item> + <item>-cmatch</item> + <item>-notmatch</item> + <item>-inotmatch</item> + <item>-cnotmatch</item> + <item>-contains</item> + <item>-icontains</item> + <item>-ccontains</item> + <item>-notcontains</item> + <item>-inotcontains</item> + <item>-cnotcontains</item> + <item>-replace</item> + <item>-ireplace</item> + <item>-creplace</item> + <item>-band</item> + <item>-bor</item> + <item>-bxor</item> + <item>-and</item> + <item>-or</item> + <item>-xor</item> + <item>.</item> + <item>&</item> + <item>=</item> + <item>+=</item> + <item>-=</item> + <item>*=</item> + <item>/=</item> + <item>%=</item> + </list>--> + <list name="cmdlets"> + <item>Add-Content</item> + <item>Add-ADComputerServiceAccount</item> + <item>Add-ADDomainControllerPasswordReplicationPolicy</item> + <item>Add-ADFineGrainedPasswordPolicySubject</item> + <item>Add-ADGroupMember</item> + <item>Add-ADPrincipalGroupMembership</item> + <item>Add-BitsFile</item> + <item>Add-ClusterDisk</item> + <item>Add-ClusterFileServerRole</item> + <item>Add-ClusterGenericApplicationRole</item> + <item>Add-ClusterGenericScriptRole</item> + <item>Add-ClusterGenericServiceRole</item> + <item>Add-ClusterGroup</item> + <item>Add-ClusterNode</item> + <item>Add-ClusterPrintServerRole</item> + <item>Add-ClusterResource</item> + <item>Add-ClusterResourceDependency</item> + <item>Add-ClusterResourceType</item> + <item>Add-ClusterServerRole</item> + <item>Add-ClusterSharedVolume</item> + <item>Add-ClusterVirtualMachineRole</item> + <item>Add-Computer</item> + <item>Add-Content</item> + <item>Add-History</item> + <item>Add-JobTrigger</item> + <item>Add-Member</item> + <item>Add-NlbClusterNode</item> + <item>Add-NlbClusterNodeDip</item> + <item>Add-NlbClusterPortRule</item> + <item>Add-NlbClusterVip</item> + <item>Add-PSSnapin</item> + <item>Add-Type</item> + <item>Backup-GPO</item> + <item>Block-ClusterAccess</item> + <item>Checkpoint-Computer</item> + <item>Clear-ADAccountExpiration</item> + <item>Clear-ClusterDiskReservation</item> + <item>Clear-ClusterNode</item> + <item>Clear-Content</item> + <item>Clear-EventLog</item> + <item>Clear-History</item> + <item>Clear-Item</item> + <item>Clear-ItemProperty</item> + <item>Clear-RecycleBin</item> + <item>Clear-Variable</item> + <item>Compare-Object</item> + <item>Complete-BitsTransfer</item> + <item>Complete-Transaction</item> + <item>Connect-PSSession</item> + <item>Connect-WSMan</item> + <item>ConvertFrom-Csv</item> + <item>ConvertFrom-Json</item> + <item>ConvertFrom-SecureString</item> + <item>ConvertFrom-String</item> + <item>ConvertFrom-StringData</item> + <item>Convert-Path</item> + <item>Convert-String</item> + <item>ConvertTo-Csv</item> + <item>ConvertTo-Html</item> + <item>ConvertTo-Json</item> + <item>ConvertTo-SecureString</item> + <item>ConvertTo-Xml</item> + <item>Copy-GPO</item> + <item>Copy-Item</item> + <item>Copy-ItemProperty</item> + <item>Debug-Job</item> + <item>Debug-Process</item> + <item>Debug-Runspace</item> + <item>Disable-ADAccount</item> + <item>Disable-ADOptionalFeature</item> + <item>Disable-ComputerRestore</item> + <item>Disable-JobTrigger</item> + <item>Disable-NlbClusterPortRule</item> + <item>Disable-PSBreakpoint</item> + <item>Disable-PSRemoting</item> + <item>Disable-PSSessionConfiguration</item> + <item>Disable-RunspaceDebug</item> + <item>Disable-ScheduledJob</item> + <item>Disable-WSManCredSSP</item> + <item>Disconnect-PSSession</item> + <item>Disconnect-WSMan</item> + <item>Enable-ADAccount</item> + <item>Enable-ADOptionalFeature</item> + <item>Enable-ComputerRestore</item> + <item>Enable-JobTrigger</item> + <item>Enable-NlbClusterPortRule</item> + <item>Enable-PSBreakpoint</item> + <item>Enable-PSRemoting</item> + <item>Enable-PSSessionConfiguration</item> + <item>Enable-RunspaceDebug</item> + <item>Enable-ScheduledJob</item> + <item>Enable-WSManCredSSP</item> + <item>Enter-PSHostProcess</item> + <item>Enter-PSSession</item> + <item>Exit-PSHostProcess</item> + <item>Exit-PSSession</item> + <item>Export-Alias</item> + <item>Export-BinaryMiLog</item> + <item>Export-Clixml</item> + <item>Export-Console</item> + <item>Export-Counter</item> + <item>Export-Csv</item> + <item>Export-FormatData</item> + <item>Export-ModuleMember</item> + <item>Export-PSSession</item> + <item>Find-Package</item> + <item>Find-PackageProvider</item> + <item>ForEach-Object</item> + <item>Format-Custom</item> + <item>Format-List</item> + <item>Format-Table</item> + <item>Format-Wide</item> + <item>Get-Acl</item> + <item>Get-ADAccountAuthorizationGroup</item> + <item>Get-ADAccountResultantPasswordReplicationPolicy</item> + <item>Get-ADComputer</item> + <item>Get-ADComputerServiceAccount</item> + <item>Get-ADDefaultDomainPasswordPolicy</item> + <item>Get-ADDomain</item> + <item>Get-ADDomainController</item> + <item>Get-ADDomainControllerPasswordReplicationPolicy</item> + <item>Get-ADDomainControllerPasswordReplicationPolicyUsage</item> + <item>Get-ADFineGrainedPasswordPolicy</item> + <item>Get-ADFineGrainedPasswordPolicySubject</item> + <item>Get-ADForest</item> + <item>Get-ADGroup</item> + <item>Get-ADGroupMember</item> + <item>Get-ADObject</item> + <item>Get-ADOptionalFeature</item> + <item>Get-ADOrganizationalUnit</item> + <item>Get-ADPrincipalGroupMembership</item> + <item>Get-ADRootDSE</item> + <item>Get-ADServiceAccount</item> + <item>Get-ADUser</item> + <item>Get-ADUserResultantPasswordPolicy</item> + <item>Get-Alias</item> + <item>Get-AppLockerFileInformation</item> + <item>Get-AppLockerPolicy</item> + <item>Get-AuthenticodeSignature</item> + <item>Get-BitsTransfer</item> + <item>Get-ChildItem</item> + <item>Get-CimAssociatedInstance</item> + <item>Get-CimClass</item> + <item>Get-CimInstance</item> + <item>Get-CimSession</item> + <item>Get-Clipboard</item> + <item>Get-Cluster</item> + <item>Get-ClusterAccess</item> + <item>Get-ClusterAvailableDisk</item> + <item>Get-ClusterGroup</item> + <item>Get-ClusterLog</item> + <item>Get-ClusterNetwork</item> + <item>Get-ClusterNetworkInterfac</item> + <item>Get-ClusterNode</item> + <item>Get-ClusterOwnerNode</item> + <item>Get-ClusterParameter</item> + <item>Get-ClusterQuorum</item> + <item>Get-ClusterResource</item> + <item>Get-ClusterResourceDependency</item> + <item>Get-ClusterResourceDependencyReport</item> + <item>Get-ClusterResourceType</item> + <item>Get-ClusterSharedVolume</item> + <item>Get-CmsMessage</item> + <item>Get-Command</item> + <item>Get-ComputerRestorePoint</item> + <item>Get-Content</item> + <item>Get-ControlPanelItem</item> + <item>Get-Counter</item> + <item>Get-Credential</item> + <item>Get-Culture</item> + <item>Get-Date</item> + <item>Get-Event</item> + <item>Get-EventLog</item> + <item>Get-EventSubscriber</item> + <item>Get-ExecutionPolicy</item> + <item>Get-FormatData</item> + <item>Get-GPInheritance</item> + <item>Get-GPO</item> + <item>Get-GPOReport</item> + <item>Get-GPPermissions</item> + <item>Get-GPPrefRegistryValue</item> + <item>Get-GPRegistryValue</item> + <item>Get-GPResultantSetOfPolicy</item> + <item>Get-GPStarterGPO</item> + <item>Get-Help</item> + <item>Get-History</item> + <item>Get-Host</item> + <item>Get-HotFix</item> + <item>Get-Item</item> + <item>Get-ItemProperty</item> + <item>Get-ItemPropertyValue</item> + <item>Get-Job</item> + <item>Get-JobTrigger</item> + <item>Get-Location</item> + <item>Get-Member</item> + <item>Get-Module</item> + <item>Get-NlbCluster</item> + <item>Get-NlbClusterDriverInfo</item> + <item>Get-NlbClusterNode</item> + <item>Get-NlbClusterNodeDip</item> + <item>Get-NlbClusterNodeNetworkInterface</item> + <item>Get-NlbClusterPortRule</item> + <item>Get-NlbClusterVip</item> + <item>Get-Package</item> + <item>Get-PackageProvider</item> + <item>Get-PackageSource</item> + <item>Get-PfxCertificate</item> + <item>Get-Process</item> + <item>Get-PSBreakpoint</item> + <item>Get-PSCallStack</item> + <item>Get-PSDrive</item> + <item>Get-PSHostProcessInfo</item> + <item>Get-PSProvider</item> + <item>Get-PSReadlineKeyHandler</item> + <item>Get-PSReadlineOption</item> + <item>Get-PSSession</item> + <item>Get-PSSessionCapability</item> + <item>Get-PSSessionConfiguration</item> + <item>Get-PSSnapin</item> + <item>Get-Random</item> + <item>Get-Runspace</item> + <item>Get-RunspaceDebug</item> + <item>Get-ScheduledJob</item> + <item>Get-ScheduledJobOption</item> + <item>Get-Service</item> + <item>Get-TraceSource</item> + <item>Get-Transaction</item> + <item>Get-TroubleshootingPack</item> + <item>Get-TypeData</item> + <item>Get-UICulture</item> + <item>Get-Unique</item> + <item>Get-Variable</item> + <item>Get-WinEvent</item> + <item>Get-WmiObject</item> + <item>Get-WSManCredSSP</item> + <item>Get-WSManInstance</item> + <item>Grant-ClusterAccess</item> + <item>Group-Object</item> + <item>Import-Alias</item> + <item>Import-BinaryMiLog</item> + <item>Import-Clixml</item> + <item>Import-Counter</item> + <item>Import-Csv</item> + <item>Import-GPO</item> + <item>Import-LocalizedData</item> + <item>Import-Module</item> + <item>Import-PackageProvider</item> + <item>Import-PSSession</item> + <item>Install-ADServiceAccount</item> + <item>Install-Package</item> + <item>Install-PackageProvider</item> + <item>Invoke-CimMethod</item> + <item>Invoke-Command</item> + <item>Invoke-DscResource</item> + <item>Invoke-Expression</item> + <item>Invoke-History</item> + <item>Invoke-Item</item> + <item>Invoke-RestMethod</item> + <item>Invoke-TroubleshootingPack</item> + <item>Invoke-WebRequest</item> + <item>Invoke-WmiMethod</item> + <item>Invoke-WSManAction</item> + <item>Join-Path</item> + <item>Limit-EventLog</item> + <item>Measure-Command</item> + <item>Measure-Object</item> + <item>Move-ADDirectoryServer</item> + <item>Move-ADDirectoryServerOperationMasterRole</item> + <item>Move-ADObject</item> + <item>Move-ClusterGroup</item> + <item>Move-ClusterResource</item> + <item>Move-ClusterSharedVolume</item> + <item>Move-ClusterVirtualMachineRole</item> + <item>Move-Item</item> + <item>Move-ItemProperty</item> + <item>New-ADComputer</item> + <item>New-ADFineGrainedPasswordPolicy</item> + <item>New-ADGroup</item> + <item>New-ADObject</item> + <item>New-ADOrganizationalUnit</item> + <item>New-ADServiceAccount</item> + <item>New-ADUser</item> + <item>New-Alias</item> + <item>New-AppLockerPolicy</item> + <item>New-CimInstance</item> + <item>New-CimSession</item> + <item>New-CimSessionOption</item> + <item>New-Cluster</item> + <item>New-Event</item> + <item>New-EventLog</item> + <item>New-GPLink</item> + <item>New-GPO</item> + <item>New-GPStarterGPO</item> + <item>New-Item</item> + <item>New-ItemProperty</item> + <item>New-JobTrigger</item> + <item>New-Module</item> + <item>New-ModuleManifest</item> + <item>New-NlbCluster</item> + <item>New-NlbClusterIpv6Address</item> + <item>New-Object</item> + <item>New-PSDrive</item> + <item>New-PSRoleCapabilityFile</item> + <item>New-PSSession</item> + <item>New-PSSessionConfigurationFile</item> + <item>New-PSSessionOption</item> + <item>New-PSTransportOption</item> + <item>New-PSWorkflowExecutionOption</item> + <item>New-ScheduledJobOption</item> + <item>New-Service</item> + <item>New-TimeSpan</item> + <item>New-Variable</item> + <item>New-WebServiceProxy</item> + <item>New-WinEvent</item> + <item>New-WSManInstance</item> + <item>New-WSManSessionOption</item> + <item>Out-Default</item> + <item>Out-File</item> + <item>Out-GridView</item> + <item>Out-Host</item> + <item>Out-Null</item> + <item>Out-Printer</item> + <item>Out-String</item> + <item>Pop-Location</item> + <item>Protect-CmsMessage</item> + <item>Publish-DscConfiguration</item> + <item>Push-Location</item> + <item>Read-Host</item> + <item>Receive-Job</item> + <item>Receive-PSSession</item> + <item>Register-ArgumentCompleter</item> + <item>Register-CimIndicationEvent</item> + <item>Register-EngineEvent</item> + <item>Register-ObjectEvent</item> + <item>Register-PackageSource</item> + <item>Register-PSSessionConfiguration</item> + <item>Register-ScheduledJob</item> + <item>Register-WmiEvent</item> + <item>Remove-ADComputer</item> + <item>Remove-ADComputerServiceAccount</item> + <item>Remove-ADDomainControllerPasswordReplicationPolicy</item> + <item>Remove-ADFineGrainedPasswordPolicy</item> + <item>Remove-ADFineGrainedPasswordPolicySubject</item> + <item>Remove-ADGroup</item> + <item>Remove-ADGroupMember</item> + <item>Remove-ADObject</item> + <item>Remove-ADOrganizationalUnit</item> + <item>Remove-ADPrincipalGroupMembership</item> + <item>Remove-ADServiceAccount</item> + <item>Remove-ADUser</item> + <item>Remove-BitsTransfer</item> + <item>Remove-CimInstance</item> + <item>Remove-CimSession</item> + <item>Remove-Cluster</item> + <item>Remove-ClusterAccess</item> + <item>Remove-ClusterGroup</item> + <item>Remove-ClusterNode</item> + <item>Remove-ClusterResource</item> + <item>Remove-ClusterResourceDependency</item> + <item>Remove-ClusterResourceType</item> + <item>Remove-ClusterSharedVolume</item> + <item>Remove-Computer</item> + <item>Remove-Event</item> + <item>Remove-EventLog</item> + <item>Remove-GPLink</item> + <item>Remove-GPO</item> + <item>Remove-GPPrefRegistryValue</item> + <item>Remove-GPRegistryValue</item> + <item>Remove-Item</item> + <item>Remove-ItemProperty</item> + <item>Remove-Job</item> + <item>Remove-JobTrigger</item> + <item>Remove-Module</item> + <item>Remove-NlbCluster</item> + <item>Remove-NlbClusterNode</item> + <item>Remove-NlbClusterNodeDip</item> + <item>Remove-NlbClusterPortRule</item> + <item>Remove-NlbClusterVip</item> + <item>Remove-PSBreakpoint</item> + <item>Remove-PSDrive</item> + <item>Remove-PSReadlineKeyHandler</item> + <item>Remove-PSSession</item> + <item>Remove-PSSnapin</item> + <item>Remove-TypeData</item> + <item>Remove-Variable</item> + <item>Remove-WmiObject</item> + <item>Remove-WSManInstance</item> + <item>Rename-ADObject</item> + <item>Rename-Computer</item> + <item>Rename-GPO</item> + <item>Rename-Item</item> + <item>Rename-ItemProperty</item> + <item>Repair-ClusterSharedVolume</item> + <item>Reset-ADServiceAccountPassword</item> + <item>Reset-ComputerMachinePassword</item> + <item>Resolve-Path</item> + <item>Restart-Computer</item> + <item>Restart-Service</item> + <item>Restore-ADObject</item> + <item>Restore-Computer</item> + <item>Restore-GPO</item> + <item>Resume-BitsTransfer</item> + <item>Resume-ClusterNode</item> + <item>Resume-ClusterResource</item> + <item>Resume-Job</item> + <item>Resume-NlbCluster</item> + <item>Resume-NlbClusterNode</item> + <item>Resume-Service</item> + <item>Save-Help</item> + <item>Save-Package</item> + <item>Search-ADAccount</item> + <item>Select-Object</item> + <item>Select-String</item> + <item>Select-Xml</item> + <item>Send-MailMessage</item> + <item>Set-Acl</item> + <item>Set-ADAccountControl</item> + <item>Set-ADAccountExpiration</item> + <item>Set-ADAccountPassword</item> + <item>Set-ADComputer</item> + <item>Set-ADDefaultDomainPasswordPolicy</item> + <item>Set-ADDomain</item> + <item>Set-ADDomainMode</item> + <item>Set-ADFineGrainedPasswordPolicy</item> + <item>Set-ADForest</item> + <item>Set-ADForestMode</item> + <item>Set-ADGroup</item> + <item>Set-ADObject</item> + <item>Set-ADOrganizationalUnit</item> + <item>Set-ADServiceAccount</item> + <item>Set-ADUser</item> + <item>Set-Alias</item> + <item>Set-AppLockerPolicy</item> + <item>Set-AuthenticodeSignature</item> + <item>Set-BitsTransfer</item> + <item>Set-CimInstance</item> + <item>Set-Clipboard</item> + <item>Set-ClusterLog</item> + <item>Set-ClusterOwnerNode</item> + <item>Set-ClusterParameter</item> + <item>Set-ClusterQuorum</item> + <item>Set-ClusterResourceDependency</item> + <item>Set-Content</item> + <item>Set-Date</item> + <item>Set-DscLocalConfigurationManager</item> + <item>Set-ExecutionPolicy</item> + <item>Set-GPInheritance</item> + <item>Set-GPLink</item> + <item>Set-GPPermissions</item> + <item>Set-GPPrefRegistryValue</item> + <item>Set-GPRegistryValue</item> + <item>Set-Item</item> + <item>Set-ItemProperty</item> + <item>Set-JobTrigger</item> + <item>Set-Location</item> + <item>Set-NlbCluster</item> + <item>Set-NlbClusterNode</item> + <item>Set-NlbClusterNodeDip</item> + <item>Set-NlbClusterPortRule</item> + <item>Set-NlbClusterPortRuleNodeHandlingPriority</item> + <item>Set-NlbClusterPortRuleNodeWeight</item> + <item>Set-NlbClusterVip</item> + <item>Set-PackageSource</item> + <item>Set-PSBreakpoint</item> + <item>Set-PSDebug</item> + <item>Set-PSReadlineKeyHandler</item> + <item>Set-PSReadlineOption</item> + <item>Set-PSSessionConfiguration</item> + <item>Set-ScheduledJob</item> + <item>Set-ScheduledJobOption</item> + <item>Set-Service</item> + <item>Set-StrictMode</item> + <item>Set-TraceSource</item> + <item>Set-Variable</item> + <item>Set-WmiInstance</item> + <item>Set-WSManInstance</item> + <item>Set-WSManQuickConfig</item> + <item>Show-Command</item> + <item>Show-ControlPanelItem</item> + <item>Show-EventLog</item> + <item>Sort-Object</item> + <item>Split-Path</item> + <item>Start-BitsTransfer</item> + <item>Start-Cluster</item> + <item>Start-ClusterGroup</item> + <item>Start-ClusterNode</item> + <item>Start-ClusterResource</item> + <item>Start-DscConfiguration</item> + <item>Start-Job</item> + <item>Start-NlbCluster</item> + <item>Start-NlbClusterNode</item> + <item>Start-Process</item> + <item>Start-Service</item> + <item>Start-Sleep</item> + <item>Start-Transaction</item> + <item>Start-Transcript</item> + <item>Stop-Cluster</item> + <item>Stop-ClusterGroup</item> + <item>Stop-ClusterNode</item> + <item>Stop-ClusterResource</item> + <item>Stop-Computer</item> + <item>Stop-Job</item> + <item>Stop-NlbCluster</item> + <item>Stop-NlbClusterNode</item> + <item>Stop-Process</item> + <item>Stop-Service</item> + <item>Stop-Transcript</item> + <item>Suspend-BitsTransfer</item> + <item>Suspend-ClusterNode</item> + <item>Suspend-ClusterResource</item> + <item>Suspend-Job</item> + <item>Suspend-NlbCluster</item> + <item>Suspend-NlbClusterNode</item> + <item>Suspend-Service</item> + <item>Tee-Object</item> + <item>Test-AppLockerPolicy</item> + <item>Test-Cluster</item> + <item>Test-ClusterResourceFailure</item> + <item>Test-ComputerSecureChannel</item> + <item>Test-Connection</item> + <item>Test-DscConfiguration</item> + <item>Test-ModuleManifest</item> + <item>Test-Path</item> + <item>Test-PSSessionConfigurationFile</item> + <item>Test-WSMan</item> + <item>Trace-Command</item> + <item>Unblock-File</item> + <item>Undo-Transaction</item> + <item>Uninstall-ADServiceAccount</item> + <item>Uninstall-Package</item> + <item>Unlock-ADAccount</item> + <item>Unprotect-CmsMessage</item> + <item>Unregister-Event</item> + <item>Unregister-PackageSource</item> + <item>Unregister-PSSessionConfiguration</item> + <item>Unregister-ScheduledJob</item> + <item>Update-ClusterIPResource</item> + <item>Update-ClusterVirtualMachineConfiguration</item> + <item>Update-FormatData</item> + <item>Update-Help</item> + <item>Update-List</item> + <item>Update-TypeData</item> + <item>Use-Transaction</item> + <item>Wait-Debugger</item> + <item>Wait-Event</item> + <item>Wait-Job</item> + <item>Wait-Process</item> + <item>Where-Object</item> + <item>Write-Debug</item> + <item>Write-Error</item> + <item>Write-EventLog</item> + <item>Write-Host</item> + <item>Write-Information</item> + <item>Write-Output</item> + <item>Write-Progress</item> + <item>Write-Verbose</item> + <item>Write-Warning</item> + <item>ac</item> + <item>asnp</item> + <item>cat</item> + <item>cd</item> + <item>chdir</item> + <item>clc</item> + <item>clear</item> + <item>clhy</item> + <item>cli</item> + <item>clp</item> + <item>cls</item> + <item>clv</item> + <item>cnsn</item> + <item>compare</item> + <item>copy</item> + <item>cp</item> + <item>cpi</item> + <item>cpp</item> + <item>curl</item> + <item>cvpa</item> + <item>dbp</item> + <item>del</item> + <item>diff</item> + <item>dir</item> + <item>dnsn</item> + <item>ebp</item> + <item>echo</item> + <item>epal</item> + <item>epcsv</item> + <item>epsn</item> + <item>erase</item> + <item>etsn</item> + <item>exsn</item> + <item>fc</item> + <item>fl</item> + <item>foreach</item> + <item>ft</item> + <item>fw</item> + <item>gal</item> + <item>gbp</item> + <item>gc</item> + <item>gci</item> + <item>gcm</item> + <item>gcs</item> + <item>gdr</item> + <item>ghy</item> + <item>gi</item> + <item>gjb</item> + <item>gl</item> + <item>gm</item> + <item>gmo</item> + <item>gp</item> + <item>gps</item> + <item>group</item> + <item>gsn</item> + <item>gsnp</item> + <item>gsv</item> + <item>gu</item> + <item>gv</item> + <item>gwmi</item> + <item>h</item> + <item>history</item> + <item>icm</item> + <item>iex</item> + <item>ihy</item> + <item>ii</item> + <item>ipal</item> + <item>ipcsv</item> + <item>ipmo</item> + <item>ipsn</item> + <item>irm</item> + <item>ise</item> + <item>iwmi</item> + <item>iwr</item> + <item>kill</item> + <item>lp</item> + <item>ls</item> + <item>man</item> + <item>md</item> + <item>measure</item> + <item>mi</item> + <item>mount</item> + <item>move</item> + <item>mp</item> + <item>mv</item> + <item>nal</item> + <item>ndr</item> + <item>ni</item> + <item>nmo</item> + <item>npssc</item> + <item>nsn</item> + <item>nv</item> + <item>ogv</item> + <item>oh</item> + <item>popd</item> + <item>ps</item> + <item>pushd</item> + <item>pwd</item> + <item>r</item> + <item>rbp</item> + <item>rcjb</item> + <item>rcsn</item> + <item>rd</item> + <item>rdr</item> + <item>ren</item> + <item>ri</item> + <item>rjb</item> + <item>rm</item> + <item>rmdir</item> + <item>rmo</item> + <item>rni</item> + <item>rnp</item> + <item>rp</item> + <item>rsn</item> + <item>rsnp</item> + <item>rujb</item> + <item>rv</item> + <item>rvpa</item> + <item>rwmi</item> + <item>sajb</item> + <item>sal</item> + <item>saps</item> + <item>sasv</item> + <item>sbp</item> + <item>sc</item> + <item>select</item> + <item>set</item> + <item>shcm</item> + <item>si</item> + <item>sl</item> + <item>sleep</item> + <item>sls</item> + <item>sort</item> + <item>sp</item> + <item>spjb</item> + <item>spps</item> + <item>spsv</item> + <item>start</item> + <item>sujb</item> + <item>sv</item> + <item>swmi</item> + <item>tee</item> + <item>trcm</item> + <item>type</item> + <item>wget</item> + <item>where</item> + <item>wjb</item> + <item>write</item> + <item>\%</item> + <item>\?</item> + </list> + <list name="special-variables"> + <item>$_</item> + <item>$True</item> + <item>$False</item> + <item>$Env</item> + <item>$Null</item> + <item>$^</item> + <item>$$</item> + <item>$?</item> + <item>$input</item> + <item>$foreach</item> + <item>$args</item> + <item>$switch</item> + <item>$matches</item> + <item>$LastExitCode</item> + <item>$Error</item> + <item>$StackTrace</item> + <item>$HOME</item> + <item>$PsHome</item> + <item>$ConsoleFileName</item> + <item>$PWD</item> + <item>$ShellId</item> + <item>$Profile</item> + <item>$Host</item> + <item>$OFS</item> + </list> + <contexts> + <context attribute="Normal Text" lineEndContext="#stay" name="Normal"> + <keyword attribute="Keyword" context="#stay" String="keywords"/> + <keyword attribute="Data Type" context="#stay" String="types" /> + <IncludeRules context="Cmdlet" /> + <DetectChar attribute="String" context="String" char="""/> + <Detect2Chars attribute="HereString" context="HereStringer" char="@" char1=""" beginRegion="StringRegion"/> + <IncludeRules context="##Doxygen" /> + <DetectChar attribute="Comment" context="Commentar 1" char="#"/> + <Detect2Chars attribute="Comment" context="Commentar 2" char="<" char1="#" beginRegion="CommentRegion"/> + <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/> + <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/> + <RegExpr attribute="Keyword" context="#stay" String="\b\$global(?=\s+(:))"/> + <RegExpr attribute="Keyword" context="#stay" String="\b\$script(?=\s+(:))"/> + <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" /> + <keyword attribute="Special Variable" context="#stay" String="special-variables"/> + <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" /> + <AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/.*<=>?[]|~^;"/> + </context> + <context attribute="String" lineEndContext="#pop" name="String"> + <LineContinue attribute="String" context="#pop"/> + <DetectChar attribute="String" context="#pop" char="""/> + </context> + <context attribute="HereString" lineEndContext="#stay" name="HereStringer"> + <Detect2Chars attribute="HereString" context="#pop" char=""" char1="@" endRegion="StringRegion"/> + </context> + <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop"> + <RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/> + <context attribute="Comment" lineEndContext="#stay" name="Commentar 2"> + <Detect2Chars attribute="Comment" context="#pop" char="#" char1=">" endRegion="CommentRegion"/> + </context> + <context attribute="Cmdlets" lineEndContext="#stay" name="Cmdlet"> + <keyword attribute="Function" context="#stay" String="cmdlets"/> + </context> + </contexts> + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/> + <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/> + <itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="HereString" defStyleNum="dsVerbatimString"/> + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="Cmdlets" defStyleNum="dsBuiltIn" spellChecking="false"/> + <itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/> + <itemData name="Special Variable" defStyleNum="dsVariable" bold="1" spellChecking="false"/> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="#" /> + <comment name="multiLine" start="<#" end="#>" region="CommentRegion"/> + </comments> + <keywords casesensitive="0" weakDeliminator=":-"/> + </general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/python.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/python.xml new file mode 100644 index 0000000000..33a313a694 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/python.xml @@ -0,0 +1,688 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language> +<!-- Python syntax highlightning v0.9 by Per Wigren --> +<!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) --> +<!-- Python syntax highlighting v1.97 by Paul Giannaros --> +<!-- Python syntax highlighting v1.99 by Primoz Anzur --> +<!-- Python syntax highlighting v2.01 by Paul Giannaros: + * full format character support + * unicode string modifier supported --> +<!-- v2.02 remove RegExpr for nums and make indent consistent --> +<!-- v2.03 highlight decorators, remove operator regex, don't highlight parens as operators --> +<!-- v2.04 make alerts visible even if they are directly after ''' or # without a space --> +<!-- v2.06 decorator names can (and often do) contain periods --> +<!-- v2.07 add support for %prog and co, see bug 142832 --> +<!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords --> +<!-- v2.29 recognize escape sequenzes correctly --> +<language name="Python" version="9" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license=""> + <highlighting> + <list name="import"> + <item>import</item> + <item>from</item> + <item>as</item> + </list> + <list name="defs"> + <item>class</item> + <item>def</item> + <item>del</item> + <item>global</item> + <item>lambda</item> + <item>nonlocal</item> + </list> + <list name="operators"> + <item>and</item> + <item>in</item> + <item>is</item> + <item>not</item> + <item>or</item> + </list> + <list name="flow"> + <item>assert</item> + <item>break</item> + <item>continue</item> + <item>elif</item> + <item>else</item> + <item>except</item> + <item>finally</item> + <item>for</item> + <item>if</item> + <item>pass</item> + <item>raise</item> + <item>return</item> + <item>try</item> + <item>while</item> + <item>with</item> + <item>yield</item> + <item>async</item> + <item>await</item> + </list> + <list name="builtinfuncs"> + <item>__import__</item> + <item>abs</item> + <item>all</item> + <item>any</item> + <item>apply</item> + <item>ascii</item> + <item>basestring</item> + <item>bin</item> + <item>bool</item> + <item>buffer</item> + <item>bytearray</item> + <item>bytes</item> + <item>callable</item> + <item>chr</item> + <item>classmethod</item> + <item>cmp</item> + <item>coerce</item> + <item>compile</item> + <item>complex</item> + <item>delattr</item> + <item>dict</item> + <item>dir</item> + <item>divmod</item> + <item>enumerate</item> + <item>eval</item> + <item>exec</item> + <item>execfile</item> + <item>file</item> + <item>filter</item> + <item>float</item> + <item>format</item> + <item>frozenset</item> + <item>getattr</item> + <item>globals</item> + <item>hasattr</item> + <item>hash</item> + <item>help</item> + <item>hex</item> + <item>id</item> + <item>input</item> + <item>int</item> + <item>intern</item> + <item>isinstance</item> + <item>issubclass</item> + <item>iter</item> + <item>len</item> + <item>list</item> + <item>locals</item> + <item>long</item> + <item>map</item> + <item>max</item> + <item>memoryview</item> + <item>min</item> + <item>next</item> + <item>object</item> + <item>oct</item> + <item>open</item> + <item>ord</item> + <item>pow</item> + <item>print</item> + <item>property</item> + <item>range</item> + <item>raw_input</item> + <item>reduce</item> + <item>reload</item> + <item>repr</item> + <item>reversed</item> + <item>round</item> + <item>set</item> + <item>setattr</item> + <item>slice</item> + <item>sorted</item> + <item>staticmethod</item> + <item>str</item> + <item>sum</item> + <item>super</item> + <item>tuple</item> + <item>type</item> + <item>unichr</item> + <item>unicode</item> + <item>vars</item> + <item>xrange</item> + <item>zip</item> + </list> + <list name="specialvars"> + <item>None</item> + <item>self</item> + <item>True</item> + <item>False</item> + <item>NotImplemented</item> + <item>Ellipsis</item> + <item>__debug__</item> + <item>__file__</item> + <item>__name__</item> + </list> + <list name="bindings"> + <item>SIGNAL</item> + <item>SLOT</item> + <item>connect</item> + </list> + <list name="overloaders"> + <item>__new__</item> + <item>__init__</item> + <item>__del__</item> + <item>__repr__</item> + <item>__str__</item> + <item>__lt__</item> + <item>__le__</item> + <item>__eq__</item> + <item>__ne__</item> + <item>__gt__</item> + <item>__ge__</item> + <item>__cmp__</item> + <item>__rcmp__</item> + <item>__hash__</item> + <item>__nonzero__</item> + <item>__unicode__</item> + <item>__getattr__</item> + <item>__setattr__</item> + <item>__delattr__</item> + <item>__getattribute__</item> + <item>__get__</item> + <item>__set__</item> + <item>__delete__</item> + <item>__call__</item> + <item>__len__</item> + <item>__getitem__</item> + <item>__setitem__</item> + <item>__delitem__</item> + <item>__iter__</item> + <item>__reversed__</item> + <item>__contains__</item> + <item>__getslice__</item> + <item>__setslice__</item> + <item>__delslice__</item> + <item>__add__</item> + <item>__sub__</item> + <item>__mul__</item> + <item>__floordiv__</item> + <item>__mod__</item> + <item>__divmod__</item> + <item>__pow__</item> + <item>__lshift__</item> + <item>__rshift__</item> + <item>__and__</item> + <item>__xor__</item> + <item>__or__</item> + <item>__div__</item> + <item>__truediv__</item> + <item>__radd__</item> + <item>__rsub__</item> + <item>__rmul__</item> + <item>__rdiv__</item> + <item>__rtruediv__</item> + <item>__rfloordiv__</item> + <item>__rmod__</item> + <item>__rdivmod__</item> + <item>__rpow__</item> + <item>__rlshift__</item> + <item>__rrshift__</item> + <item>__rand__</item> + <item>__rxor__</item> + <item>__ror__</item> + <item>__iadd__</item> + <item>__isub__</item> + <item>__imul__</item> + <item>__idiv__</item> + <item>__itruediv__</item> + <item>__ifloordiv__</item> + <item>__imod__</item> + <item>__ipow__</item> + <item>__ilshift__</item> + <item>__irshift__</item> + <item>__iand__</item> + <item>__ixor__</item> + <item>__ior__</item> + <item>__neg__</item> + <item>__pos__</item> + <item>__abs__</item> + <item>__invert__</item> + <item>__complex__</item> + <item>__int__</item> + <item>__long__</item> + <item>__float__</item> + <item>__oct__</item> + <item>__hex__</item> + <item>__index__</item> + <item>__coerce__</item> + <item>__enter__</item> + <item>__exit__</item> + <item>__bytes__</item> + <item>__format__</item> + <item>__next__</item> + <item>__dir__</item> + <item>__await__</item> + <item>__aiter__</item> + <item>__anext__</item> + <item>__aenter__</item> + <item>__aexit__</item> + </list> + <list name="exceptions"> + <!-- + Exceptions list resources used: + - http://docs.python.org/2.7/library/exceptions.html#exception-hierarchy + - http://docs.python.org/3.4/library/exceptions.html#exception-hierarchy + --> + <item>ArithmeticError</item> + <item>AssertionError</item> + <item>AttributeError</item> + <item>BaseException</item> + <item>BlockingIOError</item> + <item>BrokenPipeError</item> + <item>BufferError</item> + <item>BytesWarning</item> + <item>ChildProcessError</item> + <item>ConnectionAbortedError</item> + <item>ConnectionError</item> + <item>ConnectionRefusedError</item> + <item>ConnectionResetError</item> + <item>DeprecationWarning</item> + <item>EnvironmentError</item> + <item>EOFError</item> + <item>Exception</item> + <item>FileExistsError</item> + <item>FileNotFoundError</item> + <item>FloatingPointError</item> + <item>FutureWarning</item> + <item>GeneratorExit</item> + <item>ImportError</item> + <item>ImportWarning</item> + <item>IndentationError</item> + <item>IndexError</item> + <item>InterruptedError</item> + <item>IOError</item> + <item>IsADirectoryError</item> + <item>KeyboardInterrupt</item> + <item>KeyError</item> + <item>LookupError</item> + <item>MemoryError</item> + <item>NameError</item> + <item>NotADirectoryError</item> + <item>NotImplementedError</item> + <item>OSError</item> + <item>OverflowError</item> + <item>PendingDeprecationWarning</item> + <item>PermissionError</item> + <item>ProcessLookupError</item> + <item>ReferenceError</item> + <item>ResourceWarning</item> + <item>RuntimeError</item> + <item>RuntimeWarning</item> + <item>StandardError</item> + <item>StopIteration</item> + <item>SyntaxError</item> + <item>SyntaxWarning</item> + <item>SystemError</item> + <item>SystemExit</item> + <item>TabError</item> + <item>TimeoutError</item> + <item>TypeError</item> + <item>UnboundLocalError</item> + <item>UnicodeDecodeError</item> + <item>UnicodeEncodeError</item> + <item>UnicodeError</item> + <item>UnicodeTranslateError</item> + <item>UnicodeWarning</item> + <item>UserWarning</item> + <item>ValueError</item> + <item>Warning</item> + <item>WindowsError</item> + <item>ZeroDivisionError</item> + </list> + <contexts> + <context name="Normal" attribute="Normal Text" lineEndContext="#stay"> + <keyword attribute="Import" String="import" context="#stay"/> + <keyword attribute="Definition Keyword" String="defs" context="#stay"/> + <keyword attribute="Operator Keyword" String="operators" context="#stay"/> + <keyword attribute="Flow Control Keyword" String="flow" context="#stay"/> + <keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/> + <keyword attribute="Special Variable" String="specialvars" context="#stay"/> + <keyword attribute="Extensions" String="bindings" context="#stay"/> + <keyword attribute="Exceptions" String="exceptions" context="#stay"/> + <keyword attribute="Overloaders" String="overloaders" context="#stay"/> + <RegExpr attribute="Normal Text" String="[a-zA-Z_][a-zA-Z_0-9]{2,}" context="#stay"/> + + <RegExpr attribute="Complex" String=" ((([0-9]*\.[0-9]+|[0-9]+\.)|([0-9]+|([0-9]*\.[0-9]+|[0-9]+\.))[eE](\+|-)?[0-9]+)|[0-9]+)[jJ]" context="#stay"/> + <Float attribute="Float" context="#stay" /> + <HlCHex attribute="Hex" context="#stay"/> + <HlCOct attribute="Octal" context="#stay"/> + <Int attribute="Int" context="Int Suffixes"/> + + <RegExpr attribute="Int" String=" ([0-9]+_)+[0-9]+" context="#stay"/> + <RegExpr attribute="Float" String=" ([0-9]+_)+[0-9]+\.[0-9]+" context="#stay"/> + <RegExpr attribute="Hex" String=" [0-9]x([A-F0-9]+_)+[A-F0-9]+" context="#stay"/> + + <DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/> + <DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/> + <DetectChar attribute="Normal Text" char="(" context="Tuple" beginRegion="Tuple"/> + + <IncludeRules context="CommentVariants" /> + + <DetectChar attribute="Comment" char="#" context="Hash comment"/> + + <IncludeRules context="StringVariants" /> + + <RegExpr attribute="Decorator" String="@[_a-zA-Z][\._a-zA-Z0-9]*" firstNonSpace="true"/> + <AnyChar attribute="Operator" String="+*/%\|=;\!<>!^&~-@" context="#stay"/> + </context> + + <context name="Int Suffixes" attribute="Int" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> + <StringDetect attribute="Int" context="#pop" String="L" insensitive="true"/> + </context> + + <context name="#CheckForString" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> + <DetectSpaces/> + <LineContinue attribute="Normal Text" context="CheckForStringNext"/> + </context> + + <context name="CheckForStringNext" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> + <DetectSpaces/> + <LineContinue attribute="Normal Text" context="CheckForStringNext"/> + <IncludeRules context="StringVariants"/> + </context> + + <context name="StringVariants" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces/> + + <RegExpr attribute="String" String="u?'''" insensitive="true" context="Triple A-string" beginRegion="Triple A-region"/> + <RegExpr attribute="String" String="u?"""" insensitive="true" context="Triple Q-string" beginRegion="Triple Q-region"/> + <RegExpr attribute="String" String="u?'" insensitive="true" context="Single A-string"/> + <RegExpr attribute="String" String="u?"" insensitive="true" context="Single Q-string"/> + + <RegExpr attribute="Raw String" String="(u?r|ru)'''" insensitive="true" context="Raw Triple A-string" beginRegion="Triple A-region"/> + <RegExpr attribute="Raw String" String="(u?r|ru)"""" insensitive="true" context="Raw Triple Q-string" beginRegion="Triple Q-region"/> + <RegExpr attribute="Raw String" String="(u?r|ru)'" insensitive="true" context="Raw A-string"/> + <RegExpr attribute="Raw String" String="(u?r|ru)"" insensitive="true" context="Raw Q-string"/> + + <StringDetect attribute="F-String" String="f'''" insensitive="true" context="Triple A-F-String" beginRegion="Triple A-region"/> + <StringDetect attribute="F-String" String="f"""" insensitive="true" context="Triple Q-F-String" beginRegion="Triple Q-region"/> + <StringDetect attribute="F-String" String="f'" insensitive="true" context="Single A-F-String"/> + <StringDetect attribute="F-String" String="f"" insensitive="true" context="Single Q-F-String"/> + + <RegExpr attribute="Raw F-String" String="(fr|rf)'''" insensitive="true" context="Raw Triple A-F-String" beginRegion="Triple A-region"/> + <RegExpr attribute="Raw F-String" String="(fr|rf)"""" insensitive="true" context="Raw Triple Q-F-String" beginRegion="Triple Q-region"/> + <RegExpr attribute="Raw F-String" String="(fr|rf)'" insensitive="true" context="Raw A-F-String"/> + <RegExpr attribute="Raw F-String" String="(fr|rf)"" insensitive="true" context="Raw Q-F-String"/> + </context> + + <context name="CommentVariants" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces/> + + <RegExpr attribute="Comment" String="u?'''" insensitive="true" firstNonSpace="true" context="Triple A-comment" beginRegion="Triple A-region"/> + <RegExpr attribute="Comment" String="u?"""" insensitive="true" firstNonSpace="true" context="Triple Q-comment" beginRegion="Triple Q-region"/> + <RegExpr attribute="Comment" String="u?'" insensitive="true" firstNonSpace="true" context="Single A-comment"/> + <RegExpr attribute="Comment" String="u?"" insensitive="true" firstNonSpace="true" context="Single Q-comment"/> + + <RegExpr attribute="Comment" String="(u?r|ru)'''" insensitive="true" firstNonSpace="true" context="Triple A-comment" beginRegion="Triple A-region"/> + <RegExpr attribute="Comment" String="(u?r|ru)"""" insensitive="true" firstNonSpace="true" context="Triple Q-comment" beginRegion="Triple Q-region"/> + <RegExpr attribute="Comment" String="(u?r|ru)'" insensitive="true" firstNonSpace="true" context="Single A-comment"/> + <RegExpr attribute="Comment" String="(u?r|ru)"" insensitive="true" firstNonSpace="true" context="Single Q-comment"/> + </context> + + <context name="Dictionary" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true"> + <DetectSpaces/> + <DetectChar attribute="Normal Text" char="}" context="#pop" endRegion="Dictionary"/> + <IncludeRules context="StringVariants" /> + <IncludeRules context="Normal" /> + </context> + + <context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true"> + <DetectSpaces/> + <DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/> + <IncludeRules context="StringVariants" /> + <IncludeRules context="Normal" /> + </context> + + <context name="Tuple" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true"> + <DetectSpaces/> + <DetectChar attribute="Normal Text" char=")" context="#pop" endRegion="Tuple"/> + <IncludeRules context="StringVariants" /> + <IncludeRules context="Normal" /> + </context> + + <!-- Comments --> + + <context name="Hash comment" attribute="Comment" lineEndContext="#pop"> + <IncludeRules context="##Alerts" /> + <IncludeRules context="##Modelines" /> + </context> + + <context name="Triple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true"> + <IncludeRules context="stringescape"/> + <StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Triple A-region"/> + <IncludeRules context="##Alerts" /> + </context> + + <context name="Triple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true"> + <IncludeRules context="stringescape"/> + <StringDetect attribute="Comment" String=""""" context="#pop" endRegion="Triple Q-region"/> + <IncludeRules context="##Alerts" /> + </context> + + <context name="Single A-comment" attribute="Comment" lineEndContext="#stay"> + <IncludeRules context="stringescape"/> + <DetectChar attribute="Comment" char="'" context="#pop"/> + <IncludeRules context="##Alerts" /> + </context> + + <context name="Single Q-comment" attribute="Comment" lineEndContext="#stay"> + <IncludeRules context="stringescape"/> + <DetectChar attribute="Comment" char=""" context="#pop"/> + <IncludeRules context="##Alerts" /> + </context> + + <!-- Strings --> + + <!-- format characters --> + <context name="stringformat" attribute="String Substitution" lineEndContext="#stay"> + <!-- Python 2 style. Syntax: + 1. start character '%' + 2. [optional] Mapping key, e.g. '(foo)' + 3. [optional] Conversion flags, one of '#0- +' + 4. [optional] Minimum width, integer or '*' + 5. [optional] Precision, '.' followed by integer or '*' + 6. [optional] Length modifier, one of 'hlL' + 7. conversion type, one of 'crsdiouxXeEfFgG%' + [Special cases: %prog and %default - see http://docs.python.org/library/optparse.html] + --> + <RegExpr attribute="String Substitution" String="%((\([a-zA-Z0-9_]+\))?[#0\- +]?([1-9][0-9]*|\*)?(\.([1-9][0-9]*|\*))?[hlL]?[crsdiouxXeEfFgG%]|prog|default)" context="#stay"/> + <!-- http://docs.python.org/2/library/string.html#format-string-syntax: + replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" + field_name ::= arg_name ("." attribute_name | "[" element_index "]")* + arg_name ::= [identifier | integer] + attribute_name ::= identifier + element_index ::= integer | index_string + index_string ::= <any source character except "]"> + + conversion ::= "r" | "s" + format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] + fill ::= <any character> + align ::= "<" | ">" | "=" | "^" + sign ::= "+" | "-" | " " + width ::= integer + precision ::= integer + type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" + --> + <RegExpr attribute="String Substitution" String="\{(([a-zA-Z0-9_]+|[0-9]+)(\.[a-zA-Z0-9_]+|\[[^ \]]+\])*)?(![rs])?(:([^}]?[<>=^])?[ +-]?#?0?[0-9]*(\.[0-9]+)?[bcdeEfFgGnosxX%]?)?\}" context="#stay"/> + <Detect2Chars attribute="String Substitution" char="{" char1="{" context="#stay" /> + <Detect2Chars attribute="String Substitution" char="}" char1="}" context="#stay" /> + </context> + + <!-- escape characters --> + <context name="stringescape" attribute="String Char" lineEndContext="#stay"> + <!-- As this highlighting style is for both, Python 2 and 3, + we do not know if a normal string is “unicode” or not. So we + --> + <RegExpr attribute="String Char" String="\\[\\'"abfnrtv]" context="#stay"/> + <RegExpr attribute="String Char" String="\\[0-7]{1,3}" context="#stay"/> + <RegExpr attribute="String Char" String="\\x[0-9A-Fa-f]{2}" context="#stay"/> + <RegExpr attribute="String Char" String="\\u[0-9A-Fa-f]{4}" context="#stay"/> + <RegExpr attribute="String Char" String="\\U[0-9A-Fa-f]{8}" context="#stay"/> + <RegExpr attribute="String Char" String="\\N\{[a-zA-Z0-9\- ]+\}" context="#stay"/> + </context> + + <!-- f-literals --> + <context name="stringinterpolation" attribute="F-String" lineEndContext="#stay"> + <Detect2Chars attribute="String Char" char="{" char1="{" context="#stay"/> + <DetectChar attribute="String Substitution" char="{" context="String Interpolation"/> + </context> + <context name="String Interpolation" attribute="String Substitution" lineEndContext="#stay"> + <DetectChar attribute="Error" char="\" context="#pop"/> + <RegExpr attribute="String Substitution" String="(![rs])?(:([^}]?[<>=^])?[ +-]?#?0?[0-9]*(\.[0-9]+)?[bcdeEfFgGnosxX%]?)?\}" context="#pop"/> + <IncludeRules context="Normal"/> <!-- TODO: create expression context instead --> + </context> + + + <!-- + It follows a Binary tree of string kinds (not even touching byte literals). + The levels are: + 1. triple- vs. single-quoted + 2. apostrophe vs. quotation mark + 3. static vs. interpolated (f-literal) + 4. escaped vs. raw + Adding byte literals wouldn’t make the current 2⁴ into 2⁵ contexts, as there are no byte f-literals + --> + + + <!-- Triple-quoted A-strings --> + <context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true"> + <IncludeRules context="stringescape"/> + <IncludeRules context="stringformat"/> + <StringDetect attribute="String" String="'''" context="#pop#CheckForString" endRegion="Triple A-region"/> + </context> + + <context name="Raw Triple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true"> + <HlCStringChar attribute="Raw String" context="#stay"/> + <IncludeRules context="stringformat"/> + <StringDetect attribute="Raw String" String="'''" context="#pop#CheckForString" endRegion="Triple A-region"/> + </context> + + <context name="Triple A-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true"> + <IncludeRules context="stringescape"/> + <IncludeRules context="stringinterpolation"/> + <StringDetect attribute="F-String" String="'''" context="#pop#CheckForString" endRegion="Triple A-region"/> + </context> + + <context name="Raw Triple A-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true"> + <HlCStringChar attribute="Raw F-String" context="#stay"/> + <IncludeRules context="stringinterpolation"/> + <StringDetect attribute="Raw F-String" String="'''" context="#pop#CheckForString" endRegion="Triple A-region"/> + </context> + + <!-- Triple-quoted Q-strings --> + <context name="Triple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true"> + <IncludeRules context="stringescape"/> + <IncludeRules context="stringformat"/> + <StringDetect attribute="String" String=""""" context="#pop#CheckForString" endRegion="Triple Q-region"/> + </context> + + <context name="Raw Triple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true"> + <HlCStringChar attribute="Raw String" context="#stay"/> + <IncludeRules context="stringformat"/> + <StringDetect attribute="Raw String" String=""""" context="#pop#CheckForString" endRegion="Triple Q-region"/> + </context> + + <context name="Triple Q-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true"> + <IncludeRules context="stringescape"/> + <IncludeRules context="stringinterpolation"/> + <StringDetect attribute="F-String" String=""""" context="#pop#CheckForString" endRegion="Triple Q-region"/> + </context> + + <context name="Raw Triple Q-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true"> + <HlCStringChar attribute="Raw F-String" context="#stay"/> + <IncludeRules context="stringinterpolation"/> + <StringDetect attribute="Raw F-String" String=""""" context="#pop#CheckForString" endRegion="Triple Q-region"/> + </context> + + + <!-- Single-quoted A-strings --> + <context name="Single A-string" attribute="String" lineEndContext="#stay"> + <IncludeRules context="stringescape"/> + <IncludeRules context="stringformat"/> + <DetectChar attribute="String" char="'" context="#pop#CheckForString"/> + </context> + + <context name="Raw A-string" attribute="Raw String" lineEndContext="#stay"> + <HlCStringChar attribute="Raw String" context="#stay"/> + <IncludeRules context="stringformat"/> + <DetectChar attribute="Raw String" char="'" context="#pop#CheckForString"/> + </context> + + <context name="Single A-F-String" attribute="F-String" lineEndContext="#stay"> + <IncludeRules context="stringescape"/> + <IncludeRules context="stringinterpolation"/> + <DetectChar attribute="F-String" char="'" context="#pop#CheckForString"/> + </context> + + <context name="Raw A-F-String" attribute="Raw F-String" lineEndContext="#stay"> + <HlCStringChar attribute="Raw F-String" context="#stay"/> + <IncludeRules context="stringinterpolation"/> + <DetectChar attribute="Raw F-String" char="'" context="#pop#CheckForString"/> + </context> + + <!-- Single-quoted Q-strings --> + <context name="Single Q-string" attribute="String" lineEndContext="#stay"> + <IncludeRules context="stringescape"/> + <IncludeRules context="stringformat"/> + <DetectChar attribute="String" char=""" context="#pop#CheckForString"/> + </context> + + <context name="Raw Q-string" attribute="Raw String" lineEndContext="#stay"> + <HlCStringChar attribute="Raw String" context="#stay"/> + <IncludeRules context="stringformat"/> + <DetectChar attribute="Raw String" char=""" context="#pop#CheckForString"/> + </context> + + <context name="Single Q-F-String" attribute="F-String" lineEndContext="#stay"> + <IncludeRules context="stringescape"/> + <IncludeRules context="stringinterpolation"/> + <DetectChar attribute="F-String" char=""" context="#pop#CheckForString"/> + </context> + + <context name="Raw Q-F-String" attribute="Raw F-String" lineEndContext="#stay"> + <HlCStringChar attribute="Raw F-String" context="#stay"/> + <IncludeRules context="stringinterpolation"/> + <DetectChar attribute="Raw F-String" char=""" context="#pop#CheckForString"/> + </context> + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="Definition Keyword" defStyleNum="dsKeyword" spellChecking="false"/> + <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/> + <itemData name="Operator Keyword" defStyleNum="dsKeyword" spellChecking="false"/> + <itemData name="Flow Control Keyword" defStyleNum="dsControlFlow" spellChecking="false"/> + <itemData name="Builtin Function" defStyleNum="dsBuiltIn" spellChecking="false"/> + <itemData name="Special Variable" defStyleNum="dsVariable" spellChecking="false"/> + <itemData name="Extensions" defStyleNum="dsExtension" spellChecking="false"/> + <itemData name="Exceptions" defStyleNum="dsPreprocessor" spellChecking="false"/> + <itemData name="Overloaders" defStyleNum="dsFunction" spellChecking="false"/> + <itemData name="Import" defStyleNum="dsImport" spellChecking="false"/> + <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/> + <itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/> + <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/> + <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/> + <itemData name="Complex" defStyleNum="dsOthers" spellChecking="false"/> + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="Raw String" defStyleNum="dsVerbatimString"/> + <itemData name="F-String" defStyleNum="dsSpecialString"/> + <itemData name="Raw F-String" defStyleNum="dsVerbatimString"/> + <itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/> + <itemData name="String Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/> + <itemData name="Decorator" defStyleNum="dsAttribute" spellChecking="false"/> + <itemData name="Error" defStyleNum="dsError"/> + </itemDatas> + </highlighting> + <general> + <folding indentationsensitive="1" /> + <emptyLines> + <emptyLine regexpr="(?:\s+|\s*#.*)"/> + </emptyLines> + <comments> + <comment name="singleLine" start="#" position="afterwhitespace"/> + </comments> + <keywords casesensitive="1" additionalDeliminator="#'"/> + </general> +</language> + +<!-- kate: space-indent off; indent-width 4; --> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/qdocconf.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/qdocconf.xml new file mode 100644 index 0000000000..0efd6edc3f --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/qdocconf.xml @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<language name="QDoc Configuration" + version="1" + kateversion="5.0" + section="Configuration" + extensions="*.qdocconf" + author="Volker Krause (vkrause@kde.org)" + license="MIT"> + <highlighting> + <list name="key-names"> + <item>alias</item> + <item>buildversion</item> + <item>Cpp</item> + <item>customFilters</item> + <item>defines</item> + <item>depends</item> + <item>description</item> + <item>dita</item> + <item>edition</item> + <item>endheader</item> + <item>exampledirs</item> + <item>examples</item> + <item>excludedirs</item> + <item>excludefiles</item> + <item>falsehoods</item> + <item>file</item> + <item>filterAttributes</item> + <item>headerdirs</item> + <item>headers</item> + <item>HTML</item> + <item>imagedirs</item> + <item>images</item> + <item>indexes</item> + <item>indexRoot</item> + <item>indexTitle</item> + <item>language</item> + <item>macro</item> + <item>manifestmeta</item> + <item>name</item> + <item>namespace</item> + <item>navigation</item> + <item>outputdir</item> + <item>outputformats</item> + <item>outputprefixes</item> + <item>outputsuffixes</item> + <item>project</item> + <item>projects</item> + <item>qhp</item> + <item>selectors</item> + <item>sortPages</item> + <item>sourcedirs</item> + <item>sources</item> + <item>sources.fileextensions</item> + <item>spurious</item> + <item>subprojects</item> + <item>tabsize</item> + <item>tagfile</item> + <item>title</item> + <item>type</item> + <item>url</item> + <item>version</item> + <item>versionsym</item> + <item>virtualFolder</item> + </list> + <list name="function-names"> + <item>include</item> + </list> + <list name="selector-names"> + <item>namespace</item> + <item>class</item> + <item>qmltype</item> + <item>qmlclass</item> + <item>module</item> + <item>qmlmodule</item> + <item>doc</item> + <item>fake</item> + <item>group</item> + <item>example</item> + <item>headerfile</item> + <item>page</item> + <item>manual</item> + </list> + + <contexts> + <context name="key-context" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar char="#" context="comment-context" column="0"/> + <keyword attribute="Keyword" String="key-names"/> + <keyword attribute="Function" String="function-names"/> + <DetectChar char="=" context="value-context"/> + <DetectChar char="(" context="argument-context"/> + </context> + + <context name="value-context" attribute="Normal Text" lineEndContext="#pop" lineEmptyContext="#pop"> + <DetectChar attribute="String" context="string-context" char="""/> + <keyword attribute="Selector" String="selector-names"/> + <RegExpr attribute="Variable" String="\$\w+"/> + <LineContinue char="\" context="#stay"/> + </context> + + <context name="argument-context" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="String" context="string-context" char="""/> + <RegExpr attribute="Variable" String="\$\w+"/> + <DetectChar char=")" context="#pop"/> + <LineContinue char="\" context="#stay"/> + </context> + + <context name="string-context" attribute="String" lineEndContext="#stay"> + <HlCStringChar attribute="Special Character"/> + <RegExpr attribute="Variable" String="\$\w+"/> + <DetectChar attribute="String" context="#pop" char="""/> + </context> + + <context name="comment-context" attribute="Comment" lineEndContext="#pop"> + <IncludeRules context="##Alerts"/> + </context> + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/> + <itemData name="Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/> + <itemData name="String" defStyleNum="dsString" spellChecking="false"/> + <itemData name="Special Character" defStyleNum="dsSpecialChar" spellChecking="false"/> + <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/> + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/> + <itemData name="Selector" defStyleNum="dsExtension" spellChecking="false"/> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="#"/> + </comments> + <keywords casesensitive="1" weakDeliminator="-/"/> + </general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/ruby.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/ruby.xml new file mode 100644 index 0000000000..754dfdc5fe --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/ruby.xml @@ -0,0 +1,915 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> + +<!-- + Ruby syntax highlighting definition for Kate. + + Copyright (C) 2004 by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi) + Copyright (C) 2004 by Stefan Lang (langstefan@gmx.at) + Copyright (C) 2008 by Robin Pedersen (robinpeder@gmail.com) + Copyright (C) 2011 by Miquel Sabaté (mikisabate@gmail.com) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +--> + +<!-- + TODO: Division after gdl contexts is interpreted as regexp +--> + +<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". --> +<language name="Ruby" section="Scripts" + version="9" kateversion="3.3" + extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile" + mimetype="application/x-ruby" + style="ruby" indenter="ruby" + author="Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi), Robin Pedersen (robinpeder@gmail.com), Miquel Sabaté (mikisabate@gmail.com)" license="LGPLv2+"> + + <highlighting> + + <list name="keywords"> + <item>BEGIN</item> + <item>END</item> + <item>and</item> + <item>begin</item> + <item>break</item> + <item>case</item> + <item>defined?</item> + <item>do</item> + <item>else</item> + <item>elsif</item> + <item>end</item> + <item>ensure</item> + <item>for</item> + <item>if</item> + <item>in</item> + <item>next</item> + <item>not</item> + <item>or</item> + <item>redo</item> + <item>rescue</item> + <item>retry</item> + <item>return</item> + <item>then</item> + <item>unless</item> + <item>until</item> + <item>when</item> + <item>yield</item> + </list> + + <list name="access-control"> + <item>private_class_method</item> + <item>private</item> + <item>protected</item> + <item>public_class_method</item> + <item>public</item> + </list> + + <list name="attribute-definitions"> + <item>attr_reader</item> + <item>attr_writer</item> + <item>attr_accessor</item> + </list> + + <list name="definitions"> + <item>alias</item> + <item>module</item> + <item>class</item> + <item>def</item> + <item>undef</item> + </list> + + <list name="pseudo-variables"> + <item>self</item> + <item>super</item> + <item>nil</item> + <item>false</item> + <item>true</item> + <item>caller</item> + <item>__FILE__</item> + <item>__LINE__</item> + </list> + + <list name="default-globals"> + <item>$stdout</item> + <item>$defout</item> + <item>$stderr</item> + <item>$deferr</item> + <item>$stdin</item> + </list> + + <!-- Kernel module methods. + NOTE: Methods ending in ? or ! + are included below as regexes. + --> + <list name="kernel-methods"> + <!-- backquote ` --> + <item>abort</item> + <item>at_exit</item> + <item>autoload</item> + <item>autoload?</item> + <item>binding</item> + <item>block_given?</item> + <item>callcc</item> + <item>caller</item> + <item>catch</item> + <item>chomp</item> + <item>chomp!</item> + <item>chop</item> + <item>chop!</item> + <item>eval</item> + <item>exec</item> + <item>exit</item> + <item>exit!</item> + <item>fail</item> + <item>fork</item> + <item>format</item> + <item>getc</item> + <item>gets</item> + <item>global_variables</item> + <item>gsub</item> + <item>gsub!</item> + <item>iterator?</item> + <item>lambda</item> + <item>load</item> + <item>local_variables</item> + <item>loop</item> + <item>method_missing</item> + <item>open</item> + <item>p</item> + <item>print</item> + <item>printf</item> + <item>proc</item> + <item>putc</item> + <item>puts</item> + <item>raise</item> + <item>rand</item> + <item>readline</item> + <item>readlines</item> + <item>require</item> + <item>require_relative</item> + <item>scan</item> + <item>select</item> + <item>set_trace_func</item> + <item>sleep</item> + <item>split</item> + <item>sprintf</item> + <item>srand</item> + <item>sub</item> + <item>sub!</item> + <item>syscall</item> + <item>system</item> + <item>test</item> + <item>throw</item> + <item>trace_var</item> + <item>trap</item> + <item>untrace_var</item> + <item>warn</item> + </list> + + <list name="mixin-methods"> + <item>extend</item> + <item>include</item> + <item>prepend</item> + </list> + + <contexts> + <context name="Normal" attribute="Normal Text" lineEndContext="#stay"> + <!-- ruby ignores newline after \ --> + <LineContinue attribute="Normal Text" context="Line Continue"/> + + <!-- __END__ token on own line. --> + <RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/> + + <!-- "shebang" line --> + <RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/> + + <!-- "def" - "end" blocks --> + <!-- check for statement modifiers with regexes --> + <DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" /> + <RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/> + <RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/> + <WordDetect attribute="Keyword" String="class" context="#stay" beginRegion="def block"/> + <WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/> + <WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/> + <WordDetect attribute="Keyword" String="case" context="#stay" beginRegion="def block"/> + <WordDetect attribute="Keyword" String="do" context="#stay" beginRegion="def block"/> + <WordDetect attribute="Keyword" String="def" context="#stay" beginRegion="def block"/> + <WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/> + <!-- elsif/else close the current block and start a new one --> + <RegExpr attribute="Keyword" String="\b(else|elsif|rescue|ensure)\b" context="#stay" endRegion="def block" beginRegion="def block"/> + + <StringDetect attribute="Operator" String="..." context="#stay"/> + <Detect2Chars attribute="Operator" char="." char1="." context="#stay"/> + + <!-- marks a message (being sent, not defined) --> + <RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="check_div_2"/> + + <!-- Check for "ASCII code operator". e.g.: ?a --> + <RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="check_div_1"/> + + <keyword attribute="Keyword" String="keywords" context="#stay"/> + <keyword attribute="Attribute Definition" String="attribute-definitions" context="check_div_2"/> + <keyword attribute="Access Control" String="access-control" context="check_div_2"/> + <keyword attribute="Definition" String="definitions" context="#stay" /> + <keyword attribute="Pseudo variable" String="pseudo-variables" context="check_div_1"/> + <keyword attribute="Default globals" String="default-globals" context="check_div_2"/> + <keyword attribute="Kernel methods" String="kernel-methods" context="check_div_2"/> + <keyword attribute="Module mixin methods" String="mixin-methods" context="check_div_2"/> + + <!-- (global) vars starting with $ + Match them before $_. + --> + <RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+" context="check_div_1"/> + <RegExpr attribute="Global Variable" String="\$\-[a-zA-Z_]\b" context="check_div_1"/> + <!-- special-character globals --> + <RegExpr attribute="Default globals" String="\$[\d_*`+@;,.~=\!\$:?'/\\\-\&"><]" context="check_div_1"/> + <RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/> + <!-- Generally a module or class name like "File", "MyModule_1", .. --> + <RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/> + + <!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). --> + <RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="check_div_1"/> + <RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="check_div_1"/> + <RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="check_div_1"/> + <RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="check_div_1"/> + <RegExpr attribute="Dec" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="check_div_1"/> + <Int attribute="Dec" context="check_div_1"/> + <HlCChar attribute="Char" context="check_div_1"/> + + <!-- Check for =begin before assignment operator. --> + <RegExpr attribute="Blockcomment" String="^=begin(?:\s|$)" context="Embedded documentation" beginRegion="comment block" column="0"/> + + <!-- recognize the beginning of a HEREDOC + This uses new features in Kate 2.3 and later + + There is no other chance of keeping heredoc apart from the + push operator '<<' than requiring to put space between the operator + and the string. + --> + <RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*<<-(?=\w+|["'])" beginRegion="HereDocument" /> + <RegExpr attribute="Operator" context="find_heredoc" String="\s*<<(?=\w+|["'])" beginRegion="HereDocument" /> + + <DetectChar attribute="Operator" char="." context="#stay"/> + <Detect2Chars attribute="Operator" char="&" char1="&" context="#stay"/> + <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/> + <RegExpr attribute="Operator" String="\s[\?\:\%]\s" context="#stay"/> + <RegExpr attribute="Operator" String="[|&<>\^\+*~\-=]+" context="#stay"/> + <!-- regexp hack --> + <RegExpr attribute="Operator" String="\s!" context="#stay"/> + <RegExpr attribute="Operator" String="/=\s" context="#stay" insensitive="0"/> + <Detect2Chars attribute="Operator" char="%" char1="=" context="#stay"/> + <Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/> + + <RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?" context="check_div_1"/> + <RegExpr attribute="Symbol" String=":\[\]=?" context="check_div_1"/> + + <RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: " context="check_div_1"/> + <RegExpr attribute="Symbol" String="\[\]=?: " context="check_div_1"/> + + <DetectChar attribute="String" char=""" context="Quoted String"/> + <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/> + <DetectChar attribute="Command" char="`" context="Command String"/> + + <Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/> + + <RegExpr attribute="Comment" String="#\s*BEGIN.*$" context="#stay" beginRegion="marker" column="0"/> + <RegExpr attribute="Comment" String="#\s*END.*$" context="#stay" endRegion="marker" column="0"/> + <DetectChar attribute="Comment" char="#" context="General Comment"/> + + <DetectChar attribute="Delimiter" char="[" context="#stay"/> + <DetectChar attribute="Delimiter" char="]" context="check_div_1"/> + <DetectChar attribute="Delimiter" char="{" context="#stay" beginRegion="def block"/> + <DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/> + + <RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="check_div_1"/> + <RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="check_div_1"/> + + <!-- handle the different regular expression formats --> + <DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/> + + <!-- recognize the beginning of a general delimited input format --> + <!-- this moves to the next context to separate out the exact nature of the GDL input --> + <RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[QqxwW]?[^\s])" beginRegion="GdlInput" /> + + <DetectChar attribute="Normal Text" char=")" context="check_div_1"/> + <DetectIdentifier attribute="Normal Text" context="check_div_2"/> + + </context> + + <!-- In the following contexts, a slash character ('/') is a division operator --> + <!-- Everywhere else, it's a regular expression delimiter --> + + <!-- A slash is always a division operator, even if preceeded by whitespace --> + <context name="check_div_1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop"> + <RegExpr attribute="Normal Text" String="\s*" context="#stay"/> + <AnyChar attribute="Operator" String="/%" context="#pop"/> + </context> + + <!-- Same as check_div_1, but with double pop to exit the surrounding context --> + <context name="check_div_1_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop"> + <RegExpr attribute="Normal Text" String="\s*" context="#stay"/> + <AnyChar attribute="Operator" String="/%" context="#pop#pop"/> + </context> + + <!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace --> + <context name="check_div_2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop"> + <AnyChar attribute="Operator" String="/%" context="#pop"/> + <RegExpr attribute="Normal Text" String="\s+" context="check_div_2_internal"/> + </context> + + <!-- Internal context used by check_div_2 --> + <context name="check_div_2_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop"> +<!-- <DetectChar attribute="Operator" char="%" context="#pop#pop"/> --> + <RegExpr attribute="Operator" String="[/%](?=\s)" context="#pop#pop"/> + </context> + + <!-- Same as check_div_2, but with double pop to exit the surrounding context --> + <context name="check_div_2_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop"> + <AnyChar attribute="Operator" String="/%" context="#pop#pop"/> + <RegExpr attribute="Normal Text" String="\s+" context="check_div_2_pop_internal"/> + </context> + + <!-- Internal context used by check_div_2_pop --> + <context name="check_div_2_pop_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop#pop" lineEndContext="#pop#pop#pop"> + <DetectChar attribute="Operator" char="%" context="#pop#pop#pop"/> + <RegExpr attribute="Operator" String="/(?=\s)" context="#pop#pop#pop"/> + </context> + + <context name="Line Continue" attribute="Normal Text" lineEndContext="#pop"> + <RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/> + <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" firstNonSpace="true"/> + <IncludeRules context="Normal"/> + </context> + + <context name="Find closing block brace" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Operator" char="}" context="check_div_1_pop" endRegion="def block"/> + <IncludeRules context="Normal"/> + </context> + + <context name="Quoted String" attribute="String" lineEndContext="#stay"> + <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/> + <Detect2Chars attribute="String" char="\" char1=""" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + <DetectChar char=""" attribute="String" context="check_div_1_pop"/> + </context> + + <context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay"> + <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/> + <Detect2Chars attribute="String" char="\" char1="'" context="#stay"/> + <DetectChar char="'" attribute="Raw String" context="check_div_1_pop"/> + </context> + + <context name="Command String" attribute="Command" lineEndContext="#stay"> + <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/> + <Detect2Chars attribute="String" char="\" char1="`" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + <DetectChar char="`" attribute="Command" context="check_div_1_pop"/> + </context> + + <context name="Embedded documentation" attribute="Blockcomment" lineEndContext="#stay"> + <RegExpr attribute="Comment" String="^=end(?:\s.*|$)" context="#pop" endRegion="comment block" column="0"/> + <IncludeRules context="##Alerts" /> + </context> + + <context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay"> + <Detect2Chars attribute="Regular Expression" char="\" char1="/" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + <RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="check_div_1_pop"/> + </context> + + <!-- Substitutions can be nested --> + <context name="Subst" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Substitution" char="}" context="#pop"/> + <!-- Highlight substitution as code. --> + <IncludeRules context="Normal"/> + </context> + + <context name="Short Subst" attribute="Substitution" lineEndContext="#pop"> + <!-- Check for e.g.: "#@var#@@xy" --> + <RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/> + <RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/> + </context> + + <!-- This handles access of nested module classes and class methods --> + <context name="Member Access" attribute="Member" lineEndContext="#pop"> + <!-- marks a message (being sent, not defined) --> + <RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="check_div_2_pop"/> + <RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/> + <RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="check_div_2_pop"/> + <RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/> + <RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="check_div_2_pop"/> + <RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/> + <Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/> + <DetectChar attribute="Member" char="." context="#stay"/> + + <AnyChar attribute="Operator" String="=+-*/%|&[]{}~" context="#pop"/> + <DetectChar attribute="Comment" char="#" context="#pop"/> + <AnyChar attribute="Normal Text" String="()\" context="#pop"/> + <RegExpr attribute="Member" String="\W" context="#pop"/> + </context> + + <context name="General Comment" attribute="Comment" lineEndContext="#pop"> + <IncludeRules context="##Alerts" /> + </context> + + <!-- HEREDOC support + The contexts below support both normal and indented heredocs + --> + <!-- here we markup the heredoc markers --> + <context name="find_heredoc" attribute="Normal Text" lineEndContext="#pop" > + <RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" /> + <RegExpr attribute="Keyword" context="normal_heredoc" String=""?(\w+)"?" /> + </context> + <context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" > + <RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" /> + <RegExpr attribute="Keyword" context="indented_heredoc" String=""?(\w+)"?" /> + </context> + <!-- these are the real heredoc contexts --> + <context name="indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/> + <IncludeRules context="heredoc_rules" /> + </context> + <context name="apostrophed_indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/> + </context> + + <context name="normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/> + <IncludeRules context="heredoc_rules" /> + </context> + <context name="apostrophed_normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/> + </context> + + <!-- rules for heredoc types --> + <context name="heredoc_rules" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + </context> + + <!-- General delimited input support + The contexts below handle the various gdl formats + --> + <context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop"> + + <!-- handle token arrays --> + <Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="w" char1="(" /> + <Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="w" char1="{" /> + <Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="w" char1="[" /> + <Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="w" char1="<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" /> + + <!-- handle token arrays --> + <Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="W" char1="(" /> + <Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="W" char1="{" /> + <Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="W" char1="[" /> + <Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="W" char1="<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_token_array_5" String="W([^\s\w])" /> + + <!-- handle apostrophed strings --> + <Detect2Chars attribute="GDL input" context="gdl_apostrophed_1" char="q" char1="(" /> + <Detect2Chars attribute="GDL input" context="gdl_apostrophed_2" char="q" char1="{" /> + <Detect2Chars attribute="GDL input" context="gdl_apostrophed_3" char="q" char1="[" /> + <Detect2Chars attribute="GDL input" context="gdl_apostrophed_4" char="q" char1="<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" /> + + <!-- handle shell commands --> + <Detect2Chars attribute="GDL input" context="gdl_shell_command_1" char="x" char1="(" /> + <Detect2Chars attribute="GDL input" context="gdl_shell_command_2" char="x" char1="{" /> + <Detect2Chars attribute="GDL input" context="gdl_shell_command_3" char="x" char1="[" /> + <Detect2Chars attribute="GDL input" context="gdl_shell_command_4" char="x" char1="<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" /> + + <!-- handle regular expressions --> + <Detect2Chars attribute="GDL input" context="gdl_regexpr_1" char="r" char1="(" /> + <Detect2Chars attribute="GDL input" context="gdl_regexpr_2" char="r" char1="{" /> + <Detect2Chars attribute="GDL input" context="gdl_regexpr_3" char="r" char1="[" /> + <Detect2Chars attribute="GDL input" context="gdl_regexpr_4" char="r" char1="<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" /> + + <!-- handle double-quoted strings --> + <!-- + be careful to make this the last GDL ruleset, because the rule for + the short form %?foo? will otherwise catch any of the other formats + --> + <Detect2Chars attribute="GDL input" context="gdl_dq_string_1" char="Q" char1="(" /> + <Detect2Chars attribute="GDL input" context="gdl_dq_string_2" char="Q" char1="{" /> + <Detect2Chars attribute="GDL input" context="gdl_dq_string_3" char="Q" char1="[" /> + <Detect2Chars attribute="GDL input" context="gdl_dq_string_4" char="Q" char1="<" /> + <DetectChar attribute="GDL input" context="gdl_dq_string_1" char="(" /> + <DetectChar attribute="GDL input" context="gdl_dq_string_2" char="{" /> + <DetectChar attribute="GDL input" context="gdl_dq_string_3" char="[" /> + <DetectChar attribute="GDL input" context="gdl_dq_string_4" char="<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" /> + + </context> + <!-- double-quoted string specific contexts follow --> + <context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <Detect2Chars attribute="String" char="\" char1=")" context="#stay"/> + <DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" /> + </context> + <context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" /> + <DetectChar attribute="String" context="#pop" char=")" /> + </context> + <!-- note that here substitution should win over nesting --> + <context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <Detect2Chars attribute="String" char="\" char1="}" context="#stay"/> + <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" /> + <DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" /> + </context> + <context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" > + <DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" /> + <DetectChar attribute="String" context="#pop" char="}" /> + <IncludeRules context="dq_string_rules" /> + </context> + + <context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <Detect2Chars attribute="String" char="\" char1="]" context="#stay"/> + <DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" /> + <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" /> + </context> + <context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" > + <DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" /> + <DetectChar attribute="String" context="#pop" char="]" /> + <IncludeRules context="dq_string_rules" /> + </context> + + <context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <Detect2Chars attribute="String" char="\" char1=">" context="#stay"/> + <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="<" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" /> + </context> + <context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" > + <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="<" /> + <DetectChar attribute="String" context="#pop" char=">" /> + <IncludeRules context="dq_string_rules" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the + delimiter character + --> + <context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="dq_string_rules" /> + <RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> + </context> + <!-- rules to be included in all dq_string contexts --> + <context name="dq_string_rules" attribute="String" lineEndContext="#stay" > + <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + </context> + + <!-- token array specific contexts --> + + <context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <Detect2Chars attribute="String" char="\" char1=")" context="#stay"/> + <DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" /> + </context> + <context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" /> + <DetectChar attribute="String" context="#pop" char=")" /> + </context> + + <context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <Detect2Chars attribute="String" char="\" char1="}" context="#stay"/> + <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" /> + <DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" /> + </context> + <context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" /> + <DetectChar attribute="String" context="#pop" char="}" /> + </context> + + <context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <Detect2Chars attribute="String" char="\" char1="]" context="#stay"/> + <DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" /> + <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" /> + </context> + <context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" /> + <DetectChar attribute="String" context="#pop" char="]" /> + </context> + + <context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <Detect2Chars attribute="String" char="\" char1=">" context="#stay"/> + <DetectChar attribute="String" context="gdl_token_array_4_nested" char="<" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" /> + </context> + <context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <DetectChar attribute="String" context="gdl_token_array_4_nested" char="<" /> + <DetectChar attribute="String" context="#pop" char=">" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the + delimiter character + --> + <context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="token_array_rules" /> + <RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true"/> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> + </context> + + <!-- rules to be included in all token_array contexts --> + <context name="token_array_rules" attribute="String" lineEndContext="#stay" > + <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/> + </context> + + <!-- apostrophed string specific contexts --> + + <context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/> + <DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" /> + </context> + <context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" /> + <DetectChar attribute="Raw String" context="#pop" char=")" /> + </context> + + <context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/> + <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" /> + </context> + <context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" /> + <DetectChar attribute="Raw String" context="#pop" char="}" /> + </context> + + <context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/> + <DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" /> + <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" /> + </context> + <context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" /> + <DetectChar attribute="Raw String" context="#pop" char="]" /> + </context> + + <context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <Detect2Chars attribute="Raw String" char="\" char1=">" context="#stay"/> + <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="<" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" /> + </context> + <context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="<" /> + <DetectChar attribute="Raw String" context="#pop" char=">" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the + delimiter character + --> + <context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="apostrophed_rules" /> + <RegExpr attribute="Raw String" String="\\%1" context="#stay" dynamic="true"/> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> + </context> + + <!-- rules to be included in all apostrophed contexts --> + <context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" > + <Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/> + </context> + + <!-- shell command specific contexts --> + + <context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/> + <DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" /> + </context> + <context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" /> + <DetectChar attribute="Command" context="#pop" char=")" /> + </context> + + <context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/> + <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" /> + <DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" /> + </context> + <context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" /> + <DetectChar attribute="Command" context="#pop" char="}" /> + </context> + + <context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/> + <DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" /> + <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" /> + </context> + <context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" /> + <DetectChar attribute="Command" context="#pop" char="]" /> + </context> + + <context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <Detect2Chars attribute="Command" char="\" char1=">" context="#stay"/> + <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="<" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" /> + </context> + <context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="<" /> + <DetectChar attribute="Command" context="#pop" char=">" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the + delimiter character + --> + <context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="shell_command_rules" /> + <RegExpr attribute="Command" String="\\%1" context="#stay" dynamic="true" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> + </context> + + <!-- rules to be included in all shell_command contexts --> + <context name="shell_command_rules" attribute="Command" lineEndContext="#stay" > + <Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + </context> + + <!-- regular expression specific contexts --> + + <context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" /> + </context> + <context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" /> + <DetectChar attribute="Regular Expression" context="#pop" char=")" /> + </context> + + <context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/> + <RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" /> + </context> + <context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" /> + <DetectChar attribute="Regular Expression" context="#pop" char="}" /> + </context> + + <context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" /> + </context> + <context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" /> + <DetectChar attribute="Regular Expression" context="#pop" char="]" /> + </context> + + <context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <Detect2Chars attribute="Regular Expression" char="\" char1=">" context="#stay"/> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="<" /> + <RegExpr attribute="GDL input" context="#pop#pop" String=">[uiomxn]*" endRegion="GdlInput" /> + </context> + <context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="<" /> + <DetectChar attribute="Regular Expression" context="#pop" char=">" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the + delimiter character + --> + <context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="regexpr_rules" /> + <RegExpr attribute="Regular Expression" String="\\%1" context="#stay" dynamic="true" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" /> + </context> + + <!-- rules to be included in all regexpr contexts --> + <context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" > + <Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + </context> + + <!-- END of General delimited input support --> + + <!-- handle data in script --> + <context name="DATA" attribute="Data" lineEndContext="#stay"/> + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal"/> + + <itemData name="Keyword" defStyleNum="dsKeyword"/> + <itemData name="Attribute Definition" defStyleNum="dsOthers"/> + <itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/> + <itemData name="Definition" defStyleNum="dsKeyword"/> + <itemData name="Pseudo variable" defStyleNum="dsDecVal"/> + + <itemData name="Dec" defStyleNum="dsDecVal"/> + <itemData name="Float" defStyleNum="dsFloat"/> + <itemData name="Char" defStyleNum="dsChar"/> + <itemData name="Octal" defStyleNum="dsBaseN"/> + <itemData name="Hex" defStyleNum="dsBaseN"/> + <itemData name="Bin" defStyleNum="dsBaseN"/> + + <itemData name="Symbol" defStyleNum="dsString" color="#D40000"/> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/> + <itemData name="Command" defStyleNum="dsString" color="#AA3000"/> + <itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 --> + <itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/> + <itemData name="Substitution" defStyleNum="dsOthers"/> + <itemData name="Data" defStyleNum="dsNormal"/> + <!-- short for 'general delimited input' --> + <itemData name="GDL input" defStyleNum="dsOthers" /> + + <itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/> + <itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/> + <itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/> + <itemData name="Constant" defStyleNum="dsDataType"/> + <itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/> + <itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 --> + <itemData name="Module mixin methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 --> + <itemData name="Member" defStyleNum="dsNormal"/> + <itemData name="Instance Variable" defStyleNum="dsOthers"/> + <itemData name="Class Variable" defStyleNum="dsOthers"/> + + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="Blockcomment" defStyleNum="dsComment"/> + + <itemData name="Here Document" defStyleNum="dsOthers"/> + + <itemData name="Delimiter" defStyleNum="dsNormal" color="#FF9FEC"/> + <itemData name="Operator" defStyleNum="dsNormal" color="#FF9FEC"/> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="#"/> + </comments> + <keywords casesensitive="1" weakDeliminator="!?"/> + </general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/valgrind-suppression.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/valgrind-suppression.xml new file mode 100644 index 0000000000..7fe3dd474e --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/valgrind-suppression.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<language name="Valgrind Suppression" section="Other" extensions="*.supp;" mimetype="" version="2" kateversion="2.4" author="Milian Wolff (mail@milianw.de)" license="LGPL"> +<highlighting> +<contexts> + <context name="File" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar char="#" attribute="Comment" context="Comment" firstNonSpace="true" /> + <DetectChar char="{" attribute="Normal Text" context="Rule" firstNonSpace="true" /> + </context> + + <context name="Rule" attribute="Normal Text" lineEndContext="#stay" > + <RegExpr attribute="RuleName" String="^[^\}]+$" context="Rule2" /> + <DetectChar char="}" attribute="Normal Text" context="#pop" firstNonSpace="true" /> + </context> + + <context name="Rule2" attribute="Normal Text" lineEndContext="#stay" > + <RegExpr attribute="ErrorKind" String="\w+:\w+" context="Rule3" /> + <DetectChar char="}" attribute="Normal Text" context="#pop#pop" firstNonSpace="true" /> + </context> + + <context name="Rule3" attribute="Normal Text" lineEndContext="#stay" > + <RegExpr attribute="FrameKind" String="fun:|obj:|\.\.\." context="#stay" /> + <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop" firstNonSpace="true" /> + </context> + + <context name="Comment" attribute="Comment" lineEndContext="#pop"> + <DetectSpaces /> + <IncludeRules context="##Alerts" /> + <DetectIdentifier /> + </context> +</contexts> + + +<itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="RuleName" defStyleNum="dsKeyword" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="ErrorKind" defStyleNum="dsOthers" /> + <itemData name="FrameKind" defStyleNum="dsFunction" /> +</itemDatas> +</highlighting> + + +<general> + <comments> + <comment name="singleLine" start="#" /> + </comments> + <keywords casesensitive="0" /> +</general> + +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/xml.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/xml.xml new file mode 100644 index 0000000000..ad34a450b6 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/xml.xml @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!-- names must start with a letter, ideogram or underscore. \w matches any + word character *or* a number, hence the lookahead --> + <!ENTITY name "(?![0-9])[\w_:][\w.:_-]*"> + <!ENTITY entref "&(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> +]> +<language name="XML" version="9" kateversion="3.4" section="Markup" extensions="*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL"> + +<highlighting> +<contexts> + <context name="Start" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="FindXML" /> + </context> + + <context name="FindXML" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces /> + <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> + <StringDetect attribute="CDATA" context="CDATA" String="<![CDATA[" beginRegion="cdata" /> + <RegExpr attribute="Doctype" context="Doctype" String="<!DOCTYPE\s+" beginRegion="doctype" /> + <RegExpr attribute="Processing Instruction" context="PI" String="<\?[\w:_-]*" beginRegion="pi" /> + <RegExpr attribute="Element" context="Element" String="<&name;" beginRegion="element" /> + <IncludeRules context="FindEntityRefs" /> + <DetectIdentifier /> + </context> + + <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="EntityRef" context="#stay" String="&entref;" /> + <AnyChar attribute="Error" context="#stay" String="&<" /> + </context> + + <context name="FindPEntityRefs" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="EntityRef" context="#stay" String="&entref;" /> + <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" /> + <AnyChar attribute="Error" context="#stay" String="&%" /> + </context> + + + <context name="Comment" attribute="Comment" lineEndContext="#stay"> + <DetectSpaces /> + <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment" /> + <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+" /> + <IncludeRules context="##Alerts" /> + <DetectIdentifier /> + </context> + + <context name="CDATA" attribute="Other Text" lineEndContext="#stay"> + <DetectSpaces /> + <DetectIdentifier /> + <StringDetect attribute="CDATA" context="#pop" String="]]>" endRegion="cdata" /> + <StringDetect attribute="EntityRef" context="#stay" String="]]&gt;" /> + </context> + + <context name="PI" attribute="Other Text" lineEndContext="#stay"> + <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1=">" endRegion="pi" /> + </context> + + <context name="Doctype" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char=">" endRegion="doctype" /> + <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" /> + </context> + + <context name="Doctype Internal Subset" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" /> + <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" /> + <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> + <RegExpr attribute="Processing Instruction" context="PI" String="<\?[\w:_-]*" beginRegion="pi" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char=">" /> + <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char=""" /> + <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="'" /> + </context> + + <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay"> + <DetectChar attribute="Value" context="#pop" char=""" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay"> + <DetectChar attribute="Value" context="#pop" char="'" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="Element" attribute="Other Text" lineEndContext="#stay"> + <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="element" /> + <DetectChar attribute="Element" context="El Content" char=">" /> + <RegExpr attribute="Attribute" context="Attribute" String="^&name;" /> + <RegExpr attribute="Attribute" context="Attribute" String="\s+&name;" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="El Content" attribute="Other Text" lineEndContext="#stay"> + <RegExpr attribute="Element" context="El End" String="</&name;" /> + <IncludeRules context="FindXML" /> + </context> + + <context name="El End" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Element" context="#pop#pop#pop" char=">" endRegion="element" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="Attribute" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Attribute" context="Value" char="=" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="Value" attribute="Other Text" lineEndContext="#stay"> + <DetectChar attribute="Value" context="Value DQ" char=""" /> + <DetectChar attribute="Value" context="Value SQ" char="'" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="Value DQ" attribute="Value" lineEndContext="#stay"> + <DetectChar attribute="Value" context="#pop#pop#pop" char=""" /> + <IncludeRules context="FindEntityRefs" /> + </context> + + <context name="Value SQ" attribute="Value" lineEndContext="#stay"> + <DetectChar attribute="Value" context="#pop#pop#pop" char="'" /> + <IncludeRules context="FindEntityRefs" /> + </context> + +</contexts> +<itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Other Text" defStyleNum="dsNormal" /> + <itemData name="Comment" defStyleNum="dsComment" spellChecking="false" /> + <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" spellChecking="false" /> + <itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false" /> + <itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false" /> + <itemData name="Element" defStyleNum="dsKeyword" spellChecking="false" /> + <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false" /> + <itemData name="Value" defStyleNum="dsString" spellChecking="false" /> + <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false" /> + <itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false" /> + <itemData name="Error" defStyleNum="dsError" spellChecking="false" /> +</itemDatas> + +</highlighting> +<general> + <comments> + <comment name="multiLine" start="<!--" end="-->" /> + </comments> +</general> +</language> diff --git a/src/libs/3rdparty/syntax-highlighting/data/syntax/yacc.xml b/src/libs/3rdparty/syntax-highlighting/data/syntax/yacc.xml new file mode 100644 index 0000000000..6936c7a2de --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/syntax/yacc.xml @@ -0,0 +1,264 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd"> +<!-- +======================================================================== +YACC.XML supports syntax highlighting for Yacc/Bison source under Kate. + +Copyright (C) 2004, Jan Villat <jan.villat@net2000.ch> +This code is released under the LGPL as part of kdelibs/kate. +======================================================================== + + +== UPDATE HISTORY == +2018-02-20 // Nibaldo González <nibgonz@gmail.com> + + Fix '$' symbol, highlighted as 'dsError' by C++ (isocpp.xml). + Update syntax for Bison (3.0.4): + - Add declarations, directives in rules and the '@' variable. + - Allow a tag in '%union', declarations in multiple lines and + grammar declarations in the grammar rules section. + - The ';' char is not necessary to finish a rule. Allow '; |' + within rules. + Add mimetypes and extensions '*.ypp' & '*.y++'. + +2007-10-01 // Sebastian Pipping <webmaster@hartwork.org> + + Added: Extension "*.yy" for Bison + +2004-05-26 // Jan Villat <jan.villat@net2000.ch> + + YACC.XML 1.00 - First released. + + +======================================================================== +--> +<language name="Yacc/Bison" version="4" kateversion="2.4" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL"> + +<highlighting> +<contexts> + <context name="Pre Start" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="Comment" /> + <DetectSpaces /> + <Detect2Chars attribute="Content-Type Delimiter" context="C Declarations" char="%" char1="{" beginRegion="cdeclarations" column="0" /> + <RegExpr attribute="Normal Text" context="Declarations" String="." beginRegion="declarations" lookAhead="true" /> + </context> + + <context name="C Declarations" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="Comment" /> + <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="}" endRegion="cdeclarations" column="0" /> + <IncludeRules context="##C++" /> + </context> + + <context name="Declarations" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="Comment" /> + <Detect2Chars attribute="Content-Type Delimiter" context="Rules" char="%" char1="%" beginRegion="rules" endRegion="declarations" /> + <!-- Prologue Declarations --> + <Detect2Chars attribute="Content-Type Delimiter" context="C Declarations" char="%" char1="{" beginRegion="cdeclarations" column="0" /> + <IncludeRules context="Grammar Declarations" /> + <WordDetect attribute="Directive" context="Code-Symbols Start" String="%initial-action" /> + <WordDetect attribute="Directive" context="Code-Symbols Start" String="%param" /> + <WordDetect attribute="Directive" context="Code-Symbols Start" String="%lex-param" /> + <WordDetect attribute="Directive" context="Code-Symbols Start" String="%parse-param" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%<flag>" /> + <!-- Any word followed by '%' (End with ';' or '%') --> + <DetectChar attribute="Directive" context="Percent Command" char="%" /> + </context> + <context name="Grammar Declarations" attribute="Normal Text" lineEndContext="#stay"> + <WordDetect attribute="Directive" context="Union Start" String="%union" /> + <WordDetect attribute="Directive" context="Union Start" String="%code" /> + <WordDetect attribute="Directive" context="Code-Symbols Start" String="%destructor" /> + <WordDetect attribute="Directive" context="Code-Symbols Start" String="%printer" /> + </context> + + <context name="Union Start" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="Comment" /> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="Union In" char="{" beginRegion="union" /> + <RegExpr attribute="Normal Text" context="#pop!Union Tag" String="[^\s\{](?=(\s|$|//))" /> + </context> + <context name="Union Tag" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="Comment" /> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="Union In" char="{" beginRegion="union" /> + <RegExpr attribute="Alert" context="#pop" String="." /> + </context> + <context name="Union In" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Normal Text" context="Union InIn" char="{" /> + <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="union" /> + <IncludeRules context="##C++" /> + </context> + <context name="Union InIn" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Normal Text" context="Union InIn" char="{" /> + <DetectChar attribute="Normal Text" context="#pop" char="}" /> + <IncludeRules context="##C++" /> + </context> + + <!-- '%'<decl> ('{' <Code-Symbols In> '}')+ <Percent Command In> [';'] --> + <context name="Code-Symbols Start" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="Comment" /> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="Code-Symbols In" char="{" beginRegion="code-symbols" /> + <RegExpr attribute="Alert" context="#pop" String="." /> + </context> + <context name="Code-Symbols In" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Normal Text" context="#pop#pop!Code-Symbols End" char="}" endRegion="code-symbols" /> + <DetectChar attribute="Normal Text" context="Code-Symbols InIn" char="{" /> + <IncludeRules context="Symbol-Variable" /> + <IncludeRules context="##C++" /> + </context> + <context name="Code-Symbols InIn" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Normal Text" context="Code-Symbols InIn" char="{" /> + <DetectChar attribute="Normal Text" context="#pop" char="}" /> + <IncludeRules context="Symbol-Variable" /> + <IncludeRules context="##C++" /> + </context> + <context name="Code-Symbols End" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Percent Command In"> + <IncludeRules context="Comment" /> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="#pop" char=";" lookAhead="true" /> + <DetectChar attribute="Normal Text" context="Code-Symbols In" char="{" beginRegion="code-symbols" /> + </context> + + <context name="Rules" attribute="Rule" lineEndContext="#stay"> + <IncludeRules context="Comment" /> + <Detect2Chars attribute="Content-Type Delimiter" context="User Code" char="%" char1="%" beginRegion="code" endRegion="rules" /> + <DetectChar attribute="Normal Text" context="Rule In" char=":" beginRegion="rule" /> + <DetectChar attribute="Rule" context="Grammar Declaration Start" char="%" lookAhead="true" /> + </context> + + <context name="Rule In" attribute="Definition" lineEndContext="#stay"> + <IncludeRules context="Comment" /> + <DetectChar attribute="Normal Text" context="Rule End" char=";" endRegion="rule" /> + <DetectChar attribute="Normal Text" context="Normal C Bloc" char="{" beginRegion="bloc" /> + <DetectChar attribute="Normal Text" context="#stay" char="|" /> + <IncludeRules context="StringOrChar" /> + <RegExpr attribute="Directive" context="#stay" String="%\?(?=\{)" /> + <WordDetect attribute="Directive" context="#stay" String="%empty" /> + <WordDetect attribute="Directive" context="#stay" String="%prec" /> + <WordDetect attribute="Directive" context="#stay" String="%dprec" /> + <WordDetect attribute="Directive" context="#stay" String="%merge" /> + + <!-- Finish rule without the ';' character (see the 'rhses.1' rule in the 'src/parse-gram.y' file, from the Bison source) --> + <RegExpr attribute="Open Rule" context="#pop" String="[\w\-\.](?=[\w\-\.]*:)" column="0" endRegion="rule" /> + <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="%" lookAhead="true" firstNonSpace="true" endRegion="rule" /> + <RegExpr attribute="Directive" context="#pop" String="%(union|code|destructor|printer|start|(no\-)?default\-prec|nterm|token|type|left|right|nonassoc|precedence)\b" lookAhead="true" column="0" endRegion="rule" /> + </context> + <!-- The Bison parser allows to have ';' followed by '|', without the rule ending. + The problem here is that the ';' char has endRegion="rule" (although it is not very relevant). --> + <context name="Rule End" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop"> + <DetectSpaces /> + <DetectChar attribute="Normal Text" context="#stay" char=";" /> + <DetectChar attribute="Normal Text" context="#pop" char="|" /> + <IncludeRules context="Comment" /> + </context> + + <context name="Grammar Declaration Start" attribute="Normal Text" lineEndContext="#stay"> + <!-- In the rules section, only highlighting exact declarations --> + <IncludeRules context="Grammar Declarations" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%start" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%default-prec" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%no-default-prec" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%nterm" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%token" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%type" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%left" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%right" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%nonassoc" /> + <WordDetect attribute="Directive" context="Percent Command In" String="%precedence" /> + + <DetectChar attribute="Rule" context="#pop" char="%" /> <!-- End when there is an invalid declaration --> + <DetectChar attribute="Normal Text" context="#pop" char=";" /> + <IncludeRules context="Comment" /> + <DetectSpaces /> + <RegExpr attribute="Alert" context="#pop" String=".+" /> + </context> + + <context name="User Code" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="##C++" /> + </context> + + <context name="Percent Command" attribute="Directive" lineEndContext="#pop!Percent Command In"> + <IncludeRules context="Comment" /> + <RegExpr attribute="Normal Text" context="#pop!Percent Command In" String="[^\w\-]" lookAhead="true" /> + </context> + <context name="Percent Command In" attribute="Normal Text" lineEndContext="#stay"> + <!-- This can be applied to multiple lines --> + <DetectChar attribute="Normal Text" context="#pop" char=";" lookAhead="true" /> + <DetectChar attribute="Normal Text" context="#pop" char="%" lookAhead="true" firstNonSpace="true" /> + <Detect2Chars attribute="Normal Text" context="#pop" char="%" char1="%" lookAhead="true" /> + <IncludeRules context="StringOrChar" /> + <DetectChar attribute="Data Type" context="PC type" char="<" /> + <IncludeRules context="Comment" /> + </context> + <context name="PC type" attribute="Data Type" lineEndContext="#pop#pop"> + <DetectChar attribute="Data Type" context="#pop" char=">" /> + </context> + + <context name="Comment" attribute="Comment" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="CommentStar" char="/" char1="*" /> + <Detect2Chars attribute="Comment" context="CommentSlash" char="/" char1="/" /> + </context> + <context name="CommentStar" attribute="Comment" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" /> + </context> + <context name="CommentSlash" attribute="Comment" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="#pop" String="[^\\]$" /> + </context> + + <context name="StringOrChar" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="String Char" context="Char" char="'" /> + <DetectChar attribute="String" context="String" char=""" /> + </context> + <context name="String" attribute="String" lineEndContext="#pop"> + <RegExpr attribute="Backslash Code" context="#stay" String="\\." /> + <DetectChar attribute="String" context="#pop" char=""" /> + </context> + <context name="Char" attribute="String Char" lineEndContext="#pop"> + <RegExpr attribute="Backslash Code" context="#stay" String="\\." /> + <DetectChar attribute="String Char" context="#pop" char="'" /> + </context> + + <context name="Normal C Bloc" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Normal Text" context="Normal C Bloc" char="{" beginRegion="bloc" /> + <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="bloc" /> + <IncludeRules context="Symbol-Variable" /> + <IncludeRules context="##C++" /> + </context> + <context name="Symbol-Variable" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Directive" context="Dol" char="$" /> + <RegExpr attribute="Directive" context="#stay" String="@(\$?)(\d+|[A-Za-z_]\w*)?" /> + </context> + <context name="Dol" attribute="Normal Text" fallthrough="true" fallthroughContext="DolEnd" lineEndContext="#stay"> + <RegExpr attribute="Data Type" context="DolEnd" String="<[^>]+>" /> + </context> + <context name="DolEnd" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop"> + <RegExpr attribute="Directive" context="#pop#pop" String="@?\d+" /> + <DetectChar attribute="Directive" context="#pop#pop" char="$" /> + <DetectIdentifier attribute="Directive" context="#pop#pop" /> + </context> +</contexts> + +<itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Definition" defStyleNum="dsNormal" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Content-Type Delimiter" defStyleNum="dsBaseN" bold="1" /> + <itemData name="Directive" defStyleNum="dsKeyword"/> + <itemData name="Rule" defStyleNum="dsString" /> + <itemData name="Open Rule" defStyleNum="dsString" bold="1" /> + <itemData name="Backslash Code" defStyleNum="dsString" bold="1" /> + <itemData name="Alert" defStyleNum="dsAlert" /> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="String Char" defStyleNum="dsChar"/> + <itemData name="Data Type" defStyleNum="dsDataType"/> +</itemDatas> + +</highlighting> +<general> + <comments> + <comment name="multiLine" start="/*" end="*/" /> + <comment name="singleLine" start="//" /> + </comments> +</general> +</language> +<!-- kate: space-indent on; indent-width 2; replace-tabs on; --> diff --git a/src/libs/3rdparty/syntax-highlighting/data/themes/breeze-dark.theme b/src/libs/3rdparty/syntax-highlighting/data/themes/breeze-dark.theme new file mode 100644 index 0000000000..8147948eeb --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/themes/breeze-dark.theme @@ -0,0 +1,174 @@ +{ + "metadata" : { + "revision" : 2, + "name" : "Breeze Dark" + }, + "text-styles": { + "Normal" : { + "text-color" : "#cfcfc2", + "selected-text-color" : "#cfcfc2", + "bold" : false, + "italic" : false, + "underline" : false, + "strike-through" : false + }, + "Keyword" : { + "text-color" : "#cfcfc2", + "selected-text-color" : "#cfcfc2", + "bold" : true + }, + "Function" : { + "text-color" : "#8e44ad", + "selected-text-color" : "#af81ff" + }, + "Variable" : { + "text-color" : "#27aeae", + "selected-text-color" : "#27aeae" + }, + "ControlFlow" : { + "text-color" : "#fdbc4b", + "selected-text-color" : "#fdbc4b", + "bold" : true + }, + "Operator" : { + "text-color" : "#cfcfc2", + "selected-text-color" : "#cfcfc2" + }, + "BuiltIn" : { + "text-color" : "#7f8c8d", + "selected-text-color" : "#bdc3c7" + }, + "Extension" : { + "text-color" : "#0099ff", + "selected-text-color" : "#bdc3c7", + "bold" : true + }, + "Preprocessor" : { + "text-color" : "#27ae60", + "selected-text-color" : "#27ae60" + }, + "Attribute" : { + "text-color" : "#2980b9", + "selected-text-color" : "#fdbc4b" + }, + "Char" : { + "text-color" : "#3daee9", + "selected-text-color" : "#3daee9" + }, + "SpecialChar" : { + "text-color" : "#3daee9", + "selected-text-color" : "#3daee9" + }, + "String" : { + "text-color" : "#f44f4f", + "selected-text-color" : "#f44f4f" + }, + "VerbatimString" : { + "text-color" : "#da4453", + "selected-text-color" : "#da4453" + }, + "SpecialString" : { + "text-color" : "#da4453", + "selected-text-color" : "#da4453" + }, + "Import" : { + "text-color" : "#27ae60", + "selected-text-color" : "#27ae60" + }, + "DataType" : { + "text-color" : "#2980b9", + "selected-text-color" : "#fdbc4b" + }, + "DecVal" : { + "text-color" : "#f67400", + "selected-text-color" : "#f67400" + }, + "BaseN" : { + "text-color" : "#f67400", + "selected-text-color" : "#f67400" + }, + "Float" : { + "text-color" : "#f67400", + "selected-text-color" : "#f67400" + }, + "Constant" : { + "text-color" : "#27aeae", + "selected-text-color" : "#27aeae", + "bold" : true + }, + "Comment" : { + "text-color" : "#7a7c7d", + "selected-text-color" : "#808080" + }, + "Documentation" : { + "text-color" : "#a43340", + "selected-text-color" : "#da4453" + }, + "Annotation" : { + "text-color" : "#3f8058", + "selected-text-color" : "#54aa75" + }, + "CommentVar" : { + "text-color" : "#7f8c8d", + "selected-text-color" : "#94a3a4" + }, + "RegionMarker" : { + "text-color" : "#2980b9", + "selected-text-color" : "#3daee9", + "background-color" : "#153042" + }, + "Information" : { + "text-color" : "#c45b00", + "selected-text-color" : "#e46700" + }, + "Warning" : { + "text-color" : "#da4453", + "selected-text-color" : "#da4453" + }, + "Alert" : { + "text-color" : "#95da4c", + "selected-text-color" : "#95da4c", + "background-color" : "#4d1f24", + "bold" : true + }, + "Error" : { + "text-color" : "#da4453", + "selected-text-color" : "#da4453", + "underline" : true + }, + "Others" : { + "text-color" : "#27ae60", + "selected-text-color" : "#27ae60" + } + }, + "editor-colors": { + "background-color" : "#232629", + "code-folding" : "#224e65", + "bracket-matching" : "#8e44ad", + "current-line" : "#2A2E32", + "icon-border" : "#31363b", + "indentation-line" : "#3a3f44", + "line-numbers" : "#7a7c7d", + "current-line-number" : "#a5a6a8", + "mark-bookmark" : "#0404bf", + "mark-breakpoint-active" : "#8b0607", + "mark-breakpoint-reached" : "#6d6e07", + "mark-breakpoint-disabled" : "#820683", + "mark-execution" : "#4d4e50", + "mark-warning" : "#f67400", + "mark-error" : "#da4453", + "modified-lines" : "#c04900", + "replace-highlight" : "#808021", + "saved-lines" : "#1c8042", + "search-highlight" : "#218058", + "selection" : "#2d5c76", + "separator" : "#7a7c7d", + "spell-checking" : "#c0392b", + "tab-marker" : "#4d4d4d", + "template-background" : "#31363b", + "template-placeholder" : "#123723", + "template-focused-placeholder" : "#123723", + "template-read-only-placeholder" : "#4d1f24", + "word-wrap-marker" : "#3a3f44" + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/data/themes/default.theme b/src/libs/3rdparty/syntax-highlighting/data/themes/default.theme new file mode 100644 index 0000000000..e9c5c838d3 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/themes/default.theme @@ -0,0 +1,174 @@ +{ + "metadata" : { + "revision" : 3, + "name" : "Default" + }, + "text-styles": { + "Normal" : { + "text-color" : "#1f1c1b", + "selected-text-color" : "#ffffff", + "bold" : false, + "italic" : false, + "underline" : false, + "strike-through" : false + }, + "Keyword" : { + "text-color" : "#1f1c1b", + "selected-text-color" : "#ffffff", + "bold" : true + }, + "Function" : { + "text-color" : "#644a9b", + "selected-text-color" : "#452886" + }, + "Variable" : { + "text-color" : "#0057ae", + "selected-text-color" : "#00316e" + }, + "ControlFlow" : { + "text-color" : "#1f1c1b", + "selected-text-color" : "#ffffff", + "bold" : true + }, + "Operator" : { + "text-color" : "#1f1c1b", + "selected-text-color" : "#ffffff" + }, + "BuiltIn" : { + "text-color" : "#644a9b", + "selected-text-color" : "#452886", + "bold" : true + }, + "Extension" : { + "text-color" : "#0095ff", + "selected-text-color" : "#ffffff", + "bold" : true + }, + "Preprocessor" : { + "text-color" : "#006e28", + "selected-text-color" : "#006e28" + }, + "Attribute" : { + "text-color" : "#0057ae", + "selected-text-color" : "#00316e" + }, + "Char" : { + "text-color" : "#924c9d", + "selected-text-color" : "#6c2477" + }, + "SpecialChar" : { + "text-color" : "#3daee9", + "selected-text-color" : "#fcfcfc" + }, + "String" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e" + }, + "VerbatimString" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e" + }, + "SpecialString" : { + "text-color" : "#ff5500", + "selected-text-color" : "#ff5500" + }, + "Import" : { + "text-color" : "#ff5500", + "selected-text-color" : "#ff5500" + }, + "DataType" : { + "text-color" : "#0057ae", + "selected-text-color" : "#00316e" + }, + "DecVal" : { + "text-color" : "#b08000", + "selected-text-color" : "#805c00" + }, + "BaseN" : { + "text-color" : "#b08000", + "selected-text-color" : "#805c00" + }, + "Float" : { + "text-color" : "#b08000", + "selected-text-color" : "#805c00" + }, + "Constant" : { + "text-color" : "#aa5500", + "selected-text-color" : "#5e2f00" + }, + "Comment" : { + "text-color" : "#898887", + "selected-text-color" : "#5e5d5d" + }, + "Documentation" : { + "text-color" : "#607880", + "selected-text-color" : "#46585e" + }, + "Annotation" : { + "text-color" : "#ca60ca", + "selected-text-color" : "#a44ea4" + }, + "CommentVar" : { + "text-color" : "#0095ff", + "selected-text-color" : "#ffffff" + }, + "RegionMarker" : { + "text-color" : "#0057ae", + "selected-text-color" : "#00316e", + "background-color" : "#e0e9f8" + }, + "Information" : { + "text-color" : "#b08000", + "selected-text-color" : "#805c00" + }, + "Warning" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e" + }, + "Alert" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e", + "background-color" : "#f7e6e6", + "bold" : true + }, + "Error" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e", + "underline" : true + }, + "Others" : { + "text-color" : "#006e28", + "selected-text-color" : "#006e28" + } + }, + "editor-colors": { + "background-color" : "#ffffff", + "code-folding" : "#94caef", + "bracket-matching" : "#ffff00", + "current-line" : "#f8f7f6", + "icon-border" : "#f0f0f0", + "indentation-line" : "#d2d2d2", + "line-numbers" : "#a0a0a0", + "current-line-number" : "#1e1e1e", + "mark-bookmark" : "#0000ff", + "mark-breakpoint-active" : "#ff0000", + "mark-breakpoint-reached" : "#ffff00", + "mark-breakpoint-disabled" : "#ff00ff", + "mark-execution" : "#a0a0a4", + "mark-warning" : "#00ff00", + "mark-error" : "#ff0000", + "modified-lines" : "#fdbc4b", + "replace-highlight" : "#00ff00", + "saved-lines" : "#2ecc71", + "search-highlight" : "#ffff00", + "selection" : "#94caef", + "separator" : "#898887", + "spell-checking" : "#bf0303", + "tab-marker" : "#d2d2d2", + "template-background" : "#d6d2d0", + "template-placeholder" : "#baf8ce", + "template-focused-placeholder" : "#76da98", + "template-read-only-placeholder" : "#f6e6e6", + "word-wrap-marker" : "#ededed" + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/data/themes/printing.theme b/src/libs/3rdparty/syntax-highlighting/data/themes/printing.theme new file mode 100644 index 0000000000..a6048ed01a --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/themes/printing.theme @@ -0,0 +1,173 @@ +{ + "metadata" : { + "revision" : 3, + "name" : "Printing" + }, + "text-styles": { + "Normal" : { + "text-color" : "#000000", + "selected-text-color" : "#ffffff", + "bold" : false, + "italic" : false, + "underline" : false, + "strike-through" : false + }, + "Keyword" : { + "text-color" : "#000000", + "selected-text-color" : "#ffffff", + "bold" : true + }, + "Function" : { + "text-color" : "#644a9b", + "selected-text-color" : "#452886" + }, + "Variable" : { + "text-color" : "#0057ae", + "selected-text-color" : "#00316e" + }, + "ControlFlow" : { + "text-color" : "#000000", + "selected-text-color" : "#ffffff", + "bold" : true + }, + "Operator" : { + "text-color" : "#000000", + "selected-text-color" : "#ffffff" + }, + "BuiltIn" : { + "text-color" : "#644a9b", + "selected-text-color" : "#452886" + }, + "Extension" : { + "text-color" : "#0095ff", + "selected-text-color" : "#ffffff", + "bold" : true + }, + "Preprocessor" : { + "text-color" : "#006e28", + "selected-text-color" : "#006e28" + }, + "Attribute" : { + "text-color" : "#0057ae", + "selected-text-color" : "#00316e" + }, + "Char" : { + "text-color" : "#924c9d", + "selected-text-color" : "#6c2477" + }, + "SpecialChar" : { + "text-color" : "#ff5500", + "selected-text-color" : "#ff5500" + }, + "String" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e" + }, + "VerbatimString" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e" + }, + "SpecialString" : { + "text-color" : "#ff5500", + "selected-text-color" : "#ff5500" + }, + "Import" : { + "text-color" : "#644a9b", + "selected-text-color" : "#452886" + }, + "DataType" : { + "text-color" : "#0057ae", + "selected-text-color" : "#00316e" + }, + "DecVal" : { + "text-color" : "#b08000", + "selected-text-color" : "#805c00" + }, + "BaseN" : { + "text-color" : "#b08000", + "selected-text-color" : "#805c00" + }, + "Float" : { + "text-color" : "#b08000", + "selected-text-color" : "#805c00" + }, + "Constant" : { + "text-color" : "#aa5500", + "selected-text-color" : "#5e2f00" + }, + "Comment" : { + "text-color" : "#898887", + "selected-text-color" : "#5e5d5d" + }, + "Documentation" : { + "text-color" : "#607880", + "selected-text-color" : "#46585e" + }, + "Annotation" : { + "text-color" : "#ca60ca", + "selected-text-color" : "#a44ea4" + }, + "CommentVar" : { + "text-color" : "#0095ff", + "selected-text-color" : "#ffffff" + }, + "RegionMarker" : { + "text-color" : "#0057ae", + "selected-text-color" : "#00316e", + "background-color" : "#e0e9f8" + }, + "Information" : { + "text-color" : "#b08000", + "selected-text-color" : "#805c00" + }, + "Warning" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e" + }, + "Alert" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e", + "background-color" : "#f7e6e6", + "bold" : true + }, + "Error" : { + "text-color" : "#bf0303", + "selected-text-color" : "#9c0e0e", + "underline" : true + }, + "Others" : { + "text-color" : "#006e28", + "selected-text-color" : "#006e28" + } + }, + "editor-colors": { + "background-color" : "#ffffff", + "code-folding" : "#94caef", + "bracket-matching" : "#edf9ff", + "current-line" : "#f8f7f6", + "icon-border" : "#d6d2d0", + "indentation-line" : "#d2d2d2", + "line-numbers" : "#221f1e", + "current-line-number" : "#221f1e", + "mark-bookmark" : "#0000ff", + "mark-breakpoint-active" : "#ff0000", + "mark-breakpoint-reached" : "#ffff00", + "mark-breakpoint-disabled" : "#ff00ff", + "mark-execution" : "#a0a0a4", + "mark-warning" : "#00ff00", + "mark-error" : "#ff0000", + "modified-lines" : "#f6e6e6", + "replace-highlight" : "#00ff00", + "saved-lines" : "#baf8ce", + "search-highlight" : "#ffff00", + "selection" : "#94caef", + "separator" : "#898887", + "spell-checking" : "#bf0303", + "tab-marker" : "#d2d2d2", + "template-background" : "#d6d2d0", + "template-placeholder" : "#baf8ce", + "template-focused-placeholder" : "#76da98", + "template-read-only-placeholder" : "#f6e6e6", + "word-wrap-marker" : "#ededed" + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/data/themes/solarized-dark.theme b/src/libs/3rdparty/syntax-highlighting/data/themes/solarized-dark.theme new file mode 100644 index 0000000000..42a6eacbe8 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/themes/solarized-dark.theme @@ -0,0 +1,175 @@ +{ + "metadata" : { + "revision" : 1, + "name" : "Solarized Dark" + }, + "text-styles": { + "Normal" : { + "text-color" : "#839496", + "selected-text-color" : "#586e75", + "bold" : false, + "italic" : false, + "underline" : false, + "strike-through" : false + }, + "Keyword" : { + "text-color" : "#859900", + "selected-text-color" : "#859900", + "bold" : true + }, + "Function" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2" + }, + "Variable" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2" + }, + "ControlFlow" : { + "text-color" : "#859900", + "selected-text-color" : "#859900", + "bold" : true + }, + "Operator" : { + "text-color" : "#859900", + "selected-text-color" : "#859900" + }, + "BuiltIn" : { + "text-color" : "#cb4b16", + "selected-text-color" : "#cb4b16" + }, + "Extension" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2", + "bold" : true + }, + "Preprocessor" : { + "text-color" : "#cb4b16", + "selected-text-color" : "#cb4b16" + }, + "Attribute" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2" + }, + "Char" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "SpecialChar" : { + "text-color" : "#dc322f", + "selected-text-color" : "#dc322f" + }, + "String" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "VerbatimString" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "SpecialString" : { + "text-color" : "#dc322f", + "selected-text-color" : "#dc322f" + }, + "Import" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "DataType" : { + "text-color" : "#b58900", + "selected-text-color" : "#b58900", + "bold" : true + }, + "DecVal" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "BaseN" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "Float" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "Constant" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198", + "bold" : true + }, + "Comment" : { + "text-color" : "#586e75", + "selected-text-color" : "#93a1a1", + "italic" : true + }, + "Documentation" : { + "text-color" : "#dc322f", + "selected-text-color" : "#dc322f" + }, + "Annotation" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2" + }, + "CommentVar" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "RegionMarker" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2", + "background-color" : "#073642" + }, + "Information" : { + "text-color" : "#b58900", + "selected-text-color" : "#b58900" + }, + "Warning" : { + "text-color" : "#cb4b16", + "selected-text-color" : "#cb4b16" + }, + "Alert" : { + "text-color" : "#d33682", + "selected-text-color" : "#d33682", + "bold" : true + }, + "Error" : { + "text-color" : "#dc322f", + "selected-text-color" : "#dc322f", + "underline" : true + }, + "Others" : { + "text-color" : "#859900", + "selected-text-color" : "#859900" + } + }, + "editor-colors": { + "background-color" : "#002b36", + "code-folding" : "#6c71c4", + "bracket-matching" : "#073642", + "current-line" : "#073642", + "icon-border" : "#073642", + "indentation-line" : "#073642", + "line-numbers" : "#586e75", + "current-line-number" : "#586e75", + "mark-bookmark" : "#268bd2", + "mark-breakpoint-active" : "#dc322f", + "mark-breakpoint-reached" : "#b58900", + "mark-breakpoint-disabled" : "#d33682", + "mark-execution" : "#586e75", + "mark-warning" : "#cb4b16", + "mark-error" : "#dc322f", + "modified-lines" : "#cb4b16", + "replace-highlight" : "#859900", + "saved-lines" : "#2aa198", + "search-highlight" : "#b58900", + "selection" : "#eee8d5", + "separator" : "#586e75", + "spell-checking" : "#dc322f", + "tab-marker" : "#586e75", + "template-background" : "#073642", + "template-placeholder" : "#073642", + "template-focused-placeholder" : "#073642", + "template-read-only-placeholder" : "#073642", + "word-wrap-marker" : "#586e75" + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/data/themes/solarized-light.theme b/src/libs/3rdparty/syntax-highlighting/data/themes/solarized-light.theme new file mode 100644 index 0000000000..473f98add3 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/themes/solarized-light.theme @@ -0,0 +1,175 @@ +{ + "metadata" : { + "revision" : 1, + "name" : "Solarized Light" + }, + "text-styles": { + "Normal" : { + "text-color" : "#657b83", + "selected-text-color" : "#839496", + "bold" : false, + "italic" : false, + "underline" : false, + "strike-through" : false + }, + "Keyword" : { + "text-color" : "#859900", + "selected-text-color" : "#859900", + "bold" : true + }, + "Function" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2" + }, + "Variable" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2" + }, + "ControlFlow" : { + "text-color" : "#859900", + "selected-text-color" : "#859900", + "bold" : true + }, + "Operator" : { + "text-color" : "#859900", + "selected-text-color" : "#859900" + }, + "BuiltIn" : { + "text-color" : "#cb4b16", + "selected-text-color" : "#cb4b16" + }, + "Extension" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2", + "bold" : true + }, + "Preprocessor" : { + "text-color" : "#cb4b16", + "selected-text-color" : "#cb4b16" + }, + "Attribute" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2" + }, + "Char" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "SpecialChar" : { + "text-color" : "#dc322f", + "selected-text-color" : "#dc322f" + }, + "String" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "VerbatimString" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "SpecialString" : { + "text-color" : "#dc322f", + "selected-text-color" : "#dc322f" + }, + "Import" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "DataType" : { + "text-color" : "#b58900", + "selected-text-color" : "#b58900", + "bold" : true + }, + "DecVal" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "BaseN" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "Float" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "Constant" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198", + "bold" : true + }, + "Comment" : { + "text-color" : "#93a1a1", + "selected-text-color" : "#586e75", + "italic" : true + }, + "Documentation" : { + "text-color" : "#dc322f", + "selected-text-color" : "#dc322f" + }, + "Annotation" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2" + }, + "CommentVar" : { + "text-color" : "#2aa198", + "selected-text-color" : "#2aa198" + }, + "RegionMarker" : { + "text-color" : "#268bd2", + "selected-text-color" : "#268bd2", + "background-color" : "#eee8d5" + }, + "Information" : { + "text-color" : "#b58900", + "selected-text-color" : "#b58900" + }, + "Warning" : { + "text-color" : "#cb4b16", + "selected-text-color" : "#cb4b16" + }, + "Alert" : { + "text-color" : "#d33682", + "selected-text-color" : "#d33682", + "bold" : true + }, + "Error" : { + "text-color" : "#dc322f", + "selected-text-color" : "#dc322f", + "underline" : true + }, + "Others" : { + "text-color" : "#859900", + "selected-text-color" : "#859900" + } + }, + "editor-colors": { + "background-color" : "#fdf6e3", + "code-folding" : "#6c71c4", + "bracket-matching" : "#eee8d5", + "current-line" : "#eee8d5", + "icon-border" : "#eee8d5", + "indentation-line" : "#eee8d5", + "line-numbers" : "#93a1a1", + "current-line-number" : "#93a1a1", + "mark-bookmark" : "#268bd2", + "mark-breakpoint-active" : "#dc322f", + "mark-breakpoint-reached" : "#b58900", + "mark-breakpoint-disabled" : "#d33682", + "mark-execution" : "#93a1a1", + "mark-warning" : "#cb4b16", + "mark-error" : "#dc322f", + "modified-lines" : "#cb4b16", + "replace-highlight" : "#859900", + "saved-lines" : "#2aa198", + "search-highlight" : "#b58900", + "selection" : "#073642", + "separator" : "#93a1a1", + "spell-checking" : "#dc322f", + "tab-marker" : "#93a1a1", + "template-background" : "#eee8d5", + "template-placeholder" : "#eee8d5", + "template-focused-placeholder" : "#eee8d5", + "template-read-only-placeholder" : "#eee8d5", + "word-wrap-marker" : "#93a1a1" + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/data/themes/theme-data.qrc b/src/libs/3rdparty/syntax-highlighting/data/themes/theme-data.qrc new file mode 100644 index 0000000000..46af4213b5 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/themes/theme-data.qrc @@ -0,0 +1,10 @@ +<!DOCTYPE RCC> +<RCC version="1.0"> + <qresource prefix="/org.kde.syntax-highlighting/themes"> + <file alias="default.theme">default.theme</file> + <file alias="breeze-dark.theme">breeze-dark.theme</file> + <file alias="printing.theme">printing.theme</file> + <file alias="solarized-dark.theme">solarized-dark.theme</file> + <file alias="solarized-light.theme">solarized-light.theme</file> + </qresource> +</RCC> diff --git a/src/libs/3rdparty/syntax-highlighting/examples/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/examples/CMakeLists.txt new file mode 100644 index 0000000000..652b72cb0a --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/examples/CMakeLists.txt @@ -0,0 +1,4 @@ +if(Qt5Widgets_FOUND) + add_executable(codeeditor codeeditor.cpp main.cpp) + target_link_libraries(codeeditor Qt5::Widgets KF5SyntaxHighlighting) +endif() diff --git a/src/libs/3rdparty/syntax-highlighting/examples/codeeditor.cpp b/src/libs/3rdparty/syntax-highlighting/examples/codeeditor.cpp new file mode 100644 index 0000000000..88f315462d --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/examples/codeeditor.cpp @@ -0,0 +1,358 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "codeeditor.h" + +#include <definition.h> +#include <foldingregion.h> +#include <syntaxhighlighter.h> +#include <theme.h> + +#include <QApplication> +#include <QDebug> +#include <QFile> +#include <QFileDialog> +#include <QFontDatabase> +#include <QMenu> +#include <QPainter> +#include <QPalette> + +class CodeEditorSidebar : public QWidget +{ + Q_OBJECT +public: + explicit CodeEditorSidebar(CodeEditor *editor); + QSize sizeHint() const Q_DECL_OVERRIDE; + +protected: + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + +private: + CodeEditor *m_codeEditor; +}; + +CodeEditorSidebar::CodeEditorSidebar(CodeEditor *editor) : + QWidget(editor), + m_codeEditor(editor) +{ +} + +QSize CodeEditorSidebar::sizeHint() const +{ + return QSize(m_codeEditor->sidebarWidth(), 0); +} + +void CodeEditorSidebar::paintEvent(QPaintEvent *event) +{ + m_codeEditor->sidebarPaintEvent(event); +} + +void CodeEditorSidebar::mouseReleaseEvent(QMouseEvent *event) +{ + if (event->x() >= width() - m_codeEditor->fontMetrics().lineSpacing()) { + auto block = m_codeEditor->blockAtPosition(event->y()); + if (!block.isValid() || !m_codeEditor->isFoldable(block)) + return; + m_codeEditor->toggleFold(block); + } + QWidget::mouseReleaseEvent(event); +} + + +CodeEditor::CodeEditor(QWidget *parent) : + QPlainTextEdit(parent), + m_highlighter(new KSyntaxHighlighting::SyntaxHighlighter(document())), + m_sideBar(new CodeEditorSidebar(this)) +{ + setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); + + setTheme((palette().color(QPalette::Base).lightness() < 128) + ? m_repository.defaultTheme(KSyntaxHighlighting::Repository::DarkTheme) + : m_repository.defaultTheme(KSyntaxHighlighting::Repository::LightTheme)); + + connect(this, &QPlainTextEdit::blockCountChanged, this, &CodeEditor::updateSidebarGeometry); + connect(this, &QPlainTextEdit::updateRequest, this, &CodeEditor::updateSidebarArea); + connect(this, &QPlainTextEdit::cursorPositionChanged, this, &CodeEditor::highlightCurrentLine); + + updateSidebarGeometry(); + highlightCurrentLine(); +} + +CodeEditor::~CodeEditor() +{ +} + +void CodeEditor::openFile(const QString& fileName) +{ + QFile f(fileName); + if (!f.open(QFile::ReadOnly)) { + qWarning() << "Failed to open" << fileName << ":" << f.errorString(); + return; + } + + clear(); + + const auto def = m_repository.definitionForFileName(fileName); + m_highlighter->setDefinition(def); + + setWindowTitle(fileName); + setPlainText(QString::fromUtf8(f.readAll())); +} + +void CodeEditor::contextMenuEvent(QContextMenuEvent *event) +{ + auto menu = createStandardContextMenu(event->pos()); + menu->addSeparator(); + auto openAction = menu->addAction(QStringLiteral("Open File...")); + connect(openAction, &QAction::triggered, this, [this]() { + const auto fileName = QFileDialog::getOpenFileName(this, QStringLiteral("Open File")); + if (!fileName.isEmpty()) + openFile(fileName); + }); + + // syntax selection + auto hlActionGroup = new QActionGroup(menu); + hlActionGroup->setExclusive(true); + auto hlGroupMenu = menu->addMenu(QStringLiteral("Syntax")); + QMenu *hlSubMenu = hlGroupMenu; + QString currentGroup; + foreach (const auto &def, m_repository.definitions()) { + if (def.isHidden()) + continue; + if (currentGroup != def.section()) { + currentGroup = def.section(); + hlSubMenu = hlGroupMenu->addMenu(def.translatedSection()); + } + + Q_ASSERT(hlSubMenu); + auto action = hlSubMenu->addAction(def.translatedName()); + action->setCheckable(true); + action->setData(def.name()); + hlActionGroup->addAction(action); + if (def.name() == m_highlighter->definition().name()) + action->setChecked(true); + } + connect(hlActionGroup, &QActionGroup::triggered, this, [this](QAction *action) { + const auto defName = action->data().toString(); + const auto def = m_repository.definitionForName(defName); + m_highlighter->setDefinition(def); + }); + + // theme selection + auto themeGroup = new QActionGroup(menu); + themeGroup->setExclusive(true); + auto themeMenu = menu->addMenu(QStringLiteral("Theme")); + foreach (const auto &theme, m_repository.themes()) { + auto action = themeMenu->addAction(theme.translatedName()); + action->setCheckable(true); + action->setData(theme.name()); + themeGroup->addAction(action); + if (theme.name() == m_highlighter->theme().name()) + action->setChecked(true); + } + connect(themeGroup, &QActionGroup::triggered, this, [this](QAction *action) { + const auto themeName = action->data().toString(); + const auto theme = m_repository.theme(themeName); + setTheme(theme); + }); + + menu->exec(event->globalPos()); + delete menu; +} + +void CodeEditor::resizeEvent(QResizeEvent *event) +{ + QPlainTextEdit::resizeEvent(event); + updateSidebarGeometry(); +} + +void CodeEditor::setTheme(const KSyntaxHighlighting::Theme &theme) +{ + auto pal = qApp->palette(); + if (theme.isValid()) { + pal.setColor(QPalette::Base, theme.editorColor(KSyntaxHighlighting::Theme::BackgroundColor)); + pal.setColor(QPalette::Text, theme.textColor(KSyntaxHighlighting::Theme::Normal)); + pal.setColor(QPalette::Highlight, theme.editorColor(KSyntaxHighlighting::Theme::TextSelection)); + } + setPalette(pal); + + m_highlighter->setTheme(theme); + m_highlighter->rehighlight(); + highlightCurrentLine(); +} + +int CodeEditor::sidebarWidth() const +{ + int digits = 1; + auto count = blockCount(); + while (count >= 10) { + ++digits; + count /= 10; + } + return 4 + fontMetrics().width(QLatin1Char('9')) * digits + fontMetrics().lineSpacing(); +} + +void CodeEditor::sidebarPaintEvent(QPaintEvent *event) +{ + QPainter painter(m_sideBar); + painter.fillRect(event->rect(), m_highlighter->theme().editorColor(KSyntaxHighlighting::Theme::IconBorder)); + + auto block = firstVisibleBlock(); + auto blockNumber = block.blockNumber(); + int top = blockBoundingGeometry(block).translated(contentOffset()).top(); + int bottom = top + blockBoundingRect(block).height(); + const int currentBlockNumber = textCursor().blockNumber(); + + const auto foldingMarkerSize = fontMetrics().lineSpacing(); + + while (block.isValid() && top <= event->rect().bottom()) { + if (block.isVisible() && bottom >= event->rect().top()) { + const auto number = QString::number(blockNumber + 1); + painter.setPen(m_highlighter->theme().editorColor( + (blockNumber == currentBlockNumber) ? KSyntaxHighlighting::Theme::CurrentLineNumber + : KSyntaxHighlighting::Theme::LineNumbers)); + painter.drawText(0, top, m_sideBar->width() - 2 - foldingMarkerSize, fontMetrics().height(), Qt::AlignRight, number); + } + + // folding marker + if (block.isVisible() && isFoldable(block)) { + QPolygonF polygon; + if (isFolded(block)) { + polygon << QPointF(foldingMarkerSize * 0.4, foldingMarkerSize * 0.25); + polygon << QPointF(foldingMarkerSize * 0.4, foldingMarkerSize * 0.75); + polygon << QPointF(foldingMarkerSize * 0.8, foldingMarkerSize * 0.5); + } else { + polygon << QPointF(foldingMarkerSize * 0.25, foldingMarkerSize * 0.4); + polygon << QPointF(foldingMarkerSize * 0.75, foldingMarkerSize * 0.4); + polygon << QPointF(foldingMarkerSize * 0.5, foldingMarkerSize * 0.8); + } + painter.save(); + painter.setRenderHint(QPainter::Antialiasing); + painter.setPen(Qt::NoPen); + painter.setBrush(QColor(m_highlighter->theme().editorColor(KSyntaxHighlighting::Theme::CodeFolding))); + painter.translate(m_sideBar->width() - foldingMarkerSize, top); + painter.drawPolygon(polygon); + painter.restore(); + } + + block = block.next(); + top = bottom; + bottom = top + blockBoundingRect(block).height(); + ++blockNumber; + } +} + +void CodeEditor::updateSidebarGeometry() +{ + setViewportMargins(sidebarWidth(), 0, 0, 0); + const auto r = contentsRect(); + m_sideBar->setGeometry(QRect(r.left(), r.top(), sidebarWidth(), r.height())); +} + +void CodeEditor::updateSidebarArea(const QRect& rect, int dy) +{ + if (dy) + m_sideBar->scroll(0, dy); + else + m_sideBar->update(0, rect.y(), m_sideBar->width(), rect.height()); +} + +void CodeEditor::highlightCurrentLine() +{ + QTextEdit::ExtraSelection selection; + selection.format.setBackground(QColor(m_highlighter->theme().editorColor(KSyntaxHighlighting::Theme::CurrentLine))); + selection.format.setProperty(QTextFormat::FullWidthSelection, true); + selection.cursor = textCursor(); + selection.cursor.clearSelection(); + + QList<QTextEdit::ExtraSelection> extraSelections; + extraSelections.append(selection); + setExtraSelections(extraSelections); +} + +QTextBlock CodeEditor::blockAtPosition(int y) const +{ + auto block = firstVisibleBlock(); + if (!block.isValid()) + return QTextBlock(); + + int top = blockBoundingGeometry(block).translated(contentOffset()).top(); + int bottom = top + blockBoundingRect(block).height(); + do { + if (top <= y && y <= bottom) + return block; + block = block.next(); + top = bottom; + bottom = top + blockBoundingRect(block).height(); + } while (block.isValid()); + return QTextBlock(); +} + +bool CodeEditor::isFoldable(const QTextBlock &block) const +{ + return m_highlighter->startsFoldingRegion(block); +} + +bool CodeEditor::isFolded(const QTextBlock &block) const +{ + if (!block.isValid()) + return false; + const auto nextBlock = block.next(); + if (!nextBlock.isValid()) + return false; + return !nextBlock.isVisible(); +} + +void CodeEditor::toggleFold(const QTextBlock &startBlock) +{ + // we also want to fold the last line of the region, therefore the ".next()" + const auto endBlock = m_highlighter->findFoldingRegionEnd(startBlock).next(); + + if (isFolded(startBlock)) { + // unfold + auto block = startBlock.next(); + while (block.isValid() && !block.isVisible()) { + block.setVisible(true); + block.setLineCount(block.layout()->lineCount()); + block = block.next(); + } + + } else { + // fold + auto block = startBlock.next(); + while (block.isValid() && block != endBlock) { + block.setVisible(false); + block.setLineCount(0); + block = block.next(); + } + } + + // redraw document + document()->markContentsDirty(startBlock.position(), endBlock.position() - startBlock.position() + 1); + + // update scrollbars + emit document()->documentLayout()->documentSizeChanged(document()->documentLayout()->documentSize()); +} + +#include "codeeditor.moc" diff --git a/src/libs/3rdparty/syntax-highlighting/examples/codeeditor.h b/src/libs/3rdparty/syntax-highlighting/examples/codeeditor.h new file mode 100644 index 0000000000..1823b43e85 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/examples/codeeditor.h @@ -0,0 +1,69 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef CODEEDITOR_H +#define CODEEDITOR_H + +#include <repository.h> + +#include <QPlainTextEdit> + +namespace KSyntaxHighlighting { +class SyntaxHighlighter; +} + +class CodeEditorSidebar; + +class CodeEditor : public QPlainTextEdit +{ + Q_OBJECT +public: + explicit CodeEditor(QWidget *parent = nullptr); + ~CodeEditor(); + + void openFile(const QString &fileName); + +protected: + void contextMenuEvent(QContextMenuEvent *event) override; + void resizeEvent(QResizeEvent *event) override; + +private: + friend class CodeEditorSidebar; + void setTheme(const KSyntaxHighlighting::Theme &theme); + int sidebarWidth() const; + void sidebarPaintEvent(QPaintEvent *event); + void updateSidebarGeometry(); + void updateSidebarArea(const QRect &rect, int dy); + void highlightCurrentLine(); + + QTextBlock blockAtPosition(int y) const; + bool isFoldable(const QTextBlock &block) const; + bool isFolded(const QTextBlock &block) const; + void toggleFold(const QTextBlock &block); + + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::SyntaxHighlighter *m_highlighter; + CodeEditorSidebar *m_sideBar; +}; + +#endif // CODEEDITOR_H diff --git a/src/libs/3rdparty/syntax-highlighting/examples/main.cpp b/src/libs/3rdparty/syntax-highlighting/examples/main.cpp new file mode 100644 index 0000000000..3fb542954d --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/examples/main.cpp @@ -0,0 +1,46 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "codeeditor.h" + +#include <QApplication> +#include <QCommandLineParser> +#include <QFile> +#include <QTextEdit> + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + QCommandLineParser parser; + parser.addHelpOption(); + parser.addPositionalArgument(QStringLiteral("source"), QStringLiteral("The source file to highlight.")); + parser.process(app); + + CodeEditor edit; + edit.resize(1024, 1024); + edit.show(); + if (parser.positionalArguments().size() == 1) + edit.openFile(parser.positionalArguments().at(0)); + return app.exec(); +} diff --git a/src/libs/3rdparty/syntax-highlighting/metainfo.yaml b/src/libs/3rdparty/syntax-highlighting/metainfo.yaml new file mode 100644 index 0000000000..7a3220a31e --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/metainfo.yaml @@ -0,0 +1,21 @@ +maintainer: vkrause +description: Syntax Highlighting +tier: 1 +type: functional +platforms: + - name: Linux + - name: FreeBSD + - name: Windows + - name: MacOSX + - name: Android +portingAid: false +deprecated: false +release: true +libraries: + - qmake: KSyntaxHighlighting + cmake: "KF5::SyntaxHighlighting" +cmakename: KF5SyntaxHighlighting + +public_lib: true +group: Frameworks +subgroup: Tier 1 diff --git a/src/libs/3rdparty/syntax-highlighting/org_kde_ksyntaxhighlighting.categories b/src/libs/3rdparty/syntax-highlighting/org_kde_ksyntaxhighlighting.categories new file mode 100644 index 0000000000..a35cfe2b73 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/org_kde_ksyntaxhighlighting.categories @@ -0,0 +1 @@ +org.kde.ksyntaxhighlighting Syntax Highlighting IDENTIFIER [KSyntaxHighlighting::Log] diff --git a/src/libs/3rdparty/syntax-highlighting/src/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/src/CMakeLists.txt new file mode 100644 index 0000000000..b8820252c5 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/CMakeLists.txt @@ -0,0 +1,5 @@ +add_subdirectory(indexer) +if(TARGET Qt5::Gui) + add_subdirectory(lib) + add_subdirectory(cli) +endif() diff --git a/src/libs/3rdparty/syntax-highlighting/src/Messages.sh b/src/libs/3rdparty/syntax-highlighting/src/Messages.sh new file mode 100644 index 0000000000..6fb605ddf0 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/Messages.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +# extract language and section names from XML syntax definition files +# and adapt for lupdate-based extraction to match the rest of the code +$EXTRACTATTR --attr=language,name,Language --attr="language,section,Language Section" ../data/syntax/*.xml >> rc.cpp || exit 12 +sed -i -e 's/^i18nc/QT_TRANSLATE_NOOP/' rc.cpp + +grep --no-filename '"name"' ../data/themes/*.theme | \ + sed -r -e 's/"name"/QT_TRANSLATE_NOOP("Theme", /; s/://; s/,?$/);/' >> rc.cpp + +$EXTRACT_TR_STRINGS `find . -name \*.cpp -o -name \*.h -o -name \*.ui -o -name \*.qml` -o $podir/syntaxhighlighting5_qt.pot diff --git a/src/libs/3rdparty/syntax-highlighting/src/cli/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/src/cli/CMakeLists.txt new file mode 100644 index 0000000000..113115359e --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/cli/CMakeLists.txt @@ -0,0 +1,5 @@ +add_executable(kate-syntax-highlighter kate-syntax-highlighter.cpp) +ecm_mark_nongui_executable(kate-syntax-highlighter) +target_link_libraries(kate-syntax-highlighter KF5SyntaxHighlighting) + +install(TARGETS kate-syntax-highlighter ${INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/src/libs/3rdparty/syntax-highlighting/src/cli/kate-syntax-highlighter.cpp b/src/libs/3rdparty/syntax-highlighting/src/cli/kate-syntax-highlighter.cpp new file mode 100644 index 0000000000..80a15d2589 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/cli/kate-syntax-highlighter.cpp @@ -0,0 +1,164 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "ksyntaxhighlighting_version.h" + +#include <definition.h> +#include <definitiondownloader.h> +#include <htmlhighlighter.h> +#include <repository.h> +#include <theme.h> + +#include <QCommandLineParser> +#include <QCoreApplication> +#include <QFile> +#include <QVector> + +#include <iostream> + +using namespace KSyntaxHighlighting; + +int main(int argc, char **argv) +{ + QCoreApplication app(argc, argv); + QCoreApplication::setApplicationName(QStringLiteral("kate-syntax-highlighter")); + QCoreApplication::setOrganizationDomain(QStringLiteral("kde.org")); + QCoreApplication::setOrganizationName(QStringLiteral("KDE")); + QCoreApplication::setApplicationVersion(QStringLiteral(SyntaxHighlighting_VERSION_STRING)); + + QCommandLineParser parser; + parser.setApplicationDescription(app.translate("SyntaxHighlightingCLI", "Command line syntax highlighter using Kate syntax definitions.")); + parser.addHelpOption(); + parser.addVersionOption(); + parser.addPositionalArgument(app.translate("SyntaxHighlightingCLI", "source"), + app.translate("SyntaxHighlightingCLI", "The source file to highlight.")); + + QCommandLineOption listDefs(QStringList() << QStringLiteral("l") << QStringLiteral("list"), + app.translate("SyntaxHighlightingCLI", "List all available syntax definitions.")); + parser.addOption(listDefs); + QCommandLineOption listThemes(QStringList() << QStringLiteral("list-themes"), + app.translate("SyntaxHighlightingCLI", "List all available themes.")); + parser.addOption(listThemes); + + QCommandLineOption updateDefs(QStringList() << QStringLiteral("u") << QStringLiteral("update"), + app.translate("SyntaxHighlightingCLI", "Download new/updated syntax definitions.")); + parser.addOption(updateDefs); + + QCommandLineOption outputName(QStringList() << QStringLiteral("o") << QStringLiteral("output"), + app.translate("SyntaxHighlightingCLI", "File to write HTML output to (default: stdout)."), + app.translate("SyntaxHighlightingCLI", "output")); + parser.addOption(outputName); + + QCommandLineOption syntaxName(QStringList() << QStringLiteral("s") << QStringLiteral("syntax"), + app.translate("SyntaxHighlightingCLI", "Highlight using this syntax definition (default: auto-detect based on input file)."), + app.translate("SyntaxHighlightingCLI", "syntax")); + parser.addOption(syntaxName); + + QCommandLineOption themeName(QStringList() << QStringLiteral("t") << QStringLiteral("theme"), + app.translate("SyntaxHighlightingCLI", "Color theme to use for highlighting."), + app.translate("SyntaxHighlightingCLI", "theme"), QStringLiteral("Default")); + parser.addOption(themeName); + + QCommandLineOption titleOption(QStringList() << QStringLiteral("T") << QStringLiteral("title"), + app.translate("SyntaxHighlightingCLI", "Set HTML page's title\n(default: the filename or \"Kate Syntax Highlighter\" if reading from stdin)."), + app.translate("SyntaxHighlightingCLI", "title")); + parser.addOption(titleOption); + + QCommandLineOption stdinOption(QStringList() << QStringLiteral("stdin"), + app.translate("SyntaxHighlightingCLI", "Read file from stdin. The -s option must also be used.")); + parser.addOption(stdinOption); + + parser.process(app); + + Repository repo; + if (parser.isSet(listDefs)) { + foreach (const auto &def, repo.definitions()) { + std::cout << qPrintable(def.name()) << std::endl; + } + return 0; + } + + if (parser.isSet(listThemes)) { + foreach (const auto &theme, repo.themes()) + std::cout << qPrintable(theme.name()) << std::endl; + return 0; + } + + if (parser.isSet(updateDefs)) { + DefinitionDownloader downloader(&repo); + QObject::connect(&downloader, &DefinitionDownloader::informationMessage, [](const QString &msg) { + std::cout << qPrintable(msg) << std::endl; + }); + QObject::connect(&downloader, &DefinitionDownloader::done, &app, &QCoreApplication::quit); + downloader.start(); + return app.exec(); + } + + bool fromFileName = false; + QString inFileName; + if (parser.positionalArguments().size() == 1) { + fromFileName = true; + inFileName = parser.positionalArguments().at(0); + } + + Definition def; + if (parser.isSet(syntaxName)) { + def = repo.definitionForName(parser.value(syntaxName)); + if (!def.isValid()) + /* see if it's a mimetype instead */ + def = repo.definitionForMimeType(parser.value(syntaxName)); + } else if (fromFileName) { + def = repo.definitionForFileName(inFileName); + } else { + parser.showHelp(1); + } + + QString title; + if (parser.isSet(titleOption)) + title = parser.value(titleOption); + + if (!def.isValid()) { + std::cerr << "Unknown syntax." << std::endl; + return 1; + } + + HtmlHighlighter highlighter; + highlighter.setDefinition(def); + if (parser.isSet(outputName)) + highlighter.setOutputFile(parser.value(outputName)); + else + highlighter.setOutputFile(stdout); + highlighter.setTheme(repo.theme(parser.value(themeName))); + + if (fromFileName) { + highlighter.highlightFile(inFileName, title); + } else if (parser.isSet(stdinOption)) { + QFile inFile; + inFile.open(stdin, QIODevice::ReadOnly); + highlighter.highlightData(&inFile, title); + } else { + parser.showHelp(1); + } + + return 0; +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/indexer/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/src/indexer/CMakeLists.txt new file mode 100644 index 0000000000..9fa26b27ce --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/indexer/CMakeLists.txt @@ -0,0 +1,36 @@ +# when cross compiling, use either the executable offered or try to cross-compile it in place + +if(CMAKE_CROSSCOMPILING AND KATEHIGHLIGHTINGINDEXER_EXECUTABLE) + add_executable(katehighlightingindexer IMPORTED GLOBAL) + set_target_properties(katehighlightingindexer PROPERTIES IMPORTED_LOCATION ${KATEHIGHLIGHTINGINDEXER_EXECUTABLE}) +elseif(CMAKE_CROSSCOMPILING) + if (NOT KF5_HOST_TOOLING) + message(FATAL_ERROR "Please provide a prefix with a native Qt build and pass -DKF5_HOST_TOOLING=path") + endif() + + # search native tooling prefix + string(FIND ${KF5_HOST_TOOLING} /lib idx) + string(SUBSTRING ${KF5_HOST_TOOLING} 0 ${idx} NATIVE_PREFIX) + message(STATUS "Building katehighlightingindexer against ${NATIVE_PREFIX}") + + include(ExternalProject) + ExternalProject_Add(native_katehighlightingindexer + SOURCE_DIR ${CMAKE_SOURCE_DIR} + CMAKE_ARGS -DKSYNTAXHIGHLIGHTING_USE_GUI=OFF + -DECM_DIR=${ECM_DIR} -DCMAKE_PREFIX_PATH=${NATIVE_PREFIX} + -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR} + INSTALL_COMMAND "" + ) + add_executable(katehighlightingindexer IMPORTED GLOBAL) + add_dependencies(katehighlightingindexer native_katehighlightingindexer) + set_target_properties(katehighlightingindexer PROPERTIES IMPORTED_LOCATION + ${CMAKE_CURRENT_BINARY_DIR}/native_katehighlightingindexer-prefix/src/native_katehighlightingindexer-build/bin/katehighlightingindexer) +else() + # host build + add_executable(katehighlightingindexer katehighlightingindexer.cpp) + if(Qt5XmlPatterns_FOUND) + target_link_libraries(katehighlightingindexer Qt5::XmlPatterns) + else() + target_link_libraries(katehighlightingindexer Qt5::Core) + endif() +endif() diff --git a/src/libs/3rdparty/syntax-highlighting/src/indexer/katehighlightingindexer.cpp b/src/libs/3rdparty/syntax-highlighting/src/indexer/katehighlightingindexer.cpp new file mode 100644 index 0000000000..489fbec160 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/indexer/katehighlightingindexer.cpp @@ -0,0 +1,589 @@ +/* + Copyright (C) 2014 Christoph Cullmann <cullmann@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include <QCoreApplication> +#include <QFile> +#include <QFileInfo> +#include <QTextStream> +#include <QVariant> +#include <QXmlStreamReader> +#include <QJsonDocument> +#include <QRegularExpression> +#include <QDebug> + +#ifdef QT_XMLPATTERNS_LIB +#include <QXmlSchema> +#include <QXmlSchemaValidator> +#endif + +namespace { + +QStringList readListing(const QString &fileName) +{ + QFile file(fileName); + if (!file.open(QIODevice::ReadOnly)) { + return QStringList(); + } + + QXmlStreamReader xml(&file); + QStringList listing; + while (!xml.atEnd()) { + xml.readNext(); + + // add only .xml files, no .json or stuff + if (xml.isCharacters() && xml.text().toString().contains(QLatin1String(".xml"))) { + listing.append(xml.text().toString()); + } + } + + if (xml.hasError()) { + qWarning() << "XML error while reading" << fileName << " - " + << qPrintable(xml.errorString()) << "@ offset" << xml.characterOffset(); + } + + return listing; +} + +/** + * check if the "extensions" attribute have valid wildcards + * @param extensions extensions string to check + * @return valid? + */ +bool checkExtensions(QString extensions) +{ + // get list of extensions + const QStringList extensionParts = extensions.split(QLatin1Char(';'), QString::SkipEmptyParts); + + // ok if empty + if (extensionParts.isEmpty()) { + return true; + } + + // check that only valid wildcard things are inside the parts + for (const auto& extension : extensionParts) { + for (const auto c : extension) { + // eat normal things + if (c.isDigit() || c.isLetter()) { + continue; + } + + // allow some special characters + if (c == QLatin1Char('.') || c == QLatin1Char('-') || c == QLatin1Char('_') || c == QLatin1Char('+')) { + continue; + } + + // only allowed wildcard things: '?' and '*' + if (c == QLatin1Char('?') || c == QLatin1Char('*')) { + continue; + } + + qWarning() << "invalid character" << c << " seen in extensions wildcard"; + return false; + } + } + + // all checks passed + return true; +} + +//! Check that a regular expression in a RegExpr rule: +//! - is not empty +//! - isValid() +//! - character ranges such as [A-Z] are valid and not accidentally e.g. [A-z]. +bool checkRegularExpression(const QString &hlFilename, QXmlStreamReader &xml) +{ + if (xml.name() == QLatin1String("RegExpr") || xml.name() == QLatin1String("emptyLine")) { + // get right attribute + const QString string (xml.attributes().value((xml.name() == QLatin1String("RegExpr")) ? QLatin1String("String") : QLatin1String("regexpr")).toString()); + + // validate regexp + const QRegularExpression regexp (string); + if (!regexp.isValid()) { + qWarning() << hlFilename << "line" << xml.lineNumber() << "broken regex:" << string << "problem:" << regexp.errorString() << "at offset" << regexp.patternErrorOffset(); + return false; + } else if (string.isEmpty()) { + qWarning() << hlFilename << "line" << xml.lineNumber() << "empty regex not allowed."; + return false; + } + + // catch possible case typos: [A-z] or [a-Z] + const int azOffset = std::max(string.indexOf(QStringLiteral("A-z")), string.indexOf(QStringLiteral("a-Z"))); + if (azOffset >= 0) { + qWarning() << hlFilename << "line" << xml.lineNumber() << "broken regex:" << string << "problem: [a-Z] or [A-z] at offset" << azOffset; + return false; + } + } + + return true; +} + +//! Check that keyword list items do not have trailing or leading spaces, +//! e.g.: <item> keyword </item> +bool checkItemsTrimmed(const QString &hlFilename, QXmlStreamReader &xml) +{ + if (xml.name() == QLatin1String("item")) { + const QString keyword = xml.readElementText(); + if (keyword != keyword.trimmed()) { + qWarning() << hlFilename << "line" << xml.lineNumber() << "keyword with leading/trailing spaces:" << keyword; + return false; + } + } + + return true; +} + +//! Checks that DetectChar and Detect2Chars really only have one char +//! in the attributes 'char' and 'char1'. +bool checkSingleChars(const QString &hlFilename, QXmlStreamReader &xml) +{ + const bool testChar1 = xml.name() == QLatin1String("Detect2Chars"); + const bool testChar = testChar1 || xml.name() == QLatin1String("DetectChar"); + + if (testChar) { + const QString c = xml.attributes().value(QLatin1String("char")).toString(); + if (c.size() != 1) { + qWarning() << hlFilename << "line" << xml.lineNumber() << "'char' must contain exactly one char:" << c; + } + } + + if (testChar1) { + const QString c = xml.attributes().value(QLatin1String("char1")).toString(); + if (c.size() != 1) { + qWarning() << hlFilename << "line" << xml.lineNumber() << "'char1' must contain exactly one char:" << c; + } + } + + return true; +} + +//! Search for rules with lookAhead="true" and context="#stay". +//! This would cause an infinite loop. +bool checkLookAhead(const QString &hlFilename, QXmlStreamReader &xml) +{ + if (xml.attributes().hasAttribute(QStringLiteral("lookAhead"))) { + auto lookAhead = xml.attributes().value(QStringLiteral("lookAhead")); + if (lookAhead == QStringLiteral("true")) { + auto context = xml.attributes().value(QStringLiteral("context")); + if (context == QStringLiteral("#stay")) { + qWarning() << hlFilename << "line" << xml.lineNumber() << "Infinite loop: lookAhead with context #stay"; + return false; + } + } + } + return true; +} + +/** + * Helper class to search for non-existing or unreferenced keyword lists. + */ +class KeywordChecker +{ +public: + KeywordChecker(const QString &filename) + : m_filename(filename) + {} + + void processElement(QXmlStreamReader &xml) + { + if (xml.name() == QLatin1String("list")) { + const QString name = xml.attributes().value(QLatin1String("name")).toString(); + if (m_existingNames.contains(name)) { + qWarning() << m_filename << "list duplicate:" << name; + } + m_existingNames.insert(name); + } else if (xml.name() == QLatin1String("keyword")) { + const QString context = xml.attributes().value(QLatin1String("String")).toString(); + if (!context.isEmpty()) + m_usedNames.insert(context); + } + } + + bool check() const + { + bool success = true; + const auto invalidNames = m_usedNames - m_existingNames; + if (!invalidNames.isEmpty()) { + qWarning() << m_filename << "Reference of non-existing keyword list:" << invalidNames; + success = false; + } + + const auto unusedNames = m_existingNames - m_usedNames; + if (!unusedNames.isEmpty()) { + qWarning() << m_filename << "Unused keyword lists:" << unusedNames; + } + + return success; + } + +private: + QString m_filename; + QSet<QString> m_usedNames; + QSet<QString> m_existingNames; +}; + +/** + * Helper class to search for non-existing contexts + */ +class ContextChecker +{ +public: + void processElement(const QString &hlFilename, const QString &hlName, QXmlStreamReader &xml) + { + if (xml.name() == QLatin1String("context")) { + auto & language = m_contextMap[hlName]; + language.hlFilename = hlFilename; + const QString name = xml.attributes().value(QLatin1String("name")).toString(); + if (language.isFirstContext) { + language.isFirstContext = false; + language.usedContextNames.insert(name); + } + + if (language.existingContextNames.contains(name)) { + qWarning() << hlFilename << "Duplicate context:" << name; + } else { + language.existingContextNames.insert(name); + } + + if (xml.attributes().value(QLatin1String("fallthroughContext")).toString() == QLatin1String("#stay")) { + qWarning() << hlFilename << "possible infinite loop due to fallthroughContext=\"#stay\" in context " << name; + } + + processContext(hlName, xml.attributes().value(QLatin1String("lineEndContext")).toString()); + processContext(hlName, xml.attributes().value(QLatin1String("lineEmptyContext")).toString()); + processContext(hlName, xml.attributes().value(QLatin1String("fallthroughContext")).toString()); + } else { + if (xml.attributes().hasAttribute(QLatin1String("context"))) { + const QString context = xml.attributes().value(QLatin1String("context")).toString(); + if (context.isEmpty()) { + qWarning() << hlFilename << "Missing context name in line" << xml.lineNumber(); + } else { + processContext(hlName, context); + } + } + } + } + + bool check() const + { + bool success = true; + for (auto &language : m_contextMap) { + const auto invalidContextNames = language.usedContextNames - language.existingContextNames; + if (!invalidContextNames.isEmpty()) { + qWarning() << language.hlFilename << "Reference of non-existing contexts:" << invalidContextNames; + success = false; + } + + const auto unusedNames = language.existingContextNames - language.usedContextNames; + if (!unusedNames.isEmpty()) { + qWarning() << language.hlFilename << "Unused contexts:" << unusedNames; + } + } + + return success; + } + +private: + //! Extract the referenced context name and language. + //! Some input / output examples are: + //! - "#stay" -> "" + //! - "#pop" -> "" + //! - "Comment" -> "Comment" + //! - "#pop!Comment" -> "Comment" + //! - "##ISO C++" -> "" + //! - "Comment##ISO C++"-> "Comment" in ISO C++ + void processContext(const QString &language, QString context) + { + if (context.isEmpty()) + return; + + // filter out #stay and #pop + static QRegularExpression stayPop(QStringLiteral("^(#stay|#pop)+")); + context.remove(stayPop); + + // handle cross-language context references + if (context.contains(QStringLiteral("##"))) { + const QStringList list = context.split(QStringLiteral("##"), QString::SkipEmptyParts); + if (list.size() == 1) { + // nothing to do, other language is included: e.g. ##Doxygen + } else if (list.size() == 2) { + // specific context of other language, e.g. Comment##ISO C++ + m_contextMap[list[1]].usedContextNames.insert(list[0]); + } + return; + } + + // handle #pop!context" (#pop was already removed above) + if (context.startsWith(QLatin1Char('!'))) + context.remove(0, 1); + + if (!context.isEmpty()) + m_contextMap[language].usedContextNames.insert(context); + } + +private: + class Language + { + public: + // filename on disk or in Qt resource + QString hlFilename; + + // Is true, if the first context in xml file is encountered, and + // false in all other cases. This is required, since the first context + // is typically not referenced explicitly. So we will simply add the + // first context to the usedContextNames list. + bool isFirstContext = true; + + // holds all contexts that were referenced + QSet<QString> usedContextNames; + + // holds all existing context names + QSet<QString> existingContextNames; + }; + + /** + * "Language name" to "Language" map. + * Example key: "Doxygen" + */ + QHash<QString, Language> m_contextMap; +}; + +/** + * Helper class to search for non-existing itemDatas. + */ +class AttributeChecker +{ +public: + AttributeChecker(const QString &filename) + : m_filename(filename) + {} + + void processElement(QXmlStreamReader &xml) + { + if (xml.name() == QLatin1String("itemData")) { + const QString name = xml.attributes().value(QLatin1String("name")).toString(); + if (!name.isEmpty()) { + if (m_existingAttributeNames.contains(name)) { + qWarning() << m_filename << "itemData duplicate:" << name; + } else { + m_existingAttributeNames.insert(name); + } + } + } else if (xml.attributes().hasAttribute(QLatin1String("attribute"))) { + const QString name = xml.attributes().value(QLatin1String("attribute")).toString(); + if (name.isEmpty()) { + qWarning() << m_filename << "specified attribute is empty:" << xml.name(); + } else { + m_usedAttributeNames.insert(name); + } + } + } + + bool check() const + { + bool success = true; + const auto invalidNames = m_usedAttributeNames - m_existingAttributeNames; + if (!invalidNames.isEmpty()) { + qWarning() << m_filename << "Reference of non-existing itemData attributes:" << invalidNames; + success = false; + } + + auto unusedNames = m_existingAttributeNames - m_usedAttributeNames; + if (!unusedNames.isEmpty()) { + qWarning() << m_filename << "Unused itemData:" << unusedNames; + } + + return success; + } + +private: + QString m_filename; + QSet<QString> m_usedAttributeNames; + QSet<QString> m_existingAttributeNames; +}; + +} + +int main(int argc, char *argv[]) +{ + // get app instance + QCoreApplication app(argc, argv); + + // ensure enough arguments are passed + if (app.arguments().size() < 3) + return 1; + +#ifdef QT_XMLPATTERNS_LIB + // open schema + QXmlSchema schema; + if (!schema.load(QUrl::fromLocalFile(app.arguments().at(2)))) + return 2; +#endif + + const QString hlFilenamesListing = app.arguments().value(3); + if (hlFilenamesListing.isEmpty()) { + return 1; + } + + QStringList hlFilenames = readListing(hlFilenamesListing); + if (hlFilenames.isEmpty()) { + qWarning("Failed to read %s", qPrintable(hlFilenamesListing)); + return 3; + } + + // text attributes + const QStringList textAttributes = QStringList() << QStringLiteral("name") << QStringLiteral("section") << QStringLiteral("mimetype") + << QStringLiteral("extensions") << QStringLiteral("style") + << QStringLiteral("author") << QStringLiteral("license") << QStringLiteral("indenter"); + + // index all given highlightings + ContextChecker contextChecker; + QVariantMap hls; + int anyError = 0; + foreach (const QString &hlFilename, hlFilenames) { + QFile hlFile(hlFilename); + if (!hlFile.open(QIODevice::ReadOnly)) { + qWarning ("Failed to open %s", qPrintable(hlFilename)); + anyError = 3; + continue; + } + +#ifdef QT_XMLPATTERNS_LIB + // validate against schema + QXmlSchemaValidator validator(schema); + if (!validator.validate(&hlFile, QUrl::fromLocalFile(hlFile.fileName()))) { + anyError = 4; + continue; + } +#endif + + // read the needed attributes from toplevel language tag + hlFile.reset(); + QXmlStreamReader xml(&hlFile); + if (xml.readNextStartElement()) { + if (xml.name() != QLatin1String("language")) { + anyError = 5; + continue; + } + } else { + anyError = 6; + continue; + } + + // map to store hl info + QVariantMap hl; + + // transfer text attributes + Q_FOREACH (const QString &attribute, textAttributes) { + hl[attribute] = xml.attributes().value(attribute).toString(); + } + + // check if extensions have the right format + if (!checkExtensions(hl[QStringLiteral("extensions")].toString())) { + qWarning() << hlFilename << "'extensions' wildcards invalid:" << hl[QStringLiteral("extensions")].toString(); + anyError = 23; + } + + // numerical attributes + hl[QStringLiteral("version")] = xml.attributes().value(QLatin1String("version")).toInt(); + hl[QStringLiteral("priority")] = xml.attributes().value(QLatin1String("priority")).toInt(); + + // add boolean one + const QString hidden = xml.attributes().value(QLatin1String("hidden")).toString(); + hl[QStringLiteral("hidden")] = (hidden == QLatin1String("true") || hidden == QLatin1String("1")); + + // remember hl + hls[QFileInfo(hlFile).fileName()] = hl; + + AttributeChecker attributeChecker(hlFilename); + KeywordChecker keywordChecker(hlFilename); + const QString hlName = hl[QStringLiteral("name")].toString(); + + // scan for broken regex or keywords with spaces + while (!xml.atEnd()) { + xml.readNext(); + if (!xml.isStartElement()) { + continue; + } + + // search for used/existing contexts if applicable + contextChecker.processElement(hlFilename, hlName, xml); + + // search for used/existing attributes if applicable + attributeChecker.processElement(xml); + + // search for used/existing keyword lists if applicable + keywordChecker.processElement(xml); + + // scan for bad regex + if (!checkRegularExpression(hlFilename, xml)) { + anyError = 7; + continue; + } + + // scan for bogus <item> lala </item> spaces + if (!checkItemsTrimmed(hlFilename, xml)) { + anyError = 8; + continue; + } + + // check single chars in DetectChar and Detect2Chars + if (!checkSingleChars(hlFilename, xml)) { + anyError = 8; + continue; + } + + // scan for lookAhead="true" with context="#stay" + if (!checkLookAhead(hlFilename, xml)) { + anyError = 7; + continue; + } + } + + if (!attributeChecker.check()) { + anyError = 7; + } + + if (!keywordChecker.check()) { + anyError = 7; + } + } + + if (!contextChecker.check()) + anyError = 7; + + + // bail out if any problem was seen + if (anyError) + return anyError; + + // create outfile, after all has worked! + QFile outFile(app.arguments().at(1)); + if (!outFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) + return 9; + + // write out json + outFile.write(QJsonDocument::fromVariant(QVariant(hls)).toBinaryData()); + + // be done + return 0; +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/src/lib/CMakeLists.txt new file mode 100644 index 0000000000..bf729fca71 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/CMakeLists.txt @@ -0,0 +1,86 @@ +ecm_create_qm_loader(syntax_highlighting_QM_LOADER syntaxhighlighting5_qt) + +set(syntax_highlighting_srcs + abstracthighlighter.cpp + context.cpp + contextswitch.cpp + definitiondownloader.cpp + foldingregion.cpp + format.cpp + htmlhighlighter.cpp + keywordlist.cpp + rule.cpp + definition.cpp + repository.cpp + state.cpp + syntaxhighlighter.cpp + theme.cpp + wildcardmatcher.cpp + themedata.cpp + ${syntax_highlighting_QM_LOADER} +) +ecm_qt_declare_logging_category(syntax_highlighting_srcs + HEADER ksyntaxhighlighting_logging.h + IDENTIFIER KSyntaxHighlighting::Log + CATEGORY_NAME org.kde.ksyntaxhighlighting +) + +add_library(KF5SyntaxHighlighting ${syntax_highlighting_srcs} $<TARGET_OBJECTS:SyntaxHighlightingData>) +generate_export_header(KF5SyntaxHighlighting BASE_NAME KSyntaxHighlighting) +set_target_properties(KF5SyntaxHighlighting PROPERTIES + VERSION ${SyntaxHighlighting_VERSION_STRING} + SOVERSION ${SyntaxHighlighting_SOVERSION} + EXPORT_NAME SyntaxHighlighting +) +target_include_directories(KF5SyntaxHighlighting INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF5}/KSyntaxHighlighting;${KDE_INSTALL_INCLUDEDIR_KF5}>") +target_include_directories(KF5SyntaxHighlighting PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR};>") +target_link_libraries(KF5SyntaxHighlighting LINK_PUBLIC Qt5::Gui LINK_PRIVATE Qt5::Network) + +ecm_generate_headers(SyntaxHighlighting_HEADERS + HEADER_NAMES + AbstractHighlighter + Definition + FoldingRegion + Format + Repository + State + SyntaxHighlighter + Theme + REQUIRED_HEADERS SyntaxHighlighting_HEADERS +) + +install(TARGETS KF5SyntaxHighlighting EXPORT KF5SyntaxHighlightingTargets ${INSTALL_TARGETS_DEFAULT_ARGS}) +install(FILES + ${SyntaxHighlighting_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/ksyntaxhighlighting_export.h + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KSyntaxHighlighting) + +if(BUILD_QCH) + ecm_add_qch( + KF5SyntaxHighlighting_QCH + NAME KSyntaxHighlighting + BASE_NAME KF5SyntaxHighlighting + VERSION ${KF5_VERSION} + ORG_DOMAIN org.kde + SOURCES # using only public headers, to cover only public API + ${SyntaxHighlighting_HEADERS} + MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" + LINK_QCHS + Qt5Core_QCH + Qt5Gui_QCH + BLANK_MACROS + KSYNTAXHIGHLIGHTING_EXPORT + KSYNTAXHIGHLIGHTING_DEPRECATED + TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} + QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} + COMPONENT Devel + ) +endif() +ecm_generate_pri_file( + BASE_NAME KSyntaxHighlighting LIB_NAME + KF5SyntaxHighlighting + DEPS "gui" + FILENAME_VAR PRI_FILENAME + INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KSyntaxHighlighting +) +install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter.cpp new file mode 100644 index 0000000000..f69944debd --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter.cpp @@ -0,0 +1,328 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "abstracthighlighter.h" +#include "abstracthighlighter_p.h" +#include "context_p.h" +#include "definition_p.h" +#include "foldingregion.h" +#include "format.h" +#include "repository.h" +#include "rule_p.h" +#include "state.h" +#include "state_p.h" +#include "ksyntaxhighlighting_logging.h" +#include "theme.h" + +using namespace KSyntaxHighlighting; + +AbstractHighlighterPrivate::AbstractHighlighterPrivate() +{ +} + +AbstractHighlighterPrivate::~AbstractHighlighterPrivate() +{ +} + +void AbstractHighlighterPrivate::ensureDefinitionLoaded() +{ + auto defData = DefinitionData::get(m_definition); + if (Q_UNLIKELY(!m_definition.isValid() && defData->repo && !m_definition.name().isEmpty())) { + qCDebug(Log) << "Definition became invalid, trying re-lookup."; + m_definition = defData->repo->definitionForName(m_definition.name()); + defData = DefinitionData::get(m_definition); + } + + if (Q_UNLIKELY(!defData->repo && !defData->name.isEmpty())) + qCCritical(Log) << "Repository got deleted while a highlighter is still active!"; + + if (m_definition.isValid()) + defData->load(); +} + +AbstractHighlighter::AbstractHighlighter() : + d_ptr(new AbstractHighlighterPrivate) +{ +} + +AbstractHighlighter::AbstractHighlighter(AbstractHighlighterPrivate *dd) : + d_ptr(dd) +{ +} + +AbstractHighlighter::~AbstractHighlighter() +{ + delete d_ptr; +} + +Definition AbstractHighlighter::definition() const +{ + return d_ptr->m_definition; +} + +void AbstractHighlighter::setDefinition(const Definition &def) +{ + Q_D(AbstractHighlighter); + d->m_definition = def; +} + +Theme AbstractHighlighter::theme() const +{ + Q_D(const AbstractHighlighter); + return d->m_theme; +} + +void AbstractHighlighter::setTheme(const Theme &theme) +{ + Q_D(AbstractHighlighter); + d->m_theme = theme; +} + +/** + * Returns the index of the first non-space character. If the line is empty, + * or only contains white spaces, text.size() is returned. + */ +static inline int firstNonSpaceChar(const QString & text) +{ + for (int i = 0; i < text.length(); ++i) { + if (!text[i].isSpace()) { + return i; + } + } + return text.size(); +} + +State AbstractHighlighter::highlightLine(const QString& text, const State &state) +{ + Q_D(AbstractHighlighter); + + // verify definition, deal with no highlighting being enabled + d->ensureDefinitionLoaded(); + if (!d->m_definition.isValid()) { + applyFormat(0, text.size(), Format()); + return State(); + } + + // verify/initialize state + auto defData = DefinitionData::get(d->m_definition); + auto newState = state; + auto stateData = StateData::get(newState); + const DefinitionRef currentDefRef(d->m_definition); + if (!stateData->isEmpty() && (stateData->m_defRef != currentDefRef)) { + qCDebug(Log) << "Got invalid state, resetting."; + stateData->clear(); + } + if (stateData->isEmpty()) { + stateData->push(defData->initialContext(), QStringList()); + stateData->m_defRef = currentDefRef; + } + + // process empty lines + if (text.isEmpty()) { + while (!stateData->topContext()->lineEmptyContext().isStay()) { + if (!d->switchContext(stateData, stateData->topContext()->lineEmptyContext(), QStringList())) + break; + } + auto context = stateData->topContext(); + applyFormat(0, 0, context->attributeFormat()); + return newState; + } + + int offset = 0, beginOffset = 0; + bool lineContinuation = false; + QHash<Rule*, int> skipOffsets; + + /** + * current active format + * stored as pointer to avoid deconstruction/constructions inside the internal loop + * the pointers are stable, the formats are either in the contexts or rules + */ + auto currentFormat = &stateData->topContext()->attributeFormat(); + + /** + * cached first non-space character, needs to be computed if < 0 + */ + int firstNonSpace = -1; + int lastOffset = offset; + int endlessLoopingCounter = 0; + do { + /** + * avoid that we loop endless for some broken hl definitions + */ + if (lastOffset == offset) { + ++endlessLoopingCounter; + if (endlessLoopingCounter > 1024) { + qCDebug(Log) << "Endless state transitions, aborting highlighting of line."; + break; + } + } else { + // ensure we made progress, clear the endlessLoopingCounter + Q_ASSERT(offset > lastOffset); + lastOffset = offset; + endlessLoopingCounter = 0; + } + + /** + * try to match all rules in the context in order of declaration in XML + */ + bool isLookAhead = false; + int newOffset = 0; + const Format *newFormat = nullptr; + for (const auto &rule : stateData->topContext()->rules()) { + /** + * filter out rules that require a specific column + */ + if ((rule->requiredColumn() >= 0) && (rule->requiredColumn() != offset)) { + continue; + } + + /** + * filter out rules that only match for leading whitespace + */ + if (rule->firstNonSpace()) { + /** + * compute the first non-space lazy + * avoids computing it for contexts without any such rules + */ + if (firstNonSpace < 0) { + firstNonSpace = firstNonSpaceChar(text); + } + + /** + * can we skip? + */ + if (offset > firstNonSpace) { + continue; + } + } + + /** + * shall we skip application of this rule? two cases: + * - rule can't match at all => currentSkipOffset < 0 + * - rule will only match for some higher offset => currentSkipOffset > offset + */ + const auto currentSkipOffset = skipOffsets.value(rule.get()); + if (currentSkipOffset < 0 || currentSkipOffset > offset) + continue; + + + const auto newResult = rule->doMatch(text, offset, stateData->topCaptures()); + newOffset = newResult.offset(); + + /** + * update skip offset if new one rules out any later match or is larger than current one + */ + if (newResult.skipOffset() < 0 || newResult.skipOffset() > currentSkipOffset) + skipOffsets.insert(rule.get(), newResult.skipOffset()); + + if (newOffset <= offset) + continue; + + // apply folding + if (rule->endRegion().isValid()) + applyFolding(offset, newOffset - offset, rule->endRegion()); + if (rule->beginRegion().isValid()) + applyFolding(offset, newOffset - offset, rule->beginRegion()); + + if (rule->isLookAhead()) { + Q_ASSERT(!rule->context().isStay()); + d->switchContext(stateData, rule->context(), newResult.captures()); + isLookAhead = true; + break; + } + + d->switchContext(stateData, rule->context(), newResult.captures()); + newFormat = rule->attributeFormat().isValid() ? &rule->attributeFormat() : &stateData->topContext()->attributeFormat(); + if (newOffset == text.size() && std::dynamic_pointer_cast<LineContinue>(rule)) + lineContinuation = true; + break; + } + if (isLookAhead) + continue; + + if (newOffset <= offset) { // no matching rule + if (stateData->topContext()->fallthrough()) { + d->switchContext(stateData, stateData->topContext()->fallthroughContext(), QStringList()); + continue; + } + + newOffset = offset + 1; + newFormat = &stateData->topContext()->attributeFormat(); + } + + /** + * if we arrive here, some new format has to be set! + */ + Q_ASSERT(newFormat); + + /** + * on format change, apply the last one and switch to new one + */ + if (newFormat != currentFormat && newFormat->id() != currentFormat->id()) { + if (offset > 0) + applyFormat(beginOffset, offset - beginOffset, *currentFormat); + beginOffset = offset; + currentFormat = newFormat; + } + + /** + * we must have made progress if we arrive here! + */ + Q_ASSERT(newOffset > offset); + offset = newOffset; + + } while (offset < text.size()); + + if (beginOffset < offset) + applyFormat(beginOffset, text.size() - beginOffset, *currentFormat); + + while (!stateData->topContext()->lineEndContext().isStay() && !lineContinuation) { + if (!d->switchContext(stateData, stateData->topContext()->lineEndContext(), QStringList())) + break; + } + + return newState; +} + +bool AbstractHighlighterPrivate::switchContext(StateData *data, const ContextSwitch &contextSwitch, const QStringList &captures) +{ + // kill as many items as requested from the stack, will always keep the initial context alive! + const bool initialContextSurvived = data->pop(contextSwitch.popCount()); + + // if we have a new context to add, push it + // then we always "succeed" + if (contextSwitch.context()) { + data->push(contextSwitch.context(), captures); + return true; + } + + // else we abort, if we did try to pop the initial context + return initialContextSurvived; +} + +void AbstractHighlighter::applyFolding(int offset, int length, FoldingRegion region) +{ + Q_UNUSED(offset); + Q_UNUSED(length); + Q_UNUSED(region); +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter.h b/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter.h new file mode 100644 index 0000000000..2b88729697 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter.h @@ -0,0 +1,195 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_ABSTRACTHIGHLIGHTERM_H +#define KSYNTAXHIGHLIGHTING_ABSTRACTHIGHLIGHTERM_H + +#include "ksyntaxhighlighting_export.h" + +#include <QObject> + +#include <memory> + +QT_BEGIN_NAMESPACE +class QString; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class AbstractHighlighterPrivate; +class Definition; +class FoldingRegion; +class Format; +class State; +class Theme; + +/** + * Abstract base class for highlighters. + * + * @section abshl_intro Introduction + * + * The AbstractHighlighter provides an interface to highlight text. + * + * The SyntaxHighlighting framework already ships with one implementation, + * namely the SyntaxHighlighter, which also derives from QSyntaxHighlighter, + * meaning that it can be used to highlight a QTextDocument or a QML TextEdit. + * In order to use the SyntaxHighlighter, just call setDefinition() and + * setTheme(), and the associated documents will automatically be highlighted. + * + * However, if you want to use the SyntaxHighlighting framework to implement + * your own syntax highlighter, you need to sublcass from AbstractHighlighter. + * + * @section abshl_impl Implementing your own Syntax Highlighter + * + * In order to implement your own syntax highlighter, you need to inherit from + * AbstractHighlighter. Then, pass each text line that needs to be highlighted + * in order to highlightLine(). Internally, highlightLine() uses the Definition + * initially set through setDefinition() and the State of the previous text line + * to parse and highlight the given text line. For each visual highlighting + * change, highlightLine() will call applyFormat(). Therefore, reimplement + * applyFormat() to get notified of the Format that is valid in the range + * starting at the given offset with the specified length. Similarly, for each + * text part that starts or ends a code folding region, highlightLine() will + * call applyFolding(). Therefore, if you are interested in code folding, + * reimplement applyFolding() to get notified of the starting and ending code + * folding regions, again specified in the range starting at the given offset + * with the given length. + * + * The Format class itself depends on the current Theme. A theme must be + * initially set once such that the Format%s instances can be queried for + * concrete colors. + * + * Optionally, you can also reimplement setTheme() and setDefinition() to get + * notified whenever the Definition or the Theme changes. + * + * @see SyntaxHighlighter + * @since 5.28 + */ +class KSYNTAXHIGHLIGHTING_EXPORT AbstractHighlighter +{ +public: + virtual ~AbstractHighlighter(); + + /** + * Returns the syntax definition used for highlighting. + * + * @see setDefinition() + */ + Definition definition() const; + + /** + * Sets the syntax definition used for highlighting. + * + * Subclasses can re-implement this method to e.g. trigger + * re-highlighting or clear internal data structures if needed. + */ + virtual void setDefinition(const Definition &def); + + /** + * Returns the currently selected theme for highlighting. + * + * @note If no Theme was set through setTheme(), the returned Theme will be + * invalid, see Theme::isValid(). + */ + Theme theme() const; + + /** + * Sets the theme used for highlighting. + * + * Subclasses can re-implement this method to e.g. trigger + * re-highlighing or to do general palette color setup. + */ + virtual void setTheme(const Theme &theme); + +protected: + AbstractHighlighter(); + AbstractHighlighter(AbstractHighlighterPrivate *dd); + + // TODO KF6: add an optional void* context argument that is passed through + // to the applyX() calls, so highlighters dealing with some form of line object + // (such as QSyntaxHighlighter or KTextEditor) can avoid some ugly hacks to have + // this context available in their applyX methods + /** + * Highlight the given line. Call this from your derived class + * where appropriate. This will result in any number of applyFormat() + * and applyFolding() calls as a result. + * @param text A string containing the text of the line to highlight. + * @param state The highlighting state handle returned by the call + * to highlightLine() for the previous line. For the very first line, + * just pass a default constructed State(). + * @returns The state of the highlighing engine after processing the + * given line. This needs to passed into highlightLine() for the + * next line. You can store the state for efficient partial + * re-highlighting for example during editing. + * + * @see applyFormat(), applyFolding() + */ + State highlightLine(const QString &text, const State &state); + + /** + * Reimplement this to apply formats to your output. The provided @p format + * is valid for the interval [@p offset, @p offset + @p length). + * + * @param offset The start column of the interval for which @p format matches + * @param length The length of the matching text + * @param format The Format that applies to the range [offset, offset + length) + * + * @note Make sure to set a valid Definition, otherwise the parameter + * @p format is invalid for the entire line passed to highlightLine() + * (cf. Format::isValid()). + * + * @see applyFolding(), highlightLine() + */ + virtual void applyFormat(int offset, int length, const Format &format) = 0; + + /** + * Reimplement this to apply folding to your output. The provided + * FoldingRegion @p region either stars or ends a code folding region in the + * interval [@p offset, @p offset + @p length). + * + * @param offset The start column of the FoldingRegion + * @param length The length of the matching text that starts / ends a + * folding region + * @param region The FoldingRegion that applies to the range [offset, offset + length) + * + * @note The FoldingRegion @p region is @e always either of type + * FoldingRegion::Type::Begin or FoldingRegion::Type::End. + * + * @see applyFormat(), highlightLine(), FoldingRegion + */ + virtual void applyFolding(int offset, int length, FoldingRegion region); + +protected: + AbstractHighlighterPrivate *d_ptr; + +private: + Q_DECLARE_PRIVATE(AbstractHighlighter) + Q_DISABLE_COPY(AbstractHighlighter) +}; +} + +QT_BEGIN_NAMESPACE +Q_DECLARE_INTERFACE(KSyntaxHighlighting::AbstractHighlighter, "org.kde.SyntaxHighlighting.AbstractHighlighter") +QT_END_NAMESPACE + +#endif // KSYNTAXHIGHLIGHTING_ABSTRACTHIGHLIGHTERM_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter_p.h new file mode 100644 index 0000000000..bdfdf23bc1 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter_p.h @@ -0,0 +1,54 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_ABSTRACTHIGHLIGHTER_P_H +#define KSYNTAXHIGHLIGHTING_ABSTRACTHIGHLIGHTER_P_H + +#include "definition.h" +#include "theme.h" + +QT_BEGIN_NAMESPACE +class QStringList; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class ContextSwitch; +class StateData; + +class AbstractHighlighterPrivate +{ +public: + AbstractHighlighterPrivate(); + virtual ~AbstractHighlighterPrivate(); + + void ensureDefinitionLoaded(); + bool switchContext(StateData* data, const ContextSwitch &contextSwitch, const QStringList &captures); + + Definition m_definition; + Theme m_theme; +}; + +} + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/context.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/context.cpp new file mode 100644 index 0000000000..9887b959d0 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/context.cpp @@ -0,0 +1,206 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "context_p.h" +#include "definition_p.h" +#include "format.h" +#include "repository.h" +#include "rule_p.h" +#include "ksyntaxhighlighting_logging.h" +#include "xml_p.h" + +#include <QString> +#include <QXmlStreamReader> + +using namespace KSyntaxHighlighting; + +Definition Context::definition() const +{ + return m_def.definition(); +} + +void Context::setDefinition(const DefinitionRef &def) +{ + m_def = def; +} + +bool Context::indentationBasedFoldingEnabled() const +{ + if (m_noIndentationBasedFolding) + return false; + + return m_def.definition().indentationBasedFoldingEnabled(); +} + +void Context::load(QXmlStreamReader& reader) +{ + Q_ASSERT(reader.name() == QLatin1String("context")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + + m_name = reader.attributes().value(QStringLiteral("name")).toString(); + m_attribute = reader.attributes().value(QStringLiteral("attribute")).toString(); + m_lineEndContext.parse(reader.attributes().value(QStringLiteral("lineEndContext"))); + m_lineEmptyContext.parse(reader.attributes().value(QStringLiteral("lineEmptyContext"))); + m_fallthrough = Xml::attrToBool(reader.attributes().value(QStringLiteral("fallthrough"))); + m_fallthroughContext.parse(reader.attributes().value(QStringLiteral("fallthroughContext"))); + if (m_fallthroughContext.isStay()) + m_fallthrough = false; + m_noIndentationBasedFolding = Xml::attrToBool(reader.attributes().value(QStringLiteral("noIndentationBasedFolding"))); + + reader.readNext(); + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + { + auto rule = Rule::create(reader.name()); + if (rule) { + rule->setDefinition(m_def.definition()); + if (rule->load(reader)) + m_rules.push_back(rule); + } else { + reader.skipCurrentElement(); + } + reader.readNext(); + break; + } + case QXmlStreamReader::EndElement: + return; + default: + reader.readNext(); + break; + } + } +} + +void Context::resolveContexts() +{ + const auto def = m_def.definition(); + m_lineEndContext.resolve(def); + m_lineEmptyContext.resolve(def); + m_fallthroughContext.resolve(def); + for (const auto &rule : m_rules) + rule->resolveContext(); +} + +Context::ResolveState Context::resolveState() +{ + if (m_resolveState == Unknown) { + for (const auto &rule : m_rules) { + auto inc = std::dynamic_pointer_cast<IncludeRules>(rule); + if (inc) { + m_resolveState = Unresolved; + return m_resolveState; + } + } + m_resolveState = Resolved; + } + return m_resolveState; +} + +void Context::resolveIncludes() +{ + if (resolveState() == Resolved) + return; + if (resolveState() == Resolving) { + qCWarning(Log) << "Cyclic dependency!"; + return; + } + + Q_ASSERT(resolveState() == Unresolved); + m_resolveState = Resolving; // cycle guard + + for (auto it = m_rules.begin(); it != m_rules.end();) { + auto inc = std::dynamic_pointer_cast<IncludeRules>(*it); + if (!inc) { + ++it; + continue; + } + Context* context = nullptr; + auto myDefData = DefinitionData::get(m_def.definition()); + if (inc->definitionName().isEmpty()) { // local include + context = myDefData->contextByName(inc->contextName()); + } else { + auto def = myDefData->repo->definitionForName(inc->definitionName()); + if (!def.isValid()) { + qCWarning(Log) << "Unable to resolve external include rule for definition" << inc->definitionName() << "in" << m_def.definition().name(); + ++it; + continue; + } + auto defData = DefinitionData::get(def); + defData->load(); + if (inc->contextName().isEmpty()) + context = defData->initialContext(); + else + context = defData->contextByName(inc->contextName()); + } + if (!context) { + qCWarning(Log) << "Unable to resolve include rule for definition" << inc->contextName() << "##" << inc->definitionName() << "in" << m_def.definition().name(); + ++it; + continue; + } + context->resolveIncludes(); + + /** + * handle included attribute + * transitive closure: we might include attributes included from somewhere else + */ + if (inc->includeAttribute()) { + m_attribute = context->m_attribute; + m_attributeContext = context->m_attributeContext ? context->m_attributeContext : context; + } + + it = m_rules.erase(it); + for (const auto &rule : context->rules()) { + it = m_rules.insert(it, rule); + ++it; + } + } + + m_resolveState = Resolved; +} + +void Context::resolveAttributeFormat() +{ + /** + * try to get our format from the definition we stem from + * we need to handle included attributes via m_attributeContext + */ + if (!m_attribute.isEmpty()) { + const auto def = m_attributeContext ? m_attributeContext->m_def.definition() : m_def.definition(); + m_attributeFormat = DefinitionData::get(def)->formatByName(m_attribute); + if (!m_attributeFormat.isValid()) { + if (m_attributeContext) { + qCWarning(Log) << "Context: Unknown format" << m_attribute << "in context" << m_name << "of definition" << m_def.definition().name() << "from included context" << m_attributeContext->m_name << "of definition" << def.name(); + } else { + qCWarning(Log) << "Context: Unknown format" << m_attribute << "in context" << m_name << "of definition" << m_def.definition().name(); + } + } + } + + /** + * lookup formats for our rules + */ + for (const auto &rule : m_rules) { + rule->resolveAttributeFormat(this); + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/context_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/context_p.h new file mode 100644 index 0000000000..a034d0e27d --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/context_p.h @@ -0,0 +1,139 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_CONTEXT_P_H +#define KSYNTAXHIGHLIGHTING_CONTEXT_P_H + +#include "rule_p.h" +#include "contextswitch_p.h" +#include "definition.h" +#include "definitionref_p.h" +#include "format.h" + +#include <QString> + +#include <vector> + +QT_BEGIN_NAMESPACE +class QXmlStreamReader; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class Context +{ +public: + Context() = default; + ~Context() = default; + + Definition definition() const; + void setDefinition(const DefinitionRef &def); + + const QString &name() const + { + return m_name; + } + + const ContextSwitch &lineEndContext() const + { + return m_lineEndContext; + } + + const ContextSwitch &lineEmptyContext() const + { + return m_lineEmptyContext; + } + + bool fallthrough() const + { + return m_fallthrough; + } + + const ContextSwitch &fallthroughContext() const + { + return m_fallthroughContext; + } + + const Format &attributeFormat() const + { + return m_attributeFormat; + } + + const std::vector<Rule::Ptr> &rules() const + { + return m_rules; + } + + /** + * Returns @c true, when indentationBasedFolding is enabled for the + * associated Definition and when "noIndentationBasedFolding" is NOT set. + */ + bool indentationBasedFoldingEnabled() const; + + void load(QXmlStreamReader &reader); + void resolveContexts(); + void resolveIncludes(); + void resolveAttributeFormat(); + +private: + Q_DISABLE_COPY(Context) + + enum ResolveState { + Unknown, + Unresolved, + Resolving, + Resolved + }; + ResolveState resolveState(); + + DefinitionRef m_def; + QString m_name; + + /** + * attribute name, to lookup our format + */ + QString m_attribute; + + /** + * context to use for lookup, if != this context + */ + const Context *m_attributeContext = nullptr; + + /** + * resolved format for our attribute, done in resolveAttributeFormat + */ + Format m_attributeFormat; + + ContextSwitch m_lineEndContext; + ContextSwitch m_lineEmptyContext; + ContextSwitch m_fallthroughContext; + + std::vector<Rule::Ptr> m_rules; + + ResolveState m_resolveState = Unknown; + bool m_fallthrough = false; + bool m_noIndentationBasedFolding = false; +}; +} + +#endif // KSYNTAXHIGHLIGHTING_CONTEXT_P_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/contextswitch.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/contextswitch.cpp new file mode 100644 index 0000000000..a4d1dbbd85 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/contextswitch.cpp @@ -0,0 +1,90 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "contextswitch_p.h" +#include "definition.h" +#include "definition_p.h" +#include "repository.h" +#include "ksyntaxhighlighting_logging.h" + + +using namespace KSyntaxHighlighting; + +bool ContextSwitch::isStay() const +{ + return m_popCount == 0 && !m_context && m_contextName.isEmpty() && m_defName.isEmpty(); +} + +int ContextSwitch::popCount() const +{ + return m_popCount; +} + +Context* ContextSwitch::context() const +{ + return m_context; +} + +void ContextSwitch::parse(const QStringRef& contextInstr) +{ + if (contextInstr.isEmpty() || contextInstr == QLatin1String("#stay")) + return; + + if (contextInstr.startsWith(QLatin1String("#pop!"))) { + ++m_popCount; + m_contextName = contextInstr.mid(5).toString(); + return; + } + + if (contextInstr.startsWith(QLatin1String("#pop"))) { + ++m_popCount; + parse(contextInstr.mid(4)); + return; + } + + const auto idx = contextInstr.indexOf(QLatin1String("##")); + if (idx >= 0) { + m_contextName = contextInstr.left(idx).toString(); + m_defName = contextInstr.mid(idx + 2).toString(); + } else { + m_contextName = contextInstr.toString(); + } +} + +void ContextSwitch::resolve(const Definition &def) +{ + auto d = def; + if (!m_defName.isEmpty()) { + d = DefinitionData::get(def)->repo->definitionForName(m_defName); + auto data = DefinitionData::get(d); + data->load(); + if (m_contextName.isEmpty()) + m_context = data->initialContext(); + } + + if (!m_contextName.isEmpty()) { + m_context = DefinitionData::get(d)->contextByName(m_contextName); + if (!m_context) + qCWarning(Log) << "cannot find context" << m_contextName << "in" << def.name(); + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/contextswitch_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/contextswitch_p.h new file mode 100644 index 0000000000..669855af7a --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/contextswitch_p.h @@ -0,0 +1,56 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_CONTEXTSWITCH_P_H +#define KSYNTAXHIGHLIGHTING_CONTEXTSWITCH_P_H + +#include <QString> + +namespace KSyntaxHighlighting { + +class Context; +class Definition; + +class ContextSwitch +{ +public: + ContextSwitch() = default; + ~ContextSwitch() = default; + + bool isStay() const; + + int popCount() const; + Context* context() const; + + void parse(const QStringRef &contextInstr); + void resolve(const Definition &def); + +private: + QString m_defName; + QString m_contextName; + Context *m_context = nullptr; + int m_popCount = 0; +}; +} + +#endif // KSYNTAXHIGHLIGHTING_CONTEXTSWITCH_P_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/definition.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/definition.cpp new file mode 100644 index 0000000000..c03d23dc48 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/definition.cpp @@ -0,0 +1,798 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + Copyright (C) 2018 Dominik Haumann <dhaumann@kde.org> + Copyright (C) 2018 Christoph Cullmann <cullmann@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + + +#include "definition.h" +#include "definition_p.h" +#include "definitionref_p.h" + +#include "context_p.h" +#include "format.h" +#include "format_p.h" +#include "repository_p.h" +#include "rule_p.h" +#include "ksyntaxhighlighting_logging.h" +#include "ksyntaxhighlighting_version.h" +#include "xml_p.h" + +#include <QCoreApplication> +#include <QDebug> +#include <QFile> +#include <QHash> +#include <QJsonObject> +#include <QStringList> +#include <QVector> +#include <QXmlStreamReader> + +#include <algorithm> + +using namespace KSyntaxHighlighting; + +DefinitionData::DefinitionData() + : wordDelimiters(QStringLiteral("\t !%&()*+,-./:;<=>?[\\]^{|}~")) // must be sorted! + , wordWrapDelimiters(wordDelimiters) +{ +} + +DefinitionData::~DefinitionData() +{ + qDeleteAll(contexts); +} + +DefinitionData* DefinitionData::get(const Definition &def) +{ + return def.d.get(); +} + +Definition::Definition() : + d(new DefinitionData) +{ +} + +Definition::Definition(const Definition &other) : + d(other.d) +{ + d->q = *this; +} + +Definition::Definition(const std::shared_ptr<DefinitionData> &dd) : + d(dd) +{ +} + +Definition::~Definition() +{ +} + +Definition& Definition::operator=(const Definition &rhs) +{ + d = rhs.d; + return *this; +} + +bool Definition::operator==(const Definition &other) const +{ + return d->fileName == other.d->fileName; +} + +bool Definition::operator!=(const Definition& other) const +{ + return d->fileName != other.d->fileName; +} + +bool Definition::isValid() const +{ + return d->repo && !d->fileName.isEmpty() && !d->name.isEmpty(); +} + +QString Definition::filePath() const +{ + return d->fileName; +} + +QString Definition::name() const +{ + return d->name; +} + +QString Definition::translatedName() const +{ + return QCoreApplication::instance()->translate("Language", d->name.toUtf8().constData()); +} + +QString Definition::section() const +{ + return d->section; +} + +QString Definition::translatedSection() const +{ + return QCoreApplication::instance()->translate("Language Section", d->section.toUtf8().constData()); +} + +QVector<QString> Definition::mimeTypes() const +{ + return d->mimetypes; +} + +QVector<QString> Definition::extensions() const +{ + return d->extensions; +} + +int Definition::version() const +{ + return d->version; +} + +int Definition::priority() const +{ + return d->priority; +} + +bool Definition::isHidden() const +{ + return d->hidden; +} + +QString Definition::style() const +{ + return d->style; +} + +QString Definition::indenter() const +{ + return d->indenter; +} + +QString Definition::author() const +{ + return d->author; +} + +QString Definition::license() const +{ + return d->license; +} + +bool Definition::isWordDelimiter(QChar c) const +{ + d->load(); + return d->isWordDelimiter(c); +} + +bool Definition::isWordWrapDelimiter(QChar c) const +{ + d->load(); + return std::binary_search(d->wordWrapDelimiters.constBegin(), d->wordWrapDelimiters.constEnd(), c); +} + +bool Definition::foldingEnabled() const +{ + d->load(); + if (d->hasFoldingRegions || indentationBasedFoldingEnabled()) { + return true; + } + + // check included definitions + const auto defs = includedDefinitions(); + for (const auto &def : defs) { + if (def.foldingEnabled()) { + d->hasFoldingRegions = true; + break; + } + } + + return d->hasFoldingRegions; +} + +bool Definition::indentationBasedFoldingEnabled() const +{ + d->load(); + return d->indentationBasedFolding; +} + +QStringList Definition::foldingIgnoreList() const +{ + d->load(); + return d->foldingIgnoreList; +} + +QStringList Definition::keywordLists() const +{ + d->load(); + return d->keywordLists.keys(); +} + +QStringList Definition::keywordList(const QString& name) const +{ + d->load(); + const auto list = d->keywordList(name); + return list ? list->keywords() : QStringList(); +} + +QVector<Format> Definition::formats() const +{ + d->load(); + + // sort formats so that the order matches the order of the itemDatas in the xml files. + auto formatList = QVector<Format>::fromList(d->formats.values()); + std::sort(formatList.begin(), formatList.end(), [](const KSyntaxHighlighting::Format & lhs, const KSyntaxHighlighting::Format & rhs){ + return lhs.id() < rhs.id(); + }); + + return formatList; +} + +QVector<Definition> Definition::includedDefinitions() const +{ + d->load(); + + // init worklist and result used as guard with this definition + QVector<Definition> queue{*this}; + QVector<Definition> definitions{*this}; + while (!queue.isEmpty()) { + // Iterate all context rules to find associated Definitions. This will + // automatically catch other Definitions referenced with IncludeRuldes or ContextSwitch. + const auto definition = queue.takeLast(); + for (const auto & context : qAsConst(definition.d->contexts)) { + // handle context switch attributes of this context itself + for (const auto switchContext : {context->lineEndContext().context(), context->lineEmptyContext().context(), context->fallthroughContext().context()}) { + if (switchContext) { + if (!definitions.contains(switchContext->definition())) { + queue.push_back(switchContext->definition()); + definitions.push_back(switchContext->definition()); + } + } + } + + // handle the embedded rules + for (const auto &rule : context->rules()) { + // handle include rules like inclusion + if (!definitions.contains(rule->definition())) { + queue.push_back(rule->definition()); + definitions.push_back(rule->definition()); + } + + // handle context switch context inclusion + if (auto switchContext = rule->context().context()) { + if (!definitions.contains(switchContext->definition())) { + queue.push_back(switchContext->definition()); + definitions.push_back(switchContext->definition()); + } + } + } + } + } + + // remove the 1st entry, since it is this Definition + definitions.pop_front(); + + return definitions; +} + +QString Definition::singleLineCommentMarker() const +{ + d->load(); + return d->singleLineCommentMarker; +} + +CommentPosition Definition::singleLineCommentPosition() const +{ + d->load(); + return d->singleLineCommentPosition; +} + +QPair<QString, QString> Definition::multiLineCommentMarker() const +{ + d->load(); + return { d->multiLineCommentStartMarker, d->multiLineCommentEndMarker }; +} + +QVector<QPair<QChar, QString>> Definition::characterEncodings() const +{ + d->load(); + return d->characterEncodings; +} + +Context* DefinitionData::initialContext() const +{ + Q_ASSERT(!contexts.isEmpty()); + return contexts.first(); +} + +Context* DefinitionData::contextByName(const QString& name) const +{ + foreach (auto context, contexts) { + if (context->name() == name) + return context; + } + return nullptr; +} + +KeywordList *DefinitionData::keywordList(const QString& name) +{ + auto it = keywordLists.find(name); + return (it == keywordLists.end()) ? nullptr : &it.value(); +} + +bool DefinitionData::isWordDelimiter(QChar c) const +{ + return std::binary_search(wordDelimiters.constBegin(), wordDelimiters.constEnd(), c); +} + +Format DefinitionData::formatByName(const QString& name) const +{ + const auto it = formats.constFind(name); + if (it != formats.constEnd()) + return it.value(); + + return Format(); +} + +bool DefinitionData::isLoaded() const +{ + return !contexts.isEmpty(); +} + +bool DefinitionData::load() +{ + if (fileName.isEmpty()) + return false; + + if (isLoaded()) + return true; + + QFile file(fileName); + if (!file.open(QFile::ReadOnly)) + return false; + + QXmlStreamReader reader(&file); + while (!reader.atEnd()) { + const auto token = reader.readNext(); + if (token != QXmlStreamReader::StartElement) + continue; + + if (reader.name() == QLatin1String("highlighting")) + loadHighlighting(reader); + + else if (reader.name() == QLatin1String("general")) + loadGeneral(reader); + } + + for (auto it = keywordLists.begin(); it != keywordLists.end(); ++it) + (*it).setCaseSensitivity(caseSensitive); + + foreach (auto context, contexts) { + context->resolveContexts(); + context->resolveIncludes(); + context->resolveAttributeFormat(); + } + + Q_ASSERT(std::is_sorted(wordDelimiters.constBegin(), wordDelimiters.constEnd())); + return true; +} + +void DefinitionData::clear() +{ + // keep only name and repo, so we can re-lookup to make references persist over repo reloads + keywordLists.clear(); + qDeleteAll(contexts); + contexts.clear(); + formats.clear(); + + fileName.clear(); + section.clear(); + style.clear(); + indenter.clear(); + author.clear(); + license.clear(); + mimetypes.clear(); + extensions.clear(); + wordDelimiters = QStringLiteral("\t !%&()*+,-./:;<=>?[\\]^{|}~"); // must be sorted! + wordWrapDelimiters = wordDelimiters; + caseSensitive = Qt::CaseSensitive; + version = 0.0f; + priority = 0; + hidden = false; +} + +bool DefinitionData::loadMetaData(const QString& definitionFileName) +{ + fileName = definitionFileName; + + QFile file(definitionFileName); + if (!file.open(QFile::ReadOnly)) + return false; + + QXmlStreamReader reader(&file); + while (!reader.atEnd()) { + const auto token = reader.readNext(); + if (token != QXmlStreamReader::StartElement) + continue; + if (reader.name() == QLatin1String("language")) { + return loadLanguage(reader); + } + } + + return false; +} + +bool DefinitionData::loadMetaData(const QString &file, const QJsonObject &obj) +{ + name = obj.value(QLatin1String("name")).toString(); + section = obj.value(QLatin1String("section")).toString(); + version = obj.value(QLatin1String("version")).toInt(); + priority = obj.value(QLatin1String("priority")).toInt(); + style = obj.value(QLatin1String("style")).toString(); + author = obj.value(QLatin1String("author")).toString(); + license = obj.value(QLatin1String("license")).toString(); + indenter = obj.value(QLatin1String("indenter")).toString(); + hidden = obj.value(QLatin1String("hidden")).toBool(); + fileName = file; + + const auto exts = obj.value(QLatin1String("extensions")).toString(); + foreach (const auto &ext, exts.split(QLatin1Char(';'), QString::SkipEmptyParts)) + extensions.push_back(ext); + const auto mts = obj.value(QLatin1String("mimetype")).toString(); + foreach (const auto &mt, mts.split(QLatin1Char(';'), QString::SkipEmptyParts)) + mimetypes.push_back(mt); + + return true; +} + +bool DefinitionData::loadLanguage(QXmlStreamReader &reader) +{ + Q_ASSERT(reader.name() == QLatin1String("language")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + + if (!checkKateVersion(reader.attributes().value(QStringLiteral("kateversion")))) + return false; + + name = reader.attributes().value(QStringLiteral("name")).toString(); + section = reader.attributes().value(QStringLiteral("section")).toString(); + // toFloat instead of toInt for backward compatibility with old Kate files + version = reader.attributes().value(QStringLiteral("version")).toFloat(); + priority = reader.attributes().value(QStringLiteral("priority")).toInt(); + hidden = Xml::attrToBool(reader.attributes().value(QStringLiteral("hidden"))); + style = reader.attributes().value(QStringLiteral("style")).toString(); + indenter = reader.attributes().value(QStringLiteral("indenter")).toString(); + author = reader.attributes().value(QStringLiteral("author")).toString(); + license = reader.attributes().value(QStringLiteral("license")).toString(); + const auto exts = reader.attributes().value(QStringLiteral("extensions")).toString(); + foreach (const auto &ext, exts.split(QLatin1Char(';'), QString::SkipEmptyParts)) + extensions.push_back(ext); + const auto mts = reader.attributes().value(QStringLiteral("mimetype")).toString(); + foreach (const auto &mt, mts.split(QLatin1Char(';'), QString::SkipEmptyParts)) + mimetypes.push_back(mt); + if (reader.attributes().hasAttribute(QStringLiteral("casesensitive"))) + caseSensitive = Xml::attrToBool(reader.attributes().value(QStringLiteral("casesensitive"))) ? Qt::CaseSensitive : Qt::CaseInsensitive; + return true; +} + +void DefinitionData::loadHighlighting(QXmlStreamReader& reader) +{ + Q_ASSERT(reader.name() == QLatin1String("highlighting")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + if (reader.name() == QLatin1String("list")) { + KeywordList keywords; + keywords.load(reader); + keywordLists.insert(keywords.name(), keywords); + } else if (reader.name() == QLatin1String("contexts")) { + loadContexts(reader); + reader.readNext(); + } else if (reader.name() == QLatin1String("itemDatas")) { + loadItemData(reader); + } else { + reader.readNext(); + } + break; + case QXmlStreamReader::EndElement: + return; + default: + reader.readNext(); + break; + } + } +} + +void DefinitionData::loadContexts(QXmlStreamReader& reader) +{ + Q_ASSERT(reader.name() == QLatin1String("contexts")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + if (reader.name() == QLatin1String("context")) { + auto context = new Context; + context->setDefinition(q); + context->load(reader); + contexts.push_back(context); + } + reader.readNext(); + break; + case QXmlStreamReader::EndElement: + return; + default: + reader.readNext(); + break; + } + } +} + +void DefinitionData::loadItemData(QXmlStreamReader& reader) +{ + Q_ASSERT(reader.name() == QLatin1String("itemDatas")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + if (reader.name() == QLatin1String("itemData")) { + Format f; + auto formatData = FormatPrivate::detachAndGet(f); + formatData->definition = q; + formatData->load(reader); + formatData->id = RepositoryPrivate::get(repo)->nextFormatId(); + formats.insert(f.name(), f); + reader.readNext(); + } + reader.readNext(); + break; + case QXmlStreamReader::EndElement: + return; + default: + reader.readNext(); + break; + } + } +} + +void DefinitionData::loadGeneral(QXmlStreamReader& reader) +{ + Q_ASSERT(reader.name() == QLatin1String("general")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + reader.readNext(); + + // reference counter to count XML child elements, to not return too early + int elementRefCounter = 1; + + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + ++elementRefCounter; + + if (reader.name() == QLatin1String("keywords")) { + if (reader.attributes().hasAttribute(QStringLiteral("casesensitive"))) + caseSensitive = Xml::attrToBool(reader.attributes().value(QStringLiteral("casesensitive"))) ? Qt::CaseSensitive : Qt::CaseInsensitive; + + // adapt sorted wordDelimiters + wordDelimiters += reader.attributes().value(QStringLiteral("additionalDeliminator")); + std::sort(wordDelimiters.begin(), wordDelimiters.end()); + auto it = std::unique(wordDelimiters.begin(), wordDelimiters.end()); + wordDelimiters.truncate(std::distance(wordDelimiters.begin(), it)); + foreach (const auto c, reader.attributes().value(QLatin1String("weakDeliminator"))) + wordDelimiters.remove(c); + + // adaptWordWrapDelimiters, and sort + wordWrapDelimiters = reader.attributes().value(QStringLiteral("wordWrapDeliminator")).toString(); + std::sort(wordWrapDelimiters.begin(), wordWrapDelimiters.end()); + if (wordWrapDelimiters.isEmpty()) + wordWrapDelimiters = wordDelimiters; + } else if (reader.name() == QLatin1String("folding")) { + if (reader.attributes().hasAttribute(QStringLiteral("indentationsensitive"))) + indentationBasedFolding = Xml::attrToBool(reader.attributes().value(QStringLiteral("indentationsensitive"))); + } else if (reader.name() == QLatin1String("emptyLines")) { + loadFoldingIgnoreList(reader); + } else if (reader.name() == QLatin1String("comments")) { + loadComments(reader); + } else if (reader.name() == QLatin1String("spellchecking")) { + loadSpellchecking(reader); + } else { + reader.skipCurrentElement(); + } + reader.readNext(); + break; + case QXmlStreamReader::EndElement: + --elementRefCounter; + if (elementRefCounter == 0) + return; + reader.readNext(); + break; + default: + reader.readNext(); + break; + } + } +} + +void DefinitionData::loadComments(QXmlStreamReader &reader) +{ + Q_ASSERT(reader.name() == QLatin1String("comments")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + reader.readNext(); + + // reference counter to count XML child elements, to not return too early + int elementRefCounter = 1; + + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + ++elementRefCounter; + if (reader.name() == QLatin1String("comment")) { + const bool isSingleLine = reader.attributes().value(QStringLiteral("name")) == QStringLiteral("singleLine"); + if (isSingleLine) { + singleLineCommentMarker = reader.attributes().value(QStringLiteral("start")).toString(); + const bool afterWhiteSpace = reader.attributes().value(QStringLiteral("position")).toString() == QStringLiteral("afterwhitespace"); + singleLineCommentPosition = afterWhiteSpace ? CommentPosition::AfterWhitespace : CommentPosition::StartOfLine; + } else { + multiLineCommentStartMarker = reader.attributes().value(QStringLiteral("start")).toString(); + multiLineCommentEndMarker = reader.attributes().value(QStringLiteral("end")).toString(); + } + } + reader.readNext(); + break; + case QXmlStreamReader::EndElement: + --elementRefCounter; + if (elementRefCounter == 0) + return; + reader.readNext(); + break; + default: + reader.readNext(); + break; + } + } +} + +void DefinitionData::loadFoldingIgnoreList(QXmlStreamReader& reader) +{ + Q_ASSERT(reader.name() == QLatin1String("emptyLines")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + reader.readNext(); + + // reference counter to count XML child elements, to not return too early + int elementRefCounter = 1; + + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + ++elementRefCounter; + if (reader.name() == QLatin1String("emptyLine")) { + foldingIgnoreList << reader.attributes().value(QStringLiteral("regexpr")).toString(); + } + reader.readNext(); + break; + case QXmlStreamReader::EndElement: + --elementRefCounter; + if (elementRefCounter == 0) + return; + reader.readNext(); + break; + default: + reader.readNext(); + break; + } + } +} + +void DefinitionData::loadSpellchecking(QXmlStreamReader &reader) +{ + Q_ASSERT(reader.name() == QLatin1String("spellchecking")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + reader.readNext(); + + // reference counter to count XML child elements, to not return too early + int elementRefCounter = 1; + + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + ++elementRefCounter; + if (reader.name() == QLatin1String("encoding")) { + const auto charRef = reader.attributes().value(QStringLiteral("char")); + if (!charRef.isEmpty()) { + const auto str = reader.attributes().value(QStringLiteral("string")).toString(); + characterEncodings.push_back({ charRef[0], str }); + } + } + reader.readNext(); + break; + case QXmlStreamReader::EndElement: + --elementRefCounter; + if (elementRefCounter == 0) + return; + reader.readNext(); + break; + default: + reader.readNext(); + break; + } + } +} + +bool DefinitionData::checkKateVersion(const QStringRef& verStr) +{ + const auto idx = verStr.indexOf(QLatin1Char('.')); + if (idx <= 0) { + qCWarning(Log) << "Skipping" << fileName << "due to having no valid kateversion attribute:" << verStr; + return false; + } + const auto major = verStr.left(idx).toInt(); + const auto minor = verStr.mid(idx + 1).toInt(); + + if (major > SyntaxHighlighting_VERSION_MAJOR || (major == SyntaxHighlighting_VERSION_MAJOR && minor > SyntaxHighlighting_VERSION_MINOR)) { + qCWarning(Log) << "Skipping" << fileName << "due to being too new, version:" << verStr; + return false; + } + + return true; +} + +quint16 DefinitionData::foldingRegionId(const QString &foldName) +{ + hasFoldingRegions = true; + return RepositoryPrivate::get(repo)->foldingRegionId(name, foldName); +} + +DefinitionRef::DefinitionRef() +{ +} + +DefinitionRef::DefinitionRef(const Definition &def) : + d(def.d) +{ +} + +DefinitionRef::~DefinitionRef() +{ +} + +DefinitionRef& DefinitionRef::operator=(const Definition &def) +{ + d = def.d; + return *this; +} + +Definition DefinitionRef::definition() const +{ + if (!d.expired()) + return Definition(d.lock()); + return Definition(); +} + +bool DefinitionRef::operator==(const DefinitionRef &other) const +{ + if (d.expired() != other.d.expired()) { + return false; + } + + return d.expired() || d.lock().get() == other.d.lock().get(); +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/definition.h b/src/libs/3rdparty/syntax-highlighting/src/lib/definition.h new file mode 100644 index 0000000000..6f0dba9a45 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/definition.h @@ -0,0 +1,400 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_DEFINITION_H +#define KSYNTAXHIGHLIGHTING_DEFINITION_H + +#include "ksyntaxhighlighting_export.h" + +#include <QTypeInfo> +#include <QPair> + +#include <memory> + +QT_BEGIN_NAMESPACE +class QChar; +class QString; +class QStringList; +template <typename T> class QVector; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class Context; +class Format; +class KeywordList; + +class DefinitionData; + +/** + * Defines the insert position when commenting code. + * @since 5.50 + * @see Definition::singleLineCommentPosition() + */ +enum class CommentPosition +{ + //! The comment marker is inserted at the beginning of a line at column 0 + StartOfLine = 0, + //! The comment marker is inserted after leading whitespaces right befire + //! the first non-whitespace character. + AfterWhitespace +}; + +/** + * Represents a syntax definition. + * + * @section def_intro Introduction to Definitions + * + * A Definition is the short term for a syntax highlighting definition. It + * typically is defined in terms of an XML syntax highlighting file, containing + * all information about a particular syntax highlighting. This includes the + * highlighting of keywords, information about code folding regions, and + * indentation preferences. + * + * @section def_info General Header Data + * + * Each Definition contains a non-translated unique name() and a section(). + * In addition, for putting this information e.g. into menus, the functions + * translatedName() and translatedSection() are provided. However, if isHidden() + * returns @e true, the Definition should not be visible in the UI. The location + * of the Definition can be obtained through filePath(), which either is the + * location on disk or a path to a compiled-in Qt resource. + * + * The supported files of a Definition are defined by the list of extensions(), + * and additionally by the list of mimeTypes(). Note, that extensions() returns + * wildcards that need to be matched against the filename of the file that + * requires highlighting. If multiple Definition%s match the file, then the one + * with higher priority() wins. + * + * @section def_metadata Advanced Definition Data + * + * Advanced text editors such as Kate require additional information from a + * Definition. For instance, foldingEnabled() defines whether a Definition has + * code folding regions that can be shown in a code folding pane. Or + * singleLineCommentMarker() and multiLineCommentMarker() provide comment + * markers that can be used for commenting/uncommenting code. Similarly, + * formats() returns a list of Format items defined by this Definition (which + * equal the itemDatas of a highlighing definition file). includedDefinitions() + * returns a list of all included Definition%s referenced by this Definition via + * the rule IncludeRules, which is useful for displaying all Format items for + * color configuration in the user interface. + * + * @see Repository + * @since 5.28 + */ +class KSYNTAXHIGHLIGHTING_EXPORT Definition +{ +public: + /** + * Default constructor, creating an empty (invalid) Definition instance. + * isValid() for this instance returns @e false. + * + * Use the Repository instead to obtain valid instances. + */ + Definition(); + + /** + * Copy constructor. + * Both this definition as well as @p other share the Definition data. + */ + Definition(const Definition &other); + + /** + * Destructor. + */ + ~Definition(); + + /** + * Assignment operator. + * Both this definition as well as @p rhs share the Definition data. + */ + Definition& operator=(const Definition &rhs); + + /** + * Checks two definitions for equality. + */ + bool operator==(const Definition &other) const; + + /** + * Checks two definitions for inequality. + */ + bool operator!=(const Definition &other) const; + + /** + * @name General Header Data + * + * @{ + */ + + /** + * Checks whether this object refers to a valid syntax definition. + */ + bool isValid() const; + + /** + * Returns the full path to the definition XML file containing + * the syntax definition. Note that this can be a path to QRC content. + */ + QString filePath() const; + + /** Name of the syntax. + * Used for internal references, prefer translatedName() for display. + */ + QString name() const; + + /** + * Translated name for display. + */ + QString translatedName() const; + + /** + * The group this syntax definition belongs to. + * For display, consider translatedSection(). + */ + QString section() const; + + /** + * Translated group name for display. + */ + QString translatedSection() const; + + /** + * Mime types associated with this syntax definition. + */ + QVector<QString> mimeTypes() const; + + /** + * File extensions associated with this syntax definition. + * The returned list contains wildcards. + */ + QVector<QString> extensions() const; + + /** + * Returns the definition version. + */ + int version() const; + + /** + * Returns the definition priority. + * A Definition with higher priority wins over Definitions with lower priorities. + */ + int priority() const; + + /** + * Returns @c true if this is an internal definition that should not be + * displayed to the user. + */ + bool isHidden() const; + + /** + * Generalized language style, used for indentation. + */ + QString style() const; + + /** + * Indentation style to be used for this syntax. + */ + QString indenter() const; + + /** + * Name and email of the author of this syntax definition. + */ + QString author() const; + + /** + * License of this syntax definition. + */ + QString license() const; + + /** + * @} + * + * @name Advanced Definition Data + */ + + /** + * Returns whether the character @p c is a word delimiter. + * A delimiter defines whether a characters is a word boundary. Internally, + * delimiters are used for matching keyword lists. As example, typically the + * dot '.' is a word delimiter. However, if you have a keyword in a keyword + * list that contains a dot, you have to add the dot to the + * @e weakDeliminator attribute of the @e general section in your + * highlighting definition. Similarly, sometimes additional delimiters are + * required, which can be specified in @e additionalDeliminator. + * + * Checking whether a character is a delimiter is useful for instance if + * text is selected with double click. Typically, the whole word should be + * selected in this case. Similarly to the example above, the dot '.' + * usually acts as word delimiter. However, using this function you can + * implement text selection in such a way that keyword lists are correctly + * selected. + * + * @note By default, the list of delimiters contains the following + * characters: \\t !%&()*+,-./:;<=>?[\\]^{|}~ + * + * @since 5.50 + * @see isWordWrapDelimiter() + */ + bool isWordDelimiter(QChar c) const; + + /** + * Returns whether it is safe to break a line at before the character @c. + * This is useful when wrapping a line e.g. by applying static word wrap. + * + * As example, consider the LaTeX code + * @code + * \command1\command2 + * @endcode + * Applying static word wrap could lead to the following code: + * @code + * \command1\ + * command2 + * @endcode + * command2 without a leading backslash is invalid in LaTeX. If '\\' is set + * as word wrap delimiter, isWordWrapDelimiter('\\') then returns true, + * meaning that it is safe to break the line before @c. The resulting code + * then would be + * @code + * \command1 + * \command2 + * @endcode + * + * @note By default, the word wrap delimiters are equal to the word + * delimiters in isWordDelimiter(). + * + * @since 5.50 + * @see isWordDelimiter() + */ + bool isWordWrapDelimiter(QChar c) const; + + /** + * Returns whether the highlighting supports code folding. + * Code folding is supported either if the highlighting defines code folding + * regions or if indentationBasedFoldingEnabled() returns @e true. + * @since 5.50 + * @see indentationBasedFoldingEnabled() + */ + bool foldingEnabled() const; + + /** + * Returns whether indentation-based folding is enabled. + * An example for indentation-based folding is Python. + * When indentation-based folding is enabled, make sure to also check + * foldingIgnoreList() for lines that should be treated as empty. + * + * @see foldingIgnoreList(), State::indentationBasedFoldingEnabled() + */ + bool indentationBasedFoldingEnabled() const; + + /** + * If indentationBasedFoldingEnabled() returns @c true, this function returns + * a list of regular expressions that represent empty lines. That is, all + * lines matching entirely one of the regular expressions should be treated + * as empty lines when calculating the indentation-based folding ranges. + * + * @note This list is only of relevance, if indentationBasedFoldingEnabled() + * returns @c true. + * + * @see indentationBasedFoldingEnabled() + */ + QStringList foldingIgnoreList() const; + + /** + * Returns the section names of keywords. + * @since 5.49 + * @see keywordList() + */ + QStringList keywordLists() const; + + /** + * Returns the list of keywords for the keyword list @p name. + * @since 5.49 + * @see keywordLists() + */ + QStringList keywordList(const QString& name) const; + + /** + * Returns a list of all Format items used by this definition. + * The order of the Format items equals the order of the itemDatas in the xml file. + * @since 5.49 + */ + QVector<Format> formats() const; + + /** + * Returns a list of Definitions that are referenced with the IncludeRules rule. + * The returned list does not include this Definition. In case no other + * Definitions are referenced via IncludeRules, the returned list is empty. + * + * @since 5.49 + */ + QVector<Definition> includedDefinitions() const; + + /** + * Returns the marker that starts a single line comment. + * For instance, in C++ the single line comment marker is "//". + * @since 5.50 + * @see singleLineCommentPosition(); + */ + QString singleLineCommentMarker() const; + + /** + * Returns the insert position of the comment marker for sinle line + * comments. + * @since 5.50 + * @see singleLineCommentMarker(); + */ + CommentPosition singleLineCommentPosition() const; + + /** + * Returns the markers that start and end multiline comments. + * For instance, in XML this is defined as "<!--" and "-->". + * @since 5.50 + */ + QPair<QString, QString> multiLineCommentMarker() const; + + /** + * Returns a list of character/string mapping that can be used for spell + * checking. This is useful for instance when spell checking LaTeX, where + * the string \"{A} represents the character Ä. + * @since 5.50 + */ + QVector<QPair<QChar, QString>> characterEncodings() const; + + /** + * @} + */ + +private: + friend class DefinitionData; + friend class DefinitionRef; + explicit Definition(const std::shared_ptr<DefinitionData> &dd); + std::shared_ptr<DefinitionData> d; +}; + +} + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO(KSyntaxHighlighting::Definition, Q_MOVABLE_TYPE); +QT_END_NAMESPACE + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/definition_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/definition_p.h new file mode 100644 index 0000000000..ab95a9552c --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/definition_p.h @@ -0,0 +1,111 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_DEFINITION_P_H +#define KSYNTAXHIGHLIGHTING_DEFINITION_P_H + +#include "definitionref_p.h" +#include "definition.h" + +#include <QHash> +#include <QString> +#include <QVector> + +QT_BEGIN_NAMESPACE +class QXmlStreamReader; +class QJsonObject; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class Repository; + +class DefinitionData +{ +public: + DefinitionData(); + ~DefinitionData(); + + static DefinitionData* get(const Definition &def); + + bool isLoaded() const; + bool loadMetaData(const QString &definitionFileName); + bool loadMetaData(const QString &fileName, const QJsonObject &obj); + + void clear(); + + bool load(); + bool loadLanguage(QXmlStreamReader &reader); + void loadHighlighting(QXmlStreamReader &reader); + void loadContexts(QXmlStreamReader &reader); + void loadItemData(QXmlStreamReader &reader); + void loadGeneral(QXmlStreamReader &reader); + void loadComments(QXmlStreamReader &reader); + void loadFoldingIgnoreList(QXmlStreamReader &reader); + void loadSpellchecking(QXmlStreamReader &reader); + bool checkKateVersion(const QStringRef &verStr); + + KeywordList *keywordList(const QString &name); + bool isWordDelimiter(QChar c) const; + + Context* initialContext() const; + Context* contextByName(const QString &name) const; + + Format formatByName(const QString &name) const; + + quint16 foldingRegionId(const QString &foldName); + + DefinitionRef q; + + Repository *repo = nullptr; + QHash<QString, KeywordList> keywordLists; + QVector<Context*> contexts; + QHash<QString, Format> formats; + QString wordDelimiters; + QString wordWrapDelimiters; + bool hasFoldingRegions = false; + bool indentationBasedFolding = false; + QStringList foldingIgnoreList; + QString singleLineCommentMarker; + CommentPosition singleLineCommentPosition = CommentPosition::StartOfLine; + QString multiLineCommentStartMarker; + QString multiLineCommentEndMarker; + QVector<QPair<QChar, QString>> characterEncodings; + + QString fileName; + QString name = QStringLiteral(QT_TRANSLATE_NOOP("Syntax highlighting", "None")); + QString section; + QString style; + QString indenter; + QString author; + QString license; + QVector<QString> mimetypes; + QVector<QString> extensions; + Qt::CaseSensitivity caseSensitive = Qt::CaseSensitive; + int version = 0; + int priority = 0; + bool hidden = false; +}; +} + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/definitiondownloader.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/definitiondownloader.cpp new file mode 100644 index 0000000000..4c3e5f5f1e --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/definitiondownloader.cpp @@ -0,0 +1,193 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "definitiondownloader.h" +#include "definition.h" +#include "repository.h" +#include "ksyntaxhighlighting_logging.h" +#include "ksyntaxhighlighting_version.h" + +#include <QDebug> +#include <QDir> +#include <QFile> +#include <QNetworkAccessManager> +#include <QNetworkReply> +#include <QNetworkRequest> +#include <QStandardPaths> +#include <QTimer> +#include <QXmlStreamReader> + +using namespace KSyntaxHighlighting; + +class KSyntaxHighlighting::DefinitionDownloaderPrivate +{ +public: + DefinitionDownloader *q; + Repository *repo; + QNetworkAccessManager *nam; + QString downloadLocation; + int pendingDownloads; + bool needsReload; + + void definitionListDownloadFinished(QNetworkReply *reply); + void updateDefinition(QXmlStreamReader &parser); + void downloadDefinition(const QUrl &url); + void downloadDefinitionFinished(QNetworkReply *reply); + void checkDone(); +}; + +void DefinitionDownloaderPrivate::definitionListDownloadFinished(QNetworkReply *reply) +{ + if (reply->error() != QNetworkReply::NoError) { + qCWarning(Log) << reply->error(); + emit q->done(); // TODO return error + return; + } + + QXmlStreamReader parser(reply); + while (!parser.atEnd()) { + switch (parser.readNext()) { + case QXmlStreamReader::StartElement: + if (parser.name() == QLatin1String("Definition")) + updateDefinition(parser); + break; + default: + break; + } + } + + if (pendingDownloads == 0) + emit q->informationMessage(QObject::tr("All syntax definitions are up-to-date.")); + checkDone(); +} + +void DefinitionDownloaderPrivate::updateDefinition(QXmlStreamReader &parser) +{ + const auto name = parser.attributes().value(QLatin1String("name")); + if (name.isEmpty()) + return; + + auto localDef = repo->definitionForName(name.toString()); + if (!localDef.isValid()) { + emit q->informationMessage(QObject::tr("Downloading new syntax definition for '%1'...").arg(name.toString())); + downloadDefinition(QUrl(parser.attributes().value(QLatin1String("url")).toString())); + return; + } + + const auto version = parser.attributes().value(QLatin1String("version")); + if (localDef.version() < version.toFloat()) { + emit q->informationMessage(QObject::tr("Updating syntax definition for '%1' to version %2...").arg(name.toString(), version.toString())); + downloadDefinition(QUrl(parser.attributes().value(QLatin1String("url")).toString())); + } +} + +void DefinitionDownloaderPrivate::downloadDefinition(const QUrl& downloadUrl) +{ + if (!downloadUrl.isValid()) + return; + auto url = downloadUrl; + if (url.scheme() == QLatin1String("http")) + url.setScheme(QStringLiteral("https")); + + QNetworkRequest req(url); + auto reply = nam->get(req); + QObject::connect(reply, &QNetworkReply::finished, q, [this, reply]() { + downloadDefinitionFinished(reply); + }); + ++pendingDownloads; + needsReload = true; +} + +void DefinitionDownloaderPrivate::downloadDefinitionFinished(QNetworkReply *reply) +{ + --pendingDownloads; + if (reply->error() != QNetworkReply::NoError) { + qCWarning(Log) << "Failed to download definition file" << reply->url() << reply->error(); + checkDone(); + return; + } + + // handle redirects + // needs to be done manually, download server redirects to unsafe http links + const auto redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); + if (!redirectUrl.isEmpty()) { + downloadDefinition(reply->url().resolved(redirectUrl)); + checkDone(); + return; + } + + QFile file(downloadLocation + QLatin1Char('/') + reply->url().fileName()); + if (!file.open(QFile::WriteOnly)) { + qCWarning(Log) << "Failed to open" << file.fileName() << file.error(); + } else { + file.write(reply->readAll()); + } + checkDone(); +} + +void DefinitionDownloaderPrivate::checkDone() +{ + if (pendingDownloads == 0) { + if (needsReload) + repo->reload(); + + emit QTimer::singleShot(0, q, &DefinitionDownloader::done); + } +} + + +DefinitionDownloader::DefinitionDownloader(Repository *repo, QObject *parent) + : QObject(parent) + , d(new DefinitionDownloaderPrivate()) +{ + Q_ASSERT(repo); + + d->q = this; + d->repo = repo; + d->nam = new QNetworkAccessManager(this); + d->pendingDownloads = 0; + d->needsReload = false; + + d->downloadLocation = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/org.kde.syntax-highlighting/syntax"); + QDir().mkpath(d->downloadLocation); + Q_ASSERT(QFile::exists(d->downloadLocation)); +} + +DefinitionDownloader::~DefinitionDownloader() +{ +} + +void DefinitionDownloader::start() +{ + const QString url = QLatin1String("https://www.kate-editor.org/syntax/update-") + + QString::number(SyntaxHighlighting_VERSION_MAJOR) + + QLatin1Char('.') + + QString::number(SyntaxHighlighting_VERSION_MINOR) + + QLatin1String(".xml"); + auto req = QNetworkRequest(QUrl(url)); + req.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); + auto reply = d->nam->get(req); + QObject::connect(reply, &QNetworkReply::finished, this, [=]() { + d->definitionListDownloadFinished(reply); + }); +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/definitiondownloader.h b/src/libs/3rdparty/syntax-highlighting/src/lib/definitiondownloader.h new file mode 100644 index 0000000000..06e28f6a65 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/definitiondownloader.h @@ -0,0 +1,113 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_DEFINITIONDOWNLOADER_H +#define KSYNTAXHIGHLIGHTING_DEFINITIONDOWNLOADER_H + +#include "ksyntaxhighlighting_export.h" + +#include <QObject> +#include <memory> + +namespace KSyntaxHighlighting { + +class DefinitionDownloaderPrivate; +class Repository; + +/** + * Helper class to download definition file updates. + * + * With the DefinitionDownloader you can download new and update existing + * syntax highlighting definition files (xml files). + * + * An example that updates the highlighting Definition%s and prints the current + * update progress to the console may look as follows: + * + * @code + * auto downloader = new DefinitionDownloader(repo); // repo is a pointer to a Repository + * + * // print update progress to console + * QObject::connect(downloader, &DefinitionDownloader::informationMessage, [](const QString &msg) { + * std::cout << qPrintable(msg) << std::endl; + * }); + * + * // connect to signal done to delete the downloader later + * QObject::connect(downloader, &DefinitionDownloader::done, + * downloader, &DefinitionDownloader::deleteLater); + * downloader->start(); + * @endcode + * + * @see Repository, Definition + * @since 5.28 + */ +class KSYNTAXHIGHLIGHTING_EXPORT DefinitionDownloader : public QObject +{ + Q_OBJECT +public: + /** + * Constructor. + * The Repository @p repo is used as reference to compare the versions of + * the existing Definition%s with the ones that are available online. + * + * Optionally, @p parent is a pointer to the owner of this instance. + */ + explicit DefinitionDownloader(Repository *repo, QObject *parent = nullptr); + + /** + * Destructor. + */ + ~DefinitionDownloader(); + + /** + * Starts the update procedure. + * Once no more updates are available (i.e. either the local definition files + * are up-to-date, or all updates have been downloaded), the signal done() + * is emitted. + * + * During the update process, the signal informationMessage() can be used + * to display the current update progress to the user. + * + * @see done(), informationMessage() + */ + void start(); + +Q_SIGNALS: + /** + * Prints the information about the current state of the definition files. + * If all files are up-to-date, this signal is emitted informing you that + * all highlighting files are up-to-date. If there are updates, this signal + * is emitted for each update being downloaded. + */ + void informationMessage(const QString &msg); + + /** + * This signal is emitted when there are no pending downloads anymore. + */ + void done(); + +private: + std::unique_ptr<DefinitionDownloaderPrivate> d; +}; +} + +#endif // KSYNTAXHIGHLIGHTING_DEFINITIONDOWNLOADER_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/definitionref_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/definitionref_p.h new file mode 100644 index 0000000000..08604a4821 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/definitionref_p.h @@ -0,0 +1,74 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_DEFINITIONREF_P_H +#define KSYNTAXHIGHLIGHTING_DEFINITIONREF_P_H + +#include <memory> + +namespace KSyntaxHighlighting { + +class Definition; +class DefinitionData; +class DefinitionPrivate; + +/** Weak reference for Definition instances. + * + * This must be used when holding Definition instances + * in objects hold directly or indirectly by Definition + * to avoid reference count loops and thus memory leaks. + * + * @internal + */ +class DefinitionRef +{ +public: + DefinitionRef(); + explicit DefinitionRef(const Definition &def); + ~DefinitionRef(); + DefinitionRef& operator=(const Definition &def); + + Definition definition() const; + + /** + * Checks two definition references for equality. + */ + bool operator==(const DefinitionRef &other) const; + + /** + * Checks two definition references for inequality. + */ + bool operator!=(const DefinitionRef &other) const + { + return !(*this == other); + } + +private: + friend class DefinitionData; + std::weak_ptr<DefinitionData> d; +}; + +} + +#endif + diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/foldingregion.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/foldingregion.cpp new file mode 100644 index 0000000000..e8f89bd788 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/foldingregion.cpp @@ -0,0 +1,60 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "foldingregion.h" + +using namespace KSyntaxHighlighting; + +static_assert(sizeof(FoldingRegion) == 2, "FoldingRegion is size-sensitive to frequent use in KTextEditor!"); + +FoldingRegion::FoldingRegion() : + m_type(None), + m_id(0) +{ +} + +FoldingRegion::FoldingRegion(Type type, quint16 id) : + m_type(type), + m_id(id) +{ +} + +bool FoldingRegion::operator==(const FoldingRegion &other) const +{ + return m_id == other.m_id && m_type == other.m_type; +} + +bool FoldingRegion::isValid() const +{ + return type() != None; +} + +quint16 FoldingRegion::id() const +{ + return m_id; +} + +FoldingRegion::Type FoldingRegion::type() const +{ + return static_cast<FoldingRegion::Type>(m_type); +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/foldingregion.h b/src/libs/3rdparty/syntax-highlighting/src/lib/foldingregion.h new file mode 100644 index 0000000000..074b9478be --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/foldingregion.h @@ -0,0 +1,108 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_FOLDINGREGION_H +#define KSYNTAXHIGHLIGHTING_FOLDINGREGION_H + +#include "ksyntaxhighlighting_export.h" + +#include <QTypeInfo> + +namespace KSyntaxHighlighting { + +/** Represents a begin or end of a folding region. + * @since 5.28 */ +class KSYNTAXHIGHLIGHTING_EXPORT FoldingRegion +{ +public: + /** + * Defines whether a FoldingRegion starts or ends a folding region. + */ + enum Type { + //! Used internally as indicator for invalid FoldingRegion%s. + None, + //! Indicates the start of a FoldingRegion. + Begin, + //! Indicates the end of a FoldingRegion. + End + }; + + /** + * Constructs an invalid folding region, meaning that isValid() returns @e false. + * To obtain valid instances, see AbstractHighlighter::applyFolding(). + */ + FoldingRegion(); + + /** Compares two FoldingRegion instances for equality. */ + bool operator==(const FoldingRegion &other) const; + + /** + * Returns @c true if this is a valid folding region. + * A valid FoldingRegion is defined by a type() other than Type::None. + * + * @note The FoldingRegion%s passed in AbstractHighlighter::applyFolding() + * are always valid. + */ + bool isValid() const; + + /** + * Returns a unique identifier for this folding region. + * + * As example, the C/C++ highlighter starts and ends a folding region for + * scopes, e.g.: + * \code + * void foo() { // '{' starts a folding region + * if (bar()) { // '{' starts a (nested) folding region + * } // '}' ends the (nested) folding region + * } // '}' ends the outer folding region + * \endcode + * In this example, all braces '{' and '}' have the same id(), meaning that + * if you want to find the matching closing region for the first opening + * brace, you need to do kind of a reference counting to find the correct + * closing brace. + */ + quint16 id() const; + + /** + * Returns whether this is the begin or end of a region. + * + * @note The FoldingRegion%s passed in AbstractHighlighter::applyFolding() + * are always valid, i.e. either Type::Begin or Type::End. + */ + Type type() const; + +private: + friend class Rule; + FoldingRegion(Type type, quint16 id); + + quint16 m_type : 2; + quint16 m_id: 14; +}; + +} + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO(KSyntaxHighlighting::FoldingRegion, Q_PRIMITIVE_TYPE); +QT_END_NAMESPACE + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/format.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/format.cpp new file mode 100644 index 0000000000..397da6d700 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/format.cpp @@ -0,0 +1,264 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "format.h" +#include "format_p.h" +#include "definition.h" +#include "definitionref_p.h" +#include "textstyledata_p.h" +#include "themedata_p.h" +#include "xml_p.h" + +#include <QColor> +#include <QDebug> +#include <QMetaEnum> +#include <QXmlStreamReader> + +using namespace KSyntaxHighlighting; + +static Theme::TextStyle stringToDefaultFormat(const QStringRef &str) +{ + if (!str.startsWith(QLatin1String("ds"))) + return Theme::Normal; + + static const auto idx = Theme::staticMetaObject.indexOfEnumerator("TextStyle"); + Q_ASSERT(idx >= 0); + const auto metaEnum = Theme::staticMetaObject.enumerator(idx); + + bool ok = false; + const auto value = metaEnum.keyToValue(str.mid(2).toLatin1().constData(), &ok); + if (!ok || value < 0) + return Theme::Normal; + return static_cast<Theme::TextStyle>(value); +} + +FormatPrivate* FormatPrivate::detachAndGet(Format &format) +{ + format.d.detach(); + return format.d.data(); +} + +TextStyleData FormatPrivate::styleOverride(const Theme &theme) const +{ + const auto themeData = ThemeData::get(theme); + if (themeData) + return themeData->textStyleOverride(definition.definition().name(), name); + return TextStyleData(); +} + +static QExplicitlySharedDataPointer<FormatPrivate> &sharedDefaultPrivate() +{ + static QExplicitlySharedDataPointer<FormatPrivate> def(new FormatPrivate); + return def; +} + +Format::Format() : d(sharedDefaultPrivate()) +{ +} + +Format::Format(const Format &other) : + d(other.d) +{ +} + +Format::~Format() +{ +} + +Format& Format::operator=(const Format& other) +{ + d = other.d; + return *this; +} + +bool Format::isValid() const +{ + return !d->name.isEmpty(); +} + +QString Format::name() const +{ + return d->name; +} + +quint16 Format::id() const +{ + return d->id; +} + +Theme::TextStyle Format::textStyle() const +{ + return d->defaultStyle; +} + +bool Format::isDefaultTextStyle(const Theme &theme) const +{ + return (!hasTextColor(theme)) + && (!hasBackgroundColor(theme)) + && (selectedTextColor(theme) == theme.selectedTextColor(Theme::Normal)) + && (selectedBackgroundColor(theme) == theme.selectedBackgroundColor(Theme::Normal)) + && (isBold(theme) == theme.isBold(Theme::Normal)) + && (isItalic(theme) == theme.isItalic(Theme::Normal)) + && (isUnderline(theme) == theme.isUnderline(Theme::Normal)) + && (isStrikeThrough(theme) == theme.isStrikeThrough(Theme::Normal)); +} + +bool Format::hasTextColor(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + return textColor(theme) != theme.textColor(Theme::Normal) + && (d->style.textColor || theme.textColor(d->defaultStyle) || overrideStyle.textColor); +} + +QColor Format::textColor(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + if (overrideStyle.textColor) + return overrideStyle.textColor; + return d->style.textColor ? d->style.textColor : theme.textColor(d->defaultStyle); +} + +QColor Format::selectedTextColor(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + if (overrideStyle.selectedTextColor) + return overrideStyle.selectedTextColor; + return d->style.selectedTextColor ? d->style.selectedTextColor : theme.selectedTextColor(d->defaultStyle); +} + +bool Format::hasBackgroundColor(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + return backgroundColor(theme) != theme.backgroundColor(Theme::Normal) + && (d->style.backgroundColor || theme.backgroundColor(d->defaultStyle) || overrideStyle.backgroundColor); +} + +QColor Format::backgroundColor(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + if (overrideStyle.backgroundColor) + return overrideStyle.backgroundColor; + return d->style.backgroundColor ? d->style.backgroundColor : theme.backgroundColor(d->defaultStyle); +} + +QColor Format::selectedBackgroundColor(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + if (overrideStyle.selectedBackgroundColor) + return overrideStyle.selectedBackgroundColor; + return d->style.selectedBackgroundColor ? d->style.selectedBackgroundColor + : theme.selectedBackgroundColor(d->defaultStyle); +} + +bool Format::isBold(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + if (overrideStyle.hasBold) + return overrideStyle.bold; + return d->style.hasBold ? d->style.bold : theme.isBold(d->defaultStyle); +} + +bool Format::isItalic(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + if (overrideStyle.hasItalic) + return overrideStyle.italic; + return d->style.hasItalic ? d->style.italic : theme.isItalic(d->defaultStyle); +} + +bool Format::isUnderline(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + if (overrideStyle.hasUnderline) + return overrideStyle.underline; + return d->style.hasUnderline ? d->style.underline : theme.isUnderline(d->defaultStyle); +} + +bool Format::isStrikeThrough(const Theme &theme) const +{ + const auto overrideStyle = d->styleOverride(theme); + if (overrideStyle.hasStrikeThrough) + return overrideStyle.strikeThrough; + return d->style.hasStrikeThrough ? d->style.strikeThrough : theme.isStrikeThrough(d->defaultStyle); +} + +bool Format::spellCheck() const +{ + return d->spellCheck; +} + + +void FormatPrivate::load(QXmlStreamReader& reader) +{ + name = reader.attributes().value(QStringLiteral("name")).toString(); + defaultStyle = stringToDefaultFormat(reader.attributes().value(QStringLiteral("defStyleNum"))); + + QStringRef ref = reader.attributes().value(QStringLiteral("color")); + if (!ref.isEmpty()) { + style.textColor = QColor(ref.toString()).rgba(); + } + + ref = reader.attributes().value(QStringLiteral("selColor")); + if (!ref.isEmpty()) { + style.selectedTextColor = QColor(ref.toString()).rgba(); + } + + ref = reader.attributes().value(QStringLiteral("backgroundColor")); + if (!ref.isEmpty()) { + style.backgroundColor = QColor(ref.toString()).rgba(); + } + + ref = reader.attributes().value(QStringLiteral("selBackgroundColor")); + if (!ref.isEmpty()) { + style.selectedBackgroundColor = QColor(ref.toString()).rgba(); + } + + ref = reader.attributes().value(QStringLiteral("italic")); + if (!ref.isEmpty()) { + style.hasItalic = true; + style.italic = Xml::attrToBool(ref); + } + + ref = reader.attributes().value(QStringLiteral("bold")); + if (!ref.isEmpty()) { + style.hasBold = true; + style.bold = Xml::attrToBool(ref); + } + + ref = reader.attributes().value(QStringLiteral("underline")); + if (!ref.isEmpty()) { + style.hasUnderline = true; + style.underline = Xml::attrToBool(ref); + } + + ref = reader.attributes().value(QStringLiteral("strikeOut")); + if (!ref.isEmpty()) { + style.hasStrikeThrough = true; + style.strikeThrough = Xml::attrToBool(ref); + } + + ref = reader.attributes().value(QStringLiteral("spellChecking")); + if (!ref.isEmpty()) { + spellCheck = Xml::attrToBool(ref); + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/format.h b/src/libs/3rdparty/syntax-highlighting/src/lib/format.h new file mode 100644 index 0000000000..24c58e73f6 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/format.h @@ -0,0 +1,152 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_FORMAT_H +#define KSYNTAXHIGHLIGHTING_FORMAT_H + +#include "ksyntaxhighlighting_export.h" +#include "theme.h" + +#include <QExplicitlySharedDataPointer> +#include <QTypeInfo> + +QT_BEGIN_NAMESPACE +class QColor; +class QString; +class QXmlStreamReader; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class DefinitionRef; +class FormatPrivate; + +/** Describes the format to be used for a specific text fragment. + * The actual format used for displaying is merged from the format information + * in the syntax definition file, and a theme. + * + * @see Theme + * @since 5.28 + */ +class KSYNTAXHIGHLIGHTING_EXPORT Format +{ +public: + /** Creates an empty/invalid format. */ + Format(); + Format(const Format &other); + ~Format(); + + Format& operator=(const Format &other); + + /** Returns @c true if this is a valid format, ie. one that + * was read from a syntax definition file. + */ + bool isValid() const; + + /** The name of this format as used in the syntax definition file. */ + QString name() const; + + /** Returns a unique identifier of this format. + * This is useful for efficient storing of formats in a text line. The + * identifier is unique per Repository instance, but will change when + * the repository is reloaded (which also invalidatess the corresponding + * Definition anyway). + */ + quint16 id() const; + + /** Returns the underlying TextStyle of this Format. + * Every Theme::TextStyle is visually defined by a Theme. A Format uses one + * of the Theme::TextStyle%s and on top allows modifications such as setting + * a different foreground color etc. + * @see Theme::TextStyle + * @since 5.49 + */ + Theme::TextStyle textStyle() const; + + /** Returns @c true if the combination of this format and the theme @p theme + * do not change the default text format in any way. + * This is useful for output formats where changing formatting implies cost, + * and thus benefit from optimizing the default case of not having any format + * applied. If you make use of this, make sure to set the default text style + * to what the corresponding theme sets for Theme::Normal. + */ + bool isDefaultTextStyle(const Theme &theme) const; + + /** Returns @c true if the combination of this format and the theme @p theme + * change the foreground color compared to the default format. + */ + bool hasTextColor(const Theme &theme) const; + /** Returns the foreground color of the combination of this format and the + * given theme. + */ + QColor textColor(const Theme &theme) const; + /** Returns the foreground color for selected text of the combination of + * this format and the given theme. + */ + QColor selectedTextColor(const Theme &theme) const; + /** Returns @c true if the combination of this format and the theme @p theme + * change the background color compared to the default format. + */ + bool hasBackgroundColor(const Theme &theme) const; + /** Returns the background color of the combination of this format and the + * given theme. + */ + QColor backgroundColor(const Theme &theme) const; + /** Returns the background color of selected text of the combination of + * this format and the given theme. + */ + QColor selectedBackgroundColor(const Theme &theme) const; + + /** Returns @c true if the combination of this format and the given theme + * results in bold text formatting. + */ + bool isBold(const Theme &theme) const; + /** Returns @c true if the combination of this format and the given theme + * results in italic text formatting. + */ + bool isItalic(const Theme &theme) const; + /** Returns @c true if the combination of this format and the given theme + * results in underlined text. + */ + bool isUnderline(const Theme &theme) const; + /** Returns @c true if the combination of this format and the given theme + * results in struck through text. + */ + bool isStrikeThrough(const Theme &theme) const; + + /** + * Returns whether characters with this format should be spell checked. + */ + bool spellCheck() const; + +private: + friend class FormatPrivate; + QExplicitlySharedDataPointer<FormatPrivate> d; +}; +} + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO(KSyntaxHighlighting::Format, Q_MOVABLE_TYPE); +QT_END_NAMESPACE + +#endif // KSYNTAXHIGHLIGHTING_FORMAT_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/format_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/format_p.h new file mode 100644 index 0000000000..e79b26b6a7 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/format_p.h @@ -0,0 +1,55 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_FORMAT_P_H +#define KSYNTAXHIGHLIGHTING_FORMAT_P_H + +#include "definitionref_p.h" +#include "textstyledata_p.h" +#include "theme.h" + +#include <QSharedData> +#include <QString> + +namespace KSyntaxHighlighting { + +class FormatPrivate : public QSharedData +{ +public: + FormatPrivate() = default; + static FormatPrivate* detachAndGet(Format &format); + + TextStyleData styleOverride(const Theme &theme) const; + void load(QXmlStreamReader &reader); + + DefinitionRef definition; + QString name; + TextStyleData style; + Theme::TextStyle defaultStyle = Theme::Normal; + quint16 id = 0; + bool spellCheck = true; +}; + +} + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/htmlhighlighter.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/htmlhighlighter.cpp new file mode 100644 index 0000000000..4ebd465b77 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/htmlhighlighter.cpp @@ -0,0 +1,161 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + Copyright (C) 2018 Christoph Cullmann <cullmann@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "htmlhighlighter.h" +#include "definition.h" +#include "format.h" +#include "state.h" +#include "theme.h" +#include "ksyntaxhighlighting_logging.h" + +#include <QDebug> +#include <QFile> +#include <QFileInfo> +#include <QTextStream> +#include <QVarLengthArray> + +using namespace KSyntaxHighlighting; + +class KSyntaxHighlighting::HtmlHighlighterPrivate +{ +public: + std::unique_ptr<QTextStream> out; + std::unique_ptr<QFile> file; + QString currentLine; +}; + +HtmlHighlighter::HtmlHighlighter() + : d(new HtmlHighlighterPrivate()) +{ +} + +HtmlHighlighter::~HtmlHighlighter() +{ +} + +void HtmlHighlighter::setOutputFile(const QString& fileName) +{ + d->file.reset(new QFile(fileName)); + if (!d->file->open(QFile::WriteOnly | QFile::Truncate)) { + qCWarning(Log) << "Failed to open output file" << fileName << ":" << d->file->errorString(); + return; + } + d->out.reset(new QTextStream(d->file.get())); + d->out->setCodec("UTF-8"); +} + +void HtmlHighlighter::setOutputFile(FILE *fileHandle) +{ + d->out.reset(new QTextStream(fileHandle, QIODevice::WriteOnly)); + d->out->setCodec("UTF-8"); +} + +void HtmlHighlighter::highlightFile(const QString& fileName, const QString& title) +{ + QFileInfo fi(fileName); + QFile f(fileName); + if (!f.open(QFile::ReadOnly)) { + qCWarning(Log) << "Failed to open input file" << fileName << ":" << f.errorString(); + return; + } + + if (title.isEmpty()) + highlightData(&f, fi.fileName()); + else + highlightData(&f, title); +} + +void HtmlHighlighter::highlightData(QIODevice *dev, const QString& title) +{ + if (!d->out) { + qCWarning(Log) << "No output stream defined!"; + return; + } + + QString htmlTitle; + if (title.isEmpty()) + htmlTitle = QStringLiteral("Kate Syntax Highlighter"); + else + htmlTitle = title.toHtmlEscaped(); + + State state; + *d->out << "<!DOCTYPE html>\n"; + *d->out << "<html><head>\n"; + *d->out << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n"; + *d->out << "<title>" << htmlTitle << "</title>\n"; + *d->out << "<meta name=\"generator\" content=\"KF5::SyntaxHighlighting (" << definition().name() << ")\"/>\n"; + *d->out << "</head><body"; + if (theme().textColor(Theme::Normal)) + *d->out << " style=\"color:" << QColor(theme().textColor(Theme::Normal)).name() << "\""; + *d->out << "><pre>\n"; + + QTextStream in(dev); + in.setCodec("UTF-8"); + while (!in.atEnd()) { + d->currentLine = in.readLine(); + state = highlightLine(d->currentLine, state); + *d->out << "\n"; + } + + *d->out << "</pre></body></html>\n"; + d->out->flush(); + + d->out.reset(); + d->file.reset(); +} + +void HtmlHighlighter::applyFormat(int offset, int length, const Format& format) +{ + if (length == 0) + return; + + // collect potential output, cheaper than thinking about "is there any?" + QVarLengthArray<QString, 16> formatOutput; + if (format.hasTextColor(theme())) + formatOutput << QStringLiteral("color:") << format.textColor(theme()).name() << QStringLiteral(";"); + if (format.hasBackgroundColor(theme())) + formatOutput << QStringLiteral("background-color:") << format.backgroundColor(theme()).name() << QStringLiteral(";"); + if (format.isBold(theme())) + formatOutput << QStringLiteral("font-weight:bold;"); + if (format.isItalic(theme())) + formatOutput << QStringLiteral("font-style:italic;"); + if (format.isUnderline(theme())) + formatOutput << QStringLiteral("text-decoration:underline;"); + if (format.isStrikeThrough(theme())) + formatOutput << QStringLiteral("text-decoration:line-through;"); + + if (!formatOutput.isEmpty()) { + *d->out << "<span style=\""; + for (const auto &out : qAsConst(formatOutput)) { + *d->out << out; + } + *d->out << "\">"; + } + + *d->out << d->currentLine.mid(offset, length).toHtmlEscaped(); + + if (!formatOutput.isEmpty()) { + *d->out << "</span>"; + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/htmlhighlighter.h b/src/libs/3rdparty/syntax-highlighting/src/lib/htmlhighlighter.h new file mode 100644 index 0000000000..b7eda02d54 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/htmlhighlighter.h @@ -0,0 +1,64 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_HTMLHIGHLIGHTER_H +#define KSYNTAXHIGHLIGHTING_HTMLHIGHLIGHTER_H + +#include "ksyntaxhighlighting_export.h" +#include "abstracthighlighter.h" + +#include <QString> +#include <QIODevice> + +#include <memory> + +QT_BEGIN_NAMESPACE +class QFile; +class QTextStream; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class HtmlHighlighterPrivate; + +class KSYNTAXHIGHLIGHTING_EXPORT HtmlHighlighter : public AbstractHighlighter +{ +public: + HtmlHighlighter(); + ~HtmlHighlighter() override; + + void highlightFile(const QString &fileName, const QString &title = QString()); + void highlightData(QIODevice *device, const QString &title = QString()); + + void setOutputFile(const QString &fileName); + void setOutputFile(FILE *fileHandle); + +protected: + void applyFormat(int offset, int length, const Format &format) override; + +private: + std::unique_ptr<HtmlHighlighterPrivate> d; +}; +} + +#endif // KSYNTAXHIGHLIGHTING_HTMLHIGHLIGHTER_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/keywordlist.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/keywordlist.cpp new file mode 100644 index 0000000000..fe5f77586a --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/keywordlist.cpp @@ -0,0 +1,104 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "keywordlist_p.h" + +#include <QDebug> +#include <QXmlStreamReader> + +#include <algorithm> + +using namespace KSyntaxHighlighting; + +bool KeywordList::contains(const QStringRef &str, Qt::CaseSensitivity caseSensitive) const +{ + /** + * get right vector to search in + */ + const auto &vectorToSearch = (caseSensitive == Qt::CaseSensitive) ? m_keywordsSortedCaseSensitive : m_keywordsSortedCaseInsensitive; + + /** + * search with right predicate + */ + return std::binary_search(vectorToSearch.begin(), vectorToSearch.end(), str, [caseSensitive] (const QStringRef &a, const QStringRef &b) { return a.compare(b, caseSensitive) < 0; }); +} + +void KeywordList::load(QXmlStreamReader& reader) +{ + Q_ASSERT(reader.name() == QLatin1String("list")); + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + + m_name = reader.attributes().value(QStringLiteral("name")).toString(); + + while (!reader.atEnd()) { + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + if (reader.name() == QLatin1String("item")) { + m_keywords.append(reader.readElementText().trimmed()); + reader.readNextStartElement(); + break; + } + reader.readNext(); + break; + case QXmlStreamReader::EndElement: + reader.readNext(); + return; + default: + reader.readNext(); + break; + } + } +} + +void KeywordList::setCaseSensitivity(Qt::CaseSensitivity caseSensitive) +{ + /** + * remember default case-sensitivity and init lookup for it + */ + m_caseSensitive = caseSensitive; + initLookupForCaseSensitivity(m_caseSensitive); +} + +void KeywordList::initLookupForCaseSensitivity(Qt::CaseSensitivity caseSensitive) +{ + /** + * get right vector to sort, if non-empty, we are done + */ + auto &vectorToSort = (caseSensitive == Qt::CaseSensitive) ? m_keywordsSortedCaseSensitive : m_keywordsSortedCaseInsensitive; + if (!vectorToSort.empty()) { + return; + } + + /** + * fill vector with refs to keywords + */ + vectorToSort.reserve(m_keywords.size()); + for (const auto &keyword : qAsConst(m_keywords)) { + vectorToSort.push_back(&keyword); + } + + /** + * sort with right predicate + */ + std::sort(vectorToSort.begin(), vectorToSort.end(), [caseSensitive] (const QStringRef &a, const QStringRef &b) { return a.compare(b, caseSensitive) < 0; }); +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/keywordlist_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/keywordlist_p.h new file mode 100644 index 0000000000..8c41aabe0c --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/keywordlist_p.h @@ -0,0 +1,101 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_KEYWORDLIST_P_H +#define KSYNTAXHIGHLIGHTING_KEYWORDLIST_P_H + +#include <QSet> +#include <QString> +#include <QVector> + +#include <vector> + +QT_BEGIN_NAMESPACE +class QXmlStreamReader; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class KeywordList +{ +public: + KeywordList() = default; + ~KeywordList() = default; + + bool isEmpty() const + { + return m_keywords.isEmpty(); + } + + const QString &name() const + { + return m_name; + } + + const QStringList &keywords() const + { + return m_keywords; + } + + /** Checks if @p str is a keyword in this list. */ + bool contains(const QStringRef &str) const + { + return contains(str, m_caseSensitive); + } + + /** Checks if @p str is a keyword in this list, overriding the global case-sensitivity setting. */ + bool contains(const QStringRef &str, Qt::CaseSensitivity caseSensitive) const; + + void load(QXmlStreamReader &reader); + void setCaseSensitivity(Qt::CaseSensitivity caseSensitive); + void initLookupForCaseSensitivity(Qt::CaseSensitivity caseSensitive); + +private: + /** + * name of keyword list as in XML + */ + QString m_name; + + /** + * raw list of keywords, as seen in XML (but trimmed) + */ + QStringList m_keywords; + + /** + * default case-sensitivity setting + */ + Qt::CaseSensitivity m_caseSensitive = Qt::CaseSensitive; + + /** + * case-sensitive sorted string references to m_keywords for lookup + */ + std::vector<QStringRef> m_keywordsSortedCaseSensitive; + + /** + * case-insensitive sorted string references to m_keywords for lookup + */ + std::vector<QStringRef> m_keywordsSortedCaseInsensitive; +}; +} + +#endif // KSYNTAXHIGHLIGHTING_KEYWORDLIST_P_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/ksyntaxhighlighting_export.h b/src/libs/3rdparty/syntax-highlighting/src/lib/ksyntaxhighlighting_export.h new file mode 100644 index 0000000000..a39adb5ed6 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/ksyntaxhighlighting_export.h @@ -0,0 +1,34 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include <QtGlobal> + +#if defined(KSYNTAXHIGHLIGHTING_LIBRARY) +# define KSYNTAXHIGHLIGHTING_EXPORT Q_DECL_EXPORT +#else +# define KSYNTAXHIGHLIGHTING_EXPORT Q_DECL_IMPORT +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/matchresult_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/matchresult_p.h new file mode 100644 index 0000000000..b1a05ee636 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/matchresult_p.h @@ -0,0 +1,113 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_MATCHRESULT_P_H +#define KSYNTAXHIGHLIGHTING_MATCHRESULT_P_H + +#include <QStringList> + +namespace KSyntaxHighlighting { + +/** + * Storage for match result of a Rule. + * Heavily used internally during highlightLine, therefore completely inline. + */ +class MatchResult +{ +public: + /** + * Match at given offset found. + * @param offset offset of match + */ + MatchResult(const int offset) + : m_offset(offset) + { + } + + /** + * Match at given offset found with additional skip offset. + */ + explicit MatchResult(const int offset, const int skipOffset) + : m_offset(offset) + , m_skipOffset(skipOffset) + { + } + + /** + * Match at given offset found with additional captures. + * @param offset offset of match + * @param captures captures of the match + */ + explicit MatchResult(const int offset, const QStringList &captures) + : m_offset(offset) + , m_captures(captures) + { + } + + /** + * Offset of the match + * @return offset of the match + */ + int offset() const + { + return m_offset; + } + + + /** + * Skip offset of the match + * @return skip offset of the match, no match possible until this offset is reached + */ + int skipOffset() const + { + return m_skipOffset; + } + + /** + * Captures of the match. + * @return captured text of this match + */ + const QStringList &captures() const + { + return m_captures; + } + +private: + /** + * match offset, filled in all constructors + */ + int m_offset; + + /** + * skip offset, optional + */ + int m_skipOffset = 0; + + /** + * captures, optional + */ + QStringList m_captures; +}; +} + +#endif // KSYNTAXHIGHLIGHTING_MATCHRESULT_P_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp new file mode 100644 index 0000000000..6b2fabd07a --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp @@ -0,0 +1,325 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "repository.h" +#include "repository_p.h" +#include "definition.h" +#include "definition_p.h" +#include "theme.h" +#include "themedata_p.h" +#include "ksyntaxhighlighting_logging.h" +#include "wildcardmatcher_p.h" + +#include <QDebug> +#include <QDirIterator> +#include <QFile> +#include <QFileInfo> +#include <QJsonDocument> +#include <QJsonObject> + +#ifndef NO_STANDARD_PATHS +#include <QStandardPaths> +#endif + +#include <limits> + +using namespace KSyntaxHighlighting; + +static void initResource() +{ +#ifdef HAS_SYNTAX_RESOURCE + Q_INIT_RESOURCE(syntax_data); +#endif + Q_INIT_RESOURCE(theme_data); +} + +RepositoryPrivate* RepositoryPrivate::get(Repository *repo) +{ + return repo->d.get(); +} + +Repository::Repository() : + d(new RepositoryPrivate) +{ + initResource(); + d->load(this); +} + +Repository::~Repository() +{ + // reset repo so we can detect in still alive definition instances + // that the repo was deleted + foreach (const auto &def, d->m_sortedDefs) + DefinitionData::get(def)->repo = nullptr; +} + +Definition Repository::definitionForName(const QString& defName) const +{ + return d->m_defs.value(defName); +} + +static Definition bestCandidate(QVector<Definition>& candidates) +{ + if (candidates.isEmpty()) + return Definition(); + + std::partial_sort(candidates.begin(), candidates.begin() + 1, candidates.end(), [](const Definition &lhs, const Definition &rhs) { + return lhs.priority() > rhs.priority(); + }); + + return candidates.at(0); +} + +Definition Repository::definitionForFileName(const QString& fileName) const +{ + QFileInfo fi(fileName); + const auto name = fi.fileName(); + + QVector<Definition> candidates; + for (auto it = d->m_defs.constBegin(); it != d->m_defs.constEnd(); ++it) { + auto def = it.value(); + foreach (const auto &pattern, def.extensions()) { + if (WildcardMatcher::exactMatch(name, pattern)) { + candidates.push_back(def); + break; + } + } + } + + return bestCandidate(candidates); +} + +Definition Repository::definitionForMimeType(const QString& mimeType) const +{ + QVector<Definition> candidates; + for (auto it = d->m_defs.constBegin(); it != d->m_defs.constEnd(); ++it) { + auto def = it.value(); + foreach (const auto &matchType, def.mimeTypes()) { + if (mimeType == matchType) { + candidates.push_back(def); + break; + } + } + } + + return bestCandidate(candidates); +} + +QVector<Definition> Repository::definitions() const +{ + return d->m_sortedDefs; +} + +QVector<Theme> Repository::themes() const +{ + return d->m_themes; +} + +Theme Repository::theme(const QString &themeName) const +{ + for (const auto &theme : qAsConst(d->m_themes)) { + if (theme.name() == themeName) { + return theme; + } + } + + return Theme(); +} + +Theme Repository::defaultTheme(Repository::DefaultTheme t) +{ + if (t == DarkTheme) + return theme(QLatin1String("Breeze Dark")); + return theme(QLatin1String("Default")); +} + +void RepositoryPrivate::load(Repository *repo) +{ + // always add invalid default "None" highlighting + addDefinition(Definition()); + + // do lookup in standard paths, if not disabled +#ifndef NO_STANDARD_PATHS + foreach (const auto &dir, QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("org.kde.syntax-highlighting/syntax"), QStandardPaths::LocateDirectory)) + loadSyntaxFolder(repo, dir); + + // backward compatibility with Kate + foreach (const auto &dir, QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("katepart5/syntax"), QStandardPaths::LocateDirectory)) + loadSyntaxFolder(repo, dir); +#endif + + // default resources are always used + loadSyntaxFolder(repo, QStringLiteral(":/org.kde.syntax-highlighting/syntax")); + + // user given extra paths + foreach (const auto &path, m_customSearchPaths) + loadSyntaxFolder(repo, path + QStringLiteral("/syntax")); + + m_sortedDefs.reserve(m_defs.size()); + for (auto it = m_defs.constBegin(); it != m_defs.constEnd(); ++it) + m_sortedDefs.push_back(it.value()); + std::sort(m_sortedDefs.begin(), m_sortedDefs.end(), [](const Definition &left, const Definition &right) { + auto comparison = left.translatedSection().compare(right.translatedSection(), Qt::CaseInsensitive); + if (comparison == 0) + comparison = left.translatedName().compare(right.translatedName(), Qt::CaseInsensitive); + return comparison < 0; + }); + + // load themes + + // do lookup in standard paths, if not disabled +#ifndef NO_STANDARD_PATHS + foreach (const auto &dir, QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("org.kde.syntax-highlighting/themes"), QStandardPaths::LocateDirectory)) + loadThemeFolder(dir); +#endif + + // default resources are always used + loadThemeFolder(QStringLiteral(":/org.kde.syntax-highlighting/themes")); + + // user given extra paths + foreach (const auto &path, m_customSearchPaths) + loadThemeFolder(path + QStringLiteral("/themes")); +} + +void RepositoryPrivate::loadSyntaxFolder(Repository *repo, const QString &path) +{ + if (loadSyntaxFolderFromIndex(repo, path)) + return; + + QDirIterator it(path, QStringList() << QLatin1String("*.xml"), QDir::Files); + while (it.hasNext()) { + Definition def; + auto defData = DefinitionData::get(def); + defData->repo = repo; + if (defData->loadMetaData(it.next())) + addDefinition(def); + } +} + +bool RepositoryPrivate::loadSyntaxFolderFromIndex(Repository *repo, const QString &path) +{ + QFile indexFile(path + QLatin1String("/index.katesyntax")); + if (!indexFile.open(QFile::ReadOnly)) + return false; + + const auto indexDoc(QJsonDocument::fromBinaryData(indexFile.readAll())); + const auto index = indexDoc.object(); + for (auto it = index.begin(); it != index.end(); ++it) { + if (!it.value().isObject()) + continue; + const auto fileName = QString(path + QLatin1Char('/') + it.key()); + const auto defMap = it.value().toObject(); + Definition def; + auto defData = DefinitionData::get(def); + defData->repo = repo; + if (defData->loadMetaData(fileName, defMap)) + addDefinition(def); + } + return true; +} + +void RepositoryPrivate::addDefinition(const Definition &def) +{ + const auto it = m_defs.constFind(def.name()); + if (it == m_defs.constEnd()) { + m_defs.insert(def.name(), def); + return; + } + + if (it.value().version() >= def.version()) + return; + m_defs.insert(def.name(), def); +} + +void RepositoryPrivate::loadThemeFolder(const QString &path) +{ + QDirIterator it(path, QStringList() << QLatin1String("*.theme"), QDir::Files); + while (it.hasNext()) { + auto themeData = std::unique_ptr<ThemeData>(new ThemeData); + if (themeData->load(it.next())) + addTheme(Theme(themeData.release())); + } +} + +static int themeRevision(const Theme &theme) +{ + auto data = ThemeData::get(theme); + return data->revision(); +} + +void RepositoryPrivate::addTheme(const Theme &theme) +{ + const auto it = std::lower_bound(m_themes.begin(), m_themes.end(), theme, [](const Theme &lhs, const Theme &rhs) { + return lhs.name() < rhs.name(); + }); + if (it == m_themes.end() || (*it).name() != theme.name()) { + m_themes.insert(it, theme); + return; + } + if (themeRevision(*it) < themeRevision(theme)) + *it = theme; +} + +quint16 RepositoryPrivate::foldingRegionId(const QString &defName, const QString &foldName) +{ + const auto it = m_foldingRegionIds.constFind(qMakePair(defName, foldName)); + if (it != m_foldingRegionIds.constEnd()) + return it.value(); + m_foldingRegionIds.insert(qMakePair(defName, foldName), ++m_foldingRegionId); + return m_foldingRegionId; +} + +quint16 RepositoryPrivate::nextFormatId() +{ + Q_ASSERT(m_formatId < std::numeric_limits<quint16>::max()); + return ++m_formatId; +} + +void Repository::reload() +{ + qCDebug(Log) << "Reloading syntax definitions!"; + foreach (const auto &def, d->m_sortedDefs) + DefinitionData::get(def)->clear(); + d->m_defs.clear(); + d->m_sortedDefs.clear(); + + d->m_themes.clear(); + + d->m_foldingRegionId = 0; + d->m_foldingRegionIds.clear(); + + d->m_formatId = 0; + + d->load(this); +} + +void Repository::addCustomSearchPath(const QString &path) +{ + d->m_customSearchPaths.append(path); + reload(); +} + +QVector<QString> Repository::customSearchPaths() const +{ + return d->m_customSearchPaths; +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/repository.h b/src/libs/3rdparty/syntax-highlighting/src/lib/repository.h new file mode 100644 index 0000000000..c35da5ec37 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/repository.h @@ -0,0 +1,257 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_REPOSITORY_H +#define KSYNTAXHIGHLIGHTING_REPOSITORY_H + +#include "ksyntaxhighlighting_export.h" + +#include <qglobal.h> +#include <memory> + +QT_BEGIN_NAMESPACE +class QString; +template <typename T> class QVector; +QT_END_NAMESPACE + +/** + * @namespace KSyntaxHighlighting + * + * Syntax highlighting engine for Kate syntax definitions. + * In order to access the syntax highlighting Definition files, use the + * class Repository. + * + * @see Repository + */ +namespace KSyntaxHighlighting { + +class Definition; +class RepositoryPrivate; +class Theme; + +/** + * @brief Syntax highlighting repository. + * + * @section repo_intro Introduction + * + * The Repository gives access to all syntax Definitions available on the + * system, typically described in *.xml files. The Definition files are read + * from the resource that is compiled into the executable, and from the file + * system. If a Definition exists in the resource and on the file system, + * then the one from the file system is chosen. + * + * @section repo_access Definitions and Themes + * + * Typically, only one instance of the Repository is needed. This single + * instance can be thought of as a singleton you keep alive throughout the + * lifetime of your application. Then, either call definitionForName() with the + * given language name (e.g. "QML" or "Java"), or definitionForFileName() to + * obtain a Definition based on the filename/mimetype of the file. The + * function definitions() returns a list of all available syntax Definition%s. + * + * In addition to Definitions, the Repository also provides a list of Themes. + * A Theme is defined by a set of default text style colors as well as editor + * colors. These colors together provide all required colros for drawing all + * primitives of a text editor. All available Theme%s can be queried through + * themes(), and a Theme with a specific name is obtained through theme(). + * Additionally, defaultTheme() provides a way to obtain a default theme for + * either a light or a black color theme. + * + * @section repo_search_paths Search Paths + * + * All highlighting Definition and Theme files are compiled into the shared + * KSyntaxHighlighting library by using the Qt resource system. Loading + * additional files from disk is supported as well. + * + * Loading syntax Definition files works as follows: + * + * -# First, all syntax highlighting files are loaded that are located in + * QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("org.kde.syntax-highlighting/syntax"), QStandardPaths::LocateDirectory); + * Under Unix, this uses $XDG_DATA_HOME and $XDG_DATA_DIRS, which could + * map to $HOME/.local5/share/org.kde.syntax-highlighting/syntax and + * /usr/share/org.kde.syntax-highlighting/syntax. + * + * -# Next, for backwards compatibility with Kate, all syntax highlighting + * files are loaded that are located in + * QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("katepart5/syntax"), QStandardPaths::LocateDirectory); + * Again, under Unix, this uses $XDG_DATA_HOME and $XDG_DATA_DIRS, which + * could map to $HOME/.local5/share/katepart5/syntax and + * /usr/share/katepart5/syntax. + * + * -# Then, all files compiled into the library through resources are loaded. + * The internal resource path is ":/org.kde.syntax-highlighting/syntax". + * This path should never be touched by other applications. + * + * -# Finally, the search path can be extended by calling addCustomSearchPath(). + * A custom search path can either be a path on disk or again a path to + * a Qt resource. + * + * Similarly, loading Theme files works as follows: + * + * -# First, all Theme files are loaded that are located in + * QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("org.kde.syntax-highlighting/themes"), QStandardPaths::LocateDirectory); + * Under Unix, this uses $XDG_DATA_HOME and $XDG_DATA_DIRS, which could + * map to $HOME/.local5/share/org.kde.syntax-highlighting/themes and + * /usr/share/org.kde.syntax-highlighting/themes. + * + * -# Then, all files compiled into the library through resources are loaded. + * The internal resource path is ":/org.kde.syntax-highlighting/themes". + * This path should never be touched by other applications. + * + * -# Finally, all Theme%s located in the paths added addCustomSearchPath() + * are loaded. + * + * @note Whenever a Definition or a Theme exists twice, the variant with + * higher version is used. + * + * @note The QStandardPaths lookup can be disabled by compiling the framework with the -DNO_STANDARD_PATHS define. + * + * @see Definition, Theme, AbstractHighlighter + * @since 5.28 + */ +class KSYNTAXHIGHLIGHTING_EXPORT Repository +{ +public: + /** + * Create a new syntax definition repository. + * This will read the meta data information of all available syntax + * definition, which is a moderately expensive operation, it's therefore + * recommended to keep a single instance of Repository around as long + * as you need highlighting in your application. + */ + Repository(); + ~Repository(); + + /** + * Returns the Definition named @p defName. + * + * If no Definition is found, Definition::isValid() of the returned instance + * returns false. + * + * @note This uses case sensitive, untranslated names. For instance, + * the javascript.xml definition file sets its name to @e JavaScript. + * Therefore, only the string "JavaScript" will return a valid + * Definition file. + */ + Definition definitionForName(const QString &defName) const; + + /** + * Returns the best matching Definition for the file named @p fileName. + * The match is performed based on the \e extensions and @e mimetype of + * the definition files. If multiple matches are found, the one with the + * highest priority is returned. + * + * If no match is found, Definition::isValid() of the returned instance + * returns false. + */ + Definition definitionForFileName(const QString &fileName) const; + + /** + * Returns the best matching Definition to the type named @p mimeType + * + * If no match is found, Definition::isValid() of the returned instance + * returns false. + * + * @since 5.50 + */ + Definition definitionForMimeType(const QString &mimeType) const; + + /** + * Returns all available Definition%s. + * Definition%ss are ordered by translated section and translated names, + * for consistent displaying. + */ + QVector<Definition> definitions() const; + + /** + * Returns all available color themes. + * The returned list should never be empty. + */ + QVector<Theme> themes() const; + + /** + * Returns the theme called @p themeName. + * If the requested theme cannot be found, the retunred Theme is invalid, + * see Theme::isValid(). + */ + Theme theme(const QString &themeName) const; + + /** + * Built-in default theme types. + * @see defaultTheme() + */ + enum DefaultTheme { + //! Theme with a light background color. + LightTheme, + //! Theme with a dark background color. + DarkTheme + }; + + /** + * Returns a default theme instance of the given type. + * The returned Theme is guaranteed to be a valid theme. + */ + Theme defaultTheme(DefaultTheme t = LightTheme); + + /** + * Reloads the repository. + * This is a moderately expensive operations and should thus only be + * triggered when the installed syntax definition files changed. + */ + void reload(); + + /** + * Add a custom search path to the repository. + * This path will be searched in addition to the usual locations for syntax + * and theme definition files. Both locations on disk as well as Qt + * resource paths are supported. + * + * @note Internally, the two sub-folders @p path/syntax as well as + * @p path/themes are searched for additional Definition%s and + * Theme%s. Do not append @e syntax or @e themes to @p path + * yourself. + * + * @note Calling this triggers a reload() of the repository. + * + * @since 5.39 + */ + void addCustomSearchPath(const QString &path); + + /** + * Returns the list of custom search paths added to the repository. + * By default, this list is empty. + * + * @see addCustomSearchPath() + * @since 5.39 + */ + QVector<QString> customSearchPaths() const; + +private: + Q_DISABLE_COPY(Repository) + friend class RepositoryPrivate; + std::unique_ptr<RepositoryPrivate> d; +}; + +} + +#endif // KSYNTAXHIGHLIGHTING_REPOSITORY_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/repository_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/repository_p.h new file mode 100644 index 0000000000..9db876be59 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/repository_p.h @@ -0,0 +1,72 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_REPOSITORY_P_H +#define KSYNTAXHIGHLIGHTING_REPOSITORY_P_H + +#include <QHash> +#include <QVector> + +QT_BEGIN_NAMESPACE +class QString; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class Definition; +class Repository; +class Theme; + +class RepositoryPrivate +{ +public: + RepositoryPrivate() = default; + + static RepositoryPrivate* get(Repository *repo); + + void load(Repository *repo); + void loadSyntaxFolder(Repository *repo, const QString &path); + bool loadSyntaxFolderFromIndex(Repository *repo, const QString &path); + + void addDefinition(const Definition &def); + + void loadThemeFolder(const QString &path); + void addTheme(const Theme &theme); + + quint16 foldingRegionId(const QString &defName, const QString &foldName); + quint16 nextFormatId(); + + QVector<QString> m_customSearchPaths; + + QHash<QString, Definition> m_defs; + QVector<Definition> m_sortedDefs; + + QVector<Theme> m_themes; + + QHash<QPair<QString, QString>, quint16> m_foldingRegionIds; + quint16 m_foldingRegionId = 0; + quint16 m_formatId = 0; +}; +} + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/rule.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/rule.cpp new file mode 100644 index 0000000000..c48753bf0c --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/rule.cpp @@ -0,0 +1,663 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + Copyright (C) 2018 Christoph Cullmann <cullmann@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "rule_p.h" +#include "context_p.h" +#include "definition_p.h" +#include "ksyntaxhighlighting_logging.h" +#include "xml_p.h" + +#include <QString> +#include <QXmlStreamReader> + +using namespace KSyntaxHighlighting; + +static bool isOctalChar(QChar c) +{ + return c.isNumber() && c != QLatin1Char('9') && c != QLatin1Char('8'); +} + +static bool isHexChar(QChar c) +{ + return c.isNumber() + || c == QLatin1Char('a') || c == QLatin1Char('A') + || c == QLatin1Char('b') || c == QLatin1Char('B') + || c == QLatin1Char('c') || c == QLatin1Char('C') + || c == QLatin1Char('d') || c == QLatin1Char('D') + || c == QLatin1Char('e') || c == QLatin1Char('E') + || c == QLatin1Char('f') || c == QLatin1Char('F'); +} + +static int matchEscapedChar(const QString &text, int offset) +{ + if (text.at(offset) != QLatin1Char('\\') || text.size() < offset + 2) + return offset; + + const auto c = text.at(offset + 1); + static const auto controlChars = QStringLiteral("abefnrtv\"'?\\"); + if (controlChars.contains(c)) + return offset + 2; + + if (c == QLatin1Char('x')) { // hex encoded character + auto newOffset = offset + 2; + for (int i = 0; i < 2 && newOffset + i < text.size(); ++i, ++newOffset) { + if (!isHexChar(text.at(newOffset))) + break; + } + if (newOffset == offset + 2) + return offset; + return newOffset; + } + + if (isOctalChar(c)) { // octal encoding + auto newOffset = offset + 2; + for (int i = 0; i < 2 && newOffset + i < text.size(); ++i, ++newOffset) { + if (!isOctalChar(text.at(newOffset))) + break; + } + if (newOffset == offset + 2) + return offset; + return newOffset; + } + + return offset; +} + +static QString replaceCaptures(const QString &pattern, const QStringList &captures, bool quote) +{ + auto result = pattern; + for (int i = captures.size() - 1; i >= 1; --i) { + result.replace(QLatin1Char('%') + QString::number(i), quote ? QRegularExpression::escape(captures.at(i)) : captures.at(i)); + } + return result; +} + +Definition Rule::definition() const +{ + return m_def.definition(); +} + +void Rule::setDefinition(const Definition &def) +{ + m_def = def; + + // cache for DefinitionData::wordDelimiters, is accessed VERY often + m_wordDelimiter = &DefinitionData::get(m_def.definition())->wordDelimiters; +} + +bool Rule::load(QXmlStreamReader &reader) +{ + Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement); + + m_attribute = reader.attributes().value(QStringLiteral("attribute")).toString(); + if (reader.name() != QLatin1String("IncludeRules")) // IncludeRules uses this with a different semantic + m_context.parse(reader.attributes().value(QStringLiteral("context"))); + m_firstNonSpace = Xml::attrToBool(reader.attributes().value(QStringLiteral("firstNonSpace"))); + m_lookAhead = Xml::attrToBool(reader.attributes().value(QStringLiteral("lookAhead"))); + bool colOk = false; + m_column = reader.attributes().value(QStringLiteral("column")).toInt(&colOk); + if (!colOk) + m_column = -1; + + auto regionName = reader.attributes().value(QLatin1String("beginRegion")); + if (!regionName.isEmpty()) + m_beginRegion = FoldingRegion(FoldingRegion::Begin, DefinitionData::get(m_def.definition())->foldingRegionId(regionName.toString())); + regionName = reader.attributes().value(QLatin1String("endRegion")); + if (!regionName.isEmpty()) + m_endRegion = FoldingRegion(FoldingRegion::End, DefinitionData::get(m_def.definition())->foldingRegionId(regionName.toString())); + + auto result = doLoad(reader); + + if (m_lookAhead && m_context.isStay()) + result = false; + + // be done with this rule, skip all subelements, e.g. no longer supported sub-rules + reader.skipCurrentElement(); + return result; +} + +void Rule::resolveContext() +{ + m_context.resolve(m_def.definition()); +} + +void Rule::resolveAttributeFormat(Context *lookupContext) +{ + /** + * try to get our format from the definition we stem from + */ + if (!m_attribute.isEmpty()) { + m_attributeFormat = DefinitionData::get(definition())->formatByName(m_attribute); + if (!m_attributeFormat.isValid()) { + qCWarning(Log) << "Rule: Unknown format" << m_attribute << "in context" << lookupContext->name() << "of definition" << definition().name(); + } + } +} + +bool Rule::doLoad(QXmlStreamReader& reader) +{ + Q_UNUSED(reader); + return true; +} + +Rule::Ptr Rule::create(const QStringRef& name) +{ + Rule *rule = nullptr; + if (name == QLatin1String("AnyChar")) + rule = new AnyChar; + else if (name == QLatin1String("DetectChar")) + rule = new DetectChar; + else if (name == QLatin1String("Detect2Chars")) + rule = new Detect2Char; + else if (name == QLatin1String("DetectIdentifier")) + rule = new DetectIdentifier; + else if (name == QLatin1String("DetectSpaces")) + rule = new DetectSpaces; + else if (name == QLatin1String("Float")) + rule = new Float; + else if (name == QLatin1String("Int")) + rule = new Int; + else if (name == QLatin1String("HlCChar")) + rule = new HlCChar; + else if (name == QLatin1String("HlCHex")) + rule = new HlCHex; + else if (name == QLatin1String("HlCOct")) + rule = new HlCOct; + else if (name == QLatin1String("HlCStringChar")) + rule = new HlCStringChar; + else if (name == QLatin1String("IncludeRules")) + rule = new IncludeRules; + else if (name == QLatin1String("keyword")) + rule = new KeywordListRule; + else if (name == QLatin1String("LineContinue")) + rule = new LineContinue; + else if (name == QLatin1String("RangeDetect")) + rule = new RangeDetect; + else if (name == QLatin1String("RegExpr")) + rule = new RegExpr; + else if (name == QLatin1String("StringDetect")) + rule = new StringDetect; + else if (name == QLatin1String("WordDetect")) + rule = new WordDetect; + else + qCWarning(Log) << "Unknown rule type:" << name; + + return Ptr(rule); +} + +bool Rule::isWordDelimiter(QChar c) const +{ + // perf tells contains is MUCH faster than binary search here, very short array + return m_wordDelimiter.contains(c); +} + + +bool AnyChar::doLoad(QXmlStreamReader& reader) +{ + m_chars = reader.attributes().value(QStringLiteral("String")).toString(); + if (m_chars.size() == 1) + qCDebug(Log) << "AnyChar rule with just one char: use DetectChar instead."; + return !m_chars.isEmpty(); +} + +MatchResult AnyChar::doMatch(const QString& text, int offset, const QStringList&) const +{ + if (m_chars.contains(text.at(offset))) + return offset + 1; + return offset; +} + + +bool DetectChar::doLoad(QXmlStreamReader& reader) +{ + const auto s = reader.attributes().value(QStringLiteral("char")); + if (s.isEmpty()) + return false; + m_char = s.at(0); + m_dynamic = Xml::attrToBool(reader.attributes().value(QStringLiteral("dynamic"))); + if (m_dynamic) { + m_captureIndex = m_char.digitValue(); + } + return true; +} + +MatchResult DetectChar::doMatch(const QString& text, int offset, const QStringList &captures) const +{ + if (m_dynamic) { + if (m_captureIndex == 0 || captures.size() <= m_captureIndex || captures.at(m_captureIndex).isEmpty()) + return offset; + if (text.at(offset) == captures.at(m_captureIndex).at(0)) + return offset + 1; + return offset; + } + + if (text.at(offset) == m_char) + return offset + 1; + return offset; +} + + +bool Detect2Char::doLoad(QXmlStreamReader& reader) +{ + const auto s1 = reader.attributes().value(QStringLiteral("char")); + const auto s2 = reader.attributes().value(QStringLiteral("char1")); + if (s1.isEmpty() || s2.isEmpty()) + return false; + m_char1 = s1.at(0); + m_char2 = s2.at(0); + return true; +} + +MatchResult Detect2Char::doMatch(const QString& text, int offset, const QStringList &) const +{ + if (text.size() - offset < 2) + return offset; + if (text.at(offset) == m_char1 && text.at(offset + 1) == m_char2) + return offset + 2; + return offset; +} + + +MatchResult DetectIdentifier::doMatch(const QString& text, int offset, const QStringList&) const +{ + if (!text.at(offset).isLetter() && text.at(offset) != QLatin1Char('_')) + return offset; + + for (int i = offset + 1; i < text.size(); ++i) { + const auto c = text.at(i); + if (!c.isLetterOrNumber() && c != QLatin1Char('_')) + return i; + } + + return text.size(); +} + + +MatchResult DetectSpaces::doMatch(const QString& text, int offset, const QStringList&) const +{ + while(offset < text.size() && text.at(offset).isSpace()) + ++offset; + return offset; +} + + +MatchResult Float::doMatch(const QString& text, int offset, const QStringList&) const +{ + if (offset > 0 && !isWordDelimiter(text.at(offset - 1))) + return offset; + + auto newOffset = offset; + while (newOffset < text.size() && text.at(newOffset).isDigit()) + ++newOffset; + + if (newOffset >= text.size() || text.at(newOffset) != QLatin1Char('.')) + return offset; + ++newOffset; + + while (newOffset < text.size() && text.at(newOffset).isDigit()) + ++newOffset; + + if (newOffset == offset + 1) // we only found a decimal point + return offset; + + auto expOffset = newOffset; + if (expOffset >= text.size() || (text.at(expOffset) != QLatin1Char('e') && text.at(expOffset) != QLatin1Char('E'))) + return newOffset; + ++expOffset; + + if (expOffset < text.size() && (text.at(expOffset) == QLatin1Char('+') || text.at(expOffset) == QLatin1Char('-'))) + ++expOffset; + bool foundExpDigit = false; + while (expOffset < text.size() && text.at(expOffset).isDigit()) { + ++expOffset; + foundExpDigit = true; + } + + if (!foundExpDigit) + return newOffset; + return expOffset; +} + + +MatchResult HlCChar::doMatch(const QString& text, int offset, const QStringList&) const +{ + if (text.size() < offset + 3) + return offset; + + if (text.at(offset) != QLatin1Char('\'') || text.at(offset + 1) == QLatin1Char('\'')) + return offset; + + auto newOffset = matchEscapedChar(text, offset + 1); + if (newOffset == offset + 1) { + if (text.at(newOffset) == QLatin1Char('\\')) + return offset; + else + ++newOffset; + } + if (newOffset >= text.size()) + return offset; + + if (text.at(newOffset) == QLatin1Char('\'')) + return newOffset + 1; + + return offset; +} + + +MatchResult HlCHex::doMatch(const QString& text, int offset, const QStringList&) const +{ + if (offset > 0 && !isWordDelimiter(text.at(offset - 1))) + return offset; + + if (text.size() < offset + 3) + return offset; + + if (text.at(offset) != QLatin1Char('0') || (text.at(offset + 1) != QLatin1Char('x') && text.at(offset + 1) != QLatin1Char('X'))) + return offset; + + if (!isHexChar(text.at(offset + 2))) + return offset; + + offset += 3; + while (offset < text.size() && isHexChar(text.at(offset))) + ++offset; + + // TODO Kate matches U/L suffix, QtC does not? + + return offset; +} + + +MatchResult HlCOct::doMatch(const QString& text, int offset, const QStringList&) const +{ + if (offset > 0 && !isWordDelimiter(text.at(offset - 1))) + return offset; + + if (text.size() < offset + 2) + return offset; + + if (text.at(offset) != QLatin1Char('0')) + return offset; + + if (!isOctalChar(text.at(offset + 1))) + return offset; + + offset += 2; + while (offset < text.size() && isOctalChar(text.at(offset))) + ++offset; + + return offset; +} + + +MatchResult HlCStringChar::doMatch(const QString& text, int offset, const QStringList&) const +{ + return matchEscapedChar(text, offset); +} + + +QString IncludeRules::contextName() const +{ + return m_contextName; +} + +QString IncludeRules::definitionName() const +{ + return m_defName; +} + +bool IncludeRules::includeAttribute() const +{ + return m_includeAttribute; +} + +bool IncludeRules::doLoad(QXmlStreamReader& reader) +{ + const auto s = reader.attributes().value(QLatin1String("context")); + const auto split = s.split(QLatin1String("##"), QString::KeepEmptyParts); + if (split.isEmpty()) + return false; + m_contextName = split.at(0).toString(); + if (split.size() > 1) + m_defName = split.at(1).toString(); + m_includeAttribute = Xml::attrToBool(reader.attributes().value(QLatin1String("includeAttrib"))); + + return !m_contextName.isEmpty() || !m_defName.isEmpty(); +} + +MatchResult IncludeRules::doMatch(const QString& text, int offset, const QStringList&) const +{ + Q_UNUSED(text); + qCWarning(Log) << "Unresolved include rule for" << m_contextName << "##" << m_defName; + return offset; +} + + +MatchResult Int::doMatch(const QString& text, int offset, const QStringList &) const +{ + if (offset > 0 && !isWordDelimiter(text.at(offset - 1))) + return offset; + + while(offset < text.size() && text.at(offset).isDigit()) + ++offset; + return offset; +} + + +bool KeywordListRule::doLoad(QXmlStreamReader& reader) +{ + /** + * get our keyword list, if not found => bail out + */ + auto defData = DefinitionData::get(definition()); + m_keywordList = defData->keywordList(reader.attributes().value(QLatin1String("String")).toString()); + if (!m_keywordList) { + return false; + } + + /** + * we might overwrite the case sensitivity + * then we need to init the list for lookup of that sensitivity setting + */ + if (reader.attributes().hasAttribute(QLatin1String("insensitive"))) { + m_hasCaseSensitivityOverride = true; + m_caseSensitivityOverride = Xml::attrToBool(reader.attributes().value(QLatin1String("insensitive"))) ? + Qt::CaseInsensitive : Qt::CaseSensitive; + m_keywordList->initLookupForCaseSensitivity(m_caseSensitivityOverride); + } else { + m_hasCaseSensitivityOverride = false; + } + + return !m_keywordList->isEmpty(); +} + +MatchResult KeywordListRule::doMatch(const QString& text, int offset, const QStringList&) const +{ + auto newOffset = offset; + while (text.size() > newOffset && !isWordDelimiter(text.at(newOffset))) + ++newOffset; + if (newOffset == offset) + return offset; + + if (m_hasCaseSensitivityOverride) { + if (m_keywordList->contains(text.midRef(offset, newOffset - offset), m_caseSensitivityOverride)) + return newOffset; + } else { + if (m_keywordList->contains(text.midRef(offset, newOffset - offset))) + return newOffset; + } + + // we don't match, but we can skip until newOffset as we can't start a keyword in-between + return MatchResult(offset, newOffset); +} + + +bool LineContinue::doLoad(QXmlStreamReader& reader) +{ + const auto s = reader.attributes().value(QStringLiteral("char")); + if (s.isEmpty()) + m_char = QLatin1Char('\\'); + else + m_char = s.at(0); + return true; +} + +MatchResult LineContinue::doMatch(const QString& text, int offset, const QStringList&) const +{ + if (offset == text.size() - 1 && text.at(offset) == m_char) + return offset + 1; + return offset; +} + + +bool RangeDetect::doLoad(QXmlStreamReader& reader) +{ + const auto s1 = reader.attributes().value(QStringLiteral("char")); + const auto s2 = reader.attributes().value(QStringLiteral("char1")); + if (s1.isEmpty() || s2.isEmpty()) + return false; + m_begin = s1.at(0); + m_end = s2.at(0); + return true; +} + +MatchResult RangeDetect::doMatch(const QString& text, int offset, const QStringList&) const +{ + if (text.size() - offset < 2) + return offset; + if (text.at(offset) != m_begin) + return offset; + + auto newOffset = offset + 1; + while (newOffset < text.size()) { + if (text.at(newOffset) == m_end) + return newOffset + 1; + ++newOffset; + } + return offset; +} + +bool RegExpr::doLoad(QXmlStreamReader& reader) +{ + m_regexp.setPattern(reader.attributes().value(QStringLiteral("String")).toString()); + + const auto isMinimal = Xml::attrToBool(reader.attributes().value(QStringLiteral("minimal"))); + const auto isCaseInsensitive = Xml::attrToBool(reader.attributes().value(QStringLiteral("insensitive"))); + m_regexp.setPatternOptions( + (isMinimal ? QRegularExpression::InvertedGreedinessOption : QRegularExpression::NoPatternOption) | + (isCaseInsensitive ? QRegularExpression::CaseInsensitiveOption : QRegularExpression::NoPatternOption)); + + // optimize the pattern for the non-dynamic case, we use them OFTEN + m_dynamic = Xml::attrToBool(reader.attributes().value(QStringLiteral("dynamic"))); + if (!m_dynamic) { + m_regexp.optimize(); + } + + // always using m_regexp.isValid() would be better, but parses the regexp and thus is way too expensive for release builds + + if (Log().isDebugEnabled()) { + if (!m_regexp.isValid()) + qCDebug(Log) << "Invalid regexp:" << m_regexp.pattern(); + } + return !m_regexp.pattern().isEmpty(); +} + +MatchResult RegExpr::doMatch(const QString& text, int offset, const QStringList &captures) const +{ + /** + * for dynamic case: create new pattern with right instantiation + */ + const auto ®exp = m_dynamic ? QRegularExpression(replaceCaptures(m_regexp.pattern(), captures, true), m_regexp.patternOptions()) : m_regexp; + + /** + * match the pattern + */ + const auto result = regexp.match(text, offset, QRegularExpression::NormalMatch, QRegularExpression::DontCheckSubjectStringMatchOption); + if (result.capturedStart() == offset) { + /** + * we only need to compute the captured texts if we have real capture groups + * highlightings should only address %1..%.., see e.g. replaceCaptures + * DetectChar ignores %0, too + */ + if (result.lastCapturedIndex() > 0) { + return MatchResult(offset + result.capturedLength(), result.capturedTexts()); + } + + /** + * else: ignore the implicit 0 group we always capture, no need to allocate stuff for that + */ + return MatchResult(offset + result.capturedLength()); + } + + /** + * no match + */ + return MatchResult(offset, result.capturedStart()); +} + + +bool StringDetect::doLoad(QXmlStreamReader& reader) +{ + m_string = reader.attributes().value(QStringLiteral("String")).toString(); + m_caseSensitivity = Xml::attrToBool(reader.attributes().value(QStringLiteral("insensitive"))) ? Qt::CaseInsensitive : Qt::CaseSensitive; + m_dynamic = Xml::attrToBool(reader.attributes().value(QStringLiteral("dynamic"))); + return !m_string.isEmpty(); +} + +MatchResult StringDetect::doMatch(const QString& text, int offset, const QStringList &captures) const +{ + /** + * for dynamic case: create new pattern with right instantiation + */ + const auto &pattern = m_dynamic ? replaceCaptures(m_string, captures, false) : m_string; + + if (text.midRef(offset, pattern.size()).compare(pattern, m_caseSensitivity) == 0) + return offset + pattern.size(); + return offset; +} + + +bool WordDetect::doLoad(QXmlStreamReader& reader) +{ + m_word = reader.attributes().value(QStringLiteral("String")).toString(); + m_caseSensitivity = Xml::attrToBool(reader.attributes().value(QStringLiteral("insensitive"))) ? Qt::CaseInsensitive : Qt::CaseSensitive; + return !m_word.isEmpty(); +} + +MatchResult WordDetect::doMatch(const QString& text, int offset, const QStringList &) const +{ + if (text.size() - offset < m_word.size()) + return offset; + + if (offset > 0 && !isWordDelimiter(text.at(offset - 1))) + return offset; + + if (text.midRef(offset, m_word.size()).compare(m_word, m_caseSensitivity) != 0) + return offset; + + if (text.size() == offset + m_word.size() || isWordDelimiter(text.at(offset + m_word.size()))) + return offset + m_word.size(); + + return offset; +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/rule_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/rule_p.h new file mode 100644 index 0000000000..538fdeda8a --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/rule_p.h @@ -0,0 +1,291 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_RULE_P_H +#define KSYNTAXHIGHLIGHTING_RULE_P_H + +#include "contextswitch_p.h" +#include "definition.h" +#include "definitionref_p.h" +#include "foldingregion.h" +#include "format.h" +#include "keywordlist_p.h" +#include "matchresult_p.h" + +#include <QRegularExpression> +#include <QString> +#include <QVector> + +#include <memory> + +QT_BEGIN_NAMESPACE +class QXmlStreamReader; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +class Rule +{ +public: + Rule() = default; + virtual ~Rule() = default; + + typedef std::shared_ptr<Rule> Ptr; + + Definition definition() const; + void setDefinition(const Definition &def); + + const Format &attributeFormat() const + { + return m_attributeFormat; + } + + const ContextSwitch &context() const + { + return m_context; + } + + bool isLookAhead() const + { + return m_lookAhead; + } + + bool firstNonSpace() const + { + return m_firstNonSpace; + } + + int requiredColumn() const + { + return m_column; + } + + const FoldingRegion &beginRegion() const + { + return m_beginRegion; + } + + const FoldingRegion &endRegion() const + { + return m_endRegion; + } + + bool load(QXmlStreamReader &reader); + void resolveContext(); + void resolveAttributeFormat(Context *lookupContext); + + virtual MatchResult doMatch(const QString &text, int offset, const QStringList &captures) const = 0; + + static Rule::Ptr create(const QStringRef &name); + +protected: + virtual bool doLoad(QXmlStreamReader &reader); + + bool isWordDelimiter(QChar c) const; + +private: + Q_DISABLE_COPY(Rule) + + DefinitionRef m_def; + QString m_attribute; + Format m_attributeFormat; + ContextSwitch m_context; + int m_column = -1; + FoldingRegion m_beginRegion; + FoldingRegion m_endRegion; + bool m_firstNonSpace = false; + bool m_lookAhead = false; + + // cache for DefinitionData::wordDelimiters, is accessed VERY often + QStringRef m_wordDelimiter; +}; + + +class AnyChar : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; + +private: + QString m_chars; +}; + +class DetectChar : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList &captures) const override; + +private: + QChar m_char; + bool m_dynamic = false; + int m_captureIndex = 0; +}; + +class Detect2Char : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList &captures) const override; + +private: + QChar m_char1; + QChar m_char2; +}; + +class DetectIdentifier : public Rule +{ +protected: + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; +}; + +class DetectSpaces : public Rule +{ +protected: + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; +}; + +class Float : public Rule +{ +protected: + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; +}; + +class IncludeRules : public Rule +{ +public: + QString contextName() const; + QString definitionName() const; + bool includeAttribute() const; + +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; + +private: + QString m_contextName; + QString m_defName; + bool m_includeAttribute; +}; + +class Int : public Rule +{ +protected: + MatchResult doMatch(const QString & text, int offset, const QStringList &captures) const override; +}; + +class HlCChar : public Rule +{ +protected: + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; +}; + +class HlCHex : public Rule +{ +protected: + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; +}; + +class HlCOct : public Rule +{ +protected: + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; +}; + +class HlCStringChar : public Rule +{ +protected: + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; +}; + +class KeywordListRule : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; + +private: + KeywordList *m_keywordList; + bool m_hasCaseSensitivityOverride; + Qt::CaseSensitivity m_caseSensitivityOverride; +}; + +class LineContinue : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; + +private: + QChar m_char; +}; + +class RangeDetect : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList&) const override; + +private: + QChar m_begin; + QChar m_end; +}; + +class RegExpr : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList &captures) const override; + +private: + QRegularExpression m_regexp; + bool m_dynamic = false; +}; + +class StringDetect : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList &captures) const override; + +private: + QString m_string; + Qt::CaseSensitivity m_caseSensitivity; + bool m_dynamic = false; +}; + +class WordDetect : public Rule +{ +protected: + bool doLoad(QXmlStreamReader & reader) override; + MatchResult doMatch(const QString & text, int offset, const QStringList &captures) const override; + +private: + QString m_word; + Qt::CaseSensitivity m_caseSensitivity; +}; + +} + +#endif // KSYNTAXHIGHLIGHTING_RULE_P_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/state.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/state.cpp new file mode 100644 index 0000000000..f970e13f8b --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/state.cpp @@ -0,0 +1,123 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + Copyright (C) 2018 Christoph Cullmann <cullmann@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "state.h" +#include "state_p.h" + +#include "context_p.h" + +#include <QStringList> + +using namespace KSyntaxHighlighting; + +StateData* StateData::get(State &state) +{ + state.d.detach(); + return state.d.data(); +} + +bool StateData::isEmpty() const +{ + return m_contextStack.isEmpty(); +} + +void StateData::clear() +{ + m_contextStack.clear(); +} + +int StateData::size() const +{ + return m_contextStack.size(); +} + +void StateData::push(Context *context, const QStringList &captures) +{ + Q_ASSERT(context); + m_contextStack.push_back(qMakePair(context, captures)); +} + +bool StateData::pop(int popCount) +{ + // nop if nothing to pop + if (popCount <= 0) { + return true; + } + + // keep the initial context alive in any case + Q_ASSERT(!isEmpty()); + const bool initialContextSurvived = m_contextStack.size() > popCount; + m_contextStack.resize(std::max(1, m_contextStack.size() - popCount)); + return initialContextSurvived; +} + +Context* StateData::topContext() const +{ + Q_ASSERT(!isEmpty()); + return m_contextStack.last().first; +} + +const QStringList &StateData::topCaptures() const +{ + Q_ASSERT(!isEmpty()); + return m_contextStack.last().second; +} + +State::State() : + d(new StateData) +{ +} + +State::State(const State &other) : + d(other.d) +{ +} + +State::~State() +{ +} + +State& State::operator=(const State &other) +{ + d = other.d; + return *this; +} + +bool State::operator==(const State &other) const +{ + // use pointer equal as shortcut for shared states + return (d == other.d) || (d->m_contextStack == other.d->m_contextStack && d->m_defRef == other.d->m_defRef); +} + +bool State::operator!=(const State &other) const +{ + return !(*this == other); +} + +bool State::indentationBasedFoldingEnabled() const +{ + if (d->m_contextStack.isEmpty()) + return false; + return d->m_contextStack.last().first->indentationBasedFoldingEnabled(); +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/state.h b/src/libs/3rdparty/syntax-highlighting/src/lib/state.h new file mode 100644 index 0000000000..fce4bc71e8 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/state.h @@ -0,0 +1,86 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_STATE_H +#define KSYNTAXHIGHLIGHTING_STATE_H + +#include "ksyntaxhighlighting_export.h" + +#include <QExplicitlySharedDataPointer> +#include <QTypeInfo> + +namespace KSyntaxHighlighting { + +class StateData; + +/** Opaque handle to the state of the highlighting engine. + * This needs to be fed into AbstractHighlighter for every line of text + * and allows concrete highlighter implementations to store state per + * line for fast re-highlighting of specific lines (e.g. during editing). + * + * @since 5.28 + */ +class KSYNTAXHIGHLIGHTING_EXPORT State +{ +public: + /** Creates an initial state, ie. what should be used for the first line + * in a document. + */ + State(); + State(const State &other); + ~State(); + State& operator=(const State &rhs); + + /** Compares two states for equality. + * For two equal states and identical text input, AbstractHighlighter + * guarantees to produce equal results. This can be used to only + * re-highlight as many lines as necessary during editing. + */ + bool operator==(const State &other) const; + /** Compares two states for inequality. + * This is the opposite of operator==(). + */ + bool operator!=(const State &other) const; + + /** + * Returns whether or not indentation-based folding is enabled in this state. + * When using a Definition with indentation-based folding, use + * this method to check if indentation-based folding has been + * suspended in the current line. + * + * @see Definition::indentationBasedFoldingEnabled() + */ + bool indentationBasedFoldingEnabled() const; + +private: + friend class StateData; + QExplicitlySharedDataPointer<StateData> d; +}; + +} + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO(KSyntaxHighlighting::State, Q_MOVABLE_TYPE); +QT_END_NAMESPACE + +#endif // KSYNTAXHIGHLIGHTING_STATE_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/state_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/state_p.h new file mode 100644 index 0000000000..a99192b4c6 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/state_p.h @@ -0,0 +1,81 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + Copyright (C) 2018 Christoph Cullmann <cullmann@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_STATE_P_H +#define KSYNTAXHIGHLIGHTING_STATE_P_H + +#include <QSharedData> +#include <QVector> + +#include "definitionref_p.h" + +QT_BEGIN_NAMESPACE +class QStringList; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting +{ + +class Context; + +class StateData : public QSharedData +{ + friend class State; + friend class AbstractHighlighter; + +public: + StateData() = default; + static StateData* get(State &state); + + bool isEmpty() const; + void clear(); + int size() const; + void push(Context *context, const QStringList &captures); + + /** + * Pop the number of elements given from the top of the current stack. + * Will not pop the initial element. + * @param popCount number of elements to pop + * @return false if one has tried to pop the initial context, else true + */ + bool pop(int popCount); + + Context* topContext() const; + const QStringList &topCaptures() const; + +private: + /** + * weak reference to the used definition to filter out invalid states + */ + DefinitionRef m_defRef; + + /** + * the context stack combines the active context + valid captures + */ + QVector<QPair<Context *, QStringList>> m_contextStack; +}; + +} + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/syntaxhighlighter.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/syntaxhighlighter.cpp new file mode 100644 index 0000000000..2bb61a7ae6 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/syntaxhighlighter.cpp @@ -0,0 +1,198 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "syntaxhighlighter.h" +#include "abstracthighlighter_p.h" +#include "definition.h" +#include "foldingregion.h" +#include "format.h" +#include "state.h" +#include "theme.h" + +#include <QDebug> + +Q_DECLARE_METATYPE(QTextBlock) + +using namespace KSyntaxHighlighting; + +namespace KSyntaxHighlighting { +class TextBlockUserData : public QTextBlockUserData +{ +public: + State state; + QVector<FoldingRegion> foldingRegions; +}; + +class SyntaxHighlighterPrivate : public AbstractHighlighterPrivate +{ +public: + static FoldingRegion foldingRegion(const QTextBlock &startBlock); + QVector<FoldingRegion> foldingRegions; +}; + +} + +FoldingRegion SyntaxHighlighterPrivate::foldingRegion(const QTextBlock& startBlock) +{ + const auto data = dynamic_cast<TextBlockUserData*>(startBlock.userData()); + if (!data) + return FoldingRegion(); + for (int i = data->foldingRegions.size() - 1; i >= 0; --i) { + if (data->foldingRegions.at(i).type() == FoldingRegion::Begin) + return data->foldingRegions.at(i); + } + return FoldingRegion(); +} + +SyntaxHighlighter::SyntaxHighlighter(QObject* parent) : + QSyntaxHighlighter(parent), + AbstractHighlighter(new SyntaxHighlighterPrivate) +{ + qRegisterMetaType<QTextBlock>(); +} + +SyntaxHighlighter::SyntaxHighlighter(QTextDocument *document) : + QSyntaxHighlighter(document), + AbstractHighlighter(new SyntaxHighlighterPrivate) +{ + qRegisterMetaType<QTextBlock>(); +} + +SyntaxHighlighter::~SyntaxHighlighter() +{ +} + +void SyntaxHighlighter::setDefinition(const Definition& def) +{ + const auto needsRehighlight = definition() != def; + AbstractHighlighter::setDefinition(def); + if (needsRehighlight) + rehighlight(); +} + +bool SyntaxHighlighter::startsFoldingRegion(const QTextBlock &startBlock) const +{ + return SyntaxHighlighterPrivate::foldingRegion(startBlock).type() == FoldingRegion::Begin; +} + +QTextBlock SyntaxHighlighter::findFoldingRegionEnd(const QTextBlock &startBlock) const +{ + const auto region = SyntaxHighlighterPrivate::foldingRegion(startBlock); + + auto block = startBlock; + int depth = 1; + while (block.isValid()) { + block = block.next(); + const auto data = dynamic_cast<TextBlockUserData*>(block.userData()); + if (!data) + continue; + for (auto it = data->foldingRegions.constBegin(); it != data->foldingRegions.constEnd(); ++it) { + if ((*it).id() != region.id()) + continue; + if ((*it).type() == FoldingRegion::End) + --depth; + else if ((*it).type() == FoldingRegion::Begin) + ++depth; + if (depth == 0) + return block; + } + } + + return QTextBlock(); +} + +void SyntaxHighlighter::highlightBlock(const QString& text) +{ + Q_D(SyntaxHighlighter); + + State state; + if (currentBlock().position() > 0) { + const auto prevBlock = currentBlock().previous(); + const auto prevData = dynamic_cast<TextBlockUserData*>(prevBlock.userData()); + if (prevData) + state = prevData->state; + } + d->foldingRegions.clear(); + state = highlightLine(text, state); + + auto data = dynamic_cast<TextBlockUserData*>(currentBlockUserData()); + if (!data) { // first time we highlight this + data = new TextBlockUserData; + data->state = state; + data->foldingRegions = d->foldingRegions; + setCurrentBlockUserData(data); + return; + } + + if (data->state == state && data->foldingRegions == d->foldingRegions) // we ended up in the same state, so we are done here + return; + data->state = state; + data->foldingRegions = d->foldingRegions; + + const auto nextBlock = currentBlock().next(); + if (nextBlock.isValid()) + QMetaObject::invokeMethod(this, "rehighlightBlock", Qt::QueuedConnection, Q_ARG(QTextBlock, nextBlock)); +} + +void SyntaxHighlighter::applyFormat(int offset, int length, const KSyntaxHighlighting::Format& format) +{ + if (format.isDefaultTextStyle(theme()) || length == 0) + return; + + QTextCharFormat tf; + if (format.hasTextColor(theme())) + tf.setForeground(format.textColor(theme())); + if (format.hasBackgroundColor(theme())) + tf.setBackground(format.backgroundColor(theme())); + + if (format.isBold(theme())) + tf.setFontWeight(QFont::Bold); + if (format.isItalic(theme())) + tf.setFontItalic(true); + if (format.isUnderline(theme())) + tf.setFontUnderline(true); + if (format.isStrikeThrough(theme())) + tf.setFontStrikeOut(true); + + QSyntaxHighlighter::setFormat(offset, length, tf); +} + +void SyntaxHighlighter::applyFolding(int offset, int length, FoldingRegion region) +{ + Q_UNUSED(offset); + Q_UNUSED(length); + Q_D(SyntaxHighlighter); + + if (region.type() == FoldingRegion::Begin) + d->foldingRegions.push_back(region); + + if (region.type() == FoldingRegion::End) { + for (int i = d->foldingRegions.size() - 1; i >= 0; --i) { + if (d->foldingRegions.at(i).id() != region.id() || d->foldingRegions.at(i).type() != FoldingRegion::Begin) + continue; + d->foldingRegions.remove(i); + return; + } + d->foldingRegions.push_back(region); + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/syntaxhighlighter.h b/src/libs/3rdparty/syntax-highlighting/src/lib/syntaxhighlighter.h new file mode 100644 index 0000000000..f5d2a5e219 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/syntaxhighlighter.h @@ -0,0 +1,85 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_QSYNTAXHIGHLIGHTER_H +#define KSYNTAXHIGHLIGHTING_QSYNTAXHIGHLIGHTER_H + +#include "ksyntaxhighlighting_export.h" + +#include "abstracthighlighter.h" + +#include <QSyntaxHighlighter> + +namespace KSyntaxHighlighting { + +class SyntaxHighlighterPrivate; + +/** A QSyntaxHighlighter implementation for use with QTextDocument. + * This supports partial re-highlighting during editing and + * tracks syntax-based code folding regions. + * + * @since 5.28 + */ +class KSYNTAXHIGHLIGHTING_EXPORT SyntaxHighlighter : public QSyntaxHighlighter, public AbstractHighlighter +{ + Q_OBJECT +public: + explicit SyntaxHighlighter(QObject *parent = nullptr); + explicit SyntaxHighlighter(QTextDocument *document); + ~SyntaxHighlighter() override; + + void setDefinition(const Definition &def) override; + + /** Returns whether there is a folding region beginning at @p startBlock. + * This only considers syntax-based folding regions, + * not indention-based ones as e.g. found in Python. + * + * @see findFoldingRegionEnd + */ + bool startsFoldingRegion(const QTextBlock &startBlock) const; + + /** Finds the end of the folding region starting at @p startBlock. + * If multiple folding regions begin at @p startBlock, the end of + * the last/innermost one is returned. + * This returns an invalid block if no folding region end is found, + * which typically indicates an unterminated region and thus folding + * until the document end. + * This method performs a sequential search starting at @p startBlock + * for the matching folding region end, which is a potentially expensive + * operation. + * + * @see startsFoldingRegion + */ + QTextBlock findFoldingRegionEnd(const QTextBlock &startBlock) const; + +protected: + void highlightBlock(const QString & text) override; + void applyFormat(int offset, int length, const Format &format) override; + void applyFolding(int offset, int length, FoldingRegion region) override; + +private: + Q_DECLARE_PRIVATE_D(AbstractHighlighter::d_ptr, SyntaxHighlighter) +}; +} + +#endif // KSYNTAXHIGHLIGHTING_QSYNTAXHIGHLIGHTER_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/textstyledata_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/textstyledata_p.h new file mode 100644 index 0000000000..40c5ef679e --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/textstyledata_p.h @@ -0,0 +1,63 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_TEXTSTYLEDATA_P_H +#define KSYNTAXHIGHLIGHTING_TEXTSTYLEDATA_P_H + +#include <QColor> + +namespace KSyntaxHighlighting { + +class TextStyleData +{ +public: + // Constructor initializing all data. + TextStyleData() + : bold(false) + , italic(false) + , underline(false) + , strikeThrough(false) + , hasBold(false) + , hasItalic(false) + , hasUnderline(false) + , hasStrikeThrough(false) + {} + + QRgb textColor = 0x0; + QRgb backgroundColor = 0x0; + QRgb selectedTextColor = 0x0; + QRgb selectedBackgroundColor = 0x0; + bool bold :1; + bool italic :1; + bool underline :1; + bool strikeThrough :1; + + bool hasBold :1; + bool hasItalic :1; + bool hasUnderline :1; + bool hasStrikeThrough :1; +}; + +} + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/theme.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/theme.cpp new file mode 100644 index 0000000000..57f62ef6ab --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/theme.cpp @@ -0,0 +1,124 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "theme.h" +#include "themedata_p.h" + +#include <QCoreApplication> + +using namespace KSyntaxHighlighting; + +Theme::Theme() +{ +} + +Theme::Theme(const Theme ©) +{ + m_data = copy.m_data; +} + +Theme::Theme(ThemeData* data) + : m_data(data) +{ +} + +Theme::~Theme() +{ +} + +Theme &Theme::operator=(const Theme &other) +{ + m_data = other.m_data; + return *this; +} + +bool Theme::isValid() const +{ + return m_data.data(); +} + +QString Theme::name() const +{ + return m_data ? m_data->name() : QString(); +} + +QString Theme::translatedName() const +{ + return m_data ? QCoreApplication::instance()->translate("Theme", m_data->name().toUtf8().constData()) + : QString(); +} + +bool Theme::isReadOnly() const +{ + return m_data ? m_data->isReadOnly() : false; +} + +QString Theme::filePath() const +{ + return m_data ? m_data->filePath() : QString(); +} + +QRgb Theme::textColor(TextStyle style) const +{ + return m_data ? m_data->textColor(style) : 0; +} + +QRgb Theme::selectedTextColor(TextStyle style) const +{ + return m_data ? m_data->selectedTextColor(style) : 0; +} + +QRgb Theme::backgroundColor(TextStyle style) const +{ + return m_data ? m_data->backgroundColor(style) : 0; +} + +QRgb Theme::selectedBackgroundColor(TextStyle style) const +{ + return m_data ? m_data->selectedBackgroundColor(style) : 0; +} + +bool Theme::isBold(TextStyle style) const +{ + return m_data ? m_data->isBold(style) : false; +} + +bool Theme::isItalic(TextStyle style) const +{ + return m_data ? m_data->isItalic(style) : false; +} + +bool Theme::isUnderline(TextStyle style) const +{ + return m_data ? m_data->isUnderline(style) : false; +} + +bool Theme::isStrikeThrough(TextStyle style) const +{ + return m_data ? m_data->isStrikeThrough(style) : false; +} + +QRgb Theme::editorColor(EditorColorRole role) const +{ + return m_data ? m_data->editorColor(role) : 0; +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/theme.h b/src/libs/3rdparty/syntax-highlighting/src/lib/theme.h new file mode 100644 index 0000000000..adb8431f6a --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/theme.h @@ -0,0 +1,378 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_THEME_H +#define KSYNTAXHIGHLIGHTING_THEME_H + +#include "ksyntaxhighlighting_export.h" + +#include <QColor> +#include <QExplicitlySharedDataPointer> +#include <qobjectdefs.h> +#include <QTypeInfo> + +namespace KSyntaxHighlighting { + +class ThemeData; +class RepositoryPrivate; + +/** + * Color theme definition used for highlighting. + * + * @section theme_intro Introduction + * + * The Theme provides a full color theme for painting the highlighted text. + * One Theme is defined either as a *.theme file on disk, or as a file compiled + * into the SyntaxHighlighting library by using Qt's resource system. Each + * Theme has a unique name(), including a translatedName() if put into the UI. + * Themes shipped by default are typically read-only, see isReadOnly(). + * + * A Theme defines two sets of colors: + * - Text colors, including foreground and background colors, colors for + * selected text, and properties such as bold and italic. These colors are + * used e.g. by the SyntaxHighlighter. + * - Editor colors, including a background color for the entire editor widget, + * the line number color, code folding colors, etc. + * + * @section theme_text_colors Text Colors and the Class Format + * + * The text colors are used for syntax highlighting. + * // TODO: elaborate more and explain relation to Format class + * + * @section theme_editor_colors Editor Colors + * + * If you want to use the SyntaxHighlighting framework to write your own text + * editor, you also need to paint the background of the editing widget. In + * addition, the editor may support showing line numbers, a folding bar, a + * highlight for the current text line, and similar features. All these colors + * are defined in terms of the "editor colors" and accessible by calling + * editorColor() with the desired enum EditorColorRole. + * + * @section theme_access Accessing a Theme + * + * All available Theme%s are accessed through the Repository. These themes are + * typically valid themes. If you create a Theme on your own, isValid() will + * return @e false, and all colors provided by this Theme are in fact invalid + * and therefore unusable. + * + * @see Format + * @since 5.28 + */ +class KSYNTAXHIGHLIGHTING_EXPORT Theme +{ + Q_GADGET +public: + + // TODO KF6: + // - make TextStyle an enum class + // - move out of Theme into KSyntaxHighlighting + // - do the same for EditorColorRole + + /** + * Default styles that can be referenced from syntax definition XML files. + * Make sure to choose readable colors with good contrast especially in + * combination with the EditorColorRole%s. + */ + enum TextStyle { + //! Default text style for normal text and source code without + //! special highlighting. + Normal = 0, + //! Text style for language keywords. + Keyword, + //! Text style for function definitions and function calls. + Function, + //! Text style for variables, if applicable. For instance, variables in + //! PHP typically start with a '$', so all identifiers following the + //! pattern $foo are highlighted as variable. + Variable, + //! Text style for control flow highlighting, such as @e if, @e then, + //! @e else, @e return, or @e continue. + ControlFlow, + //! Text style for operators such as +, -, *, / and :: etc. + Operator, + //! Text style for built-in language classes and functions. + BuiltIn, + //! Text style for well-known extensions, such as Qt or boost. + Extension, + //! Text style for preprocessor statements. + Preprocessor, + //! Text style for attributes of functions or objects, e.g. \@override + //! in Java, or __declspec(...) and __attribute__((...)) in C++. + Attribute, + //! Text style for single characters such as 'a'. + Char, + //! Text style for escaped characters in strings, such as "hello\n". + SpecialChar, + //! Text style for strings, for instance "hello world". + String, + //! Text style for verbatim strings such as HERE docs. + VerbatimString, + //! Text style for special strings such as regular expressions in + //! ECMAScript or the LaTeX math mode. + SpecialString, + //! Text style for includes, imports, modules, or LaTeX packages. + Import, + //! Text style for data types such as int, char, float etc. + DataType, + //! Text style for decimal values. + DecVal, + //! Text style for numbers with base other than 10. + BaseN, + //! Text style for floating point numbers. + Float, + //! Text style for language constants, e.g. True, False, None in Python + //! or nullptr in C/C++. + Constant, + //! Text style for normal comments. + Comment, + //! Text style for comments that reflect API documentation, such as + //! doxygen /** */ comments. + Documentation, + //! Text style for annotations in comments, such as \@param in Doxygen + //! or JavaDoc. + Annotation, + //! Text style that refers to variables in a comment, such as after + //! \@param \<identifier\> in Doxygen or JavaDoc. + CommentVar, + //! Text style for region markers, typically defined by BEGIN/END. + RegionMarker, + //! Text style for information, such as the keyword \@note in Doxygen. + Information, + //! Text style for warnings, such as the keyword \@warning in Doxygen. + Warning, + //! Text style for comment specials such as TODO and WARNING in + //! comments. + Alert, + //! Text style indicating wrong syntax. + Error, + //! Text style for attributes that do not match any of the other default + //! styles. + Others + }; + Q_ENUM(TextStyle) + + /** + * Editor color roles, used to paint line numbers, editor background etc. + * The colors typically should have good contrast with the colors used + * in the TextStyle%s. + */ + enum EditorColorRole { + //! Background color for the editing area. + BackgroundColor = 0, + //! Background color for selected text. + TextSelection, + //! Background color for the line of the current text cursor. + CurrentLine, + //! Background color for matching text while searching. + SearchHighlight, + //! Background color for replaced text for a search & replace action. + ReplaceHighlight, + //! Background color for matching bracket pairs (including quotes) + BracketMatching, + //! Foreground color for visualizing tabs and trailing spaces. + TabMarker, + //! Color used to underline spell check errors. + SpellChecking, + //! Color used to draw vertical indentation levels, typically a line. + IndentationLine, + //! Background color for the icon border. + IconBorder, + //! Background colors for code folding regions in the text area, as well + //! as code folding indicators in the code folding border. + CodeFolding, + //! Foreground color for drawing the line numbers. This should have a + //! good contrast with the IconBorder background color. + LineNumbers, + //! Foreground color for drawing the current line number. This should + //! have a good contrast with the IconBorder background color. + CurrentLineNumber, + //! Color used in the icon border to indicate dynamically wrapped lines. + //! This color should have a good contrast with the IconBorder + //! background color. + WordWrapMarker, + //! Color used to draw a vertical line for marking changed lines. + ModifiedLines, + //! Color used to draw a vertical line for marking saved lines. + SavedLines, + //! Line color used to draw separator lines, e.g. at column 80 in the + //! text editor area. + Separator, + //! Background color for bookmarks. + MarkBookmark, + //! Background color for active breakpoints. + MarkBreakpointActive, + //! Background color for a reached breakpoint. + MarkBreakpointReached, + //! Background color for inactive (disabled) breakpoints. + MarkBreakpointDisabled, + //! Background color for marking the current execution position. + MarkExecution, + //! Background color for general warning marks. + MarkWarning, + //! Background color for general error marks. + MarkError, + //! Background color for text templates (snippets). + TemplateBackground, + //! Background color for all editable placeholders in text templates. + TemplatePlaceholder, + //! Background color for the currently active placeholder in text + //! templates. + TemplateFocusedPlaceholder, + //! Background color for read-only placeholders in text templates. + TemplateReadOnlyPlaceholder + }; + Q_ENUM(EditorColorRole) + + /** + * Default constructor, creating an invalid Theme, see isValid(). + */ + Theme(); + + /** + * Copy constructor, sharing the Theme data with @p copy. + */ + Theme(const Theme ©); + + /** + * Destructor. + */ + ~Theme(); + + /** + * Assignment operator, sharing the Theme data with @p other. + */ + Theme &operator=(const Theme &other); + + /** + * Returns @c true if this is a valid Theme. + * If the theme is invalid, none of the returned colors are well-defined. + */ + bool isValid() const; + + /** + * Returns the unique name of this Theme. + * @see translatedName() + */ + QString name() const; + + /** + * Returns the translated name of this Theme. The translated name can be + * used in the user interface. + */ + QString translatedName() const; + + /** + * Returns @c true if this Theme is read-only. + * + * A Theme is read-only, if the filePath() points to a non-writable file. + * This is typically the case for Themes that are compiled into the executable + * as resource file, as well as for theme files that are installed in read-only + * system locations (e.g. /usr/share/). + */ + bool isReadOnly() const; + + /** + * Returns the full path and file name to this Theme. + * Themes from the Qt resource return the Qt resource path. + * Themes from disk return the local path. + * + * If the theme is invalid (isValid()), an empty string is returned. + */ + QString filePath() const; + + /** + * Returns the text color to be used for @p style. + * @c 0 is returned for styles that do not specify a text color, + * use the default text color in that case. + */ + QRgb textColor(TextStyle style) const; + + /** + * Returns the selected text color to be used for @p style. + * @c 0 is returned for styles that do not specify a selected text color, + * use the default textColor() in that case. + */ + QRgb selectedTextColor(TextStyle style) const; + + /** + * Returns the background color to be used for @p style. + * @c 0 is returned for styles that do not specify a background color, + * use the default background color in that case. + */ + QRgb backgroundColor(TextStyle style) const; + + /** + * Returns the background color to be used for selected text for @p style. + * @c 0 is returned for styles that do not specify a background color, + * use the default backgroundColor() in that case. + */ + QRgb selectedBackgroundColor(TextStyle style) const; + + /** + * Returns whether the given style should be shown in bold. + */ + bool isBold(TextStyle style) const; + + /** + * Returns whether the given style should be shown in italic. + */ + bool isItalic(TextStyle style) const; + + /** + * Returns whether the given style should be shown underlined. + */ + bool isUnderline(TextStyle style) const; + + /** + * Returns whether the given style should be shown struck through. + */ + bool isStrikeThrough(TextStyle style) const; + +public: + /** + * Returns the editor color for the requested @p role. + */ + QRgb editorColor(EditorColorRole role) const; + +private: + /** + * Constructor taking a shared ThemeData instance. + */ + explicit Theme(ThemeData* data); + friend class RepositoryPrivate; + friend class ThemeData; + +private: + /** + * Shared data holder. + */ + QExplicitlySharedDataPointer<ThemeData> m_data; +}; + +} + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO(KSyntaxHighlighting::Theme, Q_MOVABLE_TYPE); +QT_END_NAMESPACE + +#endif // KSYNTAXHIGHLIGHTING_THEME_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/themedata.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/themedata.cpp new file mode 100644 index 0000000000..eac9a92264 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/themedata.cpp @@ -0,0 +1,255 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + Copyright (C) 2016 Dominik Haumann <dhaumann@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "themedata_p.h" +#include "ksyntaxhighlighting_logging.h" + +#include <QFile> +#include <QFileInfo> +#include <QJsonDocument> +#include <QJsonObject> +#include <QJsonValue> +#include <QMetaEnum> + +#include <QDebug> + +using namespace KSyntaxHighlighting; + +ThemeData* ThemeData::get(const Theme &theme) +{ + return theme.m_data.data(); +} + +ThemeData::ThemeData() +{ + memset(m_editorColors, 0, sizeof(m_editorColors)); +} + +/** + * Convert QJsonValue @p val into a color, if possible. Valid colors are only + * in hex format: #rrggbb. On error, returns 0x00000000. + */ +static inline QRgb readColor(const QJsonValue &val) +{ + const QRgb unsetColor = 0; + if (!val.isString()) { + return unsetColor; + } + const QString str = val.toString(); + if (str.isEmpty() || str[0] != QLatin1Char('#')) { + return unsetColor; + } + const QColor color(str); + return color.isValid() ? color.rgb() : unsetColor; +} + +static inline TextStyleData readThemeData(const QJsonObject &obj) +{ + TextStyleData td; + + td.textColor = readColor(obj.value(QLatin1String("text-color"))); + td.backgroundColor = readColor(obj.value(QLatin1String("background-color"))); + td.selectedTextColor = readColor(obj.value(QLatin1String("selected-text-color"))); + td.selectedBackgroundColor = readColor(obj.value(QLatin1String("selected-background-color"))); + + auto val = obj.value(QLatin1String("bold")); + if (val.isBool()) { + td.bold = val.toBool(); + td.hasBold = true; + } + val = obj.value(QLatin1String("italic")); + if (val.isBool()) { + td.italic = val.toBool(); + td.hasItalic = true; + } + val = obj.value(QLatin1String("underline")); + if (val.isBool()) { + td.underline = val.toBool(); + td.hasUnderline = true; + } + val = obj.value(QLatin1String("strike-through")); + if (val.isBool()) { + td.strikeThrough = val.toBool(); + td.hasStrikeThrough = true; + } + + return td; +} + +bool ThemeData::load(const QString &filePath) +{ + QFile loadFile(filePath); + if (!loadFile.open(QIODevice::ReadOnly)) { + return false; + } + const QByteArray jsonData = loadFile.readAll(); + + QJsonParseError parseError; + QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData, &parseError); + if (parseError.error != QJsonParseError::NoError) { + qCWarning(Log) << "Failed to parse theme file" << filePath << ":" << parseError.errorString(); + return false; + } + + m_filePath = filePath; + + QJsonObject obj = jsonDoc.object(); + + // read metadata + const QJsonObject metadata = obj.value(QLatin1String("metadata")).toObject(); + m_name = metadata.value(QLatin1String("name")).toString(); + m_revision = metadata.value(QLatin1String("revision")).toInt(); + + // read text styles + static const auto idx = Theme::staticMetaObject.indexOfEnumerator("TextStyle"); + Q_ASSERT(idx >= 0); + const auto metaEnum = Theme::staticMetaObject.enumerator(idx); + const QJsonObject textStyles = obj.value(QLatin1String("text-styles")).toObject(); + for (int i = 0; i < metaEnum.keyCount(); ++i) { + Q_ASSERT(i == metaEnum.value(i)); + m_textStyles[i] = readThemeData(textStyles.value(QLatin1String(metaEnum.key(i))).toObject()); + } + + // read editor area colors + const QJsonObject editorColors = obj.value(QLatin1String("editor-colors")).toObject(); + m_editorColors[Theme::BackgroundColor] = readColor(editorColors.value(QLatin1String("background-color"))); + m_editorColors[Theme::TextSelection] = readColor(editorColors.value(QLatin1String("selection"))); + m_editorColors[Theme::CurrentLine] = readColor(editorColors.value(QLatin1String("current-line"))); + m_editorColors[Theme::SearchHighlight] = readColor(editorColors.value(QLatin1String("search-highlight"))); + m_editorColors[Theme::ReplaceHighlight] = readColor(editorColors.value(QLatin1String("replace-highlight"))); + m_editorColors[Theme::BracketMatching] = readColor(editorColors.value(QLatin1String("bracket-matching"))); + m_editorColors[Theme::TabMarker] = readColor(editorColors.value(QLatin1String("tab-marker"))); + m_editorColors[Theme::SpellChecking] = readColor(editorColors.value(QLatin1String("spell-checking"))); + m_editorColors[Theme::IndentationLine] = readColor(editorColors.value(QLatin1String("indentation-line"))); + m_editorColors[Theme::IconBorder] = readColor(editorColors.value(QLatin1String("icon-border"))); + m_editorColors[Theme::CodeFolding] = readColor(editorColors.value(QLatin1String("code-folding"))); + m_editorColors[Theme::LineNumbers] = readColor(editorColors.value(QLatin1String("line-numbers"))); + m_editorColors[Theme::CurrentLineNumber] = readColor(editorColors.value(QLatin1String("current-line-number"))); + m_editorColors[Theme::WordWrapMarker] = readColor(editorColors.value(QLatin1String("word-wrap-marker"))); + m_editorColors[Theme::ModifiedLines] = readColor(editorColors.value(QLatin1String("modified-lines"))); + m_editorColors[Theme::SavedLines] = readColor(editorColors.value(QLatin1String("saved-lines"))); + m_editorColors[Theme::Separator] = readColor(editorColors.value(QLatin1String("separator"))); + m_editorColors[Theme::MarkBookmark] = readColor(editorColors.value(QLatin1String("mark-bookmark"))); + m_editorColors[Theme::MarkBreakpointActive] = readColor(editorColors.value(QLatin1String("mark-breakpoint-active"))); + m_editorColors[Theme::MarkBreakpointReached] = readColor(editorColors.value(QLatin1String("mark-breakpoint-reached"))); + m_editorColors[Theme::MarkBreakpointDisabled] = readColor(editorColors.value(QLatin1String("mark-breakpoint-disabled"))); + m_editorColors[Theme::MarkExecution] = readColor(editorColors.value(QLatin1String("mark-execution"))); + m_editorColors[Theme::MarkWarning] = readColor(editorColors.value(QLatin1String("mark-warning"))); + m_editorColors[Theme::MarkError] = readColor(editorColors.value(QLatin1String("mark-error"))); + m_editorColors[Theme::TemplateBackground] = readColor(editorColors.value(QLatin1String("template-background"))); + m_editorColors[Theme::TemplatePlaceholder] = readColor(editorColors.value(QLatin1String("template-placeholder"))); + m_editorColors[Theme::TemplateFocusedPlaceholder] = readColor(editorColors.value(QLatin1String("template-focused-placeholder"))); + m_editorColors[Theme::TemplateReadOnlyPlaceholder] = readColor(editorColors.value(QLatin1String("template-read-only-placeholder"))); + + // read per-definition style overrides + const auto customStyles = obj.value(QLatin1String("custom-styles")).toObject(); + for (auto it = customStyles.begin(); it != customStyles.end(); ++it) { + const auto obj = it.value().toObject(); + QHash<QString, TextStyleData> overrideStyle; + for (auto it2 = obj.begin(); it2 != obj.end(); ++it2) + overrideStyle.insert(it2.key(), readThemeData(it2.value().toObject())); + m_textStyleOverrides.insert(it.key(), overrideStyle); + } + + return true; +} + +QString ThemeData::name() const +{ + return m_name; +} + +int ThemeData::revision() const +{ + return m_revision; +} + +bool ThemeData::isReadOnly() const +{ + return !QFileInfo(m_filePath).isWritable(); +} + +QString ThemeData::filePath() const +{ + return m_filePath; +} + +QRgb ThemeData::textColor(Theme::TextStyle style) const +{ + Q_ASSERT(static_cast<int>(style) >= 0 && static_cast<int>(style) <= static_cast<int>(Theme::Others)); + return m_textStyles[style].textColor; +} + +QRgb ThemeData::selectedTextColor(Theme::TextStyle style) const +{ + Q_ASSERT(static_cast<int>(style) >= 0 && static_cast<int>(style) <= static_cast<int>(Theme::Others)); + return m_textStyles[style].selectedTextColor; +} + +QRgb ThemeData::backgroundColor(Theme::TextStyle style) const +{ + Q_ASSERT(static_cast<int>(style) >= 0 && static_cast<int>(style) <= static_cast<int>(Theme::Others)); + return m_textStyles[style].backgroundColor; +} + +QRgb ThemeData::selectedBackgroundColor(Theme::TextStyle style) const +{ + Q_ASSERT(static_cast<int>(style) >= 0 && static_cast<int>(style) <= static_cast<int>(Theme::Others)); + return m_textStyles[style].selectedBackgroundColor; +} + +bool ThemeData::isBold(Theme::TextStyle style) const +{ + Q_ASSERT(static_cast<int>(style) >= 0 && static_cast<int>(style) <= static_cast<int>(Theme::Others)); + return m_textStyles[style].bold; +} + +bool ThemeData::isItalic(Theme::TextStyle style) const +{ + Q_ASSERT(static_cast<int>(style) >= 0 && static_cast<int>(style) <= static_cast<int>(Theme::Others)); + return m_textStyles[style].italic; +} + +bool ThemeData::isUnderline(Theme::TextStyle style) const +{ + Q_ASSERT(static_cast<int>(style) >= 0 && static_cast<int>(style) <= static_cast<int>(Theme::Others)); + return m_textStyles[style].underline; +} + +bool ThemeData::isStrikeThrough(Theme::TextStyle style) const +{ + Q_ASSERT(static_cast<int>(style) >= 0 && static_cast<int>(style) <= static_cast<int>(Theme::Others)); + return m_textStyles[style].strikeThrough; +} + +QRgb ThemeData::editorColor(Theme::EditorColorRole role) const +{ + Q_ASSERT(static_cast<int>(role) >= 0 && static_cast<int>(role) <= static_cast<int>(Theme::TemplateReadOnlyPlaceholder)); + return m_editorColors[role]; +} + +TextStyleData ThemeData::textStyleOverride(const QString& definitionName, const QString& attributeName) const +{ + return m_textStyleOverrides.value(definitionName).value(attributeName); +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/themedata_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/themedata_p.h new file mode 100644 index 0000000000..3b5f4637a9 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/themedata_p.h @@ -0,0 +1,170 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + Copyright (C) 2016 Dominik Haumann <dhaumann@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_THEMEDATA_P_H +#define KSYNTAXHIGHLIGHTING_THEMEDATA_P_H + +#include "theme.h" +#include "textstyledata_p.h" + +#include <QHash> +#include <QSharedData> + +namespace KSyntaxHighlighting { + +/** + * Data container for a Theme. + */ +class ThemeData : public QSharedData +{ +public: + static ThemeData* get(const Theme &theme); + + /** + * Default constructor, creating an uninitialized ThemeData instance. + */ + ThemeData(); + + /** + * Load the Theme data from the file @p filePath. + * Note, that @p filePath either is a local file, or a qt resource location. + */ + bool load(const QString &filePath); + + /** + * Returns the unique name of this Theme. + */ + QString name() const; + + /** + * Returns the revision of this Theme. + * The revision in a .theme file should be increased with every change. + */ + int revision() const; + + /** + * Returns @c true if this Theme is read-only. + * Typically, themes that are shipped by default are read-only. + */ + bool isReadOnly() const; + + /** + * Returns the full path and filename to this Theme. + * Themes from the Qt resource return the Qt resource path. + * Themes from disk return the local path. + * + * If the theme is invalid (isValid()), an empty string is returned. + */ + QString filePath() const; + + /** + * Returns the text color to be used for @p style. + * @c 0 is returned for styles that do not specify a text color, + * use the default text color in that case. + */ + QRgb textColor(Theme::TextStyle style) const; + + /** + * Returns the text color for selected to be used for @p style. + * @c 0 is returned for styles that do not specify a selected text color, + * use the textColor() in that case. + */ + QRgb selectedTextColor(Theme::TextStyle style) const; + + /** + * Returns the background color to be used for @p style. + * @c 0 is returned for styles that do not specify a background color, + * use the default background color in that case. + */ + QRgb backgroundColor(Theme::TextStyle style) const; + + /** + * Returns the background color for selected text to be used for @p style. + * @c 0 is returned for styles that do not specify a selected background + * color, use the default backgroundColor() in that case. + */ + QRgb selectedBackgroundColor(Theme::TextStyle style) const; + + /** + * Returns whether the given style should be shown in bold. + */ + bool isBold(Theme::TextStyle style) const; + + /** + * Returns whether the given style should be shown in italic. + */ + bool isItalic(Theme::TextStyle style) const; + + /** + * Returns whether the given style should be shown underlined. + */ + bool isUnderline(Theme::TextStyle style) const; + + /** + * Returns whether the given style should be shown struck through. + */ + bool isStrikeThrough(Theme::TextStyle style) const; + +public: + /** + * Returns the editor color for the requested @p role. + */ + QRgb editorColor(Theme::EditorColorRole role) const; + + /** + * Returns the TextStyle override of a specific "itemData" with attributeName + * in the syntax definition called definitionName. + * + * If no override exists, a valid TextStyleData with the respective default + * TextStyle will be used, so the returned value is always valid. + */ + TextStyleData textStyleOverride(const QString &definitionName, const QString &attributeName) const; + +private: + int m_revision = 0; + QString m_name; + + //! Path to the file where the theme came from. + //! This is either a resource location (":/themes/Default.theme"), or a file + //! on disk (in a read-only or a writeable location). + QString m_filePath; + + //! TextStyles + TextStyleData m_textStyles[Theme::Others + 1]; + + //! style overrides for individual itemData entries + //! definition name -> attribute name -> style + QHash<QString, QHash<QString, TextStyleData> > m_textStyleOverrides; + + //! Editor area colors + QRgb m_editorColors[Theme::TemplateReadOnlyPlaceholder + 1]; +}; + +} + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO(KSyntaxHighlighting::TextStyleData, Q_MOVABLE_TYPE); +QT_END_NAMESPACE + +#endif // KSYNTAXHIGHLIGHTING_THEMEDATA_P_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/wildcardmatcher.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/wildcardmatcher.cpp new file mode 100644 index 0000000000..167295a930 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/wildcardmatcher.cpp @@ -0,0 +1,83 @@ +/* + Copyright (C) 2007 Sebastian Pipping <webmaster@hartwork.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "wildcardmatcher_p.h" + +using namespace KSyntaxHighlighting; + +#include <QString> +#include <QChar> + +static bool exactMatch(const QString &candidate, const QString &wildcard, int candidatePosFromRight, + int wildcardPosFromRight, bool caseSensitive = true) +{ + for (; wildcardPosFromRight >= 0; wildcardPosFromRight--) { + const auto ch = wildcard.at(wildcardPosFromRight).unicode(); + switch (ch) { + case L'*': + if (candidatePosFromRight == -1) { + break; + } + + if (wildcardPosFromRight == 0) { + return true; + } + + // Eat all we can and go back as far as we have to + for (int j = -1; j <= candidatePosFromRight; j++) { + if (exactMatch(candidate, wildcard, j, wildcardPosFromRight - 1)) { + return true; + } + } + return false; + + case L'?': + if (candidatePosFromRight == -1) { + return false; + } + + candidatePosFromRight--; + break; + + default: + if (candidatePosFromRight == -1) { + return false; + } + + const auto candidateCh = candidate.at(candidatePosFromRight).unicode(); + const auto match = caseSensitive ? (candidateCh == ch) : (QChar::toLower(candidateCh) == QChar::toLower(ch)); + if (match) { + candidatePosFromRight--; + } else { + return false; + } + } + } + return true; +} + +bool WildcardMatcher::exactMatch(const QString &candidate, const QString &wildcard, + bool caseSensitive) +{ + return ::exactMatch(candidate, wildcard, candidate.length() - 1, wildcard.length() - 1, caseSensitive); +} diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/wildcardmatcher_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/wildcardmatcher_p.h new file mode 100644 index 0000000000..016b10fe66 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/wildcardmatcher_p.h @@ -0,0 +1,51 @@ +/* + Copyright (C) 2007 Sebastian Pipping <webmaster@hartwork.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_WILDCARDMATCHER_P_H +#define KSYNTAXHIGHLIGHTING_WILDCARDMATCHER_P_H + +#include <QtGlobal> + +QT_BEGIN_NAMESPACE +class QString; +QT_END_NAMESPACE + +namespace KSyntaxHighlighting { + +namespace WildcardMatcher +{ + /** + * Matches a string against a given wildcard. + * The wildcard supports '*' (".*" in regex) and '?' ("." in regex), not more. + * + * @param candidate Text to match + * @param wildcard Wildcard to use + * @param caseSensitive Case-sensitivity flag + * @return True for an exact match, false otherwise + */ + bool exactMatch(const QString &candidate, const QString &wildcard, bool caseSensitive = true); +} + +} + +#endif // KSYNTAXHIGHLIGHTING_WILDCARDMATCHER_P_H diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/xml_p.h b/src/libs/3rdparty/syntax-highlighting/src/lib/xml_p.h new file mode 100644 index 0000000000..5f1f066dfd --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/xml_p.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2016 Volker Krause <vkrause@kde.org> + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef KSYNTAXHIGHLIGHTING_XML_P_H +#define KSYNTAXHIGHLIGHTING_XML_P_H + +#include <QString> + +namespace KSyntaxHighlighting { +/** Utilities for XML parsing. */ +namespace Xml { + +/** Parse a xs:boolean attribute. */ +inline bool attrToBool(const QStringRef &str) +{ + return str == QLatin1String("1") || str.compare(QLatin1String("true"), Qt::CaseInsensitive) == 0; +} + +} +} + +#endif diff --git a/src/libs/3rdparty/syntax-highlighting/syntax-highlighting.pro b/src/libs/3rdparty/syntax-highlighting/syntax-highlighting.pro new file mode 100644 index 0000000000..38127e1cfe --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/syntax-highlighting.pro @@ -0,0 +1,55 @@ +include(../../../qtcreatorlibrary.pri) +include(autogenerated/autogenerated.pri) + +QT += network + +DEFINES += KSYNTAXHIGHLIGHTING_LIBRARY + +RESOURCES += \ + data/themes/theme-data.qrc + +HEADERS += \ + src/lib/abstracthighlighter.h \ + src/lib/abstracthighlighter_p.h \ + src/lib/context_p.h \ + src/lib/contextswitch_p.h \ + src/lib/definition.h \ + src/lib/definition_p.h \ + src/lib/definitiondownloader.h \ + src/lib/definitionref_p.h \ + src/lib/foldingregion.h \ + src/lib/format.h \ + src/lib/format_p.h \ + src/lib/htmlhighlighter.h \ + src/lib/keywordlist_p.h \ + src/lib/ksyntaxhighlighting_export.h \ + src/lib/matchresult_p.h \ + src/lib/repository.h \ + src/lib/repository_p.h \ + src/lib/rule_p.h \ + src/lib/state.h \ + src/lib/state_p.h \ + src/lib/syntaxhighlighter.h \ + src/lib/textstyledata_p.h \ + src/lib/theme.h \ + src/lib/themedata_p.h \ + src/lib/wildcardmatcher_p.h \ + src/lib/xml_p.h \ + +SOURCES += \ + src/lib/abstracthighlighter.cpp \ + src/lib/context.cpp \ + src/lib/contextswitch.cpp \ + src/lib/definition.cpp \ + src/lib/definitiondownloader.cpp \ + src/lib/foldingregion.cpp \ + src/lib/format.cpp \ + src/lib/htmlhighlighter.cpp \ + src/lib/keywordlist.cpp \ + src/lib/repository.cpp \ + src/lib/rule.cpp \ + src/lib/state.cpp \ + src/lib/syntaxhighlighter.cpp \ + src/lib/theme.cpp \ + src/lib/themedata.cpp \ + src/lib/wildcardmatcher.cpp \ diff --git a/src/libs/3rdparty/syntax-highlighting/syntax-highlighting.qbs b/src/libs/3rdparty/syntax-highlighting/syntax-highlighting.qbs new file mode 100644 index 0000000000..248ebe0fd4 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/syntax-highlighting.qbs @@ -0,0 +1,88 @@ +import qbs 1.0 +import qbs.File +import qbs.FileInfo +import qbs.Environment + +Project { + QtcDevHeaders { + productName: "syntax-highlighting (3rd party)" + baseDir: sourceDirectory + "/src/lib" + } + QtcDevHeaders { + productName: "syntax-highlighting autogenerated (3rd party)" + baseDir: sourceDirectory + "/autogenerated/src/lib" + Group { + prefix: baseDir + '/' + files: [ + "AbstractHighlighter", + "Definition", + "FoldingRegion", + "Format", + "Repository", + "State", + "SyntaxHighlighter", + "Theme" + ] + qbs.install: true + qbs.installDir: qtc.ide_include_path + '/' + FileInfo.fileName(product.sourceDirectory) + qbs.installSourceBase: baseDir + } + } + + QtcLibrary { + name: "KSyntaxHighlighting" + + cpp.defines: base.concat("KSYNTAXHIGHLIGHTING_LIBRARY") + cpp.includePaths: [ + product.sourceDirectory + "/src/lib/", + product.sourceDirectory + "/autogenerated/src/lib/", + product.sourceDirectory + "/autogenerated/" + ] + + Depends { name: "Qt.gui" } + Depends { name: "Qt.network" } + + Group { + name: "lib" + prefix: "src/lib/" + files: [ + "*.h", + "*.cpp" + ] + } + + Group { + name: "KSyntaxHighlighting data" + qbs.install: true + qbs.installDir: qtc.ide_data_path + "/generic-highlighter/" + qbs.installSourceBase: project.ide_source_tree + "/src/libs/3rdparty/syntax-highlighting/data/" + prefix: project.ide_source_tree + "/src/libs/3rdparty/syntax-highlighting/data/" + files: [ + "syntax/**/*" + ] + } + + Group { + name: "autogenerated lib" + prefix: "autogenerated/src/lib/" + files: [ + "*.h", + "*.cpp" + ] + } + + Group { + name: "theme data" + prefix: "data/themes/" + files: [ "theme-data.qrc" ] + } + + Export { + Depends { name: "cpp" } + cpp.includePaths: [ + product.sourceDirectory + "/src/lib/", + product.sourceDirectory + "/autogenerated/src/lib/", + ] + } + } +} diff --git a/src/libs/3rdparty/syntax-highlighting/syntax-highlighting_dependencies.pri b/src/libs/3rdparty/syntax-highlighting/syntax-highlighting_dependencies.pri new file mode 100644 index 0000000000..f2fd3e61b2 --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/syntax-highlighting_dependencies.pri @@ -0,0 +1,3 @@ +QTC_LIB_NAME = KSyntaxHighlighting +INCLUDEPATH *= $$PWD/src/lib +INCLUDEPATH *= $$PWD/autogenerated/src/lib diff --git a/src/libs/libs.pro b/src/libs/libs.pro index d998316fba..1ffb3bc9a4 100644 --- a/src/libs/libs.pro +++ b/src/libs/libs.pro @@ -31,7 +31,9 @@ for(l, SUBDIRS) { } SUBDIRS += \ - utils/process_stub.pro + utils/process_stub.pro \ + 3rdparty/syntax-highlighting \ + 3rdparty/syntax-highlighting/data win32:SUBDIRS += utils/process_ctrlc_stub.pro diff --git a/src/libs/libs.qbs b/src/libs/libs.qbs index 5db1dee72b..1c4275f6f1 100644 --- a/src/libs/libs.qbs +++ b/src/libs/libs.qbs @@ -21,5 +21,6 @@ Project { "utils/process_stub.qbs", "utils/process_ctrlc_stub.qbs", "utils/utils.qbs", + "3rdparty/syntax-highlighting/syntax-highlighting.qbs", ].concat(project.additionalLibs) } |