aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2018-11-08 11:39:48 +0100
committerDavid Schulz <david.schulz@qt.io>2019-01-28 11:37:08 +0000
commit14834e6b0a4e7c1272ec3a1838b0634dd66e72ea (patch)
tree23caed8a748c0d38c59e1f92b448551122d11df2 /src/libs/3rdparty
parent1c77d7e1a79f59485eb90c066d17ec7436f46a93 (diff)
TextEditor: replace generic highlighter with ksyntaxhighlighting
Fixes: QTCREATORBUG-21029 Change-Id: I9894c4384e0e47da6bf030b7b8e07c3ad4737ff3 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/libs/3rdparty')
-rw-r--r--src/libs/3rdparty/syntax-highlighting/.arcconfig3
-rw-r--r--src/libs/3rdparty/syntax-highlighting/.gitignore9
-rw-r--r--src/libs/3rdparty/syntax-highlighting/.kateconfig1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/.krazy2
-rw-r--r--src/libs/3rdparty/syntax-highlighting/CMakeLists.txt134
-rw-r--r--src/libs/3rdparty/syntax-highlighting/COPYING20
-rw-r--r--src/libs/3rdparty/syntax-highlighting/KF5SyntaxHighlightingConfig.cmake.in6
-rw-r--r--src/libs/3rdparty/syntax-highlighting/QC_README.txt0
-rw-r--r--src/libs/3rdparty/syntax-highlighting/README.md32
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/autogenerated.pri9
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/ksyntaxhighlighting_version.h12
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/AbstractHighlighter1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Definition1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/FoldingRegion1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Format1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Repository1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/State1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/SyntaxHighlighter1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/Theme1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/ksyntaxhighlighting_logging.cpp11
-rw-r--r--src/libs/3rdparty/syntax-highlighting/autogenerated/src/lib/ksyntaxhighlighting_logging.h11
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/CMakeLists.txt61
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/data.pro11
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/generators/cmake.xml.tpl323
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/generators/cmake.yaml2446
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/generators/generate-cmake-syntax.py151
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/generators/generate-php.pl58
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/generators/get-Qt-classes.sh40
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/generators/get-Qt-macros.sh33
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/generators/nsis-gen.py23
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/generators/qmake-gen.py57
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/schema/language.xsd668
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/schema/validatehl.sh2
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax-data.qrc.in7
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/alert.xml53
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/bash.xml980
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/cmake.xml3829
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/css.xml1735
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/doxygen.xml489
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/dtd.xml110
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/html.xml227
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/ini.xml78
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/java.xml3865
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/javadoc.xml111
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/json.xml104
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/makefile.xml498
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/markdown.xml148
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/perl.xml878
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/powershell.xml934
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/python.xml688
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/qdocconf.xml136
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/ruby.xml915
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/valgrind-suppression.xml51
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/xml.xml149
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/syntax/yacc.xml264
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/themes/breeze-dark.theme174
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/themes/default.theme174
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/themes/printing.theme173
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/themes/solarized-dark.theme175
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/themes/solarized-light.theme175
-rw-r--r--src/libs/3rdparty/syntax-highlighting/data/themes/theme-data.qrc10
-rw-r--r--src/libs/3rdparty/syntax-highlighting/examples/CMakeLists.txt4
-rw-r--r--src/libs/3rdparty/syntax-highlighting/examples/codeeditor.cpp358
-rw-r--r--src/libs/3rdparty/syntax-highlighting/examples/codeeditor.h69
-rw-r--r--src/libs/3rdparty/syntax-highlighting/examples/main.cpp46
-rw-r--r--src/libs/3rdparty/syntax-highlighting/metainfo.yaml21
-rw-r--r--src/libs/3rdparty/syntax-highlighting/org_kde_ksyntaxhighlighting.categories1
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/CMakeLists.txt5
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/Messages.sh11
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/cli/CMakeLists.txt5
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/cli/kate-syntax-highlighter.cpp164
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/indexer/CMakeLists.txt36
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/indexer/katehighlightingindexer.cpp589
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/CMakeLists.txt86
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter.cpp328
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter.h195
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/abstracthighlighter_p.h54
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/context.cpp206
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/context_p.h139
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/contextswitch.cpp90
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/contextswitch_p.h56
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/definition.cpp798
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/definition.h400
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/definition_p.h111
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/definitiondownloader.cpp193
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/definitiondownloader.h113
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/definitionref_p.h74
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/foldingregion.cpp60
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/foldingregion.h108
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/format.cpp264
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/format.h152
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/format_p.h55
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/htmlhighlighter.cpp161
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/htmlhighlighter.h64
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/keywordlist.cpp104
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/keywordlist_p.h101
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/ksyntaxhighlighting_export.h34
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/matchresult_p.h113
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp325
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/repository.h257
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/repository_p.h72
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/rule.cpp663
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/rule_p.h291
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/state.cpp123
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/state.h86
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/state_p.h81
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/syntaxhighlighter.cpp198
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/syntaxhighlighter.h85
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/textstyledata_p.h63
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/theme.cpp124
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/theme.h378
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/themedata.cpp255
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/themedata_p.h170
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/wildcardmatcher.cpp83
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/wildcardmatcher_p.h51
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/xml_p.h42
-rw-r--r--src/libs/3rdparty/syntax-highlighting/syntax-highlighting.pro55
-rw-r--r--src/libs/3rdparty/syntax-highlighting/syntax-highlighting.qbs88
-rw-r--r--src/libs/3rdparty/syntax-highlighting/syntax-highlighting_dependencies.pri3
119 files changed, 30122 insertions, 0 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="\\[&quot;$n\\]" />
+ <DetectChar attribute="Strings" context="String" char="&quot;" />
+ <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="&quot;(?=[ );]|$)" />
+ <RegExpr attribute="Escapes" context="#stay" String="\\[&quot;$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="&lt;" />
+ </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="&gt;" />
+ <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=\"&lt;\\?(?:=|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_:#&#37;@-]*">
+ <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*">
+ <!ENTITY word "[^|&amp;;()&lt;&gt;\s]+"> <!-- see man bash -->
+ <!ENTITY eos "(?=($|\s))"> <!-- eol or space following -->
+ <!ENTITY noword "(?![\w$+-])"> <!-- no word, $, + or - following -->
+ <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )"> <!-- 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*&lt;&lt;&lt;" />
+ <!-- handle here document -->
+ <Detect2Chars attribute="Redirection" context="HereDoc" char="&lt;" char1="&lt;" lookAhead="true" />
+ <!-- handle process subst -->
+ <RegExpr attribute="Redirection" context="ProcessSubst" String="[&lt;&gt;]\(" />
+ <!-- handle redirection -->
+ <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />
+ <!-- handle &, &&, | and || -->
+ <RegExpr attribute="Control" context="#stay" String="([|&amp;])\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;*(?=([/);$`'&quot;]|$))" />
+ <RegExpr attribute="OtherCommand" context="CommandArgs" String="/&pathpart;*(?=([\s);$`'&quot;]|$))" />
+ <!-- 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*&lt;&lt;&lt;" />
+ <!-- handle here document -->
+ <Detect2Chars attribute="Redirection" context="HereDoc" char="&lt;" char1="&lt;" lookAhead="true" />
+ <!-- handle process subst -->
+ <RegExpr attribute="Redirection" context="ProcessSubst" String="[&lt;&gt;]\(" />
+ <!-- handle redirection -->
+ <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />
+ <!-- handle &, &&, | and || -->
+ <RegExpr attribute="Control" context="#pop" String="([|&amp;;])\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;*(?=([/);$`'&quot;]|$))" />
+ <RegExpr attribute="OtherCommand" context="CommandArgsBackq" String="/&pathpart;*(?=([\s);$`'&quot;]|$))" />
+ <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/):;$`'&quot;]|$))" />
+ <!-- TODO: shell globs beside * and ? (in Path's) -->
+ </context>
+ <context attribute="Normal Text" lineEndContext="#stay" name="Escapes">
+ <RegExpr attribute="Escape" context="#stay" String="\\[][;\\$`{}()|&amp;&lt;&gt;* ]" />
+ </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="&quot;" />
+ <DetectChar attribute="String SingleQ" context="StringSQ" char="'" />
+ <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;" />
+ <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" />
+ <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1="&quot;" />
+ </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="$(&lt;" />
+ <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="([!=]=?|[&gt;&lt;])(?=\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;|&amp;]))" endRegion="expression" />
+ <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&amp;]))" 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;|&amp;]))" endRegion="expression" />
+ <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&amp;]))" 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="[^]})|;`&amp;&gt;&lt;]" />
+ </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="&quot;" />
+ <RegExpr attribute="String Escape" context="#stay" String="\\[`&quot;\\$\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="(&lt;&lt;-\s*&quot;(&word;)&quot;)" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocIQ" String="(&lt;&lt;-\s*'(&word;)')" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocIQ" String="(&lt;&lt;-\s*\\(&word;))" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocINQ" String="(&lt;&lt;-\s*(&word;))" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocQ" String="(&lt;&lt;\s*&quot;(&word;)&quot;)" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocQ" String="(&lt;&lt;\s*'(&word;)')" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocQ" String="(&lt;&lt;\s*\\(&word;))" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocNQ" String="(&lt;&lt;\s*(&word;))" lookAhead="true" />
+ <Detect2Chars attribute="Redirection" context="#pop" char="&lt;" char1="&lt;" /><!-- 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="\\[&quot;$n\\]" />
+ <DetectChar attribute="Strings" context="String" char="&quot;" />
+ <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="&quot;(?=[ );]|$)" />
+ <RegExpr attribute="Escapes" context="#stay" String="\\[&quot;$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="&lt;" />
+ </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="&gt;" />
+ <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="&quot;" />
+ <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="&quot;" />
+ <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="\\?[^&quot;'\\]+" />
+ </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>\&amp;</item> <item>@&amp;</item>
+ <item>\&gt;</item> <item>@&gt;</item>
+ <item>\&lt;</item> <item>@&lt;</item>
+ <item>\&quot;</item> <item>@&quot;</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="//(!|(/(?=[^/]|$)))&lt;?" />
+ <RegExpr attribute="Comment" context="BlockComment" String="/\*(\*[^*/]|!|[*!]&lt;|\*$)" 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="&lt;!--" />
+ <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+ <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\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="\\(&lt;|&gt;)" />
+ <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+ <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
+ <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
+ </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="&lt;!--" />
+ <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+ <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\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="&gt;" />
+ <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />
+ <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="--&gt;" />
+ </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="&quot;" />
+ </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="&quot;" />
+ </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="&lt;!--" />
+ <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+ <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\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="&gt;" />
+ <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />
+ <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="--&gt;" />
+ </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="&quot;" />
+ </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="&quot;" />
+ </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="&amp;[A-Za-z]+&#59;" />
+ </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="&lt;!--" beginRegion="comment" />
+ <StringDetect attribute="Processing Instruction" context="PI" String="&lt;?xml" beginRegion="pi" />
+ <StringDetect attribute="Declaration" context="Declaration" String="&lt;!ELEMENT" beginRegion="declaration" />
+ <StringDetect attribute="Declaration" context="Declaration" String="&lt;!ATTLIST" beginRegion="declaration" />
+ <StringDetect attribute="Declaration" context="Declaration" String="&lt;!NOTATION" beginRegion="declaration" />
+ <StringDetect attribute="Declaration" context="Declaration" String="&lt;!ENTITY" beginRegion="declaration" />
+ <DetectIdentifier />
+ </context>
+
+ <context name="Comment" attribute="Comment" lineEndContext="#stay">
+ <DetectSpaces />
+ <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+ <IncludeRules context="##Alerts" />
+ <DetectIdentifier />
+ </context>
+
+ <context name="PI" attribute="Other" lineEndContext="#stay">
+ <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+ </context>
+
+ <context name="Declaration" attribute="Other" lineEndContext="#stay">
+ <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+ <Detect2Chars attribute="Comment" context="InlineComment" char="-" char1="-" />
+ <DetectChar attribute="Declaration" context="#pop" char="&gt;" endRegion="declaration" />
+ <DetectChar attribute="String" context="String" char="&quot;" />
+ <RegExpr attribute="Declaration" context="#stay" String="(-|O)\s(-|O)" />
+ <AnyChar attribute="Delimiter" context="#stay" String="(|)," />
+ <RegExpr attribute="Entity" context="#stay" String="(%|&amp;)&entref;" />
+ <AnyChar attribute="Symbol" context="#stay" String="?*+-&amp;" />
+ <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="&quot;" />
+ <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="&lt;!--" end="--&gt;" />
+ </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 "&amp;(#[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="&lt;!--" beginRegion="comment" />
+ <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+ <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype" />
+ <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+ <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />
+ <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="true" beginRegion="pre" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="true" beginRegion="div" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="true" beginRegion="table" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;ul\b" insensitive="true" beginRegion="ul" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;ol\b" insensitive="true" beginRegion="ol" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;dl\b" insensitive="true" beginRegion="dl" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;article\b" insensitive="true" beginRegion="article" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;aside\b" insensitive="true" beginRegion="aside" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;details\b" insensitive="true" beginRegion="details" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;figure\b" insensitive="true" beginRegion="figure" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;footer\b" insensitive="true" beginRegion="footer" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;header\b" insensitive="true" beginRegion="header" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;main\b" insensitive="true" beginRegion="main" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;nav\b" insensitive="true" beginRegion="nav" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;section\b" insensitive="true" beginRegion="section" />
+ <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="true" endRegion="pre" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="true" endRegion="div" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="true" endRegion="table" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/ul\b" insensitive="true" endRegion="ul" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/ol\b" insensitive="true" endRegion="ol" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/dl\b" insensitive="true" endRegion="dl" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/article\b" insensitive="true" endRegion="article" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/aside\b" insensitive="true" endRegion="aside" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/details\b" insensitive="true" endRegion="details" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/figure\b" insensitive="true" endRegion="figure" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/footer\b" insensitive="true" endRegion="footer" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/header\b" insensitive="true" endRegion="header" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/main\b" insensitive="true" endRegion="main" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/nav\b" insensitive="true" endRegion="nav" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/section\b" insensitive="true" endRegion="section" />
+ <RegExpr attribute="Element" context="El Close" String="&lt;/&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="&amp;&lt;" />
+ </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="&amp;%" />
+ </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="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+ </context>
+
+
+ <context name="Comment" attribute="Comment" lineEndContext="#stay">
+ <DetectSpaces/>
+ <IncludeRules context="##Alerts" />
+ <DetectIdentifier/>
+ <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+ <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
+ </context>
+
+ <context name="CDATA" attribute="Other Text" lineEndContext="#stay">
+ <DetectSpaces/>
+ <DetectIdentifier/>
+ <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
+ <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
+ </context>
+
+ <context name="PI" attribute="Other Text" lineEndContext="#stay">
+ <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+ </context>
+
+ <context name="Doctype" attribute="Other Text" lineEndContext="#stay">
+ <DetectChar attribute="Doctype" context="#pop" char="&gt;" 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="&lt;!--" beginRegion="comment" />
+ <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+ <IncludeRules context="FindPEntityRefs" />
+ </context>
+
+ <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay">
+ <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+ <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
+ <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+ </context>
+
+ <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+ <DetectChar attribute="Value" context="#pop" char="&quot;" />
+ <IncludeRules context="FindPEntityRefs" />
+ </context>
+
+ <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+ <DetectChar attribute="Value" context="#pop" char="&apos;" />
+ <IncludeRules context="FindPEntityRefs" />
+ </context>
+
+ <context name="El Open" attribute="Other Text" lineEndContext="#stay">
+ <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
+ <DetectChar attribute="Element" context="#pop" char="&gt;" />
+ <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="&gt;" />
+ <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="&gt;" />
+ <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="&gt;" />
+ <RegExpr attribute="Error" context="#stay" String="\S" />
+ </context>
+
+ <context name="CSS" attribute="Other Text" lineEndContext="#stay">
+ <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
+ <DetectChar attribute="Element" context="CSS content" char="&gt;" />
+ <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="&lt;/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="&gt;" endRegion="script" />
+ <DetectChar attribute="Element" context="JS content" char="&gt;" />
+ <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="&lt;/script\b" insensitive="true" endRegion="script" />
+ <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/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="&lt;/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="&quot;" />
+ <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
+ <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="/(?!&gt;)" />
+ <RegExpr attribute="Value" context="#stay" String="[^/&gt;&lt;&quot;&apos;\s]" />
+ </context>
+
+ <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+ <DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
+ <IncludeRules context="FindEntityRefs" />
+ </context>
+
+ <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+ <DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
+ <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="&lt;!--" end="--&gt;" />
+ </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&int;\.?|(\b&int;)?\.&int;)([eE][\-\+]?&int;[fFdD]?|[fFdD])\b"/>
+ <RegExpr attribute="Float" context="#stay" String="(\b&int;\.|(\b&int;)?\.&int;\b)"/>
+ <RegExpr attribute="Float" context="#stay" String="\b0[xX](&hex;\.?|(&hex;)?\.&hex;)[pP][\-\+]?&int;[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="&quot;"/>
+ <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=":!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+ </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="&quot;"/>
+ </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="&quot;"/>
+ <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="&quot;"/>
+ <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&#009;" />
+ <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&#009;" />
+ <StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain " />
+ <StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain&#009;" />
+ <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal " />
+ <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal&#009;" />
+ <StringDetect attribute="InlineTag" context="#stay" String="{@value}" />
+ <StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " />
+ <StringDetect attribute="InlineTag" context="InlineTagar" String="{@value&#009;" />
+ <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&#009;" />
+ <StringDetect attribute="BlockTag" context="#stay" String="@deprecated&#009;" />
+ <StringDetect attribute="BlockTag" context="JavadocParam" String="@exception&#009;" />
+ <StringDetect attribute="BlockTag" context="JavadocParam" String="@param&#009;" />
+ <StringDetect attribute="BlockTag" context="#stay" String="@return&#009;" />
+ <StringDetect attribute="BlockTag" context="SeeTag" String="@see&#009;" />
+ <StringDetect attribute="BlockTag" context="#stay" String="@serial&#009;" />
+ <StringDetect attribute="BlockTag" context="#stay" String="@serialData&#009;" />
+ <StringDetect attribute="BlockTag" context="#stay" String="@serialField&#009;" />
+ <StringDetect attribute="BlockTag" context="#stay" String="@since&#009;" />
+ <StringDetect attribute="BlockTag" context="JavadocParam" String="@throws&#009;" />
+ <StringDetect attribute="BlockTag" context="#stay" String="@version&#009;" />
+ <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code " />
+ <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code&#009;" />
+ <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&#009;" />
+ <StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain " />
+ <StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain&#009;" />
+ <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal " />
+ <StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal&#009;" />
+ <StringDetect attribute="InlineTag" context="#stay" String="{@value}" />
+ <StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " />
+ <StringDetect attribute="InlineTag" context="InlineTagar" String="{@value&#009;" />
+ <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="&quot;" 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="&quot;" context="#pop" attribute="Style_String_Key" />
+ <RegExpr String="\\(?:[&quot;\\/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="&quot;" 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="&quot;" context="#pop" attribute="Style_String_Value" />
+ <RegExpr String="\\(?:[&quot;\\/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="&quot;" 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&quot;" char="&quot;"/>
+ <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&quot;" char="&quot;"/>
+ <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="&lt;" char1="&gt;" context="#stay" attribute="Include" />
+ <RangeDetect char="&quot;" char1="&quot;" 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="&amp;" char1="&amp;"/>
+ <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&quot;" char="&quot;"/>
+ <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&quot;" char="&quot;"/>
+ <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&quot;" attribute="String" lineEndContext="#pop">
+ <LineContinue attribute="Operator" context="#stay"/>
+ <DetectChar attribute="String" context="#pop" char="&quot;"/>
+ <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 '&lt;(https?|ftp):[^\"&gt;\s]+&gt;'>
+<!ENTITY mailtolinkregex "&lt;(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)&gt;">
+<!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="&gt;" 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="--&gt;" 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="&lt;!--" 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="&lt;!--" end="--&gt;" 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>&amp;=</item>
+ <item>&amp;&amp;=</item>
+ <item>?=</item>
+ <item>+</item>
+ <item>-</item>
+ <item>*</item>
+ <!-- <item>/</item>//-->
+ <item>%</item>
+ <item>||</item>
+ <item>//</item>
+ <item>&amp;&amp;</item>
+ <item>|</item>
+ <item>&amp;</item>
+ <item>&lt;</item>
+ <item>&lt;&lt;</item>
+ <item>&gt;</item>
+ <item>&gt;&gt;</item>
+ <item>^</item>
+ <item>-&gt;</item>
+ <item>=&gt;</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="\\([&quot;'])[^\1]" /> -->
+ <Detect2Chars attribute="Normal Text" context="#stay" char="&amp;" char1="'" /><!-- ??? -->
+ <DetectChar attribute="Operator" context="ip_string" char="&quot;" 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="&lt;[A-Z0-9_]+&gt;" />
+
+ <RegExpr attribute="Operator" context="find_here_document" String="\s*&lt;&lt;(?=\w+|\s*[&quot;'])" 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="[&lt;&gt;&quot;':]/" />
+ <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="&lt;" 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="&lt;" 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+\}|&lt;\w+&gt;|'\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="&quot;" 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="&lt;" char1="&gt;" />
+ <DetectChar attribute="Operator" context="#pop#pop#pop" char="&gt;" 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="&lt;" />
+ <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+ <Detect2Chars attribute="String" context="#stay" char="\" char1="&gt;" />
+ <RangeDetect attribute="String" context="#stay" char="&lt;" char1="&gt;" />
+ <DetectChar attribute="Operator" context="#pop#pop" char="&gt;" 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+\}|&lt;\w+&gt;|'\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{}()|&gt;']" 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="[:=!&gt;&lt;]+" />
+ <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="&gt;" />
+ <!-- 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*&quot;([^&quot;]+)&quot;\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*&lt;&lt;\s*[&quot;']?([A-Z0-9_\-]+)[&quot;']?" 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="&amp;\[];" />
+ <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>&amp;</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="&quot;"/>
+ <Detect2Chars attribute="HereString" context="HereStringer" char="@" char1="&quot;" beginRegion="StringRegion"/>
+ <IncludeRules context="##Doxygen" />
+ <DetectChar attribute="Comment" context="Commentar 1" char="#"/>
+ <Detect2Chars attribute="Comment" context="Commentar 2" char="&lt;" 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=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+ </context>
+ <context attribute="String" lineEndContext="#pop" name="String">
+ <LineContinue attribute="String" context="#pop"/>
+ <DetectChar attribute="String" context="#pop" char="&quot;"/>
+ </context>
+ <context attribute="HereString" lineEndContext="#stay" name="HereStringer">
+ <Detect2Chars attribute="HereString" context="#pop" char="&quot;" 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="&gt;" 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="&lt;#" end="#&gt;" 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="+*/%\|=;\!&lt;&gt;!^&amp;~-@" 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?&quot;&quot;&quot;" 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?&quot;" 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)&quot;&quot;&quot;" 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)&quot;" 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&quot;&quot;&quot;" 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&quot;" 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)&quot;&quot;&quot;" 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)&quot;" 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?&quot;&quot;&quot;" 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?&quot;" 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)&quot;&quot;&quot;" 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)&quot;" 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="&quot;&quot;&quot;" 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="&quot;" 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])?(:([^}]?[&lt;&gt;=^])?[ +-]?#?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="\\[\\'&quot;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])?(:([^}]?[&lt;&gt;=^])?[ +-]?#?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="&quot;&quot;&quot;" 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="&quot;&quot;&quot;" 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="&quot;&quot;&quot;" 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="&quot;&quot;&quot;" 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="&quot;" 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="&quot;" 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="&quot;" 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="&quot;" 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="&quot;"/>
+ <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="&quot;"/>
+ <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="&quot;"/>
+ </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_*`+@;,.~=\!\$:?'/\\\-\&amp;&quot;&gt;&lt;]" 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*&lt;&lt;-(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+ <RegExpr attribute="Operator" context="find_heredoc" String="\s*&lt;&lt;(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+
+ <DetectChar attribute="Operator" char="." context="#stay"/>
+ <Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
+ <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
+ <RegExpr attribute="Operator" String="\s[\?\:\%]\s" context="#stay"/>
+ <RegExpr attribute="Operator" String="[|&amp;&lt;&gt;\^\+*~\-=]+" 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="&quot;" 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="&quot;" context="#stay"/>
+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+ <DetectChar char="&quot;" 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="=+-*/%|&amp;[]{}~" 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="&quot;?(\w+)&quot;?" />
+ </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="&quot;?(\w+)&quot;?" />
+ </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="&lt;" />
+ <!-- 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="&lt;" />
+ <!-- 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="&lt;" />
+ <!-- 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="&lt;" />
+ <!-- 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="&lt;" />
+ <!-- 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="&lt;" />
+ <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="&lt;" />
+ <!-- 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="&gt;" context="#stay"/>
+ <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+ <DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+ </context>
+ <context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >
+ <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+ <DetectChar attribute="String" context="#pop" char="&gt;" />
+ <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="&gt;" context="#stay"/>
+ <DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+ <DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" 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="&lt;" />
+ <DetectChar attribute="String" context="#pop" char="&gt;" />
+ </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="&gt;" context="#stay"/>
+ <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+ <DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" 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="&lt;" />
+ <DetectChar attribute="Raw String" context="#pop" char="&gt;" />
+ </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="&gt;" context="#stay"/>
+ <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+ <DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" 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="&lt;" />
+ <DetectChar attribute="Command" context="#pop" char="&gt;" />
+ </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="&gt;" context="#stay"/>
+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+ <RegExpr attribute="GDL input" context="#pop#pop" String="&gt;[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="&lt;" />
+ <DetectChar attribute="Regular Expression" context="#pop" char="&gt;" />
+ </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 "&amp;(#[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="&lt;!--" beginRegion="comment" />
+ <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+ <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
+ <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />
+ <RegExpr attribute="Element" context="Element" String="&lt;&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="&amp;&lt;" />
+ </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="&amp;%" />
+ </context>
+
+
+ <context name="Comment" attribute="Comment" lineEndContext="#stay">
+ <DetectSpaces />
+ <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+ <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
+ <IncludeRules context="##Alerts" />
+ <DetectIdentifier />
+ </context>
+
+ <context name="CDATA" attribute="Other Text" lineEndContext="#stay">
+ <DetectSpaces />
+ <DetectIdentifier />
+ <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
+ <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
+ </context>
+
+ <context name="PI" attribute="Other Text" lineEndContext="#stay">
+ <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+ </context>
+
+ <context name="Doctype" attribute="Other Text" lineEndContext="#stay">
+ <DetectChar attribute="Doctype" context="#pop" char="&gt;" 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="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+ <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+ <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />
+ <IncludeRules context="FindPEntityRefs" />
+ </context>
+
+ <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay">
+ <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+ <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
+ <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+ </context>
+
+ <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+ <DetectChar attribute="Value" context="#pop" char="&quot;" />
+ <IncludeRules context="FindPEntityRefs" />
+ </context>
+
+ <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+ <DetectChar attribute="Value" context="#pop" char="&apos;" />
+ <IncludeRules context="FindPEntityRefs" />
+ </context>
+
+ <context name="Element" attribute="Other Text" lineEndContext="#stay">
+ <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="element" />
+ <DetectChar attribute="Element" context="El Content" char="&gt;" />
+ <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="&lt;/&name;" />
+ <IncludeRules context="FindXML" />
+ </context>
+
+ <context name="El End" attribute="Other Text" lineEndContext="#stay">
+ <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" 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="&quot;" />
+ <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
+ <RegExpr attribute="Error" context="#stay" String="\S" />
+ </context>
+
+ <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+ <DetectChar attribute="Value" context="#pop#pop#pop" char="&quot;" />
+ <IncludeRules context="FindEntityRefs" />
+ </context>
+
+ <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+ <DetectChar attribute="Value" context="#pop#pop#pop" char="&apos;" />
+ <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="&lt;!--" end="--&gt;" />
+ </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="%&lt;flag&gt;" />
+ <!-- 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="&lt;" />
+ <IncludeRules context="Comment" />
+ </context>
+ <context name="PC type" attribute="Data Type" lineEndContext="#pop#pop">
+ <DetectChar attribute="Data Type" context="#pop" char="&gt;" />
+ </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="&quot;" />
+ </context>
+ <context name="String" attribute="String" lineEndContext="#pop">
+ <RegExpr attribute="Backslash Code" context="#stay" String="\\." />
+ <DetectChar attribute="String" context="#pop" char="&quot;" />
+ </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="&lt;[^&gt;]+&gt;" />
+ </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 &regexp = 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 &copy)
+{
+ 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 &copy);
+
+ /**
+ * 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