feat: add missing KF6 framework recipes

This commit is contained in:
2026-05-07 07:53:26 +01:00
parent d8d498f831
commit a69f479b52
2374 changed files with 2610246 additions and 0 deletions
@@ -0,0 +1,109 @@
# create a directory for generated definitions
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax)
macro(generate_syntax_definition generator targetFile srcFile)
add_custom_target(
${targetFile} ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax/${targetFile}
)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax/${targetFile}
COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generators/${generator}
${CMAKE_CURRENT_SOURCE_DIR}/syntax/${srcFile}
${CMAKE_CURRENT_BINARY_DIR}/generated/syntax/${targetFile}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generators/${generator}
${CMAKE_CURRENT_SOURCE_DIR}/syntax/${srcFile}
${ARGN}
VERBATIM
)
set(gen_defs ${gen_defs} ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax/${targetFile})
endmacro()
macro(generate_syntax_definition_with_html syntax mergedSyntax)
generate_syntax_definition(generate-html.pl ${mergedSyntax}-${syntax}.xml ${mergedSyntax}.xml ${CMAKE_CURRENT_SOURCE_DIR}/syntax/${syntax}.xml)
endmacro()
# generate PHP definitions
generate_syntax_definition_with_html(php html)
generate_syntax_definition_with_html(php css)
generate_syntax_definition_with_html(php javascript)
generate_syntax_definition_with_html(php javascript-react)
generate_syntax_definition_with_html(php typescript)
generate_syntax_definition_with_html(php mustache)
# generate Twig definitions
generate_syntax_definition_with_html(twig html)
generate_syntax_definition_with_html(twig css)
generate_syntax_definition_with_html(twig javascript)
generate_syntax_definition_with_html(twig javascript-react)
generate_syntax_definition_with_html(twig typescript)
# generate DoxygenLua definition
generate_syntax_definition(generate-doxygenlua.pl doxygenlua.xml doxygen.xml)
# find all definitions
file(GLOB src_defs "${CMAKE_CURRENT_SOURCE_DIR}/syntax/*.xml")
set(defs ${src_defs} ${gen_defs})
# object library to make cross-folder dependencies work
add_library(SyntaxHighlightingData OBJECT)
# theme data resource
target_sources(SyntaxHighlightingData PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/themes/theme-data.qrc)
# generate the resource file
set(compressed_xml_dir ${CMAKE_CURRENT_BINARY_DIR}/generated/compressed-syntax)
set(qrc_xml_file ${CMAKE_CURRENT_BINARY_DIR}/syntax-data-xml.qrc)
set(qrc_file ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc)
set(qrc_xml_body "")
set(qrc_body "")
foreach(def ${defs})
get_filename_component(def_name ${def} NAME)
string(APPEND qrc_body "<file alias=\"${def_name}\">${compressed_xml_dir}/${def_name}</file>\n")
string(APPEND qrc_xml_body "<file>${def}</file>\n")
set(compressedDefs ${compressedDefs} ${compressed_xml_dir}/${def_name})
endforeach()
write_file(${qrc_xml_file} "<!DOCTYPE RCC>\n<RCC>${qrc_xml_body}</RCC>")
set(SYNTAX_DATA_QRC_FILES_STRING ${qrc_body})
configure_file(syntax-data.qrc.in ${qrc_file} @ONLY)
# compress xml files
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${compressed_xml_dir})
# generate the index file
add_custom_target(katesyntax DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax")
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"
"${qrc_xml_file}"
"${compressed_xml_dir}"
DEPENDS katehighlightingindexer
${defs}
${qrc_file}
${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd
)
# do we want syntax files bundled in the library?
if (QRC_SYNTAX)
# 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 Qt6::rcc --name syntax_data -o "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" "${qrc_file}"
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax
)
set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" PROPERTIES SKIP_AUTOMOC ON)
target_sources(SyntaxHighlightingData PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp)
else()
add_dependencies(SyntaxHighlightingData katesyntax)
# install the syntax files as normal files into the prefix
install (FILES "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" ${compressedDefs} DESTINATION ${KDE_INSTALL_DATADIR}/org.kde.syntax-highlighting/syntax-bundled)
endif()
# set PIC to allow use in static and shared libs
# this needs some more recent CMake than generally required
set_property(TARGET SyntaxHighlightingData PROPERTY POSITION_INDEPENDENT_CODE 1)
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.13.0")
target_link_libraries(SyntaxHighlightingData PRIVATE Qt6::Core)
endif()
@@ -0,0 +1 @@
Pipfile.lock
@@ -0,0 +1,12 @@
# kate: hl toml;
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
click = "~= 8.0"
jinja2 = "~= 3.0"
lxml = "*"
PyYAML = "*"
@@ -0,0 +1,501 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!-- NOTE See https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#variable-references -->
<!ENTITY var_ref_re "[/\.\+\-_0-9A-Za-z]+">
<!-- NOTE See `cmGeneratorExpression::IsValidTargetName` -->
<!ENTITY tgt_name_re "[A-Za-z0-9_\.\+\-]+">
]>
<!--
This file is part of KDE's kate project.
SPDX-FileCopyrightText: 2004 Alexander Neundorf <neundorf@kde.org>
SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>
SPDX-FileCopyrightText: 2007, 2008, 2013, 2014 Matthew Woehlke <mw_triad@users.sourceforge.net>
SPDX-FileCopyrightText: 2013-2015, 2017-2023 Alex Turbov <i.zaufi@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
-->
<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****
$ cd data/generators
$ ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml
-->
<language
name="CMake"
version="<!--{version}-->"
kateversion="5.62"
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>
<!--[- macro render_command_arg_lists(commands) ]-->
<!--[- 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 ]-->
<!--[- endmacro ]-->
<!--{- render_command_arg_lists(commands) }-->
<!--{- render_command_arg_lists(standard_module_commands) }-->
<list name="variables">
<!--[- for var in variables.kw ]-->
<item><!--{var}--></item>
<!--[- endfor ]-->
</list>
<list name="deprecated-or-internal-variables">
<!--[- for var in deprecated_or_internal_variables.kw ]-->
<item><!--{var}--></item>
<!--[- endfor ]-->
</list>
<list name="environment-variables">
<!--[- for var in environment_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>
<!--[- for expr in complex_generator_expressions ]-->
<list name="genex-<!--{expr.name}-->-subcommands">
<!--[- for cmd in expr.subcommands ]-->
<item><!--{ cmd }--></item>
<!--[- endfor ]-->
</list>
<!--[- endfor ]-->
<list name="standard-modules">
<!--[- for module in modules.utility ]-->
<item><!--{ module }--></item>
<!--[- endfor ]-->
</list>
<list name="standard-finder-modules">
<!--[- for module in modules.finder ]-->
<item><!--{ module | replace('Find', '') }--></item>
<!--[- endfor ]-->
</list>
<list name="deprecated-modules">
<!--[- for module in modules.deprecated ]-->
<item><!--{ module }--></item>
<!--[- endfor ]-->
</list>
<!-- Source/cmStringAlgorithms.cxx: bool cmIsOff(cm::string_view val) -->
<list name="true_special_arg">
<item>TRUE</item>
<item>ON</item>
<item>YES</item>
<item>Y</item>
<item>0</item>
</list>
<!-- Source/cmStringAlgorithms.cxx: bool cmIsOff(cm::string_view val) -->
<list name="false_special_arg">
<item>FALSE</item>
<item>OFF</item>
<item>NO</item>
<item>IGNORE</item>
<item>N</item>
<item>0</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
<DetectSpaces />
<!--[ for command in commands -]-->
<WordDetect String="<!--{command.name}-->" insensitive="true" attribute="<!--{command.attribute}-->" context="<!--{command.name}-->_ctx"<!--[ if command.start_region ]--> beginRegion="<!--{command.start_region}-->"<!--[ endif -]--> <!--[- if command.end_region ]--> endRegion="<!--{command.end_region}-->"<!--[ endif ]--> />
<!--[ endfor -]-->
<!--[ for command in standard_module_commands -]-->
<WordDetect String="<!--{command.name}-->" insensitive="true" attribute="CMake Provided Function/Macro" context="<!--{command.name}-->_ctx" />
<!--[ endfor -]-->
<DetectChar attribute="Comment" context="Match Comments and Docs" char="#" lookAhead="true" />
<DetectIdentifier attribute="User Function/Macro" context="User Function" />
<RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&var_ref_re;@" lookAhead="true" />
<IncludeRules context="LineError" />
</context>
<!--[- macro render_command_parsers(commands) ]-->
<!--[ for command in commands -]-->
<context attribute="Normal Text" lineEndContext="#stay" name="<!--{command.name}-->_ctx">
<DetectChar attribute="Normal Text" context="<!--{command.name}-->_ctx_op<!--{'_tgt_first' if command.first_arg_is_target else '_tgts_first' if command.first_args_are_targets else ''}-->" char="(" />
<DetectChar attribute="Normal Text" context="#pop" char=")" />
</context>
<!--[- if command.first_arg_is_target ]-->
<context attribute="Normal Text" lineEndContext="#stay" name="<!--{command.name}-->_ctx_op_tgt_first">
<DetectSpaces />
<RegExpr attribute="Aliased Targets" context="<!--{command.name}-->_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
<RegExpr attribute="Targets" context="<!--{command.name}-->_ctx_op" String="&tgt_name_re;" />
<IncludeRules context="User Function Opened" />
<IncludeRules context="LineError" />
</context>
<!--[- endif ]-->
<!--[- if command.first_args_are_targets ]-->
<context attribute="Normal Text" lineEndContext="#stay" name="<!--{command.name}-->_ctx_op_tgts_first">
<DetectSpaces />
<!--[- if command.named_args and command.named_args.kw ]-->
<!-- NOTE Handle the only case in CMake nowadays:
1. `set_target_properties` have a named keyword (`PROPERTIES`) after targets list
-->
<keyword context="<!--{command.name}-->_ctx_op" String="<!--{command.name}-->_nargs" lookAhead="true" />
<!--[- endif ]-->
<IncludeRules context="Detect Aliased Targets" />
<IncludeRules context="Detect Targets" />
<IncludeRules context="User Function Opened" />
<IncludeRules context="LineError" />
</context>
<!--[- endif ]-->
<!--[- if not command.first_args_are_targets or (command.named_args and command.named_args.kw) ]-->
<context attribute="Normal Text" lineEndContext="#stay" name="<!--{command.name}-->_ctx_op">
<DetectSpaces />
<!--[- if command.nested_parentheses ]-->
<DetectChar attribute="Normal Text" context="<!--{command.name}-->_ctx_op_nested" char="(" />
<!--[- endif ]-->
<DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
<!--[- if command.named_args and command.named_args.kw ]-->
<!--[- if command.has_target_name_after_kw ]-->
<WordDetect String="<!--{command.has_target_name_after_kw}-->" attribute="Named Args" context="Target Name" />
<!--[- endif ]-->
<!--[- if command.has_target_names_after_kw ]-->
<!--[- for kw in command.has_target_names_after_kw ]-->
<WordDetect String="<!--{kw}-->" attribute="Named Args" context="<!--{command.name}-->_tgts" />
<!--[- endfor ]-->
<!--[- endif ]-->
<keyword attribute="Named Args" context="#stay" String="<!--{command.name}-->_nargs" />
<!--[- endif ]-->
<!--[- if command.name == 'include' ]-->
<keyword attribute="Standard Module" context="#stay" String="standard-modules" />
<keyword attribute="Deprecated Module" context="#stay" String="deprecated-modules" />
<!--[- endif ]-->
<!--[- if command.name == 'find_package' ]-->
<keyword attribute="Standard Module" context="#stay" String="standard-finder-modules" />
<!--[- 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>
<!--[- endif ]-->
<!--[- if command.has_target_names_after_kw ]-->
<context attribute="Normal Text" lineEndContext="#stay" name="<!--{command.name}-->_tgts">
<DetectSpaces />
<DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
<keyword attribute="Named Args" context="#pop" String="<!--{command.name}-->_nargs" lookAhead="true" />
<IncludeRules context="Detect Aliased Targets" />
<IncludeRules context="Detect Targets" />
<IncludeRules context="User Function Args" />
<IncludeRules context="LineError" />
</context>
<!--[- endif ]-->
<!--[- if command.nested_parentheses ]-->
<context attribute="Normal Text" lineEndContext="#stay" name="<!--{command.name}-->_ctx_op_nested">
<DetectSpaces />
<DetectChar attribute="Normal Text" context="#pop" char=")" />
<DetectChar attribute="Normal Text" context="<!--{command.name}-->_ctx_op_nested" char="(" />
<!--[- 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 -]-->
<!--[- endmacro -]-->
<!--{- render_command_parsers(commands) -}-->
<!--{- render_command_parsers(standard_module_commands) -}-->
<!--[ for kind in properties.kinds if properties[kind].re -]-->
<context attribute="Normal Text" lineEndContext="#stay" name="Detect More <!--{ kind|replace('_', '-') }-->">
<RegExpr attribute="Property" context="#stay" String="<!--{properties[kind].re}-->" />
</context><!--{ '\n' }-->
<!--[ endfor -]-->
<context attribute="User Function/Macro" lineEndContext="#stay" name="User Function">
<DetectChar attribute="Normal Text" context="User Function Opened" char="(" />
<DetectChar attribute="Normal Text" context="#pop" char=")" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="User Function Opened">
<DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
<IncludeRules context="User Function Args" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Detect Builtin Variables">
<RegExpr attribute="Internal Name" context="#stay" String="\b_&var_ref_re;\b" />
<keyword attribute="CMake Internal Variable" context="#stay" String="deprecated-or-internal-variables" insensitive="false" />
<keyword attribute="Builtin Variable" context="#stay" String="variables" insensitive="false" />
<IncludeRules context="Detect More Builtin Variables" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables">
<!--[- if deprecated_or_internal_variables.re ]-->
<RegExpr attribute="CMake Internal Variable" context="#stay" String="<!--{deprecated_or_internal_variables.re}-->" />
<!--[- endif ]-->
<!--[- if variables.re ]-->
<RegExpr attribute="Builtin Variable" context="#stay" String="<!--{variables.re}-->" />
<!--[- endif ]-->
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
<RegExpr attribute="Cache Variable Substitution" context="#stay" String="\$CACHE\{\s*[\w-]+\s*\}" />
<RegExpr attribute="Environment Variable Substitution" context="EnvVarSubst" String="\$?ENV\{" />
<Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{" />
<RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&var_ref_re;@" lookAhead="true" />
</context>
<context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubst">
<DetectChar attribute="Environment Variable Substitution" context="#pop" char="}" />
<keyword attribute="Standard Environment Variable" context="#stay" String="environment-variables" insensitive="false" />
<!--[- if environment_variables.re ]-->
<RegExpr attribute="Standard Environment Variable" context="#stay" String="<!--{environment_variables.re}-->" />
<!--[- endif ]-->
<DetectIdentifier />
<IncludeRules context="Detect Variable Substitutions" />
</context>
<context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst">
<DetectChar attribute="Variable Substitution" context="#pop" char="}" />
<IncludeRules context="Detect Builtin Variables" />
<DetectIdentifier />
<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@">
<DetectChar attribute="@Variable Substitution" context="#pop#pop" char="@" />
<IncludeRules context="Detect Builtin Variables" />
<DetectIdentifier />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Target Name">
<DetectSpaces />
<RegExpr attribute="Aliased Targets" context="#pop" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
<IncludeRules context="Detect Targets" />
<IncludeRules context="User Function Opened" />
<IncludeRules context="LineError" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Detect Targets">
<RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="LineError">
<RegExpr attribute="Error" context="#stay" String=".*" />
</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=")" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\" />
<DetectChar attribute="Strings" context="String" char="&quot;" />
<RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" beginRegion="BracketedString" />
<DetectChar attribute="Comment" context="Match Comments" char="#" lookAhead="true" />
<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" />
<DetectIdentifier />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Detect Special Values">
<RegExpr attribute="Version Arg" context="#stay" String="\b[0-9]++(.[0-9]++)+\b" />
<keyword attribute="True Special Arg" context="#stay" String="true_special_arg" insensitive="true" />
<keyword attribute="False Special Arg" context="#stay" String="false_special_arg" insensitive="true" />
<RegExpr attribute="False Special Arg" context="#stay" String="\b(?:&var_ref_re;-)?NOTFOUND\b" />
<RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9][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="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="Match Comments">
<DetectSpaces />
<RegExpr attribute="Comment" context="#pop!Bracketed Comment" String="#\[(=*)\[" beginRegion="BracketedComment" />
<DetectChar attribute="Comment" context="#pop!Comment" char="#" />
<DetectIdentifier />
</context>
<context attribute="Comment" lineEndContext="#pop" name="Match Comments and Docs">
<RegExpr attribute="Region Marker" context="#pop!RST Documentation" String="^#\[(=*)\[\.rst:" column="0" beginRegion="RSTDocumentation" />
<IncludeRules context="Match Comments" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<DetectSpaces />
<LineContinue attribute="Comment" context="#pop" />
<IncludeRules context="##Comments" />
<DetectIdentifier />
</context>
<context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true">
<RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" endRegion="RSTDocumentation" />
<IncludeRules context="##reStructuredText" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Bracketed Comment" dynamic="true">
<LineContinue attribute="Comment" context="#stay" />
<DetectSpaces />
<StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedComment" />
<IncludeRules context="##Comments" />
</context>
<context attribute="Strings" lineEndContext="#stay" name="String">
<DetectSpaces />
<DetectIdentifier />
<RegExpr attribute="Strings" context="#pop" String="&quot;(?=[ );]|$)" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="r" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="t" />
<Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\" />
<IncludeRules context="Detect Variable Substitutions" />
<IncludeRules context="Detect Generator Expressions" />
</context>
<context attribute="Strings" lineEndContext="#stay" name="Bracketed String" dynamic="true">
<StringDetect attribute="Strings" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedString" />
</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" />
<!--[- for expr in complex_generator_expressions ]-->
<WordDetect String="<!--{expr.name}-->" attribute="Generator Expression Keyword" context="genex_<!--{expr.name}-->_ctx" />
<!--[- endfor ]-->
<IncludeRules context="Detect Aliased Targets" />
<IncludeRules context="Detect Variable Substitutions" />
<DetectIdentifier />
</context>
<!--[- for expr in complex_generator_expressions ]-->
<context attribute="Generator Expression" lineEndContext="#stay" name="genex_<!--{expr.name}-->_ctx" fallthroughContext="#pop">
<DetectChar char=":" context="#stay" />
<DetectSpaces />
<keyword attribute="Generator Expression Sub-Command" context="#pop" String="genex-<!--{expr.name}-->-subcommands" insensitive="false" />
</context>
<!--[- endfor ]-->
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
<itemData name="Command" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false" />
<itemData name="CMake Provided Function/Macro" defStyleNum="dsFunction" bold="true" spellChecking="false" />
<itemData name="User Function/Macro" defStyleNum="dsFunction" spellChecking="false" />
<itemData name="Property" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Targets" defStyleNum="dsBaseN" 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="Version Arg" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Strings" defStyleNum="dsString" spellChecking="true" />
<itemData name="Escapes" defStyleNum="dsSpecialChar" spellChecking="false" />
<itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" />
<itemData name="CMake Internal Variable" defStyleNum="dsVariable" spellChecking="false" />
<itemData name="Internal Name" defStyleNum="dsVariable" spellChecking="false" />
<itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Cache Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Environment Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Standard Environment Variable" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Generator Expression Keyword" defStyleNum="dsKeyword" color="#b84040" selColor="#b84040" spellChecking="false" />
<itemData name="Generator Expression Sub-Command" defStyleNum="dsKeyword" color="#c05050" selColor="#c05050" spellChecking="false" />
<itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false" />
<itemData name="Standard Module" defStyleNum="dsImport" spellChecking="false" />
<itemData name="Deprecated Module" defStyleNum="dsImport" spellChecking="false" />
<itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" />
<itemData name="Error" defStyleNum="dsError" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#" position="afterwhitespace" />
<comment name="multiLine" start="#[[" end="]]" region="BracketedComment" />
</comments>
<keywords casesensitive="1" weakDeliminator="." />
</general>
</language>
<!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,516 @@
#!/usr/bin/env python3
#
# Generate Kate syntax file for CMake
#
# SPDX-FileCopyrightText: 2017-2024 Alex Turbov <i.zaufi@gmail.com>
#
# To install prerequisites:
#
# $ pip install --user click jinja2 lxml pyyaml
#
# To use:
#
# $ ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml
#
from __future__ import annotations
import functools
import re
from dataclasses import dataclass, field
import click
import jinja2
import yaml
import sys
from lxml import etree
_TEMPLATED_NAME = re.compile(r'(?:<[^>]+>)')
_PROPERTY_KEYS = [
'global-properties'
, 'directory-properties'
, 'target-properties'
, 'source-properties'
, 'test-properties'
, 'cache-properties'
, 'install-properties'
]
_KW_RE_LIST = ['kw', 're']
_VAR_KIND_LIST = ['variables', 'deprecated-or-internal-variables', 'environment-variables']
_CONTROL_FLOW_LIST = {
'break'
, 'continue'
, 'elseif'
, 'else'
, 'endforeach'
, 'endif'
, 'endwhile'
, 'foreach'
, 'if'
, 'return'
, 'while'
}
_VAR_REF_ENTITY = '&var_ref_re;'
_HEURISTICS = [
(
{'MAX(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?', 'MIN(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?'}
, 'M(AX|IN)(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?'
)
, ({'OUTPUTS', 'OUTPUT_(HEADER|SOURCE)'}, 'OUTPUT(S|_(HEADER|SOURCE))')
, ({'PREFIX', 'SUFFIX'}, '(PRE|SUF)FIX')
, ({'CPPCHECK', 'CPPLINT'}, 'CPP(CHECK|LINT)')
, ({'DEPENDS', 'PREDEPENDS'}, '(PRE)?DEPENDS')
, ({'ICON', 'ICONURL'}, 'ICON(URL)?')
, (
{
'&var%ref%re;(_INIT)?'
, 'DEBUG(_INIT)?'
, 'MINSIZEREL(_INIT)?'
, 'RELEASE(_INIT)?'
, 'RELWITHDEBINFO(_INIT)?'
}
, '(DEBUG|MINSIZEREL|REL(EASE|WITHDEBINFO)|&var%ref%re;)(_INIT)?'
)
, ({'RELEASE', 'RELWITHDEBINFO'}, 'REL(EASE|WITHDEBINFO)')
, ({'POST', 'POSTUN', 'PRE', 'PREUN'}, 'P(RE|OST)(UN)?')
, ({'AUTOPROV', 'AUTOREQ', 'AUTOREQPROV'}, 'AUTO(PROV|REQ(PROV)?)')
, ({'DEFINITIONS', 'OPTIONS'}, '(DEFINI|OP)TIONS')
, ({'LIB_NAMES', 'LIBRARY'}, 'LIB(_NAMES|RARY)')
, ({'EXTENSIONS', 'EXTRA_FLAGS'}, 'EXT(ENSIONS|RA_FLAGS)')
, ({'DISABLED', 'DISPLAY_NAME'}, 'DIS(ABLED|PLAY_NAME)')
, ({'LIBRARIES', 'LINK_LIBRARIES', 'STATIC_LINK_LIBRARIES'}, '((STATIC_)?LINK_)?LIBRARIES')
, ({'INCLUDE_DIRS', 'LIBRARY_DIRS'}, '(INCLUDE|LIBRARY)_DIRS')
, ({'BINARY_DIR', 'SOURCE_DIR'}, '(BINARY|SOURCE)_DIR')
, ({'CFLAGS(_OTHER)?', 'LDFLAGS(_OTHER)?'}, '(C|LD)FLAGS(_OTHER)?')
, ({'INCLUDE_DIRECTORIES', 'LIBRARIES'}, '(INCLUDE_DIRECTO|LIBRA)RIES')
, ({'POSTFLIGHT_&var%ref%re;_SCRIPT', 'PREFLIGHT_&var%ref%re;_SCRIPT'}, 'P(RE|OST)FLIGHT_&var%ref%re;_SCRIPT')
, ({'DIRECTORIES', 'FRAMEWORK_DIRECTORIES'}, '(FRAMEWORK_)?DIRECTORIES')
, ({'FILE_FLAG', 'FILE'}, 'FILE(_FLAG)?')
, ({'DIR_PERMISSIONS', 'FILE_PERMISSIONS'}, '(DIR|FILE)_PERMISSIONS')
, ({'COMPILER_LAUNCHER', 'LINKER_LAUNCHER'}, '(COMPIL|LINK)ER_LAUNCHER')
, ({'COMPILER', 'COMPILE_(DEFINI|OP)TIONS'}, 'COMPILE(R|_(DEFINI|OP)TIONS)')
, ({'LICENSEURL', 'LICENSE_(EXPRESSION|FILE_NAME)'}, 'LICENSE(URL|_(EXPRESSION|FILE_NAME))')
, ({'NO_SONAME', 'SONAME'}, '(NO_)?SONAME')
, ({'CODE_SIGN_ON_COPY', 'REMOVE_HEADERS_ON_COPY'}, '(CODE_SIGN|REMOVE_HEADERS)_ON_COPY')
, ({'(REFERENCE|REFERENCEPROP_&var%ref%re;_TAG)_&var%ref%re;'}, 'REFERENCE(PROP_&var%ref%re;_TAG)?_&var%ref%re;')
, ({'DISABLE_FIND_PACKAGE', 'REQUIRE_FIND_PACKAGE'}, '(DISABLE|REQUIRE)_FIND_PACKAGE')
, (
{'GROUP_USING_&var%ref%re;(_SUPPORTED)?', 'LIBRARY_USING_&var%ref%re;(_SUPPORTED)?'}
, '(GROUP|LIBRARY)_USING_&var%ref%re;(_SUPPORTED)?'
)
, (
{
'EXE_LINKER_FLAGS_&var%ref%re;(_INIT)?'
, 'MODULE_LINKER_FLAGS_&var%ref%re;(_INIT)?'
, 'SHARED_LINKER_FLAGS_&var%ref%re;(_INIT)?'
, 'STATIC_LINKER_FLAGS_&var%ref%re;(_INIT)?'
}
, '(EXE|MODULE|SHARED|STATIC)_LINKER_FLAGS_&var%ref%re;(_INIT)?'
)
, (
{
'ARCHIVE_OUTPUT_DIRECTORY'
, 'COMPILE_PDB_OUTPUT_DIRECTORY'
, 'LIBRARY_OUTPUT_DIRECTORY'
, 'PDB_OUTPUT_DIRECTORY'
, 'RUNTIME_OUTPUT_DIRECTORY'
}
, '(ARCHIVE|(COMPILE_)?PDB|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY'
)
, (
{
'ARCHIVE_OUTPUT_(DIRECTORY|NAME)'
, 'LIBRARY_OUTPUT_(DIRECTORY|NAME)'
, 'RUNTIME_OUTPUT_(DIRECTORY|NAME)'
}
, '(ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_(DIRECTORY|NAME)'
)
, ({'ASM&var_ref_re;', 'ASM&var_ref_re;FLAGS'}, 'ASM&var_ref_re;(FLAGS)?')
, (
{
'CMAKE_POLICY_DEFAULT_CMP[0-9]{4}'
, 'CMAKE_POLICY_WARNING_CMP[0-9]{4}'
}
, 'CMAKE_POLICY_(DEFAULT|WARNING)_CMP[0-9]{4}'
)
, ({'CMAKE_ARGV[0-9]+', 'CMAKE_MATCH_[0-9]+'}, 'CMAKE_(ARGV|MATCH_)[0-9]+')
]
@dataclass
class RePartNode:
children: dict[str, RePartNode] = field(default_factory=dict, hash=False)
is_leaf: bool = False
@dataclass
class RegexCollection:
special_cases: list[str] = field(default_factory=list, hash=False)
re_tree: dict[str, RePartNode] = field(default_factory=dict, hash=False)
def add_case(self, regex: str) -> RegexCollection:
self.special_cases.append(regex)
return self
def update_tree(self, name_parts: list[str]) -> RegexCollection:
safe_var_ref = _VAR_REF_ENTITY.replace('_', '%')
functools.reduce(
lambda current, part: (
self.re_tree if current is None else current.children
).setdefault(part, RePartNode())
, (
safe_var_ref
.join(name_parts)
.replace(f'{safe_var_ref}_{safe_var_ref}', safe_var_ref)
.split('_')
)
, None
).is_leaf = True
return self
def try_transform_placeholder_string_to_regex(state: RegexCollection, name: str):
'''
NOTE Some placeholders are not IDs, but numbers...
`CMAKE_MATCH_<N>` 4 example
'''
name_parts = _TEMPLATED_NAME.split(name)
match name_parts:
case ['CMAKE_MATCH_' as head, ''] | ['CMAKE_ARGV' as head, ''] | ['ARGV' as head, '']:
return state.add_case(head + '[0-9]+')
case ['CMAKE_POLICY_DEFAULT_CMP' as head, ''] | ['CMAKE_POLICY_WARNING_CMP' as head, '']:
return state.add_case(head + '[0-9]{4}')
case ['', '__TRYRUN_OUTPUT']:
return state.add_case(f'{_VAR_REF_ENTITY}__TRYRUN_OUTPUT')
case (['ASM', ''] | ['ASM', 'FLAGS']) as asm_env:
return state.add_case(f'{asm_env[0]}{_VAR_REF_ENTITY}{asm_env[1]}')
return state.update_tree(name_parts)
def is_first_subset_of_second(first, second):
subset = set(first)
fullset = set(second)
return subset.issubset(fullset)
def try_optimize_known_alt_groups(groups: list[str]) -> list[str]:
for case in _HEURISTICS:
if is_first_subset_of_second(case[0], groups):
groups = sorted([*filter(lambda item: item not in case[0], groups), case[1]])
return groups
def try_optimize_trailing_var_ref_regex(groups: list[str]) -> list[str]:
tail_var_ref_re = '_' + _VAR_REF_ENTITY.replace('_', '%')
candidates = [*filter(lambda s: s.endswith(tail_var_ref_re), groups)]
return sorted([
*filter(lambda item: item not in candidates, groups)
, f'({"|".join(try_optimize_known_alt_groups([s[:-len(tail_var_ref_re)] for s in candidates]))}){tail_var_ref_re}'
]) if len(candidates) > 1 else groups
def build_regex(state: list[str], kv: tuple[str, RePartNode]) -> list[str]:
name, value = kv
match (value, len(value.children)):
case (RePartNode(children={}, is_leaf=True), 0):
return [*state, name]
case (node, sz) if sz > 0:
alt_group = try_optimize_known_alt_groups(
try_optimize_trailing_var_ref_regex(
functools.reduce(build_regex, node.children.items(), [])
)
)
match (len(alt_group), node.is_leaf):
case (1, False):
return [*state, f'{name}_{alt_group[0]}']
case (1, True):
return [*state, f'{name}(_{alt_group[0]})?']
case (sz, False) if sz > 0:
return [*state, f'{name}_({"|".join(alt_group)})']
case (sz, True) if sz > 0:
return [*state, f'{name}(_({"|".join(alt_group)}))?']
case _:
raise AssertionError('Zero children?')
case _:
raise AssertionError(f'NOT MATCHED: {name=}{value=}')
return state
def try_placeholders_to_regex(names):
if not names:
return None
data = functools.reduce(
try_transform_placeholder_string_to_regex
, names
, RegexCollection()
)
return (
'\\b(?:'
+ '|'.join(
try_optimize_known_alt_groups(
try_optimize_trailing_var_ref_regex(
functools.reduce(
build_regex
, data.re_tree.items()
, data.special_cases
)
)
)
).replace('%', '_')
+ ')\\b'
)
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'] = try_placeholders_to_regex(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.get('nested-parentheses?', False)
if 'first-arg-is-target?' in cmd:
cmd['first_arg_is_target'] = cmd['first-arg-is-target?']
can_be_nulary = False
if 'first-args-are-targets?' in cmd:
cmd['first_args_are_targets'] = cmd['first-args-are-targets?']
can_be_nulary = False
if 'has-target-name-after-kw' in cmd:
cmd['has_target_name_after_kw'] = cmd['has-target-name-after-kw']
can_be_nulary = False
if 'has-target-names-after-kw' in cmd:
match cmd['has-target-names-after-kw']:
case str():
cmd['has_target_names_after_kw'] = [cmd['has-target-names-after-kw']]
case list():
cmd['has_target_names_after_kw'] = cmd['has-target-names-after-kw']
case _:
raise TypeError('Unexpected type for `has-target-names-after-kw`')
can_be_nulary = False
if 'second-arg-is-target?' in cmd:
cmd['second_arg_is_target'] = cmd['second-arg-is-target?']
can_be_nulary = False
if 'nulary?' in cmd and cmd['nulary?'] and not can_be_nulary:
raise RuntimeError('Command `{}` w/ args declared nulary!?'.format(cmd['name']))
if 'start-region' in cmd:
cmd['start_region'] = cmd['start-region']
if 'end-region' in cmd:
cmd['end_region'] = cmd['end-region']
cmd['attribute'] = 'Control Flow' if cmd['name'] in _CONTROL_FLOW_LIST else 'Command'
return cmd
def remove_duplicate_list_nodes(root):
remap = {}
items_by_kws = {}
# extract duplicate keyword list
for items in root.iterfind('highlighting/list'):
key = '<'.join(item.text for item in items)
name = items.attrib['name']
if rename := items_by_kws.get(key):
remap[name] = rename
items.getparent().remove(items)
else:
items_by_kws[key] = name
# update keyword list name referenced by each rule
for rule in root.iterfind('highlighting/contexts/context/keyword'):
name = rule.attrib['String']
rule.attrib['String'] = remap.get(name, name)
def remove_duplicate_context_nodes(root):
contexts = root[0].find('contexts')
# 3 levels: ctx, ctx_op and ctx_op_nested
# TODO Refactor it!
for _ in range(3):
remap = {}
duplicated = {}
# remove duplicate nodes
for context in contexts:
name = context.attrib['name']
context.attrib['name'] = 'dummy'
ref = duplicated.setdefault(etree.tostring(context), [])
if ref:
contexts.remove(context)
else:
context.attrib['name'] = name
ref.append(name)
remap[name] = ref[0]
# update context name referenced by each rule
for context in contexts:
for rule in context:
ref = remap.get(rule.attrib.get('context'))
if ref:
rule.attrib['context'] = ref
def remove_duplicate_nodes(xml_string):
parser = etree.XMLParser(resolve_entities=False, collect_ids=False)
root = etree.fromstring(xml_string.encode(), parser=parser)
remove_duplicate_list_nodes(root)
remove_duplicate_context_nodes(root)
# reformat comments
xml = etree.tostring(root)
xml = re.sub(b'(?=[^\n ])<!--', b'\n<!--', xml)
xml = re.sub(b'-->(?=[^ \n])', b'-->\n', xml)
# extract DOCTYPE removed by etree.fromstring and reformat <language>
doctype = xml_string[:xml_string.find('<highlighting')]
# remove unformatted <language>
xml = xml[xml.find(b'<highlighting'):]
# last comment removed by etree.fromstring
last_comment = '\n<!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->'
return f'{doctype}{xml.decode()}{last_comment}'
# BEGIN Jinja filters
def cmd_is_nulary(cmd):
return cmd.setdefault('nulary?', False)
# 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, Loader=yaml.BaseLoader)
# Partition `variables` and `environment-variables` lists into "pure" (key)words and regexes to match
for var_key in _VAR_KIND_LIST:
data[var_key] = {
k: sorted(set(v)) for k, v in zip(
_KW_RE_LIST
, [*partition_iterable(lambda x: _TEMPLATED_NAME.search(x) is None, data[var_key])]
)
}
data[var_key]['re'] = try_placeholders_to_regex(data[var_key]['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'] = try_placeholders_to_regex(props_re)
data['properties']['kinds'] = list(map(lambda name: name.replace('-', '_'), _PROPERTY_KEYS))
# Make all commands list
data['commands'] = list(
map(
transform_command
, data['scripting-commands'] + data['project-commands'] + data['ctest-commands']
)
)
data['standard_module_commands'] = list(
map(
transform_command
, data['standard-module-commands']
)
)
del data['standard-module-commands']
# Fix node names to be accessible from Jinja template
data['generator_expressions'] = (ex for ex in data['generator-expressions'] if isinstance(ex, str))
data['complex_generator_expressions'] = [ex for ex in data['generator-expressions'] if not isinstance(ex, str)]
data['deprecated_or_internal_variables'] = data['deprecated-or-internal-variables']
data['environment_variables'] = data['environment-variables']
del data['generator-expressions']
del data['deprecated-or-internal-variables']
del data['environment-variables']
env = jinja2.Environment(
keep_trailing_newline=True
)
env.block_start_string = '<!--['
env.block_end_string = ']-->'
env.variable_start_string = '<!--{'
env.variable_end_string = '}-->'
env.comment_start_string = '<!--#'
env.comment_end_string = '#-->'
# Register convenience filters
env.tests['nulary'] = cmd_is_nulary
tpl = env.from_string(template.read())
result = tpl.render(data)
result = remove_duplicate_nodes(result)
print(result)
if __name__ == '__main__':
cli()
# TODO Handle execptions and show errors
@@ -0,0 +1,42 @@
#!/usr/bin/env perl
# SPDX-FileCopyrightText: 2020 Jonathan Poelen <jonathan.poelen@gmail.com>
# SPDX-License-Identifier: MIT
my $file = "";
open(my $input, '<:encoding(UTF-8)', $ARGV[0])
or die "Could not open file '$ARGV[0]': $!";
open(my $output, '>:encoding(UTF-8)', $ARGV[1])
or die "Could not open file '$ARGV[1]': $!";
while (<$input>)
{
$file .= $_;
}
$warning = "\n\n<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT ***** -->\n";
$first_context = " <context attribute=\"Normal Text\" lineEndContext=\"#stay\" name=\"Normal\">
<RegExpr attribute=\"Comment\" context=\"LineComment\" String=\"--(?:!|(?:-(?=[^-]|\$)))\"/>
<RegExpr attribute=\"Region\" context=\"#stay\" String=\"--\\s*\@\\{\\s*\$\" beginRegion=\"MemberGroup\" />
<RegExpr attribute=\"Region\" context=\"#stay\" String=\"--\\s*\@\\}\\s*\$\" endRegion=\"MemberGroup\" />
</context>";
$file =~ s/\n\s*<context [^\n]*?(?:name="ML_|name="BlockComment").*?<\/context>//gs;
$file =~ s/\n\s*<context [^\n]*?name="Normal".*?<\/context>/\n$first_context/s;
$file =~ s/\n[^\n]*?(?: ml_word|LineContinue)[^\n]+//gs;
$file =~ s/\/\/\//---/gs;
$file =~ s/\/\/!/--!/gs;
$language = $file =~ s/.*?(<language[^>]+?>).*/$1/sr;
$language =~ s/ name="[^"]+/ name="DoxygenLua/s;
$language =~ s/ extensions="[^"]+/ extensions="/s;
$language =~ s/ mimetype="[^"]+/ mimetype="/s;
$language =~ s/ priority="[^"]+"//s;
$version = $language =~ s/.*? version="([^"]+).*/$1/sr;
$version = $version+2;
$language =~ s/ version="[^"]+/ version="$version/s;
$file =~ s/<language[^>]+?>/$warning\n$language/s;
print $output $file;
print $output $warning;
@@ -0,0 +1,144 @@
#!/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.
#
# This script also supports Twig and does the same as for PHP.
#
# SPDX-FileCopyrightText: Jan Villat <jan.villat@net2000.ch>
# License: LGPL
my $file = "";
open(my $input, '<:encoding(UTF-8)', $ARGV[0])
or die "Could not open file '$ARGV[0]': $!";
open(my $output, '>:encoding(UTF-8)', $ARGV[1])
or die "Could not open file '$ARGV[1]': $!";
my $language = $ARGV[1];
if ($language =~ /-php\.xml$/)
{
$language = "PHP";
}
else
{
$language = "Twig";
}
while (<$input>)
{
$file .= $_;
}
$warning = "\n\n<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT ***** -->\n";
$file =~ s/(?=<language)/$warning\n\n\n/;
$file =~ /<language.*?name="([^"]+)"/;
my $syntaxName = $1;
if ($syntaxName eq "HTML")
{
$root = 1;
}
if ($language eq "Twig")
{
$file =~ s/<language([^>]+)priority="[^"]*"/<language$1/s;
}
if ($root == 1)
{
$file =~ s/<language([^>]+)name="[^"]*"/<language$1name="$language (HTML)"/s;
$file =~ s/<language([^>]+)section="[^"]*"/<language$1section="Scripts"/s;
if ($language eq "PHP")
{
$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;
$file =~ s/<language([^>]+)*/<language$1 indenter="cstyle"/s;
}
# Twig
else
{
$file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions="*.twig;*.html.twig;*.htm.twig"/s;
$file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype="text\/x-twig"/s;
}
}
else
{
$file =~ s/<language([^>]+)hidden="[^"]*"/<language$1/s;
$file =~ s/<language([^>]+)section="[^"]*"/<language$1section="Other"/s;
my $extra = " hidden=\"true\"";
my $mimetype = "";
my $extensions = "";
if ($language eq "Twig")
{
$mimetype = "text/x-twig";
if ($syntaxName eq "JavaScript")
{
$extra = " priority=\"1\"";
$extensions = "*.js.twig;*.mjs.twig;*.cjs.twig";
}
elsif ($syntaxName eq "TypeScript")
{
$extra = " priority=\"1\"";
$extensions = "*.ts.twig;*.mts.twig;*.cts.twig";
}
}
$file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype="$mimetype"/s;
$file =~ s/<language([^>]+)name="([^"]*)"/<language$1name="$2\/$language"$extra/s;
$file =~ s/<language([^>]+)alternativeNames="([^"]*)"/<language$1alternativeNames="$2\/$language"/s;
$file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions="$extensions"/s;
}
# replace list with a include
$file =~ s/<list name="([^"]+)">.*?<\/list>/<list name="$1"><include>$1##$syntaxName<\/include><\/list>/gs;
$file =~ s/<language([^>]+)kateversion="[^"]*"/<language$1kateversion="5.79"/s;
$file =~ s/ fallthrough="(true|1)"//gs;
if ($language eq "Twig")
{
# remove Mustache syntax
if ($root == 1)
{
$file =~ s/<context name="MustacheJS.*?<\/context>//gs;
$file =~ s/<StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="[^"]+[^\/]+\/>//gs;
}
}
elsif ($root == 1 || $ARGV[0] =~ /mustache.xml$/)
{
$file =~ s/<(?:RegExpr (attribute="Processing Instruction" context="PI"|context="PI" attribute="Processing Instruction")|itemData name="Processing Instruction")[^\/]+\/>|<context name="PI".*?<\/context>//gs;
}
my $find_language = "##$language/$language";
my $language_suffix = "/$language";
if ($language eq "PHP")
{
$find_language = "FindPHP";
}
$file =~ s/<IncludeRules\s([^>]*)context="([^"#]*)##(?!Alerts|Comments|Doxygen|Modelines)([^"]+)"/<IncludeRules $1context="$2##$3$language_suffix"/g;
$file =~ s/(<context\s[^>]*[^>\/]>)/$1\n<IncludeRules context="$find_language" \/>/g;
$file =~ s/(<context\s[^>]*[^>\/])\s*\/>/$1>\n<IncludeRules context="$find_language" \/>\n<\/context>/g;
if ($language eq "PHP")
{
$findphp = "<context name=\"FindPHP\" attribute=\"Normal Text\" lineEndContext=\"#stay\">\n<Detect2Chars context=\"##PHP/PHP\" char=\"&lt;\" char1=\"?\" lookAhead=\"true\" />\n</context>\n";
$file =~ s/(?=<\/contexts\s*>)/$findphp/;
}
print $output $file;
print $output $warning;
@@ -0,0 +1,55 @@
#!/usr/bin/env ruby
#
# Generates the keyword lists for directives and variables used in nginx and
# prints them to stdout, ready to be copy & pasted into nginx.xml.
#
# SPDX-FileCopyrightText: 2023 Jyrki Gadinger <nilsding@nilsding.org>
# SPDX-License-Identifier: MIT
#
# Usage:
# % ./generate-nginx-lists.rb
#
# if you want to install the required dependencies provide `INSTALL_GEMS` in
# your ENV:
# % INSTALL_GEMS=1 ./generate-nginx-lists.rb
require "bundler/inline"
gemfile(ENV["INSTALL_GEMS"]) do
source "https://rubygems.org"
gem "nokogiri", "~> 1.14"
gem "faraday", "~> 2.7"
gem "builder", "~> 3.2"
end
def fetch_vars(url)
Faraday.get(url)
.then { Nokogiri::HTML.parse _1.body }
.css("div#content a[href]")
.map(&:text)
.reject { _1.end_with?("_") } # some vars are just a prefix, ignore those
.sort
.uniq
end
def build_xml_list(name, url: nil, items: [])
builder = Builder::XmlMarkup.new(indent: 2)
builder.comment! "see #{url} for a full list of #{name}"
builder.list(name:) do |b|
items.each do |item|
b.item item
end
end
end
{
directives: "https://nginx.org/en/docs/dirindex.html",
variables: "https://nginx.org/en/docs/varindex.html",
}.each do |name, url|
items = fetch_vars(url)
puts build_xml_list(name, url:, items:).gsub(/^/, ' ' * 4)
puts
end
@@ -0,0 +1,67 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Generate SPDX-Comments syntax file
#
# SPDX-FileCopyrightText: 2020 Alex Turbov <i.zaufi@gmail.com>
# SPDX-License-Identifier: MIT
#
# To install prerequisites:
#
# $ pip install --user click jinja2
#
# To use:
#
# $ ./generate-spdx-syntax.py > ../syntax/spdx-comments.xml
#
import json
import pathlib
import urllib.request
import click
import jinja2
def get_json(url):
with urllib.request.urlopen(url=url) as body:
return json.load(body)
@click.command()
@click.argument('template', type=click.File('r'), default='./spdx-comments.xml.tpl')
def cli(template):
data = {
'licenses': [
*filter(
lambda l: not l['licenseId'].endswith('+')
, get_json(url='https://spdx.org/licenses/licenses.json')['licenses']
)
]
, 'exceptions': [
*filter(
lambda l: not l['licenseExceptionId'].endswith('+')
, get_json(url='https://spdx.org/licenses/exceptions.json')['exceptions']
)
]
}
env = jinja2.Environment(
keep_trailing_newline=True
)
env.block_start_string = '<!--['
env.block_end_string = ']-->'
env.variable_start_string = '<!--{'
env.variable_end_string = '}-->'
env.comment_start_string = '<!--#'
env.comment_end_string = '#-->'
tpl = env.from_string(template.read())
result = tpl.render(data)
print(result.strip(), end=None)
if __name__ == '__main__':
cli()
# TODO Handle execptions and show errors
@@ -0,0 +1,40 @@
#!/bin/bash
#
# SPDX-FileCopyrightText: 2012-2013 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
@@ -0,0 +1,33 @@
#!/bin/bash
#
# SPDX-FileCopyrightText: 2011-2012 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
@@ -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)
@@ -0,0 +1,46 @@
#!/usr/bin/env python
# SPDX-FileCopyrightText: 2016 Kevin Funk <kfunk@kde.org>
#
# SPDX-License-Identifier: LGPL-2.0-or-later
# 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)
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****
cd data/generators
# increase version of spdx-comments.xml.tpl then
./generate-spdx-syntax.py > ../syntax/spdx-comments.xml
-->
<language
version="6"
kateversion="3.1"
name="SPDX-Comments"
section="Other"
extensions=""
mimetype=""
author="Alex Turbov (i.zaufi@gmail.com)"
license="MIT"
hidden="true"
>
<highlighting>
<list name="tags">
<item>SPDX-License-Identifier:</item>
<item>SPDX-FileContributor:</item>
<item>SPDX-FileCopyrightText:</item>
<item>SPDX-LicenseInfoInFile:</item>
</list>
<list name="operators">
<item>AND</item>
<item>OR</item>
<item>WITH</item>
</list>
<list name="licenses">
<!--[- for license in licenses if not license.isDeprecatedLicenseId ]-->
<item><!--{ license.licenseId }--></item>
<!--[- endfor ]-->
</list>
<list name="deprecated-licenses">
<!--[- for license in licenses if license.isDeprecatedLicenseId ]-->
<item><!--{ license.licenseId }--></item>
<!--[- endfor ]-->
</list>
<list name="exceptions">
<!--[- for exception in exceptions if not exception.isDeprecatedLicenseId ]-->
<item><!--{ exception.licenseExceptionId }--></item>
<!--[- endfor ]-->
</list>
<list name="deprecated-exceptions">
<!--[- for exception in exceptions if exception.isDeprecatedLicenseId ]-->
<item><!--{ exception.licenseExceptionId }--></item>
<!--[- endfor ]-->
</list>
<contexts>
<context name="Normal" attribute="SPDX Tag" lineEndContext="#pop">
<WordDetect String="SPDX-License-Identifier:" attribute="SPDX Tag" context="license-expression" />
<keyword String="tags" attribute="SPDX Tag" />
</context>
<context name="license-expression" attribute="SPDX Value" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<AnyChar String="()+" context="#stay" attribute="SPDX License Expression Operator" />
<keyword String="licenses" context="#stay" attribute="SPDX License" />
<keyword String="deprecated-licenses" context="#stay" attribute="SPDX Deprecated License" />
<keyword String="exceptions" context="#stay" attribute="SPDX License Exception" />
<keyword String="deprecated-exceptions" context="#stay" attribute="SPDX Deprecated License Exception" />
<keyword String="operators" context="#stay" attribute="SPDX License Expression Operator" />
<RegExpr attribute="SPDX License" context="#stay" String="\bLicenseRef-[^\s]+" />
</context>
</contexts>
<itemDatas>
<itemData name="SPDX Tag" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
<itemData name="SPDX Value" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
<itemData name="SPDX License" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
<itemData name="SPDX License Exception" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
<itemData name="SPDX Deprecated License" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
<itemData name="SPDX Deprecated License Exception" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
<itemData name="SPDX License Expression Operator" defStyleNum="dsOperator" italic="true" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" weakDeliminator=":-." />
</general>
</language>
<!-- kate: indent-width 2; -->
@@ -0,0 +1,498 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2023 Jonathan Poelen <jonathan.poelen@gmail.com>
# SPDX-License-Identifier: MIT
from pathlib import Path
from collections import defaultdict
from typing import TextIO
import re
import sys
exclude_line = {
' - non-standard\n',
' - experimental\n',
' - deprecated\n',
'page-type: css-combinator\n',
'page-type: css-selector\n',
'page-type: css-module\n',
'page-type: landing-page\n',
'page-type: guide\n',
}
page_type_accepted = {
'page-type: css-type\n',
'page-type: css-function\n',
'page-type: css-property\n',
'page-type: css-keyword\n',
'page-type: css-shorthand-property\n',
'page-type: css-pseudo-element\n',
'page-type: css-pseudo-class\n',
'page-type: css-at-rule-descriptor\n',
'page-type: css-at-rule\n',
'page-type: css-media-feature\n',
'page-type: svg-attribute\n',
}
exclude_title = {
'<alpha-value>',
'<angle>',
'<angle-percentage>',
'<basic-shape>',
'<calc-constant>',
'<calc-sum>',
'<color-interpolation-method>',
'<color>',
'<custom-ident>',
'<dashed-ident>',
'<display-listitem>',
'<display-inside>',
'<dimension>',
'<easing-function>'
'<filter-function>',
'<flex>',
'<frequency-percentage>',
'<frequency>',
'<gradient>',
'<hex-color>',
'<hue>',
'<hue-interpolation-method>',
'<ident>',
'<image>',
'<integer>',
'<length>',
'<length-percentage>',
'<number>',
'<percentage>',
'<position>',
'<ratio>',
'<resolution>',
'<string>',
'<time-percentage>',
'<time>',
'<transform-function>',
'"!important"',
}
properties_ignore_value = (
'counter-increment',
'counter-reset',
'counter-set',
'text-rendering',
'page',
)
units: list[str] = []
colors: set[str] = set()
system_colors: set[str] = set()
deprecated_system_colors: set[str] = set()
values: set[str] = set()
properties: set[str] = set()
svg_values: set[str] = set()
svg_properties: set[str] = set()
functions: set[str] = set()
pseudo_classes: set[str] = set()
pseudo_elements: set[str] = set()
experimental_pseudo_classes: set[str] = set()
experimental_pseudo_elements: set[str] = set()
at_rules: set[str] = set()
media_features: set[str] = set()
media_feature_values: set[str] = set()
_update_version_extractor = re.compile(r' version="(\d+)" ')
def update_version(s: str) -> str:
return _update_version_extractor.sub(lambda m: f' version="{int(m[1])+1}" ', s, count=1)
_md_value_extractor = re.compile(r'(?<=[^\w][ /])`([-\w][-\w\d]+(?:<[^>]+>[?+*])?)`')
_html_value_extractor = re.compile(r'<code>([-\w][-\w\d]+)</code>')
_is_md_value = re.compile(r'^\s*- `')
_is_html_table_desc = re.compile(r'^\s+<td><code>')
def css_parse_values(f: TextIO, prop: str, values: set[str]) -> None:
line:str = ''
# Format:
# ## Syntax or ### Syntax
#
# ```css
# (optional)
# ```
# ## Values or ### Values or not...
#
# - `ident` or html table <td><code>....</code></td>
#
# ## SVG only ... (optional)
# ## other title
for line in f:
if line.endswith('## Syntax\n') or line.endswith('## Values\n') or '## SVG only' in line:
for line in f:
if _is_md_value.match(line):
if 'deprecated' not in line:
values.update(_md_value_extractor.findall(line))
elif line.startswith('#'):
if not (line.endswith('## Values\n') or '## SVG only' in line
or (prop == 'display'
and (line.endswith('## Grouped values\n')
or line.endswith('## Outside\n')
or line.endswith('## Inside\n')
or line.endswith('## List Item\n')
or line.endswith('## Internal\n')
or line.endswith('## Box\n')
or line.endswith('## Precomposed\n')
))
):
return
elif line == '```css\n':
for line in f:
if line.startswith('```\n'):
break
elif _is_html_table_desc.match(line):
values.update(_html_value_extractor.findall(line))
def css_parse_named_colors(f: TextIO) -> set[str]:
return set(re.findall('\n <td>(?:\n )?<code>([a-z]+)</code>', f.read()))
def css_parse_units(f: TextIO) -> list[str]:
return re.findall(r'`([^`]+)`', ''.join(re.findall(r'\n\| (`[^|]+)', f.read())))
_svg_values_extractor = re.compile(r'<th scope="row">Value</th>\n\s*<td>(.*?)</td>', re.DOTALL)
_svg_value_extractor = re.compile(r'<code>([-\w\d]+)</code>')
def css_parse_svg_attribute(f: TextIO, prop: str, properties: set[str], values: set[str]) -> None:
contents = f.read()
if 'can be used as a CSS property' in contents:
properties.add(prop)
m = _svg_values_extractor.search(contents)
if m:
values.update(_svg_value_extractor.findall(m[1]))
_experimental_selector_extractor = re.compile(r'\n- {{CSSxRef([^}]+)}} {{Experimental_Inline}}')
_selector_extractor = re.compile(r'":+([-\w\d]+)[()]*"')
def css_parse_pseudo_classes_or_elements(f: TextIO) -> tuple[
set[str], # experimental
list[str]
]:
s = f.read()
experimental_str = ''.join(_experimental_selector_extractor.findall(s))
return (set(_selector_extractor.findall(experimental_str)), _selector_extractor.findall(s))
if len(sys.argv) < 5:
print(f'''{Path(sys.argv[0]).name} content-main-directory syntax/css.xml sass-site-directory syntax/scss.xml
content-main-directory is https://github.com/mdn/content/ (https://github.com/mdn/content/archive/refs/heads/main.zip)
sass-site-directory is https://github.com/sass/sass-site/tree/main (https://github.com/sass/sass-site/archive/refs/heads/main.zip)
''', file=sys.stderr)
exit(1)
css_dir = Path(sys.argv[1])
css_filename = Path(sys.argv[2])
scss_dir = Path(sys.argv[3])
scss_filename = Path(sys.argv[4])
tmp_pseudo_classes = (set(), ())
tmp_pseudo_elements = (set(), ())
for pattern in (
'files/en-us/web/svg/attribute/**/',
'files/en-us/web/css/**/',
):
for md in css_dir.glob(pattern):
with open(md/'index.md', encoding='utf8') as f:
if f.readline() != '---\n':
continue
title = f.readline()[7:-1]
if title in exclude_title:
continue
if title.startswith('"'):
title = title[1:-1]
page_type = ''
for line in f:
if line in exclude_line:
page_type = ''
break
if line.startswith('page-type: '):
if line not in page_type_accepted:
raise Exception(f'Unknown {line[:-1]}')
page_type = line[11:-1]
if line == '---\n':
break
if page_type == 'css-property' or page_type == 'css-at-rule-descriptor':
properties.add(title)
if not title.endswith('-name') and title not in properties_ignore_value:
css_parse_values(f, title, values)
elif page_type == 'css-shorthand-property':
properties.add(title)
elif page_type == 'css-pseudo-class':
pseudo_classes.add(title[1:].removesuffix('()'))
elif page_type == 'css-pseudo-element':
pseudo_elements.add(title[2:].removesuffix('()'))
elif page_type == 'css-type':
if title == '<named-color>':
colors = css_parse_named_colors(f)
if title == '<system-color>':
css_parse_values(f, '', system_colors)
deprecated_system_colors = set(re.findall('\n- `([^`]+)` {{deprecated_inline}}', f.read()))
else:
css_parse_values(f, '', values)
elif page_type == 'css-function':
functions.add(title[:-2])
elif page_type == 'css-at-rule':
at_rules.add(title)
elif page_type == 'css-media-feature':
media_features.add(title)
css_parse_values(f, title, media_feature_values)
elif page_type == 'css-keyword':
values.add(title)
elif title == 'CSS values and units':
units = css_parse_units(f)
elif title == 'Pseudo-classes':
tmp_pseudo_classes = css_parse_pseudo_classes_or_elements(f)
elif title == 'Pseudo-elements':
tmp_pseudo_elements = css_parse_pseudo_classes_or_elements(f)
elif page_type == 'svg-attribute':
css_parse_svg_attribute(f, title, svg_properties, svg_values)
elif title == 'CSS value functions':
functions.update(re.findall(r'\n- {{CSSxRef\("[^"]+", "([-\w\d]+)\(\)"\)}}\n', f.read()))
experimental_pseudo_classes = tmp_pseudo_classes[0]
experimental_pseudo_classes -= pseudo_classes
pseudo_classes.update(tmp_pseudo_classes[1])
experimental_pseudo_elements = tmp_pseudo_elements[0]
experimental_pseudo_elements -= pseudo_elements
pseudo_elements.update(tmp_pseudo_elements[1])
global_values = {
'auto',
'inherit',
'initial',
'revert',
'revert-layer',
'unset',
}
values -= global_values
svg_values -= global_values
pseudo_classes -= experimental_pseudo_classes
pseudo_elements -= experimental_pseudo_elements
# add values of functions
values.update((
# repeat()
'auto-fill',
'auto-fit',
))
# move some keyword colors in values
for special_color in ('transparent', 'currentcolor'):
values.add(special_color)
colors.discard(special_color)
# fix not specified value in mdn file
if 'user-invalid' in experimental_pseudo_classes:
pseudo_classes.discard('user-valid')
experimental_pseudo_classes.add('user-valid')
media_features.update((
'min-width',
'max-width',
'min-height',
'max-height',
))
# fix errors in mdn file
for e in ('has', 'host-context'):
pseudo_classes.add(e)
experimental_pseudo_classes.discard(e)
# @font-format functions
functions.update((
'format',
'local',
'tech',
))
# def show(name, values):
# print(f'{name} ({len(values)}):')
# print('\n'.join(sorted(values)), end='\n\n')
#
# show('properties', properties)
# show('svg properties', svg_properties)
# show('values', values)
# show('svg values', svg_values)
# show('global values', global_values)
# show('functions', functions)
# show('pseudo-classes', pseudo_classes)
# show('pseudo-elements', pseudo_elements)
# show('experimental pseudo-classes', experimental_pseudo_classes)
# show('experimental pseudo-elements', experimental_pseudo_elements)
# show('at-rules', at_rules)
# show('media-features', media_features)
# show('media-features values', media_feature_values)
# show('colors', colors)
# show('system colors', system_colors)
# show('deprecated system colors', deprecated_system_colors)
# show('units', units)
# print('units reg:', '|'.join(units))
#
# Update CSS
#
sep = '\n '
css_replacements = {
prop: f'</item>{sep}<item>'.join(sorted(seq))
for prop, seq in (
('properties', properties),
('values', values),
('value keywords', global_values),
('functions', functions),
('pseudo-classes', pseudo_classes),
('pseudo-elements', pseudo_elements),
('media features', media_features)
)
}
for prop, seq in (('properties', svg_properties - properties), ('values', svg_values - values)):
if seq:
items = f'</item>{sep}<item>'.join(sorted(seq))
css_replacements[prop] += f'</item>\n{sep}<!-- SVG only -->\n{sep}<item>{items}'
rep1 = f'</item>{sep}<item>'.join(sorted(colors))
rep2 = f'</item>{sep}<item>'.join(sorted(system_colors))
css_replacements['colors'] = f'{rep1}</item>{sep}{sep}<!-- System colors -->{sep}<item>{rep2}'
item_extractor = re.compile('<item>([^-<][^<]*)')
current_at_rules = set()
def _css_update_and_extract_items(m) -> str:
seq = css_replacements.get(m[1])
if seq:
end = ' ' if m[3] == '</list>' else sep
return f'<list name="{m[1]}">{sep}<item>{seq}</item>\n{end}{m[3]}'
current_at_rules.update(item_extractor.findall(m[2]))
return m[0]
css_content = css_filename.read_text()
original_css_content = css_content
names = f"{'|'.join(css_replacements)}|at-rules(?: definitions)?"
css_content = re.sub(rf'<list name="({names})">(.*?)(</list>|<!-- manual list -->)',
_css_update_and_extract_items, css_content, flags=re.DOTALL)
_regexpr_unit_prefix = r'(<RegExpr attribute="Unit".*?String="\(%\|\()'
regexpr_unit_extractor = re.compile(fr'{_regexpr_unit_prefix}([^)]+)')
css_content = regexpr_unit_extractor.sub('\\1' + "|".join(units), css_content, 1)
if original_css_content != css_content:
css_content = update_version(css_content)
css_filename.write_text(css_content)
def show_at_rule_difference(language: str, old_at_rules: set[str], new_at_rules: set[str]) -> None:
at_rule_added = new_at_rules - old_at_rules
at_rule_removed = old_at_rules - new_at_rules
nl = '\n '
if at_rule_added or at_rule_removed:
print(f"""\x1b[31m{language} At-rules requires a manual update
New ({len(at_rule_added)}):\x1b[0m
{nl.join(at_rule_added)}
\x1b[31mRemoved ({len(at_rule_removed)}):\x1b[0m
{nl.join(at_rule_removed)}""")
show_at_rule_difference('CSS', current_at_rules, at_rules)
#
# Extract SCSS data
#
scss_functions:list[str] = []
scss_at_rules:set[str] = {'@content', '@return'}
_function_list_extractor = re.compile(r'{% function (.*?) %}')
_function_extractor = re.compile(r"'([-._a-zA-Z0-9]+)\(")
_at_rule_extractor = re.compile(r'@[-a-z0-9]+')
for md in sorted(scss_dir.glob('source/documentation/modules/**/*.md')):
func_list = _function_list_extractor.findall(md.read_text())
func_items = set(_function_extractor.findall(''.join(func_list)))
scss_functions.append(f'\n{sep}<!-- {md.stem} -->')
scss_functions.extend(f'{sep}<item>{func}</item>' for func in sorted(func_items - functions))
for md in scss_dir.glob('source/documentation/at-rules/**/*.md'):
with open(md) as f:
f.readline()
scss_at_rules.update(_at_rule_extractor.findall(f.readline()))
subproperties = set(
'-'.join(splitted[i:n])
for prop in properties
for splitted in (prop.rsplit('-', prop.count('-') - 1) # '-aaa-bbb' -> ['-aaa', 'bbb']
if prop.startswith('-')
else prop.split('-'), ) # 'aaa-bbb' -> ['aaa', 'bbb']
for i in range(len(splitted))
for n in range(i+1, len(splitted)+1)
)
#
# Update SCSS
#
scss_current_at_rules = set()
def _scss_update_and_extract_items(m) -> str:
name = m[1]
if name == 'functions':
return f"""<list name="functions">
<include>functions##CSS</include>
<!-- https://sass-lang.com/documentation/modules/ -->{f''.join(scss_functions)}
</list>"""
if name == 'at-rules':
scss_current_at_rules.update(_at_rule_extractor.findall(m[2]))
return m[0]
# sub-properties
items = f'</item>{sep}<item>'.join(sorted(subproperties - properties))
return f'<list name="{name}">{sep}<item>{items}</item>\n </list>'
scss_content = scss_filename.read_text()
original_scss_content = scss_content
scss_content = re.sub(r'<list name="(sub-properties|functions|at-rules)">(.*?)</list>',
_scss_update_and_extract_items, scss_content, count=3, flags=re.DOTALL)
scss_content = re.sub(r'<!ENTITY pseudoclasses "[^"]*">',
f'<!ENTITY pseudoclasses "{"|".join(sorted(pseudo_classes))}">',
scss_content, count=1)
scss_content = regexpr_unit_extractor.sub('\\1' + "|".join(units), scss_content, 1)
if original_scss_content != scss_content:
scss_content = update_version(scss_content)
scss_filename.write_text(scss_content)
show_at_rule_difference('SCSS', scss_current_at_rules, scss_at_rules)
@@ -0,0 +1,45 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2023 Jonathan Poelen <jonathan.poelen@gmail.com>
# SPDX-License-Identifier: MIT
from pathlib import Path
from urllib import request
import re
import sys
if len(sys.argv) < 1:
print(f'{sys.argv[0]} syntax/less.xml', file=sys.stderr)
exit(1)
#
# Extract functions
#
data = request.urlopen('https://lesscss.org/functions/').read().decode()
functions = re.findall(r'</a>([-_\w\d]+)</h3>', data, flags=re.DOTALL)
functions.append('%')
#
# Update syntax
#
sep = '\n '
new_list = f"""<list name="functions">
<include>functions##CSS</include>
<!-- Less functions, @see http://lesscss.org/functions/ -->
<item>{f'</item>{sep}<item>'.join(sorted(functions))}</item>
</list>"""
less_filename = Path(sys.argv[1])
less_content = less_filename.read_text()
original_less_content = less_content
less_content = re.sub(r'<list name="functions">.*?</list>',
new_list, less_content, count=1, flags=re.DOTALL)
if original_less_content != less_content:
less_content = re.sub(' version="(\d+)" ', lambda m: f' version="{int(m[1])+1}" ',
less_content, count=1)
less_filename.write_text(less_content)
@@ -0,0 +1,666 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: 2001 Joseph Wenninger <jowenn@kde.org>
SPDX-FileCopyrightText: 2002 Anders Lund <anders@alweb.dk>
SPDX-FileCopyrightText: 2003 Simon Huerlimann <simon.huerlimann@access.unizh.ch>
SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>
SPDX-FileCopyrightText: 2008 Wilbert Berendsen <info@wilbertberendsen.nl>
This file describes the XML format used for syntax highlight descriptions
for the Kate text editor (https://kate-editor.org), which is part of the
KDE desktop environment (https://kde.org).
You'll find the "Working with Syntax Highlighting" at
https://docs.kde.org/stable5/en/kate/katepart/highlight.html
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.
TODO
- find a more readable way for the - -dtdvalid stuff, it's just annoying
xml comments don't allow it.
-->
<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>
<!--
Char type
A sequence of exactly 1 character
-->
<xs:simpleType name="char">
<xs:restriction base="xs:string">
<xs:length value="1"/>
</xs:restriction>
</xs:simpleType>
<!--
Language specification
name: The name of this syntax description. Used in the Highlightning Mode menu
alternativeNames: A list of alternative names to match the language on. [optional]
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
kateversion: Kate version required for using this file
casesensitive: Ignored but preserved to maintain compatibility in older versions of KF5.
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]
-->
<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="alternativeNames"/>
<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"/>
<!-- always ignored, <keywords casesensitive> must be used -->
<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:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="item"/>
<xs:element ref="include"/>
</xs:choice>
<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 include
contains a name of <keyword>
-->
<xs:element name="include" 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 [optional, default='#stay']
lineEmptyContext: Next context if an empty line is encountered [optional, default=value of lineEndContext]
fallthrough: Use a fallthrough context [optional]
deprecated since 5.62 but preserved to maintain compatibility in older versions of KF5
fallthroughContext: Fall through to this context [optional, default='#stay']
dynamic: Dynamic context [boolean, optional]
deprecated since always but preserved to maintain compatibility in older versions of KF5
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]
stopEmptyLineContextSwitchLoop: Do not continue the context switching if an empty line is encountered. [boolean, optional, default=false]
-->
<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="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"/>
<xs:attribute name="lineEmptyContext"/>
<xs:attribute name="fallthrough">
<xs:simpleType>
<!-- always true since 5.62 -->
<xs:restriction base="xs:token">
<xs:enumeration value="1"/>
<xs:enumeration value="true"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="fallthroughContext"/>
<!-- always ignored -->
<xs:attribute name="dynamic" type="xs:boolean"/>
<xs:attribute name="noIndentationBasedFolding" type="xs:boolean"/>
<!-- since 5.103 -->
<xs:attribute name="stopEmptyLineContextSwitchLoop" 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
weakDeliminator: Add weak deliminators [optional, see note]
additionalDeliminator: Add deliminators [optional, see note]
By default, case sensitivity is determined from <keywords casesensitive> in
<general> (default=true), but can be overridden per-list with 'insensitive'.
weakDeliminator and additionalDeliminator are accumulated to those defined in
<keywords weakDeliminator additionalDeliminator> in <general>.
-->
<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="weakDeliminator"/>
<xs:attribute name="additionalDeliminator"/>
</xs:complexType>
</xs:element>
<!--
Detect a floating point number (as the regular expression: (\b[0-9]+\.[0-9]*|\.[0-9]+)([eE][-+]?[0-9]+)?).
commonAttributes: Common attributes
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
-->
<xs:element name="Float">
<xs:complexType>
<xs:attributeGroup ref="commonAttributes"/>
<xs:attribute name="weakDeliminator"/>
<xs:attribute name="additionalDeliminator"/>
</xs:complexType>
</xs:element>
<!--
Detect an octal number (as the regular expression: \b0[0-7]+).
commonAttributes: Common attributes
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
-->
<xs:element name="HlCOct">
<xs:complexType>
<xs:attributeGroup ref="commonAttributes"/>
<xs:attribute name="weakDeliminator"/>
<xs:attribute name="additionalDeliminator"/>
</xs:complexType>
</xs:element>
<!--
Detect a hexadecimal number (as a regular expression: \b0[xX][0-9a-fA-F]+).
commonAttributes: Common attributes
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
-->
<xs:element name="HlCHex">
<xs:complexType>
<xs:attributeGroup ref="commonAttributes"/>
<xs:attribute name="weakDeliminator"/>
<xs:attribute name="additionalDeliminator"/>
</xs:complexType>
</xs:element>
<!--
Detect C-style character. Characters enclosed in a tick (Example: 'c') which may be a simple character or an escaped character (as a regular expression: '(\\([abefnrtv"'?\\.]|x[0-9a-fA-F]{1,2}|[0-7]{1,3})|[^'])')
commonAttributes: Common attributes
-->
<xs:element name="HlCChar">
<xs:complexType>
<xs:attributeGroup ref="commonAttributes"/>
</xs:complexType>
</xs:element>
<!--
Detect an integer number
commonAttributes: Common attributes
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
-->
<xs:element name="Int">
<xs:complexType>
<xs:attributeGroup ref="commonAttributes"/>
<xs:attribute name="weakDeliminator"/>
<xs:attribute name="additionalDeliminator"/>
</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" type="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" type="char" use="required"/>
<xs:attribute name="char1" type="char" use="required"/>
</xs:complexType>
</xs:element>
<!--
Detect one character of a set of specified characters.
commonAttributes: Common attributes
String: The set of characters
-->
<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]
-->
<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]
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
-->
<xs:element name="WordDetect">
<xs:complexType>
<xs:attributeGroup ref="commonAttributes"/>
<xs:attribute name="String" use="required"/>
<xs:attribute name="insensitive" type="xs:boolean"/>
<xs:attribute name="weakDeliminator"/>
<xs:attribute name="additionalDeliminator"/>
</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" type="char"/>
</xs:complexType>
</xs:element>
<!--
Detect a C-style escaped character (as a regular expression: \\([abefnrtv"'?\\.]|x[0-9a-fA-F]{1,2}|[0-7]{1,3})).
commonAttributes: Common attributes
-->
<xs:element name="HlCStringChar">
<xs:complexType>
<xs:attributeGroup ref="commonAttributes"/>
</xs:complexType>
</xs:element>
<!--
Detect a string with defined start and end 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" type="char" use="required"/>
<xs:attribute name="char1" type="char" 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" type="char"/>
<xs:attribute name="ignored" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:schema>
@@ -0,0 +1,3 @@
#!/bin/sh
schemadir=$(dirname "$0")
xmllint --noout --schema "$schemadir"/language.xsd "$@"
@@ -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>
@@ -0,0 +1,925 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY label "[a-zA-Z_][a-zA-Z_0-9]*"> <!-- so sehen Labels aus -->
<!ENTITY varname "(?:[a-z_]\w*|[0-9]*[&amp;])"> <!-- valid character in a variable name -->
<!ENTITY pathpart "[^&#34;&#42;&#61;/:&lt;&gt;?\\[\]\|]"> <!-- valid character in a file name -->
<!ENTITY tasten "(?:(?:Strg|Alt|Shift)-)?(?:[a-z0-9]|F[1-9]|F1[0-2]|Esc|Bksp|Tab|Enter|Up|Down|Left|Right|PgUp|PgDn|Home|End|Ins|Del)">
]>
<language name="4DOS BatchToMemory" kateversion="5.0" version="10" section="Scripts" extensions="*.btm" casesensitive="0" indenter="cstyle" author="Stefan Huebner (st0ff@npl.de)" license="LGPL">
<!--DONE:
- comments are there
- substitutions are there
- basic variable function handling, distinguishing the function result between numerical and string
- variables are there (somehow)
- numbers will be found
- escape characters are found and highlit
- jumps, gosubs and labels
- command grouping
- conditions
- redirection
- many different command handlings
- iff
- echo
- text/endtext
- set/unset
- input/inkey
- do
- for
- switch
- internal commands of 4DOS
TODO:
- if someone finds that PATH-detection makes sense: create it...
- whatever doesn't seem to be correctly lit after all the preceeding stuff ...
- follow the TODO-Marks
-->
<highlighting>
<list name="HighlightInsideComment">
<item>todo</item>
<item>attention</item>
<item>attn</item>
<item>fixme</item>
<item>achtung</item>
<item>info</item>
</list>
<list name="IntFunctions">
<item>DOSMEM</item> <!-- b|k|m-->
<item>EMS</item> <!-- b|k|m-->
<item>EXTENDED</item> <!-- b|k|m-->
<item>XMS</item> <!-- b|k|m-->
<item>CDROM</item> <!--string-->
<item>CLUSTSIZE</item> <!--string-->
<item>CODEPAGE</item> <!--string-->
<item>COM</item> <!-- int-->
<item>DEVICE</item> <!--string-->
<item>DISKFREE</item> <!--string, b|k|m-->
<item>DISKTOTAL</item> <!--string, b|k|m-->
<item>DISKUSED</item> <!--string, b|k|m-->
<item>DRIVETYPE</item> <!--string-->
<item>HDDSIZE</item> <!--string, b|k|m-->
<item>LPT</item> <!-- int-->
<item>READY</item> <!--string-->
<item>REMOTE</item> <!--string-->
<item>REMOVABLE</item> <!--string-->
<item>ATTRIB</item> <!--string,-n|r|h|s|a|d,p]--><!--ATTENTION : nur mit 2 Parametern wird ein Int returned-->
<item>COMPARE</item> <!--string-->
<item>FILEAGE</item> <!--string,a|c|w]-->
<item>FILECLOSE</item> <!-- int-->
<item>FILEOPEN</item> <!--string, r|w|a,b|t]-->
<item>FILEREAD</item> <!-- int, int]-->
<item>FILEREADB</item> <!-- int, int-->
<item>FILES</item> <!--string,-n|r|h|s|a|d]-->
<item>FILESEEK</item> <!-- int, int, int-->
<item>FILESEEKL</item> <!-- int, int-->
<item>FILESIZE</item> <!--string,char,char]]-->
<item>FILEWRITE</item> <!-- int,string-->
<item>FILEWRITEB</item> <!-- int, int,string-->
<item>FINDCLOSE</item> <!--string-->
<item>LINES</item> <!--string-->
<item>ASCII</item> <!-- char-->
<item>COUNT</item> <!-- char,string-->
<item>FIELDS</item> <!--"string",]string-->
<item>INDEX</item> <!--string,string,int]-->
<item>ISALNUM</item> <!--string-->
<item>ISALPHA</item> <!--string-->
<item>ISASCII</item> <!--string-->
<item>ISCNTRL</item> <!--string-->
<item>ISDIGIT</item> <!--string-->
<item>ISLOWER</item> <!--string-->
<item>ISPRINT</item> <!--string-->
<item>ISPUNCT</item> <!--string-->
<item>ISSPACE</item> <!--string-->
<item>ISUPPER</item> <!--string-->
<item>ISXDIGIT</item> <!--string-->
<item>LEN</item> <!--string-->
<item>SIMILAR</item> <!--string,string-->
<item>WILD</item> <!--string,string-->
<item>WORDS</item> <!--"string",]string-->
<item>ABS</item> <!-- float-->
<item>AVERAGE</item> <!-- float,float,float...]]]-->
<item>CEILING</item> <!-- float-->
<item>CONVERT</item> <!-- int, int, int-->
<item>DEC</item> <!--expression-->
<item>DECIMAL</item> <!-- float-->
<item>DIGITS</item> <!--string-->
<item>EVAL</item> <!--expression-->
<item>FLOOR</item> <!-- float-->
<item>INC</item> <!--expression-->
<item>INT</item> <!-- float-->
<item>MAX</item> <!-- float,float,float...]]]-->
<item>MIN</item> <!-- float,float,float...]]]-->
<item>NUMERIC</item> <!--string-->
<item>RANDOM</item> <!-- float,float-->
<item>DATE</item> <!-- date-->
<item>DAY</item> <!-- date-->
<item>DOWI</item> <!-- date-->
<item>DOY</item> <!-- date-->
<item>ISODOWI</item> <!-- date-->
<item>ISOWEEK</item> <!-- date-->
<item>ISOWYEAR</item> <!-- date-->
<item>MAKEAGE</item> <!-- date,time]-->
<item>MONTH</item> <!-- date-->
<item>TIME</item> <!-- time-->
<item>YEAR</item> <!-- date-->
<item>EXEC</item> <!--expression-->
<item>INIWRITE</item> <!--string,string,string,string-->
</list>
<list name="StringFunctions">
<item>DDCSTR</item> <!-- int-->
<item>MASTER</item> <!--string-->
<item>READSCR</item> <!-- int, int, int-->
<item>SMBSTR</item> <!-- int, int-->
<item>CWD</item> <!--string-->
<item>CWDS</item> <!--string-->
<item>FSTYPE</item> <!--string-->
<item>LABEL</item> <!--string-->
<item>SERIAL</item> <!--string-->
<item>ATTRIB</item> <!--string--><!--ATTENTION : nur mit 1 Parameter wird ein String returned-->
<item>FILEDATE</item> <!--string,acw],n]]-->
<item>FILETIME</item> <!--string,acw],s]]-->
<item>FINDFIRST</item> <!--string,-n|r|h|s|a|d]-->
<item>FINDNEXT</item> <!--string,-n|r|h|s|a|d]-->
<item>LINE</item> <!--string, int-->
<item>MD5</item> <!--string-->
<item>SEARCH</item> <!--string,string]-->
<item>SHA1</item> <!--string-->
<item>TRUENAME</item> <!--string-->
<item>UNIQUE</item> <!--string-->
<item>ALTNAME</item> <!--string-->
<item>EXPAND</item> <!--string,-n|r|h|s|a|d]-->
<item>EXT</item> <!--string-->
<item>FILENAME</item> <!--string-->
<item>FULL</item> <!--string-->
<item>LFN</item> <!--string-->
<item>NAME</item> <!--string-->
<item>PATH</item> <!--string-->
<item>QUOTE</item> <!--string-->
<item>SFN</item> <!--string-->
<item>UNQUOTE</item> <!--string-->
<item>UNQUOTES</item> <!--string-->
<item>ASCII</item> <!--string-->
<item>CAPS</item> <!--"string",string-->
<item>CHAR</item> <!--space-delimited list of int-->
<item>FIELD</item> <!--"string",] int,string-->
<item>FORMAT</item> <!--string,string-->
<item>INSERT</item> <!-- int,string,string-->
<item>INSTR</item> <!-- int, int,string-->
<item>LCS</item> <!--string,string-->
<item>LEFT</item> <!-- int,string-->
<item>LOWER</item> <!--string-->
<item>LTRIM</item> <!--string,string-->
<item>REPEAT</item> <!-- char, int-->
<item>REPLACE</item> <!--string,string,string-->
<item>RIGHT</item> <!-- int,string-->
<item>RTRIM</item> <!--string,string-->
<item>REVERSE</item> <!--string-->
<item>STRIP</item> <!--string,string-->
<item>SUBST</item> <!-- int,string,string-->
<item>SUBSTR</item> <!-- int, int,string-->
<item>TRIM</item> <!--string-->
<item>UPPER</item> <!--string-->
<item>WORD</item> <!--"string",]n,string-->
<item>COMMA</item> <!-- float-->
<item>AGEDATE</item> <!-- int,format]-->
<item>DATECONV</item> <!--string,format]-->
<item>DOW</item> <!-- date-->
<item>DOWF</item> <!-- date-->
<item>MAKEDATE</item> <!-- int-->
<item>MAKETIME</item> <!-- int-->
<item>MONTHF</item> <!-- date-->
<item>ALIAS</item> <!--string-->
<item>CLIP</item> <!--string-->
<item>CLIPW</item> <!--string-->
<item>EXECSTR</item> <!--string-->
<item>FUNCTION</item> <!--string-->
<item>HISTORY</item> <!-- int, int]-->
<item>IF</item> <!--condition,string,string-->
<item>INIREAD</item> <!--string,string,string-->
<item>SELECT</item> <!--string, int, int, int, int,string-->
<item>TIMER</item> <!-- int-->
</list>
<list name="IfCommand"> <item>if</item> </list>
<list name="IffCommand"> <item>iff</item> </list>
<list name="TextCommand"> <item>text</item> </list>
<list name="InputCommand"> <item>input</item> </list>
<list name="InkeyCommand"> <item>inkey</item> </list>
<list name="DoCommand"> <item>do</item> </list>
<list name="EnddoCommand"> <item>enddo</item> </list>
<list name="SkipdoCommand">
<item>iterate</item>
<item>leave</item>
</list>
<list name="SwitchCommand"> <item>switch</item> </list>
<list name="TestErrorlevel"><item>errorlevel</item></list>
<list name="TestStatusVarname">
<item>defined</item>
<item>isalias</item>
<item>isfunction</item>
<item>isinternal</item>
<item>islabel</item>
</list>
<list name="SetCommand">
<item>set</item>
<item>function</item>
<item>alias</item>
</list>
<list name="UnsetCommand">
<item>ENDLOCAL</item>
<item>UNALIAS</item>
<item>UNFUNCTION</item>
<item>UNSET</item>
</list>
<list name="BadCommands">
<item>for</item>
<item>else</item>
<item>elseiff</item>
<item>endiff</item>
<item>enddo</item>
<item>endtext</item>
<item>case</item>
<item>endswitch</item>
<item>default</item>
<!-- the following is only valid within a do-loop. But obviously I didn't think about it twice:
if inside a do-loop we enter an iff/endiff construct, we switch contexts and the "leave" will
not be found by the "insideDo" context. There would need to be a way to create a dynamic list
of keywords that can be shorted or expanded by a specific context, so that the above wouldn't
happen. -->
<!--item> iterate </item>
<item> leave </item-->
</list>
<list name="NeedOnOffCommands">
<item>BREAK</item>
<item>IDLE</item>
<item>LFNFOR</item>
<item>LOADBTM</item>
<item>SWAPPING</item>
<item>TRANSIENT</item>
<item>VERIFY</item>
</list>
<list name="TakeAFileNameCommands">
<item>CALL</item>
<item>CD</item>
<item>CHDIR</item>
<item>CDD</item>
<item>DIR</item>
<item>ERASE</item>
<item>DEL</item>
<item>DESCRIBE</item>
<item>HEAD</item>
<item>MD</item>
<item>MKDIR</item>
<item>RD</item>
<item>RMDIR</item>
<item>PUSHD</item>
<item>REN</item>
<item>RENAME</item>
<item>TOUCH</item>
</list>
<list name="simpleNoChecksCommands">
<item>BEEP</item>
<item>CANCEL</item>
<item>DATE</item>
<item>FREE</item>
<item>KEYBD</item>
<item>ELSE</item>
<item>PAUSE</item>
<item>POPD</item>
<item>QUIT</item>
<item>SETDOS</item>
<item>SHIFT</item>
<item>TAIL</item>
<item>TEE</item>
<item>TIME</item>
<item>TIMER</item>
<item>TYPE</item>
</list>
<list name="NeedAnIntegerCommands">
<item>CHCP</item>
<item>DELAY</item>
<item>COUNTRY</item>
<item>SETERROR</item>
</list>
<list name="TakeColorsCommands">
<item>CLS</item>
<item>COLOR</item>
</list>
<list name="FilesystemOperationCommands">
<item>ATTRIB</item>
<item>COPY</item>
<item>FFIND</item>
<item>MOVE</item>
</list>
<list name="DrawCommands">
<item>DRAWBOX</item>
<item>DRAWHLINE</item>
<item>DRAWVLINE</item>
<item>SCREEN</item>
<item>SCRPUT</item>
<item>VSCRPUT</item>
</list>
<list name="NeedsACommandCommands">
<item>EXCEPT</item>
<item>GLOBAL</item>
</list>
<list name="NoParametersAtAllCommands">
<item>SETLOCAL</item>
</list>
<list name="OnOff">
<item>on</item>
<item>off</item>
</list>
<contexts>
<context name="base" attribute="Normal" lineEndContext="#stay">
<IncludeRules context="findComments"/>
<IncludeRules context="findCommands"/>
<IncludeRules context="findCommandSeparator"/>
<IncludeRules context="findStrings"/> <!-- includes "findSubstitution"-->
</context>
<!--
the following contexts are meant to be included in other contexts.
-->
<!-- find any comments (we were even keen enough to highlight things like TODO/FIXME and so on)-->
<context name="findComments" attribute="Normal" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="foundComment" char=":" char1=":" column="0"/>
<WordDetect attribute="Comment" context="foundComment" String="rem" insensitive="true"/>
</context>
<!-- whereever there should be a command start, the following should match in some way or another -->
<context name="findCommands" attribute="Normal" lineEndContext="#stay">
<!-- Highlight command groups and start/end corresponding folding region -->
<DetectChar attribute="Label" context="CommandGroup" char="(" beginRegion="true"/>
<!-- find Labels and jmp/jsr/rts commands -->
<IncludeRules context="findSpaghetti"/>
<!-- find commands that need special handling-->
<!-- TODO: replace single-item keyword lists with WordDetect as soon as WordDetect works properly again-->
<keyword attribute="Keyword" context="conditionLeft" String="IfCommand"/>
<keyword attribute="Keyword" context="cmdIff" String="IffCommand"/>
<!-- find all "echo"-variations -->
<RegExpr attribute="Keyword" String="[@]?echo\s+(?:on|off)(?=\s*($|\%\+|\)|\]))" insensitive="true"/>
<RegExpr attribute="Keyword" context="cmdEcho" String="\becho[s]?(?:err)?[\.]?" insensitive="true"/>
<!-- special treatment for Text and EndText -->
<keyword attribute="Keyword" context="cmdText" String="TextCommand" insensitive="true" beginRegion="true"/>
<!-- Set und Unset-Befehle -->
<keyword attribute="Keyword" context="cmdSet" String="SetCommand"/>
<keyword attribute="Keyword" context="cmdUnset" String="UnsetCommand"/>
<!-- inkey/input -->
<keyword attribute="Keyword" context="cmdInput" String="InputCommand"/>
<keyword attribute="Keyword" context="cmdInkey" String="InkeyCommand"/>
<!-- do loops -->
<keyword attribute="Keyword" context="cmdDo" String="DoCommand" beginRegion="true"/>
<!-- switch constructs -->
<keyword attribute="Keyword" context="cmdSwitch" String="SwitchCommand" beginRegion="true"/>
<!-- all the other internal 4DOS commands (with as little processing, as time permits) -->
<keyword attribute="Keyword" context="cmdNeedOnOff" String="NeedOnOffCommands"/>
<keyword attribute="Keyword" context="cmdTakeAFileName" String="TakeAFileNameCommands"/>
<keyword attribute="Keyword" context="cmdsimpleNoChecks" String="simpleNoChecksCommands"/>
<keyword attribute="Keyword" context="cmdNeedAnInteger" String="NeedAnIntegerCommands"/>
<keyword attribute="Keyword" context="cmdTakeColors" String="TakeColorsCommands"/>
<keyword attribute="Keyword" context="cmdFilesystemOperation" String="FilesystemOperationCommands"/>
<keyword attribute="Keyword" context="cmdDraw" String="DrawCommands"/>
<keyword attribute="Keyword" context="cmdNeedsACommand" String="NeedsACommandCommands"/>
<keyword attribute="Keyword" context="popNeedEndOfCommand" String="NoParametersAtAllCommands"/>
<!-- BAD COMMANDS:
for :: if someone codes for 4DOS, he shall not use for-loops. The way to go is using do-loops,
for-loops were just included into 4DOS to have M$-DOS command.com compatibility
any other bad commands: are not available outside of their respective scopes, or it's the same
as with "for"
-->
<keyword attribute="Error" context="Error" String="BadCommands"/>
</context>
<!-- find jumps, labels and subroutine calls -->
<context name="findSpaghetti" attribute="Normal" lineEndContext="#stay">
<RegExpr attribute="Label" context="foundLabel" String="^:&label;" beginRegion="true" insensitive="true" column="0"/>
<RegExpr attribute="Label" context="foundSpagetti" String="(?:goto|gosub)\s+&label;" insensitive="true"/>
<WordDetect attribute="Label" String="return" insensitive="true" endRegion="true"/>
</context>
<!-- find any variable substitution-->
<context name="findSubstitution" attribute="Normal" lineEndContext="#stay">
<DetectChar context="substitutionFound" char="%" lookAhead="true"/>
</context>
<!-- findVariables just finds variable substitutions WITHOUT variable functions!!!-->
<context name="findVariables" attribute="Normal" lineEndContext="#stay">
<Detect2Chars attribute="VariableBold" context="substitutionIndirect" char="%" char1="["/>
<RegExpr attribute="Variable" String="%(?:[a-z_][a-z_0-9]*%?|[0-9]+&amp;?|&amp;|\?+|_\?|#)" insensitive="true"/>
</context>
<!-- findNumbers finds Numbers and variableSubstitutions that may well be numbers-->
<context name="findNumbers" attribute="Normal" lineEndContext="#stay">
<RegExpr attribute="Number" String="\s*[+-]?\d*[,.]?\d+"/>
<Detect2Chars attribute="Function" context="substitutionFindIntFunction" char="%" char1="@"/>
<IncludeRules context="findVariables"/>
</context>
<!-- findStrings should skip over Strings, highlighting any substitution inside-->
<context name="findStrings" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="Escape" context="foundStringBackQuote" char="`"/>
<DetectChar attribute="String" context="foundStringQuote" char="&quot;"/>
<IncludeRules context="findEscapes"/>
<IncludeRules context="findSubstitution"/>
<!-- a Number may well be interpreted as a string in 4dos, also -->
<RegExpr attribute="Number" String="\s*[+-]?\d*[,.]?\d+"/>
<!-- the following highlights ANSI-Escape-Sequences -->
<RegExpr attribute="Escape" String="\x1b\[.*[fhlmpsuABCDHJKR]" minimal="true"/>
<!--
we shall find strings - so why don't we find at least literal words?
There is one simple answer: if we are inside a context that shall highlight strings,
then "findStrings" is included, to find things that evaluate to some kind of string.
Normal plaintext strings shall be lit by the context itself.
-->
</context>
<!-- highlight escaped characters -->
<context name="findEscapes" attribute="Normal" lineEndContext="#stay">
<RegExpr attribute="Escape" context="foundANSIEscape" String="&#37;&#61;e\[(?=.*[fhlmpsuABCDHJKR])" minimal="true"/>
<RegExpr attribute="Escape" String="\x18.|&#37;&#61;."/>
</context>
<!-- highlight the command seperator without changing contexts -->
<context name="findCommandSeparator" attribute="Normal" lineEndContext="#stay">
<Detect2Chars attribute="Keyword" char="%" char1="+"/>
</context>
<!-- highlight the command seperator and pop a context -->
<context name="popNeedEndOfCommand" attribute="Error" lineEndContext="#pop">
<Detect2Chars attribute="Keyword" context="#pop" char="%" char1="+"/>
<DetectSpaces attribute="Normal"/>
</context>
<!-- Entry Point for finding conditions -->
<context name="findCondition" attribute="Normal" lineEndContext="#stay">
<RegExpr attribute="Error" context="conditionLeft" String="(?:not\s+)*(?:(?:(?:dir)?exist|isdir|defined|is(?:alias|function|label|internal)|errorlevel)|(?:.+(?:(?:\s*(==|!=)\s*)|(?:\s+(?:eq|ne|gt|ge|lt|le|eqc)\s+)).))" lookAhead="true" insensitive="true" minimal="true"/>
</context>
<!-- find redirections -->
<context name="findRedirection" attribute="Error" lineEndContext="#stay">
<DetectChar attribute="Keyword" context="RedirectionInput1st" char="&lt;"/>
<RegExpr attribute="Keyword" context="RedirectionOutput1st" String="[&gt;]{1,2}[&amp;]?[&gt;]?"/>
</context>
<!-- find any Option -->
<context name="findOption" attribute="Option" lineEndContext="#stay">
<DetectChar attribute="Option" context="Option" char="/"/>
</context>
<!--
Here we start with functional contexts. These actually do something more than just find something and should not be sourced directly
-->
<context name="CommandGroup" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="Label" context="#pop" char=")" endRegion="true"/>
<IncludeRules context="base"/>
</context>
<!-- Highlight ANSI Escap-Sequences - the "%=e[" are already eaten up -->
<context name="foundANSIEscape" attribute="String" lineEndContext="#pop">
<IncludeRules context="findStrings"/>
<AnyChar attribute="Escape" context="#pop" String="fhlmpsuABCDHJKR"/>
</context>
<!-- if any substitution was found, we get here ... -->
<context name="substitutionFound" attribute="Error" lineEndContext="#pop">
<Detect2Chars attribute="Function" context="#pop!substitutionFindFunction" char="%" char1="@"/>
<Detect2Chars attribute="VariableBold" context="#pop!substitutionIndirect" char="%" char1="["/>
<RegExpr attribute="Variable" context="#pop" String="%(?:[a-z_][a-z_0-9]*%?|[0-9]+&amp;?|&amp;|\?+|_\?|#)" insensitive="true"/>
<!-- in @EVAL there is the modulo-operator %% - we'll have to filter it out!
TODO: give eval a special handler and remove the following rule. -->
<Detect2Chars attribute="Operator" context="#pop" char="%" char1="%"/>
</context>
<context name="substitutionFindFunction" attribute="Error" lineEndContext="#pop">
<!-- TODO: add special function handlers for
execstr
if
-->
<keyword attribute="Function" context="#pop!substitutionFunctionFound" String="StringFunctions"/>
<IncludeRules context="substitutionFindIntFunction"/>
</context>
<context name="substitutionFindIntFunction" attribute="Error" lineEndContext="#pop">
<!-- TODO: add special function handlers for
eval
-->
<keyword attribute="Function" context="#pop!substitutionFunctionFound" String="IntFunctions"/>
<RegExpr attribute="Function" context="#pop!substitutionFunctionFound" String="&label;(?=\[)" insensitive="true"/>
</context>
<!-- Variable Functions - the Masterpower of 4DOS -> we'll make this more complex later on!-->
<context name="substitutionFunctionFound" attribute="Error" lineEndContext="Error">
<DetectChar attribute="Function" context="#pop!findFunctionParameters" beginRegion="true" char="["/>
</context>
<context name="findFunctionParameters" attribute="String" lineEndContext="Error">
<DetectChar attribute="Function" char=","/>
<DetectChar attribute="Function" context="#pop" endRegion="true" char="]"/>
<IncludeRules context="findStrings"/>
</context>
<!-- indirect Substitutions - they need to find their ending braces-->
<context name="substitutionIndirect" attribute="Variable" lineEndContext="Error">
<DetectChar attribute="VariableBold" context="#pop" endRegion="true" char="]"/>
<IncludeRules context="findStrings"/>
</context>
<!-- Strings within quotes -->
<context name="foundStringBackQuote" attribute="String" lineEndContext="#pop">
<DetectChar attribute="Escape" context="#pop" char="`"/>
</context>
<context name="foundStringQuote" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="&quot;"/>
<IncludeRules context="findStrings"/>
</context>
<!-- stuff inside comments ... (a comment always runs until EOL) -->
<context name="foundComment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments"/>
<keyword attribute="Alert" String="HighlightInsideComment"/>
</context>
<!-- Label definitions including parameter definitions for Gosub-->
<context name="foundLabel" attribute="Error" lineEndContext="#pop">
<!-- Wir suchen nach Parameterdefinitionen für GOSUBs, alles andere sind Fehler! -->
<DetectChar attribute="Label" context="#pop!foundLabelParameters" char="["/>
<DetectSpaces attribute="Normal"/>
</context>
<context name="foundLabelParameters" attribute="Error" lineEndContext="#pop">
<DetectIdentifier attribute="Variable" context="#stay"/>
<DetectChar attribute="Label" context="#pop" char="]"/>
<DetectSpaces attribute="Normal"/>
</context>
<!-- highlight gosubs and gotos with additional parameters (only valid with gosub, actually)-->
<context name="foundSpagetti" attribute="Normal" lineEndContext="#pop">
<IncludeRules context="popNeedEndOfCommand"/>
<IncludeRules context="findStrings"/>
</context>
<!-- Rules that highlight conditions (include the entry point "findCondition" to start this as a context that pops behind the condition(s))-->
<context name="conditionLeft" attribute="Normal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!conditionLeftStandard">
<RegExpr attribute="Normal" context="conditionNot" String="\bnot\b" lookAhead="true" insensitive="true"/>
<keyword attribute="Label" context="#pop!conditionVarname" String="TestStatusVarname"/>
<!-- the end of a filename comes with any non-quoted space - so we need to eat up the first space after exist etc.-->
<RegExpr attribute="Label" context="#pop!conditionFileTest" String="(?:(?:dir)?exist|isdir)\s+" insensitive="true"/>
<keyword attribute="Label" context="#pop!conditionErrorlevel" String="TestErrorlevel"/>
<DetectSpaces/>
</context>
<context name="conditionNot" attribute="Error" lineEndContext="#pop#pop">
<!-- the context itself highlights everything as Error - just this rule finds the last not -->
<RegExpr attribute="Alert" context="#pop" String="\bnot\b(?!\s*not\b)" insensitive="true"/>
</context>
<context name="conditionVarname" attribute="Normal" lineEndContext="#pop">
<!-- basic variable name check just finds an identifier -->
<DetectIdentifier attribute="Variable" context="#pop!conditionEnd"/>
<!-- TODO: further checking, as a varname can also be calculated -->
</context>
<context name="conditionFileTest" attribute="String" lineEndContext="#pop">
<IncludeRules context="findStrings"/>
<DetectSpaces context="#pop!conditionEnd"/>
</context>
<context name="conditionErrorlevel" attribute="Normal" lineEndContext="#pop">
<DetectSpaces/>
<RegExpr attribute="Operator" String="==|!=|eq|ne|gt|ge|lt|le" insensitive="true"/>
<RegExpr attribute="Number" context="#pop!conditionEnd" String="\s*[+-]?\d*[,.]?\d+"/>
<!-- TODO: actually errorlevel-test can also take calculated numbers or int variables to test agains - but would we want to duplicate a lot of the functionality above again?-->
</context>
<context name="conditionEnd" attribute="Normal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Operator" context="#pop!conditionLeft" String="\.(?:and|x?or)\." insensitive="true"/>
<!--DetectSpaces/-->
</context>
<context name="conditionLeftStandard" attribute="Normal" lineEndContext="#pop">
<!--DetectSpaces/-->
<RegExpr attribute="Operator" context="#pop!conditionLeftEval" String="\s*(?:==|!=|eq|ne|gt|ge|lt|le)" lookAhead="true" insensitive="true"/>
<IncludeRules context="findStrings"/>
</context>
<context name="conditionLeftEval" attribute="Normal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!conditionRight">
<DetectSpaces/>
<RegExpr attribute="Operator" String="==|!=|eq|ne|gt|ge|lt|le|eqc" insensitive="true"/>
</context>
<context name="conditionRight" attribute="Normal" lineEndContext="#pop">
<IncludeRules context="findStrings"/>
<DetectSpaces context="#pop!conditionEnd"/>
</context>
<!-- Handle Iff correctly: condition, then, wait for possible else/handle elseiff find endiff-->
<context name="cmdIff" attribute="Normal" lineEndContext="#pop">
<IncludeRules context="findCondition"/>
<DetectSpaces/>
<!-- TODO: replace with WordDetect as soon as WordDetect works right-->
<RegExpr attribute="Keyword" context="#pop!cmdIffThen" beginRegion="true" String="\bthen\b\s*(?:$|%\+)" insensitive="true"/>
<!-- should the above regex not match, there is an error... -->
<StringDetect attribute="Keyword" context="Error" String="then" insensitive="true"/>
</context>
<context name="cmdIffThen" attribute="Normal" lineEndContext="#stay">
<!-- TODO: replace with WordDetect as soon as WordDetect works right-->
<RegExpr attribute="Keyword" context="popNeedEndOfCommand" String="\belse\b" insensitive="true"/>
<RegExpr attribute="Keyword" context="cmdElseiff" String="\belseiff\b" insensitive="true"/>
<RegExpr attribute="Keyword" context="#pop!popNeedEndOfCommand" endRegion="true" String="\bendiff\b" insensitive="true"/>
<IncludeRules context="base"/>
</context>
<context name="cmdElseiff" attribute="Normal" lineEndContext="#pop">
<IncludeRules context="findCondition"/>
<DetectSpaces/>
<!-- TODO: replace with WordDetect as soon as WordDetect works right-->
<RegExpr attribute="Keyword" context="#pop" String="\bthen\b\s*(?:$|%\+)" insensitive="true"/>
<!-- should the above regex not match, there is an error... -->
<StringDetect attribute="Keyword" context="Error" String="then" insensitive="true"/>
</context>
<!-- echo -->
<context name="cmdEcho" attribute="String" lineEndContext="#pop">
<IncludeRules context="findStrings"/>
<IncludeRules context="findRedirection"/>
<RegExpr attribute="Normal" context="#pop" String="\s*(?:$|\%\+|\)|\])" lookAhead="true"/>
</context>
<!-- Redirection: kann ja auch mehrfach auftreten -->
<context name="Redirection" attribute="String" lineEndContext="#pop">
<DetectSpaces attribute="Normal" context="#stay"/>
<IncludeRules context="findStrings"/>
<IncludeRules context="popNeedEndOfCommand"/>
</context>
<context name="RedirectionOutput1st" attribute="String" lineEndContext="#pop">
<IncludeRules context="Redirection"/>
<DetectChar attribute="Redirection" context="#pop!Redirection" char="&lt;"/>
</context>
<context name="RedirectionInput1st" attribute="String" lineEndContext="#pop">
<IncludeRules context="Redirection"/>
<RegExpr attribute="Redirection" context="#pop!Redirection" String="[&gt;]{1,2}[&amp;]?[&gt;]?"/>
</context>
<!-- special treatment of text and endtext -->
<context name="cmdText" attribute="Error" lineEndContext="#pop!cmdEndText">
<DetectSpaces attribute="Normal" context="#stay"/>
<RegExpr attribute="Keyword" context="Redirection" String="[&gt;]{1,2}"/>
</context>
<context name="cmdEndText" attribute="String" lineEndContext="#stay">
<RegExpr attribute="Keyword" context="#pop" String="^\s*endtext\s*$" insensitive="true" column="0"/>
<!-- As we are pretty 31337, we also highlight ANSI-Escapes in Textblocks.
We're just not 1337 enough to also provide a syntactic checking for
those sequences...-->
<RegExpr attribute="Escape" String="\x1b\[.*[fhlmpsuABCDHJKR]" minimal="true"/>
</context>
<!-- Set/Unset commands -->
<context name="cmdUnset" attribute="Normal" lineEndContext="#pop">
<IncludeRules context="findOption"/>
<DetectIdentifier attribute="Variable" context="#stay"/>
<IncludeRules context="popNeedEndOfCommand"/>
</context>
<context name="cmdSet" attribute="Normal" lineEndContext="#pop">
<DetectChar attribute="Keyword" context="#pop" char="="/>
<IncludeRules context="cmdUnset"/>
</context>
<!-- Highlight an Option, #pop on next space ...-->
<context name="Option" attribute="Option" lineEndContext="#pop">
<IncludeRules context="findStrings"/>
<DetectSpaces attribute="Normal" context="#pop"/>
</context>
<!-- input und inkey - testing allowed Options ... -->
<context name="cmdInput" attribute="String" lineEndContext="#pop"
fallthroughContext="#pop!inputMessage" fallthrough="true">
<IncludeRules context="input"/>
<RegExpr attribute="Option" String="/(?:[en]|l[0-9]+)\s" insensitive="true"/>
</context>
<context name="cmdInkey" attribute="String" lineEndContext="#pop"
fallthroughContext="#pop!inputMessage" fallthrough="true">
<StringDetect attribute="Option" context="inputKeysDP" String="/k:" insensitive="true"/>
<StringDetect attribute="Option" context="inputKeysAZ" String="/k&quot;" insensitive="true"/>
<StringDetect attribute="Error" String="/k" insensitive="true"/>
<StringDetect attribute="Option" String="/m" insensitive="true"/>
<IncludeRules context="input"/>
</context>
<context name="input" attribute="Error" lineEndContext="#stay">
<RegExpr attribute="Option" String="/(?:[cdpx]|[w][0-9]+)\s" insensitive="true"/>
<DetectSpaces attribute="Normal" context="#stay"/>
</context>
<context name="inputKeysDP" attribute="Error" lineEndContext="#pop#pop">
<DetectChar attribute="String" context="inputKeyDesc" char="["/>
<DetectSpaces attribute="Normal" context="#pop"/>
<RegExpr attribute="Function" String="\S"/>
</context>
<context name="inputKeysAZ" attribute="Error" lineEndContext="#pop#pop">
<DetectChar attribute="String" context="inputKeyDesc" char="["/>
<DetectChar attribute="Option" context="#pop" char="&quot;"/>
<RegExpr attribute="Function" String="\S"/>
</context>
<context name="inputKeyDesc" attribute="Error" lineEndContext="#pop#pop#pop">
<RegExpr attribute="Label" context="#pop!inputKeyDesc2" String="&tasten;"/>
</context>
<context name="inputKeyDesc2" attribute="Error" lineEndContext="#pop#pop#pop">
<DetectChar attribute="String" context="#pop" char="]"/>
</context>
<context name="inputMessage" attribute="String" lineEndContext="#pop">
<RegExpr attribute="Variable" context="#pop!popNeedEndOfCommand" String="%%[a-z_][a-z0-9_]*" insensitive="true"/>
<IncludeRules context="findStrings"/>
</context>
<!-- special treatment of DO -->
<context name="cmdDo" attribute="Error" lineEndContext="Error">
<!-- do n | forever-->
<RegExpr attribute="Label" context="#pop!insideDo" String="\s*forever(?=\s*$)" insensitive="true"/>
<RegExpr attribute="Variable" context="#pop!fixedDo" String="\s*[%0-9]" lookAhead="true"/>
<!-- WHILE | UNTIL -->
<RegExpr attribute="Label" context="#pop!conditionalDo" String="\s*(?:while|until)" insensitive="true"/>
<!-- varname = start TO end [BY n] | varname in blubberkram -->
<RegExpr attribute="Variable" context="#pop!countedDo" String="\s*&varname;" insensitive="true"/>
</context>
<context name="fixedDo" attribute="Error" lineEndContext="#pop!insideDo">
<DetectSpaces attribute="Normal"/>
<IncludeRules context="findNumbers"/>
</context>
<context name="countedDo" attribute="Error" lineEndContext="Error">
<RegExpr attribute="Keyword" context="#pop!countedDoIn" String="\bin\b" insensitive="true"/>
<DetectChar attribute="Keyword" context="#pop!countedDoStart" char="="/>
<DetectSpaces attribute="Normal"/>
</context>
<context name="countedDoIn" attribute="String" lineEndContext="#pop!insideDo">
<DetectSpaces/>
<IncludeRules context="findOption"/>
<IncludeRules context="findStrings"/>
</context>
<context name="countedDoStart" attribute="Error" lineEndContext="Error">
<RegExpr attribute="Keyword" context="#pop!countedDoTo" String="\bto\b" insensitive="true"/>
<IncludeRules context="findNumbers"/>
<DetectSpaces attribute="Normal"/>
</context>
<context name="countedDoTo" attribute="Error" lineEndContext="#pop!insideDo">
<IncludeRules context="findNumbers"/>
<DetectSpaces attribute="Normal"/>
<RegExpr attribute="Keyword" context="#pop!countedDoBy" String="\bby\b" insensitive="true"/>
</context>
<context name="countedDoBy" attribute="Error" lineEndContext="#pop!insideDo">
<IncludeRules context="findNumbers"/>
<DetectSpaces attribute="Normal"/>
</context>
<context name="conditionalDo" attribute="Error" lineEndContext="#pop!insideDo">
<IncludeRules context="findCondition"/>
<DetectSpaces attribute="Normal"/>
</context>
<context name="insideDo" attribute="Normal" lineEndContext="#stay">
<keyword attribute="Keyword" String="SkipdoCommand"/>
<keyword attribute="Keyword" endRegion="true" context="#pop!popNeedEndOfCommand" String="EnddoCommand"/>
<IncludeRules context="base"/>
</context>
<!-- special treatment of switch statements -->
<context name="cmdSwitch" attribute="Normal" lineEndContext="#pop!insideSwitch">
<IncludeRules context="findStrings"/>
</context>
<context name="insideSwitch" attribute="Normal" lineEndContext="#stay">
<RegExpr attribute="Keyword" context="#pop!switchDefault" String="\s*default\s*$" insensitive="true"/>
<IncludeRules context="switchDefault"/>
</context>
<!-- "Default" may be used only once, that's why we change contexts when it was found -->
<context name="switchDefault" attribute="Normal" lineEndContext="#stay">
<RegExpr attribute="Keyword" context="switchCase" String="\bcase\b" insensitive="true"/>
<RegExpr attribute="Keyword" context="#pop!popNeedEndOfCommand" String="\bendswitch\b" insensitive="true" endRegion="true"/>
<IncludeRules context="base"/>
</context>
<context name="switchCase" attribute="String" lineEndContext="#pop">
<DetectSpaces/>
<StringDetect attribute="Operator" insensitive="true" String=".or."/>
<IncludeRules context="findStrings"/>
</context>
<!-- internal commands of the 4DOS interpreter (TODO: make it even better, like integrated syntax checking) -->
<context name="cmdNeedOnOff" attribute="Error" lineEndContext="#pop">
<keyword attribute="String" context="#pop!popNeedEndOfCommand" String="OnOff"/>
<DetectSpaces attribute="Normal"/>
</context>
<context name="cmdNeedAnInteger" attribute="Error" lineEndContext="#pop">
<DetectSpaces attribute="Normal"/>
<IncludeRules context="findOption"/>
<IncludeRules context="findNumbers"/>
<IncludeRules context="popNeedEndOfCommand"/>
</context>
<context name="cmdNeedsACommand" attribute="String" lineEndContext="#pop">
<IncludeRules context="findOption"/>
<IncludeRules context="base"/>
</context>
<context name="cmdsimpleNoChecks" attribute="String" lineEndContext="#pop">
<IncludeRules context="findOption"/>
<IncludeRules context="findStrings"/>
<IncludeRules context="popNeedEndOfCommand"/>
</context>
<context name="cmdTakeAFileName" attribute="String" lineEndContext="#pop">
<IncludeRules context="findOption"/>
<IncludeRules context="findStrings"/>
<IncludeRules context="popNeedEndOfCommand"/>
</context>
<context name="cmdTakeColors" attribute="String" lineEndContext="#pop">
<RegExpr attribute="Operator" context="#pop!ColorHaveBrightFG" String="\bbri(?:ght)?\b" insensitive="true"/>
<RegExpr attribute="Operator" context="#pop!ColorHaveBlinkFG" String="\bbli(?:nk)?\b" insensitive="true"/>
<IncludeRules context="ColorHaveBlinkFG"/>
</context>
<context name="ColorHaveBrightFG" attribute="String" lineEndContext="Error">
<RegExpr attribute="Operator" context="#pop!ColorHaveBlinkFG" String="\bbli(?:nk)?\b" insensitive="true"/>
<IncludeRules context="ColorHaveBlinkFG"/>
</context>
<context name="ColorHaveBlinkFG" attribute="String" lineEndContext="Error">
<RegExpr attribute="Option" context="#pop!ColorHaveFG" insensitive="true" String="\b(?:Bla(?:ck)?|Blue?|Gre(?:en)?|Red|Mag(?:enta)?|Cyan?|Yel(?:low)?|Whi(?:te)?)\b"/>
<DetectSpaces/>
</context>
<context name="ColorHaveFG" attribute="String" lineEndContext="Error">
<RegExpr attribute="Keyword" context="#pop!ColorBG" insensitive="true" String="\s+on\s+"/>
</context>
<context name="ColorBG" attribute="String" lineEndContext="Error">
<RegExpr attribute="Operator" insensitive="true" String="\bbri(?:ght)?\b"/>
<RegExpr attribute="Option" context="#pop!ColorHaveBG" insensitive="true" String="\b(?:Bla(?:ck)?|Blue?|Gre(?:en)?|Red|Mag(?:enta)?|Cyan?|Yel(?:low)?|Whi(?:te)?)\b"/>
</context>
<context name="ColorHaveBG" attribute="String" lineEndContext="#pop">
<RegExpr attribute="Operator" context="#pop!ColorNeedBordercol" insensitive="true" String="\bBOR(?:der)?\b"/>
<IncludeRules context="popNeedEndOfCommand"/>
</context>
<context name="ColorNeedBordercol" attribute="String" lineEndContext="Error">
<RegExpr attribute="Option" context="#pop!popNeedEndOfCommand" insensitive="true" String="\s*(?:Bla(?:ck)?|Blue?|Gre(?:en)?|Red|Mag(?:enta)?|Cyan?|Yel(?:low)?|Whi(?:te)?)\b"/>
</context>
<context name="cmdDraw" attribute="String" lineEndContext="#pop">
<!-- ToDo: check if we'll have to split this into multiple contexts, add the highlighting for drawing commands -->
</context>
<context name="cmdFilesystemOperation" attribute="String" lineEndContext="#pop">
<IncludeRules context="findOption"/>
<IncludeRules context="findStrings"/>
<IncludeRules context="popNeedEndOfCommand"/>
</context>
<context name="Error" attribute="Error" lineEndContext="#stay">
</context>
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Number" defStyleNum="dsDecVal"/>
<itemData name="Option" defStyleNum="dsDecVal"/>
<itemData name="Label" defStyleNum="dsOthers"/>
<itemData name="Function" defStyleNum="dsFunction"/>
<itemData name="Redirection" defStyleNum="dsKeyword"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Escape" defStyleNum="dsSpecialChar"/>
<itemData name="Variable" defStyleNum="dsVariable"/>
<itemData name="VariableBold" defStyleNum="dsVariable" bold="true"/>
<itemData name="Alert" defStyleNum="dsAlert"/>
<itemData name="Error" defStyleNum="dsError"/>
<itemData name="Operator" defStyleNum="dsOperator"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="rem "/>
</comments>
<keywords casesensitive="0" additionalDeliminator="@"/>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,282 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="ABAP" version="7" kateversion="5.0" section="Sources" extensions="*.abap;*.ABAP" mimetype="text/x-abap-src" priority="5" author="Marcos Antonio Alvarez Costales (busgosin@hotmail.com)" license="GPL">
<highlighting>
<list name="keywords">
<!-- compiler directives and structures -->
<item>ADD</item>
<item>ADJACENT</item>
<item>ALL</item>
<item>AND</item>
<item>APPEND</item>
<item>APPENDING</item>
<item>AS</item>
<item>ASCENDING</item>
<item>AT</item>
<item>BEGIN</item>
<item>BETWEEN</item>
<item>BINARY</item>
<item>BLOCK</item>
<item>BY</item>
<item>CASE</item>
<item>CENTERED</item>
<item>CHAIN</item>
<item>CHANGING</item>
<item>CHECK</item>
<item>CHECKBOX</item>
<item>CLEAR</item>
<item>COL_BACKGROUND</item>
<item>COL_HEADING</item>
<item>COL_NORMAL</item>
<item>COL_TOTAL</item>
<item>COLOR</item>
<item>COMMENT</item>
<item>COMMIT</item>
<item>COMPARING</item>
<item>COMPUTE</item>
<item>CONCATENATE</item>
<item>CONDENSE</item>
<item>CONSTANTS</item>
<item>CONTINUE</item>
<item>CONTROLS</item>
<item>COUNTRY</item>
<item>DATA</item>
<item>DECIMALS</item>
<item>DEFAULT</item>
<item>DELETE</item>
<item>DELETING</item>
<item>DESCENDING</item>
<item>DESCRIBE</item>
<item>DO</item>
<item>DUPLICATES</item>
<item>EDIT</item>
<item>ELSE</item>
<item>ELSEIF</item>
<item>END</item>
<item>ENDCASE</item>
<item>ENDCHAIN</item>
<item>ENDDO</item>
<item>ENDIF</item>
<item>ENDLOOP</item>
<item>ENDMODULE</item>
<item>ENDSELECT</item>
<item>ENDWHILE</item>
<item>ENTRIES</item>
<item>EQ</item>
<item>EXCEPTIONS</item>
<item>EXCLUDING</item>
<item>EXIT</item>
<item>EXIT-COMMAND</item>
<item>EXPORT</item>
<item>EXPORTING</item>
<item>FIELD</item>
<item>FIRST</item>
<item>FOR</item>
<item>FORMAT</item>
<item>FRAME</item>
<item>FREE</item>
<item>FROM</item>
<item>GE</item>
<item>GROUP</item>
<item>GT</item>
<item>HEADER</item>
<item>HEADING</item>
<item>HIDE</item>
<item>HOTSPOT</item>
<item>ID</item>
<item>IF</item>
<item>IMPORT</item>
<item>IMPORTING</item>
<item>IN</item>
<item>INDEX</item>
<item>INITIAL</item>
<item>INNER</item>
<item>INPUT</item>
<item>INSERT</item>
<item>INTENSIFIED</item>
<item>INTERVALS</item>
<item>INTO</item>
<item>IS</item>
<item>JOIN</item>
<item>KEY</item>
<item>LE</item>
<item>LEAVE</item>
<item>LEFT</item>
<item>LEFT-JUSTIFIED</item>
<item>LIKE</item>
<item>LINE</item>
<item>LINE-COUNT</item>
<item>LINES</item>
<item>LINES</item>
<item>LINE-SIZE</item>
<item>LIST-PROCESSING</item>
<item>LOOP</item>
<item>LT</item>
<item>MASK</item>
<item>MEMORY</item>
<item>MESSAGE</item>
<item>MESSAGE-ID</item>
<item>MOD</item>
<item>MODIFY</item>
<item>MODULE</item>
<item>MOVE</item>
<item>MOVE-CORRESPONDING</item>
<item>NE</item>
<item>NEW-LINE</item>
<item>NEW-PAGE</item>
<item>NO</item>
<item>NO-EXTENSION</item>
<item>NO-GAP</item>
<item>NO-SCROLLING</item>
<item>NOT</item>
<item>NO-ZERO</item>
<item>NUMBER</item>
<item>OBLIGATORY</item>
<item>OCCURS</item>
<item>OF</item>
<item>OFF</item>
<item>ON</item>
<item>OR</item>
<item>OTHERS</item>
<item>OUTPUT</item>
<item>PAGE</item>
<item>PARAMETER</item>
<item>PARAMETERS</item>
<item>PERFORM</item>
<item>PF-STATUS</item>
<item>POS_HIGH</item>
<item>POS_LOW</item>
<item>POSITION</item>
<item>PROGRAM</item>
<item>RADIOBUTTON</item>
<item>RANGES</item>
<item>READ</item>
<item>REFRESH</item>
<item>REPORT</item>
<item>RESERVE</item>
<item>RESET</item>
<item>RIGHT</item>
<item>RIGHT-JUSTIFIED</item>
<item>ROLLBACK</item>
<item>ROWS</item>
<item>SCREEN</item>
<item>SCREEN-GROUP1</item>
<item>SCREEN-GROUP2</item>
<item>SCREEN-GROUP3</item>
<item>SCREEN-GROUP4</item>
<item>SCREEN-GROUP5</item>
<item>SCREEN-INPUT</item>
<item>SCREEN-INTENSIFIED</item>
<item>SEARCH</item>
<item>SELECT</item>
<item>SELECTION</item>
<item>SELECTION-SCREEN</item>
<item>SELECT-OPTIONS</item>
<item>SEPARATED</item>
<item>SET</item>
<item>SHIFT</item>
<item>SINGLE</item>
<item>SKIP</item>
<item>SORT</item>
<item>SPACE</item>
<item>SPLIT</item>
<item>STANDARD</item>
<item>STARTING</item>
<item>STOP</item>
<item>STRLEN</item>
<item>STRUCTURE</item>
<item>SUBTRACT</item>
<item>SY-CUCOL</item>
<item>SY-DATUM</item>
<item>SY-DYNNR</item>
<item>SY-LINSZ</item>
<item>SY-LOOPC</item>
<item>SY-LSIND</item>
<item>SY-MSGID</item>
<item>SY-MSGTY</item>
<item>SY-MSGV1</item>
<item>SY-MSGV2</item>
<item>SY-MSGV3</item>
<item>SY-MSGV4</item>
<item>SY-PAGNO</item>
<item>SY-REPID</item>
<item>SY-STEPL</item>
<item>SY-SUBRC</item>
<item>SY-TABIX</item>
<item>SY-TCODE</item>
<item>SY-TMAXL</item>
<item>SY-UCOMM</item>
<item>SY-ULINE</item>
<item>SY-UNAME</item>
<item>SY-UZEIT</item>
<item>SY-VLINE</item>
<item>TABLE</item>
<item>TABLES</item>
<item>TABLEVIEW</item>
<item>TIMES</item>
<item>TITLE</item>
<item>TITLEBAR</item>
<item>TO</item>
<item>TRAILING</item>
<item>TRANSPORTING</item>
<item>TYPE</item>
<item>TYPE-POOLS</item>
<item>TYPES</item>
<item>ULINE</item>
<item>UP</item>
<item>UPDATE</item>
<item>USING</item>
<item>VALUE</item>
<item>WHEN</item>
<item>WHERE</item>
<item>WHILE</item>
<item>WITH</item>
<item>WORK</item>
<item>WRITE</item>
<item>AFTER</item>
<item>BEFORE</item>
<item>CALL</item>
<item>DURING</item>
<item>ENDFORM</item>
<item>END-OF-SELECTION</item>
<item>FORM</item>
<item>FUNCTION</item>
<item>INCLUDE</item>
<item>LINE-SELECTION</item>
<item>PROCESS</item>
<item>START-OF-SELECTION</item>
<item>TOP-OF-PAGE</item>
<item>TRANSACTION</item>
<item>USER-COMMAND</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<AnyChar attribute="Comment" context="Comment" String="&quot;*"/>
<AnyChar attribute="Symbol" context="#stay" String="!%&amp;()+,-&lt;:=&gt;[]^~"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<AnyChar attribute="Comment" context="#pop" String="&quot;*"/>
<IncludeRules context="##Comments"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="*" />
</comments>
<keywords casesensitive="0" />
</general>
</language>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!-- Andrea Primiani - primiani at dag dot it
version1.10 - 12 december 2005 -->
<language name="ABC" version="8" kateversion="5.0" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">
<highlighting>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<!-- detects tuplet symbols e.g. (3 or (3:2:2-->
<RegExpr attribute="Tuplet" context="#stay" String="\([23456789]:?[23456789]?:?[23456789]?" />
<!-- detects quoted strings -->
<RangeDetect attribute="String" context="#stay" char="&quot;" char1="&quot;"/>
<!-- detects decorations delimited by ! ! symbols -->
<RangeDetect attribute="Decoration" context="#stay" char="!" char1="!" />
<!-- detects single header command delimited by [ and sends to Header context -->
<RegExpr attribute="Header" context="Header" String="\[[ABCGHILMNOQRSTUVZ]:" />
<!-- detects single header line inside a song without [] - ends at EOL-->
<RegExpr attribute="Header" context="Header2" String="[ABCGHILMNOPQRSTUVZ]:" />
<!-- detect beginning of header zone with X: and sends to Header context -->
<Detect2Chars attribute="Header" context="Header" char="X" char1=":" beginRegion="header" column="0"/>
<!-- detects bar beginning (or chord) symbols and sends to Bar context -->
<AnyChar attribute="Bar" context="Bar" String="|:[" />
<!-- detects ] if used to close chords -->
<DetectChar attribute="Bar" context="#stay" char="]" />
<!-- detects () for slurs -->
<!-- detects {} for gracings -->
<AnyChar attribute="Slur" context="#stay" String="(){}" />
<!-- detects W: and w: lyric lines -->
<Detect2Chars attribute="Lyrics" context="Lyrics" char="W" char1=":" />
<Detect2Chars attribute="Lyrics" context="Lyrics" char="w" char1=":" />
<!-- detects %% preprocessor lines and % comment lines-->
<Detect2Chars attribute="Preprocessor" context="Preprocessor" char="%" char1="%"/>
<DetectChar attribute="Comment" context="Comment" char="%" />
<!-- detects ^ _ = symbols before a note -->
<RegExpr attribute="Sharp" context="#stay" String="[_|\^]?[_|=|\^][A-Ga-g]" />
</context>
<!-- returns to Normal context at the end of line -->
<context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop" />
<context name="Lyrics" attribute="Lyrics" lineEndContext="#pop" />
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
<!-- returns to Normal context after the end of bar symbols or at EOL -->
<context name="Bar" attribute="Bar" lineEndContext="#pop" >
<DetectChar attribute="Normal Text" context="#pop" char="&quot;" />
<!-- the bar symbol ends when a note letter follows -->
<RegExpr attribute="Normal Text" context="#pop" String="[A-Ga-gZz]" />
<!-- the bar symbol ends after a white space -->
<DetectChar attribute="Normal Text" context="#pop" char=" " />
<!-- detects decorations delimited by ! ! symbols -->
<RangeDetect attribute="Decoration" context="#stay" char="!" char1="!" />
<!-- detects () for slurs -->
<AnyChar attribute="Slur" context="#stay" String="()" />
<!-- chomps all other bar symbols -->
<RegExpr attribute="Bar" context="#pop" String=":*\|*[1-9]|/*\|" />
</context>
<!-- returns to Normal context at the end of header -->
<context name="Header" attribute="Header" lineEndContext="#stay">
<!-- the header ends after K: line -->
<RegExpr attribute="Header" context="#pop" String="^K:.+" endRegion="header" column="0"/>
<!-- the single header command ends at the ] char -->
<DetectChar attribute="Header" context="#pop" char="]" />
</context>
<!-- the single header line ends at EOL -->
<context name="Header2" attribute="Header" lineEndContext="#pop" />
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Decoration" defStyleNum="dsFloat" color="#00bbaa" />
<itemData name="String" defStyleNum="dsString" bold="true"/>
<itemData name="Preprocessor" defStyleNum="dsString" italic="true"/>
<itemData name="Header" defStyleNum="dsFloat"/>
<itemData name="Slur" defStyleNum="dsDataType" bold="true"/>
<itemData name="Tuplet" defStyleNum="dsDataType" color="#bb00bb"/>
<itemData name="Lyrics" defStyleNum="dsDataType" color="#00bb00"/>
<itemData name="Bar" defStyleNum="dsChar" color="#0000ff"/>
<itemData name="Sharp" defStyleNum="dsNormal" color="#22bb66" bold="true"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="%" position="afterwhitespace" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,326 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="ActionScript 2.0" version="10" kateversion="5.79" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
<highlighting>
<list name="properties">
<item>_accProps</item>
<item>_focusrect</item>
<item>_global</item>
<item>_highquality</item>
<item>_level</item>
<item>_parent</item>
<item>_quality</item>
<item>_root</item>
<item>_soundbuftime</item>
<item>maxscroll</item>
<item>scroll</item>
<item>this</item>
</list>
<list name="global_functions">
<item>asfunction</item>
<item>call</item>
<item>chr</item>
<item>clearInterval</item>
<item>duplicateMovieClip</item>
<item>escape</item>
<item>eval</item>
<item>fscommand</item>
<item>getProperty</item>
<item>getTimer</item>
<item>getURL</item>
<item>getVersion</item>
<item>gotoAndPlay</item>
<item>gotoAndStop</item>
<item>ifFrameLoaded</item>
<item>int</item>
<item>isFinite</item>
<item>isNaN</item>
<item>length</item>
<item>loadMovie</item>
<item>loadMovieNum</item>
<item>loadVariables</item>
<item>loadVariablesNum</item>
<item>mbchr</item>
<item>mblength</item>
<item>mbord</item>
<item>mbsubstring</item>
<item>nextFrame</item>
<item>nextScene</item>
<item>on</item>
<item>onClipEvent</item>
<item>ord</item>
<item>parseFloat</item>
<item>parseInt</item>
<item>play</item>
<item>prevFrame</item>
<item>prevScene</item>
<item>print</item>
<item>printAsBitmap</item>
<item>printAsBitmapNum</item>
<item>printNum</item>
<item>random</item>
<item>removeMovieClip</item>
<item>setInterval</item>
<item>setProperty</item>
<item>showRedrawRegions</item>
<item>startDrag</item>
<item>stop</item>
<item>stopAllSounds</item>
<item>stopDrag</item>
<item>substring</item>
<item>targetPath</item>
<item>tellTarget</item>
<item>toggleHighQuality</item>
<item>trace</item>
<item>typeof</item>
<item>unescape</item>
<item>unloadMovie</item>
<item>unloadMovieNum</item>
<item>updateAfterEvent</item>
</list>
<list name="classes">
<item>Accessibility</item>
<item>Accordion</item>
<item>Alert</item>
<item>Binding</item>
<item>Button</item>
<item>Camera</item>
<item>CellRenderer</item>
<item>CheckBox</item>
<item>Collection</item>
<item>Color</item>
<item>ComboBox</item>
<item>ComponentMixins</item>
<item>ContextMenu</item>
<item>ContextMenuItem</item>
<item>CustomActions</item>
<item>CustomFormatter</item>
<item>CustomValidator</item>
<item>DataGrid</item>
<item>DataHolder</item>
<item>DataProvider</item>
<item>DataSet</item>
<item>DataType</item>
<item>Date</item>
<item>DateChooser</item>
<item>DateField</item>
<item>Delta</item>
<item>DeltaItem</item>
<item>DeltaPacket</item>
<item>DepthManager</item>
<item>EndPoint</item>
<item>Error</item>
<item>FaultEvent</item>
<item>FocusManager</item>
<item>Form</item>
<item>Function</item>
<item>Iterator</item>
<item>Key</item>
<item>Label</item>
<item>List</item>
<item>LoadVars</item>
<item>Loader</item>
<item>LocalConnection</item>
<item>Log</item>
<item>Math</item>
<item>Media</item>
<item>Menu</item>
<item>MenuBar</item>
<item>Microphone</item>
<item>Mouse</item>
<item>MovieClip</item>
<item>MovieClipLoader</item>
<item>NetConnection</item>
<item>NetStream</item>
<item>Number</item>
<item>NumericStepper</item>
<item>PendingCall</item>
<item>PopUpManager</item>
<item>PrintJob</item>
<item>ProgressBar</item>
<item>RDBMSResolver</item>
<item>RadioButton</item>
<item>RelayResponder</item>
<item>SOAPCall</item>
<item>Screen</item>
<item>ScrollPane</item>
<item>Selection</item>
<item>SharedObject</item>
<item>Slide</item>
<item>Sound</item>
<item>Stage</item>
<item>StyleManager</item>
<item>System</item>
<item>TextArea</item>
<item>TextField</item>
<item>TextFormat</item>
<item>TextInput</item>
<item>TextSnapshot</item>
<item>TransferObject</item>
<item>Tree</item>
<item>TreeDataProvider</item>
<item>TypedValue</item>
<item>UIComponent</item>
<item>UIEventDispatcher</item>
<item>UIObject</item>
<item>Video</item>
<item>WebService</item>
<item>WebServiceConnector</item>
<item>Window</item>
<item>XML</item>
<item>XMLConnector</item>
<item>XUpdateResolver</item>
</list>
<list name="keywords">
<item>add</item>
<item>and</item>
<item>break</item>
<item>case</item>
<item>catch</item>
<item>class</item>
<item>continue</item>
<item>default</item>
<item>delete</item>
<item>do</item>
<item>dynamic</item>
<item>else</item>
<item>eq</item>
<item>extends</item>
<item>finally</item>
<item>for</item>
<item>function</item>
<item>ge</item>
<item>get</item>
<item>gt</item>
<item>if</item>
<item>implements</item>
<item>import</item>
<item>in</item>
<item>instanceof</item>
<item>interface</item>
<item>intrinsic</item>
<item>le</item>
<item>lt</item>
<item>ne</item>
<item>new</item>
<item>not</item>
<item>or</item>
<item>private</item>
<item>public</item>
<item>return</item>
<item>set</item>
<item>static</item>
<item>switch</item>
<item>throw</item>
<item>try</item>
<item>var</item>
<item>void</item>
<item>while</item>
<item>with</item>
</list>
<list name="const">
<item>false</item>
<item>Infinity</item>
<item>NaN</item>
<item>newline</item>
<item>null</item>
<item>true</item>
<item>undefined</item>
</list>
<list name="types">
<item>Array</item>
<item>Boolean</item>
<item>Number</item>
<item>Object</item>
<item>String</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"/>
<WordDetect attribute="Keyword" context="Imports" String="package" />
<WordDetect attribute="Keyword" context="ImportsPrefix" String="import" lookAhead="true" />
<keyword attribute="Properties" context="#stay" String="properties"/>
<keyword attribute="Global Functions" context="#stay" String="global_functions"/>
<keyword attribute="Classes" context="#stay" String="classes"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Constants" context="#stay" String="const"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<Float attribute="Float" context="#stay"/>
<HlCOct attribute="Octal" context="#stay"/>
<HlCHex attribute="Hex" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<HlCChar attribute="Char" context="#stay"/>
<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;"/>
<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="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(?:/\*\s*\d+\s*\*/\s*)?[(])" />
<DetectChar attribute="Symbol" context="Member" char="." />
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
</context>
<context name="ImportsPrefix" attribute="Keyword" lineEndContext="#pop">
<RegExpr attribute="Keyword" context="#pop!StaticImports" String="import\s+static\b" />
<WordDetect attribute="Keyword" context="#pop!Imports" String="import" />
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<LineContinue attribute="String" context="#stay"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthroughContext="#pop">
<RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)" />
</context>
<context attribute="StaticImports" lineEndContext="#pop" name="StaticImports"/>
<context attribute="Imports" lineEndContext="#pop" name="Imports"/>
<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
<IncludeRules context="##Comments"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Function" defStyleNum="dsFunction"/>
<itemData name="StaticImports" defStyleNum="dsImport"/>
<itemData name="Imports" defStyleNum="dsImport"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialString"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Properties" defStyleNum="dsAttribute" bold="1"/>
<itemData name="Global Functions" defStyleNum="dsFunction" bold="1"/>
<itemData name="Classes" defStyleNum="dsBuiltIn" bold="1"/>
<itemData name="Constants" defStyleNum="dsConstant" bold="1"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//"/>
<comment name="multiLine" start="/*" end="*/" region="Comment"/>
</comments>
<keywords casesensitive="1"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,346 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY b2 "[0-1]++(_?[0-1])*+">
<!ENTITY b3 "[0-2]++(_?[0-2])*+">
<!ENTITY b4 "[0-3]++(_?[0-3])*+">
<!ENTITY b5 "[0-4]++(_?[0-4])*+">
<!ENTITY b6 "[0-5]++(_?[0-5])*+">
<!ENTITY b7 "[0-6]++(_?[0-6])*+">
<!ENTITY b8 "[0-7]++(_?[0-7])*+">
<!ENTITY b9 "[0-8]++(_?[0-8])*+">
<!ENTITY b10 "[0-9]++(_?[0-9])*+">
<!ENTITY b11 "[0-9a-a]++(_?[0-9]a-a)*+">
<!ENTITY b12 "[0-9a-b]++(_?[0-9]a-b)*+">
<!ENTITY b13 "[0-9a-c]++(_?[0-9]a-c)*+">
<!ENTITY b14 "[0-9a-d]++(_?[0-9]a-d)*+">
<!ENTITY b15 "[0-9a-e]++(_?[0-9]a-e)*+">
<!ENTITY b16 "[0-9a-f]++(_?[0-9]a-f)*+">
]>
<language name="Ada"
version="7"
kateversion="5.79"
section="Sources"
extensions="*.adb;*.ads;*.ada;*.a"
indenter="ada"
mimetype="text/x-adasrc">
<highlighting>
<!-- http://ada-auth.org/standards/rm12_w_tc1/html/RM-P.html -->
<!-- http://ada-auth.org/standards/rm12_w_tc1/html/RM-2-9.html -->
<list name="keywords">
<item>abort</item>
<item>abs</item>
<item>abstract</item>
<item>accept</item>
<item>access</item>
<item>aliased</item>
<item>all</item>
<item>and</item>
<item>array</item>
<item>at</item>
<item>begin</item>
<item>body</item>
<item>case</item>
<item>constant</item>
<item>declare</item>
<item>delay</item>
<item>delta</item>
<item>digits</item>
<item>do</item>
<item>else</item>
<item>elsif</item>
<item>end</item>
<item>entry</item>
<item>exception</item>
<item>exit</item>
<item>for</item>
<item>function</item>
<item>generic</item>
<item>goto</item>
<item>if</item>
<item>in</item>
<item>interface</item>
<item>is</item>
<item>limited</item>
<item>loop</item>
<item>mod</item>
<item>new</item>
<item>not</item>
<item>null</item>
<item>of</item>
<item>or</item>
<item>others</item>
<item>out</item>
<item>overriding</item>
<item>package</item>
<item>pragma</item>
<item>private</item>
<item>procedure</item>
<item>protected</item>
<item>raise</item>
<item>range</item>
<item>record</item>
<item>rem</item>
<item>renames</item>
<item>requeue</item>
<item>return</item>
<item>reverse</item>
<item>select</item>
<item>separate</item>
<item>some</item>
<item>subtype</item>
<item>synchronized</item>
<item>tagged</item>
<item>task</item>
<item>terminate</item>
<item>then</item>
<item>type</item>
<item>until</item>
<item>use</item>
<item>when</item>
<item>while</item>
<item>with</item>
<item>xor</item>
</list>
<list name="pragmas">
<item>all_calls_remote</item>
<item>assert</item>
<item>assertion_policy</item>
<item>asynchronous</item>
<item>atomic</item>
<item>atomic_components</item>
<item>attach_handler</item>
<item>controlled</item>
<item>convention</item>
<item>detect_blocking</item>
<item>discard_names</item>
<item>elaborate</item>
<item>elaborate_all</item>
<item>elaborate_body</item>
<item>export</item>
<item>import</item>
<item>inline</item>
<item>inspection_point</item>
<item>interrupt_handler</item>
<item>interrupt_priority</item>
<item>linker_options</item>
<item>list</item>
<item>locking_policy</item>
<item>no_return</item>
<item>normalize_scalars</item>
<item>optimize</item>
<item>pack</item>
<item>page</item>
<item>partition_elaboration_policy</item>
<item>preelaborable_initialization</item>
<item>preelaborate</item>
<item>priority</item>
<item>priority_specific_dispatching</item>
<item>profile</item>
<item>pure</item>
<item>queuing_policy</item>
<item>relative_deadline</item>
<item>remote_call_interface</item>
<item>remote_types</item>
<item>restrictions</item>
<item>reviewable</item>
<item>shared_passive</item>
<item>storage_size</item>
<item>suppress</item>
<item>task_dispatching_policy</item>
<item>unchecked_union</item>
<item>unsuppress</item>
<item>volatile</item>
<item>volatile_components</item>
</list>
<list name="types">
<item>boolean</item>
<item>character</item>
<item>float</item>
<item>integer</item>
<item>long_float</item>
<item>long_integer</item>
<item>long_long_float</item>
<item>long_long_integer</item>
<item>short_float</item>
<item>short_integer</item>
<item>string</item>
<item>wide_string</item>
<item>wide_character</item>
<item>wide_wide_character</item>
<item>wide_wide_string</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Default">
<DetectSpaces />
<StringDetect attribute="Region Marker" context="Region Marker" String="-- BEGIN" beginRegion="RegionMarker" firstNonSpace="true" />
<StringDetect attribute="Region Marker" context="Region Marker" String="-- END" endRegion="RegionMarker" firstNonSpace="true" />
<Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;|"/>
<AnyChar context="Numeric" String="0123456789" lookAhead="1"/>
<DetectChar context="String" char="&quot;" lookAhead="1"/>
<WordDetect attribute="Keyword" context="#stay" String="record" insensitive="true" beginRegion="RecordRegion"/>
<WordDetect attribute="Keyword" context="#stay" String="case" insensitive="true" beginRegion="CaseRegion"/>
<WordDetect attribute="Keyword" context="#stay" String="if" insensitive="true" beginRegion="IfRegion"/>
<WordDetect attribute="Keyword" context="#stay" String="loop" insensitive="true" beginRegion="LoopRegion"/>
<WordDetect attribute="Keyword" context="#stay" String="select" insensitive="true" beginRegion="SelectRegion"/>
<WordDetect attribute="Keyword" context="#stay" String="begin" insensitive="true" beginRegion="BeginRegion"/>
<WordDetect attribute="Keyword" context="End" String="end" insensitive="true" lookAhead="1"/>
<WordDetect attribute="Keyword" context="Null" String="null" insensitive="true"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Pragmas" context="#stay" String="pragmas" />
<keyword attribute="Data Type" context="#stay" String="types" />
<DetectIdentifier />
<RegExpr attribute="Char" context="#stay" String="'.'"/>
</context>
<context attribute="Keyword" lineEndContext="#pop" name="End">
<RegExpr attribute="Keyword" context="#pop" String="end\s+record\b" insensitive="true" endRegion="RecordRegion"/>
<RegExpr attribute="Keyword" context="#pop" String="end\s+case\b" insensitive="true" endRegion="CaseRegion"/>
<RegExpr attribute="Keyword" context="#pop" String="end\s+if\b" insensitive="true" endRegion="IfRegion"/>
<RegExpr attribute="Keyword" context="#pop" String="end\s+loop\b" insensitive="true" endRegion="LoopRegion"/>
<RegExpr attribute="Keyword" context="#pop" String="end\s+select\b" insensitive="true" endRegion="SelectRegion"/>
<DetectIdentifier attribute="Keyword" context="#pop" endRegion="BeginRegion"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Null" fallthroughContext="#pop">
<DetectSpaces attribute="Normal Text"/>
<WordDetect attribute="Keyword" context="#pop" String="record" insensitive="true"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Numeric">
<RegExpr attribute="Float" context="NumericExp" String="\b&b10;\.&b10;"/>
<RegExpr attribute="Decimal" context="NumericExp" String="\b&b10;(?!#)"/>
<WordDetect attribute="Base" context="Base2" String="2#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base3" String="3#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base4" String="4#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base5" String="5#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base6" String="6#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base7" String="7#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base8" String="8#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base9" String="9#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base10" String="10#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base11" String="11#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base12" String="12#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base13" String="13#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base14" String="14#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base15" String="15#" additionalDeliminator="#"/>
<WordDetect attribute="Base" context="Base16" String="16#" additionalDeliminator="#"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="NumericExp" fallthroughContext="#pop#pop">
<RegExpr attribute="Exponent" context="#pop#pop" String="(?:[eE][-+]?&b10;)"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base2" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b2;\.&b2;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b2;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base3" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b3;\.&b3;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b3;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base4" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b4;\.&b4;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b4;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base5" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b5;\.&b5;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b5;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base6" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b6;\.&b6;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b6;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base7" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b7;\.&b7;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b7;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base8" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b8;\.&b8;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b8;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base9" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b9;\.&b9;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b9;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base10" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b10;\.&b10;"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b10;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base11" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b11;\.&b11;" insensitive="1"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b11;" insensitive="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base12" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b12;\.&b12;" insensitive="1"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b12;" insensitive="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base13" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b13;\.&b13;" insensitive="1"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b13;" insensitive="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base14" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b14;\.&b14;" insensitive="1"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b14;" insensitive="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base15" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b15;\.&b15;" insensitive="1"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b15;" insensitive="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Base16" fallthroughContext="#pop#pop">
<RegExpr attribute="Float" context="BaseExp" String="&b16;\.&b16;" insensitive="1"/>
<RegExpr attribute="Decimal" context="BaseExp" String="&b16;" insensitive="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="BaseExp" fallthroughContext="#pop#pop#pop">
<DetectChar attribute="Base" context="#pop#pop!NumericExp" char="#"/>
</context>
<context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
</context>
<context attribute="String" lineEndContext="#pop" name="String" fallthroughContext="PartialString">
<RangeDetect attribute="String" context="#pop" char="&quot;" char1="&quot;"/>
</context>
<context attribute="String" lineEndContext="#pop#pop" name="PartialString">
</context>
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<DetectSpaces attribute="Comment"/>
<IncludeRules context="##Comments" />
<DetectIdentifier attribute="Comment"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Keyword" defStyleNum="dsKeyword" />
<itemData name="Pragmas" defStyleNum="dsExtension" bold="1" />
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal" />
<itemData name="Float" defStyleNum="dsFloat" />
<itemData name="Base" defStyleNum="dsBaseN" />
<itemData name="Exponent" defStyleNum="dsDecVal" />
<itemData name="Char" defStyleNum="dsChar" />
<itemData name="String" defStyleNum="dsString" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Region Marker" defStyleNum="dsRegionMarker" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="--" position="afterwhitespace" />
</comments>
<keywords casesensitive="0" />
</general>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!-- See https://adblockplus.org/en/filters -->
<language
name="Adblock Plus"
version="2"
kateversion="5.0"
section="Configuration"
author="Volker Krause (vkrause@kde.org)"
extensions=""
license="MIT">
<highlighting>
<list name="special-comment-list">
<item>Homepage</item>
<item>Title</item>
<item>Expires</item>
<item>Checksum</item>
<item>Redirect</item>
<item>Version</item>
</list>
<list name="filter-option-list">
<item>script</item>
<item>image</item>
<item>stylesheet</item>
<item>object</item>
<item>xmlhttprequest</item>
<item>object-subrequest</item>
<item>subdocument</item>
<item>ping</item>
<item>websocket</item>
<item>webrtc</item>
<item>document</item>
<item>elemhide</item>
<item>generichide</item>
<item>genericblock</item>
<item>popup</item>
<item>other</item>
<item>third-party</item>
<item>domain</item>
<item>sitekey</item>
<item>match-case</item>
<item>collapse</item>
<item>donottrack</item>
</list>
<contexts>
<context name="rule-context" attribute="Normal Text" lineEndContext="#stay">
<DetectChar char="!" column="0" context="comment-context" attribute="Comment"/>
<DetectChar char="[" column="0" context="header-context" attribute="Header"/>
<Detect2Chars char="@" char1="@" column="0" context="exception-context" attribute="Exception Rule"/>
<DetectChar char="$" context="option-context" attribute="Filter Option"/>
<Detect2Chars char="#" char1="#" context="element-hiding-context" attribute="Element Hiding Rule"/>
<StringDetect String="#@#" context="element-hiding-context" attribute="Element Hiding Rule"/>
</context>
<context name="comment-context" attribute="Comment" lineEndContext="#pop">
<keyword String="special-comment-list" attribute="Special Comment"/>
</context>
<context name="header-context" attribute="Header" lineEndContext="#pop"/>
<context name="exception-context" attribute="Exception Rule" lineEndContext="#pop">
<DetectChar char="$" context="#pop!option-context" attribute="Filter Option"/>
</context>
<context name="option-context" attribute="Normal Text" lineEndContext="#pop">
<keyword String="filter-option-list" attribute="Filter Option"/>
</context>
<context name="element-hiding-context" attribute="Element Hiding Rule" lineEndContext="#pop"/>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Special Comment" defStyleNum="dsCommentVar" spellChecking="false"/>
<itemData name="Header" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Exception Rule" defStyleNum="dsVariable" spellChecking="false"/>
<itemData name="Filter Option" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Element Hiding Rule" defStyleNum="dsString" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="!"/>
</comments>
<keywords casesensitive="1" weakDeliminator="-" additionalDeliminator="$"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language[
<!ENTITY charsdelim "_;.&#34;(){}@">
<!ENTITY wordsep "(?=[&charsdelim;]|\s|$)">
]>
<language name="Agda" version="9" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
<highlighting>
<list name="reserved keywords">
<item>abstract</item>
<item>codata</item>
<item>coinductive</item>
<item>constructor</item>
<item>data</item>
<item>do</item>
<item>eta-equality</item>
<item>field</item>
<item>forall</item>
<item>hiding</item>
<item>import</item>
<item>in</item>
<item>inductive</item>
<item>infix</item>
<item>infixl</item>
<item>infixr</item>
<item>instance</item>
<item>interleaved</item>
<item>let</item>
<item>macro</item>
<item>module</item>
<item>mutual</item>
<item>no-eta-equality</item>
<item>open</item>
<item>overlap</item>
<item>pattern</item>
<item>postulate</item>
<item>primitive</item>
<item>private</item>
<item>public</item>
<item>quote</item>
<item>quoteTerm</item>
<item>record</item>
<item>renaming</item>
<item>rewrite</item>
<item>syntax</item>
<item>tactic</item>
<item>to</item>
<item>unquote</item>
<item>unquoteDecl</item>
<item>unquoteDef</item>
<item>using</item>
<item>variable</item>
<item>where</item>
<item>with</item>
</list>
<contexts>
<context attribute="Normal" lineEndContext="#stay" name="code">
<RegExpr attribute="Pragma" context="#stay" String="\{-#.*#-\}" />
<keyword attribute="Keyword" context="#stay" String="reserved keywords" />
<RegExpr attribute="Type" context="#stay" String="(?:Prop[₀-₉]+|Prop[0-9]*|Set[₀-₉]+|Set[0-9]*)&wordsep;" />
<RegExpr attribute="Special" context="#stay" String="(?:\-&gt;|→|∀|λ|:|=|\|)&wordsep;" />
<RegExpr attribute="Float" context="#stay" String="\d+(?:(?:\.\d+)?[eE][+-]?\d+|\.\d+)&wordsep;" />
<RegExpr attribute="Decimal" context="#stay" String="[0-9]+&wordsep;" />
<DetectChar attribute="Char" context="char" char="'" />
<DetectChar attribute="String" context="string" char="&quot;" />
<Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
<Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="CommentBlock" />
<Detect2Chars attribute="Hole" context="hole" char="{" char1="!" />
<!-- delimiters which cannot be part of an identifier, or
backslash which starts a lambda expression -->
<AnyChar attribute="Special" context="#stay" String="&charsdelim;\\" />
<!-- any other identifier (can contain backslash and single
quote anywhere except at start, but these two special
cases are already taken care off above) -->
<RegExpr attribute="Normal" context="#stay" String="[^&charsdelim;\s]+" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="comment">
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="comments" noIndentationBasedFolding="1">
<Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="CommentBlock" /> <!-- for nested comments -->
<Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="CommentBlock" />
<IncludeRules context="##Comments" />
</context>
<context attribute="Hole" lineEndContext="#stay" name="hole">
<Detect2Chars attribute="Hole" context="#pop" char="!" char1="}" />
</context>
<context attribute="Char" lineEndContext="#pop" name="char">
<Detect2Chars attribute="Char" context="#stay" char="\" char1="'" />
<DetectChar attribute="Char" context="#pop" char="'" />
</context>
<context attribute="String" lineEndContext="#stay" name="string">
<Detect2Chars attribute="String" context="#stay" char="\" char1="&quot;" />
<DetectChar attribute="String" context="#pop" char="&quot;" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Pragma" defStyleNum="dsPreprocessor" spellChecking="false" />
<itemData name="Hole" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Type" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Special" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Char" defStyleNum="dsChar" spellChecking="false" />
<itemData name="String" defStyleNum="dsString" />
</itemDatas>
</highlighting>
<general>
<folding indentationsensitive="1"/>
<comments>
<comment name="singleLine" start="--" position="afterwhitespace" />
<comment name="multiLine" start="{-" end="-}" region="CommentBlock" />
</comments>
<keywords casesensitive="1"
weakDeliminator=":!+,-&lt;=&gt;%&amp;*/?[]^|~\\"
additionalDeliminator="&charsdelim;" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="AHDL" version="6" kateversion="5.0" section="Hardware" extensions="*.ahdl;*.tdf" mimetype="text/x-ahdl" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
<highlighting>
<list name="keywords">
<item>assert</item>
<item>bidir</item>
<item>bits</item>
<item>buried</item>
<item>case</item>
<item>clique</item>
<item>connected_pins</item>
<item>constant</item>
<item>defaults</item>
<item>define</item>
<item>design</item>
<item>device</item>
<item>else</item>
<item>elsif</item>
<item>for</item>
<item>function</item>
<item>generate</item>
<item>gnd</item>
<item>help_id</item>
<item>in</item>
<item>include</item>
<item>input</item>
<item>is</item>
<item>machine</item>
<item>node</item>
<item>of</item>
<item>options</item>
<item>others</item>
<item>output</item>
<item>parameters</item>
<item>returns</item>
<item>states</item>
<item>subdesign</item>
<item>then</item>
<item>title</item>
<item>to</item>
<item>tri_state_node</item>
<item>variable</item>
<item>vcc</item>
<item>when</item>
<item>with</item>
</list>
<list name="types">
<item>carry</item>
<item>cascade</item>
<item>dffe</item>
<item>dff</item>
<item>exp</item>
<item>global</item>
<item>jkffe</item>
<item>jkff</item>
<item>latch</item>
<item>lcell</item>
<item>mcell</item>
<item>memory</item>
<item>opendrn</item>
<item>soft</item>
<item>srffe</item>
<item>srff</item>
<item>tffe</item>
<item>tff</item>
<item>tri</item>
<item>wire</item>
<item>x</item>
</list>
<list name="operator">
<item>not</item>
<item>and</item>
<item>nand</item>
<item>or</item>
<item>nor</item>
<item>xor</item>
<item>xnor</item>
<item>mod</item>
<item>div</item>
<item>log2</item>
<item>used</item>
<item>ceil</item>
<item>floor</item>
</list>
<contexts>
<context name="normal" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Keyword" context="#stay" String="\bdefaults\b" insensitive="true" beginRegion="def"/>
<RegExpr attribute="Keyword" context="#stay" String="\bend\s+defaults\b" insensitive="true" endRegion="def"/>
<RegExpr attribute="Keyword" context="#stay" String="\bif\b" insensitive="true" beginRegion="if"/>
<RegExpr attribute="Keyword" context="#stay" String="\bend\s+if\b" insensitive="true" endRegion="if"/>
<RegExpr attribute="Keyword" context="#stay" String="\btable\b" insensitive="true" beginRegion="table"/>
<RegExpr attribute="Keyword" context="#stay" String="\bend\s+table\b" insensitive="true" endRegion="table"/>
<RegExpr attribute="Keyword" context="#stay" String="\bcase\b" insensitive="true" beginRegion="case"/>
<RegExpr attribute="Keyword" context="#stay" String="\bend\s+case\b" insensitive="true" endRegion="case"/>
<RegExpr attribute="Keyword" context="#stay" String="\bbegin\b" insensitive="true" beginRegion="block"/>
<RegExpr attribute="Keyword" context="#stay" String="\bend\b" insensitive="true" endRegion="block"/>
<DetectChar attribute="Normal Text" context="#stay" char="(" beginRegion="bracket"/>
<DetectChar attribute="Normal Text" context="#stay" char=")" endRegion="bracket"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<keyword attribute="Operator" context="#stay" String="operator"/>
<RegExpr attribute="Decimal" context="#stay" String="\b(\d+)\b" />
<RegExpr attribute="Bit" context="#stay" String="\bb&quot;(0|1|x)+&quot;" insensitive="true"/>
<RegExpr attribute="Octal" context="#stay" String="\b(o|q)&quot;[0-7*]&quot;" insensitive="true"/>
<RegExpr attribute="Hex" context="#stay" String="\b(h|x)&quot;[0-9a-f]*&quot;" insensitive="true"/>
<DetectChar attribute="String" context="string" char="&quot;" />
<RegExpr attribute="Region Marker" context="#stay" String="--\s*BEGIN.*$" beginRegion="region" firstNonSpace="true"/>
<RegExpr attribute="Region Marker" context="#stay" String="--\s*END.*$" endRegion="region" firstNonSpace="true"/>
<Detect2Chars attribute="Comment" context="LineComment" char="-" char1="-" />
<DetectChar attribute="Comment" context="comment" char="%" />
<HlCChar attribute="Char" context="#stay"/>
</context>
<context name="string" attribute="String" lineEndContext="#stay" >
<Detect2Chars attribute="Char" context="#stay" char="\" char1="&quot;" />
<DetectChar attribute="String" context="#pop" char="&quot;" />
</context>
<context name="comment" attribute="Comment" lineEndContext="#stay" >
<DetectChar attribute="Comment" context="#pop" char="%" />
<IncludeRules context="##Comments" />
</context>
<context name="LineComment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="String" defStyleNum="dsString" />
<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false" />
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="Bit" defStyleNum="dsDecVal" 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="Region Marker" defStyleNum="dsRegionMarker"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="--" />
<comment name="multiLine" start="%" end="%" region="Comment" />
</comments>
<keywords casesensitive="0" />
</general>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language version="8" 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>
<item>NOQA</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" />
<!-- Some (Python?) linters use `noqa:` (small case w/ colon) -->
<WordDetect attribute="Alert Level 2" context="#stay" String="noqa:" />
<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>
<!-- NO-BREAK SPACE (nbsp) as deliminator -->
<keywords casesensitive="1" additionalDeliminator="&#160;"/>
</general>
</language>
<!-- kate: indent-width 2; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,596 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
*************************************************************************
ANS Forth 94 syntax highlighting for Kate.
Copyright (C) 2011, Mark Corbin (mark@dibsco.co.uk)
*************************************************************************
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.1 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
*************************************************************************
Version 1.0 (23-11-11)
- Added additional file extensions.
Version 0.1 (08-11-11)
- Initial release for comment.
*************************************************************************
-->
<language name="ANS-Forth94" version="8" kateversion="5.0" section="Sources" extensions="*.4th;*.4TH;*.f;*.F;*.frt;*.FRT;*.fs;*.FS;*.fth;*.FTH;*.seq;*.SEQ" mimetype="" author="Mark Corbin (mark@dibsco.co.uk)" license="LGPLv2.1+" priority="5">
<highlighting>
<list name="core-keywords">
<item>!</item>
<item>#</item>
<item>#&gt;</item> <!-- #> -->
<item>#S</item>
<item>&apos;</item> <!-- ' -->
<item>(</item>
<item>*</item>
<item>*/</item>
<item>*/MOD</item>
<item>+</item>
<item>+!</item>
<item>+LOOP</item>
<item>,</item>
<item>-</item>
<item>.</item>
<item>.&quot;</item> <!-- ." -->
<item>/</item>
<item>/MOD</item>
<item>0&lt;</item> <!-- 0< -->
<item>0=</item>
<item>1+</item>
<item>1-</item>
<item>2!</item>
<item>2*</item>
<item>2/</item>
<item>2@</item>
<item>2DROP</item>
<item>2DUP</item>
<item>2OVER</item>
<item>2SWAP</item>
<item>:</item>
<item>;</item>
<item>&lt;</item> <!-- < -->
<item>&lt;#</item> <!-- <# -->
<item>=</item>
<item>&gt;</item> <!-- > -->
<item>&gt;BODY</item> <!-- >BODY -->
<item>&gt;IN</item> <!-- >IN -->
<item>&gt;NUMBER</item> <!-- >NUMBER -->
<item>&gt;R</item> <!-- >R -->
<item>?DUP</item>
<item>@</item>
<item>ABORT</item>
<item>ABORT&quot;</item> <!-- ABORT" -->
<item>ABS</item>
<item>ACCEPT</item>
<item>ALIGN</item>
<item>ALIGNED</item>
<item>ALLOT</item>
<item>AND</item>
<item>BASE</item>
<item>BEGIN</item>
<item>BL</item>
<item>C!</item>
<item>C,</item>
<item>C@</item>
<item>CELL+</item>
<item>CELLS</item>
<item>CHAR</item>
<item>CHAR+</item>
<item>CHARS</item>
<item>CONSTANT</item>
<item>COUNT</item>
<item>CR</item>
<item>CREATE</item>
<item>DECIMAL</item>
<item>DEPTH</item>
<item>DO</item>
<item>DOES&gt;</item> <!-- DOES> -->
<item>DROP</item>
<item>DUP</item>
<item>ELSE</item>
<item>EMIT</item>
<item>ENVIRONMENT?</item>
<item>EVALUATE</item>
<item>EXECUTE</item>
<item>EXIT</item>
<item>FILL</item>
<item>FIND</item>
<item>FM/MOD</item>
<item>HERE</item>
<item>HOLD</item>
<item>I</item>
<item>IF</item>
<item>IMMEDIATE</item>
<item>INVERT</item>
<item>J</item>
<item>KEY</item>
<item>LEAVE</item>
<item>LITERAL</item>
<item>LOOP</item>
<item>LSHIFT</item>
<item>M*</item>
<item>MAX</item>
<item>MIN</item>
<item>MOD</item>
<item>MOVE</item>
<item>NEGATE</item>
<item>OR</item>
<item>OVER</item>
<item>POSTPONE</item>
<item>QUIT</item>
<item>R&gt;</item> <!-- R> -->
<item>R@</item>
<item>RECURSE</item>
<item>REPEAT</item>
<item>ROT</item>
<item>RSHIFT</item>
<item>S&quot;</item> <!-- S" -->
<item>S&gt;D</item> <!-- S>D -->
<item>SIGN</item>
<item>SM/REM</item>
<item>SOURCE</item>
<item>SPACE</item>
<item>SPACES</item>
<item>STATE</item>
<item>SWAP</item>
<item>THEN</item>
<item>TYPE</item>
<item>U.</item>
<item>U&lt;</item> <!-- U< -->
<item>UM*</item>
<item>UM/MOD</item>
<item>UNLOOP</item>
<item>UNTIL</item>
<item>VARIABLE</item>
<item>WHILE</item>
<item>WORD</item>
<item>XOR</item>
<item>[</item>
<item>[&apos;]</item> <!-- ['] -->
<item>[CHAR]</item>
<item>]</item>
</list>
<list name="core-ext-keywords">
<item>.(</item>
<item>.R</item>
<item>0&lt;&gt;</item> <!-- 0<> -->
<item>0&gt;</item> <!-- 0> -->
<item>2&gt;R</item> <!-- 2>R -->
<item>2R&gt;</item> <!-- 2R> -->
<item>2R@</item>
<item>:NONAME</item>
<item>&lt;&gt;</item> <!-- <> -->
<item>?DO</item>
<item>AGAIN</item>
<item>C&quot;</item> <!-- C" -->
<item>CASE</item>
<item>COMPILE,</item>
<item>ENDCASE</item>
<item>ENDOF</item>
<item>ERASE</item>
<item>FALSE</item>
<item>HEX</item>
<item>MARKER</item>
<item>NIP</item>
<item>OF</item>
<item>PAD</item>
<item>PARSE</item>
<item>PICK</item>
<item>REFILL</item>
<item>RESTORE-INPUT</item>
<item>ROLL</item>
<item>SAVE-INPUT</item>
<item>SOURCE-ID</item>
<item>TO</item>
<item>TRUE</item>
<item>TUCK</item>
<item>U.R</item>
<item>U&gt;</item> <!-- U> -->
<item>UNUSED</item>
<item>VALUE</item>
<item>WITHIN</item>
<item>[COMPILE]</item>
<item>\</item>
</list>
<list name="obsolete-core-ext-keywords">
<item>#TIB</item>
<item>CONVERT</item>
<item>EXPECT</item>
<item>QUERY</item>
<item>SPAN</item>
<item>TIB</item>
</list>
<list name="block-keywords">
<item>BLK</item>
<item>BLOCK</item>
<item>BUFFER</item>
<item>EVALUATE</item>
<item>FLUSH</item>
<item>LOAD</item>
<item>SAVE-BUFFERS</item>
<item>UPDATE</item>
</list>
<list name="block-ext-keywords">
<item>EMPTY-BUFFERS</item>
<item>LIST</item>
<item>REFILL</item>
<item>SCR</item>
<item>THRU</item>
<item>\</item>
</list>
<list name="double-keywords">
<item>2CONSTANT</item>
<item>2LITERAL</item>
<item>2VARIABLE</item>
<item>D+</item>
<item>D-</item>
<item>D.</item>
<item>D.R</item>
<item>D0&lt;</item> <!-- D0< -->
<item>D0=</item>
<item>D2*</item>
<item>D2/</item>
<item>D&lt;</item> <!-- D< -->
<item>D=</item>
<item>D&gt;S</item> <!-- D>S -->
<item>DABS</item>
<item>DMAX</item>
<item>DMIN</item>
<item>DNEGATE</item>
<item>M*/</item>
<item>M+</item>
</list>
<list name="double-ext-keywords">
<item>2ROT</item>
<item>DU&lt;</item> <!-- DU< -->
</list>
<list name="exception-keywords">
<item>CATCH</item>
<item>THROW</item>
</list>
<list name="exception-ext-keywords">
<item>ABORT</item>
<item>ABORT&quot;</item> <!-- ABORT" -->
</list>
<list name="facility-keywords">
<item>AT-XY</item>
<item>KEY?</item>
<item>PAGE</item>
</list>
<list name="facility-ext-keywords">
<item>EKEY</item>
<item>EKEY&gt;CHAR</item> <!-- EKEY>CHAR -->
<item>EKEY?</item>
<item>EMIT?</item>
<item>MS</item>
<item>TIME&amp;DATE</item> <!-- TIME&DATE -->
</list>
<list name="file-keywords">
<item>(</item>
<item>BIN</item>
<item>CLOSE-FILE</item>
<item>CREATE-FILE</item>
<item>DELETE-FILE</item>
<item>FILE-POSITION</item>
<item>FILE-SIZE</item>
<item>INCLUDE-FILE</item>
<item>INCLUDED</item>
<item>OPEN-FILE</item>
<item>R/O</item>
<item>R/W</item>
<item>READ-FILE</item>
<item>READ-LINE</item>
<item>REPOSITION-FILE</item>
<item>RESIZE-FILE</item>
<item>S&quot;</item> <!-- S" -->
<item>SOURCE-ID</item>
<item>W/O</item>
<item>WRITE-FILE</item>
<item>WRITE-LINE</item>
</list>
<list name="file-ext-keywords">
<item>FILE-STATUS</item>
<item>FLUSH-FILE</item>
<item>REFILL</item>
<item>RENAME-FILE</item>
</list>
<list name="floating-keywords">
<item>&gt;FLOAT</item> <!-- >FLOAT -->
<item>D&gt;F</item> <!-- D>F -->
<item>F!</item>
<item>F*</item>
<item>F+</item>
<item>F-</item>
<item>F/</item>
<item>F0&lt;</item> <!-- F0< -->
<item>F0=</item>
<item>F&lt;</item> <!-- F< -->
<item>F&gt;D</item> <!-- F>D -->
<item>F@</item>
<item>FALIGN</item>
<item>FALIGNED</item>
<item>FCONSTANT</item>
<item>FDEPTH</item>
<item>FDROP</item>
<item>FDUP</item>
<item>FLITERAL</item>
<item>FLOAT+</item>
<item>FLOATS</item>
<item>FLOOR</item>
<item>FMAX</item>
<item>FMIN</item>
<item>FNEGATE</item>
<item>FOVER</item>
<item>FROT</item>
<item>FROUND</item>
<item>FSWAP</item>
<item>FVARIABLE</item>
<item>REPRESENT</item>
</list>
<list name="floating-ext-keywords">
<item>DF!</item>
<item>DF@</item>
<item>DFALIGN</item>
<item>DFALIGNED</item>
<item>DFLOAT+</item>
<item>DFLOATS</item>
<item>F**</item>
<item>F.</item>
<item>FABS</item>
<item>FACOS</item>
<item>FACOSH</item>
<item>FALOG</item>
<item>FASIN</item>
<item>FASINH</item>
<item>FATAN</item>
<item>FATAN2</item>
<item>FATANH</item>
<item>FCOS</item>
<item>FCOSH</item>
<item>FE.</item>
<item>FEXP</item>
<item>FEXPM1</item>
<item>FLN</item>
<item>FLNP1</item>
<item>FLOG</item>
<item>FS.</item>
<item>FSIN</item>
<item>FSINCOS</item>
<item>FSINH</item>
<item>FSQRT</item>
<item>FTAN</item>
<item>FTANH</item>
<item>F~</item>
<item>PRECISION</item>
<item>SET-PRECISION</item>
<item>SF!</item>
<item>SF@</item>
<item>SFALIGN</item>
<item>SFALIGNED</item>
<item>SFLOAT+</item>
<item>SFLOATS</item>
</list>
<list name="local-keywords">
<item>(LOCAL)</item>
<item>TO</item>
</list>
<list name="local-ext-keywords">
<item>LOCALS|</item>
</list>
<list name="memory-keywords">
<item>ALLOCATE</item>
<item>FREE</item>
<item>RESIZE</item>
</list>
<list name="tools-keywords">
<item>.S</item>
<item>?</item>
<item>DUMP</item>
<item>SEE</item>
<item>WORDS</item>
</list>
<list name="tools-ext-keywords">
<item>;CODE</item>
<item>AHEAD</item>
<item>ASSEMBLER</item>
<item>BYE</item>
<item>CODE</item>
<item>CS-PICK</item>
<item>CS-ROLL</item>
<item>EDITOR</item>
<item>STATE</item>
<item>[ELSE]</item>
<item>[IF]</item>
<item>[THEN]</item>
</list>
<list name="obsolete-tools-ext-keywords">
<item>FORGET</item>
</list>
<list name="search-keywords">
<item>DEFINITIONS</item>
<item>FIND</item>
<item>FORTH-WORDLIST</item>
<item>GET-CURRENT</item>
<item>GET-ORDER</item>
<item>SEARCH-WORDLIST</item>
<item>SET-CURRENT</item>
<item>SET-ORDER</item>
<item>WORDLIST</item>
</list>
<list name="search-ext-keywords">
<item>ALSO</item>
<item>FORTH</item>
<item>ONLY</item>
<item>ORDER</item>
<item>PREVIOUS</item>
</list>
<list name="string-keywords">
<item>-TRAILING</item>
<item>/STRING</item>
<item>BLANK</item>
<item>CMOVE</item>
<item>CMOVE&gt;</item> <!-- CMOVE> -->
<item>COMPARE</item>
<item>SEARCH</item>
<item>SLITERAL</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<DetectSpaces/>
<RegExpr attribute="Core Keyword" context="Comment" String="(^|\s+)[\(]($|\s+)" beginRegion="comment"/>
<RegExpr attribute="Core Keyword" context="Char" insensitive="true" String="(^|\s+)(CHAR|[[]CHAR[]])($|\s+)"/>
<RegExpr attribute="Core Keyword" context="#stay" insensitive="true" String="(^|\s+)(BEGIN|DO|IF)($|\s+)" beginRegion="block"/>
<RegExpr attribute="Core Keyword" context="#stay" insensitive="true" String="(^|\s+)([;]|LOOP|[+]LOOP|THEN|REPEAT|UNTIL)($|\s+)" endRegion="block"/>
<RegExpr attribute="Core Keyword" context="Word" insensitive="true" String="(^|\s+)([:])($|\s+)" beginRegion="block"/>
<RegExpr attribute="Core Keyword" context="Word" insensitive="true" String="(^|\s+)([']|CREATE|POSTPONE)($|\s+)"/>
<RegExpr attribute="Core Keyword" context="#stay" insensitive="true" String="(^|\s+)ELSE($|\s+)" endRegion="block" beginRegion="block"/>
<RegExpr attribute="Core Keyword" context="String" insensitive="true" String="(^|\s+)([.]&quot;|ABORT&quot;|S&quot;)($|\s+)"/>
<RegExpr attribute="Core Keyword" context="Parse String" insensitive="true" String="(^|\s+)(WORD)($|\s+)"/>
<RegExpr attribute="Core Keyword" context="Constant" insensitive="true" String="(^|\s+)(CONSTANT)($|\s+)"/>
<RegExpr attribute="Core Keyword" context="Variable" insensitive="true" String="(^|\s+)(VARIABLE)($|\s+)"/>
<RegExpr attribute="Core Ext Keyword" context="Single Comment" String="(^|\s+)[\\]($|\s+)"/>
<RegExpr attribute="Core Ext Keyword" context="#stay" insensitive="true" String="(^|\s+)([?]DO|CASE|OF)($|\s+)" beginRegion="block"/>
<RegExpr attribute="Core Ext Keyword" context="#stay" insensitive="true" String="(^|\s+)(AGAIN|ENDCASE|ENDOF)($|\s+)" endRegion="block"/>
<RegExpr attribute="Core Ext Keyword" context="Word" insensitive="true" String="(^|\s+)(MARKER|[[]COMPILE[]])($|\s+)"/>
<RegExpr attribute="Core Ext Keyword" context="String" insensitive="true" String="(^|\s+)(C&quot;)($|\s+)"/>
<RegExpr attribute="Core Ext Keyword" context="Parse String" insensitive="true" String="(^|\s+)(PARSE)($|\s+)"/>
<RegExpr attribute="Core Ext Keyword" context="Display String" String="(^|\s+)([\.][\(])($|\s+)"/>
<RegExpr attribute="Core Ext Keyword" context="Variable" insensitive="true" String="(^|\s+)(TO|VALUE)($|\s+)"/>
<RegExpr attribute="Double Keyword" context="Constant" insensitive="true" String="(^|\s+)(2CONSTANT)($|\s+)"/>
<RegExpr attribute="Double Keyword" context="Variable" insensitive="true" String="(^|\s+)(2VARIABLE)($|\s+)"/>
<RegExpr attribute="Floating Keyword" context="Constant" insensitive="true" String="(^|\s+)(FCONSTANT)($|\s+)"/>
<RegExpr attribute="Floating Keyword" context="Variable" insensitive="true" String="(^|\s+)(FVARIABLE)($|\s+)"/>
<RegExpr attribute="Local Ext Keyword" context="Local" insensitive="true" String="(^|\s+)(LOCALS\|)($|\s+)"/>
<RegExpr attribute="Tools Keyword" context="Word" insensitive="true" String="(^|\s+)(SEE)($|\s+)"/>
<RegExpr attribute="Tools Ext Keyword" context="Word" insensitive="true" String="(^|\s+)(CODE)($|\s+)"/>
<RegExpr attribute="Obs Tools Ext Keyword" context="Word" insensitive="true" String="(^|\s+)(FORGET)($|\s+)"/>
<keyword attribute="Core Keyword" context="#stay" String="core-keywords"/>
<keyword attribute="Core Ext Keyword" context="#stay" String="core-ext-keywords"/>
<keyword attribute="Obs Core Ext Keyword" context="#stay" String="obsolete-core-ext-keywords"/>
<keyword attribute="Block Keyword" context="#stay" String="block-keywords"/>
<keyword attribute="Block Ext Keyword" context="#stay" String="block-ext-keywords"/>
<keyword attribute="Double Keyword" context="#stay" String="double-keywords"/>
<keyword attribute="Double Ext Keyword" context="#stay" String="double-ext-keywords"/>
<keyword attribute="Exception Keyword" context="#stay" String="exception-keywords"/>
<keyword attribute="Exception Ext Keyword" context="#stay" String="exception-ext-keywords"/>
<keyword attribute="Facility Keyword" context="#stay" String="facility-keywords"/>
<keyword attribute="Facility Ext Keyword" context="#stay" String="facility-ext-keywords"/>
<keyword attribute="File Keyword" context="#stay" String="file-keywords"/>
<keyword attribute="File Ext Keyword" context="#stay" String="file-ext-keywords"/>
<keyword attribute="Floating Keyword" context="#stay" String="floating-keywords"/>
<keyword attribute="Floating Ext Keyword" context="#stay" String="floating-ext-keywords"/>
<keyword attribute="Local Keyword" context="#stay" String="local-keywords"/>
<keyword attribute="Local Ext Keyword" context="#stay" String="local-ext-keywords"/>
<keyword attribute="Memory Keyword" context="#stay" String="memory-keywords"/>
<keyword attribute="Tools Keyword" context="#stay" String="tools-keywords"/>
<keyword attribute="Tools Ext Keyword" context="#stay" String="tools-ext-keywords"/>
<keyword attribute="Obs Tools Ext Keyword" context="#stay" String="obsolete-tools-ext-keywords"/>
<keyword attribute="Search Keyword" context="#stay" String="search-keywords"/>
<keyword attribute="Search Ext Keyword" context="#stay" String="search-ext-keywords"/>
<keyword attribute="String Keyword" context="#stay" String="string-keywords"/>
<RegExpr attribute="Single Number" context="#stay" String="(^|\s+)([-]?[0-9]+)($|\s+)"/>
<RegExpr attribute="Double Number" context="#stay" String="(^|\s+)([-]?[0-9]+[.][0-9]*)($|\s+)"/>
<RegExpr attribute="Float" context="#stay" String="(^|\s+)([+]|[-])?([0-9]+[.]?[0-9]*)(E|e)([+]|[-])?([0-9]*)($|\s+)"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Comment">
<DetectChar attribute="Core Keyword" context="#pop" char=")" endRegion="comment"/>
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="Single Comment">
<IncludeRules context="##Comments" />
</context>
<context attribute="String" lineEndContext="#stay" name="Display String">
<DetectChar attribute="Core Keyword" context="#pop" char=")"/>
</context>
<context attribute="String" lineEndContext="#stay" name="String">
<DetectChar attribute="Core Keyword" context="#pop" char="&quot;"/>
</context>
<context attribute="String" lineEndContext="#pop" name="Parse String">
<DetectChar attribute="Core Keyword" context="#pop" char=" "/>
</context>
<context attribute="Word" lineEndContext="#pop" name="Word">
<DetectChar attribute="Word" context="#pop" char=" "/>
</context>
<context attribute="Char" lineEndContext="#pop" name="Char">
<DetectChar attribute="Char" context="#pop" char=" "/>
</context>
<context attribute="Constant" lineEndContext="#pop" name="Constant">
<DetectChar attribute="Constant" context="#pop" char=" "/>
</context>
<context attribute="Variable" lineEndContext="#pop" name="Variable">
<DetectChar attribute="Variable" context="#pop" char=" "/>
</context>
<context attribute="Local Variable" lineEndContext="#pop" name="Local">
<DetectChar attribute="Local Ext Keyword" context="#pop" char="|"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Core Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Core Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Obs Core Ext Keyword" defStyleNum="dsWarning" bold="1" spellChecking="false"/> <!-- #ff0000 -->
<itemData name="Block Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Block Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Double Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Double Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Exception Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Exception Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Facility Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Facility Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="File Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="File Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Floating Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Floating Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Local Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Local Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Memory Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Tools Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Tools Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Obs Tools Ext Keyword" defStyleNum="dsWarning" bold="1" spellChecking="false"/> <!-- #ff0000 -->
<itemData name="Search Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Search Ext Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="String Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Single Number" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Double Number" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Word" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Char" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Constant" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Variable" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Local Variable" defStyleNum="dsDataType" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="0" weakDeliminator="!£$%^&amp;#&apos;~|\(){}*+,-./=@:;&lt;&gt;&quot;?[]"/>
<comments>
<comment name="multiLine" start="( " end=")" region="comment"/>
<comment name="singleLine" start="\ "/>
</comments>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="ANSI C89" section="Sources"
version="8" kateversion="5.0"
indenter="cstyle"
extensions="*.c;*.C;*.h"
mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
priority="2"
author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
<highlighting>
<list name="keywords">
<item>break</item>
<item>case</item>
<item>continue</item>
<item>default</item>
<item>do</item>
<item>else</item>
<item>enum</item>
<item>extern</item>
<item>for</item>
<item>goto</item>
<item>if</item>
<item>return</item>
<item>sizeof</item>
<item>struct</item>
<item>switch</item>
<item>typedef</item>
<item>union</item>
<item>while</item>
</list>
<list name="types">
<item>auto</item>
<item>char</item>
<item>const</item>
<item>double</item>
<item>float</item>
<item>int</item>
<item>long</item>
<item>register</item>
<item>short</item>
<item>signed</item>
<item>static</item>
<item>unsigned</item>
<item>void</item>
<item>volatile</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<DetectSpaces />
<RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0" beginRegion="Outscoped" firstNonSpace="true" />
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true" />
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<DetectIdentifier />
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
<Float attribute="Float" context="Float Suffixes"/>
<HlCOct attribute="Octal" context="#stay"/>
<HlCHex attribute="Hex" context="#stay"/>
<Int attribute="Decimal" context="Int Suffixes"/>
<HlCChar attribute="Char" context="#stay"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<Detect2Chars attribute="Comment" context="comment" char="/" char1="*" beginRegion="blockcomment"/>
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
</context>
<context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<AnyChar String="fF" attribute="Float" context="#pop"/>
</context>
<context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<StringDetect attribute="Decimal" context="#pop" String="ULL" insensitive="true"/>
<StringDetect attribute="Decimal" context="#pop" String="LLU" insensitive="true"/>
<StringDetect attribute="Decimal" context="#pop" String="UL" insensitive="true"/>
<StringDetect attribute="Decimal" context="#pop" String="LU" insensitive="true"/>
<StringDetect attribute="Decimal" context="#pop" String="LL" insensitive="true"/>
<AnyChar attribute="Decimal" context="#pop" String="ULul"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<LineContinue attribute="String" context="#stay"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="comment">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="blockcomment"/>
<IncludeRules context="##Comments" />
</context>
<context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
<LineContinue attribute="Preprocessor" context="#stay"/>
<RegExpr attribute="Preprocessor" context="#stay" String="define(?:[^\\]++|\\.)++"/>
<RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
<RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
<Detect2Chars attribute="Comment" context="comment" char="/" char1="*" beginRegion="blockcomment"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
<Detect2Chars attribute="Comment" context="comment" char="/" char1="*" beginRegion="Comment"/>
<IncludeRules context="##Comments" />
<RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true" />
<RegExpr attribute="Preprocessor" context="#pop" String="#\s*(?:endif|else|elif)" endRegion="Outscoped" firstNonSpace="true" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
<Detect2Chars attribute="Comment" context="comment" char="/" char1="*" beginRegion="Comment"/>
<RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true" />
<RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="Outscoped" firstNonSpace="true" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>
<itemData name="Prep. Lib" defStyleNum="dsImport"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="multiLine" start="/*" end="*/" region="blockcomment" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
SPDX-FileCopyrightText: 2023 Andrzej Borucki <borucki.andrzej@gmail.com>
SPDX-License-Identifier: MIT
-->
<language name="ANTLR"
section="Sources"
version="2"
kateversion="5.62"
extensions="*.g4"
mimetype=""
priority="1"
author="Andrzej Borucki (borucki.andrzej@gmail.com)"
license="MIT"
>
<highlighting>
<list name="keywords">
<item>import</item>
<item>fragment</item>
<item>lexer</item>
<item>parser</item>
<item>grammar</item>
<item>protected</item>
<item>public</item>
<item>private</item>
<item>returns</item>
<item>locals</item>
<item>throws</item>
<item>catch</item>
<item>finally</item>
<item>mode</item>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<IncludeRules context="match keywords" />
<IncludeRules context="match attributes" />
<IncludeRules context="match symbol" />
<IncludeRules context="find literal" />
<IncludeRules context="find charset" />
<IncludeRules context="MatchComment" />
<DetectIdentifier/>
</context>
<context name="match keywords" attribute="Normal Text" lineEndContext="#pop">
<keyword attribute="Keyword" context="#stay" String="keywords"/>
</context>
<context name="find literal" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="String" context="match literal" char="&apos;" />
</context>
<context name="match literal" attribute="String" lineEndContext="#pop">
<Detect2Chars attribute="String" char="\" char1="\" />
<Detect2Chars attribute="String" char="\" char1="&apos;" />
<DetectChar attribute="String" context="#pop" char="&apos;" />
</context>
<context name="find charset" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Charset" context="match charset" char="[" />
</context>
<context name="match charset" attribute="Charset" lineEndContext="#pop">
<Detect2Chars attribute="Charset" char="\" char1="\" />
<Detect2Chars attribute="Charset" char="\" char1="]" />
<DetectChar attribute="Charset" context="#pop" char="]" />
</context>
<context name="match attributes" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Attribute" context="#stay" String="(options|tokens|channels)(?=([\s]*{))" />
</context>
<context name="match symbol" attribute="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Symbol" context="#stay" char="-" char1="&gt;"/>
<AnyChar attribute="Symbol" context="#stay" String="{};=,:|*?()+~"/>
</context>
<context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
<Detect2Chars attribute="Comment" context="#pop!Comment 1" char="/" char1="/" />
<Detect2Chars attribute="Comment" context="#pop!Comment 2" char="/" char1="*" beginRegion="Comment" />
</context>
<context name="Comment 1" attribute="Comment" lineEndContext="#pop">
<LineContinue attribute="Comment" context="#stay"/>
<IncludeRules context="##Comments" />
</context>
<context name="Comment 2" attribute="Comment" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString" spellChecking="false"/>
<itemData name="Charset" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Attribute" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace" />
<comment name="multiLine" start="/*" end="*/" region="Comment" />
</comments>
</general>
</language>
@@ -0,0 +1,633 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!-- Changelog:
v1.1:
- improved Syntax
- added support for Apache 2.2 Directives
- .ht* files may now automaticaly be highlighted
v1.0:
- first Release
-->
<language name="Apache Configuration" section="Configuration"
version="6" kateversion="5.0"
extensions="httpd.conf;httpd2.conf;apache.conf;apache2.conf;.htaccess*;.htpasswd*"
mimetype=""
author="Jan Janssen (medhefgo@googlemail.com)" license="LGPL">
<highlighting>
<list name="String Directives">
<item>AcceptFilter</item>
<item>AccessFileName</item>
<item>Action</item>
<item>AddAlt</item>
<item>AddAltByEncoding</item>
<item>AddAltByType</item>
<item>AddCharset</item>
<item>AddDefaultCharset</item>
<item>AddDescription</item>
<item>AddEncoding</item>
<item>AddHandler</item>
<item>AddIcon</item>
<item>AddIconByEncoding</item>
<item>AddIconByType</item>
<item>AddInputFilter</item>
<item>AddLanguage</item>
<item>AddModuleInfo</item>
<item>AddOutputFilter</item>
<item>AddOutputFilterByType</item>
<item>AddType</item>
<item>Alias</item>
<item>AliasMatch</item>
<item>Allow</item>
<item>Anonymous</item>
<item>AuthBasicProvider</item>
<item>AuthDBMGroupFile</item>
<item>AuthDBMUserFile</item>
<item>AuthDigestDomain</item>
<item>AuthDigestFile</item>
<item>AuthDigestGroupFile</item>
<item>AuthDigestNonceFormat</item>
<item>AuthDigestProvider</item>
<item>AuthGroupFile</item>
<item>AuthLDAPBindDN</item>
<item>AuthLDAPBindPassword</item>
<item>AuthLDAPCharsetConfig</item>
<item>AuthLDAPGroupAttribute</item>
<item>AuthLDAPUrl</item>
<item>AuthName</item>
<item>AuthUserFile</item>
<item>BrowserMatch</item>
<item>BrowserMatchNoCase</item>
<item>BS2000Account</item>
<item>CacheDisable</item>
<item>CacheEnable</item>
<item>CacheFile</item>
<item>CacheGcClean</item>
<item>CacheGcUnused</item>
<item>CacheRoot</item>
<item>CGIMapExtension</item>
<item>CharsetDefault</item>
<item>CharsetOptions</item>
<item>CharsetSourceEnc</item>
<item>CookieDomain</item>
<item>CookieLog</item>
<item>CookieName</item>
<item>CoreDumpDirectory</item>
<item>CustomLog</item>
<item>Dav</item>
<item>DavGenericLockDB</item>
<item>DavLockDB</item>
<item>DBDParams</item>
<item>DBDPrepareSQL</item>
<item>DBDriver</item>
<item>DefaultIcon</item>
<item>DefaultLanguage</item>
<item>DefaultType</item>
<item>DeflateFilterNote</item>
<item>Deny</item>
<item>DirectoryIndex</item>
<item>DocumentRoot</item>
<item>ErrorDocument</item>
<item>ErrorLog</item>
<item>Example</item>
<item>ExpiresByType</item>
<item>ExpiresDefault</item>
<item>ExtFilterDefine</item>
<item>ExtFilterOptions</item>
<item>FilterChain</item>
<item>FilterDeclare</item>
<item>FilterProtocol</item>
<item>FilterProvider</item>
<item>FilterTrace</item>
<item>ForceType</item>
<item>ForensicLog</item>
<item>Group</item>
<item>Header</item>
<item>HeaderName</item>
<item>ImapBase</item>
<item>Include</item>
<item>IndexIgnore</item>
<item>IndexOptions</item>
<item>IndexStyleSheet</item>
<item>ISAPICacheFile</item>
<item>LanguagePriority</item>
<item>LDAPSharedCacheFile</item>
<item>LDAPTrustedCA</item>
<item>LDAPTrustedCAType</item>
<item>LDAPTrustedClientCert</item>
<item>LDAPTrustedGlobalCert</item>
<item>Listen</item>
<item>LoadFile</item>
<item>LoadModule</item>
<item>LockFile</item>
<item>LogFormat</item>
<item>MetaDir</item>
<item>MetaSuffix</item>
<item>MimeMagicFile</item>
<item>MMapFile</item>
<item>NameVirtualHost</item>
<item>NoProxy</item>
<item>NWSSLTrustedCerts</item>
<item>NWSSLUpgradeable</item>
<item>PassEnv</item>
<item>PidFile</item>
<item>ProxyBlock</item>
<item>ProxyDomain</item>
<item>ProxyPass</item>
<item>ProxyPassReverse</item>
<item>ProxyPassReverseCookieDomain</item>
<item>ProxyPassReverseCookiePath</item>
<item>ProxyRemote</item>
<item>ProxyRemoteMatch</item>
<item>ReadmeName</item>
<item>Redirect</item>
<item>RedirectMatch</item>
<item>RedirectPermanent</item>
<item>RedirectTemp</item>
<item>RemoveCharset</item>
<item>RemoveEncoding</item>
<item>RemoveHandler</item>
<item>RemoveInputFilter</item>
<item>RemoveLanguage</item>
<item>RemoveOutputFilter</item>
<item>RemoveType</item>
<item>RequestHeader</item>
<item>Require</item>
<item>RewriteBase</item>
<item>RewriteCond</item>
<item>RewriteLock</item>
<item>RewriteLog</item>
<item>RewriteMap</item>
<item>RewriteRule</item>
<item>ScoreBoardFile</item>
<item>Script</item>
<item>ScriptAlias</item>
<item>ScriptAliasMatch</item>
<item>ScriptLog</item>
<item>ScriptSock</item>
<item>SecureListen</item>
<item>ServerAdmin</item>
<item>ServerAlias</item>
<item>ServerName</item>
<item>ServerPath</item>
<item>ServerRoot</item>
<item>SetEnv</item>
<item>SetEnvIf</item>
<item>SetEnvIfNoCase</item>
<item>SetHandler</item>
<item>SetInputFilter</item>
<item>SetOutputFilter</item>
<item>SSIEndTag</item>
<item>SSIErrorMsg</item>
<item>SSIStartTag</item>
<item>SSITimeFormat</item>
<item>SSIUndefinedEcho</item>
<item>SSLCACertificateFile</item>
<item>SSLCACertificatePath</item>
<item>SSLCADNRequestFile</item>
<item>SSLCADNRequestPath</item>
<item>SSLCARevocationFile</item>
<item>SSLCARevocationPath</item>
<item>SSLCertificateChainFile</item>
<item>SSLCertificateFile</item>
<item>SSLCertificateKeyFile</item>
<item>SSLCipherSuite</item>
<item>SSLCryptoDevice</item>
<item>SSLHonorCiperOrder</item>
<item>SSLPassPhraseDialog</item>
<item>SSLProxyCACertificateFile</item>
<item>SSLProxyCACertificatePath</item>
<item>SSLProxyCARevocationFile</item>
<item>SSLProxyCARevocationPath</item>
<item>SSLProxyCipherSuite</item>
<item>SSLProxyMachineCertificateFile</item>
<item>SSLProxyMachineCertificatePath</item>
<item>SSLProxyProtocol</item>
<item>SSLRandomSeed</item>
<item>SSLRequire</item>
<item>SSLRequireSSL</item>
<item>SSLUserName</item>
<item>SuexecUserGroup</item>
<item>TransferLog</item>
<item>TypesConfig</item>
<item>UnsetEnv</item>
<item>User</item>
<item>UserDir</item>
<item>VirtualDocumentRoot</item>
<item>VirtualDocumentRootIP</item>
<item>VirtualScriptAlias</item>
<item>VirtualScriptAliasIP</item>
<item>Win32DisableAcceptEx</item>
</list>
<list name="Integer Directives">
<item>AllowCONNECT</item>
<item>AssignUserID</item>
<item>AuthDigestNonceLifetime</item>
<item>AuthDigestShmemSize</item>
<item>CacheDefaultExpire</item>
<item>CacheDirLength</item>
<item>CacheDirLevels</item>
<item>CacheForceCompletion</item>
<item>CacheGcDaily</item>
<item>CacheGcInterval</item>
<item>CacheGcMemUsage</item>
<item>CacheLastModifiedFactor</item>
<item>CacheMaxExpire</item>
<item>CacheMaxFileSize</item>
<item>CacheMinFileSize</item>
<item>CacheSize</item>
<item>CacheTimeMargin</item>
<item>ChildPerUserID</item>
<item>CookieExpires</item>
<item>DavMinTimeout</item>
<item>DBDExptime</item>
<item>DBDKeep</item>
<item>DBDMax</item>
<item>DBDMin</item>
<item>DBDPersist</item>
<item>DeflateBufferSize</item>
<item>DeflateCompressionLevel</item>
<item>DeflateMemLevel</item>
<item>DeflateWindowSize</item>
<item>IdentityCheckTimeout</item>
<item>ISAPIReadAheadBuffer</item>
<item>KeepAliveTimeout</item>
<item>LDAPCacheEntries</item>
<item>LDAPCacheTTL</item>
<item>LDAPConnectionTimeout</item>
<item>LDAPOpCacheEntries</item>
<item>LDAPOpCacheTTL</item>
<item>LDAPSharedCacheSize</item>
<item>LimitInternalRecursion</item>
<item>LimitRequestBody</item>
<item>LimitRequestFields</item>
<item>LimitRequestFieldsize</item>
<item>LimitRequestLine</item>
<item>LimitXMLRequestBody</item>
<item>ListenBacklog</item>
<item>MaxClients</item>
<item>MaxKeepAliveRequests</item>
<item>MaxMemFree</item>
<item>MaxRequestsPerChild</item>
<item>MaxRequestsPerThread</item>
<item>MaxSpareServers</item>
<item>MaxSpareThreads</item>
<item>MaxThreads</item>
<item>MaxThreadsPerChild</item>
<item>MCacheMaxObjectCount</item>
<item>MCacheMaxObjectSize</item>
<item>MCacheMaxStreamingBuffer</item>
<item>MCacheMinObjectSize</item>
<item>MCacheSize</item>
<item>MinSpareServers</item>
<item>MinSpareThreads</item>
<item>NumServers</item>
<item>ProxyIOBufferSize</item>
<item>ProxyMaxForwards</item>
<item>ProxyReceiveBufferSize</item>
<item>ProxyTimeout</item>
<item>RewriteLogLevel</item>
<item>RLimitCPU</item>
<item>RLimitMEM</item>
<item>RLimitNPROC</item>
<item>ScriptLogBuffer</item>
<item>ScriptLogLength</item>
<item>SendBufferSize</item>
<item>ServerLimit</item>
<item>SSLProxyVerifyDepth</item>
<item>SSLSessionCacheTimeout</item>
<item>SSLVerifyDepth</item>
<item>StartServers</item>
<item>StartThreads</item>
<item>ThreadLimit</item>
<item>ThreadsPerChild</item>
<item>ThreadStackSize</item>
<item>TimeOut</item>
</list>
<list name="Alternative Directives">
<item>AcceptMutex</item>
<item>AcceptPathInfo</item>
<item>AllowEncodedSlashes</item>
<item>AllowOverride</item>
<item>Anonymous_Authoritative</item>
<item>Anonymous_LogEmail</item>
<item>Anonymous_MustGiveEmail</item>
<item>Anonymous_NoUserID</item>
<item>Anonymous_VerifyEmail</item>
<item>AuthAuthoritative</item>
<item>AuthBasicAuthoritative</item>
<item>AuthBasicProvider</item>
<item>AuthDBMAuthoritative</item>
<item>AuthDBMType</item>
<item>AuthDefaultAuthoritative</item>
<item>AuthDigestAlgorithm</item>
<item>AuthDigestNcCheck</item>
<item>AuthDigestQop</item>
<item>AuthLDAPAuthoritative</item>
<item>AuthLDAPCompareDNOnServer</item>
<item>AuthLDAPDereferenceAliases</item>
<item>AuthLDAPEnabled</item>
<item>AuthLDAPFrontPageHack</item>
<item>AuthLDAPGroupAttributeIsDN</item>
<item>AuthLDAPRemoteUserIsDN</item>
<item>AuthType</item>
<item>AuthzDBMAuthoritative</item>
<item>AuthzDBMType</item>
<item>AuthzDefaultAuthoritative</item>
<item>AuthzGroupFileAuthoritative</item>
<item>AuthzLDAPAuthoritative</item>
<item>AuthzOwnerAuthoritative</item>
<item>AuthzUserAuthoritative</item>
<item>BufferedLogs</item>
<item>CacheExpiryCheck</item>
<item>CacheIgnoreCacheControl</item>
<item>CacheIgnoreHeaders</item>
<item>CacheIgnoreNoLastMod</item>
<item>CacheNegotiatedDocs</item>
<item>CacheStoreNoStore</item>
<item>CacheStorePrivate</item>
<item>CheckSpelling</item>
<item>ContentDigest</item>
<item>CookieStyle</item>
<item>CookieTracking</item>
<item>CoreDumpDirectory</item>
<item>CustomLog</item>
<item>DavDepthInfinity</item>
<item>DirectorySlash</item>
<item>DumpIOInput</item>
<item>DumpIOOutput</item>
<item>EnableExceptionHook</item>
<item>EnableMMAP</item>
<item>EnableSendfile</item>
<item>ExpiresActive</item>
<item>ExtendedStatus</item>
<item>FileETag</item>
<item>ForceLanguagePriority</item>
<item>HostnameLookups</item>
<item>IdentityCheck</item>
<item>ImapDefault</item>
<item>ImapMenu</item>
<item>IndexOrderDefault</item>
<item>ISAPIAppendLogToErrors</item>
<item>ISAPIAppendLogToQuery</item>
<item>ISAPIFakeAsync</item>
<item>ISAPILogNotSupported</item>
<item>KeepAlive</item>
<item>LDAPTrustedMode</item>
<item>LDAPVerifyServerCert</item>
<item>LogLevel</item>
<item>MCacheRemovalAlgorithm</item>
<item>MetaFiles</item>
<item>ModMimeUsePathInfo</item>
<item>MultiviewsMatch</item>
<item>Options</item>
<item>Order</item>
<item>ProtocolEcho</item>
<item>ProxyBadHeader</item>
<item>ProxyErrorOverride</item>
<item>ProxyPreserveHost</item>
<item>ProxyRequests</item>
<item>ProxyVia</item>
<item>RewriteEngine</item>
<item>RewriteOptions</item>
<item>Satisfy</item>
<item>ScriptInterpreterSource</item>
<item>ServerSignature</item>
<item>ServerTokens</item>
<item>SSLEngine</item>
<item>SSLHonorCipherOrder</item>
<item>SSLMutex</item>
<item>SSLOptions</item>
<item>SSLProtocol</item>
<item>SSLProxyEngine</item>
<item>SSLProxyVerify</item>
<item>SSLSessionCache</item>
<item>SSLVerifyClient</item>
<item>UseCanonicalName</item>
<item>XBitHack</item>
</list>
<list name="Alternates">
<item>On</item>
<item>Off</item>
<item>Default</item>
<item>flock</item>
<item>fcntl</item>
<item>posixsem</item>
<item>pthread</item>
<item>sysvsem</item>
<item>All</item>
<item>None</item>
<item>AuthConfig</item>
<item>FileInfo</item>
<item>Indexes</item>
<item>Limit</item>
<item>Options</item>
<item>ExecCGI</item>
<item>FollowSymLinks</item>
<item>Includes</item>
<item>IncludesNOEXEC</item>
<item>Indexes</item>
<item>MultiViews</item>
<item>SymLinksIfOwnerMatch</item>
<item>StdEnvVars</item>
<item>CompatEnvVars</item>
<item>ExportCertData</item>
<item>FakeBasicAuth</item>
<item>StrictRequire</item>
<item>OptRenegotiate</item>
<item>SDBM</item>
<item>GDBM</item>
<item>NDBM</item>
<item>DB</item>
<item>MD5</item>
<item>MD5-sess</item>
<item>auth</item>
<item>auth-int</item>
<item>never</item>
<item>searching</item>
<item>finding</item>
<item>always</item>
<item>Basic</item>
<item>Digest</item>
<item>Connection</item>
<item>Keep-Alive</item>
<item>Proxy-Authenticate</item>
<item>Proxy-Authorization</item>
<item>TE</item>
<item>Trailers</item>
<item>Transfer-Encoding</item>
<item>Upgrade</item>
<item>Netscape</item>
<item>Cookie</item>
<item>Cookie2</item>
<item>RFC2109</item>
<item>RFC2965</item>
<item>INode</item>
<item>MTime</item>
<item>Size</item>
<item>Prefer</item>
<item>Fallback</item>
<item>Double</item>
<item>error</item>
<item>nocontent</item>
<item>map</item>
<item>referer</item>
<item>formatted</item>
<item>semiformatted</item>
<item>unformatted</item>
<item>Ascending</item>
<item>Descending</item>
<item>Name</item>
<item>Date</item>
<item>Size</item>
<item>Description</item>
<item>SSL</item>
<item>TLS</item>
<item>STARTTLS</item>
<item>emerg</item>
<item>alert</item>
<item>crit</item>
<item>error</item>
<item>warn</item>
<item>notice</item>
<item>info</item>
<item>debug</item>
<item>LRU</item>
<item>GDSF</item>
<item>Any</item>
<item>NegotiatedOnly</item>
<item>Filters</item>
<item>Handlers</item>
<item>Deny,Allow</item>
<item>Allow,Deny</item>
<item>Mutual-failure</item>
<item>IsError</item>
<item>Ignore</item>
<item>StartBody</item>
<item>Full</item>
<item>Block</item>
<item>inherit</item>
<item>Registry</item>
<item>Registry-Strict</item>
<item>Script</item>
<item>EMail</item>
<item>Major</item>
<item>Minor</item>
<item>Min</item>
<item>Minimal</item>
<item>Prod</item>
<item>ProductOnly</item>
<item>OS</item>
<item>Full</item>
<item>optional</item>
<item>posixsem</item>
<item>sysvsem</item>
<item>sem</item>
<item>pthread</item>
<item>fcntl:</item>
<item>flock:</item>
<item>file:</item>
<item>yes</item>
<item>no</item>
<item>SSLv2</item>
<item>SSLv3</item>
<item>TLSv1</item>
<item>require</item>
<item>optional_no_ca</item>
<item>nonenotnull</item>
<item>dbm:</item>
<item>shm:</item>
<item>dc:</item>
<item>DNS</item>
</list>
<contexts>
<context name="apache" attribute="Normal Text" lineEndContext="#stay">
<keyword context="String Directives" String="String Directives" />
<keyword attribute="Directives" context="Integer Directives" String="Integer Directives" />
<keyword attribute="Directives" context="Alternative Directives" String="Alternative Directives" />
<RegExpr attribute="Container" context="Container Open" String="&lt;\w+" beginRegion="Container" />
<RegExpr attribute="Container" context="Container Close" String="&lt;/\w+" endRegion="Container" />
<DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true" />
</context>
<!-- Directives - separated after String, Integer and Alternatives -->
<context name="String Directives" attribute="Directives" lineEndContext="#pop">
<RegExpr attribute="String" context="#stay" String="[^#]*" />
<IncludeRules context="Comment Alert" />
</context>
<context name="Integer Directives" attribute="Other" lineEndContext="#pop">
<Float attribute="Float" context="Integer Directives" />
<Int attribute="Int" context="Integer Directives" />
<IncludeRules context="Comment Alert" />
</context>
<context name="Alternative Directives" attribute="Other" lineEndContext="#pop">
<keyword attribute="Alternates" context="#stay" String="Alternates" />
<AnyChar attribute="Alternates" context="#stay" String="-+" />
<IncludeRules context="Comment Alert" />
</context>
<!-- Other -->
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces />
<IncludeRules context="##Comments" />
<DetectIdentifier />
</context>
<!-- Container -->
<context name="Container Open" attribute="Container" lineEndContext="#pop">
<DetectChar attribute="Container" context="Alert" char="&gt;" />
<RegExpr attribute="Attribute" context="#stay" String="[^#&gt;]*" />
<IncludeRules context="Comment Alert" />
</context>
<context name="Container Close" attribute="Container" lineEndContext="#pop">
<DetectChar attribute="Container" context="Alert" char="&gt;" />
</context>
<!-- Alerts -->
<context name="Comment Alert" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Alert" context="Alert" char="#" />
</context>
<context name="Alert" attribute="Alert" lineEndContext="#pop" />
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Directives" defStyleNum="dsExtension" bold="true" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString" />
<itemData name="Float" defStyleNum="dsFloat" />
<itemData name="Int" defStyleNum="dsFloat" />
<itemData name="Alternates" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Alert" defStyleNum="dsError" />
<itemData name="Container" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Attribute" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="Other" defStyleNum="dsChar" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#" />
</comments>
<keywords casesensitive="0" weakDeliminator="," />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 1; indent-width 1; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,640 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!-- alphabetic -->
<!ENTITY alp "a-zA-Z">
<!-- alphanumeric -->
<!ENTITY aln "&alp;0-9">
<!ENTITY id "\w[\w-]+">
<!-- percent symbol, needs to be encoded inside an entity definition -->
<!ENTITY perc "&#x0025;">
<!ENTITY admonition_names "CAUTION|IMPORTANT|NOTE|TIP|WARNING">
<!-- regular expression parts to identify anchors -->
<!ENTITY anchor_mid "&id;(?:,.+?)?">
<!ENTITY anchor_phrase "#\S(?:.*?\S)?#">
<!-- block delimiters -->
<!ENTITY block_dels_comment "/{4,}">
<!ENTITY block_dels_normal "={4,}|_{4,}|\*{4,}|-{2}|&quot;{2}">
<!ENTITY block_dels_pass "\+{4,}">
<!ENTITY block_dels_verbatim "`{3}|-{4,}|\.{4,}">
<!-- postfix/trailing part of block name -->
<!ENTITY block_name_post "(?:[#&perc;].+)?\s*(?:,.*)?\]\s*$">
<!-- block end delimiter, dynamic matching: "^%1\s*$" -->
<!ENTITY block_end_del "^&perc;1\s*$">
<!-- unicode character reference, decimal and hexadecimal -->
<!ENTITY char_ref "&amp;#(?:\d{2,4}|x[\da-fA-F]{2,4});">
<!-- email - inline -->
<!ENTITY email "\w[\w.&perc;+-]*@[&aln;][&aln;.-]*\.[&alp;]{2,4}\b">
<!-- link macro and mailto: -->
<!ENTITY link_mailto "(?:link|mailto):[^:\s\[][^\s\[]*\[(?:\]|.*?[^\\]\])">
<!-- macro -->
<!ENTITY macro "(?:anchor|xref):&id;\[.*?\]|(?:btn|footnote(?:ref)?|kbd):\[.*?\]|pass:\w*\[.*?\]|(?:icon|image|menu):[^:].*?\[.*?\]|toc::\[\]">
<!ENTITY list_marker "(?:\S.+::(?=\s|$)|(?:(?:\.+|\d+\.)|(?:-|\*+)(?:\s+\[[*x ]\])?)(?=\s+\S))">
<!ENTITY table_option_delimiter "(?:(?:\d*\.)?\d+\+|\d+\*)?(?:[&lt;&gt;^]?\.?[&lt;&gt;^])?[adehlmsv]?\|">
<!-- parts to build regular expressions to identify quoted (formatted) text
E.g. emphasized, marked, strong. -->
<!-- prefix/leading part -->
<!ENTITY quoted_pre "(?&lt;=^|[^\w;:}])">
<!ENTITY quoted_pre_pass "(?&lt;=^|\W)">
<!-- central part -->
<!ENTITY quoted "\S(?:.*?\S)??">
<!-- postfix/trailing part -->
<!ENTITY quoted_post "(?=\W|$)">
]>
<language author="Andreas Gratzer" extensions="*.ad;*.adoc;*.asciidoc" kateversion="5.0" mimetype="text/asciidoc" name="AsciiDoc" license="MIT" section="Markup" version="9">
<highlighting>
<list name="macro">
<item>anchor</item>
<item>btn</item>
<item>footnote</item>
<item>footnoteref</item>
<item>icon</item>
<item>image</item>
<item>indexterm</item>
<item>indexterm2</item>
<item>kbd</item>
<item>menu</item>
<item>pass</item>
<item>toc</item>
<item>xref</item>
</list>
<contexts>
<context name="start" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
<!-- section title level 0 to 5 -->
<RegExpr String="^(?:={1,6}|#{1,6})\s+(?=\S)" lookAhead="1" context="dispatch section main title" column="0"/>
<IncludeRules context="R section inline"/>
</context>
<!-- attribute value definition, may span multiple lines -->
<context name="attribute value" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
<!-- line with continuation -->
<RegExpr String=".*?(?=\s+(?:\+\s+)?\\\s*$)" attribute="Attribute Value" context="continuation"/>
<!-- line without continuation, terminates value definition -->
<RegExpr String=".*" attribute="Attribute Value" context="#pop"/>
</context>
<!-- inline attribute value definition -->
<context name="attribute value inline" attribute="Attribute Value" lineEndContext="#stay">
<!-- the leading `:` is part of the definition syntax and should not be highlighted as value -->
<DetectChar char=":" attribute="Attribute" context="attribute value inline L2"/>
<DetectChar char="}" attribute="Attribute" context="#pop"/>
</context>
<context name="attribute value inline L2" attribute="Attribute Value" lineEndContext="#stay">
<DetectChar char="}" attribute="Attribute" context="#pop#pop"/>
</context>
<!-- backlash, may function as an escape -->
<context name="backlash" attribute="Normal" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<!-- attribute usage
formatted/quoted text
replacement of apostrophe
table separator (default)
anchor, consuming leading char will make anchor matches fail
cross reference
indexterm, consuming leading char will make matches fail
-->
<!-- replacement (besides apostrophe -->
<Detect2Chars char="&lt;" char1="-" attribute="Normal" context="#pop"/>
<Detect2Chars char="&lt;" char1="=" attribute="Normal" context="#pop"/>
<AnyChar String="_#`+*~^'|{[&lt;(" attribute="Normal" context="#pop"/>
<Detect2Chars char="-" char1="-" attribute="Normal" context="#pop"/>
<Detect2Chars char="-" char1="&gt;" attribute="Normal" context="#pop"/>
<Detect2Chars char="=" char1="&gt;" attribute="Normal" context="#pop"/>
<StringDetect String="..." attribute="Normal" context="#pop"/>
<!-- email - inline, needs to be ordered after mailto: -->
<!-- link and mailto macros, note that ftp, irc, http(s) don't match with leading `\` anyway -->
<RegExpr String="&email;|&link_mailto;|&char_ref;" attribute="Normal" context="#pop"/>
<!-- macro -->
<keyword String="macro" attribute="Normal" context="#pop"/>
</context>
<context name="block title" attribute="Block Title" lineEndContext="#pop">
<IncludeRules context="R title"/>
</context>
<context name="comment" attribute="Comment" lineEndContext="#stay" lineEmptyContext="#pop">
<DetectSpaces attribute="Comment"/>
<RegExpr String="^(&block_dels_comment;)\s*$" attribute="Comment" context="#pop!comment delimited" beginRegion="comment" column="0"/>
<IncludeRules context="R anchor"/>
<IncludeRules context="R block title"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
<context name="comment delimited" attribute="Comment" lineEndContext="#stay">
<DetectSpaces attribute="Comment"/>
<RegExpr String="&block_end_del;" dynamic="true" attribute="Comment" context="#pop" endRegion="comment" column="0"/>
<IncludeRules context="##Comments" />
<DetectIdentifier attribute="Comment"/>
</context>
<context name="comment single-line" attribute="Comment" lineEndContext="#pop">
<DetectSpaces attribute="Comment"/>
<IncludeRules context="##Comments" />
<DetectIdentifier attribute="Comment"/>
</context>
<!-- continuation, both for normal text and attribute value definition
The allowed pattern must already by validated.
Here only the possible characters are highlighted. -->
<context name="continuation" attribute="Normal" lineEndContext="#pop">
<AnyChar String="+\" attribute="Control"/>
</context>
<context name="main title" attribute="Main Title" lineEndContext="#pop!section L0">
<IncludeRules context="R title"/>
</context>
<context name="normal" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
<RegExpr String="^(-{2}|&block_dels_normal;)\s*$" attribute="Delimiter" context="#pop!normal delimited" beginRegion="block" column="0"/>
<IncludeRules context="R block title"/>
<!-- shared rules includes anchor rules, so we do not need to include that separately -->
<IncludeRules context="R shared"/>
<IncludeRules context="R normal"/>
</context>
<context name="normal delimited" attribute="Normal" lineEndContext="#stay">
<RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>
<IncludeRules context="R admonition"/>
<IncludeRules context="R block"/>
<!-- shared rules includes anchor rules, so we do not need to include that separately -->
<IncludeRules context="R shared"/>
<IncludeRules context="R normal"/>
</context>
<context name="passthrough" attribute="Passthrough" lineEndContext="#stay" lineEmptyContext="#pop">
<DetectSpaces attribute="Passthrough"/>
<IncludeRules context="R include"/>
<DetectIdentifier attribute="Passthrough"/>
<RegExpr String="^(&block_dels_pass;)\s*$" attribute="Delimiter" context="#pop!passthrough delimited" beginRegion="block" column="0"/>
<IncludeRules context="R anchor"/>
<IncludeRules context="R block title"/>
</context>
<context name="passthrough delimited" attribute="Passthrough" lineEndContext="#stay">
<RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>
<IncludeRules context="R include"/>
</context>
<context name="dispatch section main title" attribute="Normal" lineEndContext="#stay">
<IncludeRules context="dispatch section title L1-5"/>
<!-- main title, first level 0 section title -->
<AnyChar String="=#" attribute="Main Title" context="#pop!main title" beginRegion="section" column="0"/>
</context>
<context name="dispatch section title L0-5" attribute="Normal" lineEndContext="#stay">
<IncludeRules context="dispatch section title L1-5"/>
<AnyChar String="=#" attribute="Section Title" context="#pop!section title L0" beginRegion="section" endRegion="section" column="0"/>
</context>
<context name="dispatch section title L1-5" attribute="Normal" lineEndContext="#stay">
<IncludeRules context="dispatch section title L2-5"/>
<Detect2Chars char="=" char1="=" attribute="Section Title" context="#pop!section title L1" beginRegion="section" column="0"/>
<Detect2Chars char="#" char1="#" attribute="Section Title" context="#pop!section title L1" beginRegion="section" column="0"/>
</context>
<context name="dispatch section title L2-5" attribute="Normal" lineEndContext="#stay">
<IncludeRules context="dispatch section title L3-5"/>
<StringDetect String="===" attribute="Section Title" context="#pop!section title L2" beginRegion="section" column="0"/>
<StringDetect String="###" attribute="Section Title" context="#pop!section title L2" beginRegion="section" column="0"/>
</context>
<context name="dispatch section title L3-5" attribute="Normal" lineEndContext="#stay">
<IncludeRules context="dispatch section title L4-5"/>
<StringDetect String="====" attribute="Section Title" context="#pop!section title L3" beginRegion="section" column="0"/>
<StringDetect String="####" attribute="Section Title" context="#pop!section title L3" beginRegion="section" column="0"/>
</context>
<context name="dispatch section title L4-5" attribute="Normal" lineEndContext="#stay">
<IncludeRules context="dispatch section title L5"/>
<StringDetect String="=====" attribute="Section Title" context="#pop!section title L4" beginRegion="section" column="0"/>
<StringDetect String="#####" attribute="Section Title" context="#pop!section title L4" beginRegion="section" column="0"/>
</context>
<context name="dispatch section title L5" attribute="Normal" lineEndContext="#stay">
<StringDetect String="======" attribute="Section Title" context="#pop!section title L5" beginRegion="section" column="0"/>
<StringDetect String="######" attribute="Section Title" context="#pop!section title L5" beginRegion="section" column="0"/>
</context>
<context name="section L0" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
<RegExpr String="^(?:={1,6}|#{1,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L0-5" column="0"/>
<IncludeRules context="section L5"/>
</context>
<context name="section L1" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
<RegExpr String="^(?:={3,6}|#{3,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L2-5" column="0"/>
<IncludeRules context="section L5"/>
</context>
<context name="section L2" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
<RegExpr String="^(?:={4,6}|#{4,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L3-5" column="0"/>
<IncludeRules context="section L5"/>
</context>
<context name="section L3" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
<RegExpr String="^(?:={5,6}|#{5,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L4-5" column="0"/>
<IncludeRules context="section L5"/>
</context>
<context name="section L4" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
<RegExpr String="^(?:={6}|#{6})\s+(?=\S)" lookAhead="1" context="dispatch section title L5" column="0"/>
<IncludeRules context="section L5"/>
</context>
<context name="section L5" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
<RegExpr String="^(?:={1,6}|#{1,6})\s+\S" lookAhead="1" context="#pop" endRegion="section" column="0"/>
<IncludeRules context="R section inline"/>
</context>
<context name="section title L0" attribute="Section Title" lineEndContext="#pop">
<IncludeRules context="R title"/>
</context>
<context name="section title L1" attribute="Section Title" lineEndContext="#pop!section L1">
<IncludeRules context="R title"/>
</context>
<context name="section title L2" attribute="Section Title" lineEndContext="#pop!section L2">
<IncludeRules context="R title"/>
</context>
<context name="section title L3" attribute="Section Title" lineEndContext="#pop!section L3">
<IncludeRules context="R title"/>
</context>
<context name="section title L4" attribute="Section Title" lineEndContext="#pop!section L4">
<IncludeRules context="R title"/>
</context>
<context name="section title L5" attribute="Section Title" lineEndContext="#pop!section L5">
<IncludeRules context="R title"/>
</context>
<context name="table" attribute="Normal" lineEndContext="#stay">
<RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>
<!-- `|` with prefix for alignment, style etc. -->
<RegExpr String="(?&lt;=^|\s)&table_option_delimiter;" attribute="Delimiter"/>
<!-- simple `|` without alignment, style etc. -->
<DetectChar char="|" attribute="Delimiter"/>
<IncludeRules context="R shared"/>
<IncludeRules context="R normal"/>
</context>
<context name="verbatim" attribute="Verbatim" lineEndContext="#stay">
<RegExpr String="^(-{2}|&block_dels_verbatim;)\s*$" attribute="Delimiter" context="#pop!verbatim delimited" beginRegion="block" column="0"/>
<IncludeRules context="R anchor"/>
<RegExpr String="^(\[\w+[^,\]]*(,[^,\]]*)*\]\s*)+$" attribute="Preprocessor" column="0"/>
<IncludeRules context="R block title"/>
<IncludeRules context="R comment"/>
<IncludeRules context="R include"/>
<RegExpr String="^.*" attribute="Verbatim" context="#pop!verbatim paragraph" column="0"/>
</context>
<context name="verbatim delimited" attribute="Verbatim" lineEndContext="#stay">
<RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>
<IncludeRules context="R include"/>
</context>
<context name="verbatim paragraph" attribute="Verbatim" lineEndContext="#stay" lineEmptyContext="#pop">
<IncludeRules context="R include"/>
</context>
<!-- contexts to be used for IncludeRules only -->
<context name="R normal" attribute="Normal" lineEndContext="#stay">
<!-- Regex which allows to quickly consume text that is not
- macro
- continuation
- index term
- link
- replacement
- preprocessor
- formatted text
- table delimiter
maanchor:anchor-id[Macro Anchor]
^ Normal
^ Macro
bla__bla__bla
^ Normal
^ Emphasized
^ Normal
For some reason, Asciidoctor recognizes emails with leading : or / but does not render them as link
/example@mail.com
^ Normal
example@mail.com
^ Link
-->
<RegExpr String="([:/]&email;|(?!&macro;|link:|mailto:|(?:ftp|https?|irc)://|&char_ref;|indexterm2?:\[.+?\]|[\\+|\[{~^]|__|##|\([CR]\)|\(TM\)|\.\.\.|&lt;[-=&lt;]|--|->|=>|``\*?_?|\*\*_?|\(\(|\s+[[+]|\s&table_option_delimiter;|(?&lt;=[^&alp;;:}])_|&quoted_pre;(`\*?_?|\*_?|#)|(?&lt;=[&alp;])'(?=[&alp;])|&email;).)++" attribute="Normal"/>
</context>
<context name="R admonition" attribute="Normal" lineEndContext="#stay">
<!-- admonition - simple form, block form is part of block rules -->
<RegExpr String="^(?:&admonition_names;):(?=\s+\S)" attribute="Preprocessor" context="normal" column="0"/>
</context>
<context name="R anchor" attribute="Normal" lineEndContext="#stay">
<!-- shorthand form at line start -->
<!-- bibliographic anchor -->
<!-- normal form -->
<!-- shorthand form inline -->
<RegExpr String="^\[#&anchor_mid;\](?:&anchor_phrase;|\s*$)|\[{3}&anchor_mid;\]{3}|\[{2}&anchor_mid;\]{2}|(?&lt;=\S\s)\s*\[\s*#&anchor_mid;\s*\]&anchor_phrase;" attribute="Anchor"/>
</context>
<context name="R attribute" attribute="Normal" lineEndContext="#stay">
<!-- attribute definition without value / unset attribute -->
<RegExpr String="^:!?&id;!?:$" attribute="Attribute" column="0"/>
<!-- attribute definition with value -->
<RegExpr String="^:!?&id;!?:\s(?=\S)" attribute="Attribute" context="attribute value" column="0"/>
<!-- attribute inline definition -->
<RegExpr String="\{set:&id;(?=(?::.*)?\})" minimal="true" attribute="Attribute" context="attribute value inline"/>
<IncludeRules context="R attribute usage"/>
</context>
<context name="R attribute usage" attribute="Normal" lineEndContext="#stay">
<RegExpr String="\{&id;\}" attribute="Attribute"/>
</context>
<context name="R block" attribute="Normal" lineEndContext="#stay">
<IncludeRules context="R block title"/>
<IncludeRules context="R block without title"/>
</context>
<context name="R block without title" attribute="Normal" lineEndContext="#stay">
<!-- name matching -->
<RegExpr String="^\[(?:&admonition_names;)&block_name_post;|^\[(?:example|quote|sidebar|verse)&block_name_post;" attribute="Preprocessor" context="normal" column="0"/>
<RegExpr String="^\[(?:pass|stem)&block_name_post;" attribute="Preprocessor" context="passthrough" column="0"/>
<RegExpr String="^\[(?:listing|literal|source)&block_name_post;" attribute="Preprocessor" context="verbatim" column="0"/>
<!-- delimiter matching -->
<RegExpr String="^(&block_dels_normal;)\s*$" attribute="Delimiter" context="normal delimited" beginRegion="block" column="0"/>
<RegExpr String="^(&block_dels_pass;)\s*$" attribute="Delimiter" context="passthrough delimited" beginRegion="block" column="0"/>
<RegExpr String="^(\|={3,})\s*$" attribute="Delimiter" context="table" beginRegion="block" column="0"/>
<RegExpr String="^(&block_dels_verbatim;)\s*$" attribute="Delimiter" context="verbatim delimited" beginRegion="block" column="0"/>
</context>
<context name="R block title" attribute="Normal" lineEndContext="#stay">
<!-- not more than 3 leading dots followed by a non-dot, otherwise it would conflict with the delimited literal block -->
<RegExpr String="^\.{1,3}(?=[^\.\s])" attribute="Block Title" context="block title" column="0"/>
</context>
<context name="R comment" attribute="Normal" lineEndContext="#stay">
<!-- comment - multi-line, named block -->
<RegExpr String="^\[comment&block_name_post;" attribute="Preprocessor" context="comment" column="0"/>
<!-- comment - multi-line, delimited block -->
<RegExpr String="^(&block_dels_comment;)\s*$" attribute="Comment" context="comment delimited" beginRegion="comment" column="0"/>
<!-- comment - single line -->
<RegExpr String="^/{2}(?:[^/]|$)" attribute="Comment" context="comment single-line" column="0"/>
</context>
<context name="R formatted" attribute="Normal" lineEndContext="#stay">
<!-- custom style, e.g. [underline]#underlined text# -->
<RegExpr String="(?&lt;=^|\W)\[[^\]]+?\]([#_`*]{1,2})&quoted;\g1&quoted_post;" attribute="Preprocessor"/>
<!-- combined highlighting must be ordered before simple highlighting -->
<!-- emphasized monospaced strong unconstrained - must be ordered before constrained -->
<!-- emphasized monospaced strong - constrained must be ordered after unconstrained -->
<RegExpr String="`{2}\*_.*?_\*`{2}|&quoted_pre;`\*_&quoted;_\*`&quoted_post;" attribute="Emphasized Monospaced Strong"/>
<!-- emphasized strong unconstrained - must be ordered before constrained -->
<!-- emphasized strong constrained - must be ordered after unconstrained -->
<RegExpr String="\*{2}_.*?_\*{2}|&quoted_pre;\*_&quoted;_\*&quoted_post;" attribute="Emphasized Strong"/>
<!-- monospaced strong unconstrained - must be ordered before constrained -->
<!-- monospaced strong constrained - must be ordered after unconstrained -->
<RegExpr String="`{2}\*.*?\*`{2}|&quoted_pre;`\*&quoted;\*`&quoted_post;" attribute="Monospaced Strong"/>
<!-- emphasized monospaced unconstrained - must be ordered before constrained -->
<!-- emphasized monospaced constrained - must be ordered after unconstrained -->
<RegExpr String="`{2}_.*?_`{2}|&quoted_pre;`_&quoted;_`&quoted_post;" attribute="Emphasized Monospaced"/>
<!-- strong unconstrained - must be ordered before constrained -->
<!-- strong constrained - must be ordered after unconstrained -->
<RegExpr String="\*{2}[^*].*?\*{2}|&quoted_pre;\*&quoted;\*&quoted_post;" attribute="Strong"/>
<!-- emphasized unconstrained - must be ordered before constrained -->
<!-- emphasized constrained - must be ordered after unconstrained
Can't use &quoted_pre; as that excludes \w which excludes `_` too. -->
<RegExpr String="_{2}[^_].*?_{2}|(?&lt;=^|[^&alp;;:}])_&quoted;_&quoted_post;" attribute="Emphasized"/>
<IncludeRules context="R marked"/>
<IncludeRules context="R monospaced"/>
<!-- subscript -->
<RegExpr String="~\S+~" minimal="true" attribute="Subscript"/>
<!-- superscript -->
<RegExpr String="\^\S+\^" minimal="true" attribute="Superscript"/>
</context>
<context name="R include" attribute="Normal" lineEndContext="#stay">
<RegExpr String="^include::.*\[.*?\](?=\s*$)" attribute="Preprocessor" column="0"/>
</context>
<context name="R macro" attribute="Normal" lineEndContext="#stay">
<RegExpr String="&macro;" attribute="Preprocessor"/>
</context>
<context name="R marked" attribute="Normal" lineEndContext="#stay">
<!-- marked unconstrained - must be ordered before constrained -->
<!-- marked constrained - must be ordered after unconstrained -->
<RegExpr String="#{2}.+?#{2}|&quoted_pre;#&quoted;#&quoted_post;" attribute="Marked"/>
</context>
<context name="R monospaced" attribute="Normal" lineEndContext="#stay">
<!-- monospaced unconstrained - must be ordered before constrained -->
<!-- monospaced constrained - must be ordered after unconstrained -->
<RegExpr String="`{2}[^`].*?`{2}|&quoted_pre;`&quoted;`&quoted_post;" attribute="Monospaced"/>
</context>
<!-- replacements -->
<context name="R replacement" attribute="Normal" lineEndContext="#stay">
<!-- copyright -->
<StringDetect String="(C)" attribute="Replacement"/>
<!-- registered -->
<StringDetect String="(R)" attribute="Replacement"/>
<!-- trademark -->
<StringDetect String="(TM)" attribute="Replacement"/>
<!-- apostrophe, only when between alphabetic characters -->
<RegExpr String="(?&lt;=[&alp;])'(?=[&alp;])" attribute="Replacement"/>
<!-- ellipses -->
<StringDetect String="..." attribute="Replacement"/>
<!-- mdash -->
<Detect2Chars char="-" char1="-" attribute="Replacement"/>
<!-- left single arrow -->
<Detect2Chars char="&lt;" char1="-" attribute="Replacement"/>
<!-- right single arrow -->
<Detect2Chars char="-" char1="&gt;" attribute="Replacement"/>
<!-- left double arrow -->
<Detect2Chars char="&lt;" char1="=" attribute="Replacement"/>
<!-- right double arrow -->
<Detect2Chars char="=" char1="&gt;" attribute="Replacement"/>
<!-- unicode character reference -->
<RegExpr String="&char_ref;" attribute="Replacement"/>
</context>
<context name="R section inline" attribute="Normal" lineEndContext="#stay">
<!-- literal paragraph started by a line with leading spaces -->
<RegExpr String="^\s+(?!&list_marker;)\S.*" attribute="Verbatim" context="verbatim paragraph" column="0"/>
<IncludeRules context="R block"/>
<IncludeRules context="R anchor"/>
<IncludeRules context="R comment"/>
<IncludeRules context="R media"/>
<IncludeRules context="R preprocessor"/>
<IncludeRules context="R horizontal rules and page break"/>
</context>
<!-- first line of a section block -->
<context name="R section block" attribute="Normal" lineEndContext="#pop!section block continuation" lineEmptyContext="#pop">
<IncludeRules context="R callout"/>
<RegExpr String="^\+\s*$" attribute="Control" context="#pop" column="0"/>
<IncludeRules context="R admonition"/>
<IncludeRules context="R block"/>
<IncludeRules context="R shared"/>
<IncludeRules context="R empty"/>
<IncludeRules context="R normal"/>
</context>
<!-- callout as being used below a source code block -->
<context name="R callout" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
<RegExpr String="^&lt;(?:\.|\d+)&gt;(?=\s+\S)" attribute="Callout" context="#pop!callout" column="0"/>
</context>
<context name="callout" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
<IncludeRules context="R callout"/>
<IncludeRules context="section block continuation"/>
</context>
<!-- line 2 and following of a section block -->
<context name="section block continuation" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
<RegExpr String="^\+\s*$" attribute="Control" context="#pop" column="0"/>
<IncludeRules context="R block without title"/>
<IncludeRules context="R shared"/>
<IncludeRules context="R empty"/>
<IncludeRules context="R normal"/>
</context>
<context name="R empty" attribute="Normal" lineEndContext="#stay">
<RegExpr String="^\s+$" attribute="Normal" context="#pop" column="0"/>
</context>
<context name="R shared" attribute="Normal" lineEndContext="#stay">
<!-- the escaped forms must be ordered before the not escaped forms -->
<DetectChar char="\" attribute="Normal" context="backlash"/>
<!-- passthrough - inline, must be ordered before other rules
The macro form pass: is part of "R macro" context -->
<RegExpr String="&quoted_pre_pass;(\+{1,3})&quoted;\g1&quoted_post;" attribute="Passthrough"/>
<IncludeRules context="R anchor"/>
<IncludeRules context="R attribute"/>
<IncludeRules context="R comment"/>
<IncludeRules context="R include"/>
<IncludeRules context="R macro"/>
<!-- counter and counter2 -->
<RegExpr String="\{counter2?:\s*&id;\s*(?::\s*(?:\d+|[&alp;])\s*)?\}" minimal="true" attribute="Attribute"/>
<!-- horizontal rules and page break -->
<!-- to enable highlighting of the horizontal rules using "- - -" or "* * *",
keep this before the checklist and unnumbered list definition -->
<IncludeRules context="R horizontal rules and page break"/>
<!-- cross reference -->
<RegExpr String="&lt;&lt;[^&lt;\s].*?&gt;&gt;" attribute="Link"/>
<!-- index term -->
<RegExpr String="\({3}.+?\){3}|\({2}.+?\){2}|indexterm2?:\[.+?\]" attribute="Preprocessor"/>
<!-- marker for description list -->
<!-- marker for numbered list -->
<!-- marker for checklist and bulleted/unnumbered list
To enable highlighting of the horizontal rules using "- - -" or "* * *",
keep this after the horizontal rules definition -->
<RegExpr String="^\s*&list_marker;" attribute="List Marker" column="0"/>
<!-- media - block format -->
<IncludeRules context="R media"/>
<!-- links -->
<RegExpr String="(?&lt;=^|[\s\[\]();&lt;&gt;])(?:ftp|https?|irc)://[^\s\[]*?(?:\[\]|\[.*?[^\\]\]|(?=(?:[\[\]]|[\.,;:]??(?:\s|$))))|&link_mailto;|&email;" attribute="Link"/>
<!-- preprocessor -->
<!-- general meta data attribute list - must be ordered after other rules matching for lines of the form of [some content] -->
<IncludeRules context="R preprocessor"/>
<!-- continuation `+`, both at end of line and on a line on its own -->
<RegExpr String="(?:^|\s)\s*\+\s*$" lookAhead="true" attribute="Normal" context="continuation"/>
<!-- formatted/quoted must be ordered after unnumbered list -->
<IncludeRules context="R formatted"/>
<!-- replacements are done only if nothing else matched -->
<IncludeRules context="R replacement"/>
</context>
<context name="R media" attribute="Normal" lineEndContext="#stay">
<RegExpr String="^(?:audio|image|video)::.*\[.*?\](?=\s*$)" attribute="Preprocessor" column="0"/>
</context>
<context name="R preprocessor" attribute="Normal" lineEndContext="#stay">
<RegExpr String="^ifn?def::&id;(?:[,\+]&id;)*\[.*\]|^ifeval::\[.*\]|^endif::(?:&id;)?\[\]|^\[[^\s\[].*\](?=\s*$)" attribute="Preprocessor" column="0"/>
</context>
<context name="R horizontal rules and page break" attribute="Normal" lineEndContext="#stay">
<RegExpr String="^(?:'{3}|-{3}|\*{3}|- - -|\* \* \*|&lt;{3})\s*$" attribute="Control" column="0"/>
</context>
<!-- common rules for main title, section title, block title -->
<context name="R title" attribute="Normal" lineEndContext="#stay">
<DetectSpaces/>
<DetectIdentifier/>
<!-- the escaped forms must be ordered before the not escaped forms -->
<DetectChar char="\" attribute="Section Title" context="backlash"/>
<IncludeRules context="R anchor"/>
<IncludeRules context="R attribute usage"/>
<IncludeRules context="R marked"/>
<IncludeRules context="R monospaced"/>
</context>
</contexts>
<itemDatas>
<itemData name="Anchor" defStyleNum="dsFunction"/>
<itemData name="Attribute" defStyleNum="dsVariable"/>
<itemData name="Attribute Value" defStyleNum="dsVariable" italic="true"/>
<itemData name="Block Title" defStyleNum="dsString" italic="true"/>
<itemData name="Callout" defStyleNum="dsNormal" bold="true" underline="true"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Control" defStyleNum="dsControlFlow" bold="true" underline="true"/>
<itemData name="Delimiter" defStyleNum="dsPreprocessor" bold="true"/>
<itemData name="Emphasized" defStyleNum="dsNormal" italic="true"/>
<itemData name="Emphasized Monospaced" defStyleNum="dsDocumentation" italic="true"/>
<itemData name="Emphasized Monospaced Strong" defStyleNum="dsDocumentation" bold="true" italic="true"/>
<itemData name="Emphasized Strong" defStyleNum="dsNormal" bold="true" italic="true"/>
<itemData name="Link" defStyleNum="dsVariable" underline="true"/>
<itemData name="List Marker" defStyleNum="dsNormal" bold="true"/>
<itemData name="Main Title" defStyleNum="dsNormal" bold="true"/>
<itemData name="Marked" defStyleNum="dsFloat"/>
<itemData name="Monospaced" defStyleNum="dsDocumentation"/>
<itemData name="Monospaced Strong" defStyleNum="dsDocumentation" bold="true"/>
<itemData name="Normal" defStyleNum="dsNormal"/>
<itemData name="Passthrough" defStyleNum="dsSpecialString"/>
<itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>
<itemData name="Replacement" defStyleNum="dsNormal" bold="true" underline="true"/>
<itemData name="Section Title" defStyleNum="dsString" bold="true"/>
<itemData name="Strong" defStyleNum="dsNormal" bold="true"/>
<itemData name="Subscript" defStyleNum="dsNormal" underline="true"/>
<itemData name="Superscript" defStyleNum="dsNormal" bold="true" underline="true"/>
<itemData name="Verbatim" defStyleNum="dsDocumentation"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//"/>
<comment name="multiLine" start="////" end="////" region="comment"/>
</comments>
<keywords casesensitive="1"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
@@ -0,0 +1,401 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
*************************************************************************
* *
* Syntax highlighting for the AVR Assembler *
* Copyright (C) 2004, Roland Nagy *
* *
*************************************************************************
Author: Rolanf Nagy <R.Nagy@pknc.com>
Date: 18th May, 2004
Version: 1.0
This file contains the XML syntax highlighting description for the AVR
Assembler, for KATE, the KDE Advanced Editor. Keywords have been taken
directly from the AVR Assembler source code.
This program, including associated files, is free software. You may
distribute it and/or modify it under the terms of the GNU 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 General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<language name="AVR Assembler" version="6" kateversion="5.62" section="Assembler" extensions="*.asm;*.ASM;*.asm-avr" mimetype="text/x-asm;text/x-asm-avr" author="Roland Nagy" license="GPLv2+">
<highlighting>
<list name="keywords">
<item>adc</item>
<item>add</item>
<item>adiw</item>
<item>and</item>
<item>andi</item>
<item>asr</item>
<item>bclr</item>
<item>bld</item>
<item>break</item>
<item>bset</item>
<item>bst</item>
<item>cbi</item>
<item>cbr</item>
<item>clc</item>
<item>clh</item>
<item>cli</item>
<item>cln</item>
<item>clr</item>
<item>cls</item>
<item>clt</item>
<item>clv</item>
<item>clz</item>
<item>com</item>
<item>dec</item>
<item>des</item>
<item>elpm</item>
<item>eor</item>
<item>fmul</item>
<item>fmuls</item>
<item>fmulsu</item>
<item>in</item>
<item>inc</item>
<item>lac</item>
<item>las</item>
<item>lat</item>
<item>ld</item>
<item>ldd</item>
<item>ldi</item>
<item>lds</item>
<item>lpm</item>
<item>lsl</item>
<item>lsr</item>
<item>mov</item>
<item>movw</item>
<item>mul</item>
<item>muls</item>
<item>mulsu</item>
<item>neg</item>
<item>nop</item>
<item>or</item>
<item>ori</item>
<item>out</item>
<item>pop</item>
<item>push</item>
<item>rol</item>
<item>ror</item>
<item>sbc</item>
<item>sbr</item>
<item>sec</item>
<item>seh</item>
<item>sbi</item>
<item>sbci</item>
<item>sbiw</item>
<item>sei</item>
<item>sen</item>
<item>ser</item>
<item>ses</item>
<item>set</item>
<item>sev</item>
<item>sez</item>
<item>sleep</item>
<item>spm</item>
<item>st</item>
<item>std</item>
<item>sts</item>
<item>sub</item>
<item>subi</item>
<item>swap</item>
<item>tst</item>
<item>wdr</item>
<item>xch</item>
</list>
<list name="branch instructions">
<item>brbc</item>
<item>brbs</item>
<item>brcc</item>
<item>brcs</item>
<item>breq</item>
<item>brge</item>
<item>brhc</item>
<item>brhs</item>
<item>brid</item>
<item>brie</item>
<item>brlo</item>
<item>brlt</item>
<item>brmi</item>
<item>brne</item>
<item>brpl</item>
<item>brsh</item>
<item>brtc</item>
<item>brts</item>
<item>brvc</item>
<item>brvs</item>
<item>call</item>
<item>cp</item>
<item>cpc</item>
<item>cpi</item>
<item>cpse</item>
<item>eicall</item>
<item>eijmp</item>
<item>icall</item>
<item>ijmp</item>
<item>jmp</item>
<item>rcall</item>
<item>ret</item>
<item>reti</item>
<item>rjmp</item>
<item>sbic</item>
<item>sbis</item>
<item>sbrc</item>
<item>sbrs</item>
</list>
<list name="directives">
<item>.byte</item>
<item>.cseg</item>
<item>.csegsize</item>
<item>.db</item>
<item>.dd</item>
<item>.def</item>
<item>.dq</item>
<item>.dseg</item>
<item>.dw</item>
<item>.elif</item>
<item>.else</item>
<item>.endif</item>
<item>.endm</item>
<item>.endmacro</item>
<item>.equ</item>
<item>.error</item>
<item>.esec</item>
<item>.exit</item>
<item>.if</item>
<item>.ifdef</item>
<item>.ifndef</item>
<item>.include</item>
<item>.list</item>
<item>.listmac</item>
<item>.macro</item>
<item>.message</item>
<item>.nolist</item>
<item>.nooverlap</item>
<item>.org</item>
<item>.overlap</item>
<item>.set</item>
<item>.undef</item>
<item>.warning</item>
</list>
<list name="functions">
<item>low</item>
<item>high</item>
<item>byte2</item>
<item>byte3</item>
<item>byte4</item>
<item>lwrd</item>
<item>hwrd</item>
<item>page</item>
<item>exp2</item>
<item>log2</item>
<item>int</item>
<item>frac</item>
<item>q7</item>
<item>q15</item>
<item>abs</item>
<item>defined</item>
<item>strlen</item>
</list>
<list name="constants">
<item>__AVRASM_VERSION__</item>
<item>__CORE_VERSION__</item>
<item>__DATE__</item>
<item>__TIME__</item>
<item>__CENTURY__</item>
<item>__YEAR__</item>
<item>__MONTH__</item>
<item>__FILE__</item>
<item>__LINE__</item>
<item>__SECOND__</item>
<item>__MINUTE__</item>
<item>__HOUR__</item>
<item>__DAY__</item>
<item>__PART_NAME__</item>
</list>
<list name="macros">
<item>#define</item>
<item>#if</item>
<item>#undef</item>
<item>#idef</item>
<item>#ifndef</item>
<item>#if</item>
<item>#elif</item>
<item>#else</item>
<item>#endif</item>
<item>#error</item>
<item>#warning</item>
<item>#message</item>
<item>#include</item>
<item>#pragma</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<DetectSpaces attribute="Normal Text" />
<DetectChar attribute="Decimal" context="Number" char="0" lookAhead="1" />
<Int attribute="Decimal" context="Decimal" />
<DetectChar attribute="Directive" context="Directive" char="." lookAhead="1"/>
<DetectChar attribute="Hex" context="Hex" char="$" />
<DetectChar attribute="Referred Macro Parameter" context="RefMacroParam" char="@" lookAhead="1" />
<HlCChar attribute="Char" context="#stay" />
<DetectChar attribute="String" context="String" char="&quot;" />
<Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="*" beginRegion="BlockComment" />
<Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="/" />
<DetectChar attribute="Comment" context="Commentar 2" char=";" />
<AnyChar attribute="Symbol" context="#stay" String="!~-*/%+-&lt;>=&amp;^|?,()\" />
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="1" lookAhead="1"/>
<RegExpr attribute="Label" context="#stay" String="[A-Za-z0-9_]+:" firstNonSpace="1"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Branch Instructions" context="#stay" String="branch instructions"/>
<keyword attribute="Function" context="#stay" String="functions"/>
<RegExpr context="#stay" String="[A-Za-z_.$][A-Za-z0-9_.$]*" />
</context>
<context attribute="Referred Macro Parameter" lineEndContext="#pop" name="RefMacroParam">
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="0" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="1" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="2" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="3" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="4" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="5" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="6" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="7" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="8" />
<Detect2Chars attribute="Referred Macro Parameter" context="#pop" char="@" char1="9" />
<DetectChar attribute="Error" context="#pop" char="@" />
</context>
<context attribute="Directive" lineEndContext="#pop" name="Directive" fallthroughContext="#pop!BadDirective">
<keyword attribute="Directive" context="#pop" String="directives" insensitive="1" />
</context>
<context attribute="Error" lineEndContext="#pop" name="BadDirective" fallthroughContext="#pop">
<DetectChar attribute="Error" context="#stay" char="." />
<DetectIdentifier attribute="Error" context="#pop" />
</context>
<context attribute="Decimal" lineEndContext="#pop" name="Number">
<StringDetect attribute="Hex" context="#pop!Hex" String="0x" insensitive="1" />
<StringDetect attribute="Binary" context="#pop!Binary" String="0b" insensitive="1" />
<StringDetect attribute="Float" context="#pop!Float" String="0f" insensitive="1" />
<StringDetect attribute="Float" context="#pop!Float" String="0e" insensitive="1" />
<StringDetect attribute="Float" context="#pop!Float" String="0d" insensitive="1" />
<WordDetect attribute="Decimal" context="#pop" String="0" />
<DetectChar attribute="Octal" context="#pop!Octal" char="0" />
</context>
<context attribute="Decimal" lineEndContext="#pop" name="Decimal" fallthroughContext="#pop">
<AnyChar attribute="Decimal" context="#stay" String="0123456789_" />
</context>
<context attribute="Binary" lineEndContext="#pop" name="Binary" fallthroughContext="#pop">
<AnyChar attribute="Binary" context="#stay" String="01_" />
</context>
<context attribute="Octal" lineEndContext="#pop" name="Octal" fallthroughContext="#pop">
<AnyChar attribute="Octal" context="#stay" String="01234567_" />
</context>
<context attribute="Hex" lineEndContext="#pop" name="Hex" fallthroughContext="#pop">
<AnyChar attribute="Hex" context="#stay" String="0123456789abcdefABCDEF_" />
</context>
<context attribute="Float" lineEndContext="#pop" name="Float" fallthroughContext="#pop">
<RegExpr attribute="Float" context="#stay" String="[-+]?[0-9]*+\.?[0-9]*+[eE]?[-+]?[0-9]+" />
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<LineContinue attribute="Symbol" />
<HlCStringChar attribute="String Char" context="#stay" />
<DetectChar attribute="String" context="#pop" char="&quot;" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Commentar 1">
<DetectSpaces attribute="Comment"/>
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="Commentar 2">
<DetectSpaces attribute="Comment"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
<context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
<keyword attribute="Preprocessor" context="#pop!InPreprocessor" String="macros" />
<DetectChar attribute="Preprocessor" context="#pop!PreprocessorName" char="#" />
</context>
<context attribute="Preprocessor" lineEndContext="#pop" name="PreprocessorName">
<DetectIdentifier attribute="Unknown Preprocessor" context="#pop!InPreprocessor" />
</context>
<context attribute="Preprocessor" lineEndContext="#pop" name="InPreprocessor">
<LineContinue attribute="Symbol" />
<DetectChar attribute="Symbol" context="#stay" char="#" />
<Detect2Chars attribute="Constant" context="Constant" char="_" char1="_" lookAhead="1"/>
<IncludeRules context="Normal" />
</context>
<context attribute="Constant" lineEndContext="#stay" name="Constant">
<keyword attribute="Constant" context="#pop" String="constants"/>
<RegExpr attribute="Constant" context="#pop" String="__(?:[0-9a-zA-Z]++|_(?!_))++__" />
<DetectIdentifier attribute="Error" context="#pop" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Label" defStyleNum="dsFunction" />
<itemData name="Function" defStyleNum="dsFunction" />
<itemData name="Keyword" defStyleNum="dsKeyword" />
<itemData name="Branch Instructions" defStyleNum="dsControlFlow" />
<itemData name="Directive" defStyleNum="dsKeyword" />
<itemData name="Decimal" defStyleNum="dsDecVal" />
<itemData name="Octal" defStyleNum="dsBaseN" />
<itemData name="Hex" defStyleNum="dsBaseN" />
<itemData name="Binary" defStyleNum="dsBaseN" />
<itemData name="Float" defStyleNum="dsFloat" />
<itemData name="Char" defStyleNum="dsChar" />
<itemData name="String" defStyleNum="dsString" />
<itemData name="String Char" defStyleNum="dsSpecialChar" />
<itemData name="Symbol" defStyleNum="dsOperator" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Preprocessor" defStyleNum="dsPreprocessor" />
<itemData name="Constant" defStyleNum="dsOthers" />
<itemData name="Error" defStyleNum="dsError" />
<itemData name="Unknown Preprocessor" defStyleNum="dsError" />
<itemData name="Referred Macro Parameter" defStyleNum="dsVariable" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start=";" />
<comment name="multiLine" start="/*" end="*/" region="BlockComment" />
</comments>
<keywords casesensitive="1" weakDeliminator=".$#" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,468 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Motorola DSP56k" section="Assembler" version="5" kateversion="5.62" extensions="*.asm;*.inc;*.ASM;*.INC" author="Miro Kropacek (miro.kropacek@gmail.com)" license="LGPL">
<highlighting>
<list name="Data Registers">
<item>x</item>
<item>x0</item>
<item>x1</item>
<item>y</item>
<item>y0</item>
<item>y1</item>
<item>a2</item>
<item>a1</item>
<item>a0</item>
<item>a</item>
<item>a10</item>
<item>ab</item>
<item>b2</item>
<item>b1</item>
<item>b0</item>
<item>b</item>
<item>b10</item>
<item>ba</item>
</list>
<list name="Address Registers">
<item>r0</item>
<item>r1</item>
<item>r2</item>
<item>r3</item>
<item>r4</item>
<item>r5</item>
<item>r6</item>
<item>r7</item>
</list>
<list name="Offset Registers">
<item>n0</item>
<item>n1</item>
<item>n2</item>
<item>n3</item>
<item>n4</item>
<item>n5</item>
<item>n6</item>
<item>n7</item>
</list>
<list name="Modifier Registers">
<item>m0</item>
<item>m1</item>
<item>m2</item>
<item>m3</item>
<item>m4</item>
<item>m5</item>
<item>m6</item>
<item>m7</item>
</list>
<list name="Control Registers">
<item>la</item>
<item>lc</item>
<item>pc</item>
<item>ssh</item>
<item>ssl</item>
<item>omr</item>
<item>sr</item>
<item>sp</item>
<item>mr</item>
<item>ccr</item>
</list>
<list name="Instructions">
<item>abs</item>
<item>adc</item>
<item>add</item>
<item>addl</item>
<item>addr</item>
<item>and</item>
<item>andi</item>
<item>asl</item>
<item>asr</item>
<item>bchg</item>
<item>bclr</item>
<item>bset</item>
<item>btst</item>
<item>clr</item>
<item>cmp</item>
<item>cmpm</item>
<item>div</item>
<item>do</item>
<item>enddo</item>
<item>eor</item>
<item>illegal</item>
<item>jcc</item>
<item>jhs</item>
<item>jcs</item>
<item>jls</item>
<item>jec</item>
<item>jeq</item>
<item>jes</item>
<item>jge</item>
<item>jgt</item>
<item>jlc</item>
<item>jle</item>
<item>jls</item>
<item>jlt</item>
<item>jmi</item>
<item>jne</item>
<item>jnr</item>
<item>jpl</item>
<item>jnn</item>
<item>jclr</item>
<item>jmp</item>
<item>jscc</item>
<item>jshs</item>
<item>jscs</item>
<item>jsls</item>
<item>jsec</item>
<item>jseq</item>
<item>jses</item>
<item>jsge</item>
<item>jsgt</item>
<item>jslc</item>
<item>jsle</item>
<item>jsls</item>
<item>jslt</item>
<item>jsmi</item>
<item>jsne</item>
<item>jsnr</item>
<item>jspl</item>
<item>jsnn</item>
<item>jsclr</item>
<item>jset</item>
<item>jsr</item>
<item>jsset</item>
<item>lsl</item>
<item>lsr</item>
<item>lua</item>
<item>mac</item>
<item>macr</item>
<item>move</item>
<item>movec</item>
<item>movem</item>
<item>movep</item>
<item>mpy</item>
<item>mpyr</item>
<item>neg</item>
<item>nop</item>
<item>norm</item>
<item>not</item>
<item>or</item>
<item>ori</item>
<item>rep</item>
<item>reset</item>
<item>rnd</item>
<item>rol</item>
<item>ror</item>
<item>rti</item>
<item>rts</item>
<item>sbc</item>
<item>stop</item>
<item>sub</item>
<item>subl</item>
<item>subr</item>
<item>swi</item>
<item>tcc</item>
<item>ths</item>
<item>tcs</item>
<item>tls</item>
<item>tec</item>
<item>teq</item>
<item>tes</item>
<item>tge</item>
<item>tgt</item>
<item>tlc</item>
<item>tle</item>
<item>tls</item>
<item>tlt</item>
<item>tmi</item>
<item>tne</item>
<item>tnr</item>
<item>tpl</item>
<item>snn</item>
<item>tfr</item>
<item>tst</item>
<item>wait</item>
</list>
<list name="Directives">
<item>endif</item>
<item>endc</item>
<item>else</item>
<item>ifne</item>
<item>if</item>
<item>ifeq</item>
<item>ifle</item>
<item>iflt</item>
<item>ifge</item>
<item>ifgt</item>
<item>include</item>
<item>incbin</item>
<item>printval</item>
<item>pass1val</item>
<item>pass2val</item>
<item>fail</item>
<item>endm</item>
<item>end</item>
<item>org</item>
<item>ds</item>
<item>dsm</item>
<item>list</item>
<item>nolist</item>
<item>macro</item>
<item>dc</item>
<item>equ</item>
</list>
<list name="Functions">
<item>@abs</item>
<item>@acs</item>
<item>@asn</item>
<item>@at2</item>
<item>@atn</item>
<item>@cel</item>
<item>@coh</item>
<item>@cos</item>
<item>@flr</item>
<item>@l10</item>
<item>@log</item>
<item>@max</item>
<item>@min</item>
<item>@pow</item>
<item>@rnd</item>
<item>@sgn</item>
<item>@sin</item>
<item>@snh</item>
<item>@sqt</item>
<item>@tan</item>
<item>@tnh</item>
<item>@xpn</item>
<item>@cvf</item>
<item>@cvi</item>
<item>@cvs</item>
<item>@fld</item>
<item>@frc</item>
<item>@lfr</item>
<item>@lng</item>
<item>@lun</item>
<item>@rvb</item>
<item>@unf</item>
<item>@len</item>
<item>@pos</item>
<item>@scp</item>
<item>@arg</item>
<item>@cnt</item>
<item>@mac</item>
<item>@mxp</item>
<item>@ccc</item>
<item>@chk</item>
<item>@ctr</item>
<item>@def</item>
<item>@exp</item>
<item>@int</item>
<item>@lcv</item>
<item>@lst</item>
<item>@msp</item>
<item>@rel</item>
</list>
<contexts>
<context name="Normal Text" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Operation">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Comment" context="Comment" char="*" firstNonSpace="1"/>
<DetectIdentifier attribute="Label" context="Label" column="0"/>
<DetectChar attribute="Local label" context="LocalLabel" char="_" column="0"/>
<keyword attribute="Instructions" context="Operation" String="Instructions"/>
<keyword attribute="Directives" context="Operation" String="Directives"/>
<RegExpr attribute="Label" context="EndLabel" String="[a-zA-Z][a-zA-Z0-9._]*+(?=:)"/>
<RegExpr attribute="Local label" context="EndLabel" String="_[a-zA-Z][a-zA-Z0-9._]*+(?=:)"/>
<DetectIdentifier attribute="Unknown Instructions" context="Operation"/>
</context>
<context name="Operation" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="Expression">
<AnyChar attribute="Constant" context="Addressing Mode" String="#&lt;&gt;"/>
<RegExpr attribute="Memory" context="#stay" String="[xylpXYLP]:"/>
</context>
<context name="Addressing Mode" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop!Constant_Expression">
<AnyChar attribute="Constant" context="#pop!Constant_Expression" String="&lt;&gt;"/>
</context>
<context name="Expression" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Hex" context="Number16" char="$"/>
<DetectChar attribute="Binary" context="Number2" char="%"/>
<DetectChar attribute="Number" context="Number8OrFunc" char="@" lookAhead="1"/>
<Float attribute="Float" context="#stay"/>
<Int attribute="Number" context="#stay"/>
<IncludeRules context="Inc_Expression"/>
<DetectIdentifier attribute="Normal Text"/>
</context>
<context name="Constant_Expression" attribute="Constant" lineEndContext="#pop">
<DetectChar attribute="Constant" context="Constant_Number16" char="$"/>
<DetectChar attribute="Constant" context="Constant_Number2" char="%"/>
<DetectChar attribute="Constant" context="Constant_Number8OrFunc" char="@" lookAhead="1"/>
<Float attribute="Constant" context="#stay"/>
<Int attribute="Constant" context="#stay"/>
<IncludeRules context="Inc_Expression"/>
<DetectIdentifier attribute="Label"/>
</context>
<context name="Inc_Expression" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
<DetectChar attribute="Symbol Separator" context="#pop" char=","/>
<DetectSpaces attribute="Normal Text" context="#pop"/>
<AnyChar attribute="Symbols" context="#stay" String="+-*/%?&amp;|&lt;&gt;^!=[]{}()"/>
<DetectChar attribute="String" context="SQ_String" char="'"/>
<DetectChar attribute="String" context="DQ_String" char="&quot;"/>
<keyword attribute="Data Registers" context="#stay" String="Data Registers"/>
<keyword attribute="Address Registers" context="#stay" String="Address Registers"/>
<keyword attribute="Offset Registers" context="#stay" String="Offset Registers"/>
<keyword attribute="Modifier Registers" context="#stay" String="Modifier Registers"/>
<keyword attribute="Control Registers" context="#stay" String="Control Registers"/>
</context>
<context name="Constant_Number16" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Constant" context="#pop" String="[A-Fa-f0-9]+"/>
</context>
<context name="Constant_Number2" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Constant" context="#pop" String="[01]+"/>
</context>
<context name="Constant_Number8OrFunc" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop">
<keyword attribute="Functions" context="#pop!Constant_Func" String="Functions"/>
<DetectChar attribute="Constant" context="#pop!Constant_Number8OrFunc_2" char="@"/>
</context>
<context name="Constant_Number8OrFunc_2" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop">
<DetectIdentifier attribute="Constant" context="#pop!Constant_Func"/>
<RegExpr attribute="Constant" context="#pop" String="[0-7]+"/>
</context>
<context name="Constant_Func" attribute="Functions" lineEndContext="#pop" fallthroughContext="#pop">
<DetectChar attribute="Symbols" context="#pop!Constant_InnerFunc" char="("/>
</context>
<context name="Constant_InnerFunc" attribute="Functions" lineEndContext="#pop">
<DetectChar attribute="Symbols" context="#pop" char=")"/>
<DetectChar attribute="Symbols" context="Constant_InnerFunc" char="("/>
<DetectChar attribute="Symbol Separator" context="#stay" char=","/>
<DetectChar attribute="Constant" context="Constant_Number16" char="$"/>
<DetectChar attribute="Constant" context="Constant_Number2" char="%"/>
<DetectChar attribute="Constant" context="Constant_Number8OrFunc" char="@" lookAhead="1"/>
<Float attribute="Constant" context="#stay"/>
<Int attribute="Constant" context="#stay"/>
<IncludeRules context="Inc_Expression"/>
<DetectIdentifier attribute="Normal Text"/>
</context>
<context name="Number8OrFunc" attribute="Octal" lineEndContext="#pop" fallthroughContext="#pop">
<keyword attribute="Functions" context="#pop" String="Functions"/>
<DetectChar attribute="Octal" context="#pop!Number8OrFunc_2" char="@"/>
</context>
<context name="Number8OrFunc_2" attribute="Octal" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Octal" context="#pop" String="[0-7]+"/>
<DetectIdentifier attribute="Functions" context="#pop"/>
</context>
<context name="Number16" attribute="Hex" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Hex" context="#pop" String="[A-Fa-f0-9]+"/>
</context>
<context name="Number2" attribute="Binary" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Binary" context="#pop" String="[01]+"/>
</context>
<context name="Label" attribute="Label" lineEndContext="#pop" fallthroughContext="#pop!EndLabel">
<DetectChar attribute="Label" context="Label2" char="."/>
</context>
<context name="Label2" attribute="Label" lineEndContext="#pop" fallthroughContext="#pop#pop!EndLabel">
<DetectIdentifier attribute="Label" context="#stay"/>
<DetectChar attribute="Label" context="#stay" char="."/>
</context>
<context name="LocalLabel" attribute="Local label" lineEndContext="#pop" fallthroughContext="#pop!EndLabel">
<DetectChar attribute="Local label" context="LocalLabel2" char="."/>
</context>
<context name="LocalLabel2" attribute="Local label" lineEndContext="#pop" fallthroughContext="#pop#pop!EndLabel">
<DetectIdentifier attribute="Local label" context="#stay"/>
<DetectChar attribute="Local label" context="#stay" char="."/>
</context>
<context name="EndLabel" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
<DetectChar attribute="Symbols" context="#stay" char=":"/>
<DetectSpaces attribute="Normal Text" context="#stay"/>
<keyword attribute="Instructions" context="#pop!Operation" String="Instructions"/>
<keyword attribute="Directives" context="#pop!Operation" String="Directives"/>
<DetectIdentifier attribute="Unknown Instructions" context="#pop!Operation"/>
</context>
<context name="SQ_String" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="'"/>
<DetectChar attribute="Char" context="Escape" char="\"/>
</context>
<context name="DQ_String" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="&quot;"/>
<DetectChar attribute="Char" context="Escape" char="\"/>
</context>
<context name="Escape" attribute="Char" lineEndContext="#pop" fallthroughContext="#pop">
<AnyChar attribute="Char" context="#pop" String="bfnrt\'"/>
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces attribute="Comment"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
</contexts>
<itemDatas>
<!-- keywords -->
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Data Registers" defStyleNum="dsDataType"/>
<itemData name="Address Registers" defStyleNum="dsDataType"/>
<itemData name="Offset Registers" defStyleNum="dsDataType"/>
<itemData name="Modifier Registers" defStyleNum="dsDataType"/>
<itemData name="Control Registers" defStyleNum="dsDataType"/>
<itemData name="Instructions" bold="true" defStyleNum="dsKeyword"/>
<itemData name="Unknown Instructions" defStyleNum="dsKeyword"/>
<itemData name="Directives" bold="true" defStyleNum="dsControlFlow"/>
<itemData name="Memory" bold="true" defStyleNum="dsOthers"/>
<itemData name="Functions" bold="true" defStyleNum="dsFunction"/>
<!-- defined in contexts -->
<itemData name="Comment" italic="false" defStyleNum="dsComment"/>
<itemData name="Label" defStyleNum="dsFunction"/>
<itemData name="Local label" defStyleNum="dsFunction"/>
<itemData name="Constant" defStyleNum="dsConstant"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Binary" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Number" defStyleNum="dsDecVal"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Symbol Separator" defStyleNum="dsOperator"/>
<itemData name="Symbols" defStyleNum="dsOperator"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="0" weakDeliminator="@"/>
<comments>
<comment name="singleLine" start=";"/>
</comments>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,717 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Motorola 68k (VASM/Devpac)" section="Assembler" version="5" kateversion="5.62" extensions="*.s;*.i;*.S;*.I" author="Miro Kropacek (miro.kropacek@gmail.com)" license="LGPL">
<highlighting>
<list name="Data Registers">
<item>d0</item>
<item>d1</item>
<item>d2</item>
<item>d3</item>
<item>d4</item>
<item>d5</item>
<item>d6</item>
<item>d7</item>
</list>
<list name="Address Registers">
<item>a0</item>
<item>a1</item>
<item>a2</item>
<item>a3</item>
<item>a4</item>
<item>a5</item>
<item>a6</item>
<item>a7</item>
<item>sp</item>
</list>
<list name="Control Registers">
<item>ccr</item>
<item>sr</item>
<item>pc</item>
<item>zpc</item>
<item>ssp</item>
<item>usp</item>
<item>msp</item>
<item>isp</item>
<item>dfc</item>
<item>cacr</item>
<item>caar</item>
<item>vbr</item>
<item>crp</item>
<item>srp</item>
<item>urp</item>
<item>tc</item>
<item>tt0</item>
<item>tt1</item>
<item>mmusr</item>
<item>itt0</item>
<item>itt1</item>
<item>dtt0</item>
<item>dtt1</item>
<item>buscr</item>
<item>pcr</item>
<item>ic</item>
<!-- <item>dc</item> -->
<item>bc</item>
</list>
<list name="FPU Registers">
<item>fp0</item>
<item>fp1</item>
<item>fp2</item>
<item>fp3</item>
<item>fp4</item>
<item>fp5</item>
<item>fp6</item>
<item>fp7</item>
<item>fpcr></item>
<item>fpsr</item>
<item>fpiar</item>
</list>
<list name="Branch Instructions (CPU)">
<item>bcc</item>
<item>bcs</item>
<item>beq</item>
<item>bge</item>
<item>bgt</item>
<item>bhi</item>
<item>ble</item>
<item>bls</item>
<item>blt</item>
<item>bmi</item>
<item>bne</item>
<item>bpl</item>
<item>bvc</item>
<item>bvs</item>
<item>bra</item>
<item>bsr</item>
<item>dbcc</item>
<item>dbcs</item>
<item>dbeq</item>
<item>dbge</item>
<item>dbgt</item>
<item>dbhi</item>
<item>dble</item>
<item>dbls</item>
<item>dblt</item>
<item>dbmi</item>
<item>dbne</item>
<item>dbpl</item>
<item>dbvc</item>
<item>dbvs</item>
<item>dbt</item>
<item>dbf</item>
<item>dbra</item>
<item>jmp</item>
</list>
<list name="Instructions (CPU)">
<item>abcd</item>
<item>adda</item>
<item>addi</item>
<item>add</item>
<item>addq</item>
<item>addx</item>
<item>andi</item>
<item>and</item>
<item>asl</item>
<item>asr</item>
<item>bchg</item>
<item>bclr</item>
<item>bfchg</item>
<item>bfclr</item>
<item>bfexts</item>
<item>bfextu</item>
<item>bfffo</item>
<item>bfins</item>
<item>bfset</item>
<item>bftst</item>
<item>bhs</item>
<item>bkpt</item>
<item>blo</item>
<item>bset</item>
<item>btst</item>
<item>callm</item>
<item>cas2</item>
<item>cas</item>
<item>chk2</item>
<item>chk</item>
<item>cinva</item>
<item>cinvl</item>
<item>cinvp</item>
<item>clr</item>
<item>cmp2</item>
<item>cmpa</item>
<item>cmpi</item>
<item>cmp</item>
<item>cmpm</item>
<item>cpusha</item>
<item>cpushl</item>
<item>cpushp</item>
<item>dbhs</item>
<item>dblo</item>
<item>dbvc</item>
<item>dbvs</item>
<item>divs</item>
<item>divsl</item>
<item>divu</item>
<item>divul</item>
<item>eori</item>
<item>eor</item>
<item>exg</item>
<item>extb</item>
<item>ext</item>
<item>illegal</item>
<item>jsr</item>
<item>lea</item>
<item>link</item>
<item>lpstop</item>
<item>lsl</item>
<item>lsr</item>
<item>move16</item>
<item>movea</item>
<item>movec</item>
<item>move</item>
<item>movem</item>
<item>movep</item>
<item>moveq</item>
<item>moves</item>
<item>muls</item>
<item>mulu</item>
<item>nbcd</item>
<item>neg</item>
<item>negx</item>
<item>nop</item>
<item>not</item>
<item>ori</item>
<item>or</item>
<item>pack</item>
<item>pea</item>
<item>pflusha</item>
<item>pflushan</item>
<item>pflush</item>
<item>pflushn</item>
<item>ploadr</item>
<item>ploadw</item>
<item>plpa</item>
<item>pmovefd</item>
<item>pmove</item>
<item>ptestr</item>
<item>ptestw</item>
<item>reset</item>
<item>rol</item>
<item>ror</item>
<item>roxl</item>
<item>roxr</item>
<item>rtd</item>
<item>rte</item>
<item>rtm</item>
<item>rtr</item>
<item>rts</item>
<item>sbcd</item>
<item>scc</item>
<item>scs</item>
<item>seq</item>
<item>sf</item>
<item>sge</item>
<item>sgt</item>
<item>shi</item>
<item>shs</item>
<item>sle</item>
<item>slo</item>
<item>sls</item>
<item>slt</item>
<item>smi</item>
<item>sne</item>
<item>spl</item>
<item>st</item>
<item>stop</item>
<item>suba</item>
<item>subi</item>
<item>sub</item>
<item>subq</item>
<item>subx</item>
<item>svc</item>
<item>svs</item>
<item>swap</item>
<item>tas</item>
<item>trapcc</item>
<item>trapcs</item>
<item>trapeq</item>
<item>trapf</item>
<item>trapge</item>
<item>trapgt</item>
<item>traphi</item>
<item>traphs</item>
<item>trap</item>
<item>traple</item>
<item>traplo</item>
<item>trapls</item>
<item>traplt</item>
<item>trapmi</item>
<item>trapne</item>
<item>trappl</item>
<item>trapt</item>
<item>trapvc</item>
<item>trapvc</item>
<item>trapv</item>
<item>tst</item>
<item>unlk</item>
<item>unpk</item>
</list>
<list name="Instructions (FPU)">
<item>fabs</item>
<item>facos</item>
<item>fadd</item>
<item>fasin</item>
<item>fatanh</item>
<item>fatan</item>
<item>fbeq</item>
<item>fbf</item>
<item>fbge</item>
<item>fbgle</item>
<item>fbgl</item>
<item>fbgt</item>
<item>fble</item>
<item>fblt</item>
<item>fbne</item>
<item>fbnge</item>
<item>fbngle</item>
<item>fbngl</item>
<item>fbngt</item>
<item>fbnle</item>
<item>fbnlt</item>
<item>fboge</item>
<item>fbogl</item>
<item>fbogt</item>
<item>fbole</item>
<item>fbolt</item>
<item>fbor</item>
<item>fbseq</item>
<item>fbsf</item>
<item>fbsne</item>
<item>fbst</item>
<item>fbt</item>
<item>fbueq</item>
<item>fbuge</item>
<item>fbugt</item>
<item>fbule</item>
<item>fbult</item>
<item>fbun</item>
<item>fcmp</item>
<item>fcosh</item>
<item>fcos</item>
<item>fdabs</item>
<item>fdadd</item>
<item>fdbeq</item>
<item>fdbf</item>
<item>fdbge</item>
<item>fdbgle</item>
<item>fdbgl</item>
<item>fdbgt</item>
<item>fdble</item>
<item>fdblt</item>
<item>fdbne</item>
<item>fdbnge</item>
<item>fdbngle</item>
<item>fdbngl</item>
<item>fdbngt</item>
<item>fdbnle</item>
<item>fdbnlt</item>
<item>fdboge</item>
<item>fdbogl</item>
<item>fdbogt</item>
<item>fdbole</item>
<item>fdbolt</item>
<item>fdbor</item>
<item>fdbseq</item>
<item>fdbsf</item>
<item>fdbsne</item>
<item>fdbst</item>
<item>fdbt</item>
<item>fdbueq</item>
<item>fdbuge</item>
<item>fdbugt</item>
<item>fdbule</item>
<item>fdbult</item>
<item>fdbun</item>
<item>fddiv</item>
<item>fdiv</item>
<item>fdmove</item>
<item>fdmul</item>
<item>fdneg</item>
<item>fdsqrt</item>
<item>fdsub</item>
<item>fetox</item>
<item>fetoxm1</item>
<item>fgetexp</item>
<item>fgetman</item>
<item>fint</item>
<item>fintrz</item>
<item>flog10</item>
<item>flog2</item>
<item>flogn</item>
<item>flognp1</item>
<item>fmod</item>
<item>fmovecr</item>
<item>fmove</item>
<item>fmovem</item>
<item>fmul</item>
<item>fneg</item>
<item>fnop</item>
<item>frem</item>
<item>frestore</item>
<item>fsabs</item>
<item>fsadd</item>
<item>fsave</item>
<item>fscale</item>
<item>fsdiv</item>
<item>fseq</item>
<item>fsf</item>
<item>fsge</item>
<item>fsgldiv</item>
<item>fsgle</item>
<item>fsgl</item>
<item>fsglmul</item>
<item>fsgt</item>
<item>fsincos</item>
<item>fsinh</item>
<item>fsin</item>
<item>fsle</item>
<item>fslt</item>
<item>fsmove</item>
<item>fsmul</item>
<item>fsneg</item>
<item>fsne</item>
<item>fsnge</item>
<item>fsngle</item>
<item>fsngl</item>
<item>fsngt</item>
<item>fsnle</item>
<item>fsnlt</item>
<item>fsoge</item>
<item>fsogl</item>
<item>fsogt</item>
<item>fsole</item>
<item>fsolt</item>
<item>fsor</item>
<item>fsqrt</item>
<item>fsseq</item>
<item>fssf</item>
<item>fssne</item>
<item>fssqrt</item>
<item>fsst</item>
<item>fssub</item>
<item>fst</item>
<item>fsub</item>
<item>fsueq</item>
<item>fsuge</item>
<item>fsugt</item>
<item>fsule</item>
<item>fsult</item>
<item>fsun</item>
<item>ftanh</item>
<item>ftan</item>
<item>ftentox</item>
<item>ftrapeq</item>
<item>ftrapf</item>
<item>ftrapge</item>
<item>ftrapgle</item>
<item>ftrapgl</item>
<item>ftrapgt</item>
<item>ftraple</item>
<item>ftraplt</item>
<item>ftrapne</item>
<item>ftrapnge</item>
<item>ftrapngle</item>
<item>ftrapngl</item>
<item>ftrapngt</item>
<item>ftrapnle</item>
<item>ftrapnlt</item>
<item>ftrapoge</item>
<item>ftrapogl</item>
<item>ftrapogt</item>
<item>ftrapole</item>
<item>ftrapolt</item>
<item>ftrapor</item>
<item>ftrapseq</item>
<item>ftrapsf</item>
<item>ftrapsne</item>
<item>ftrapst</item>
<item>ftrapt</item>
<item>ftrapueq</item>
<item>ftrapuge</item>
<item>ftrapugt</item>
<item>ftrapule</item>
<item>ftrapult</item>
<item>ftrapun</item>
<item>ftst</item>
<item>ftwotox</item>
</list>
<list name="Directives">
<item>align</item>
<item>blk</item>
<item>bss</item>
<item>clrfo</item>
<item>clrso</item>
<item>cnop</item>
<item>code</item>
<item>cseg</item>
<item>data</item>
<item>dc</item>
<item>dcb</item>
<item>ds</item>
<item>dseg</item>
<item>else</item>
<item>end</item>
<item>endc</item>
<item>endif</item>
<item>endm</item>
<item>endr</item>
<item>equ</item>
<item>even</item>
<item>fo</item>
<item>idnt</item>
<item>if</item>
<item>ifeq</item>
<item>ifne</item>
<item>ifgt</item>
<item>ifge</item>
<item>iflt</item>
<item>ifle</item>
<item>ifd</item>
<item>ifnd</item>
<item>ifc</item>
<item>ifnc</item>
<item>incbin</item>
<item>incdir</item>
<item>include</item>
<item>macro</item>
<item>org</item>
<item>public</item>
<item>rept</item>
<item>rs</item>
<item>rsreset</item>
<item>rsset</item>
<item>section</item>
<item>set</item>
<item>setfo</item>
<item>setso</item>
<item>so</item>
<item>text</item>
<item>ttl</item>
<item>xdef</item>
<item>xref</item>
<item>sdreg</item>
<item>cpu32</item>
<item>far</item>
<item>fpu</item>
<item>machine</item>
<item>mc68000</item>
<item>mc68010</item>
<item>mc68020</item>
<item>mc68030</item>
<item>mc68040</item>
<item>mc68060</item>
<item>mcf5200</item>
<item>mcf5206</item>
<item>mcf5307</item>
<item>mcf5407</item>
<item>near</item>
<item>opt</item>
<item>equr</item>
<item>equrl</item>
<item>fequr</item>
<item>fequrl</item>
<item>freg</item>
<item>reg</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" fallthroughContext="SuffixInstruction">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Comment" context="Comment" char="*" firstNonSpace="1"/>
<DetectIdentifier attribute="Label" context="Label" column="0"/>
<DetectChar attribute="Local label" context="LocalLabel" char="." column="0"/>
<keyword attribute="Instructions (CPU)" context="SuffixInstruction" String="Instructions (CPU)"/>
<keyword attribute="Branch Instructions (CPU)" context="SuffixInstruction" String="Branch Instructions (CPU)"/>
<keyword attribute="Instructions (FPU)" context="SuffixInstruction" String="Instructions (FPU)"/>
<keyword attribute="Directives" context="SuffixInstruction" String="Directives"/>
<RegExpr attribute="Label" context="EndLabel" String="[a-zA-Z][a-zA-Z0-9._]*+(?=:)"/>
<RegExpr attribute="Local label" context="EndLabel" String="\.[A-Za-z_][a-zA-Z0-9._]*+(?=:)"/>
<DetectIdentifier attribute="Unknown Instructions" context="SuffixInstruction"/>
</context>
<context name="SuffixInstruction" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Operation">
<DetectSpaces attribute="Normal Text" context="#pop!Operation"/>
<RegExpr attribute="Operand sizes (CPU)" context="#pop!Operation" String="\.[bwlsBWLS](?=\s)"/>
<RegExpr attribute="Operand sizes (FPU)" context="#pop!Operation" String="\.[dpqxDPQX](?=\s)"/>
</context>
<context name="Operation" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="Expression">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Constant" context="Addressing Mode" char="#"/>
</context>
<context name="Addressing Mode" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop!Constant_Expression">
<AnyChar attribute="Constant" context="#pop!Constant_Expression" String="&lt;&gt;"/>
</context>
<context name="Expression" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Hex" context="Number16" char="$"/>
<DetectChar attribute="Binary" context="Number2" char="%"/>
<DetectChar attribute="Number" context="Number8" char="@"/>
<Float attribute="Float" context="#stay"/>
<Int attribute="Number" context="#stay"/>
<IncludeRules context="Inc_Expression"/>
<DetectIdentifier attribute="Normal Text"/>
</context>
<context name="Constant_Expression" attribute="Constant" lineEndContext="#pop">
<DetectChar attribute="Constant" context="Constant_Number16" char="$"/>
<DetectChar attribute="Constant" context="Constant_Number2" char="%"/>
<DetectChar attribute="Constant" context="Constant_Number8" char="@"/>
<Float attribute="Constant" context="#stay"/>
<Int attribute="Constant" context="#stay"/>
<IncludeRules context="Inc_Expression"/>
<DetectIdentifier attribute="Label"/>
</context>
<context name="Inc_Expression" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
<DetectChar attribute="Symbol Separator" context="#pop" char=","/>
<DetectSpaces attribute="Normal Text" context="#pop"/>
<AnyChar attribute="Symbols" context="#stay" String="+-*/%?&amp;|&lt;&gt;^!=[]{}()"/>
<DetectChar attribute="String" context="SQ_String" char="'"/>
<DetectChar attribute="String" context="DQ_String" char="&quot;"/>
<keyword attribute="Data Registers" context="#stay" String="Data Registers"/>
<keyword attribute="Address Registers" context="#stay" String="Address Registers"/>
<keyword attribute="Control Registers" context="#stay" String="Control Registers"/>
<keyword attribute="FPU Registers" context="#stay" String="FPU Registers"/>
</context>
<context name="Constant_Number16" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Constant" context="#pop" String="[A-Fa-f0-9]+"/>
</context>
<context name="Constant_Number2" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Constant" context="#pop" String="[01]+"/>
</context>
<context name="Constant_Number8" attribute="Constant" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Constant" context="#pop" String="[0-7]+"/>
</context>
<context name="Number16" attribute="Hex" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Hex" context="#pop" String="[A-Fa-f0-9]+"/>
</context>
<context name="Number2" attribute="Binary" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Binary" context="#pop" String="[01]+"/>
</context>
<context name="Number8" attribute="Octal" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Octal" context="#pop" String="[0-7]+"/>
</context>
<context name="Label" attribute="Label" lineEndContext="#pop" fallthroughContext="#pop!EndLabel">
<DetectChar attribute="Label" context="Label2" char="."/>
</context>
<context name="Label2" attribute="Label" lineEndContext="#pop" fallthroughContext="#pop#pop!EndLabel">
<DetectIdentifier attribute="Label" context="#stay"/>
<DetectChar attribute="Label" context="#stay" char="."/>
</context>
<context name="LocalLabel" attribute="Local label" lineEndContext="#pop" fallthroughContext="#pop!EndLabel">
<DetectChar attribute="Local label" context="LocalLabel2" char="."/>
</context>
<context name="LocalLabel2" attribute="Local label" lineEndContext="#pop" fallthroughContext="#pop#pop!EndLabel">
<DetectIdentifier attribute="Local label" context="#stay"/>
<DetectChar attribute="Local label" context="#stay" char="."/>
</context>
<context name="EndLabel" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
<DetectChar attribute="Symbols" context="#stay" char=":"/>
<DetectSpaces attribute="Normal Text" context="#stay"/>
<keyword attribute="Instructions (CPU)" context="#pop!SuffixInstruction" String="Instructions (CPU)"/>
<keyword attribute="Branch Instructions (CPU)" context="SuffixInstruction" String="Branch Instructions (CPU)"/>
<keyword attribute="Instructions (FPU)" context="#pop!SuffixInstruction" String="Instructions (FPU)"/>
<keyword attribute="Directives" context="#pop!SuffixInstruction" String="Directives"/>
<DetectIdentifier attribute="Unknown Instructions" context="#pop!SuffixInstruction"/>
</context>
<context name="SQ_String" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="'"/>
<DetectChar attribute="Char" context="Escape" char="\"/>
</context>
<context name="DQ_String" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="&quot;"/>
<DetectChar attribute="Char" context="Escape" char="\"/>
</context>
<context name="Escape" attribute="Char" lineEndContext="#pop" fallthroughContext="#pop">
<AnyChar attribute="Char" context="#pop" String="bfnrt\'"/>
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces attribute="Comment"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
</contexts>
<itemDatas>
<!-- keywords -->
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Data Registers" defStyleNum="dsDataType"/>
<itemData name="Address Registers" defStyleNum="dsDataType"/>
<itemData name="Control Registers" defStyleNum="dsDataType"/>
<itemData name="FPU Registers" defStyleNum="dsDataType"/>
<itemData name="Instructions (CPU)" bold="true" defStyleNum="dsKeyword"/>
<itemData name="Instructions (FPU)" bold="true" defStyleNum="dsKeyword"/>
<itemData name="Branch Instructions (CPU)" bold="true" defStyleNum="dsControlFlow"/>
<itemData name="Unknown Instructions" defStyleNum="dsKeyword"/>
<itemData name="Directives" bold="true" defStyleNum="dsBuiltIn"/>
<!-- defined in contexts -->
<itemData name="Operand sizes (CPU)" bold="true" defStyleNum="dsKeyword"/>
<itemData name="Operand sizes (FPU)" bold="true" defStyleNum="dsKeyword"/>
<itemData name="Comment" italic="false" defStyleNum="dsComment"/>
<itemData name="Label" defStyleNum="dsFunction"/>
<itemData name="Local label" defStyleNum="dsFunction"/>
<itemData name="Constant" defStyleNum="dsConstant"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Binary" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Number" defStyleNum="dsDecVal"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Symbol Separator" defStyleNum="dsOperator"/>
<itemData name="Symbols" defStyleNum="dsOperator"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="0"/>
<comments>
<comment name="singleLine" start=";"/>
</comments>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Asm6502" version="7" kateversion="5.62" section="Assembler" extensions="*.asm" mimetype="text/x-asm6502">
<highlighting>
<list name="Directives">
<item>.align</item>
<item>.asc</item>
<item>.bss</item>
<item>.byt</item>
<item>.byte</item>
<item>.data</item>
<item>.db</item>
<item>.dsb</item>
<item>.dsw</item>
<item>.dw</item>
<item>.ende</item>
<item>.endm</item>
<item>.ends</item>
<item>.endst</item>
<item>.enum</item>
<item>.fopt</item>
<item>.incbin</item>
<item>.include</item>
<item>.macro</item>
<item>.memorymap</item>
<item>.org</item>
<item>.struct</item>
<item>.text</item>
<item>.word</item>
<item>.zero</item>
<item>db</item>
<item>dsb</item>
<item>dsw</item>
<item>dw</item>
<item>instanceof</item>
</list>
<list name="Branch Instructions">
<item>bcc</item>
<item>bcs</item>
<item>beq</item>
<item>bmi</item>
<item>bne</item>
<item>bpl</item>
<item>brk</item>
<item>bvc</item>
<item>bvs</item>
<item>jmp</item>
<item>jsr</item>
<item>rti</item>
<item>rts</item>
<!-- asm 65816 -->
<item>bra</item>
<item>brl</item>
<item>jml</item>
<item>jsl</item>
<item>rtl</item>
<item>cop</item>
<item>wai</item>
</list>
<list name="Instructions">
<item>adc</item>
<item>and</item>
<item>asl</item>
<item>bit</item>
<item>clc</item>
<item>cld</item>
<item>cli</item>
<item>clv</item>
<item>cmp</item>
<item>cpx</item>
<item>cpy</item>
<item>dec</item>
<item>dex</item>
<item>dey</item>
<item>eor</item>
<item>inc</item>
<item>inx</item>
<item>iny</item>
<item>lda</item>
<item>ldx</item>
<item>ldy</item>
<item>lsr</item>
<item>nop</item>
<item>ora</item>
<item>pha</item>
<item>php</item>
<item>pla</item>
<item>plp</item>
<item>rol</item>
<item>ror</item>
<item>sbc</item>
<item>sec</item>
<item>sed</item>
<item>sei</item>
<item>sta</item>
<item>stx</item>
<item>sty</item>
<item>tax</item>
<item>tay</item>
<item>tsx</item>
<item>txa</item>
<item>txs</item>
<item>tya</item>
<!-- asm 65816 -->
<item>bge</item>
<item>blt</item>
<item>dea</item>
<item>ina</item>
<item>lda.b</item>
<item>lda.w</item>
<item>ldx.b</item>
<item>ldx.w</item>
<item>ldy.b</item>
<item>ldy.w</item>
<item>mvn</item>
<item>pea</item>
<item>pei</item>
<item>phb</item>
<item>phd</item>
<item>phk</item>
<item>phx</item>
<item>phy</item>
<item>plb</item>
<item>pld</item>
<item>plx</item>
<item>ply</item>
<item>rep</item>
<item>sep</item>
<item>stz</item>
<item>tcd</item>
<item>txy</item>
<item>tyx</item>
<item>xba</item>
<item>xce</item>
</list>
<contexts>
<context name="Base" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Comment" context="Comment" char=";"/>
<RegExpr attribute="Label" context="AfterLabel" String="[a-zA-Z][a-zA-Z0-9._]*+:|[+-]+:"/>
<keyword attribute="Directive" context="Instruction" String="Directives" insensitive="1"/>
<keyword attribute="Instruction" context="Instruction" String="Instructions" insensitive="1"/>
<keyword attribute="Branch Instruction" context="Instruction" String="Branch Instructions" insensitive="1"/>
<DetectChar attribute="Directive" context="Directive" char="."/>
<DetectIdentifier attribute="Unknown Instruction" context="Instruction"/>
</context>
<context name="AfterLabel" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Instruction">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
<keyword attribute="Directive" context="#pop!Instruction" String="Directives" insensitive="1"/>
<keyword attribute="Instruction" context="#pop!Instruction" String="Instructions" insensitive="1"/>
<keyword attribute="Branch Instruction" context="#pop!Instruction" String="Branch Instructions" insensitive="1"/>
<DetectChar attribute="Directive" context="Directive" char="."/>
<DetectIdentifier attribute="Unknown Instruction" context="#pop!Instruction"/>
</context>
<context name="Instruction" attribute="Normal Text" lineEndContext="#pop">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
<DetectChar attribute="Hex" context="Number16" char="$"/>
<DetectChar attribute="Binary" context="Number2" char="%"/>
<DetectChar attribute="Octal" context="Number8" char="@"/>
<Int attribute="Decimal" context="#stay"/>
<DetectChar attribute="Symbol Separator" context="Register" char="," lookAhead="1"/>
<DetectChar attribute="Keyword" context="#stay" char="#"/>
<DetectIdentifier attribute="Normal Text" context="#stay"/>
<RangeDetect attribute="String" context="#stay" char="&quot;" char1="&quot;"/>
<AnyChar attribute="Operator" context="#stay" String="-+&lt;&gt;=\&amp;|^~"/>
</context>
<context name="Directive" attribute="Directive" lineEndContext="#pop" fallthroughContext="#pop!Instruction">
<DetectIdentifier attribute="Unknown Directive" context="#pop!Instruction"/>
</context>
<context name="Register" attribute="Normal Text" lineEndContext="#pop">
<Detect2Chars attribute="Keyword" context="#pop" char="," char1="X"/>
<Detect2Chars attribute="Keyword" context="#pop" char="," char1="Y"/>
<Detect2Chars attribute="Keyword" context="#pop" char="," char1="x"/>
<Detect2Chars attribute="Keyword" context="#pop" char="," char1="y"/>
<DetectChar attribute="Symbol Separator" context="#pop" char=","/>
</context>
<context name="Number16" attribute="Hex" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Hex" context="#pop" String="[A-Fa-f0-9]+"/>
</context>
<context name="Number2" attribute="Binary" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Binary" context="#pop" String="[01]+"/>
</context>
<context name="Number8" attribute="Octal" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Octal" context="#pop" String="[0-7]+"/>
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces attribute="Comment"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
</contexts>
<itemDatas>
<itemData name="Label" defStyleNum="dsFunction"/>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Instruction" defStyleNum="dsKeyword"/>
<itemData name="Unknown Instruction" defStyleNum="dsKeyword"/>
<itemData name="Branch Instruction" defStyleNum="dsControlFlow"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Directive" defStyleNum="dsDataType"/>
<itemData name="Unknown Directive" defStyleNum="dsDataType"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Binary" defStyleNum="dsBaseN"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Operator" defStyleNum="dsOperator"/>
<itemData name="Symbol Separator" defStyleNum="dsOperator"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start=";"/>
</comments>
<keywords casesensitive="1" weakDeliminator="." additionalDeliminator="#"/>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
You'll find the "Writing a Kate Highlighting XML File HOWTO" at http://kate.kde.org/doc/hlhowto.php
This is a template for 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).
Use it as the base for your own syntax files.
Look at language.dtd for some documentation of the allowed elements and their attributes.
There is also a description of how to validate your syntax file.
You'll find the "Writing a Kate Highlighting XML File HOWTO" at http://kate.kde.org/doc/hlhowto.php
-->
<language name="ASN.1" section="Markup" version="6" kateversion="5.0" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">
<highlighting>
<list name="keywords">
<item>DEFINITIONS</item>
<item>EXPORTS</item>
<item>IMPORTS</item>
<item>FROM</item>
<item>APPLICATION</item>
<item>PRIVATE</item>
<item>UNIVERSAL</item>
<item>DEFAULT</item>
<item>OPTIONAL</item>
<item>FALSE</item>
<item>TRUE</item>
<item>AUTOMATIC</item>
<item>CLASS</item>
<item>WITH</item>
<item>SIZE</item>
<item>TAGS</item>
</list>
<list name="types">
<item>BOOLEAN</item>
<item>INTEGER</item>
<item>OCTET</item>
<item>STRING</item>
<item>NULL</item>
<item>REAL</item>
<item>ENUMERATED</item>
<item>SEQUENCE</item>
<item>SET</item>
<item>CHOICE</item>
<item>OF</item>
<item>UNION</item>
<item>StringStore</item>
<item>GeneralString</item>
<item>IA5String</item>
<item>ISO64String</item>
<item>NumericString</item>
<item>PrintableString</item>
<item>T61String</item>
<item>TeletexString</item>
<item>UniversalString</item>
<item>UTF8String</item>
<item>VideotexString</item>
<item>VisibleString</item>
<item>DATE</item>
<item>DATE-TIME</item>
<item>DURATION</item>
<item>GeneralizedTime</item>
<item>UTCTime</item>
</list>
<contexts>
<context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
<keyword attribute="Keyword" context="#stay" String="keywords" />
<StringDetect attribute="Keyword" context="#stay" String="BEGIN" beginRegion="Block"/>
<StringDetect attribute="Keyword" context="#stay" String="END" endRegion="Block"/>
<keyword attribute="Data Type" context="#stay" String="types" />
<Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
<Detect2Chars attribute="Comment" context="Multiline Comment" char="/" char1="*" beginRegion="Comment"/>
<DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="BraceBlock"/>
<DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="BraceBlock"/>
<Int attribute="Decimal" context="#stay"/>
<DetectChar attribute="String" context="ctxString" char="&quot;"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Multiline Comment">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments"/>
</context>
<context attribute="String" lineEndContext="#stay" name="ctxString">
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="String" defStyleNum="dsString"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="--"/>
<comment name="multiLine" start="/*" end="*/" region="Comment"/>
</comments>
</general>
</language>
<!--
// kate: space-indent on; indent-width 2; replace-tabs on;
-->
@@ -0,0 +1,398 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="ASP" version="9" kateversion="5.44" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">
<highlighting>
<list name="control structures">
<item>select</item>
<item>case</item>
<item>end select</item>
<item>if</item>
<item>then</item>
<item>else</item>
<item>elseif</item>
<item>end if</item>
<item>while</item>
<item>do</item>
<item>until</item>
<item>loop</item>
<item>wend</item>
<item>for</item>
<item>each</item>
<item>to</item>
<item>in</item>
<item>next</item>
<item>exit</item>
<item>continue</item>
</list>
<list name="keywords">
<item>dim</item>
<item>redim</item>
<item>preserve</item>
<item>const</item>
<item>erase</item>
<item>nothing</item>
<item>set</item>
<item>new</item>
<item>me</item>
<item>function</item>
<item>sub</item>
<item>call</item>
<item>class</item>
<item>private</item>
<item>public</item>
<item>with</item>
<item>randomize</item>
<item>open</item>
<item>close</item>
<item>movenext</item>
<item>execute</item>
<item>eof</item>
<item>not</item>
<item>true</item>
<item>false</item>
<item>or</item>
<item>and</item>
<item>xor</item>
</list>
<list name="functions">
<item>response</item>
<item>write</item>
<item>redirect</item>
<item>end</item>
<item>request</item>
<item>form</item>
<item>querystring</item>
<item>servervariables</item>
<item>cookies</item>
<item>session</item>
<item>server</item>
<item>createobject</item>
<item>abs</item>
<item>array</item>
<item>asc</item>
<item>atn</item>
<item>cbool</item>
<item>cbyte</item>
<item>ccur</item>
<item>cdate</item>
<item>cdbl</item>
<item>chr</item>
<item>cint</item>
<item>clng</item>
<item>cos</item>
<item>csng</item>
<item>cstr</item>
<item>date</item>
<item>dateadd</item>
<item>DateDiff</item>
<item>DatePart</item>
<item>DateSerial</item>
<item>DateValue</item>
<item>Date</item>
<item>Day</item>
<item>Exp</item>
<item>Filter</item>
<item>Fix</item>
<item>FormatCurrency</item>
<item>FormatDateTime</item>
<item>FormatNumber</item>
<item>FormatPercent</item>
<item>GetObject</item>
<item>Hex</item>
<item>Hour</item>
<item>InputBox</item>
<item>InStr</item>
<item>InStrRev</item>
<item>Int</item>
<item>IsArray</item>
<item>IsDate</item>
<item>IsEmpty</item>
<item>IsNull</item>
<item>IsNumeric</item>
<item>IsObject</item>
<item>Join</item>
<item>LBound</item>
<item>LCase</item>
<item>Left</item>
<item>Len</item>
<item>LoadPicture</item>
<item>Log</item>
<item>LTrim</item>
<item>Mid</item>
<item>Minute</item>
<item>Month</item>
<item>MonthName</item>
<item>MsgBox</item>
<item>Now</item>
<item>Oct</item>
<item>Replace</item>
<item>RGB</item>
<item>Right</item>
<item>Rnd</item>
<item>Round</item>
<item>RTrim</item>
<item>ScriptEngine</item>
<item>ScriptEngineBuildVersion</item>
<item>ScriptEngineMajorVersion</item>
<item>ScriptEngineMinorVersion</item>
<item>Second</item>
<item>Sgn</item>
<item>Sin</item>
<item>Space</item>
<item>Split</item>
<item>Sqr</item>
<item>StrComp</item>
<item>StrReverse</item>
<item>String</item>
<item>Tan</item>
<item>Time</item>
<item>Timer</item>
<item>TimeSerial</item>
<item>TimeValue</item>
<item>Trim</item>
<item>TypeName</item>
<item>UBound</item>
<item>UCase</item>
<item>VarType</item>
<item>Weekday</item>
<item>WeekdayName</item>
<item>Year</item>
<item>Add</item>
<item>AddFolders</item>
<item>BuildPath</item>
<item>Clear</item>
<item>Close</item>
<item>Copy</item>
<item>CopyFile</item>
<item>CopyFolder</item>
<item>CreateFolder</item>
<item>CreateTextFile</item>
<item>Delete</item>
<item>DeleteFile</item>
<item>DeleteFolder</item>
<item>DriveExists</item>
<item>Exists</item>
<item>FileExists</item>
<item>FolderExists</item>
<item>GetAbsolutePathName</item>
<item>GetBaseName</item>
<item>GetDrive</item>
<item>GetDriveName</item>
<item>GetExtensionName</item>
<item>GetFile</item>
<item>GetFileName</item>
<item>GetFolder</item>
<item>GetParentFolderName</item>
<item>GetSpecialFolder</item>
<item>GetTempName</item>
<item>Items</item>
<item>item</item>
<item>Keys</item>
<item>Move</item>
<item>MoveFile</item>
<item>MoveFolder</item>
<item>OpenAsTextStream</item>
<item>OpenTextFile</item>
<item>Raise</item>
<item>Read</item>
<item>ReadAll</item>
<item>ReadLine</item>
<item>Remove</item>
<item>RemoveAll</item>
<item>Skip</item>
<item>SkipLine</item>
<item>Write</item>
<item>WriteBlankLines</item>
<item>WriteLine</item>
</list>
<contexts>
<context name="nosource" attribute="Normal Text" lineEndContext="#stay">
<IncludeRules context="find-aspsource" />
<RegExpr attribute="HTML Tag" context="aspsource" String="&lt;\s*script\s*language=&quot;VBScript&quot;[^&gt;]*&gt;" insensitive="true" />
<RegExpr attribute="HTML Tag" context="scripts" String="&lt;\s*script(?:\s|&gt;|$)" insensitive="true" />
<RegExpr attribute="HTML Tag" context="htmltag" String="&lt;\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />
<StringDetect attribute="HTML Comment" context="htmlcomment" String="&lt;!--" beginRegion="HTMLComment" />
</context>
<context name="find-aspsource" attribute="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="ASP Source" context="aspsource" char="&lt;" char1="%" beginRegion="ASPSource" />
</context>
<context name="aspsource" attribute="ASP Text" lineEndContext="#stay">
<Detect2Chars attribute="ASP Source" context="#pop" char="%" char1="&gt;" endRegion="ASPSource" />
<RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />
<DetectChar attribute="Comment" context="asp_onelinecomment" char="'" />
<DetectChar attribute="String" context="doublequotestring" char="&quot;" />
<DetectChar attribute="Keyword" context="#stay" char="&amp;" />
<RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Float attribute="Float" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />
<WordDetect attribute="Control Structures" context="#stay" String="elseif" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>
<WordDetect attribute="Control Structures" context="#stay" String="else" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>
<WordDetect attribute="Control Structures" context="#stay" String="if" insensitive="true" beginRegion="iffi1"/>
<WordDetect attribute="Control Structures" context="#stay" String="end if" insensitive="true" endRegion="iffi1"/>
<WordDetect attribute="Keyword" context="#stay" String="exit function" insensitive="true" />
<WordDetect attribute="Keyword" context="#stay" String="function" insensitive="true" beginRegion="funendfun1"/>
<WordDetect attribute="Keyword" context="#stay" String="end function" insensitive="true" endRegion="funendfun1"/>
<WordDetect attribute="Keyword" context="#stay" String="exit sub" insensitive="true" />
<WordDetect attribute="Keyword" context="#stay" String="sub" insensitive="true" beginRegion="subendsub1"/>
<WordDetect attribute="Keyword" context="#stay" String="end sub" insensitive="true" endRegion="subendsub1"/>
<WordDetect attribute="Keyword" context="#stay" String="class" insensitive="true" beginRegion="classendclass1"/>
<WordDetect attribute="Keyword" context="#stay" String="end class" insensitive="true" endRegion="classendclass1"/>
<WordDetect attribute="Control Structures" context="#stay" String="exit do" insensitive="true" />
<RegExpr attribute="Control Structures" context="#stay" String="\bdo(?:\s+while)?\b" insensitive="true" beginRegion="doloop1"/>
<WordDetect attribute="Control Structures" context="#stay" String="loop" insensitive="true" endRegion="doloop1"/>
<WordDetect attribute="Control Structures" context="#stay" String="exit while" insensitive="true" />
<WordDetect attribute="Control Structures" context="#stay" String="while" insensitive="true" beginRegion="whilewend1"/>
<WordDetect attribute="Control Structures" context="#stay" String="wend" insensitive="true" endRegion="whilewend1"/>
<WordDetect attribute="Control Structures" context="#stay" String="exit for" insensitive="true" />
<WordDetect attribute="Control Structures" context="#stay" String="for" insensitive="true" beginRegion="fornext1"/>
<WordDetect attribute="Control Structures" context="#stay" String="next" insensitive="true" endRegion="fornext1"/>
<WordDetect attribute="Control Structures" context="#stay" String="select case" insensitive="true" beginRegion="selcase1"/>
<WordDetect attribute="Control Structures" context="#stay" String="end select" insensitive="true" endRegion="selcase1"/>
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Control Structures" context="#stay" String="control structures" />
<keyword attribute="Function" context="#stay" String="functions" />
</context>
<context name="asp_onelinecomment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces />
<Detect2Chars context="#pop" char="%" char1="&gt;" lookAhead="true" />
<IncludeRules context="##Comments" />
</context>
<context name="doublequotestring" attribute="String" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="Escape Code" context="#stay" char="&quot;" char1="&quot;" />
<RegExpr attribute="Escape Code" context="#stay" String="\\[0-7]{1,3}|\\x[0-9A-Fa-f]{1,2}" />
<DetectChar attribute="String" context="#pop" char="&quot;" />
</context>
<context name="singlequotestring" attribute="String" lineEndContext="#stay">
<Detect2Chars attribute="Escape Code" context="#stay" char="'" char1="'"/>
<DetectChar attribute="String" context="#pop" char="'" />
</context>
<context name="htmltag" attribute="Identifier" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
<DetectChar attribute="HTML Tag" context="#pop" char="&gt;"/>
<IncludeRules context="find-aspsource" />
<DetectChar attribute="Identifier" context="identifiers" char="="/>
</context>
<context name="htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
<DetectSpaces />
<IncludeRules context="find-aspsource" />
<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTMLComment" />
<DetectChar attribute="Normal Text" context="identifiers" char="="/>
<IncludeRules context="##Comments" />
</context>
<context name="identifiers" attribute="Identifier" lineEndContext="#stay">
<DetectSpaces />
<RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
<DetectChar attribute="Types" context="types1" char="'" />
<DetectChar attribute="Types" context="types2" char="&quot;" />
</context>
<context name="types1" attribute="Types" lineEndContext="#stay">
<IncludeRules context="find-aspsource" />
<DetectChar attribute="Types" context="#pop#pop" char="'" />
</context>
<context name="types2" attribute="Types" lineEndContext="#stay">
<IncludeRules context="find-aspsource" />
<DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
</context>
<context name="scripts" attribute="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="scripts_onelinecomment" char="/" char1="/" />
<Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" beginRegion="ScriptComment" />
<keyword attribute="Control Structures" context="#stay" String="control structures" />
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Function" context="#stay" String="functions" />
<IncludeRules context="find-aspsource" />
<RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />
<DetectChar attribute="String" context="doublequotestring" char="&quot;" />
<DetectChar attribute="String" context="singlequotestring" char="&#39;" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Float attribute="Float" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Brace1" />
<DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Brace1" />
<AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />
</context>
<context name="scripts_onelinecomment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces />
<RegExpr attribute="HTML Tag" context="#pop#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />
<IncludeRules context="##Comments" />
</context>
<context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="ScriptComment" />
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="ASP Text" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Function" defStyleNum="dsFunction" 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="Float" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="String" defStyleNum="dsString" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Control Structures" defStyleNum="dsControlFlow" spellChecking="false" />
<itemData name="Escape Code" defStyleNum="dsSpecialChar" spellChecking="false" />
<itemData name="Other" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="ASP Source" defStyleNum="dsDataType" bold="1" spellChecking="false" />
<itemData name="HTML Tag" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="HTML Comment" defStyleNum="dsComment" />
<itemData name="Identifier" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Types" defStyleNum="dsString" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="'" />
</comments>
<keywords casesensitive="0" weakDeliminator=""/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
@@ -0,0 +1,248 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!-- Regular expression constants: -->
<!ENTITY LETTER "A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\xff"> <!-- Latin-1 letters. -->
<!ENTITY IDENT "[&LETTER;_][&LETTER;0-9_']*"> <!-- ATS identifiers. -->
<!ENTITY ESC "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- ATS character code escapes. -->
<!ENTITY DEC "[0-9][0-9_]*"> <!-- Decimal digits with underscores. -->
]>
<language name="ATS" version="3" kateversion="5.0" section="Sources" extensions="*.dats;*.sats;*.hats" mimetype="" author="Kiwamu Okabe (kiwamu@debian.or.jp)" license="LGPL">
<highlighting>
<list name="keywords">
<item>abstype</item>
<item>abst0ype</item>
<item>absprop</item>
<item>absview</item>
<item>absvtype</item>
<item>absviewtype</item>
<item>absvt0ype</item>
<item>absviewt0ype</item>
<item>and</item>
<item>as</item>
<item>assume</item>
<item>begin</item>
<item>break</item>
<item>case</item>
<item>continue</item>
<item>classdec</item>
<item>datasort</item>
<item>datatype</item>
<item>dataprop</item>
<item>dataview</item>
<item>datavtype</item>
<item>dataviewtype</item>
<item>do</item>
<item>dynload</item>
<item>else</item>
<item>end</item>
<item>exception</item>
<item>extern</item>
<item>extype</item>
<item>extval</item>
<item>if</item>
<item>in</item>
<item>infix</item>
<item>infixl</item>
<item>infixr</item>
<item>prefix</item>
<item>postfix</item>
<item>let</item>
<item>local</item>
<item>macdef</item>
<item>macrodef</item>
<item>nonfix</item>
<item>overload</item>
<item>of</item>
<item>op</item>
<item>rec</item>
<item>scase</item>
<item>sif</item>
<item>sortdef</item>
<item>sta</item>
<item>stacst</item>
<item>stadef</item>
<item>stavar</item>
<item>staload</item>
<item>symelim</item>
<item>symintr</item>
<item>then</item>
<item>try</item>
<item>tkindef</item>
<item>type</item>
<item>typedef</item>
<item>propdef</item>
<item>viewdef</item>
<item>vtypedef</item>
<item>viewtypedef</item>
<item>val</item>
<item>prval</item>
<item>var</item>
<item>prvar</item>
<item>when</item>
<item>where</item>
<item>for</item>
<item>while</item>
<item>with</item>
<item>withtype</item>
<item>withprop</item>
<item>withview</item>
<item>withvtype</item>
<item>withviewtype</item>
</list>
<list name="special keywords">
<item>$arrpsz</item>
<item>$arrptrsize</item>
<item>$delay</item>
<item>$ldelay</item>
<item>$effmask</item>
<item>$effmask_ntm</item>
<item>$effmask_exn</item>
<item>$effmask_ref</item>
<item>$effmask_wrt</item>
<item>$effmask_all</item>
<item>$extern</item>
<item>$extkind</item>
<item>$extype</item>
<item>$extype_struct</item>
<item>$extval</item>
<item>$lst</item>
<item>$lst_t</item>
<item>$lst_vt</item>
<item>$list</item>
<item>$list_t</item>
<item>$list_vt</item>
<item>$rec</item>
<item>$rec_t</item>
<item>$rec_vt</item>
<item>$record</item>
<item>$record_t</item>
<item>$record_vt</item>
<item>$tup</item>
<item>$tup_t</item>
<item>$tup_vt</item>
<item>$tuple</item>
<item>$tuple_t</item>
<item>$tuple_vt</item>
<item>$raise</item>
<item>$showtype</item>
<item>$myfilename</item>
<item>$mylocation</item>
<item>$myfunction</item>
<item>#assert</item>
<item>#define</item>
<item>#elif</item>
<item>#elifdef</item>
<item>#elifndef</item>
<item>#else</item>
<item>#endif</item>
<item>#error</item>
<item>#if</item>
<item>#ifdef</item>
<item>#ifndef</item>
<item>#include</item>
<item>#print</item>
<item>#then</item>
<item>#undef</item>
</list>
<list name="function keywords">
<item>fn</item>
<item>fnx</item>
<item>fun</item>
<item>prfn</item>
<item>prfun</item>
<item>praxi</item>
<item>castfn</item>
<item>implmnt</item>
<item>implement</item>
<item>primplmnt</item>
<item>primplement</item>
<item>lam</item>
<item>llam</item>
<item>fix</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<StringDetect attribute="Comment" context="Rest-of-file Comment" String="////" beginRegion="comment" />
<Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
<Detect2Chars attribute="Comment" context="Multiline C-style Comment" char="/" char1="*" beginRegion="Comment"/>
<Detect2Chars attribute="Comment" context="Singleline C++ style Comment" char="/" char1="/"/>
<Detect2Chars attribute="Termination Metrics" context="Termination Metrics Context" char="." char1="&lt;" />
<RegExpr attribute="Constructor" context="#stay" String="`\s*&IDENT;"/>
<!-- Identifiers and keywords. -->
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Function Keyword" context="Function Keyword Context" String="function keywords" />
<keyword attribute="Special Keyword" context="#stay" String="special keywords" />
<RegExpr attribute="Identifier" context="#stay" String="&IDENT;" />
<!-- Numeric constants. -->
<!-- Note that they may contain underscores. -->
<RegExpr attribute="Hexadecimal" context="#stay" String="~?0[xX][0-9A-Fa-f_]+" />
<RegExpr attribute="Float" context="#stay" String="~?&DEC;((\.(&DEC;)?([eE][-+]?&DEC;)?)|([eE][-+]?&DEC;))" />
<RegExpr attribute="Decimal" context="#stay" String="~?&DEC;" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Rest-of-file Comment"/>
<context attribute="Comment" lineEndContext="#stay" name="Multiline Comment">
<!-- Support for nested comments -->
<Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />
<Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Multiline C-style Comment">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="Singleline C++ style Comment">
<IncludeRules context="##Comments" />
</context>
<context attribute="Termination Metrics" lineEndContext="#stay" name="Termination Metrics Context">
<Detect2Chars attribute="Termination Metrics" context="#pop" char="&gt;" char1="." />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Function Keyword Context">
<DetectChar attribute="Normal Text" context="#pop" char="=" />
<DetectChar attribute="Universal" context="Universal Context" char="{" />
<DetectChar attribute="Existential" context="Existential Context" char="[" />
<IncludeRules context="Normal"/>
</context>
<context attribute="Universal" lineEndContext="#stay" name="Universal Context">
<DetectChar attribute="Universal" context="#pop" char="}" />
</context>
<context attribute="Existential" lineEndContext="#stay" name="Existential Context">
<DetectChar attribute="Existential" context="#pop" char="]" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Identifier" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Function Keyword" defStyleNum="dsKeyword"/>
<itemData name="Special Keyword" defStyleNum="dsDataType"/>
<itemData name="Termination Metrics" defStyleNum="dsDataType"/>
<itemData name="Universal" defStyleNum="dsDataType"/>
<itemData name="Existential" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Hexadecimal" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Constructor" defStyleNum="dsDataType"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" />
<comments>
<comment name="singleLine" start="//" />
<comment name="multiLine" start="(*" end="*)" region="comment" />
</comments>
</general>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,289 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="AWK" version="6" kateversion="5.0" section="Scripts"
extensions="*.awk" mimetype="text/x-awk" indenter="cstyle"
license="LGPL">
<!-- patched by igli#kate@irc:chat.freenode.net -->
<highlighting>
<list name="controlflow">
<item>if</item>
<item>else</item>
<item>while</item>
<item>do</item>
<item>for</item>
<item>break</item>
<item>continue</item>
<item>return</item>
<item>switch</item>
<item>case</item>
<item>default</item>
<item>exit</item>
</list>
<list name="keywords">
<item>in</item>
<item>delete</item>
<item>print</item>
<item>printf</item>
<item>getline</item>
<item>function</item>
<item>next</item>
<item>nextfile</item>
<item>@include</item>
<item>@load</item>
</list>
<list name="builtins">
<item>ARGC</item>
<item>ARGIND</item>
<item>ARGV</item>
<item>BINMODE</item>
<item>CONVFMT</item>
<item>ENVIRON</item>
<item>ERRNO</item>
<item>FIELDWIDTHS</item>
<item>FILENAME</item>
<item>FNR</item>
<item>FPAT</item>
<item>FS</item>
<item>FUNCTAB</item>
<item>IGNORECASE</item>
<item>LINT</item>
<item>NF</item>
<item>NR</item>
<item>OFMT</item>
<item>OFS</item>
<item>ORS</item>
<item>PREC</item>
<item>PROCINFO</item>
<item>ROUNDMODE</item>
<item>RS</item>
<item>RT</item>
<item>RSTART</item>
<item>RLENGTH</item>
<item>SUBSEP</item>
<item>SYMTAB</item>
<item>TEXTDOMAIN</item>
</list>
<list name="functions">
<!-- I/O -->
<item>close</item>
<item>fflush</item>
<item>system</item>
<!-- Arithmetic -->
<item>atan2</item>
<item>cos</item>
<item>exp</item>
<item>int</item>
<item>log</item>
<item>rand</item>
<item>sin</item>
<item>sqrt</item>
<item>srand</item>
<!-- String -->
<item>asort</item>
<item>asorti</item>
<item>gensub</item>
<item>gsub</item>
<item>index</item>
<item>length</item>
<item>match</item>
<item>patsplit</item>
<item>split</item>
<item>sprintf</item>
<item>strtonum</item>
<item>sub</item>
<item>substr</item>
<item>tolower</item>
<item>toupper</item>
<!-- Time -->
<item>mktime</item>
<item>strftime</item>
<item>systime</item>
<!-- Bit Manipulationse -->
<item>and</item>
<item>compl</item>
<item>lshift</item>
<item>or</item>
<item>rshift</item>
<item>xor</item>
<!-- Type -->
<item>isarray</item>
<item>typeof</item>
<!-- Internationalization -->
<item>bindtextdomain</item>
<item>dcgettext</item>
<item>dcngettext</item>
</list>
<list name="special">
<item>BEGIN</item>
<item>BEGINFILE</item>
<item>END</item>
<item>ENDFILE</item>
</list>
<list name="charclass">
<item>alpha</item>
<item>alnum</item>
<item>blank</item>
<item>cntrl</item>
<item>digit</item>
<item>graph</item>
<item>lower</item>
<item>print</item>
<item>punct</item>
<item>space</item>
<item>upper</item>
<item>xdigit</item>
</list>
<contexts>
<!-- START CONTEXTS -->
<context name="Pattern" attribute="Normal" lineEndContext="#stay">
<DetectSpaces />
<DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />
<DetectChar char="}" attribute="Error" context="#stay"/>
<DetectChar char="/" attribute="Regex Op" firstNonSpace="true" context="Regex"/>
<IncludeRules context="base" />
<keyword String="special" attribute="Special" context="#stay"/>
</context>
<context name="Block" attribute="Normal" lineEndContext="#stay">
<DetectSpaces />
<DetectChar char="}" attribute="Symbol" context="#pop" endRegion="block" />
<DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />
<IncludeRules context="base" />
<keyword String="special" attribute="Error" context="#stay"/>
</context>
<context name="base" attribute="Normal" lineEndContext="#stay">
<DetectChar char=")" attribute="Symbol" context="#stay"/>
<DetectChar char="(" attribute="Symbol" context="Match"/>
<AnyChar String="=~" attribute="Operator" context="Match"/>
<DetectChar char="," attribute="Separator Symbol" context="ArgSep"/>
<DetectChar char="&quot;" attribute="String" context="String"/>
<DetectChar char="#" attribute="Comment" context="Comment"/>
<AnyChar String="@!%&amp;*+-/:&lt;&gt;?^|" attribute="Operator" context="#stay"/>
<keyword String="controlflow" attribute="ControlFlow" context="#stay"/>
<keyword String="keywords" attribute="Keyword" context="#stay"/>
<keyword String="builtins" attribute="Builtin" context="#stay"/>
<keyword String="functions" attribute="Function" context="#stay"/>
<Float attribute="Float" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<RegExpr String="\$[A-Za-z0-9_]+" attribute="Field" context="#stay"/>
<DetectChar char=";" attribute="Separator Symbol" context="#stay"/>
</context>
<context name="ArgSep" attribute="Normal" lineEndContext="#stay"
fallthrough="true" fallthroughContext="#pop">
<IncludeRules context="Match" />
</context>
<context name="String" attribute="String" lineEndContext="#stay">
<DetectChar char="&quot;" attribute="String" context="#pop"/>
<DetectChar char="\" context="Escape" attribute="Escape"/>
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments"/>
</context>
<context name="Escape" attribute="Error" lineEndContext="#pop">
<RegExpr String="[\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>
<RegExpr String="." attribute="Error" context="#pop"/>
</context>
<context name="Match" attribute="Normal" lineEndContext="#pop"
fallthrough="true" fallthroughContext="#pop">
<DetectSpaces />
<DetectChar char="/" attribute="Regex Op" context="#pop!Regex"/>
</context>
<context name="Regex" attribute="Regex" lineEndContext="#pop">
<IncludeRules context="regex"/>
<DetectChar char="/" context="#pop" attribute="Regex Op"/>
</context>
<context name="regex" attribute="Normal" lineEndContext="#stay">
<Detect2Chars char="[" char1="^" context="RegexChar" attribute="Regex Op"/>
<DetectChar char="[" context="RegexChar" attribute="Regex Op"/>
<AnyChar String="^$.+?*()|" context="#stay" attribute="Regex Op"/>
<DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>
</context>
<context name="Regex Escape" attribute="Normal" lineEndContext="#pop">
<RegExpr String="[&lt;&gt;sSwW`'[\]{}^$.+?*()|/\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>
<RegExpr String="." attribute="Regex" context="#pop"/>
</context>
<context name="RegexChar" attribute="Regex" lineEndContext="#pop"
fallthrough="true" fallthroughContext="InChar">
<AnyChar String="-]" context="InChar" attribute="Regex"/>
</context>
<context name="InChar" attribute="Regex" lineEndContext="#pop#pop">
<Detect2Chars char="-" char1="]" context="InCharEnd" attribute="Regex" lookAhead="true"/>
<DetectChar char="-" context="#stay" attribute="Regex Op"/>
<DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>
<DetectChar char="[" context="CharClassSelect" attribute="Regex" lookAhead="true"/>
<DetectChar char="]" context="#pop#pop" attribute="Regex Op"/>
</context>
<context name="InCharEnd" attribute="Regex Op" lineEndContext="#stay">
<DetectChar char="-" context="#stay" attribute="Regex"/>
<DetectChar char="]" context="#pop#pop#pop" attribute="Regex Op"/>
</context>
<context name="CharClassSelect" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
<Detect2Chars char="[" char1=":" context="#pop!CharClass" attribute="CharClass"/>
<Detect2Chars char="[" char1="." context="#pop!CollatingSymbols" attribute="CharClass"/>
<Detect2Chars char="[" char1="=" context="#pop!EquivalenceClass" attribute="CharClass"/>
<DetectChar char="[" context="#pop" attribute="Regex"/>
</context>
<context name="CharClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
<keyword String="charclass" attribute="CharClass" context="#stay"/>
<Detect2Chars char=":" char1="]" attribute="CharClass" context="#pop"/>
<DetectChar char="]" attribute="Error" context="#pop"/>
</context>
<context name="CollatingSymbols" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
<Detect2Chars char="." char1="]" attribute="CharClass" context="#pop"/>
<DetectChar char="]" attribute="Error" context="#pop"/>
</context>
<context name="EquivalenceClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
<Detect2Chars char="=" char1="]" attribute="CharClass" context="#pop"/>
<DetectChar char="]" attribute="Error" context="#pop"/>
</context>
<!-- END OF CONTEXTS -->
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal"/>
<itemData name="ControlFlow" defStyleNum="dsControlFlow" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="false"/>
<itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Escape" defStyleNum="dsSpecialChar"/>
<itemData name="Field" defStyleNum="dsDataType"/>
<itemData name="Error" defStyleNum="dsError"/>
<itemData name="Special" defStyleNum="dsControlFlow" bold="0"/>
<itemData name="Operator" defStyleNum="dsOperator"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Separator Symbol" defStyleNum="dsOperator"/>
<itemData name="Regex" defStyleNum="dsSpecialString" spellChecking="false"/>
<itemData name="Regex Op" defStyleNum="dsOthers"/>
<itemData name="CharClass" defStyleNum="dsExtension" spellChecking="false"/>
<itemData name="Custom" defStyleNum="dsOthers" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#"/>
</comments>
<keywords casesensitive="1" weakDeliminator="@"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY stringVariable "[a-zA-Z0-9\-]+">
<!ENTITY fieldFormat "[a-zA-Z0-9\-_\.]+">
<!ENTITY latexCmd "\\([a-zA-Z@]+|[^ ])">
<!ENTITY refKeyFormat "[a-zA-Z0-9_@\\-\\:]+"> <!--taken from kile 2.0.3-->
]>
<language name="BibTeX" version="5" kateversion="5.0" extensions="*.bib" section="Markup" mimetype="text/x-bib" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL">
<highlighting>
<list name="kw_entry">
<item>@article</item>
<item>@book</item>
<item>@booklet</item>
<item>@conference</item>
<item>@collection</item>
<item>@electronic</item>
<item>@inbook</item>
<item>@incollection</item>
<item>@inproceedings</item>
<item>@manual</item>
<item>@mastersthesis</item>
<item>@misc</item>
<item>@online</item>
<item>@patent</item>
<item>@periodical</item>
<item>@proceedings</item>
<item>@report</item>
<item>@phdthesis</item>
<item>@set</item>
<item>@thesis</item>
<item>@techreport</item>
<item>@unpublished</item>
<item>@www</item>
<item>@person</item> <!--all three from the directory package-->
<item>@company</item>
<item>@place</item>
</list>
<contexts>
<context name="Normal" attribute="Comment" lineEndContext="#stay">
<keyword String="kw_entry" attribute="Entry" context="Entry"/>
<StringDetect String="@string" attribute="Command" insensitive="true" context="StringCommand"/>
<StringDetect String="@preamble" attribute="Command" insensitive="true" context="PreambleCommand"/>
<StringDetect String="@comment" attribute="Comment" insensitive="true" context="#stay"/> <!--nothing special needed here-->
</context>
<context name="PreambleCommand" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#stay" >
<DetectChar char="{" context="CurlyBracket" />
</context>
<context name="StringCommand" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#stay" >
<DetectChar char="{" context="CurlyBracket" />
<RegExpr String="&stringVariable;" attribute="String" context="CurlyBracket"/>
</context>
<context name="Entry" attribute="Normal Text" lineEndContext="#stay">
<DetectChar char="{" context="#stay" beginRegion="block" />
<RegExpr String="&refKeyFormat;" attribute="Ref Key" context="#stay"/>
<DetectChar char="," context="Field"/>
<DetectChar char="}" attribute="Normal Text" context="#pop" endRegion="block" />
</context>
<context name="Field" attribute="Normal Text" lineEndContext="#stay">
<RegExpr String="&fieldFormat;" attribute="Field" firstNonSpace="true"/>
<DetectSpaces/>
<DetectChar char="=" context="#stay"/>
<DetectChar char="{" context="CurlyBracket"/>
<DetectChar char="}" context="#pop" lookAhead="true"/>
<DetectChar char="&quot;" attribute="Normal Text" context="QuotedText"/>
<AnyChar String=",#" context="#stay"/> <!-- # is the bibtex string concatenate character -->
<RegExpr String="[0-9]+" context="#stay"/>
<RegExpr String="&stringVariable;" attribute="String" /> <!-- assume this is a variable created with @String -->
<RegExpr String="." attribute="Error" context="#stay"/> <!--this rule catches all errors-->
</context>
<context name="CurlyBracket" attribute="Normal Text" lineEndContext="#stay">
<DetectChar char="{" context="CurlyBracket"/>
<RegExpr String="&latexCmd;" attribute="LatexCommand" context="#stay"/>
<LineContinue char="}" context="#pop#pop"/>
<DetectChar char="}" context="#pop"/>
</context>
<context name="QuotedText" attribute="String" lineEndContext="#stay">
<DetectChar char="&quot;" attribute="Normal Text" context="#pop"/>
<RegExpr String="&latexCmd;" attribute="LatexCommand" context="#stay"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Entry" defStyleNum="dsVariable" spellChecking="false"/>
<itemData name="Command" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Field" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Ref Key" defStyleNum="dsOthers" spellChecking="false"/>
<itemData name="LatexCommand" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment" spellChecking="false"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString" spellChecking="true"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="0" weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
</general>
</language>
@@ -0,0 +1,232 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;${}@-]*">
<!ENTITY parens "\(\s*\)">
<!ENTITY eos "(?=$|\s)"> <!-- eol or space following -->
]>
<!--
====================================================================
Bitbake syntax highlighting file for the Kate and QtCreator
====================================================================
Author: Ivan Koveshnikov
Changes by Mark Nauwelaerts
-->
<language name="Bitbake" section="Sources"
version="12" kateversion="5.79"
extensions="*.bb;*.bbappend;*.bbclass;*.inc"
license="GPL" author="Ivan Koveshnikov">
<highlighting>
<list name="keywords">
<item>after</item>
<item>before</item>
<item>python</item>
<item>branch</item>
<item>bareclone</item>
<item>protocol</item>
<item>name</item>
<item>if</item>
<item>fi</item>
<item>then</item>
<item>rm</item>
<item>ln</item>
<item>cp</item>
<item>for</item>
<item>done</item>
<item>cat</item>
</list>
<list name="oe_functions">
<item>do_build</item>
<item>do_compile</item>
<item>do_compile_append</item>
<item>do_compile_prepend</item>
<item>do_compile_ptest_base</item>
<item>do_configure</item>
<item>do_configure_append</item>
<item>do_configure_prepend</item>
<item>do_configure_ptest_base</item>
<item>do_deploy</item>
<item>do_fetch</item>
<item>do_install</item>
<item>do_install_append</item>
<item>do_install_prepend</item>
<item>do_install_ptest_base</item>
<item>do_package</item>
<item>do_package_qa</item>
<item>do_package_write_deb</item>
<item>do_package_write_ipk</item>
<item>do_package_write_rpm</item>
<item>do_package_write_tar</item>
<item>do_packagedata</item>
<item>do_patch</item>
<item>do_populate_lic</item>
<item>do_populate_sdk</item>
<item>do_populate_sysroot</item>
<item>do_rm_work</item>
<item>do_rm_work_all</item>
<item>do_unpack</item>
<item>do_checkuri</item>
<item>do_checkuriall</item>
<item>do_clean</item>
<item>do_cleanall</item>
<item>do_cleansstate</item>
<item>do_devshell</item>
<item>do_fetchall</item>
<item>do_listtasks</item>
<item>do_package_index</item>
<item>do_bootimg</item>
<item>do_bundle_initramfs</item>
<item>do_rootfs</item>
<item>do_testimage</item>
<item>do_testimage_auto</item>
<item>do_vmdkimg</item>
<item>do_compile_kernelmodules</item>
<item>do_diffconfig</item>
<item>do_kernel_checkout</item>
<item>do_kernel_configcheck</item>
<item>do_kernel_configme</item>
<item>do_kernel_link_vmlinux</item>
<item>do_menuconfig</item>
<item>do_savedefconfig</item>
<item>do_sizecheck</item>
<item>do_strip</item>
<item>do_uboot_mkimage</item>
<item>do_validate_branches</item>
<item>do_generate_qt_config_file</item>
<item>do_spdx</item>
<item>oe_runmake</item>
<item>export</item>
<item>install</item>
<item>kernel_configme</item>
<item>validate_branches</item>
</list>
<list name="dependencies">
<item>inherit</item>
<item>include</item>
<item>require</item>
<item>addtask</item>
<item>deltask</item>
<item>addhandler</item>
<item>EXPORT_FUNCTIONS</item>
</list>
<contexts>
<context name="Normal Text" attribute="Normal Text" lineEndContext="#pop" >
<DetectSpaces/>
<DetectChar context="bbComment" char="#" />
<!-- detect sub-context before marked as keyword -->
<RegExpr context="pbfunction" String="^\s*python\s+&funcname;\s*&parens;" lookAhead="true" column="0" />
<RegExpr context="pfunction" String="^def\s+&funcname;\s*\(.*\)\s*:&eos;" lookAhead="true" column="0" minimal="true" />
<RegExpr context="function" String="^\s*&funcname;\s*&parens;" lookAhead="true" column="0" />
<IncludeRules context="keywords" />
<DetectChar attribute="String" context="bbString" char="&quot;" />
<RegExpr attribute="Variable" context="#stay" String="\$\{[A-Za-z0-9_-]+\}" />
<RegExpr attribute="Keyword" context="#stay" String="(?:[A-Z]+)[0-9_]*" />
</context>
<!-- used for include -->
<context name="keywords" attribute="Normal Text" lineEndContext="#stay">
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="OEFunction" context="#stay" String="oe_functions" />
<keyword attribute="Dependency" context="#stay" String="dependencies" />
</context>
<!-- bitbake shell function -->
<context name="function" attribute="Normal Text" lineEndContext="#stay">
<IncludeRules context="keywords" />
<RegExpr attribute="Function" context="#stay" String="&funcname;\s*&parens;" />
<DetectChar char="{" context="bash" beginRegion="function" />
</context>
<context name="bash" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Command##Bash">
<DetectChar attribute="Keyword" char="}" context="#pop#pop" endRegion="function" />
<IncludeRules context="##Bash" />
</context>
<!-- bitbake python function -->
<context name="pbfunction" attribute="Normal Text" lineEndContext="#stay">
<IncludeRules context="keywords" />
<RegExpr attribute="Function" context="#stay" String="&funcname;\s*&parens;" />
<DetectChar char="{" context="python" beginRegion="function" />
</context>
<!-- (internal) python function -->
<context name="pfunction" attribute="Normal Text" lineEndContext="python">
<WordDetect attribute="Keyword" String="def" />
<Detect2Chars char=")" char1=":" context="python" beginRegion="function" />
</context>
<context name="python" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Keyword" char="}" context="#pop#pop" endRegion="function" />
<RegExpr String="^\w" column="0" context="#pop#pop" endRegion="function" lookAhead="true" />
<IncludeRules context="##Python" />
</context>
<context name="bbString" attribute="String" lineEndContext="bbError" >
<keyword attribute="Keyword" context="#stay" String="keywords" />
<DetectChar attribute="String" context="#pop" char="&quot;" />
<LineContinue attribute="Escape" context="#stay" />
<AnyChar attribute="Normal Text" context="#stay" String="=|;," />
<RegExpr attribute="BBFunction" context="#stay" String="\$\{@[a-zA-Z0-9._\-\(\), &quot;/]+\}" />
<RegExpr attribute="Variable" context="#stay" String="\$\{[A-Za-z0-9_-]+\}" />
</context>
<context name="bbComment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
<context name="bbError" attribute="Error" lineEndContext="#stay" >
<DetectChar attribute="Error" context="#pop" char="&quot;" />
</context>
</contexts>
<itemDatas>
<!--
dsNormal, used for normal text.
dsKeyword, used for keywords.
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.
dsChar, used for a character.
dsString, used for strings.
dsComment, used for comments.
dsOthers, used for other things.
dsAlert, used for warning messages.
dsFunction, used for function calls.
dsRegionMarker, used for region markers.
dsError, used for error highlighting and wrong syntax.
-->
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="String" defStyleNum="dsString" spellChecking="true" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Variable" defStyleNum="dsOthers" spellChecking="false" color="darkred" />
<itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
<itemData name="Dependency" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="BBFunction" defStyleNum="dsOthers" spellChecking="false" color="darkblue" />
<itemData name="OEFunction" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Function" defStyleNum="dsFunction" spellChecking="false" />
<itemData name="Escape" defStyleNum="dsOthers" spellChecking="false" color="grey" />
<itemData name="Error" defStyleNum="dsError" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#"/>
</comments>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="B-Method" version="3" kateversion="5.0" section="Scientific" extensions="*.mch;*.imp;*.ref" author="Ivo Anjo (knuckles@gmail.com)" license="LGPL">
<highlighting>
<list name="sections">
<item>MACHINE</item>
<item>SETS</item>
<item>CONSTANTS</item>
<item>PROPERTIES</item>
<item>PROMOTES</item>
<item>INCLUDES</item>
<item>USES</item>
<item>SEES</item>
<item>VARIABLES</item>
<item>INVARIANT</item>
<item>INITIALISATION</item>
<item>REFINEMENT</item>
<item>REFINES</item>
<item>CONSTRAINTS</item>
<item>IMPLEMENTATION</item>
<item>IMPORTS</item>
</list>
<list name="sectionsBlockStart">
<item>OPERATIONS</item>
</list>
<list name="sectionsBlockEnd">
<item>END</item>
</list>
<list name="operationSections">
<item>THEN</item>
<item>WHEN</item>
<item>ELSE</item>
<item>OR</item>
<item>WHERE</item>
<item>INVARIANT</item>
<item>DO</item>
<item>VARIANT</item>
<item>IN</item>
<item>ELSIF</item>
</list>
<list name="operationSectionsBlockStart">
<item>PRE</item>
<item>IF</item>
<item>ANY</item>
<item>LET</item>
<item>CHOICE</item>
<item>CASE</item>
<item>SELECT</item>
<item>VAR</item>
<item>WHILE</item>
<item>BEGIN</item>
</list>
<list name="operationSectionsBlockEnd">
<item>END</item>
</list>
<list name="types">
<item>NAT</item>
<item>NAT1</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
<keyword attribute="SectionKeyword" context="#stay" String="sections" column="0"/>
<keyword attribute="SectionKeyword" context="#stay" String="sectionsBlockStart" column="0" beginRegion="sectionsBlock"/>
<keyword attribute="SectionKeyword" context="#stay" String="sectionsBlockEnd" column="0" endRegion="sectionsBlock"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<Int attribute="Decimal" context="#stay"/>
<Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="Comment"/>
<keyword attribute="OperationKeyword" context="#stay" String="operationSections"/>
<keyword attribute="OperationKeyword" context="#stay" String="operationSectionsBlockStart" beginRegion="CodeBlock"/>
<keyword attribute="OperationKeyword" context="#stay" String="operationSectionsBlockEnd" endRegion="CodeBlock"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Comment">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>
<itemData name="SectionKeyword" defStyleNum="dsBuiltIn" spellChecking="0"/>
<itemData name="OperationKeyword" defStyleNum="dsControlFlow" spellChecking="0"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="0"/>
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="0"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="multiLine" start="/*" end="*/" region="Comment"/>
</comments>
<keywords casesensitive="1"/>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,305 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!-- Based on Python syntax highlighting v1.99 by Primoz Anzur, Paul Giannaros, Michael Bueker, Per Wigren -->
<!-- Also based on boo.lang from gtksourceview -->
<language name="Boo" version="10" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL">
<highlighting>
<list name="namespace">
<item>import</item>
<item>from</item>
<item>as</item>
<item>namespace</item>
</list>
<list name="operators">
<item>and</item>
<item>assert</item>
<item>in</item>
<item>is</item>
<item>not</item>
<item>or</item>
</list>
<list name="primitive">
<item>bool</item>
<item>byte</item>
<item>sbyte</item>
<item>double</item>
<item>decimal</item>
<item>single</item>
<item>short</item>
<item>ushort</item>
<item>int</item>
<item>char</item>
<item>uint</item>
<item>long</item>
<item>ulong</item>
<item>object</item>
<item>duck</item>
<item>string</item>
<item>regex</item>
<item>date</item>
<item>timespan</item>
</list>
<list name="definition">
<item>abstract</item>
<item>virtual</item>
<item>override</item>
<item>static</item>
<item>final</item>
<item>transient</item>
<item>macro</item>
<item>protected</item>
<item>private</item>
<item>public</item>
<item>internal</item>
<item>partial</item>
<item>class</item>
<item>struct</item>
<item>interface</item>
<item>enum</item>
<item>callable</item>
<item>of</item>
<item>def</item>
<item>constructor</item>
<item>destructor</item>
<item>do</item>
<item>get</item>
<item>set</item>
<item>event</item>
<item>return</item>
<item>yield</item>
</list>
<list name="boolean">
<item>true</item>
<item>false</item>
</list>
<list name="literals">
<item>null</item>
<item>self</item>
<item>super</item>
</list>
<list name="keywords">
<item>and</item>
<item>break</item>
<item>cast</item>
<item>continue</item>
<item>elif</item>
<item>else</item>
<item>except</item>
<item>ensure</item>
<item>for</item>
<item>given</item>
<item>goto</item>
<item>if</item>
<item>in</item>
<item>is</item>
<item>isa</item>
<item>not</item>
<item>or</item>
<item>otherwise</item>
<item>pass</item>
<item>raise</item>
<item>try</item>
<item>unless</item>
<item>when</item>
<item>while</item>
<item>ref</item>
</list>
<list name="builtins">
<item>assert</item>
<item>__eval__</item>
<item>__switch__</item>
<item>enumerate</item>
<item>filter</item>
<item>len</item>
<item>typeof</item>
<item>map</item>
<item>max</item>
<item>min</item>
<item>property</item>
<item>using</item>
<item>getter</item>
<item>required</item>
<item>lock</item>
<item>range</item>
<item>zip</item>
<item>checked</item>
<item>unchecked</item>
<item>rawArrayIndexing</item>
<item>normalArrayIndexing</item>
<item>print</item>
<item>array</item>
<item>matrix</item>
<item>yieldAll</item>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<keyword attribute="Preprocessor" String="namespace" context="#stay"/>
<keyword attribute="Definition Keyword" String="definition" context="#stay"/>
<keyword attribute="Operator" String="operators" context="#stay"/>
<keyword attribute="Flow Control Keyword" String="keywords" context="#stay"/>
<keyword attribute="Builtin Function" String="builtins" context="#stay"/>
<keyword attribute="Special Variable" String="literals" context="#stay"/>
<keyword attribute="Special Variable" String="boolean" context="#stay"/>
<keyword attribute="Data Type" String="primitive" context="#stay" />
<RegExpr attribute="Normal Text" String="[a-zA-Z_][a-zA-Z_0-9]+" 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"/>
<RegExpr attribute="Float" String="(?:[0-9]+\.[0-9]*|\.[0-9]+)(?:[eE][0-9]+)?" context="#stay"/>
<RegExpr attribute="Int" String="(?:[1-9][0-9]*(?:[eE][0-9]+)?|0)" context="#stay"/>
<RegExpr attribute="Long" String="[1-9][0-9]*(?:[eE][0-9.]+)?[Ll]" context="#stay"/>
<RegExpr attribute="Hex" String="0[Xx][0-9a-fA-F]+" context="#stay"/>
<RegExpr attribute="Octal" String="0[1-9][0-9]*" context="#stay"/>
<StringDetect attribute="Raw String" String="r'''" context="Raw Tripple A-string" insensitive="1"/>
<StringDetect attribute="Raw String" String="r&quot;&quot;&quot;" context="Raw Tripple Q-string" insensitive="1"/>
<Detect2Chars attribute="Raw String" char="r" char1="'" context="Raw A-string"/>
<Detect2Chars attribute="Raw String" char="R" char1="'" context="Raw A-string"/>
<Detect2Chars attribute="Raw String" char="r" char1="&quot;" context="Raw Q-string"/>
<Detect2Chars attribute="Raw String" char="R" char1="&quot;" context="Raw Q-string"/>
<DetectChar attribute="Comment" char="#" context="Comment"/>
<RegExpr attribute="Comment" String="^\s*u?'''" context="Tripple A-comment" beginRegion="Tripple A-region" column="0"/>
<RegExpr attribute="Comment" String="^\s*u?&quot;&quot;&quot;" context="Tripple Q-comment" beginRegion="Tripple Q-region" column="0"/>
<Detect2Chars attribute="Comment" char="/" char1="/" context="Comment SlashSlash"/>
<StringDetect attribute="String" String="'''" context="Tripple A-string" beginRegion="Tripple A-region"/>
<StringDetect attribute="String" String="&quot;&quot;&quot;" context="Tripple Q-string" beginRegion="Tripple Q-region"/>
<DetectChar attribute="String" char="'" context="Single A-string"/>
<DetectChar attribute="String" char="&quot;" context="Single Q-string"/>
<DetectChar attribute="Operator" char="(" context="parenthesised" beginRegion="parenthesis"/>
<DetectChar attribute="Operator" char=")" context="#pop" endRegion="parenthesis"/>
<Detect2Chars attribute="Operator" char="[" char1="|" context="Quasi-Quotation" beginRegion="qq"/>
<Detect2Chars attribute="Operator" char="|" char1="]" context="#pop" endRegion="qq"/>
<AnyChar attribute="Operator" String="+*/%|=;!&lt;&gt;!^&amp;~-" context="#stay"/>
</context>
<context name="parenthesised" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
<IncludeRules context="Normal" />
</context>
<context name="Quasi-Quotation" attribute="Operator" lineEndContext="#stay" noIndentationBasedFolding="true">
<IncludeRules context="Normal" />
</context>
<context name="Tripple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Tripple A-region"/>
<IncludeRules context="##Comments"/>
</context>
<context name="Tripple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
<HlCChar attribute="Comment" context="#stay"/>
<StringDetect attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
<IncludeRules context="##Comments"/>
</context>
<context name="Tripple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
<HlCStringChar attribute="String Char" context="#stay"/>
<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
<StringDetect attribute="String" String="'''" context="#pop" endRegion="Tripple A-region"/>
</context>
<context name="Raw Tripple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
<HlCStringChar attribute="Raw String" context="#stay"/>
<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
<StringDetect attribute="String" String="'''" context="#pop" endRegion="Tripple A-region"/>
</context>
<context name="Tripple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
<HlCStringChar attribute="String Char" context="#stay"/>
<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
</context>
<context name="Raw Tripple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
<HlCStringChar attribute="Raw String" context="#stay"/>
<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
</context>
<context name="Comment SlashSlash" attribute="Comment" lineEndContext="#pop" >
<LineContinue attribute="Comment" context="#stay"/>
<IncludeRules context="##Comments"/>
</context>
<context name="Single A-string" attribute="String" lineEndContext="#stay">
<HlCStringChar attribute="String Char" context="#stay"/>
<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
<DetectChar attribute="String" char="'" context="#pop"/>
</context>
<context name="Single Q-string" attribute="String" lineEndContext="#stay">
<HlCStringChar attribute="String Char" context="#stay"/>
<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
<DetectChar attribute="String" char="&quot;" context="#pop"/>
</context>
<context name="Raw A-string" attribute="Raw String" lineEndContext="#stay">
<HlCStringChar attribute="Raw String" context="#stay"/>
<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
<DetectChar attribute="Raw String" char="'" context="#pop"/>
</context>
<context name="Raw Q-string" attribute="Raw String" lineEndContext="#stay">
<HlCStringChar attribute="Raw String" context="#stay"/>
<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
<DetectChar attribute="Raw String" char="&quot;" context="#pop"/>
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Definition Keyword" defStyleNum="dsKeyword"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Operator" defStyleNum="dsOperator" />
<itemData name="String Substitution" defStyleNum="dsNormal"/>
<itemData name="Flow Control Keyword" defStyleNum="dsControlFlow"/>
<itemData name="Builtin Function" defStyleNum="dsDataType"/>
<itemData name="Special Variable" defStyleNum="dsOthers"/>
<itemData name="Preprocessor" defStyleNum="dsChar"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Long" defStyleNum="dsOthers"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Int" defStyleNum="dsDecVal"/>
<itemData name="Hex" defStyleNum="dsOthers"/>
<itemData name="Octal" defStyleNum="dsOthers"/>
<itemData name="Complex" defStyleNum="dsOthers"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Raw String" defStyleNum="dsVerbatimString"/>
</itemDatas>
</highlighting>
<general>
<folding indentationsensitive="1" />
<emptyLines>
<emptyLine regexpr="\s+"/>
<emptyLine regexpr="\s*#.*$"/>
</emptyLines>
<comments>
<comment name="singleLine" start="#" position="afterwhitespace"/>
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,842 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language
name="BrightScript"
section="Scripts"
extensions="*.brs"
version="11"
kateversion="5.0"
author="Daniel Levin (dendy.ua@gmail.com)"
license="MIT">
<highlighting>
<list name="library"><item>library</item></list>
<list name="function"><item>function</item></list>
<list name="endfunction"><item>endfunction</item></list>
<list name="sub"><item>sub</item></list>
<list name="endsub"><item>endsub</item></list>
<list name="as"><item>as</item></list>
<list name="exit"><item>exit</item></list>
<list name="if"><item>if</item></list>
<list name="endif"><item>endif</item></list>
<list name="then"><item>then</item></list>
<list name="else"><item>else</item></list>
<list name="elseif"><item>elseif</item></list>
<list name="while"><item>while</item></list>
<list name="endwhile"><item>endwhile</item></list>
<list name="exitwhile"><item>exitwhile</item></list>
<list name="for"><item>for</item></list>
<list name="endfor"><item>endfor</item></list>
<list name="each"><item>each</item></list>
<list name="in"><item>in</item></list>
<list name="to"><item>to</item></list>
<list name="step"><item>step</item></list>
<list name="next"><item>next</item></list>
<list name="print"><item>print</item></list>
<list name="return"><item>return</item></list>
<list name="dim"><item>dim</item></list>
<list name="stop"><item>stop</item></list>
<list name="goto"><item>goto</item></list>
<list name="try"><item>try</item></list>
<list name="endtry"><item>endtry</item></list>
<list name="catch"><item>catch</item></list>
<list name="throw"><item>throw</item></list>
<list name="m"><item>m</item></list>
<list name="top">
<item>top</item>
<item>global</item>
</list>
<list name="end_of_scope">
<item>then</item>
<item>end</item>
<item>exit</item>
</list>
<list name="unary">
<item>not</item>
</list>
<list name="builtin_functions">
<item>tab</item>
<item>pos</item>
<item>CreateObject</item>
<item>Type</item>
<item>GetGlobalAA</item>
<item>Box</item>
<item>Run</item>
<item>Eval</item>
<item>GetLastRunCompileError</item>
<item>GetLastRunRuntimeError</item>
<item>ObjFun</item>
</list>
<list name="utility_functions">
<item>Sleep</item>
<item>Wait</item>
<item>GetInterface</item>
<item>FindMemberFunction</item>
<item>UpTime</item>
<item>RebootSystem</item>
<item>ListDir</item>
<item>ReadAsciiFile</item>
<item>WriteAsciiFile</item>
<item>CopyFile</item>
<item>MoveFile</item>
<item>MatchFiles</item>
<item>DeleteFile</item>
<item>DeleteDirectory</item>
<item>CreateDirectory</item>
<item>FormatDrive</item>
<item>StrToI</item>
<item>RunGarbageCollector</item>
<item>ParseJson</item>
<item>FormatJson</item>
<item>Tr</item>
</list>
<list name="string_functions">
<item>UCase</item>
<item>LCase</item>
<item>Asc</item>
<item>Chr</item>
<item>Instr</item>
<item>Left</item>
<item>Len</item>
<item>Mid</item>
<item>Str</item>
<item>StrI</item>
<item>String</item>
<item>StringI</item>
<item>Val</item>
<item>Substitute</item>
</list>
<list name="math_functions">
<item>Abs</item>
<item>Atn</item>
<item>Cdbl</item>
<item>Cint</item>
<item>Cos</item>
<item>Csng</item>
<item>Exp</item>
<item>Fix</item>
<item>Int</item>
<item>Log</item>
<item>Rnd</item>
<item>Sgn</item>
<item>Sin</item>
<item>Sqr</item>
<item>Tan</item>
</list>
<list name="comments">
<item>rem</item>
</list>
<list name="types">
<item>invalid</item>
<item>void</item>
<item>dynamic</item>
<item>boolean</item>
<item>integer</item>
<item>longinteger</item>
<item>float</item>
<item>double</item>
<item>string</item>
<item>object</item>
<item>function</item>
<item>interface</item>
</list>
<list name="constants">
<item>true</item>
<item>false</item>
<item>invalid</item>
<item>LINE_NUM</item>
</list>
<contexts>
<!-- Contexts starting with @ are for inclusion only. -->
<context name="global" attribute="g" lineEndContext="#stay">
<DetectSpaces/>
<keyword String="library" attribute="import" context="library"/>
<IncludeRules context="@comment"/>
<IncludeRules context="@macro"/>
<IncludeRules context="@function"/>
<IncludeRules context="@sub"/>
</context>
<!-- Import statement, which might appear at the global context:
library "mylibname.brs"
-->
<context name="library" attribute="import" lineEndContext="#pop">
<DetectSpaces/>
<DetectChar char="&quot;" attribute="string" context="#pop!string"/>
</context>
<!-- Comments have higher priority over anything else. -->
<context name="@comment" attribute="g" lineEndContext="#stay">
<DetectSpaces/>
<DetectChar char="'" attribute="comment" context="comment"/>
<keyword String="comments" attribute="comment" context="comment"/>
</context>
<context name="comment" attribute="comment" lineEndContext="#pop">
<IncludeRules context="##Comments"/>
</context>
<!-- Macro statement starts with # and might appear anywhere in the code:
#if foo
...
#else
...
#endif
-->
<context name="@macro" attribute="g" lineEndContext="#stay">
<DetectChar char="#" attribute="macro" context="macro_line"/>
</context>
<context name="macro_line" attribute="macro" lineEndContext="#pop">
<IncludeRules context="@comment"/>
</context>
<!-- Colon starts a new line. -->
<context name="line_break" attribute="g" lineEndContext="#stay">
<IncludeRules context="@line_break"/>
</context>
<context name="@line_break" attribute="g" lineEndContext="#stay">
<DetectChar char=":" attribute="line_break" context="#pop"/>
</context>
<!-- Common rules for function and sub. -->
<context name="@code_end" attribute="g" lineEndContext="#stay">
<RegExpr String="end\s+(if|for|while)" insensitive="true" attribute="control"/>
</context>
<context name="arg_as_type" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<DetectIdentifier attribute="var" context="#pop!arg_params"/>
</context>
<context name="arg_params" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<keyword String="as" context="as_type" lookAhead="true"/>
<DetectChar char="=" attribute="assign" context="rvalue"/>
</context>
<context name="as_type" attribute="g" lineEndContext="#stay">
<keyword String="as" attribute="keyword" context="as_type_value"/>
</context>
<context name="as_type_value" attribute="g" lineEndContext="#stay">
<keyword String="types" attribute="type" context="#pop#pop"/>
<DetectIdentifier attribute="invalid" context="#pop#pop"/>
</context>
<!-- Inline lambda call for sub/function -->
<context name="inline_call" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<DetectChar char="(" attribute="scope" context="#pop!lvalue_call_args"/>
</context>
<!-- Regular function definition. -->
<context name="@function" attribute="g" lineEndContext="#stay">
<keyword String="function" attribute="keyword" context="function" beginRegion="function"/>
</context>
<context name="function" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="function_name">
</context>
<context name="function_name" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!function_code">
<DetectSpaces/>
<DetectIdentifier attribute="func" context="#pop!func_open_brace"/>
<DetectChar char="(" context="#pop!func_open_brace" lookAhead="true"/>
</context>
<context name="func_open_brace" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!function_code">
<DetectSpaces/>
<DetectChar char="(" attribute="scope" context="func_args"/>
</context>
<context name="func_args" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop!function_code">
<DetectSpaces/>
<DetectIdentifier context="arg_as_type" lookAhead="true"/>
<DetectChar char=")" attribute="scope" context="#pop#pop!function_ret"/>
<DetectChar char="," attribute="coma" context="arg_as_type"/>
</context>
<context name="function_ret" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!function_code">
<DetectChar char=" " context="#stay"/>
<keyword String="as" context="as_type" lookAhead="true"/>
</context>
<context name="function_code" attribute="g" lineEndContext="#stay">
<DetectSpaces/>
<RegExpr String="end\s+function" insensitive="true" context="#pop!function_solid_end" lookAhead="true"/>
<keyword String="endfunction" context="#pop!function_solid_end" lookAhead="true"/>
<IncludeRules context="@code"/>
</context>
<context name="function_solid_end" attribute="g" lineEndContext="#stay">
<StringDetect String="end" insensitive="true" attribute="keyword" context="#pop!function_end"/>
</context>
<context name="function_end" attribute="keyword" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
<DetectSpaces/>
<StringDetect String="function" insensitive="true" attribute="keyword" context="#pop#pop!inline_call" endRegion="function"/>
</context>
<!-- sub is a function with void return type. -->
<context name="@sub" attribute="g" lineEndContext="#stay">
<keyword String="sub" attribute="keyword" context="sub" beginRegion="sub"/>
</context>
<context name="sub" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="sub_name">
</context>
<context name="sub_name" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!sub_code">
<DetectSpaces/>
<DetectIdentifier attribute="func" context="#pop!sub_open_brace"/>
<DetectChar char="(" context="#pop!sub_open_brace" lookAhead="true"/>
</context>
<context name="sub_open_brace" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!sub_code">
<DetectSpaces/>
<DetectChar char="(" attribute="scope" context="sub_args"/>
</context>
<context name="sub_args" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop!sub_code">
<DetectSpaces/>
<DetectIdentifier context="arg_as_type" lookAhead="true"/>
<DetectChar char=")" attribute="scope" context="#pop#pop!sub_ret"/>
<DetectChar char="," attribute="coma" context="arg_as_type"/>
</context>
<context name="sub_ret" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!sub_code">
<DetectChar char=" " context="#stay"/>
<keyword String="as" context="as_type" lookAhead="true"/>
</context>
<context name="sub_code" attribute="g" lineEndContext="#stay">
<DetectSpaces/>
<RegExpr String="end\s+sub" insensitive="true" context="#pop!sub_solid_end" lookAhead="true"/>
<keyword String="endsub" context="#pop!sub_solid_end" lookAhead="true"/>
<IncludeRules context="@code"/>
</context>
<context name="sub_solid_end" attribute="g" lineEndContext="#stay">
<StringDetect String="end" insensitive="true" attribute="keyword" context="#pop!sub_end"/>
</context>
<context name="sub_end" attribute="keyword" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
<DetectSpaces/>
<StringDetect String="sub" insensitive="true" attribute="keyword" context="#pop#pop!inline_call" endRegion="sub"/>
</context>
<!-- @code represents execution body, including function and sub contents.
-->
<context name="@code" attribute="g" lineEndContext="#stay">
<IncludeRules context="@macro"/>
<IncludeRules context="@comment"/>
<IncludeRules context="@code_end"/>
<keyword String="print" attribute="print" context="print"/>
<keyword String="goto" attribute="keyword" context="goto"/>
<keyword String="return" attribute="control" context="rvalue"/>
<keyword String="stop" attribute="keyword"/>
<keyword String="dim" attribute="keyword" context="dim"/>
<keyword String="if" attribute="control" context="rvalue"/>
<keyword String="then" attribute="control"/>
<keyword String="else" attribute="control"/>
<keyword String="elseif" attribute="control"/>
<keyword String="endif" attribute="control"/>
<keyword String="while" attribute="control" context="rvalue"/>
<keyword String="endwhile" attribute="control"/>
<keyword String="exitwhile" attribute="control"/>
<keyword String="for" attribute="control" context="for"/>
<keyword String="endfor" attribute="control"/>
<keyword String="next" attribute="control"/>
<keyword String="exit" attribute="control" context="exit"/>
<keyword String="try" context="try_test" lookAhead="true"/>
<keyword String="throw" attribute="keyword" context="rvalue"/>
<DetectChar char=":" context="line_break" lookAhead="true"/>
<DetectIdentifier context="lvalue" lookAhead="true"/>
</context>
<context name="try_test" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!lvalue">
<RegExpr String="try\s*('|$)" context="#pop!try_begin" lookAhead="true"/>
</context>
<context name="try_begin" attribute="g" lineEndContext="#pop">
<DetectIdentifier attribute="keyword" context="#pop!try_body"/>
</context>
<context name="try_body" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<StringDetect String="end" insensitive="true" attribute="keyword" context="#pop!try_end"/>
<keyword String="endtry" attribute="keyword" context="#pop"/>
<keyword String="catch" context="catch_test" lookAhead="true"/>
<IncludeRules context="@code"/>
</context>
<context name="try_end" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<keyword String="try" attribute="keyword" context="#pop"/>
</context>
<context name="catch_test" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!lvalue">
<RegExpr String="catch\s*[a-zA-Z_]" attribute="control" context="#pop!catch_expr" lookAhead="true"/>
</context>
<context name="catch_expr" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<keyword String="catch" attribute="keyword" context="#pop!catch_var"/>
</context>
<context name="catch_var" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<DetectIdentifier attribute="var" context="#pop"/>
</context>
<context name="print" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="rvalue">
<AnyChar String=",;" attribute="coma"/>
<IncludeRules context="@line_break"/>
</context>
<context name="goto" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<DetectIdentifier attribute="label" context="#pop"/>
</context>
<context name="dim" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<DetectIdentifier attribute="var" context="#pop!dim_array"/>
<IncludeRules context="@comment"/>
</context>
<context name="dim_array" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<DetectChar char="[" attribute="operator" context="#pop!array"/>
<IncludeRules context="@comment"/>
</context>
<context name="for" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!for_var">
<DetectSpaces/>
<keyword String="each" attribute="control" context="#pop!for_each"/>
<IncludeRules context="@comment"/>
</context>
<context name="for_each" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<DetectIdentifier attribute="var" context="#pop!for_in"/>
<IncludeRules context="@comment"/>
</context>
<context name="for_in" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<keyword String="in" attribute="control" context="#pop!rvalue"/>
<IncludeRules context="@comment"/>
</context>
<context name="for_var" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="lvalue">
<DetectSpaces/>
<keyword String="to" attribute="control" context="#pop!for_to"/>
<IncludeRules context="@comment"/>
</context>
<context name="for_to" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="rvalue">
<DetectSpaces/>
<keyword String="step" attribute="control" context="#pop!rvalue"/>
</context>
<context name="exit" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<keyword String="for" attribute="control" context="#pop"/>
<keyword String="while" attribute="control" context="#pop"/>
<IncludeRules context="@comment"/>
</context>
<!-- Builtin functions are reserved keywords. They cannot be used as a local variable names.
Thus doing something like below is an error and will be highlighted with 'invalid':
eval = 1
foo = eval
It is still valid to use any word, including reserved ones, as an variable parameter:
foo.eval = 1
foo = bar.eval
foo.eval()
-->
<context name="@lvalue_builtin_functions" attribute="g" lineEndContext="#stay">
<keyword String="builtin_functions" context="#pop!lvalue_builtin_function" lookAhead="true"/>
</context>
<context name="lvalue_builtin_function" attribute="g" lineEndContext="#pop">
<RegExpr String="[a-zA-Z_][a-zA-Z0-1_]*\s*\(" context="#pop!lvalue_builtin_call" lookAhead="true"/>
<DetectIdentifier attribute="invalid" context="#pop"/>
</context>
<context name="lvalue_builtin_call" attribute="g" lineEndContext="#pop">
<DetectIdentifier attribute="builtin_func" context="#pop!lvalue_call_open_brace"/>
</context>
<context name="@rvalue_builtin_functions" attribute="g" lineEndContext="#stay">
<keyword String="builtin_functions" context="#pop!rvalue_builtin_function" lookAhead="true"/>
</context>
<context name="rvalue_builtin_function" attribute="g" lineEndContext="#pop">
<RegExpr String="[a-zA-Z_][a-zA-Z0-1_]*\s*\(" context="#pop!rvalue_builtin_call" lookAhead="true"/>
<DetectIdentifier attribute="invalid" context="#pop"/>
</context>
<context name="rvalue_builtin_call" attribute="g" lineEndContext="#pop">
<DetectIdentifier attribute="builtin_func" context="#pop!rvalue_call_open_brace"/>
</context>
<!-- Library functions have nothing special comparing to other functions. They just have different
highlighting colors. It is valid to shadow function with a variable with the same name,
although it is not recommended and might be considered as a warning by various linters.
-->
<context name="@lvalue_library_functions" attribute="g" lineEndContext="#stay">
<keyword String="utility_functions" context="#pop!lvalue_library_function" lookAhead="true"/>
<keyword String="string_functions" context="#pop!lvalue_library_function" lookAhead="true"/>
<keyword String="math_functions" context="#pop!lvalue_library_function" lookAhead="true"/>
</context>
<context name="lvalue_library_function" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!lvalue_var">
<RegExpr String="[a-zA-Z_][a-zA-Z0-1_]*\s*\(" context="#pop!lvalue_library_call" lookAhead="true"/>
</context>
<context name="lvalue_library_call" attribute="g" lineEndContext="#pop">
<DetectIdentifier attribute="library_func" context="#pop!lvalue_call_open_brace"/>
</context>
<context name="@rvalue_library_functions" attribute="g" lineEndContext="#stay">
<keyword String="utility_functions" context="#pop!rvalue_library_function" lookAhead="true"/>
<keyword String="string_functions" context="#pop!rvalue_library_function" lookAhead="true"/>
<keyword String="math_functions" context="#pop!rvalue_library_function" lookAhead="true"/>
</context>
<context name="rvalue_library_function" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!rvalue_var">
<RegExpr String="[a-zA-Z_][a-zA-Z0-1_]*\s*\(" context="#pop!rvalue_library_call" lookAhead="true"/>
</context>
<context name="rvalue_library_call" attribute="g" lineEndContext="#pop">
<DetectIdentifier attribute="library_func" context="#pop!rvalue_call_open_brace"/>
</context>
<!-- lvalue contexts represent expressions of the left side of the assignment operators or
standalone function calls.
-->
<context name="lvalue" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!lvalue_exp">
<DetectSpaces/>
<keyword String="m" attribute="m" context="#pop!lvalue_m_dot"/>
<IncludeRules context="@lvalue_builtin_functions"/>
<IncludeRules context="@lvalue_library_functions"/>
<IncludeRules context="@comment"/>
</context>
<context name="lvalue_exp" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<RegExpr String="[a-zA-Z_][a-zA-Z0-1_]*\s*\(" context="#pop!lvalue_call" lookAhead="true"/>
<RegExpr String="[a-zA-Z_][a-zA-Z0-1_]*:" attribute="label" context="#pop"/>
<DetectIdentifier context="#pop!lvalue_var" lookAhead="true"/>
</context>
<context name="lvalue_m_dot" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<DetectChar char="." attribute="operator" context="#pop!lvalue_top"/>
<IncludeRules context="@comment"/>
<IncludeRules context="@lvalue_ops"/>
</context>
<context name="lvalue_top" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<keyword String="top" attribute="top" context="#pop!lvalue_operator"/>
<DetectIdentifier context="#pop!lvalue_exp" lookAhead="true"/>
<IncludeRules context="@comment"/>
</context>
<context name="lvalue_var" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectIdentifier attribute="var" context="#pop!lvalue_var_postfix"/>
</context>
<context name="lvalue_var_postfix" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!lvalue_operator">
<AnyChar String="$%&amp;!#" attribute="var" context="#pop!lvalue_operator"/>
</context>
<context name="lvalue_operator" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<DetectChar char="." attribute="operator" context="#pop!lvalue_exp"/>
<IncludeRules context="@lvalue_ops"/>
</context>
<context name="@lvalue_ops" attribute="g" lineEndContext="#stay">
<IncludeRules context="@lvalue_call_open_brace"/>
<DetectChar char="[" attribute="operator" context="lvalue_array"/>
<RegExpr String="(=|\+=|\-=|\*=|/=|\\=|&lt;&lt;=|&gt;&gt;=)" attribute="assign" context="#pop!rvalue"/>
</context>
<context name="lvalue_array" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="rvalue">
<DetectSpaces/>
<DetectChar char="," attribute="coma"/>
<DetectChar char="]" attribute="operator" context="#pop!lvalue_operator"/>
</context>
<context name="lvalue_call" attribute="g" lineEndContext="#stay">
<DetectIdentifier attribute="func" context="#pop!lvalue_call_open_brace"/>
</context>
<context name="lvalue_call_open_brace" attribute="g" lineEndContext="#stay">
<IncludeRules context="@lvalue_call_open_brace"/>
</context>
<context name="@lvalue_call_open_brace" attribute="g" lineEndContext="#stay">
<DetectChar char="(" attribute="scope" context="lvalue_call_args"/>
</context>
<context name="lvalue_call_args" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="rvalue">
<DetectSpaces/>
<DetectChar char=")" attribute="scope" context="#pop#pop!lvalue_operator"/>
<DetectChar char="," attribute="coma"/>
</context>
<!-- rvalue contexts represent expressions on the right side of assignment operators and arguments
to other functions, 'print' calls, object keys, array values, etc.
-->
<context name="rvalue" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<AnyChar String="-+" attribute="unary"/>
<IncludeRules context="@comment"/>
<IncludeRules context="@function"/>
<IncludeRules context="@sub"/>
<keyword String="unary" attribute="unary"/>
<keyword String="end_of_scope" context="#pop#pop" lookAhead="true"/>
<DetectChar char="&quot;" attribute="string" context="#pop!string"/>
<DetectChar char="[" attribute="operator" context="#pop!array"/>
<DetectChar char="(" attribute="scope" context="#pop!rvalue_scope"/>
<DetectChar char="{" attribute="operator" context="#pop!object"/>
<keyword String="constants" attribute="constant" context="#pop!rvalue_operator"/>
<RegExpr String="[-+]?[0-9]*\.[0-9]" context="#pop!float" lookAhead="true"/>
<RegExpr String="[-+]?[0-9]" context="#pop!int" lookAhead="true"/>
<StringDetect String="&amp;h" insensitive="true" attribute="dec" context="#pop!hex"/>
<keyword String="m" attribute="m" context="#pop!rvalue_m_dot"/>
<IncludeRules context="@rvalue_builtin_functions"/>
<IncludeRules context="@rvalue_library_functions"/>
<IncludeRules context="@rvalue_dot"/>
</context>
<context name="rvalue_var" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectIdentifier attribute="var" context="#pop!rvalue_var_postfix"/>
</context>
<context name="rvalue_var_postfix" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!rvalue_operator">
<AnyChar String="$%&amp;!#" attribute="var" context="#pop!rvalue_operator"/>
</context>
<context name="rvalue_operator" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!rvalue_end">
<DetectSpaces/>
<AnyChar String=".@" attribute="operator" context="#pop!rvalue_dot"/>
<IncludeRules context="@rvalue_ops"/>
</context>
<context name="@rvalue_ops" attribute="g" lineEndContext="#stay">
<IncludeRules context="@rvalue_call_open_brace"/>
<DetectChar char="[" attribute="operator" context="#pop!array"/>
</context>
<context name="rvalue_end" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<RegExpr String="=|&lt;&gt;|&lt;&lt;|&gt;&gt;|&lt;=|&gt;=|&lt;|&gt;|\^|\-|\+|\*|\/|\\|(and|or|mod)(?=\W)" insensitive="true" attribute="binary" context="#pop!rvalue"/>
</context>
<context name="rvalue_m_dot" attribute="g" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!rvalue_end">
<DetectSpaces/>
<DetectChar char="." attribute="operator" context="#pop!rvalue_top"/>
<IncludeRules context="@comment"/>
<IncludeRules context="@rvalue_ops"/>
</context>
<context name="rvalue_top" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<keyword String="top" attribute="top" context="#pop!rvalue_operator"/>
<DetectIdentifier context="#pop!rvalue_dot" lookAhead="true"/>
<IncludeRules context="@comment"/>
</context>
<context name="rvalue_scope" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="rvalue">
<DetectSpaces/>
<DetectChar char=")" attribute="scope" context="#pop!rvalue_operator"/>
</context>
<context name="rvalue_dot" attribute="g" lineEndContext="#stay">
<IncludeRules context="@rvalue_dot"/>
</context>
<context name="@rvalue_dot" attribute="g" lineEndContext="#stay">
<RegExpr String="[a-zA-Z_][a-zA-Z0-1_]*\s*\(" context="#pop!rvalue_call" lookAhead="true"/>
<DetectIdentifier context="#pop!rvalue_var" lookAhead="true"/>
</context>
<!-- Other rvalue expressions. -->
<context name="string" attribute="string" lineEndContext="#pop#pop">
<DetectChar char="&quot;" attribute="string" context="#pop!rvalue_operator"/>
</context>
<context name="array" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="rvalue">
<DetectSpaces/>
<DetectChar char="," attribute="coma"/>
<DetectChar char="]" attribute="operator" context="#pop!rvalue_operator"/>
</context>
<context name="object" attribute="g" lineEndContext="#stay">
<DetectSpaces/>
<IncludeRules context="@comment"/>
<DetectChar char="," attribute="coma"/>
<DetectChar char="}" attribute="operator" context="#pop!rvalue_operator"/>
<DetectChar char="&quot;" attribute="var" context="object_param_string"/>
<DetectIdentifier attribute="var" context="object_param_colon"/>
</context>
<context name="object_param_string" attribute="var" lineEndContext="#pop">
<DetectChar char="&quot;" attribute="var" context="#pop!object_param_colon"/>
</context>
<context name="object_param_colon" attribute="g" lineEndContext="#pop">
<DetectSpaces/>
<IncludeRules context="@comment"/>
<DetectChar char=":" attribute="operator" context="#pop!rvalue"/>
</context>
<context name="float" attribute="float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<!-- documentation says this is a valid string, but implementation gives compile error -->
<!--<RegExpr String="[-+]?[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?\$" attribute="string" context="postfix_delimiter"/>-->
<!--<RegExpr String="[-+]?[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?[%&amp;]" attribute="dec" context="postfix_delimiter"/>-->
<RegExpr String="[-+]?[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?[!#]?" attribute="float" context="postfix_delimiter"/>
</context>
<context name="int" attribute="dec" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<!-- documentation says this is a valid string, but implementation gives compile error -->
<!--<RegExpr String="[-+]?[0-9]*\$" attribute="string" context="postfix_delimiter"/>-->
<RegExpr String="[-+]?[0-9]*[!#]" attribute="float" context="postfix_delimiter"/>
<RegExpr String="[-+]?[0-9]*[%&amp;]?" attribute="dec" context="postfix_delimiter"/>
</context>
<context name="hex" attribute="invalid" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<RegExpr String="[0-9a-fA-F]+" insensitive="true" attribute="dec" context="#pop"/>
</context>
<context name="postfix_delimiter" attribute="g" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
<RegExpr String="[\s\W]" context="#pop#pop!rvalue_operator" lookAhead="true"/>
</context>
<context name="rvalue_call" attribute="g" lineEndContext="#stay">
<DetectIdentifier attribute="func" context="#pop!rvalue_call_open_brace"/>
</context>
<context name="rvalue_call_open_brace" attribute="g" lineEndContext="#stay">
<IncludeRules context="@rvalue_call_open_brace"/>
</context>
<context name="@rvalue_call_open_brace" attribute="g" lineEndContext="#stay">
<DetectChar char="(" attribute="scope" context="rvalue_call_args"/>
</context>
<context name="rvalue_call_args" attribute="g" lineEndContext="#stay" fallthrough="true" fallthroughContext="rvalue">
<DetectSpaces/>
<DetectChar char=")" attribute="scope" context="#pop#pop!rvalue_operator"/>
<DetectChar char="," attribute="coma"/>
</context>
</contexts>
<itemDatas>
<itemData name="g" defStyleNum="dsNormal"/>
<itemData name="import" defStyleNum="dsImport"/>
<itemData name="func" defStyleNum="dsFunction"/>
<itemData name="keyword" defStyleNum="dsKeyword"/>
<itemData name="control" defStyleNum="dsControlFlow"/>
<itemData name="assign" defStyleNum="dsOperator"/>
<itemData name="binary" defStyleNum="dsOperator"/>
<itemData name="unary" defStyleNum="dsOperator"/>
<itemData name="operator" defStyleNum="dsOperator"/>
<itemData name="scope" defStyleNum="dsOperator"/>
<itemData name="coma" defStyleNum="dsOperator"/>
<itemData name="type" defStyleNum="dsDataType"/>
<itemData name="var" defStyleNum="dsVariable"/>
<itemData name="comment" defStyleNum="dsComment"/>
<itemData name="print" defStyleNum="dsBuiltIn"/>
<itemData name="builtin_func" defStyleNum="dsBuiltIn"/>
<itemData name="library_func" defStyleNum="dsBuiltIn"/>
<itemData name="dec" defStyleNum="dsDecVal"/>
<itemData name="float" defStyleNum="dsFloat"/>
<itemData name="string" defStyleNum="dsString"/>
<itemData name="constant" defStyleNum="dsConstant"/>
<itemData name="macro" defStyleNum="dsPreprocessor"/>
<itemData name="label" defStyleNum="dsSpecialChar"/>
<itemData name="line_break" defStyleNum="dsSpecialChar"/>
<itemData name="m" defStyleNum="dsExtension"/>
<itemData name="top" defStyleNum="dsExtension"/>
<itemData name="invalid" defStyleNum="dsError"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="'"/>
</comments>
<keywords casesensitive="0" additionalDeliminator="'"/>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,563 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY int "(?:[0-9](?:'?[0-9]++)*+)">
<!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]++)*+)">
<!ENTITY exp_float "(?:[eE][+-]?&int;)">
<!ENTITY exp_hexfloat "(?:[pP][-+]?&int;)">
<!ENTITY symbols ":!&#37;&amp;()+,-/.*&lt;=&gt;?[]|~^;">
<!-- printf-like format strings conversion specifiers -->
<!ENTITY printf_like "&#37;[-+ #0]*+(?:[0-9]++|\*)?(?:\.(?:[0-9]++|\*))?(?:(?:hh|ll|[hljzt]|wf?(?:8|16|32|64))?[dioxXubn]|(?:DD|[lLHD])?[fFeEaAgG]|l?[cs]|[p&#37;])">
<!ENTITY ispphash "(?:#|&#37;\:|\?\?=)">
<!ENTITY pphash "&ispphash;\s*">
]>
<language name="C" section="Sources"
version="18" kateversion="5.79"
indenter="cstyle"
extensions="*.c;*.C;*.h"
mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
priority="5">
<!--
Fixes by Sebastian Pipping (webmaster@hartwork.org)
NOTE: Keep in sync with C++ highlighter! (cpp.xml)
Version 6: add more versatile numbers highlighting, taken from isocpp.xml
-->
<highlighting>
<list name="controlflow">
<item>break</item>
<item>case</item>
<item>continue</item>
<item>default</item>
<item>do</item>
<item>else</item>
<item>for</item>
<item>goto</item>
<item>if</item>
<item>return</item>
<item>switch</item>
<item>while</item>
</list>
<list name="keywords">
<item>alignas</item> <!-- C23 -->
<item>alignof</item> <!-- C23 -->
<item>auto</item>
<item>constexpr</item> <!-- C23 -->
<item>enum</item>
<item>extern</item>
<item>false</item> <!-- C23 -->
<item>inline</item>
<item>nullptr</item> <!-- C23 -->
<item>sizeof</item>
<item>static_assert</item> <!-- C23 -->
<item>struct</item>
<item>true</item> <!-- C23 -->
<item>typedef</item>
<item>typeof</item> <!-- C23 -->
<item>typeof_unqual</item> <!-- C23 -->
<item>union</item>
<item>_Alignas</item>
<item>_Alignof</item>
<item>_Atomic</item>
<item>_Noreturn</item>
<item>_Static_assert</item>
<item>_Thread_local</item>
</list>
<!-- https://en.cppreference.com/w/c/language/attributes -->
<list name="attributes">
<item>noreturn</item>
<item>deprecated</item>
<item>fallthrough</item>
<item>nodiscard</item>
<item>maybe_unused</item>
<item>unsequenced</item>
<item>reproducible</item>
</list>
<list name="types">
<item>bool</item> <!-- C23 -->
<item>char</item>
<item>char16_t</item>
<item>char32_t</item>
<item>double</item>
<item>float</item>
<item>int</item>
<item>long</item>
<item>short</item>
<item>signed</item>
<item>unsigned</item>
<item>void</item>
<item>int8_t</item>
<item>int16_t</item>
<item>int32_t</item>
<item>int64_t</item>
<item>uint8_t</item>
<item>uint16_t</item>
<item>uint32_t</item>
<item>uint64_t</item>
<item>int_least8_t</item>
<item>int_least16_t</item>
<item>int_least32_t</item>
<item>int_least64_t</item>
<item>uint_least8_t</item>
<item>uint_least16_t</item>
<item>uint_least32_t</item>
<item>uint_least64_t</item>
<item>int_fast8_t</item>
<item>int_fast16_t</item>
<item>int_fast32_t</item>
<item>int_fast64_t</item>
<item>uint_fast8_t</item>
<item>uint_fast16_t</item>
<item>uint_fast32_t</item>
<item>uint_fast64_t</item>
<item>size_t</item>
<item>ssize_t</item>
<item>wchar_t</item>
<item>intptr_t</item>
<item>uintptr_t</item>
<item>intmax_t</item>
<item>uintmax_t</item>
<item>ptrdiff_t</item>
<item>sig_atomic_t</item>
<item>wint_t</item>
<item>_BitInt</item> <!-- C23 -->
<item>_Bool</item>
<item>bool</item>
<item>_Decimal32</item> <!-- C23 -->
<item>_Decimal64</item> <!-- C23 -->
<item>_Decimal128</item> <!-- C23 -->
<item>_Complex</item>
<item>complex</item>
<item>_Imaginary</item>
<item>imaginary</item>
<item>_Generic</item>
<item>va_list</item>
<item>FILE</item>
<item>fpos_t</item>
<item>time_t</item>
<item>max_align_t</item>
<!-- modifiers -->
<item>const</item>
<item>register</item>
<item>restrict</item>
<item>static</item>
<item>thread_local</item> <!-- C23 -->
<item>volatile</item>
</list>
<list name="preprocessor">
<item>if</item>
<item>ifdef</item>
<item>ifndef</item>
<item>elif</item>
<item>elifdef</item> <!-- C23 -->
<item>elifndef</item> <!-- C23 -->
<item>else</item>
<item>endif</item>
<item>define</item>
<item>include</item>
<item>error</item>
<item>line</item>
<item>pragma</item>
<item>undef</item>
<item>warning</item>
<item>embed</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<DetectSpaces />
<!-- Match symbols (partial for fast path) -->
<AnyChar attribute="Symbol" context="#stay" String=":()]+-*=&gt;!|&amp;~^,;" />
<IncludeRules context="match keywords" />
<AnyChar context="SelectString" String="UuL&quot;'" lookAhead="1"/>
<DetectIdentifier />
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
<Detect2Chars attribute="Symbol" context="#stay" char="&lt;" char1="%" beginRegion="Brace1" /> <!-- Digraph: { -->
<Detect2Chars attribute="Symbol" context="#stay" char="%" char1="&gt;" endRegion="Brace1" /> <!-- Digraph: } -->
<!-- Detect attributes -->
<Detect2Chars attribute="Symbol" context="Attribute" char="[" char1="[" />
<StringDetect attribute="Symbol" context="Attribute" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
<!-- Match numbers -->
<RegExpr context="Number" String="\.?[0-9]" lookAhead="1" />
<IncludeRules context="FindComments" />
<RegExpr context="AfterHash" String="&ispphash;|" firstNonSpace="1" lookAhead="1" />
<AnyChar attribute="Symbol" context="#stay" String="&symbols;"/>
</context>
<context name="match keywords" attribute="Normal Text" lineEndContext="#pop">
<keyword attribute="Control Flow" context="#stay" String="controlflow"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
</context>
<context name="SelectStringPP" attribute="Preprocessor" lineEndContext="#pop">
<IncludeRules context="SelectString"/>
</context>
<context name="SelectString" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop!String8" char="&quot;"/>
<DetectChar attribute="Char" context="#pop!Char8" char="'"/>
<Detect2Chars context="#pop!SelectStringPrefix" char="U" char1="&quot;" lookAhead="1"/>
<Detect2Chars context="#pop!SelectStringPrefix" char="u" char1="&quot;" lookAhead="1"/>
<Detect2Chars context="#pop!SelectStringPrefix" char="L" char1="&quot;" lookAhead="1"/>
<StringDetect context="#pop!SelectStringPrefix" String="u8&quot;" lookAhead="1"/>
<Detect2Chars context="#pop!SelectCharPrefix" char="U" char1="'" lookAhead="1"/>
<Detect2Chars context="#pop!SelectCharPrefix" char="u" char1="'" lookAhead="1"/>
<Detect2Chars context="#pop!SelectCharPrefix" char="L" char1="'" lookAhead="1"/>
<StringDetect context="#pop!SelectCharPrefix" String="u8'" lookAhead="1"/>
<!-- match identifier -->
<keyword attribute="Data Type" context="#pop" String="types"/>
<DetectIdentifier context="#pop"/>
</context>
<context name="SelectStringPrefix" attribute="String" lineEndContext="#pop">
<Detect2Chars attribute="String Literal Prefix" context="#pop!StringPrefix8" char="u" char1="8"/>
<AnyChar attribute="String Literal Prefix" context="#pop!StringPrefix16" String="uL"/>
<DetectChar attribute="String Literal Prefix" context="#pop!StringPrefix32" char="U"/>
</context>
<context name="StringPrefix8" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop!String8" char="&quot;"/>
</context>
<context name="StringPrefix16" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop!String16" char="&quot;"/>
</context>
<context name="StringPrefix32" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop!String32" char="&quot;"/>
</context>
<context name="SelectCharPrefix" attribute="String" lineEndContext="#pop">
<Detect2Chars attribute="Char Literal Prefix" context="#pop!CharPrefix8" char="u" char1="8"/>
<AnyChar attribute="Char Literal Prefix" context="#pop!CharPrefix16" String="uL"/>
<DetectChar attribute="Char Literal Prefix" context="#pop!CharPrefix32" char="U"/>
</context>
<context name="CharPrefix8" attribute="Char" lineEndContext="#pop">
<DetectChar attribute="Char" context="#pop!Char8" char="'"/>
</context>
<context name="CharPrefix16" attribute="Char" lineEndContext="#pop">
<DetectChar attribute="Char" context="#pop!Char16" char="'"/>
</context>
<context name="CharPrefix32" attribute="Char" lineEndContext="#pop">
<DetectChar attribute="Char" context="#pop!Char32" char="'"/>
</context>
<context name="String8" attribute="String" lineEndContext="#pop">
<IncludeRules context="string normal char" />
<Detect2Chars context="String8EscapeX" char="\" char1="x" lookAhead="1"/>
<IncludeRules context="string special char" />
</context>
<context name="String8EscapeX" attribute="String" lineEndContext="#pop">
<HlCStringChar attribute="String Char" context="#pop!StringNoHex"/>
<Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
</context>
<context name="String16" attribute="String" lineEndContext="#pop">
<IncludeRules context="string normal char" />
<Detect2Chars context="String16EscapeX" char="\" char1="x" lookAhead="1"/>
<IncludeRules context="string special char" />
</context>
<context name="String16EscapeX" attribute="String" lineEndContext="#pop">
<RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,4}" />
<Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
</context>
<context name="String32" attribute="String" lineEndContext="#pop">
<IncludeRules context="string normal char" />
<Detect2Chars context="String32EscapeX" char="\" char1="x" lookAhead="1"/>
<IncludeRules context="string special char" />
</context>
<context name="String32EscapeX" attribute="String" lineEndContext="#pop">
<RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,8}" />
<Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
</context>
<context name="StringNoHex" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr attribute="Error" context="#pop" String="[0-9A-Fa-f]{1,}" />
</context>
<context name="Char8" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
<HlCStringChar attribute="String Char" context="CharClose"/>
<IncludeRules context="FindSingleChar"/>
</context>
<context name="Char16" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
<RegExpr attribute="String Char" context="CharClose" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4})|" />
<IncludeRules context="FindSingleChar"/>
</context>
<context name="Char32" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
<RegExpr attribute="String Char" context="CharClose" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,8}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|" />
<IncludeRules context="FindSingleChar"/>
</context>
<context name="FindSingleChar" attribute="Char" lineEndContext="#pop">
<DetectChar attribute="Error" context="#pop" char="'" />
<RegExpr attribute="Char" context="CharClose" String="." />
</context>
<context name="CharClose" attribute="Error" lineEndContext="#pop#pop">
<DetectChar attribute="Char" context="#pop#pop" char="'" />
</context>
<context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true" />
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
</context>
<context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
<StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
<StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
<IncludeRules context="##Doxygen" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment" />
</context>
<context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
</context>
<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
<LineContinue attribute="Comment" context="#stay"/>
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments" />
</context>
<context name="string special char" attribute="String" lineEndContext="#pop">
<HlCStringChar attribute="String Char"/>
<RegExpr attribute="String Char" String="\\(?:u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|&printf_like;"/>
<DetectChar attribute="String" char="%"/>
<RegExpr attribute="Error" String="\\(?:u[^&quot;]{0,3}|U[^&quot;]{0,7}|.)"/>
<LineContinue attribute="Symbol"/>
</context>
<context name="string normal char" attribute="String" lineEndContext="#pop">
<!-- fast way, can be replaced by a `UntilChars` rule if it exists -->
<!-- % -> printf format -->
<RegExpr attribute="String" context="#stay" String="[^%\\&quot;]+" />
<DetectChar attribute="String" context="#pop" char="&quot;" />
</context>
<context attribute="Error" lineEndContext="#pop" name="AfterHash" fallthroughContext="#pop!LineError">
<RegExpr attribute="Preprocessor" context="#pop!PreprocessorCmd" String="&pphash;(?=.)|" firstNonSpace="true" />
</context>
<context name="LineError" attribute="Error" lineEndContext="#pop">
<LineContinue attribute="Error" context="#stay" />
<RegExpr attribute="Error" context="#stay" String="[^\\]+" />
</context>
<context attribute="Error" lineEndContext="#pop" name="PreprocessorCmd" fallthroughContext="#pop!LineError">
<WordDetect attribute="Preprocessor" context="#pop!Include" String="include" insensitive="true" />
<WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="ifdef" beginRegion="PP" lookAhead="true" insensitive="true" />
<WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="ifndef" beginRegion="PP" lookAhead="true" insensitive="true" />
<RegExpr attribute="Preprocessor" context="#pop!Outscoped" String="if\s+0\s*$|" beginRegion="PP" />
<WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="if" beginRegion="PP" lookAhead="true" insensitive="true" />
<WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="elif" endRegion="PP" beginRegion="PP" lookAhead="true" insensitive="true" />
<WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="else" endRegion="PP" beginRegion="PP" insensitive="true" />
<WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="endif" endRegion="PP" insensitive="true" />
<WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="elifdef" endRegion="PP" beginRegion="PP" lookAhead="true" insensitive="true" />
<WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="elifndef" endRegion="PP" beginRegion="PP" lookAhead="true" insensitive="true" />
<WordDetect attribute="Preprocessor" context="#pop!Define" String="define"/>
<!-- folding for apple style #pragma mark - label -->
<RegExpr attribute="Preprocessor" context="#pop" String="&pphash;pragma\s+mark\s+-\s*|" insensitive="true" endRegion="pragma_mark" />
<RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark|" insensitive="true" endRegion="pragma_mark" beginRegion="pragma_mark" />
<keyword attribute="Preprocessor" context="#pop!Preprocessor" String="preprocessor" />
<!-- GCC extension -->
<WordDetect attribute="Preprocessor" context="#pop!Include" String="include_next" />
<Int attribute="Preprocessor" context="#pop!Preprocessor"/>
</context>
<context attribute="Preprocessor" lineEndContext="#pop" name="Include">
<DetectSpaces />
<RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
<RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
<IncludeRules context="Preprocessor" />
<DetectIdentifier/>
</context>
<context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
<LineContinue attribute="Symbol" context="#stay"/>
<IncludeRules context="FindComments" />
</context>
<context name="Define" attribute="Preprocessor" lineEndContext="#pop">
<DetectSpaces/>
<IncludeRules context="InPreprocessor" />
<Detect2Chars attribute="Error" context="#pop!LineError" char="/" char1="/" />
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
<IncludeRules context="GNUMacros##GCCExtensions" />
<DetectIdentifier attribute="Preprocessor" context="#pop!In Define"/>
</context>
<context name="In Define" attribute="Preprocessor" lineEndContext="#pop">
<DetectSpaces/>
<LineContinue attribute="Symbol" context="#stay" />
<!-- Match symbols (partial for fast path) -->
<AnyChar attribute="Symbol" context="#stay" String="#:(){}]+-*%=&gt;!|&amp;~^,;" />
<IncludeRules context="match keywords" />
<AnyChar context="SelectStringPP" String="UuLR&quot;'" lookAhead="1"/>
<DetectIdentifier />
<!-- Detect attributes -->
<Detect2Chars attribute="Symbol" context="Attribute In PP" char="[" char1="[" />
<StringDetect attribute="Symbol" context="Attribute In PP" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
<!-- Match numbers -->
<RegExpr context="Number" String="\.?\d" lookAhead="1" />
<IncludeRules context="FindComments" />
<AnyChar attribute="Symbol" context="#stay" String="#&symbols;"/>
</context>
<context name="Attribute In PP" attribute="Attribute" lineEndContext="#pop">
<IncludeRules context="InPreprocessor" />
<IncludeRules context="Attribute" />
</context>
<context name="InPreprocessor" attribute="Normal Text" lineEndContext="#pop">
<LineContinue attribute="Symbol" context="#stay" />
<DetectChar attribute="Error" context="#stay" char="\" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
<DetectSpaces />
<IncludeRules context="##Comments" />
<DetectIdentifier />
<DetectChar attribute="String" context="String8" char="&quot;"/>
<IncludeRules context="FindComments" />
<RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if|" beginRegion="PP" firstNonSpace="true" />
<RegExpr attribute="Preprocessor" context="#pop" String="&pphash;el(?:se|if(n?def)?)|" firstNonSpace="true" />
<RegExpr attribute="Preprocessor" context="#pop" String="&pphash;endif|" endRegion="PP" firstNonSpace="true" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
<DetectSpaces />
<IncludeRules context="##Comments" />
<DetectIdentifier />
<DetectChar attribute="String" context="String8" char="&quot;"/>
<IncludeRules context="FindComments" />
<RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if|" beginRegion="PP" firstNonSpace="true" />
<RegExpr attribute="Comment" context="#pop" String="&pphash;endif|" endRegion="PP" firstNonSpace="true" />
</context>
<context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
<WordDetect attribute="Decimal" context="IntSuffix" String="0" weakDeliminator="."/>
<RegExpr attribute="Float" context="FloatSuffix" String="\.&int;&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|&int;(?:&exp_float;|\.&int;?&exp_float;?)" />
<IncludeRules context="Integer" />
</context>
<context name="Integer" attribute="Normal Text" lineEndContext="#pop">
<DetectChar context="#pop!IntStartsWith0" char="0" lookAhead="1"/>
<RegExpr attribute="Decimal" context="IntSuffix" String="&int;" />
<RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']++" />
</context>
<context name="IntStartsWith0" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Hex" context="IntSuffix" String="0[xX]&hex_int;" />
<RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01](?:'?[01]++)*+" />
<RegExpr attribute="Octal" context="IntSuffix" String="0(?:'?[0-7]++)++" />
<DetectChar attribute="Decimal" context="IntSuffix" char="0"/>
</context>
<context name="IntSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
<DetectChar attribute="Error" context="#stay" char="'" />
<!-- https://en.cppreference.com/w/c/language/integer_constant#The_type_of_the_integer_constant -->
<RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="([Uu](LL?|ll?|wb|WB)?|(LL?|ll?|wb|WB)[Uu]?)\b"/>
</context>
<context name="FloatSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
<DetectChar attribute="Error" context="#stay" char="'" />
<!-- https://en.cppreference.com/w/c/language/floating_constant#Suffixes -->
<AnyChar attribute="Standard Suffix" context="NumericSuffixError" String="fFlL"/>
<Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="d" char1="f"/>
<Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="D" char1="F"/>
<Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="d" char1="d"/>
<Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="D" char1="D"/>
<Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="d" char1="l"/>
<Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="D" char1="L"/>
</context>
<context name="NumericSuffixError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
<AnyChar attribute="Error" String=".'0123456789"/>
<DetectIdentifier attribute="Error"/>
</context>
<context name="Attribute" attribute="Attribute" lineEndContext="#stay">
<DetectSpaces/>
<keyword attribute="Standard Attribute" context="#stay" String="attributes" />
<Detect2Chars attribute="Symbol" context="#pop" char="]" char1="]" />
<StringDetect attribute="Symbol" context="#pop" String=":&gt;:&gt;" /> <!-- Digraph: ]] -->
<AnyChar attribute="Symbol" context="#stay" String="&symbols;" />
<!-- Attributes may contain some text: [[deprecated("Reason text")]] -->
<DetectChar attribute="String" context="String8" char="&quot;" />
<AnyChar attribute="Decimal" context="Integer" String="0123456789" lookAhead="true" />
<IncludeRules context="DetectGccAttributes##GCCExtensions" />
<DetectIdentifier />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Attribute" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="Standard Attribute" defStyleNum="dsAttribute" 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="Standard Suffix" defStyleNum="dsBuiltIn" spellChecking="false" />
<itemData name="Char" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Char Literal Prefix" defStyleNum="dsChar" spellChecking="false" />
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="String Literal Prefix" defStyleNum="dsString" spellChecking="true" />
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>
<itemData name="Preprocessor" defStyleNum="dsPreprocessor" spellChecking="false"/>
<itemData name="Prep. Lib" defStyleNum="dsImport" spellChecking="false"/>
<itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace" />
<comment name="multiLine" start="/*" end="*/" region="Comment" />
</comments>
<keywords casesensitive="1" additionalDeliminator="#'&quot;" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,398 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY version "(?&lt;![-+@$\w.])[0-9]+(\.[0-9]+)*">
<!ENTITY noversion "[0-9.]+">
]>
<language name="Cabal" section="Configuration" version="1" kateversion="5.62"
extensions="*.cabal;cabal.config;cabal.project;cabal.project.freeze;cabal.project.local"
author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
<highlighting>
<list name="conditional">
<item>if</item>
<item>elif</item>
<item>else</item>
</list>
<list name="function">
<item>os</item>
<item>arche</item>
<item>impl</item>
<item>flag</item>
</list>
<list name="category">
<item>executable</item>
<item>library</item>
<item>benchmark</item>
<item>test-suite</item>
<item>source-repository</item>
<item>flag</item>
<item>foreign-library</item>
<item>custom-setup</item>
<item>common</item>
</list>
<list name="constant">
<item>True</item>
<item>False</item>
</list>
<list name="stmt">
<item>asm-options</item>
<item>asm-sources</item>
<item>author</item>
<item>autogen-includes</item>
<item>autogen-modules</item>
<item>branch</item>
<item>bug-reports</item>
<item>build-depends</item>
<item>build-tool-depends</item>
<item>build-tools</item>
<item>build-type</item>
<item>buildable</item>
<item>c-sources</item>
<item>cabal-version</item>
<item>category</item>
<item>cc-options</item>
<item>cmm-options</item>
<item>cmm-sources</item>
<item>copyright</item>
<item>cpp-options</item>
<item>cxx-options</item>
<item>cxx-sources</item>
<item>data-dir</item>
<item>data-files</item>
<item>default-extensions</item>
<item>default-language</item>
<item>default</item>
<item>description</item>
<item>executable</item>
<item>exposed-modules</item>
<item>exposed</item>
<item>extensions</item>
<item>extra-bundled-libraries</item>
<item>extra-doc-files</item>
<item>extra-dynamic-library-flavours</item>
<item>extra-framework-dirs</item>
<item>extra-ghci-libraries</item>
<item>extra-lib-dirs-static</item>
<item>extra-lib-dirs</item>
<item>extra-libraries-static</item>
<item>extra-libraries</item>
<item>extra-library-flavours</item>
<item>extra-source-files</item>
<item>extra-tmp-files</item>
<item>frameworks</item>
<item>ghc-options</item>
<item>ghc-prof-options</item>
<item>ghc-shared-options</item>
<item>ghcjs-options</item>
<item>ghcjs-prof-options</item>
<item>ghcjs-shared-options</item>
<item>homepage</item>
<item>hs-source-dir</item>
<item>hs-source-dirs</item>
<item>hugs-options</item>
<item>import</item>
<item>include-dirs</item>
<item>includes</item>
<item>install-includes</item>
<item>js-sources</item>
<item>ld-options</item>
<item>lib-version-info</item>
<item>lib-version-linux</item>
<item>license-file</item>
<item>license</item>
<item>location</item>
<item>main-is</item>
<item>maintainer</item>
<item>manual</item>
<item>mixins</item>
<item>mod-def-file</item>
<item>module</item>
<item>name</item>
<item>nhc98-options</item>
<item>options</item>
<item>other-extensions</item>
<item>other-language</item>
<item>other-languages</item>
<item>other-modules</item>
<item>package-url</item>
<item>pkgconfig-depends</item>
<item>reexported-modules</item>
<item>scope</item>
<item>setup-depends</item>
<item>signatures</item>
<item>stability</item>
<item>subdir</item>
<item>synopsis</item>
<item>tag</item>
<item>test-module</item>
<item>tested-with</item>
<item>type</item>
<item>version</item>
<item>virtual-modules</item>
</list>
<list name="language">
<item>Haskell98</item>
<item>Haskell2010</item>
</list>
<list name="compiler">
<item>ghc</item>
<item>nhc</item>
<item>yhc</item>
<item>hugs</item>
<item>hbc</item>
<item>helium</item>
<item>jhc</item>
<item>lhc</item>
</list>
<list name="build-type">
<item>simple</item>
<item>custom</item>
<item>configure</item>
</list>
<list name="default-extensions">
<include>language_pragmas##Haskell</include>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Comment" context="Comment" String="--"/>
<WordDetect attribute="Statement" context="stmtVersion" String="version" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtVersion" String="cabal-version" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtBuildType" String="build-type" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtTestWith" String="tested-with" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtLicenseFile" String="license-file" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtLicense" String="license" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtMaintainer" String="maintainer" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtAuthor" String="author" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtName" String="name" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtDescription" String="description" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtCopyright" String="copyright" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtHomepage" String="homepage" insensitive="1"/>
<WordDetect attribute="Statement" context="stmtBugReports" String="bug-reports" insensitive="1"/>
<keyword attribute="Statement" context="stmt" String="stmt"/>
<keyword attribute="Category" context="category" String="category"/>
<keyword attribute="Conditional" context="conditional" String="conditional"/>
<RegExpr attribute="Other Statement" context="stmt" String="[-\w]+"/>
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces attribute="Comment"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
<context name="category" attribute="Category Title" lineEndContext="#pop">
<StringDetect attribute="Comment" context="#pop!Comment" String="--"/>
</context>
<context name="stmt" attribute="Normal Text" lineEndContext="#pop!stmt2" fallthroughContext="#pop!stmt2">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!stmt2"/>
</context>
<context name="stmt2" attribute="Normal Text" lineEndContext="stmtContinuation">
<IncludeRules context="findStmt"/>
<RegExpr attribute="Normal Text" String="[-\w.]+\s*"/>
</context>
<context name="findOperator" attribute="Normal Text" lineEndContext="#stay">
<StringDetect attribute="Operator" String="!"/>
<StringDetect attribute="Operator" String="||"/>
<StringDetect attribute="Operator" String="&amp;&amp;"/>
</context>
<context name="findStmt" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces attribute="Normal Text"/>
<IncludeRules context="findOperator"/>
<StringDetect attribute="Comment" context="Comment" String="--"/>
<StringDetect attribute="Version Operator" String="==" context="versionOp"/>
<StringDetect attribute="Version Operator" String=">=" context="versionOp"/>
<StringDetect attribute="Version Operator" String="&lt;=" context="versionOp"/>
<StringDetect attribute="Version Operator" String="^>=" context="versionOp"/>
<AnyChar attribute="Version Operator" String="&lt;>" context="versionOp"/>
<AnyChar String="=^" context="versionOp" lookAhead="1"/>
<keyword attribute="Constant" String="constant"/>
<keyword attribute="Language" String="language"/>
</context>
<context name="versionOp" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
<DetectSpaces attribute="Normal Text"/>
<AnyChar attribute="Error" String="=^!&lt;>"/>
<DetectChar attribute="Normal Text" context="#pop!versionOpList" char="{"/>
<RegExpr attribute="Version" String="&version;" context="#pop"/>
<RegExpr attribute="Error" String="&noversion;" context="#pop"/>
</context>
<context name="versionOpList" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Normal Text" char=","/>
<DetectChar attribute="Normal Text" context="#pop" char="}"/>
<StringDetect attribute="Comment" context="Comment" String="--"/>
<IncludeRules context="findVersion"/>
</context>
<context name="findVersion" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Version" String="&version;"/>
<RegExpr attribute="Error" String="&noversion;"/>
</context>
<context name="stmtContinuation" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
<RegExpr attribute="Normal Text" String="^\s*[a-zA-Z]+[-0-9a-zA-Z]*\s*:|^\s*(if|else|elif|executable|library|benchmark|test-suite|source-repository|flag|foreign-library|custom-setup|common)(?![-\w])" lookAhead="1" context="#pop#pop" insensitive="1"/>
</context>
<context name="stmtVersion" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop!version">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Symbol Separator" char=":" context="#pop!version"/>
</context>
<context name="version" attribute="Normal Text" lineEndContext="stmtContinuation">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Comment" context="Comment" String="--"/>
<IncludeRules context="findVersion"/>
</context>
<context name="stmtBuildType" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="stmtContinuation">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Symbol Separator" char=":"/>
<StringDetect attribute="Comment" context="Comment" String="--"/>
<keyword attribute="Built Type" String="build-type"/>
</context>
<context name="stmtTestWith" attribute="Normal Text" lineEndContext="#pop!testWith" fallthroughContext="#pop!testWith">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!testWith"/>
</context>
<context name="testWith" attribute="Normal Text" lineEndContext="stmtContinuation">
<IncludeRules context="findStmt"/>
<keyword attribute="Compiler" String="compiler"/>
<RegExpr attribute="Error" String="[-\w.]+"/>
</context>
<context name="stmtLicense" attribute="License" lineEndContext="#pop!license" fallthroughContext="#pop!license">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!license"/>
</context>
<context name="license" attribute="License" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="stmtLicenseFile" attribute="License File" lineEndContext="#pop!licenseFile" fallthroughContext="#pop!licenseFile">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!licenseFile"/>
</context>
<context name="licenseFile" attribute="License File" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="stmtMaintainer" attribute="Maintainer" lineEndContext="#pop!maintainer" fallthroughContext="#pop!maintainer">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!maintainer"/>
</context>
<context name="maintainer" attribute="Maintainer" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="stmtAuthor" attribute="Author" lineEndContext="#pop!author" fallthroughContext="#pop!author">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!author"/>
</context>
<context name="author" attribute="Author" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="stmtName" attribute="Name" lineEndContext="#pop!name" fallthroughContext="#pop!name">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!name"/>
</context>
<context name="name" attribute="Name" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="stmtDescription" attribute="Description" lineEndContext="#pop!description" fallthroughContext="#pop!description">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!description"/>
</context>
<context name="description" attribute="Description" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="stmtCopyright" attribute="Copyright" lineEndContext="#pop!copyright" fallthroughContext="#pop!copyright">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!copyright"/>
</context>
<context name="copyright" attribute="Copyright" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="stmtHomepage" attribute="Homepage" lineEndContext="#pop!homepage" fallthroughContext="#pop!homepage">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!homepage"/>
</context>
<context name="homepage" attribute="Homepage" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="stmtBugReports" attribute="Bug Reports" lineEndContext="#pop!bugReports" fallthroughContext="#pop!bugReports">
<DetectSpaces attribute="Normal Text"/>
<StringDetect attribute="Symbol Separator" String=":" context="#pop!bugReports"/>
</context>
<context name="bugReports" attribute="Bug Reports" lineEndContext="stmtContinuation">
<StringDetect attribute="Comment" context="Comment" String="--"/>
</context>
<context name="conditional" attribute="Normal Text" lineEndContext="#pop">
<DetectSpaces attribute="Normal Text"/>
<AnyChar attribute="Symbol" String="()"/>
<IncludeRules context="findOperator"/>
<StringDetect attribute="Comment" context="#pop!Comment" String="--"/>
<keyword attribute="Function" String="function" insensitive="0"/>
<keyword attribute="Constant" String="constant"/>
<DetectIdentifier attribute="Normal Text"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Category" defStyleNum="dsKeyword" spellChecking="0"/>
<itemData name="Category Title" defStyleNum="dsAttribute" spellChecking="0"/>
<itemData name="Statement" defStyleNum="dsDataType" spellChecking="0"/>
<itemData name="Other Statement" defStyleNum="dsPreprocessor" spellChecking="0"/>
<itemData name="Name" defStyleNum="dsVerbatimString" spellChecking="0"/>
<itemData name="Author" defStyleNum="dsString" spellChecking="0"/>
<itemData name="Homepage" defStyleNum="dsSpecialString" spellChecking="0"/>
<itemData name="Description" defStyleNum="dsVerbatimString" spellChecking="0"/>
<itemData name="Maintainer" defStyleNum="dsString" spellChecking="0"/>
<itemData name="Bug Reports" defStyleNum="dsSpecialString" spellChecking="0"/>
<itemData name="Copyright" defStyleNum="dsString" spellChecking="0"/>
<itemData name="License" defStyleNum="dsString" spellChecking="0"/>
<itemData name="License File" defStyleNum="dsString" spellChecking="0"/>
<itemData name="Built Type" defStyleNum="dsKeyword" spellChecking="0"/>
<itemData name="Operator" defStyleNum="dsOperator" spellChecking="0"/>
<itemData name="Version Operator" defStyleNum="dsOperator" spellChecking="0"/>
<itemData name="Symbol" defStyleNum="dsNormal" spellChecking="0"/>
<itemData name="Symbol Separator" defStyleNum="dsNormal" spellChecking="0"/>
<itemData name="Version" defStyleNum="dsDecVal" spellChecking="0"/>
<itemData name="Constant" defStyleNum="dsConstant" spellChecking="0"/>
<itemData name="Language" defStyleNum="dsConstant" spellChecking="0"/>
<itemData name="Function" defStyleNum="dsFunction" spellChecking="0"/>
<itemData name="Conditional" defStyleNum="dsControlFlow" spellChecking="0"/>
<itemData name="Compiler" defStyleNum="dsConstant" spellChecking="0"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="0"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="--"/>
</comments>
<keywords casesensitive="0" weakDeliminator="-"/>
</general>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,688 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY null "(?:null|Null|NULL|~)">
<!ENTITY bool "(?:y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)">
<!ENTITY int "(?:0|[\-\+]?[1-9][0-9_]*)">
<!ENTITY intOther "[\-\+]?0(?:x_*[0-9a-fA-F][0-9a-fA-F_]*|o?_*[0-7][0-7_]*|b_*[01][01_]*)"> <!-- Hex, Octal, Binary -->
<!ENTITY intBase60 "[\-\+]?[1-9][0-9_]*(?:\:[0-5]?[0-9])+">
<!ENTITY allInt "(?:&intBase60;|&intOther;|&int;)">
<!ENTITY float "[\-\+]?(?:[0-9][0-9_]*\.[0-9\._]*|\._*[0-9][0-9\._]*)(?:[eE][\-\+]?[0-9]+)?">
<!ENTITY floatExp "[\-\+]?[0-9][0-9_]*[eE][\-\+]?[0-9]+">
<!ENTITY floatBase60 "[\-\+]?[0-9][0-9_]*(?:\:[0-5]?[0-9])+\.[0-9_]*">
<!ENTITY inf "[\-\+]?\.(?:inf|Inf|INF)\b">
<!ENTITY nan "\.(?:nan|NaN|NAN)\b">
<!ENTITY allFloat "(?:&float;|&floatExp;|&floatBase60;|&inf;|&nan;)">
<!ENTITY endValue "(?:\s*$|\s+#)">
<!ENTITY endValueInline "\s*[:,\[\]\{\}]">
<!ENTITY space "[ ]">
<!-- Key quoted -->
<!ENTITY keyDQ "&quot;(?:\\.|[^&quot;])+&quot;\s*">
<!ENTITY keySQ "'(?:[^']|'')+'\s*">
<!-- Literal/folded operator -->
<!ENTITY literalOp "[\|&gt;][\-\+]?">
<!-- Key after "?" or "-", used to detect literal/folded operator -->
<!ENTITY keyAfterOp "(?:[^&quot;'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)">
<!ENTITY dataTypes "!!\S+">
<!ENTITY alias "&amp;\S+">
<!ENTITY reference "\*\S+">
<!ENTITY dpointsHashAttrPreInline1 "[^\s&quot;'#\-,\}\s][^:#,\}]*(?=\:(?:\s|$))">
<!ENTITY dpointsHashAttrPreInline2 "\-(?:[^\s:#,\}][^:#,\}]*)?(?=\:(?:\s|$))">
<!ENTITY dpointsHashAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">
<!ENTITY dpointsHashAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">
<!ENTITY dpointsListAttrPreInline1 "[^&quot;'#\-,\]\s][^:#,\]]*(?=\:(?:\s|$))">
<!ENTITY dpointsListAttrPreInline2 "\-(?:[^\s:#,\]][^:#,\]]*)?(?=\:(?:\s|$))">
<!ENTITY dpointsListAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">
<!ENTITY dpointsListAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">
<!ENTITY dpointsAttrPre1 "[^&quot;'#\-\s][^:#]*(?=\:(?:\s|$))">
<!ENTITY dpointsAttrPre2 "\-(?:[^\s:#][^:#]*)?(?=\:(?:\s|$))">
<!ENTITY dpointsAttrPre3 "&keyDQ;(?=\:(?:\s|$))">
<!ENTITY dpointsAttrPre4 "&keySQ;(?=\:(?:\s|$))">
<!-- Matches Yaml keys whose values are SQL statements in CartoCSS MML files. -->
<!ENTITY sqlKey "(table|layer_by_sql)">
]>
<!-- Author: Dr Orlovsky MA <maxim@orlovsky.info> //-->
<!-- Modifications (YAML 1.2), values & support for literal/folded style:
Nibaldo González S. <nibgonz@gmail.com>
These modifications are under the MIT license. //-->
<!-- Derive the MML syntax highlighting from the yaml syntax highlighting:
Lukas Sommer <sommerluk@gmail.com>
These modifications are under the MIT license. //-->
<!-- Syntax highlighting definition for CartoCSS MML, see https://github.com/mapbox/carto
CartoCSS defines two file formats: MML (Map Markup Language) and MSS (Map Stylesheet).
This file provides syntax highlighting for MML. As MML is yaml, it is derived from
the yaml syntax highlighting definition. It adds SQL highlighting for yaml content
since MML typically contains a lot of SQL code.
NOTE This file is mostly identical to yaml.xml so changes to yaml.xml can and should
be backported also to this file.
HACK There are two keys in MML files that have SQL content: “table” and
“layer_by_sql”. The good solution would be to recognize these keys and provide
SQL highlighting for their content (and only their content):
- folded/literal block: Yes
- plain string: Possibly. But special treatment for crazy
yaml rules required www.yaml-multiline.info
says: “:” cannot appear before a space or
newline, and “#” cannot appear after a space
or newline
- single-quoted/double-quoted string: No. Too complicate and too confusing: it would
require special SQL highlighting rules that
deals with the escapes.
But that could be difficult to implement. However, it seems likely that people
write SQL in folded/literal blocks, while not using folded/literal blocks for
anything else. So for simplicity we will here highlight all folded/literal blocks
as SQL and everything else not, regardless of the key.
-->
<language name="CartoCSS MML" version="2" kateversion="5.44" section="Markup"
extensions="*.mml"
author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com), Lukas Sommer (sommerluk@gmail.com)" license="LGPL">
<highlighting>
<contexts>
<context attribute="Attribute" lineEndContext="#stay" name="normal" >
<StringDetect attribute="Document Header" context="header" String="---" column="0"/>
<RegExpr attribute="End of Document" context="EOD" String="^\.\.\.$" column="0"/>
<DetectChar attribute="Directive" context="directive" char="%" column="0"/>
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<!-- Literal/Folded Style -->
<IncludeRules context="find-literal-block" />
<RegExpr attribute="Operator" firstNonSpace="true" context="dash" String="\-(?=\s|$)" />
<DetectChar attribute="Operator" firstNonSpace="true" context="mapping-key" char="?" />
<DetectChar attribute="Operator" firstNonSpace="true" context="list" char="[" beginRegion="List" />
<DetectChar attribute="Operator" firstNonSpace="true" context="hash" char="{" beginRegion="Hash" />
<RegExpr attribute="Data Types" firstNonSpace="true" context="after-data" String="&dataTypes;" />
<RegExpr attribute="Alias" firstNonSpace="true" context="after-data" String="&alias;" />
<RegExpr attribute="Reference" firstNonSpace="true" context="after-data" String="&reference;" />
<RegExpr attribute="Key" context="dpoints-attribute-pre" String="&dpointsAttrPre1;|&dpointsAttrPre2;|&dpointsAttrPre3;|&dpointsAttrPre4;"/>
<RegExpr attribute="Key Points Operator" context="attribute-pre" String=":(?=\s|$)"/>
<DetectChar attribute="String" firstNonSpace="true" context="string" char="'" beginRegion="String" />
<DetectChar attribute="String" firstNonSpace="true" context="stringx" char="&quot;" beginRegion="String" />
<IncludeRules context="values-firstnonspace" />
<DetectSpaces/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="mapping-key" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
<DetectSpaces />
<RegExpr attribute="Operator" context="#pop!dash" String="\-(?=\s|$)" />
<RegExpr attribute="Data Types" context="#pop!after-data" String="&dataTypes;" />
<RegExpr attribute="Alias" context="#pop!after-data" String="&alias;" />
<RegExpr attribute="Reference" context="#pop!after-data" String="&reference;" />
<DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />
<DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />
<DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />
<DetectChar attribute="String" context="#pop!stringx" char="&quot;" beginRegion="String" />
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="dash" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectSpaces/>
<RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
<RegExpr attribute="Alias" context="#stay" String="&alias;" />
<RegExpr attribute="Reference" context="#stay" String="&reference;" />
<IncludeRules context="values" />
<DetectChar attribute="Operator" context="#pop!mapping-key" char="?" />
<RegExpr attribute="Operator" context="#stay" String="\-(?=\s|$)" />
<DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />
<DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />
<DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />
<DetectChar attribute="String" context="#pop!stringx" char="&quot;" beginRegion="String" />
</context>
<!-- Highlight lists, hashes and strings after a data type, reference or alias -->
<context attribute="Normal Text" lineEndContext="#pop" name="after-data" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
<DetectSpaces />
<RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
<RegExpr attribute="Alias" context="#stay" String="&alias;" />
<RegExpr attribute="Reference" context="#stay" String="&reference;" />
<DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
<DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
<DetectChar attribute="String" context="string" char="'" beginRegion="String" />
<DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
</context>
<context attribute="Document Header" lineEndContext="#pop" name="header">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<RegExpr attribute="Literal/Folded Operator" context="header-literal-operator" String="\s&literalOp;(?=&endValue;)" lookAhead="true" />
</context>
<context attribute="Document Header" lineEndContext="#pop#pop" name="header-literal-operator" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces />
<RegExpr attribute="Literal/Folded Operator" context="#pop#pop!literal-block-simple" String="&literalOp;" beginRegion="Literal" />
</context>
<context attribute="End of Document" lineEndContext="#stay" name="EOD">
</context>
<context attribute="Directive" lineEndContext="#pop" name="directive">
</context>
<context attribute="Attribute" lineEndContext="#pop#pop" name="attribute">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
</context>
<context attribute="Attribute" lineEndContext="#stay" name="list-attribute-inline">
<AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",]" />
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
</context>
<context attribute="Attribute" lineEndContext="#stay" name="hash-attribute-inline">
<AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",}" />
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
</context>
<!-- Attribute -->
<context attribute="Attribute" lineEndContext="#pop" name="dpoints-attribute-pre" fallthrough="true" fallthroughContext="#pop!attribute-pre">
<DetectChar attribute="Key Points Operator" context="#pop!attribute-pre" char=":" /> <!-- Highlight two points after Key -->
</context>
<context attribute="Attribute" lineEndContext="#pop" name="attribute-pre" fallthrough="true" fallthroughContext="attribute">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectSpaces/>
<DetectChar attribute="Operator" context="#stay" char="?" />
<RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
<DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
<DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
<DetectChar attribute="String" context="attribute-string" char="'" beginRegion="String" />
<DetectChar attribute="String" context="attribute-stringx" char="&quot;" beginRegion="String" />
<RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />
<RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />
<RegExpr attribute="Alias" context="attribute" String="&alias;" />
<RegExpr attribute="Reference" context="attribute" String="&reference;" />
<IncludeRules context="values" />
<RegExpr attribute="Literal/Folded Operator" context="#stay" String="&literalOp;(?=&endValue;)" />
</context>
<context attribute="Attribute" lineEndContext="#pop" name="default-attribute-pre-inline">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectSpaces/>
<DetectChar attribute="Operator" context="#stay" char="?" />
<RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
<DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
<DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
<DetectChar attribute="String" context="attribute-string-inline" char="'" beginRegion="String" />
<DetectChar attribute="String" context="attribute-stringx-inline" char="&quot;" beginRegion="String" />
<RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />
<RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />
</context>
<!-- Attribute Inline, Within List -->
<context attribute="Attribute" lineEndContext="#pop" name="dpoints-list-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!list-attribute-pre-inline">
<DetectChar attribute="Key Points Operator" context="#pop!list-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->
</context>
<context attribute="Attribute" lineEndContext="#pop" name="list-attribute-pre-inline" fallthrough="true" fallthroughContext="list-attribute-inline">
<IncludeRules context="default-attribute-pre-inline" />
<RegExpr attribute="Alias" context="list-attribute-inline" String="&alias;" />
<RegExpr attribute="Reference" context="list-attribute-inline" String="&reference;" />
<AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",]" />
<IncludeRules context="values-inline" />
</context>
<!-- Attribute Inline, Within Hash -->
<context attribute="Attribute" lineEndContext="#pop" name="dpoints-hash-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!hash-attribute-pre-inline">
<DetectChar attribute="Key Points Operator" context="#pop!hash-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->
</context>
<context attribute="Attribute" lineEndContext="#pop" name="hash-attribute-pre-inline" fallthrough="true" fallthroughContext="hash-attribute-inline">
<IncludeRules context="default-attribute-pre-inline" />
<RegExpr attribute="Alias" context="hash-attribute-inline" String="&alias;" />
<RegExpr attribute="Reference" context="hash-attribute-inline" String="&reference;" />
<AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",}" />
<IncludeRules context="values-inline" />
</context>
<!-- List -->
<!-- Context "find-values-list" highlights values and then sends to "list-element" -->
<context attribute="List" lineEndContext="#stay" name="list" fallthrough="true" fallthroughContext="#pop!find-values-list" noIndentationBasedFolding="true">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectSpaces />
<DetectChar attribute="Operator" context="#pop!find-values-list" char="?" />
</context>
<context attribute="List" lineEndContext="#stay" name="list-element" noIndentationBasedFolding="true">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectChar attribute="Operator" context="#pop" char="]" endRegion="List" />
<DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
<DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
<RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&dpointsListAttrPreInline1;|&dpointsListAttrPreInline2;|&dpointsListAttrPreInline3;|&dpointsListAttrPreInline4;"/>
<RegExpr attribute="Key Points Operator" context="list-attribute-pre-inline" String=":(?=\s|$)" firstNonSpace="true" />
<RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
<RegExpr attribute="Alias" context="#stay" String="&alias;" />
<RegExpr attribute="Reference" context="#stay" String="&reference;" />
<DetectChar attribute="String" context="string" char="'" beginRegion="String" />
<DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
<DetectChar attribute="Operator" context="#pop!list" char="," />
<IncludeRules context="values-list" />
</context>
<!-- Hash -->
<context attribute="Hash" lineEndContext="#stay" name="hash" fallthrough="true" fallthroughContext="#pop!hash-element" noIndentationBasedFolding="true">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectSpaces />
<DetectChar attribute="Operator" context="#pop!hash-element" char="?" />
</context>
<context attribute="Hash" lineEndContext="#stay" name="hash-element" noIndentationBasedFolding="true">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectSpaces/>
<RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&dpointsHashAttrPreInline1;|&dpointsHashAttrPreInline2;|&dpointsHashAttrPreInline3;|&dpointsHashAttrPreInline4;"/>
<RegExpr attribute="Key Points Operator" context="hash-attribute-pre-inline" String=":(?=\s|$)"/>
<DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash" />
<DetectChar attribute="Operator" context="#pop!hash" char="," />
<!-- This improves highlighting in keys with multiple lines -->
<RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
<RegExpr attribute="Alias" context="#stay" String="&alias;" />
<RegExpr attribute="Reference" context="#stay" String="&reference;" />
<DetectChar attribute="String" context="string" char="'" beginRegion="String" />
<DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
</context>
<!-- Strings -->
<context attribute="String" lineEndContext="#stay" name="attribute-string" noIndentationBasedFolding="true">
<DetectIdentifier />
<IncludeRules context="escaped-char-singleq" />
<DetectChar attribute="String" context="attribute-end" char="'" endRegion="String" />
</context>
<context attribute="String" lineEndContext="#stay" name="attribute-stringx" noIndentationBasedFolding="true">
<DetectIdentifier />
<IncludeRules context="escaped-char-doubleq" />
<DetectChar attribute="String" context="attribute-end" char="&quot;" endRegion="String" />
</context>
<context attribute="String" lineEndContext="#stay" name="attribute-string-inline" noIndentationBasedFolding="true">
<DetectIdentifier />
<IncludeRules context="escaped-char-singleq" />
<DetectChar attribute="String" context="attribute-end-inline" char="'" endRegion="String" />
</context>
<context attribute="String" lineEndContext="#stay" name="attribute-stringx-inline" noIndentationBasedFolding="true">
<DetectIdentifier />
<IncludeRules context="escaped-char-doubleq" />
<DetectChar attribute="String" context="attribute-end-inline" char="&quot;" endRegion="String" />
</context>
<context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectSpaces attribute="Normal Text" context="#stay"/>
</context>
<context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end-inline">
<RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
<DetectSpaces attribute="Normal Text" context="#stay"/>
<AnyChar context="#pop#pop#pop" lookAhead="true" String="}],"/>
</context>
<context attribute="String" lineEndContext="#stay" name="string" noIndentationBasedFolding="true">
<DetectIdentifier />
<IncludeRules context="escaped-char-singleq" />
<DetectChar attribute="String" context="#pop" char="'" endRegion="String" />
</context>
<context attribute="String" lineEndContext="#stay" name="stringx" noIndentationBasedFolding="true">
<DetectIdentifier />
<IncludeRules context="escaped-char-doubleq" />
<DetectChar attribute="String" context="#pop" char="&quot;" endRegion="String" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-doubleq">
<RegExpr attribute="Escaped Character" context="#stay" String="\\(?:[\s0abtnvfre&quot;/\\N_Lp]|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-singleq">
<Detect2Chars attribute="Escaped Character" context="#stay" char="'" char1="'" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="comment">
<DetectSpaces />
<IncludeRules context="##Comments" />
</context>
<!-- Values -->
<context attribute="Normal Text" lineEndContext="#stay" name="values">
<RegExpr attribute="Null" context="#stay" String="&null;(?=&endValue;)"/>
<RegExpr attribute="Boolean" context="#stay" String="&bool;(?=&endValue;)"/>
<RegExpr attribute="Float" context="#stay" String="&allFloat;(?=&endValue;)"/>
<RegExpr attribute="Integer" context="#stay" String="&allInt;(?=&endValue;)"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="values-firstnonspace">
<RegExpr attribute="Null" firstNonSpace="true" context="#stay" String="&null;(?=&endValue;)"/>
<RegExpr attribute="Boolean" firstNonSpace="true" context="#stay" String="&bool;(?=&endValue;)"/>
<RegExpr attribute="Float" firstNonSpace="true" context="#stay" String="&allFloat;(?=&endValue;)"/>
<RegExpr attribute="Integer" firstNonSpace="true" context="#stay" String="&allInt;(?=&endValue;)"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="values-inline">
<RegExpr attribute="Null" context="#stay" String="&null;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Boolean" context="#stay" String="&bool;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Float" context="#stay" String="&allFloat;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Integer" context="#stay" String="&allInt;(?=&endValueInline;|&endValue;)"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="values-list">
<RegExpr attribute="Null" context="#stay" String="(?:\s|^)&null;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Boolean" context="#stay" String="(?:\s|^)&bool;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Float" context="#stay" String="(?:\s|^)&allFloat;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Integer" context="#stay" String="(?:\s|^)&allInt;(?=&endValueInline;|&endValue;)"/>
</context>
<!-- If the value is found immediately at the beginning of the list item -->
<context attribute="Normal Text" lineEndContext="#pop!list-element" name="find-values-list" fallthrough="true" fallthroughContext="#pop!list-element">
<RegExpr attribute="Null" context="#pop!list-element" String="&null;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Boolean" context="#pop!list-element" String="&bool;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Float" context="#pop!list-element" String="&allFloat;(?=&endValueInline;|&endValue;)"/>
<RegExpr attribute="Integer" context="#pop!list-element" String="&allInt;(?=&endValueInline;|&endValue;)"/>
</context>
<!-- Literal/Folded Style: http://yaml.org/spec/1.2/spec.html#id2795688 -->
<context attribute="Normal Text" lineEndContext="#stay" name="find-literal-block">
<!-- Do not allow indentation with tabs: -->
<RegExpr attribute="Alert" context="#stay" column="0"
String="^&space;*\t+\s*(?=(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
<!-- CASE 1: The literal/folded operator is the first character of a line.
The text after a space is considered literal.
Ex:
> |
> ^Start the literal text
-->
<RegExpr attribute="Literal/Folded Operator" context="literal-block-simple" column="0"
String="^&literalOp;(?=&endValue;)" beginRegion="Literal" />
<!-- CASE 2: Only the literal/folded operator is present in a line, after a space (the indentation
is captured). The text with the same indentation of the operator will be highlighted as literal.
Ex:
> key:
> |
> ^Start the literal text
However, in this case, the correct way is to use the indentation of the block, not the
indentation of the the operator. The problem is that it is difficult to capture.
> key1:
> key2:
> key3:
> |
> ^Block indentation (correct literal text)
-->
<RegExpr attribute="Literal/Folded Operator" context="literal-block-only-operator" column="0"
String="^(&space;+)&literalOp;(?=&endValue;)" beginRegion="Literal" />
<!-- CASE 3: There is a Key before the literal/folded operator (Key indentation is captured).
The text with the Key's indentation plus a space is considered literal.
Ex:
> key: |
> ^Start the literal text
> key: !!type >-
> ^Start the folded text
-->
<RegExpr attribute="Key Points Operator" context="literal-block-key" column="0"
String="^(&space;*)\:(?=\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
<RegExpr attribute="Key" context="literal-block-key" column="0"
String="^(&space;*)(?:[^&quot;'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)(?=\:\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
<!-- CASE 4: Is there an operator "?" or "-" at the beginning of the line.
NOTE: Nested characters "-" and "?" are considered as part of the indentation.
Therefore, the indentation of the Key or the last operator "?" or "-" is captured.
Ex:
> ? |
> ^Start the literal Text
> ? - - |
> ^Start the literal text
> - Key: |
> ^Start the literal text
> ? - - - - Key: |
> ^Start the literal text
-->
<RegExpr context="start-literal-block-withdash" lookAhead="true" column="0"
String="^&space;*(?:\?&space;*|\-&space;+){1,6}(?:(?:&keyDQ;|&keySQ;|[^#\-\?\s]|\-[^\s#])(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?)?&literalOp;&endValue;" />
<!-- CASE 5: Literal/folded operator after a data type or other content.
Ex:
> !!type |
> ^Start the literal text
> key1:
> key2:
> !!type |
> ^Start the literal text
-->
<RegExpr context="start-literal-block-other" lookAhead="true" column="0"
String="^&space;*(?:(?:[&amp;\*]|!!)\S+\s+)+&literalOp;&endValue;" />
</context>
<!-- If the line with the literal operator starts with the "-" or "?" operator.
NOTE: The indentation capture is limited to 6 nested operators. -->
<context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-withdash" noIndentationBasedFolding="true">
<!-- With Key: Capture the Key indentation -->
<RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s2" String="^(&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s4" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s5" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s7" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
<!-- Without Key: Capture the indentation of the last operator "?" or "-" -->
<RegExpr attribute="Operator" context="#pop!literal-block-withdash-s1" String="^(&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-withdash-s2" String="^(&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-withdash-s4" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-withdash-s5" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
<RegExpr attribute="Operator" context="#pop!literal-block-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
</context>
<!-- Capture the indentation of data type, reference or alias -->
<context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-other" noIndentationBasedFolding="true">
<!-- The text with the same indentation will be considered literal -->
<RegExpr attribute="Data Types" context="#pop!literal-block-after-data" String="^(&space;+)&dataTypes;" column="0" />
<RegExpr attribute="Alias" context="#pop!literal-block-after-data" String="^(&space;+)&alias;" column="0" />
<RegExpr attribute="Reference" context="#pop!literal-block-after-data" String="^(&space;+)&reference;" column="0" />
<!-- The text after a space will be considered literal (empty text is captured) -->
<RegExpr attribute="Data Types" context="#pop!literal-block-withdash-s1" String="^()&dataTypes;" column="0" />
<RegExpr attribute="Alias" context="#pop!literal-block-withdash-s1" String="^()&alias;" column="0" />
<RegExpr attribute="Reference" context="#pop!literal-block-withdash-s1" String="^()&reference;" column="0" />
</context>
<!-- Highlight data/attribute before the literal operator (Note that if there is a line
break within a string or bracket, the literal line will not be highlighted). -->
<context attribute="Attribute" lineEndContext="#pop#pop" name="before-literal-operator" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Operator" context="#pop!end-literal-operator" String="&literalOp;(?=&endValue;)" beginRegion="Literal" />
<RegExpr attribute="Error" context="#pop#pop" String="(?:[&amp;\*]|!!)\S*&literalOp;(?=&endValue;)" />
<RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
<RegExpr attribute="Alias" context="#stay" String="&alias;" />
<RegExpr attribute="Reference" context="#stay" String="&reference;" />
<DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
<DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
<DetectChar attribute="String" context="string" char="'" beginRegion="String" />
<DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
</context>
<context attribute="Normal Text" lineEndContext="#pop#pop" name="dpoints-key-before-literal-operator" fallthrough="true" fallthroughContext="#pop#pop" noIndentationBasedFolding="true">
<DetectChar attribute="Key Points Operator" context="#pop!key-before-literal-operator" char=":" />
</context>
<context attribute="Attribute" lineEndContext="#pop#pop" name="key-before-literal-operator" noIndentationBasedFolding="true">
<IncludeRules context="before-literal-operator" />
<DetectChar attribute="Operator" context="#stay" char="?" />
</context>
<context attribute="Attribute" lineEndContext="#pop" name="end-literal-operator" noIndentationBasedFolding="true">
<RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
</context>
<!-- Common rules for the content of the literal blocks -->
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-default" noIndentationBasedFolding="true">
<!-- End literal/folded block -->
<RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
<!-- Find literal/folded operator -->
<RegExpr context="before-literal-operator" String="\S" lookAhead="true" />
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="literal-block-key-default" noIndentationBasedFolding="true">
<!-- End literal/folded block -->
<RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
<!-- Detect Key before the literal/folded operator -->
<RegExpr attribute="Key" context="dpoints-key-before-literal-operator" String="&keyAfterOp;(?=:\s)" />
<RegExpr attribute="Normal Text" context="#pop" String="\S" lookAhead="true" endRegion="Literal" />
</context>
<!-- Content of the literal block: -->
<!-- If the literal operator is starting the line (after a space, use block indentation) -->
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-only-operator" dynamic="true" noIndentationBasedFolding="true">
<StringDetect attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="%1" dynamic="true" column="0" />
<RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
<RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />
<RegExpr context="#pop" String="\S" lookAhead="true" endRegion="Literal" />
</context>
<!-- If the literal operator is the first character of a line (or after header) -->
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-simple" noIndentationBasedFolding="true">
<DetectSpaces attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" column="0" />
<RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
<RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />
</context>
<!-- If there is a data type or other content before the liretal operator (use block indentation) -->
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-after-data" dynamic="true" noIndentationBasedFolding="true">
<StringDetect attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="%1" dynamic="true" column="0" />
<RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
<RegExpr context="before-literal-operator" String="\S" lookAhead="true" />
</context>
<!-- If there is a key before the literal operator -->
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1\s" dynamic="true" column="0" />
<RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
<!-- Attribute of the Key (the Key was previously highlighted) -->
<RegExpr attribute="Key Points Operator" context="key-before-literal-operator" String=":\s" />
<RegExpr context="key-before-literal-operator" String="\S" lookAhead="true" />
</context>
<context attribute="Literal/Folded Block" lineEndContext="#pop" name="injected-sql" noIndentationBasedFolding="true">
<!-- CartoCSS is a preprocessor for Mapnik, which supports exclusivly
PostgreSQL (with the PostGIS extension) as database, therefore we
choose the Postgre flavor of SQL syntax hightlighting here.
The includeAttrib="true" in <IncludeRules> will override
the attribute="Literal/Folded Block" of the current <context>
with attribute="WHATEVER" of the default <context> of
"##SQL (PostgreSQL)". This ensures that we get the identical
highlighting as in SQL even for default text that has no special
rule in the “SQL (PostgreSQL)” syntax highlighting. -->
<IncludeRules context="##SQL (PostgreSQL)" includeAttrib="true"/>
</context>
<!-- If there are dashes/"?" before the literal operator -->
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s1" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s2" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2&space;\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s3" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3&space;{2}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s4" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3%4&space;{3}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s5" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3%4%5&space;{4}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s6" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3%4%5%6&space;{5}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-default" />
</context>
<!-- If there are dashes/"?" and a Key before the literal operator -->
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s2" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2&space;\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-key-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s3" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3&space;{2}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-key-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s4" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3%4&space;{3}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-key-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s5" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3%4%5&space;{4}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-key-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s6" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3%4%5%6&space;{5}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-key-default" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s7" dynamic="true" noIndentationBasedFolding="true">
<RegExpr attribute="Literal/Folded Block" context="injected-sql" lookAhead="true" String="^%1%2%3%4%5%6%7&space;{6}\s" dynamic="true" column="0" />
<IncludeRules context="literal-block-key-default" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsAttribute" spellChecking="false" />
<itemData name="Attribute" defStyleNum="dsAttribute" spellChecking="false" />
<itemData name="List" defStyleNum="dsAttribute" spellChecking="false" />
<itemData name="Hash" defStyleNum="dsAttribute" spellChecking="false" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="End of Document" defStyleNum="dsComment" />
<itemData name="Document Header" defStyleNum="dsPreprocessor" spellChecking="false" />
<itemData name="Data Types" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Alias" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Reference" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Key" defStyleNum="dsFunction" bold="1" spellChecking="false" />
<itemData name="Directive" defStyleNum="dsPreprocessor" spellChecking="false" />
<itemData name="Key Points Operator" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Operator" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="String" defStyleNum="dsString" spellChecking="false" />
<itemData name="Escaped Character" defStyleNum="dsSpecialChar" spellChecking="false" />
<itemData name="Literal/Folded Operator" defStyleNum="dsChar" spellChecking="false" bold="1" />
<itemData name="Literal/Folded Block" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Null" defStyleNum="dsChar" spellChecking="false" />
<itemData name="Boolean" defStyleNum="dsChar" spellChecking="false" />
<itemData name="Integer" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Error" defStyleNum="dsError" spellChecking="false" />
<itemData name="Alert" defStyleNum="dsAlert" backgroundColor="#EF9A9A" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<folding indentationsensitive="1" />
<emptyLines>
<emptyLine regexpr="(?:\s+|\s*#.*)"/>
</emptyLines>
<comments>
<comment name="singleLine" start="#" position="afterwhitespace" />
</comments>
<keywords casesensitive="1"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,329 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY regexpr_identifier "([\w_-]+)">
<!ENTITY regexpr_variable "(@&regexpr_identifier;)">
<!ENTITY anychar_operator ":,!/*-+=&gt;&lt;()&#x0025;">
<!ENTITY regexpr_number "(\-?((\d+(\.\d+)?)|(\.\d+))&#x0025;?)">
<!ENTITY regexpr_color "((#[\dabcdefABCDEF]{3}|#[\dabcdefABCDEF]{6})(?=(\W|$)))">
]>
<!-- Syntax highlighting definition for CartoCSS MSS, see https://github.com/mapbox/carto
CartoCSS defines two file formats: MML (Map Markup Language) and MSS (Map Stylesheet).
This file provides syntax highlighting for MSS. MSS is similar in syntax to CSS,
but completly different in its semantics. -->
<language name="CartoCSS MSS"
version="6"
kateversion="5.0"
section="Markup"
extensions="*.mss"
author="Lukas Sommer"
license="CC0 Public Domain Dedication, version 1.0, as published by Creative Commons">
<highlighting>
<list name="list_colornames">
<!-- This list is based on https://github.com/mapbox/carto/blob/35773a5f519b1ded0d88b14d53ac875cd610bb8c/build/vim-carto/syntax/carto.vim#L53
and https://github.com/mapbox/carto/blob/35773a5f519b1ded0d88b14d53ac875cd610bb8c/build/carto.tmbundle/Syntaxes/carto.tmLanguage#L279
-->
<item>aliceblue</item>
<item>antiquewhite</item>
<item>aqua</item>
<item>aquamarine</item>
<item>azure</item>
<item>beige</item>
<item>bisque</item>
<item>black</item>
<item>blanchedalmond</item>
<item>blue</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>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>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>fuchsia</item>
<item>gainsboro</item>
<item>ghostwhite</item>
<item>gold</item>
<item>goldenrod</item>
<item>gray</item>
<item>grey</item>
<item>green</item>
<item>greenyellow</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>lime</item>
<item>limegreen</item>
<item>linen</item>
<item>magenta</item>
<item>maroon</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>navy</item>
<item>oldlace</item>
<item>olive</item>
<item>olivedrab</item>
<item>orange</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>purple</item>
<item>red</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>silver</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>teal</item>
<item>thistle</item>
<item>tomato</item>
<item>turquoise</item>
<item>violet</item>
<item>wheat</item>
<item>white</item>
<item>whitesmoke</item>
<item>yellow</item>
<item>yellowgreen</item>
<item>transparent</item>
</list>
<contexts>
<context attribute="Mapnik Symbolizer Parameter" lineEndContext="#stay" name="context_default">
<DetectSpaces/>
<Detect2Chars attribute="Comment" context="context_comment_multiline" char="/" char1="*" lookAhead="true" beginRegion="region_comment"/>
<Detect2Chars attribute="Comment" context="context_comment_singleline" char="/" char1="/" lookAhead="true"/>
<DetectChar attribute="Operator" char="{" beginRegion="region_braces"/>
<DetectChar attribute="Operator" char="}" endRegion="region_braces"/>
<DetectChar attribute="Operator" char="[" context="context_filter_attribute"/> <!-- This rule must be _before_ the “Operator” rule to make sure it is working. -->
<RegExpr attribute="Attachment" String="::&regexpr_identifier;"/> <!-- This rule must be _before_ the “Operator” rule to make sure it is working. -->
<DetectChar attribute="Operator" char=":" context="context_expression"/>
<RegExpr attribute="CartoCSS Variable" String="&regexpr_variable;"/>
<RegExpr attribute="Named instances" String="&regexpr_identifier;/"/>
<RegExpr attribute="Layer ID" String="#&regexpr_identifier;"/>
<RegExpr attribute="Class" String="\.&regexpr_identifier;"/>
</context>
<context attribute="Keyword" lineEndContext="#stay" name="context_expression">
<DetectSpaces/>
<RangeDetect char="[" char1="]" attribute="Data Field"/> <!-- This rule must be _before_ the “Operator” rule to make sure it is working. -->
<RegExpr attribute="Number" String="&regexpr_number;"/> <!-- This rule must be _before_ the “Operator” rule to make sure it is working. -->
<AnyChar attribute="Operator" String="&anychar_operator;[]"/>
<RegExpr attribute="CartoCSS Variable" String="&regexpr_variable;"/>
<RegExpr attribute="Function" String="&regexpr_identifier;(?=\()"/>
<RegExpr attribute="Color" String="&regexpr_color;"/>
<keyword attribute="Color" context="#stay" String="list_colornames"/>
<!-- The strings that might appear hear (both single-quoted and double-quoted strings)
are either normal strings or expression strings: If they are the only content
(like in “test: "mystring";”) than they are expression strings. If there is other
content (like in “test: "mystring" + [myfield];” or “test: [myfield] + "mystring";”),
than they are normal strings. This is however difficult to detect, therefore we default
simply to expression strings.-->
<DetectChar attribute="Expression String" char="&quot;" context="context_expressionstring_doublequote"/>
<DetectChar attribute="Expression String" char="'" context="context_expressionstring_singlequote"/>
<!-- An expression ends with a semicolon “;”. However, the
CartoCSS parser allows to omit the semicolon at the end
of a block of curly braces “{}”. Therefore, we also
have to detect the closing curly braces “}” here: -->
<DetectChar attribute="Operator" char=";" context="#pop"/>
<DetectChar attribute="Operator" char="}" endRegion="region_braces" context="#pop"/>
</context>
<context attribute="Data Field" lineEndContext="#stay" name="context_filter_attribute">
<DetectSpaces/>
<RegExpr attribute="CartoCSS Variable" String="&regexpr_variable;"/>
<AnyChar attribute="Operator" String="&anychar_operator;" context="context_filter_rule"/>
<WordDetect String="zoom" insensitive="true" attribute="Keyword"/>
<DetectChar attribute="Data Field" char="&quot;" context="context_filter_attribute_doublequote"/>
<DetectChar attribute="Data Field" char="'" context="context_filter_attribute_singlequote"/>
<DetectChar attribute="Operator" char="]" context="#pop"/>
</context>
<context attribute="Data Field" lineEndContext="#pop" name="context_filter_attribute_doublequote">
<DetectChar char="&quot;" context="#pop"/>
</context>
<context attribute="Data Field" lineEndContext="#pop" name="context_filter_attribute_singlequote">
<DetectChar char="'" context="#pop"/>
</context>
<context attribute="Keyword" lineEndContext="#stay" name="context_filter_rule">
<DetectSpaces/>
<RegExpr attribute="Number" String="&regexpr_number;"/> <!-- This rule must be _before_ the “Operator” rule to make sure it is working. -->
<AnyChar attribute="Operator" String="&anychar_operator;"/>
<RegExpr attribute="CartoCSS Variable" String="&regexpr_variable;"/>
<WordDetect String="zoom" insensitive="true" attribute="Keyword"/>
<RegExpr attribute="Function" String="&regexpr_identifier;(?=\()"/>
<RegExpr attribute="Color" String="&regexpr_color;"/>
<keyword attribute="Color" context="#stay" String="list_colornames"/>
<DetectChar attribute="Normal String" char="&quot;" context="context_normalstring_doublequote"/>
<DetectChar attribute="Normal String" char="'" context="context_normalstring_singlequote"/>
<DetectChar attribute="Operator" char="]" context="#pop#pop"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="context_comment_multiline">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="region_comment"/>
<IncludeRules context="##Comments"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="context_comment_singleline">
<IncludeRules context="##Comments"/>
</context>
<context attribute="Expression String" lineEndContext="#pop" name="context_expressionstring_doublequote">
<DetectChar attribute="Expression String" char="&quot;" context="#pop"/>
<RangeDetect char="[" char1="]" attribute="Data Field"/>
<RegExpr attribute="Mapnik Render-Time Variable" String="&regexpr_variable;"/>
<DetectChar attribute="Normal String" char="'" context="context_normalstring_singlequote"/>
</context>
<context attribute="Expression String" lineEndContext="#pop" name="context_expressionstring_singlequote">
<DetectChar attribute="Expression String" char="'" context="#pop"/>
<RangeDetect char="[" char1="]" attribute="Data Field"/>
<RegExpr attribute="Mapnik Render-Time Variable" String="&regexpr_variable;"/>
<DetectChar attribute="Normal String" char="&quot;" context="context_normalstring_doublequote"/>
</context>
<context attribute="Normal String" lineEndContext="#pop" name="context_include_escape_characters">
<!-- Helper context. Can be included in other contexts to detect escape characters. -->
<RegExpr attribute="Escape Sequenze" String="(\\[abfnrtv&quot;'\\])|(\\u[0-9a-fA-F]{4})|(\\U[0-9a-fA-F]{8})"/>
<RegExpr attribute="Error" String="\\[uU]"/>
</context>
<context attribute="Normal String" lineEndContext="#pop" name="context_normalstring_doublequote">
<DetectChar attribute="Normal String" char="&quot;" context="#pop"/>
<IncludeRules context="context_include_escape_characters"/>
</context>
<context attribute="Normal String" lineEndContext="#pop" name="context_normalstring_singlequote">
<DetectChar attribute="Normal String" char="'" context="#pop"/>
<IncludeRules context="context_include_escape_characters"/>
</context>
</contexts>
<itemDatas>
<itemData name="Class" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Layer ID" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Attachment" defStyleNum="dsControlFlow" spellChecking="false"/>
<itemData name="Named instances" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Mapnik Symbolizer Parameter" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Number" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
<itemData name="Expression String" defStyleNum="dsSpecialString" spellChecking="false"/>
<!-- “Mapnik Render-Time Variable” work completly different from “CartoCSS Variable” and
has therefore a completly different color. -->
<itemData name="Mapnik Render-Time Variable" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="Normal String" defStyleNum="dsString" spellChecking="false"/>
<itemData name="Escape Sequenze" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="Data Field" defStyleNum="dsVariable" spellChecking="false"/>
<!-- “CartoCSS Variable”, inspite of its name, uses “dsPreprocessor” as default color.
This is appropriate because it actually behaves rather like a preprocessor: It is even
possible to define strings, and if escape sequences like “\n” are treated as such
is decided later, depending on the position of the actual usage of the variable. -->
<itemData name="CartoCSS Variable" defStyleNum="dsPreprocessor" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace"/>
<comment name="multiLine" start="/*" end="*/" region="region_comment"/>
</comments>
<keywords casesensitive="true" weakDeliminator="-"/>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="CashScript" section="Sources" version="1" kateversion="5.0" indenter="cstyle" mimetype="" extensions="*.cash" priority="5" author="James Zuccon" license="MIT">
<highlighting>
<list name="types">
<item>address</item>
<item>int</item>
<item>bool</item>
<item>string</item>
<item>pubkey</item>
<item>sig</item>
<item>datasig</item>
<item>byte</item>
<item>bytes</item>
<item>bytes1</item>
<item>bytes2</item>
<item>bytes3</item>
<item>bytes4</item>
<item>bytes5</item>
<item>bytes6</item>
<item>bytes7</item>
<item>bytes8</item>
<item>bytes9</item>
<item>bytes10</item>
<item>bytes11</item>
<item>bytes12</item>
<item>bytes13</item>
<item>bytes14</item>
<item>bytes15</item>
<item>bytes16</item>
<item>bytes17</item>
<item>bytes18</item>
<item>bytes19</item>
<item>bytes20</item>
<item>bytes21</item>
<item>bytes22</item>
<item>bytes23</item>
<item>bytes24</item>
<item>bytes25</item>
<item>bytes26</item>
<item>bytes27</item>
<item>bytes28</item>
<item>bytes29</item>
<item>bytes30</item>
<item>bytes31</item>
<item>bytes32</item>
<item>bytes33</item>
<item>bytes34</item>
<item>bytes35</item>
<item>bytes36</item>
<item>bytes37</item>
<item>bytes38</item>
<item>bytes39</item>
<item>bytes40</item>
<item>bytes41</item>
<item>bytes42</item>
<item>bytes43</item>
<item>bytes44</item>
<item>bytes45</item>
<item>bytes46</item>
<item>bytes47</item>
<item>bytes48</item>
<item>bytes49</item>
<item>bytes50</item>
<item>bytes51</item>
<item>bytes52</item>
<item>bytes53</item>
<item>bytes54</item>
<item>bytes55</item>
<item>bytes56</item>
<item>bytes57</item>
<item>bytes58</item>
<item>bytes59</item>
<item>bytes60</item>
<item>bytes61</item>
<item>bytes62</item>
<item>bytes63</item>
<item>bytes64</item>
<item>bytes65</item>
<item>bytes66</item>
<item>bytes67</item>
<item>bytes68</item>
<item>bytes69</item>
<item>bytes70</item>
<item>bytes71</item>
<item>bytes72</item>
<item>bytes73</item>
<item>bytes74</item>
<item>bytes75</item>
<item>bytes76</item>
<item>bytes77</item>
<item>bytes78</item>
<item>bytes79</item>
<item>bytes80</item>
<item>bytes81</item>
<item>bytes82</item>
<item>bytes83</item>
<item>bytes84</item>
<item>bytes85</item>
<item>bytes86</item>
<item>bytes87</item>
<item>bytes88</item>
<item>bytes89</item>
<item>bytes90</item>
<item>bytes91</item>
<item>bytes92</item>
<item>bytes93</item>
<item>bytes94</item>
<item>bytes95</item>
<item>bytes96</item>
<item>bytes97</item>
<item>bytes98</item>
<item>bytes99</item>
</list>
<list name="units">
<item>satoshis</item>
<item>sats</item>
<item>finney</item>
<item>bits</item>
<item>bitcoin</item>
<item>seconds</item>
<item>minutes</item>
<item>hours</item>
<item>days</item>
<item>weeks</item>
</list>
<list name="globals">
<!-- General -->
<item>require</item>
<!-- Arithmetic functions -->
<item>abs</item>
<item>min</item>
<item>max</item>
<item>within</item>
<!-- Hashing functions -->
<item>hash160</item>
<item>hash256</item>
<item>ripemd160</item>
<item>sha1</item>
<item>sha256</item>
<!-- Signature checking functions -->
<item>checkSig</item>
<item>checkMultiSig</item>
<item>checkDataSig</item>
<!-- LockingBytecode -->
<item>LockingBytecodeP2PKH</item>
<item>LockingBytecodeP2SH20</item>
<item>LockingBytecodeP2SH32</item>
<item>LockingBytecodeNullData</item>
</list>
<list name="keywords">
<item>true</item>
<item>false</item>
<item>new</item>
</list>
<list name="controlstructures">
<item>if</item>
<item>else</item>
<item>contract</item>
<item>function</item>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<StringDetect attribute="Keyword" String="pragma" context="Pragma" firstNonSpace="true" insensitive="true"/>
<keyword attribute="Control Structures" context="#stay" String="controlstructures"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<keyword attribute="Unit" context="#stay" String="units"/>
<keyword attribute="Built-in" context="#stay" String="globals"/>
<DetectIdentifier/>
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
<HlCHex attribute="Hex" context="#stay"/>
<Float attribute="Decimal" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<HlCChar attribute="Char" context="#stay"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<Detect2Chars attribute="Built-in" context="#stay" char="+" char1="+"/>
<Detect2Chars attribute="Built-in" context="#stay" char="-" char1="-"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true"/>
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^;"/>
</context>
<context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<IncludeRules context="##Doxygen"/>
<Detect2Chars attribute="Comment" context="#pop!Comment Single" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="#pop!Comment Multi" char="/" char1="*" beginRegion="Comment"/>
</context>
<context name="Pragma" attribute="Normal Text" lineEndContext="#pop">
<WordDetect attribute="Built-in" String="cashscript" context="Pragma CashScript" insensitive="true"/>
<RegExpr attribute="Error" context="#pop" String="[^\s;]+"/>
</context>
<context name="Pragma CashScript" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Normal Text" context="#pop" String="[\^\. \-&lt;&gt;=\|\d\w]+"/>
<RegExpr attribute="Error" context="#pop" String="[^\s;]+"/>
</context>
<context name="String" attribute="String" lineEndContext="#pop">
<LineContinue attribute="String" context="#stay"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context name="Comment Single" attribute="Comment" lineEndContext="#pop">
<LineContinue attribute="Comment" context="#stay"/>
<DetectSpaces/>
<IncludeRules context="##Comments"/>
<DetectIdentifier/>
</context>
<context name="Comment Multi" attribute="Comment" lineEndContext="#stay">
<DetectSpaces/>
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Control Structures" defStyleNum="dsControlFlow" spellChecking="false"/>
<itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>
<itemData name="Built-in" defStyleNum="dsBuiltIn" spellChecking="false"/>
<itemData name="Unit" defStyleNum="dsConstant" bold="0" spellChecking="false"/>
<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//"/>
<comment name="multiLine" start="/*" end="*/" region="Comment"/>
</comments>
<keywords casesensitive="1"/>
</general>
</language>
@@ -0,0 +1,654 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!-- http://www.w3.org/TR/CSS21/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])">
]>
<language name="CleanCSS" version="8" kateversion="5.0" section="Markup" extensions="*.ccss" author="Massimiliano Torromeo" license="BSD">
<highlighting>
<list name="properties">
<!-- CSS2 -->
<item>azimuth</item>
<item>background</item>
<item>background-attachment</item>
<item>background-color</item>
<item>background-image</item>
<item>background-position</item>
<item>background-repeat</item>
<item>border</item>
<item>border-bottom</item>
<item>border-bottom-color</item>
<item>border-bottom-style</item>
<item>border-bottom-width</item>
<item>border-collapse</item>
<item>border-color</item>
<item>border-left</item>
<item>border-left-color</item>
<item>border-left-style</item>
<item>border-left-width</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-style</item>
<item>border-top-width</item>
<item>border-width</item>
<item>bottom</item>
<item>caption-side</item>
<item>clear</item>
<item>clip</item>
<item>color</item>
<item>content</item>
<item>counter-increment</item>
<item>counter-reset</item>
<item>cue</item>
<item>cue-after</item>
<item>cue-before</item>
<item>cursor</item>
<item>direction</item>
<item>display</item>
<item>elevation</item>
<item>empty-cells</item>
<item>float</item>
<item>font</item>
<item>font-family</item>
<item>font-size</item>
<item>font-size-adjust</item>
<item>font-stretch</item>
<item>font-style</item>
<item>font-variant</item>
<item>font-weight</item>
<item>height</item>
<item>left</item>
<item>letter-spacing</item>
<item>line-height</item>
<item>list-style</item>
<item>list-style-image</item>
<item>list-style-keyword</item>
<item>list-style-position</item>
<item>list-style-type</item>
<item>margin</item>
<item>margin-bottom</item>
<item>margin-left</item>
<item>margin-right</item>
<item>margin-top</item>
<item>marker-offset</item>
<item>max-height</item>
<item>max-width</item>
<item>min-height</item>
<item>min-width</item>
<item>orphans</item>
<item>outline</item>
<item>outline-color</item>
<item>outline-style</item>
<item>outline-width</item>
<item>overflow</item>
<item>padding</item>
<item>padding-bottom</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>pitch</item>
<item>pitch-range</item>
<item>play-during</item>
<item>position</item>
<item>quotes</item>
<item>richness</item>
<item>right</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>table-layout</item>
<item>text-align</item>
<item>text-decoration</item>
<item>text-decoration-color</item>
<item>text-indent</item>
<item>text-shadow</item>
<item>text-transform</item>
<item>top</item>
<item>unicode-bidi</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>word-spacing</item>
<item>z-index</item>
<!-- CSS3 -->
<item>border-bottom-image</item>
<item>border-bottom-left-image</item>
<item>border-bottom-left-radius</item>
<item>border-bottom-right-image</item>
<item>border-bottom-right-radius</item>
<item>border-corner-image</item>
<item>border-image</item>
<item>border-left-image</item>
<item>border-radius</item>
<item>border-right-image</item>
<item>border-top-image</item>
<item>border-top-left-image</item>
<item>border-top-left-radius</item>
<item>border-top-right-image</item>
<item>border-top-right-radius</item>
<item>box-align</item>
<item>box-shadow</item>
<item>box-sizing</item>
<item>box-orient</item>
<item>box-pack</item>
<item>opacity</item>
<item>outline-offset</item>
<item>overflow-x</item>
<item>overflow-y</item>
<item>text-overflow</item>
<item>text-shadow</item>
<!-- Gecko rendering engine CSS property extensions -->
<item>-moz-border-bottom-colors</item>
<item>-moz-border-left-colors</item>
<item>-moz-border-radius</item>
<item>-moz-border-right-colors</item>
<item>-moz-border-top-colors</item>
<item>-moz-box-flex</item>
<!-- Opera rendering engine CSS property extensions -->
<item>-o-background-size</item>
<item>-o-text-overflow</item>
<!-- konq specific -->
<item>-khtml-background-size</item>
<item>konq_bgpos_x</item>
<item>konq_bgpos_y</item>
<!-- Webkit rendering engine CSS property extensions -->
<item>-webkit-background-size</item>
<item>-webkit-border-radius</item>
<!-- MS rendering engine CSS properties -->
<item>filter</item>
<item>-ms-filter</item>
<!-- font properties in @font-face -->
<item>font-family</item>
<item>font-size</item>
<item>font-stretch</item>
<item>font-style</item>
<item>font-variant</item>
<item>font-weight</item>
<item>unicode-range</item>
<item>units-per-em</item>
<item>src</item>
<item>panose-1</item>
<item>stemv</item>
<item>stemh</item>
<item>slope</item>
<item>cap-height</item>
<item>x-height</item>
<item>ascent</item>
<item>descent</item>
<item>widths</item>
<item>bbox</item>
<item>definition-src</item>
<item>baseline</item>
<item>centerline</item>
<item>mathline</item>
<item>topline</item>
</list>
<list name="types">
<item>inherit</item>
<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>100</item>
<item>200</item>
<item>300</item>
<item>400</item>
<item>500</item>
<item>600</item>
<item>700</item>
<item>800</item>
<item>900</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>auto</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>horizontal</item>
<!-- Gecko rendering engine CSS value extensions -->
<item>-moz-box</item>
<!-- Webkit rendering engine CSS value extensions -->
<item>linear</item>
<item>radial</item>
</list>
<list name="colors">
<item>aqua</item>
<item>black</item>
<item>blue</item>
<item>fuchsia</item>
<item>gray</item>
<item>green</item>
<item>lime</item>
<item>maroon</item>
<item>navy</item>
<item>olive</item>
<item>purple</item>
<item>red</item>
<item>silver</item>
<item>teal</item>
<item>white</item>
<item>yellow</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="paren">
<item>url</item>
<item>attr</item>
<item>rect</item>
<item>rgb</item>
<item>rgba</item>
<item>hsl</item>
<item>hsla</item>
<item>counter</item>
<item>counters</item>
<!-- in @font-face -->
<item>local</item>
<item>format</item>
<!-- Webkit rendering engine CSS value extensions -->
<item>-webkit-gradient</item>
<item>color-stop</item>
<!-- Gecko rendering engine CSS value extensions -->
<item>-moz-linear-gradient</item>
<item>-moz-radial-gradient</item>
<!-- Trident (a.k.a., MSHTML) rendering engine functional notation extensions -->
<item>expression</item>
<item>progid:DXImageTransform.Microsoft.gradient</item>
</list>
<list name="mediatypes">
<item>all</item>
<item>aural</item>
<item>braille</item>
<item>embossed</item>
<item>handheld</item>
<item>print</item>
<item>projection</item>
<item>screen</item>
<item>tty</item>
<item>tv</item>
</list>
<list name="pseudoclasses">
<item>hover</item>
<item>link</item>
<item>visited</item>
<item>active</item>
<item>focus</item>
<item>first-child</item>
<item>last-child</item>
<item>only-child</item>
<item>first-of-type</item>
<item>last-of-type</item>
<item>only-of-type</item>
<item>first-letter</item>
<item>first-line</item>
<item>before</item>
<item>after</item>
<item>selection</item>
<item>root</item>
<item>empty</item>
<item>target</item>
<item>enabled</item>
<item>disabled</item>
<item>checked</item>
<item>indeterminate</item>
<item>nth-child</item>
<item>nth-last-child</item>
<item>nth-of-type</item>
<item>nth-last-of-type</item>
<item>not</item>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Comment" char="/" char1="/" context="Comment" />
<RegExpr attribute="Normal Text" String=".*\S.*:\s*$" context="Selector" lookAhead="true" />
<RegExpr attribute="Normal Text" String=".*\S.*:.*\S" context="RuleSet" lookAhead="true" minimal="true" />
<RegExpr attribute="Property" String="[a-z\-]+-&gt;\s*$" context="#stay" />
<RegExpr attribute="Error" context="#stay" String="\S" />
<!--<keyword attribute="Property" context="Rule" String="properties" />
<keyword attribute="Property" context="Rule" String="properties" />-->
<!--<keyword attribute="Value" context="#stay" String="types" />
<keyword attribute="Value" context="#stay" String="colors" />-->
<!--<keyword attribute="Value" context="PropParen" String="paren" />-->
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
<context name="Selector" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Selector Attr" context="SelAttr" char="[" />
<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})*" />
<DetectChar attribute="Selector Pseudo" context="SelPseudo" char=":" />
<keyword attribute="Media" context="#stay" String="mediatypes" />
</context>
<context name="SelAttr" attribute="Selector Attr" lineEndContext="#pop">
<DetectChar attribute="Selector Attr" context="#pop" char="]" />
<IncludeRules context="FindStrings" />
</context>
<context name="SelPseudo" attribute="Selector Pseudo" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses" />
</context>
<context name="RuleSet" attribute="Normal Text" lineEndContext="#pop">
<keyword attribute="Property" context="Rule" String="properties" />
<RegExpr attribute="Unknown Property" context="Rule" String="-?[A-Za-z_-]+(?=\s*:)" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="Rule" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Property" context="Rule2" char=":" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="Rule2" attribute="Normal Text" lineEndContext="#pop">
<keyword attribute="Value" context="#stay" String="types" />
<keyword attribute="Value" context="#stay" String="colors" />
<RegExpr attribute="Value" context="#stay" String="#([0-9A-Fa-f]{3}){1,4}\b" />
<keyword attribute="Value" context="PropParen" String="paren" />
<RegExpr attribute="Important" context="#stay" String="!important\b" />
<IncludeRules context="FindValues" />
<IncludeRules context="FindStrings" />
</context>
<context name="PropParen" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Value" context="PropParen2" char="(" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="PropParen2" attribute="Normal Text" lineEndContext="#pop">
<IncludeRules context="Rule2" />
<DetectChar attribute="Value" context="#pop#pop" char=")" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="FindValues">
<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+((em|ex|px|in|cm|mm|pt|pc|deg|rad|grad|ms|s|Hz|kHz)\b|%?)" />
<RegExpr attribute="Normal Text" context="#stay" String="[\w\-]+" />
</context>
<context name="FindStrings" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="String" context="StringDQ" char="&quot;" />
<DetectChar attribute="String" context="StringSQ" char="'" />
</context>
<!-- string contexts -->
<context name="StringDQ" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="&quot;" />
<IncludeRules context="InsideString" />
</context>
<context name="StringSQ" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="'" />
<IncludeRules context="InsideString" />
</context>
<context name="InsideString" attribute="String" lineEndContext="#pop">
<RegExpr attribute="String" context="#stay" String="\\[&quot;']" />
<DetectIdentifier/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Unknown Property" defStyleNum="dsKeyword" italic="1" spellChecking="false"/>
<itemData name="Media" defStyleNum="dsDecVal" bold="1" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Value" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Important" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Selector Attr" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Selector Id" defStyleNum="dsFloat" bold="1" spellChecking="false"/>
<itemData name="Selector Class" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Selector Pseudo" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<folding indentationsensitive="1" />
<keywords casesensitive="0" weakDeliminator="-%"/>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace"/>
</comments>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,269 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
** Cg Syntax Rules **
NOTES:
- some stuff stolen from c.xml
TODO:
- some exotic keywords are missing, find out which; the spec is a bloody mess
2004-05-25
* Initial release
2004-05-27
* Added swizzle highlighting
* Added stdlib function highlighting
2004-12-07 (julien.antille at kdemail.net)
* Added COLOR1 through COLOR3 output sementics, for Multiple Render Targets (MRTs).
* Added FACE sementic for the new fp40 profile
-->
<language name="Cg" section="Sources" extensions="*.cg;*.cgfx" mimetype="text/x-cgsrc" version="10" kateversion="5.0" author="Florian Schanda (florian.schanda@schanda.de)" license="LGPL">
<highlighting>
<list name="binding">
<item>POSITION</item>
<item>COLOR</item>
<item>COLOR0</item>
<item>COLOR1</item>
<item>COLOR2</item>
<item>COLOR3</item>
<item>TEXCOORD0</item>
<item>TEXCOORD1</item>
<item>TEXCOORD2</item>
<item>TEXCOORD3</item>
<item>TEXCOORD4</item>
<item>TEXCOORD5</item>
<item>TEXCOORD6</item>
<item>TEXCOORD7</item>
<item>TEXCOORD8</item>
<item>TEXCOORD9</item>
<item>TEXCOORD10</item>
<item>TEXCOORD11</item>
<item>TEXCOORD12</item>
<item>TEXCOORD13</item>
<item>TEXCOORD14</item>
<item>TEXCOORD15</item>
<item>TEXUNIT0</item>
<item>TEXUNIT1</item>
<item>TEXUNIT2</item>
<item>TEXUNIT3</item>
<item>TEXUNIT4</item>
<item>TEXUNIT5</item>
<item>TEXUNIT6</item>
<item>TEXUNIT7</item>
<item>TEXUNIT8</item>
<item>TEXUNIT9</item>
<item>TEXUNIT10</item>
<item>TEXUNIT11</item>
<item>TEXUNIT12</item>
<item>TEXUNIT13</item>
<item>TEXUNIT14</item>
<item>TEXUNIT15</item>
<item>WPOS</item>
<item>DEPTH</item>
<item>BLENDWEIGHT</item>
<item>NORMAL</item>
<item>TESSFACTOR</item>
<item>FOGCOORD</item>
<item>PSIZE</item>
<item>BLENDINDICES</item>
<item>TANGENT</item>
<item>BINORMAL</item>
<item>FOG</item>
<item>BCOL0</item>
<item>BCOL1</item>
<item>FACE</item>
</list>
<list name="keywords">
<item>do</item>
<item>while</item>
<item>if</item>
<item>else</item>
<item>for</item>
<item>struct</item>
<item>return</item>
<item>static</item>
<item>typedef</item>
<item>discard</item>
<item>true</item>
<item>false</item>
</list>
<list name="types">
<item>bool</item>
<item>int</item>
<item>fixed</item>
<item>half</item>
<item>float</item>
<item>void</item>
<item>sampler</item>
<item>sampler1D</item>
<item>sampler2D</item>
<item>sampler3D</item>
<item>samplerCUBE</item>
<item>samplerRECT</item>
<item>packed</item>
<item>const</item>
<item>uniform</item>
<item>in</item>
<item>out</item>
<item>inout</item>
</list>
<list name="attention">
<item>FIXME</item>
<item>TODO</item>
<item>BUG</item>
</list>
<list name="stdlib">
<item>abs</item>
<item>acos</item>
<item>all</item>
<item>any</item>
<item>asin</item>
<item>atan</item>
<item>atan2</item>
<item>ceil</item>
<item>clamp</item>
<item>cos</item>
<item>cosh</item>
<item>cross</item>
<item>degrees</item> <!-- the spec got this wrong... -->
<item>determinant</item>
<item>dot</item>
<item>exp</item>
<item>exp2</item>
<item>floor</item>
<item>fmod</item>
<item>frac</item>
<item>frexp</item>
<item>isfinite</item>
<item>isinf</item>
<item>isnan</item>
<item>ldexp</item>
<item>lerp</item>
<item>lit</item>
<item>log</item>
<item>log2</item>
<item>log10</item>
<item>max</item>
<item>min</item>
<item>modf</item>
<item>mul</item>
<item>noise</item>
<item>pow</item>
<item>radians</item>
<item>round</item>
<item>rsqrt</item>
<item>saturate</item>
<item>sign</item>
<item>sin</item>
<item>sincos</item>
<item>sinh</item>
<item>smoothstep</item>
<item>step</item>
<item>sqrt</item>
<item>tan</item>
<item>tanh</item>
<item>transpose</item>
<item>distance</item>
<item>faceforward</item>
<item>length</item>
<item>normalize</item>
<item>reflect</item>
<item>refract</item>
<item>tex1D</item>
<item>tex1Dproj</item>
<item>tex2D</item>
<item>tex2Dproj</item>
<item>texRECT</item>
<item>texRECTproj</item>
<item>tex3D</item>
<item>tex3Dproj</item>
<item>texCUBE</item>
<item>texCUBEproj</item>
<item>ddx</item>
<item>ddy</item>
<item>debug</item>
<item>pack_2half</item>
<item>unpack_2half</item>
<item>pack_2ushort</item>
<item>unpack_2ushort</item>
<item>pack_4byte</item>
<item>unpack_4byte</item>
<item>pack_4ubyte</item>
<item>unpack_4ubyte</item>
</list>
<list name="stdstruct">
<item>fragout</item>
<item>fragout_float</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<keyword String="keywords" attribute="Keyword" context="#stay" />
<keyword String="binding" attribute="Binding" context="#stay" />
<keyword String="attention" attribute="Alert" context="#stay" />
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
<RegExpr String="(float|half|fixed|bool|int)[1234](x[1234])?" attribute="Data Type" context="#stay" />
<keyword String="types" attribute="Data Type" context="#stay" />
<keyword String="stdstruct" attribute="Data Type" context="#stay" />
<RegExpr String="[0123456789]*+[.][0123456789]++h" attribute="Half" context="#stay" />
<RegExpr String="[0123456789]*+[.][0123456789]++x" attribute="Fixed" context="#stay" />
<RegExpr String="[0123456789]*+[.][0123456789]++f?" attribute="Float" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
<keyword String="stdlib" attribute="StdFunction" context="#stay" />
<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*[(])" />
<RegExpr attribute="Swizzle" context="#stay" String="[.][rgbaxyzw]+(?=[\s/*-+&lt;&gt;])" />
<DetectChar attribute="Symbol" context="Member" char="." />
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
</context>
<context name="Member" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />
</context>
<context name="Commentar 1" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
<context name="Commentar 2" attribute="Comment" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Binding" defStyleNum="dsKeyword"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Function" defStyleNum="dsFunction" bold="0"/>
<itemData name="StdFunction" defStyleNum="dsBuiltIn" bold="1"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Half" defStyleNum="dsFloat"/>
<itemData name="Fixed" defStyleNum="dsFloat"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Swizzle" defStyleNum="dsNormal" bold="1"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Alert" defStyleNum="dsAlert" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" />
<comment name="multiLine" start="/*" end="*/" region="Comment" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="CGiS" version="9" kateversion="5.0" section="Sources" extensions="*.cgis" mimetype="">
<highlighting>
<list name="keywords">
<item>1D</item>
<item>2D</item>
<item>break</item>
<item>continue</item>
<item>do</item>
<item>else</item>
<item>extern</item>
<item>for</item>
<item>forall</item>
<item>foreach</item>
<item>function</item>
<item>if</item>
<item>in</item>
<item>inout</item>
<item>internal</item>
<item>out</item>
<item>reduction</item>
<item>return</item>
<item>struct</item>
<item>typedef</item>
<item>while</item>
</list>
<list name="types">
<item>bool</item>
<item>bool2</item>
<item>bool3</item>
<item>bool4</item>
<item>int</item>
<item>int2</item>
<item>int3</item>
<item>int4</item>
<item>half</item>
<item>half2</item>
<item>half3</item>
<item>half4</item>
<item>float</item>
<item>float2</item>
<item>float3</item>
<item>float4</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<DetectSpaces />
<StringDetect attribute="Keyword" context="#stay" String="PROGRAM" />
<StringDetect attribute="Keyword" context="Interface" String="INTERFACE" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Interface">
<DetectSpaces />
<StringDetect attribute="Keyword" context="Control" String="CONTROL" />
<StringDetect attribute="Keyword" context="Code" String="CODE" />
<IncludeRules context="Common" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Code">
<DetectSpaces />
<StringDetect attribute="Keyword" context="Control" String="CONTROL" />
<StringDetect attribute="Hint" context="Hint" String="#HINT" />
<IncludeRules context="Common" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Control">
<DetectSpaces />
<StringDetect attribute="Keyword" context="Code" String="CODE" />
<IncludeRules context="Common" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Common">
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<DetectIdentifier />
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
<Float attribute="Float" context="Float Suffixes"/>
<HlCOct attribute="Octal" context="#stay"/>
<HlCHex attribute="Hex" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
</context>
<context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
<StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
<IncludeRules context="##Doxygen" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment" />
</context>
<context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<AnyChar String="fF" attribute="Float" context="#pop"/>
</context>
<context attribute="Hint" lineEndContext="#stay" name="Hint">
<DetectSpaces />
<DetectChar attribute="Hint" context="#pop" char=")" />
<DetectIdentifier />
</context>
<context attribute="Region Marker" lineEndContext="#pop" name="Region Marker" />
<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Region Marker" defStyleNum="dsRegionMarker" />
<itemData name="Hint" defStyleNum="dsOthers"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" />
<comment name="multiLine" start="/*" end="*/" region="Comment" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="ChangeLog" version="4" kateversion="2.4" section="Other" extensions="ChangeLog" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
<highlighting>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<DetectChar attribute="Entry" context="entry" char="*" firstNonSpace="true" />
<RegExpr attribute="Date" context="line" String="^\d\d\d\d\s*-\s*\d\d\s*-\s*\d\d\s*" column="0"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="line">
<RegExpr attribute="Name" context="#stay" String="(\w\s*)+"/>
<RegExpr attribute="E-Mail" context="#pop" String="&lt;.*&gt;\s*$"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="entry">
<RegExpr attribute="Entry" context="#pop" String=".*:" minimal="true"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Name" defStyleNum="dsKeyword"/>
<itemData name="E-Mail" defStyleNum="dsOthers"/>
<itemData name="Date" defStyleNum="dsDataType"/>
<itemData name="Entry" defStyleNum="dsDecVal"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" />
</general>
</language>
@@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!-- Highlighting for Common Intermediate Language (CIL) files
https://en.wikipedia.org/wiki/Common_Intermediate_Language
-->
<language name="Common Intermediate Language (CIL)" version="3" kateversion="5.0" section="Assembler" extensions="*.il" author="Volker Krause (vkrause@kde.org)" license="MIT">
<highlighting>
<list name="keyword-list">
<item>cil</item>
<item>class</item>
<item>catch</item>
<item>default</item>
<item>extends</item>
<item>extern</item>
<item>finally</item>
<item>instance</item>
<item>managed</item>
<item>method</item>
<item>private</item>
<item>public</item>
<item>static</item>
<item>try</item>
<item>virtual</item>
</list>
<list name="type-list">
<item>bool</item>
<item>float32</item>
<item>float64</item>
<item>int8</item>
<item>int32</item>
<item>int64</item>
<item>object</item>
<item>string</item>
<item>unsigned</item>
<item>void</item>
</list>
<list name="meta-list">
<item>assembly</item>
<item>custom</item>
<item>entrypoint</item>
<item>field</item>
<item>locals</item>
<item>namespace</item>
<item>maxstack</item>
<item>module</item>
<item>property</item>
</list>
<!-- see https://en.wikipedia.org/wiki/List_of_CIL_instructions -->
<list name="op-list">
<item>add</item>
<item>and</item>
<item>arglist</item>
<item>beq</item>
<item>bge</item>
<item>bgt</item>
<item>ble</item>
<item>blt</item>
<item>bne</item>
<item>box</item>
<item>br</item>
<item>break</item>
<item>brfalse</item>
<item>brinst</item>
<item>brnull</item>
<item>brtrue</item>
<item>brzero</item>
<item>call</item>
<item>calli</item>
<item>callvirt</item>
<item>castclass</item>
<item>ceq</item>
<item>cgt</item>
<item>ckfinite</item>
<item>clt</item>
<item>constrained</item>
<item>conv</item>
<item>cpblk</item>
<item>cpobj</item>
<item>div</item>
<item>dup</item>
<item>endfault</item>
<item>endfilter</item>
<item>endfinally</item>
<item>initblk</item>
<item>initobj</item>
<item>isinst</item>
<item>jmp</item>
<item>ldarg</item>
<item>ldarga</item>
<item>ldc</item>
<item>ldelem</item>
<item>ldelema</item>
<item>ldfld</item>
<item>ldflda</item>
<item>ldftn</item>
<item>ldind</item>
<item>ldlen</item>
<item>ldloc</item>
<item>ldloca</item>
<item>ldnull</item>
<item>ldobj</item>
<item>ldsfld</item>
<item>ldsflda</item>
<item>ldstr</item>
<item>ldtoken</item>
<item>ldvirtftn</item>
<item>leave</item>
<item>localloc</item>
<item>mkrefany</item>
<item>mul</item>
<item>neg</item>
<item>newarr</item>
<item>newobj</item>
<item>nop</item>
<item>not</item>
<item>or</item>
<item>pop</item>
<item>readonly</item>
<item>refanytype</item>
<item>refanyval</item>
<item>rem</item>
<item>ret</item>
<item>rethrow</item>
<item>shl</item>
<item>shr</item>
<item>sizeof</item>
<item>starg</item>
<item>stelem</item>
<item>stfld</item>
<item>stind</item>
<item>stloc</item>
<item>stobj</item>
<item>stsfld</item>
<item>sub</item>
<item>switch</item>
<item>tail</item>
<item>throw</item>
<item>unaligned</item>
<item>unbox</item>
<item>volatile</item>
<item>xor</item>
</list>
<contexts>
<context name="normal-context" attribute="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Comment" char="/" char1="/" context="comment-context"/>
<Detect2Chars attribute="Comment" context="multiline-comment-context" char="/" char1="*" beginRegion="CommentRegion"/>
<keyword attribute="Keyword" context="#stay" String="keyword-list"/>
<keyword attribute="Data Type" context="#stay" String="type-list"/>
<keyword attribute="Meta Data" context="#stay" String="meta-list"/>
<keyword attribute="Instructions" context="#stay" String="op-list"/>
<DetectChar context="#stay" char="{" beginRegion="BlockRegion"/>
<DetectChar context="#stay" char="}" endRegion="BlockRegion"/>
<DetectChar attribute="String" context="string-context" char="&quot;"/>
<RegExpr attribute="Label" context="#stay" String="IL_[\da-f]+:"/>
</context>
<context name="string-context" attribute="String" lineEndContext="#pop">
<HlCStringChar attribute="Special Character" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context name="comment-context" lineEndContext="#pop" attribute="Comment">
<IncludeRules context="##Comments"/>
</context>
<context name="multiline-comment-context" lineEndContext="#stay" attribute="Comment">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentRegion"/>
<IncludeRules context="##Comments"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString" spellChecking="false"/>
<itemData name="Special Character" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Label" defStyleNum="dsPreprocessor" spellChecking="false"/>
<itemData name="Meta Data" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="Instructions" defStyleNum="dsFunction" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="multiLine" start="/*" end="*/" region="CommentRegion"/>
<comment name="singleLine" start="//"/>
</comments>
<keywords casesensitive="1"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
@@ -0,0 +1,306 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Cisco" version="9" kateversion="5.0" section="Configuration" extensions="*.cis" mimetype="text/cisco" author="Raphaël GRAPINET" license="LGPL">
<highlighting>
<list name = "commands">
<item>aaa</item>
<item>access-list</item>
<item>address</item>
<item>alias</item>
<item>arp</item>
<item>async-bootp</item>
<item>banner</item>
<item>boot</item>
<item>bridge</item>
<item>buffers</item>
<item>busy-message</item>
<item>call-history-mib</item>
<item>cdp</item>
<item>chat-script</item>
<item>class-map</item>
<item>clock</item>
<item>cns</item>
<item>config-register</item>
<item>controller</item>
<item>crypto</item>
<item>default</item>
<item>default-value</item>
<item>dialer</item>
<item>dialer-list</item>
<item>dnsix-dmdp</item>
<item>dnsix-nat</item>
<item>downward-compatible-config</item>
<item>enable</item>
<item>end</item>
<item>exception</item>
<item>exit</item>
<item>file</item>
<item>frame-relay</item>
<item>help</item>
<item>hostname</item>
<item>interface</item>
<item>ip</item>
<item>isdn</item>
<item>isdn-mib</item>
<item>kerberos</item>
<item>key</item>
<item>line</item>
<item>logging</item>
<item>login-string</item>
<item>map-class</item>
<item>map-list</item>
<item>memory-size</item>
<item>menu</item>
<item>modemcap</item>
<item>multilink</item>
<item>netbios</item>
<item>no</item>
<item>ntp</item>
<item>partition</item>
<item>policy-map</item>
<item>priority-list</item>
<item>privilege</item>
<item>process-max-time</item>
<item>prompt</item>
<item>queue-list</item>
<item>resume-string</item>
<item>rlogin</item>
<item>rmon</item>
<item>route-map</item>
<item>router</item>
<item>rtr</item>
<item>scheduler</item>
<item>service</item>
<item>snmp-server</item>
<item>sntp</item>
<item>stackmaker</item>
<item>state-machine</item>
<item>subscriber-policy</item>
<item>tacacs-server</item>
<item>template</item>
<item>terminal-queue</item>
<item>tftp-server</item>
<item>time-range</item>
<item>username</item>
<item>virtual-profile</item>
<item>virtual-template</item>
<item>vpdn</item>
<item>vpdn-group</item>
<item>x25</item>
<item>x29</item>
</list>
<list name = "parameters">
<item>accounting</item>
<item>accounting-list</item>
<item>accounting-threshold</item>
<item>accounting-transits</item>
<item>address-pool</item>
<item>as-path</item>
<item>audit</item>
<item>auth-proxy</item>
<item>authentication</item>
<item>authorization</item>
<item>bgp-community</item>
<item>bootp</item>
<item>cef</item>
<item>classless</item>
<item>community-list</item>
<item>default-gateway</item>
<item>default-network</item>
<item>dhcp</item>
<item>dhcp-server</item>
<item>domain-list</item>
<item>domain-lookup</item>
<item>domain-name</item>
<item>dvmrp</item>
<item>exec-callback</item>
<item>extcommunity-list</item>
<item>finger</item>
<item>flow-aggregation</item>
<item>flow-cache</item>
<item>flow-export</item>
<item>forward-protocol</item>
<item>ftp</item>
<item>gratuitous-arps</item>
<item>host</item>
<item>host-routing</item>
<item>hp-host</item>
<item>http</item>
<item>icmp</item>
<item>inspect</item>
<item>local</item>
<item>mrm</item>
<item>mroute</item>
<item>msdp</item>
<item>multicast</item>
<item>multicast-routing</item>
<item>name-server</item>
<item>nat</item>
<item>new-model</item>
<item>ospf</item>
<item>password</item>
<item>password-encryption</item>
<item>pgm</item>
<item>pim</item>
<item>port-map</item>
<item>prefix-list</item>
<item>radius</item>
<item>rcmd</item>
<item>reflexive-list</item>
<item>route</item>
<item>routing</item>
<item>rsvp</item>
<item>rtcp</item>
<item>sap</item>
<item>sdr</item>
<item>security</item>
<item>source-route</item>
<item>subnet-zero</item>
<item>tacacs</item>
<item>tcp</item>
<item>tcp-small-servers</item>
<item>telnet</item>
<item>tftp</item>
<item>timestamps</item>
<item>udp-small-servers</item>
<item>vrf</item>
<item>wccp</item>
</list>
<list name = "options">
<item>accounting</item>
<item>accounting-list</item>
<item>accounting-threshold</item>
<item>accounting-transits</item>
<item>address-pool</item>
<item>as-path</item>
<item>audit</item>
<item>auth-proxy</item>
<item>authentication</item>
<item>authorization</item>
<item>bgp-community</item>
<item>bootp</item>
<item>cef</item>
<item>classless</item>
<item>community-list</item>
<item>default-gateway</item>
<item>default-network</item>
<item>dhcp</item>
<item>dhcp-server</item>
<item>domain-list</item>
<item>domain-lookup</item>
<item>domain-name</item>
<item>dvmrp</item>
<item>exec-callback</item>
<item>extcommunity-list</item>
<item>finger</item>
<item>flow-aggregation</item>
<item>flow-cache</item>
<item>flow-export</item>
<item>forward-protocol</item>
<item>ftp</item>
<item>gratuitous-arps</item>
<item>host</item>
<item>host-routing</item>
<item>hp-host</item>
<item>http</item>
<item>icmp</item>
<item>inspect</item>
<item>local</item>
<item>mrm</item>
<item>mroute</item>
<item>msdp</item>
<item>multicast</item>
<item>multicast-routing</item>
<item>name-server</item>
<item>nat</item>
<item>new-model</item>
<item>ospf</item>
<item>password</item>
<item>password-encryption</item>
<item>pgm</item>
<item>pim</item>
<item>port-map</item>
<item>prefix-list</item>
<item>radius</item>
<item>rcmd</item>
<item>reflexive-list</item>
<item>route</item>
<item>routing</item>
<item>rsvp</item>
<item>rtcp</item>
<item>sap</item>
<item>sdr</item>
<item>security</item>
<item>source-route</item>
<item>subnet-zero</item>
<item>tacacs</item>
<item>tcp</item>
<item>tcp-small-servers</item>
<item>telnet</item>
<item>tftp</item>
<item>timestamps</item>
<item>udp-small-servers</item>
<item>vrf</item>
<item>wccp</item>
</list>
<contexts>
<context name = "Base" attribute = "Normal Text" lineEndContext = "#stay">
<WordDetect attribute="Keyword" context="#stay" String="done" insensitive="true" endRegion="dodone1"/>
<WordDetect attribute="Keyword" context="#stay" String="do" insensitive="true" beginRegion="dodone1"/>
<WordDetect attribute="Keyword" context="#stay" String="elif" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>
<WordDetect attribute="Keyword" context="#stay" String="if" insensitive="true" beginRegion="iffi1"/>
<WordDetect attribute="Keyword" context="#stay" String="fi" insensitive="true" endRegion="iffi1"/>
<WordDetect attribute="Keyword" context="#stay" String="case" insensitive="true" beginRegion="case1"/>
<WordDetect attribute="Keyword" context="#stay" String="esac" insensitive="true" endRegion="case1"/>
<RegExpr attribute="Keyword" context="#stay" String="^[^()]+\)" insensitive="true" beginRegion="subcase1" column="0"/>
<Detect2Chars attribute="Keyword" context="#stay" char=";" char1=";" endRegion="subcase1"/>
<DetectChar attribute="Keyword" context="#stay" char="{" beginRegion="func1"/>
<DetectChar attribute="Keyword" context="#stay" char="}" endRegion="func1"/>
<keyword String = "commands" attribute = "Command" context = "#stay"/>
<keyword String = "parameters" attribute = "Parameter" context = "#stay"/>
<keyword String = "options" attribute = "Keyword" context = "#stay"/>
<Int attribute = "Decimal" context = "#stay"/>
<RegExpr String = "\$[A-Za-z0-9_?{}!]+" attribute = "Parameter" context = "#stay"/>
<RangeDetect char = "&quot;" char1 = "&quot;" attribute = "String" context = "#stay"/>
<AnyChar String = "|&lt;&gt;=;" attribute = "Operator" context = "#stay"/>
<DetectChar char="'" attribute = "String" context = "Single Quote"/>
<DetectChar char="`" attribute = "Substitution" context = "Substitution"/>
<Detect2Chars attribute = "Normal Text" context = "#stay" char = "\" char1 = "#"/>
<AnyChar String="#!" attribute = "Comment" context="Comment"/>
</context>
<context name = "Single Quote" attribute = "String" lineEndContext="#stay">
<Detect2Chars char = "\" char1 = "\" attribute = "String" context = "#stay"/>
<Detect2Chars char = "\" char1 = "'" attribute = "String" context = "#stay"/>
<DetectChar char = "'" attribute = "String" context = "#pop"/>
</context>
<context name = "Substitution" attribute = "Substitution" lineEndContext="#stay">
<Detect2Chars char = "\" char1 = "\" attribute = "String" context = "#stay"/>
<Detect2Chars char = "\" char1 = "`" attribute = "String" context = "#stay"/>
<DetectChar char = "`" attribute = "Substitution" context = "#pop"/>
</context>
<context name = "Comment" attribute = "Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name = "Normal Text" defStyleNum = "dsNormal"/>
<itemData name = "Keyword" defStyleNum = "dsKeyword"/>
<itemData name = "Decimal" defStyleNum = "dsDecVal"/>
<itemData name = "String" defStyleNum = "dsString"/>
<itemData name = "Comment" defStyleNum = "dsComment"/>
<itemData name = "Substitution" defStyleNum = "dsOthers"/>
<itemData name = "Parameter" defStyleNum = "dsVariable"/>
<itemData name = "Operator" defStyleNum = "dsOperator"/>
<itemData name = "Command" defStyleNum = "dsNormal"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="!"/>
</comments>
<keywords casesensitive="0"/>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,498 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Clipper" version="8" kateversion="5.0" section="Sources" extensions="*.prg;*.PRG;*.ch" mimetype="text/x-clipper-src" priority="2" author="Andrey Cherepanov (sibskull@mail.ru)" license="GPL">
<highlighting>
<list name="keywords">
<!-- compiler directives and structures -->
<item>.and.</item>
<item>announce</item>
<item>begin</item>
<item>case</item>
<item>command</item>
<item>define</item>
<item>do</item>
<item>elseif</item>
<item>else</item>
<item>endcase</item>
<item>enddo</item>
<item>endif</item>
<item>error</item>
<item>exit</item>
<item>field</item>
<item>.f.</item>
<item>for</item>
<item>function</item>
<item>ifdef</item>
<item>if</item>
<item>include</item>
<item>init</item>
<item>inndef</item>
<item>local</item>
<item>memvar</item>
<item>next</item>
<item>nil</item>
<item>.not.</item>
<item>.or.</item>
<item>other</item>
<item>parameters</item>
<item>private</item>
<item>procedure</item>
<item>public</item>
<item>request</item>
<item>return</item>
<item>sequence</item>
<item>static</item>
<item>stdout</item>
<item>.t.</item>
<item>traslate</item>
<item>undef</item>
<item>while</item>
<item>xcommand</item>
<item>xtranslate</item>
</list>
<list name="commands">
<!-- Commands -->
<item>accept</item>
<item>all</item>
<item>alternate</item>
<item>append</item>
<item>ascending</item>
<item>average</item>
<item>bell</item>
<item>blank</item>
<item>box</item>
<item>century</item>
<item>clear</item>
<item>close</item>
<item>coclor</item>
<item>color</item>
<item>commit</item>
<item>confirm</item>
<item>console</item>
<item>continue</item>
<item>copy</item>
<item>count</item>
<item>create</item>
<item>cursor</item>
<item>date</item>
<item>decimals</item>
<item>default</item>
<item>deleted</item>
<item>delete</item>
<item>delimiters</item>
<item>descending</item>
<item>device</item>
<item>display</item>
<item>do</item>
<item>eject</item>
<item>epoch</item>
<item>erase</item>
<item>escape</item>
<item>eval</item>
<item>every</item>
<item>exact</item>
<item>extended</item>
<item>file</item>
<item>filter</item>
<item>fixed</item>
<item>form</item>
<item>from</item>
<item>get</item>
<item>gets</item>
<item>go</item>
<item>goto</item>
<item>index</item>
<item>input</item>
<item>intensity</item>
<item>?</item>
<item>??</item>
<item>@</item>
<item>join</item>
<item>keyboard</item>
<item>key</item>
<item>label</item>
<item>list</item>
<item>locate</item>
<item>margin</item>
<item>memory</item>
<item>menu</item>
<item>message</item>
<item>new</item>
<item>on</item>
<item>order</item>
<item>pack</item>
<item>path</item>
<item>pict</item>
<item>printer</item>
<item>prompt</item>
<item>quit</item>
<item>range</item>
<item>read</item>
<item>recall</item>
<item>record</item>
<item>reindex</item>
<item>relation</item>
<item>release</item>
<item>rename</item>
<item>replace</item>
<item>report</item>
<item>rest</item>
<item>restore</item>
<item>run</item>
<item>save</item>
<item>say</item>
<item>scoreboard</item>
<item>seek</item>
<item>select</item>
<item>set</item>
<item>skip</item>
<item>softseek</item>
<item>sort</item>
<item>structure</item>
<item>sum</item>
<item>tag</item>
<item>to</item>
<item>total</item>
<item>typeahead</item>
<item>type</item>
<item>unique</item>
<item>unlock</item>
<item>update</item>
<item>use</item>
<item>valid</item>
<item>wait</item>
<item>when</item>
<item>with</item>
<item>wrap</item>
<item>zap</item>
</list>
<list name="functions">
<!-- Functions -->
<item>aadd</item>
<item>abs</item>
<item>achoice</item>
<item>aclone</item>
<item>acopy</item>
<item>adel</item>
<item>aeval</item>
<item>afill</item>
<item>ains</item>
<item>alert</item>
<item>alias</item>
<item>alltrim</item>
<item>altd</item>
<item>array</item>
<item>ascan</item>
<item>asize</item>
<item>asort</item>
<item>atail</item>
<item>at</item>
<item>bin2i</item>
<item>bin2l</item>
<item>bin2w</item>
<item>bof</item>
<item>break</item>
<item>browse</item>
<item>cdowchr</item>
<item>chr</item>
<item>cmonth</item>
<item>col</item>
<item>colorselect</item>
<item>ctod</item>
<item>curdir</item>
<item>date</item>
<item>day</item>
<item>dbappend</item>
<item>dbclearall</item>
<item>dbclearfilter</item>
<item>dbclearindex</item>
<item>dbclearrelation</item>
<item>dbcloseall</item>
<item>dbclosearea</item>
<item>dbcommitall</item>
<item>dbcommit</item>
<item>dbcreateindex</item>
<item>dbcreate</item>
<item>dbdelete</item>
<item>dbedit</item>
<item>dbeval</item>
<item>dbfilter</item>
<item>dbf</item>
<item>dbgobottom</item>
<item>dbgoto</item>
<item>dbgotop</item>
<item>dbrecall</item>
<item>dbreindex</item>
<item>dbrelation</item>
<item>dbrlock</item>
<item>dbrlocklist</item>
<item>dbrselect</item>
<item>dbrunlock</item>
<item>dbseek</item>
<item>dbselectarea</item>
<item>dbsetfilter</item>
<item>dbsetindex</item>
<item>dbsetorder</item>
<item>dbsetrelation</item>
<item>dbskip</item>
<item>dbstruct</item>
<item>dbunlockall</item>
<item>dbunlock</item>
<item>dbusearea</item>
<item>deleted</item>
<item>descend</item>
<item>devout</item>
<item>devpos</item>
<item>directory</item>
<item>dispbegin</item>
<item>dispbox</item>
<item>dispcount</item>
<item>dispend</item>
<item>dispout</item>
<item>dispspace</item>
<item>doserror</item>
<item>dow</item>
<item>dtoc</item>
<item>dtos</item>
<item>empty</item>
<item>eof</item>
<item>errorblock</item>
<item>errorinhandler</item>
<item>errorlevel</item>
<item>eval</item>
<item>exp</item>
<item>fclose</item>
<item>fcount</item>
<item>fcreate</item>
<item>ferase</item>
<item>ferror</item>
<item>fieldblock</item>
<item>fieldget</item>
<item>field</item>
<item>fieldname</item>
<item>fieldpos</item>
<item>fieldput</item>
<item>fieldwblock</item>
<item>file</item>
<item>flock</item>
<item>fopen</item>
<item>found</item>
<item>fread</item>
<item>freadstr</item>
<item>frename</item>
<item>fseek</item>
<item>fwrite</item>
<item>getactive</item>
<item>getenv</item>
<item>hardcr</item>
<item>header</item>
<item>i2bin</item>
<item>iif</item>
<item>indexext</item>
<item>indexkey</item>
<item>indexord</item>
<item>inkey</item>
<item>int</item>
<item>isalpha</item>
<item>iscolor</item>
<item>isdigit</item>
<item>islower</item>
<item>isprinter</item>
<item>isupper</item>
<item>l2bin</item>
<item>lastkey</item>
<item>lastrec</item>
<item>left</item>
<item>len</item>
<item>lock</item>
<item>log</item>
<item>lower</item>
<item>ltrim</item>
<item>lupdate</item>
<item>maxcol</item>
<item>max</item>
<item>maxrow</item>
<item>memoedit</item>
<item>memoline</item>
<item>memoread</item>
<item>memory</item>
<item>memotran</item>
<item>memowrit</item>
<item>memvarblock</item>
<item>min</item>
<item>mlcount</item>
<item>mlctopos</item>
<item>mlpos</item>
<item>mod</item>
<item>month</item>
<item>mpostolc</item>
<item>neterr</item>
<item>netname</item>
<item>nextkey</item>
<item>nosnow</item>
<item>ordbagext</item>
<item>ordbagname</item>
<item>ordcreate</item>
<item>orddestroy</item>
<item>ordfor</item>
<item>ordkey</item>
<item>ordlistadd</item>
<item>ordlistclear</item>
<item>ordlistrebuild</item>
<item>ordname</item>
<item>ordnumber</item>
<item>ordsetfocus</item>
<item>os</item>
<item>outerr</item>
<item>outstd</item>
<item>padc</item>
<item>padl</item>
<item>padr</item>
<item>pcol</item>
<item>pcount</item>
<item>proclineprocname</item>
<item>prow</item>
<item>qout</item>
<item>qqout</item>
<item>rat</item>
<item>rddlist</item>
<item>rddname</item>
<item>rddsetdefault</item>
<item>readexit</item>
<item>readinsert</item>
<item>readmodal</item>
<item>readvar</item>
<item>reccount</item>
<item>recno</item>
<item>recsize</item>
<item>replicate</item>
<item>restscreen</item>
<item>right</item>
<item>rlock</item>
<item>round</item>
<item>row</item>
<item>rtrim</item>
<item>savesreen</item>
<item>scroll</item>
<item>seconds</item>
<item>select</item>
<item>setblink</item>
<item>setcancel</item>
<item>setcolor</item>
<item>setcursor</item>
<item>setkey</item>
<item>setmode</item>
<item>setpos</item>
<item>setprc</item>
<item>soundex</item>
<item>space</item>
<item>sqrt</item>
<item>str</item>
<item>strtran</item>
<item>stuff</item>
<item>substr</item>
<item>time</item>
<item>tone</item>
<item>transform</item>
<item>trim</item>
<item>updated</item>
<item>upper</item>
<item>used</item>
<item>val</item>
<item>valtype</item>
<item>version</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<WordDetect attribute="Keyword" context="#stay" String="function" insensitive="true" beginRegion="regFunction" />
<WordDetect attribute="Keyword" context="#stay" column="0" String="return" insensitive="true" endRegion="regFunction" />
<RegExpr attribute="Keyword" context="#stay" String="\bbegin\s+sequence\b" insensitive="true" beginRegion="regSequence" />
<RegExpr attribute="Keyword" context="#stay" String="\bend\s+sequence\b" insensitive="true" endRegion="regSequence" />
<RegExpr attribute="Keyword" context="#stay" String="\bdo\s+case\b" insensitive="true" beginRegion="regDoCase" />
<WordDetect attribute="Keyword" context="#stay" String="endcase" insensitive="true" endRegion="regDoCase" />
<RegExpr attribute="Keyword" context="#stay" String="\bdo\s+while\b" insensitive="true" beginRegion="regDoWhile" />
<WordDetect attribute="Keyword" context="#stay" String="enddo" insensitive="true" endRegion="regDoWhile" />
<WordDetect attribute="Keyword" context="#stay" String="for" insensitive="true" beginRegion="regFor" />
<WordDetect attribute="Keyword" context="#stay" String="next" insensitive="true" endRegion="regFor" />
<WordDetect attribute="Keyword" context="#stay" String="if" insensitive="true" beginRegion="regIf" />
<WordDetect attribute="Keyword" context="#stay" String="elseif" insensitive="true" endRegion="regIf" beginRegion="regIf" />
<WordDetect attribute="Keyword" context="#stay" String="else" insensitive="true" endRegion="regIf" beginRegion="regIf" />
<WordDetect attribute="Keyword" context="#stay" String="endif" insensitive="true" endRegion="regIf" />
<WordDetect attribute="Keyword" context="#stay" String="switch" insensitive="true" beginRegion="regSwitch" />
<WordDetect attribute="Keyword" context="#stay" String="endswitch" insensitive="true" endRegion="regSwitch" />
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Command" context="#stay" String="commands"/>
<keyword attribute="Function" context="#stay" String="functions"/>
<HlCHex attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<RegExpr attribute="Region Marker" context="#stay" String="//\s*BEGIN.*$" beginRegion="regMarker"/>
<RegExpr attribute="Region Marker" context="#stay" String="//\s*END.*$" endRegion="regMarker"/>
<Detect2Chars attribute="Comment" context="LineComment" char="/" char1="/"/>
<RegExpr attribute="Comment" context="LineComment" String="^\s*\*.*$" column="0"/>
<Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment2" />
<AnyChar attribute="Symbol" context="#stay" String="!%&amp;()+,-&lt;:=&gt;[]^~"/>
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#"/>
<Detect2Chars attribute="Eval Block" context="EvalBlock" char="{" char1="|"/>
<DetectChar attribute="String" context="String2" char="'"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<LineContinue attribute="String" context="#stay"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="LineComment">
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="BlockComment">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />
<IncludeRules context="##Comments" />
</context>
<context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
<LineContinue attribute="Preprocessor" context="#stay"/>
<RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
<RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
<RegExpr attribute="Region Marker" context="#stay" String="//\s*BEGIN.*$" beginRegion="regMarker"/>
<RegExpr attribute="Region Marker" context="#stay" String="//\s*END.*$" endRegion="regMarker"/>
<Detect2Chars attribute="Comment" context="LineComment" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment2" />
</context>
<context attribute="Eval Block" lineEndContext="#stay" name="EvalBlock">
<LineContinue attribute="Eval Block" context="#stay"/>
<DetectChar attribute="Eval Block" context="#pop" char="}" />
</context>
<context attribute="String" lineEndContext="#pop" name="String2">
<LineContinue attribute="String" context="#stay"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Command" defStyleNum="dsDataType"/>
<itemData name="Function" defStyleNum="dsFunction"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>
<itemData name="Prep. Lib" defStyleNum="dsImport"/>
<itemData name="Eval Block" defStyleNum="dsOthers"/>
<itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" />
<comment name="multiLine" start="/*" end="*/" region="Comment2" />
</comments>
<keywords casesensitive="0" weakDeliminator="?." />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="CLIST" version="4" kateversion="5.0" section="Scripts" extensions="*.clist;*.CLIST" mimetype="" license="MIT">
<!--
Command LIST, or CLIST, is the scripting language for TSO (Time Sharing Option) on IBM mainframes running z/OS.
Developers can use CLISTs to automate repetitive tasks or to automate complex TSO commands.
-->
<highlighting>
<list name="control">
<item>ATTN</item>
<item>CONTROL</item>
<item>DATA-ENDDATA</item>
<item>DATA-PROMPT</item>
<item>ERROR</item>
<item>EXIT</item>
<item>GLOBAL</item>
<item>GOTO</item>
<item>NGLOBAL</item>
<item>PROC</item>
<item>RETURN</item>
<item>SYSCALL</item>
<item>SYSREF</item>
<item>TERMIN</item>
<item>WRITE</item>
<item>WRITENR</item>
</list>
<list name="assignment">
<item>READ</item>
<item>READDVAL</item>
<item>SET</item>
<item>LISTDSI</item>
</list>
<list name="flowcontrol">
<item>DO</item>
<item>IF</item>
<item>TO</item>
<item>THEN</item>
<item>END</item>
<item>ELSE</item>
<item>SELECT</item>
</list>
<list name="IO">
<item>CLOSFILE</item>
<item>GETFILE</item>
<item>OPENFILE</item>
<item>PUTFILE</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<keyword attribute="Control" context="#stay" String="control" />
<keyword attribute="Assignment" context="#stay" String="assignment" />
<keyword attribute="Control Flow" context="#stay" String="flowcontrol" />
<keyword attribute="inputOutput" context="#stay" String="IO" />
<RegExpr attribute="Variable" context="#stay" insensitive="true" String="&amp;+[A-Z0-9]*"/>
<RegExpr attribute="Number" context="#stay" insensitive="true" String="\b(\d+)\b"/>
<RegExpr attribute="String" context="#stay" insensitive="true" String="(?&lt;=WRITE).*"/>
<AnyChar attribute="String" context="String" String="&apos;&quot;"/>
<Detect2Chars attribute="Comment" context="comments" char="/" char1="*" beginRegion="Comment"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="comments">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<DetectChar attribute="String" context="#pop" char="&apos;"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Control" defStyleNum="dsControlFlow"/>
<itemData name="Assignment" defStyleNum="dsBuiltIn"/>
<itemData name="Control Flow" defStyleNum="dsControlFlow"/>
<itemData name="inputOutput" defStyleNum="dsKeyword"/>
<itemData name="Variable" defStyleNum="dsVariable"/>
<itemData name="Number" defStyleNum="dsDataType"/>
<itemData name="String" defStyleNum="dsString"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="multiLine" start="/*" end="*/" region="Comment"/>
</comments>
<keywords casesensitive="0" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,812 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
This file is part of KDE's kate project.
copyright : (C) 2004 by Dominik Haumann, (C) 2011 by Caspar Hasenclever
**********************************************************************
* 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. *
**********************************************************************
-->
<language version="17" kateversion="5.0" name="Clojure" alternativeNames="CLJ" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">
<highlighting>
<list name="definitions">
<item>def</item>
<item>def-</item>
<item>defalias</item>
<item>defhinted</item>
<item>definline</item>
<item>defmethod</item>
<item>defmulti</item>
<item>defnk</item>
<item>defn-memo</item>
<item>defonce</item>
<item>defonce-</item>
<item>defprotocol</item>
<item>defrecord</item>
<item>defstruct</item>
<item>defstruct-</item>
<item>deftest</item>
<item>deftest-</item>
<item>deftype</item>
<item>defunbound</item>
<item>defunbound-</item>
<item>defvar</item>
<item>defvar-</item>
</list>
<list name="documentable_definitions">
<item>defn</item>
<item>defn-</item>
<item>defmacro</item>
<item>defmacro-</item>
</list>
<list name="keywords">
<item>&lt;</item>
<item>&lt;=</item>
<item>=</item>
<item>==</item>
<item>&gt;</item>
<item>&gt;=</item>
<item>-</item>
<item>-'</item>
<item>-&gt;</item>
<item>-&gt;&gt;</item>
<item>/</item>
<item>.</item>
<item>..</item>
<item>*</item>
<item>*'</item>
<item>+</item>
<item>+'</item>
<item>accessor</item>
<item>aclone</item>
<item>add-classpath</item>
<item>add-watch</item>
<item>agent</item>
<item>agent-errors</item>
<item>aget</item>
<item>alength</item>
<item>alias</item>
<item>all-ns</item>
<item>alter</item>
<item>alter-meta!</item>
<item>alter-var-root</item>
<item>amap</item>
<item>ancestors</item>
<item>and</item>
<item>append-child</item>
<item>apply</item>
<item>apply-template</item>
<item>are</item>
<item>areduce</item>
<item>array-map</item>
<item>as-&gt;</item>
<item>aset</item>
<item>aset-boolean</item>
<item>aset-byte</item>
<item>aset-char</item>
<item>aset-double</item>
<item>aset-float</item>
<item>aset-int</item>
<item>aset-long</item>
<item>aset-short</item>
<item>assert</item>
<item>assert-any</item>
<item>assert-expr</item>
<item>assert-predicate</item>
<item>assoc</item>
<item>assoc!</item>
<item>associative?</item>
<item>assoc-in</item>
<item>atom</item>
<item>atom?</item>
<item>attrs</item>
<item>await</item>
<item>await1</item>
<item>await-for</item>
<item>bases</item>
<item>bean</item>
<item>bigdec</item>
<item>bigint</item>
<item>binding</item>
<item>bit-and</item>
<item>bit-and-not</item>
<item>bit-clear</item>
<item>bit-flip</item>
<item>bit-not</item>
<item>bit-or</item>
<item>bit-set</item>
<item>bit-shift-left</item>
<item>bit-shift-right</item>
<item>bit-test</item>
<item>bit-xor</item>
<item>boolean</item>
<item>boolean-array</item>
<item>booleans</item>
<item>bound-fn</item>
<item>bound-fn*</item>
<item>branch?</item>
<item>butlast</item>
<item>byte</item>
<item>byte-array</item>
<item>bytes</item>
<item>case</item>
<item>cast</item>
<item>catch</item>
<item>char</item>
<item>char?</item>
<item>char-array</item>
<item>char-escape-string</item>
<item>char-name-string</item>
<item>chars</item>
<item>children</item>
<item>chunk</item>
<item>chunk-append</item>
<item>chunk-buffer</item>
<item>chunk-cons</item>
<item>chunked-seq?</item>
<item>chunk-first</item>
<item>chunk-next</item>
<item>chunk-rest</item>
<item>class</item>
<item>class?</item>
<item>clear-agent-errors</item>
<item>clojure-version</item>
<item>coll?</item>
<item>collection-tag</item>
<item>comment</item>
<item>commute</item>
<item>comp</item>
<item>comparator</item>
<item>compare</item>
<item>compare-and-set!</item>
<item>compile</item>
<item>complement</item>
<item>compose-fixtures</item>
<item>concat</item>
<item>cond</item>
<item>condp</item>
<item>conj</item>
<item>conj!</item>
<item>cons</item>
<item>constantly</item>
<item>construct-proxy</item>
<item>contains?</item>
<item>content</item>
<item>content-handler</item>
<item>count</item>
<item>counted?</item>
<item>create-ns</item>
<item>create-struct</item>
<item>cycle</item>
<item>dec</item>
<item>dec'</item>
<item>decimal?</item>
<item>declare</item>
<item>delay</item>
<item>delay?</item>
<item>deliver</item>
<item>deref</item>
<item>derive</item>
<item>descendants</item>
<item>destructure</item>
<item>difference</item>
<item>disj</item>
<item>disj!</item>
<item>dissoc</item>
<item>dissoc!</item>
<item>distinct</item>
<item>distinct?</item>
<item>do</item>
<item>doall</item>
<item>doc</item>
<item>dorun</item>
<item>doseq</item>
<item>dosync</item>
<item>do-template</item>
<item>dotimes</item>
<item>doto</item>
<item>double</item>
<item>double-array</item>
<item>doubles</item>
<item>down</item>
<item>drop</item>
<item>drop-last</item>
<item>drop-while</item>
<item>e</item>
<item>edit</item>
<item>element</item>
<item>emit</item>
<item>emit-element</item>
<item>empty</item>
<item>empty?</item>
<item>end?</item>
<item>ensure</item>
<item>enumeration-seq</item>
<item>eval</item>
<item>even?</item>
<item>every?</item>
<item>extend</item>
<item>extenders</item>
<item>extend-protocol</item>
<item>extends?</item>
<item>extend-type</item>
<item>false?</item>
<item>ffirst</item>
<item>file-position</item>
<item>file-seq</item>
<item>filter</item>
<item>filterv</item>
<item>finally</item>
<item>find</item>
<item>find-doc</item>
<item>find-ns</item>
<item>find-var</item>
<item>first</item>
<item>float</item>
<item>float?</item>
<item>float-array</item>
<item>floats</item>
<item>flush</item>
<item>fn</item>
<item>fn?</item>
<item>fnext</item>
<item>fnil</item>
<item>for</item>
<item>force</item>
<item>format</item>
<item>frequencies</item>
<item>function?</item>
<item>future</item>
<item>future?</item>
<item>future-call</item>
<item>future-cancel</item>
<item>future-cancelled?</item>
<item>future-done?</item>
<item>gen-and-load-class</item>
<item>gen-and-save-class</item>
<item>gen-class</item>
<item>gen-interface</item>
<item>gensym</item>
<item>get</item>
<item>get-child</item>
<item>get-child-count</item>
<item>get-in</item>
<item>get-method</item>
<item>get-possibly-unbound-var</item>
<item>get-proxy-class</item>
<item>get-thread-bindings</item>
<item>get-validator</item>
<item>group-by</item>
<item>handle</item>
<item>handler-case</item>
<item>hash</item>
<item>hash-map</item>
<item>hash-set</item>
<item>identical?</item>
<item>identity</item>
<item>if</item>
<item>if-let</item>
<item>ifn?</item>
<item>if-not</item>
<item>import</item>
<item>inc</item>
<item>inc'</item>
<item>inc-report-counter</item>
<item>index</item>
<item>init-proxy</item>
<item>in-ns</item>
<item>insert-child</item>
<item>insert-left</item>
<item>insert-right</item>
<item>inspect</item>
<item>inspect-table</item>
<item>inspect-tree</item>
<item>instance?</item>
<item>int</item>
<item>int-array</item>
<item>integer?</item>
<item>interleave</item>
<item>intern</item>
<item>interpose</item>
<item>intersection</item>
<item>into</item>
<item>into-array</item>
<item>ints</item>
<item>io!</item>
<item>is</item>
<item>isa?</item>
<item>is-leaf</item>
<item>iterate</item>
<item>iterator-seq</item>
<item>join</item>
<item>join-fixtures</item>
<item>juxt</item>
<item>key</item>
<item>keys</item>
<item>keyword</item>
<item>keyword?</item>
<item>keywordize-keys</item>
<item>last</item>
<item>lazy-cat</item>
<item>lazy-seq</item>
<item>left</item>
<item>leftmost</item>
<item>lefts</item>
<item>let</item>
<item>letfn</item>
<item>line-seq</item>
<item>list</item>
<item>list*</item>
<item>list?</item>
<item>list-model</item>
<item>list-provider</item>
<item>load</item>
<item>loaded-libs</item>
<item>load-file</item>
<item>load-reader</item>
<item>load-script</item>
<item>load-string</item>
<item>locking</item>
<item>long</item>
<item>long-array</item>
<item>longs</item>
<item>loop</item>
<item>macroexpand</item>
<item>macroexpand-1</item>
<item>macroexpand-all</item>
<item>main</item>
<item>make-array</item>
<item>make-hierarchy</item>
<item>make-node</item>
<item>map</item>
<item>map?</item>
<item>mapcat</item>
<item>mapv</item>
<item>map-invert</item>
<item>max</item>
<item>max-key</item>
<item>memfn</item>
<item>memoize</item>
<item>merge</item>
<item>merge-with</item>
<item>meta</item>
<item>methods</item>
<item>method-sig</item>
<item>min</item>
<item>min-key</item>
<item>mod</item>
<item>name</item>
<item>namespace</item>
<item>neg?</item>
<item>newline</item>
<item>next</item>
<item>nfirst</item>
<item>nil?</item>
<item>nnext</item>
<item>node</item>
<item>not</item>
<item>not=</item>
<item>not-any?</item>
<item>not-empty</item>
<item>not-every?</item>
<item>ns</item>
<item>ns-aliases</item>
<item>ns-imports</item>
<item>ns-interns</item>
<item>ns-map</item>
<item>ns-name</item>
<item>ns-publics</item>
<item>ns-refers</item>
<item>ns-resolve</item>
<item>ns-unalias</item>
<item>ns-unmap</item>
<item>nth</item>
<item>nthnext</item>
<item>num</item>
<item>number?</item>
<item>odd?</item>
<item>or</item>
<item>parents</item>
<item>partial</item>
<item>partition</item>
<item>path</item>
<item>pcalls</item>
<item>peek</item>
<item>persistent!</item>
<item>pmap</item>
<item>pop</item>
<item>pop!</item>
<item>pop-thread-bindings</item>
<item>pos?</item>
<item>postwalk</item>
<item>postwalk-demo</item>
<item>postwalk-replace</item>
<item>pr</item>
<item>prefer-method</item>
<item>prefers</item>
<item>prev</item>
<item>prewalk</item>
<item>prewalk-demo</item>
<item>prewalk-replace</item>
<item>primitives-classnames</item>
<item>print</item>
<item>print-cause-trace</item>
<item>print-ctor</item>
<item>print-doc</item>
<item>print-dup</item>
<item>printf</item>
<item>println</item>
<item>println-str</item>
<item>print-method</item>
<item>print-namespace-doc</item>
<item>print-simple</item>
<item>print-special-doc</item>
<item>print-stack-trace</item>
<item>print-str</item>
<item>print-throwable</item>
<item>print-trace-element</item>
<item>prn</item>
<item>prn-str</item>
<item>project</item>
<item>promise</item>
<item>proxy</item>
<item>proxy-call-with-super</item>
<item>proxy-mappings</item>
<item>proxy-name</item>
<item>proxy-super</item>
<item>pr-str</item>
<item>push-thread-bindings</item>
<item>pvalues</item>
<item>quot</item>
<item>rand</item>
<item>rand-int</item>
<item>rand-nth</item>
<item>range</item>
<item>ratio?</item>
<item>rational?</item>
<item>rationalize</item>
<item>read</item>
<item>read-line</item>
<item>read-string</item>
<item>recur</item>
<item>reduce</item>
<item>ref</item>
<item>refer</item>
<item>refer-clojure</item>
<item>ref-history-count</item>
<item>re-find</item>
<item>ref-max-history</item>
<item>ref-min-history</item>
<item>ref-set</item>
<item>re-groups</item>
<item>reify</item>
<item>release-pending-sends</item>
<item>rem</item>
<item>re-matcher</item>
<item>re-matches</item>
<item>remove</item>
<item>remove-method</item>
<item>remove-ns</item>
<item>remove-watch</item>
<item>rename</item>
<item>rename-keys</item>
<item>re-pattern</item>
<item>repeat</item>
<item>repeatedly</item>
<item>repl</item>
<item>replace</item>
<item>repl-caught</item>
<item>repl-exception</item>
<item>replicate</item>
<item>repl-prompt</item>
<item>repl-read</item>
<item>report</item>
<item>require</item>
<item>re-seq</item>
<item>reset!</item>
<item>reset-meta!</item>
<item>resolve</item>
<item>rest</item>
<item>resultset-seq</item>
<item>reverse</item>
<item>reversible?</item>
<item>right</item>
<item>rightmost</item>
<item>rights</item>
<item>root</item>
<item>rseq</item>
<item>rsubseq</item>
<item>run-all-tests</item>
<item>run-tests</item>
<item>satisfies?</item>
<item>second</item>
<item>select</item>
<item>select-keys</item>
<item>send</item>
<item>send-off</item>
<item>seq</item>
<item>seq?</item>
<item>seque</item>
<item>sequence</item>
<item>sequential?</item>
<item>seq-zip</item>
<item>set</item>
<item>set?</item>
<item>set-test</item>
<item>set-validator!</item>
<item>short</item>
<item>short-array</item>
<item>shorts</item>
<item>shutdown-agents</item>
<item>skip-if-eol</item>
<item>skip-whitespace</item>
<item>slurp</item>
<item>some</item>
<item>sort</item>
<item>sort-by</item>
<item>sorted?</item>
<item>sorted-map</item>
<item>sorted-map-by</item>
<item>sorted-set</item>
<item>sorted-set-by</item>
<item>special-form-anchor</item>
<item>special-symbol?</item>
<item>split-at</item>
<item>split-with</item>
<item>str</item>
<item>stream?</item>
<item>string?</item>
<item>stringify-keys</item>
<item>struct</item>
<item>struct-map</item>
<item>subs</item>
<item>subseq</item>
<item>subvec</item>
<item>successful?</item>
<item>supers</item>
<item>swap!</item>
<item>symbol</item>
<item>symbol?</item>
<item>sync</item>
<item>syntax-symbol-anchor</item>
<item>take</item>
<item>take-last</item>
<item>take-nth</item>
<item>take-while</item>
<item>test</item>
<item>test-all-vars</item>
<item>testing</item>
<item>testing-contexts-str</item>
<item>testing-vars-str</item>
<item>test-ns</item>
<item>test-var</item>
<item>the-ns</item>
<item>throw</item>
<item>time</item>
<item>to-array</item>
<item>to-array-2d</item>
<item>trampoline</item>
<item>transient</item>
<item>tree-seq</item>
<item>true?</item>
<item>try</item>
<item>try-expr</item>
<item>type</item>
<item>unchecked-add</item>
<item>unchecked-dec</item>
<item>unchecked-divide</item>
<item>unchecked-inc</item>
<item>unchecked-multiply</item>
<item>unchecked-negate</item>
<item>unchecked-remainder</item>
<item>unchecked-subtract</item>
<item>underive</item>
<item>unimport</item>
<item>union</item>
<item>unquote</item>
<item>unquote-splicing</item>
<item>up</item>
<item>update</item>
<item>update-in</item>
<item>update-proxy</item>
<item>use</item>
<item>use-fixtures</item>
<item>val</item>
<item>vals</item>
<item>var?</item>
<item>var-get</item>
<item>var-set</item>
<item>vary-meta</item>
<item>vec</item>
<item>vector</item>
<item>vector?</item>
<item>vector-of</item>
<item>walk</item>
<item>when</item>
<item>when-first</item>
<item>when-let</item>
<item>when-not</item>
<item>while</item>
<item>with-bindings</item>
<item>with-bindings*</item>
<item>with-in-str</item>
<item>with-loading-context</item>
<item>with-local-vars</item>
<item>with-meta</item>
<item>with-open</item>
<item>with-out-str</item>
<item>with-precision</item>
<item>with-test</item>
<item>with-test-out</item>
<item>xml-seq</item>
<item>zero?</item>
<item>zipmap</item>
</list>
<list name="variables">
<item>*1</item>
<item>*2</item>
<item>*3</item>
<item>*agent*</item>
<item>*allow-unresolved-vars*</item>
<item>*assert*</item>
<item>*clojure-version*</item>
<item>*command-line-args*</item>
<item>*compile-files*</item>
<item>*compile-path*</item>
<item>*current*</item>
<item>*e</item>
<item>*err*</item>
<item>*file*</item>
<item>*flush-on-newline*</item>
<item>*in*</item>
<item>*initial-report-counters*</item>
<item>*load-tests*</item>
<item>*macro-meta*</item>
<item>*math-context*</item>
<item>*ns*</item>
<item>*out*</item>
<item>*print-dup*</item>
<item>*print-length*</item>
<item>*print-level*</item>
<item>*print-meta*</item>
<item>*print-readably*</item>
<item>*read-eval*</item>
<item>*report-counters*</item>
<item>*sb*</item>
<item>*source-path*</item>
<item>*stack*</item>
<item>*stack-trace-depth*</item>
<item>*state*</item>
<item>*testing-contexts*</item>
<item>*testing-vars*</item>
<item>*test-out*</item>
<item>*use-context-classloader*</item>
<item>*warn-on-reflection*</item>
<item>*warn-on-reflection*</item>
<item>false</item>
<item>nil</item>
<item>true</item>
</list>
<contexts>
<context name="Default" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="Comment" context="Comment" char=";"/>
<Detect2Chars attribute="Comment" context="#stay" char="#" char1="_"/>
<RegExpr attribute="Readermacro" context="#stay" String="#\?@?"/>
<RegExpr attribute="Modifier" context="#stay" String="[@~'`][^\s\(\)\{\}\[\]]+|[^\s&quot;\(\)\{\}\[\]]+#"/>
<RegExpr attribute="Modifier2" context="#stay" String="::?[a-zA-Z0-9\-\./]+"/>
<Detect2Chars attribute="BracketsSet" context="BracketsSet" char="#" char1="{"/>
<Detect2Chars attribute="BracketsMeta" context="BracketsMeta" char="^" char1="{"/>
<DetectChar attribute="BracketsMap" context="BracketsMap" char="{"/>
<AnyChar attribute="Brackets" context="#stay" String="()"/>
<AnyChar attribute="BracketsSquare" context="#stay" String="[]"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<RegExpr attribute="Variable" context="#stay" String="#'[^\s\(\)\{\}\[\]]+|%[0-9]*"/>
<keyword attribute="Variable" context="#stay" String="variables"/>
<keyword attribute="Definition" context="function_decl_documentable" String="documentable_definitions"/>
<keyword attribute="Definition" context="function_decl" String="definitions"/>
<RegExpr attribute="Char" context="#stay" String="\\u[0-9A-Fa-f]+|\\o[0-7]+|\\backspace|\\formfeed|\\newline|\\space|\\tab|\\[^\s\(\)\{\}\[\]]"/>
<Detect2Chars attribute="Regexpr" context="Regexpr" char="#" char1="&quot;"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<RegExpr attribute="Float" context="#stay" String="[0-9]+/[0-9]+"/>
<RegExpr attribute="BaseN" context="#stay" String="0[xX][0-9A-Fa-f]+|([12]?[0-9]|3[0-6])[rR][0-9a-zA-Z]+"/>
<RegExpr attribute="Error" context="#stay" String="(3[7-9]|[0-9]*[4-9][0-9]+)[rR][0-9a-zA-Z]+"/>
<Float attribute="Float" context="Float Suffixes"/>
<Int attribute="Decimal" context="Int Suffixes"/>
</context>
<context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectChar attribute="Float" context="#pop" char="M"/>
</context>
<context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectChar attribute="Decimal" context="#pop" char="N"/>
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments"/>
</context>
<context name="function_decl_documentable" attribute="Function" lineEndContext="#stay">
<RegExpr attribute="Function" context="#pop!DocumentationPossible" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*!\?']*\s*"/>
</context>
<context name="function_decl" attribute="Function" lineEndContext="#stay">
<RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*!\?']*\s*"/>
</context>
<context name="String" attribute="String" lineEndContext="#stay">
<RegExpr attribute="Char" context="#stay" String="#\\."/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context name="Regexpr" attribute="Regexpr" lineEndContext="#stay">
<RegExpr attribute="Char" context="#stay" String="#\\."/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="Regexpr" context="#pop" char="&quot;"/>
</context>
<context name="DocumentationPossible" attribute="Normal" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectChar attribute="Comment" context="Comment" char=";"/>
<DetectChar attribute="Documentation" context="#pop!Documentation" char="&quot;"/>
</context>
<context name="Documentation" attribute="Documentation" lineEndContext="#stay">
<RegExpr attribute="Char" context="#stay" String="#\\."/>
<HlCStringChar attribute="Char" context="#stay"/>
<DetectChar attribute="Documentation" context="#pop" char="&quot;"/>
</context>
<context name="BracketsSet" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="BracketsSet" context="#pop" char="}" />
<IncludeRules context="Default" />
</context>
<context name="BracketsMeta" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="BracketsMeta" context="#pop" char="}" />
<DetectChar attribute="Documentation" context="Documentation" char="&quot;"/>
<IncludeRules context="Default" />
</context>
<context name="BracketsMap" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="BracketsMap" context="#pop" char="}" />
<IncludeRules context="Default" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Modifier" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="Modifier2" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
<itemData name="Definition" defStyleNum="dsBuiltIn" spellChecking="false"/>
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="BaseN" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Char" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Regexpr" defStyleNum="dsSpecialString"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Documentation" defStyleNum="dsDocumentation"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
<itemData name="Readermacro" defStyleNum="dsPreprocessor"/>
<itemData name="BracketsSet" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00"/>
<itemData name="BracketsMeta" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="1" italic="0"/>
<itemData name="BracketsMap" defStyleNum="dsNormal" color="#33ab33" selColor="#219921"/>
<itemData name="Brackets" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="1" italic="0"/>
<itemData name="BracketsSquare" defStyleNum="dsNormal" color="#3333ff" selColor="#3333aa"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:#\"/>
<comments>
<comment name="singleLine" start=";;"/>
</comments>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,749 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY div "DATA|ENVIRONMENT|ID|IDENTIFICATION|PROCEDURE">
<!ENTITY sec "COMMUNICATION|CONFIGURATION|FILE|INPUT-OUTPUT|LINKAGE|LOCAL-STORAGE|REPORT|SCREEN|WORKING-STORAGE">
<!ENTITY seplist "[\s&lt;>+/*$,;():=.]">
<!ENTITY picsym "([-+*$ABCDENPRSUVXZ910]+(\([0-9]+\))?)+">
]>
<language name="COBOL" section="Sources" version="2" kateversion="5.62"
extensions="*.cob;*.cbl;*.cpy;*.copy;*.lst;*.pco;*.scb;*.sqb"
author="Jonathan Poelen (jonathan.poelen@gmail.com);github.com/MihailJP" license="MIT">
<highlighting>
<list name="picture">
<item>PIC</item>
<item>PICTURE</item>
</list>
<list name="verbs">
<item>ACCEPT</item>
<item>ADD</item>
<item>ALTER</item>
<item>CALL</item>
<item>COMPUTE</item>
<item>DELETE</item>
<item>DISPLAY</item>
<item>DIVIDE</item>
<item>END-ACCEPT</item>
<item>END-ADD</item>
<item>END-CALL</item>
<item>END-COMPUTE</item>
<item>END-DELETE</item>
<item>END-DISPLAY</item>
<item>END-DIVIDE</item>
<item>END-EVALUATE</item>
<item>END-IF</item>
<item>END-MULTIPLY</item>
<item>END-PERFORM</item>
<item>END-READ</item>
<item>END-RECEIVE</item>
<item>END-RETURN</item>
<item>END-REWRITE</item>
<item>END-SEARCH</item>
<item>END-START</item>
<item>END-STRING</item>
<item>END-SUBTRACT</item>
<item>END-UNSTRING</item>
<item>END-WRITE</item>
<item>EVALUATE</item>
<item>IF</item>
<item>MULTIPLY</item>
<item>PERFORM</item>
<item>READ</item>
<item>RECEIVE</item>
<item>RETURN</item>
<item>REWRITE</item>
<item>SEARCH</item>
<item>START</item>
<item>STRING</item>
<item>SUBTRACT</item>
<item>UNSTRING</item>
<item>WRITE</item>
<item>ASSIGN</item>
<item>CHAIN</item>
<item>CLOSE</item>
<item>CONTINUE</item>
<item>CONTROL</item>
<item>COPY</item>
<item>COUNT</item>
<item>ELSE</item>
<item>ENABLE</item>
<item>ERASE</item>
<item>EXIT</item>
<item>GENERATE</item>
<item>GO</item>
<item>GOBACK</item>
<item>IGNORE</item>
<item>INITIALIZE</item>
<item>INITIATE</item>
<item>INSPECT</item>
<item>INVOKE</item>
<item>MERGE</item>
<item>MOVE</item>
<item>OPEN</item>
<item>RELEASE</item>
<item>REPLACE</item>
<item>RESERVE</item>
<item>RESET</item>
<item>REWIND</item>
<item>ROLLBACK</item>
<item>RUN</item>
<item>SELECT</item>
<item>SEND</item>
<item>SET</item>
<item>SORT</item>
<item>STOP</item>
<item>SUM</item>
<item>SUPPRESS</item>
<item>TERMINATE</item>
<item>THEN</item>
<item>TRANSFORM</item>
<item>UNLOCK</item>
<item>UPDATE</item>
<item>USE</item>
<item>WAIT</item>
<item>WHEN</item>
</list>
<list name="usages">
<item>BINARY</item>
<item>BINARY-C-LONG</item>
<item>BINARY-CHAR</item>
<item>BINARY-DOUBLE</item>
<item>BINARY-LONG</item>
<item>BINARY-SHORT</item>
<item>COMP</item>
<item>COMP-1</item>
<item>COMP-2</item>
<item>COMP-3</item>
<item>COMP-4</item>
<item>COMP-5</item>
<item>COMP-X</item>
<item>COMPUTATIONAL</item>
<item>COMPUTATIONAL-1</item>
<item>COMPUTATIONAL-2</item>
<item>COMPUTATIONAL-3</item>
<item>COMPUTATIONAL-4</item>
<item>COMPUTATIONAL-5</item>
<item>COMPUTATIONAL-X</item>
<item>FLOAT-BINARY-16</item>
<item>FLOAT-BINARY-34</item>
<item>FLOAT-BINARY-7</item>
<item>FLOAT-DECIMAL-16</item>
<item>FLOAT-DECIMAL-34</item>
<item>FLOAT-EXTENDED</item>
<item>FLOAT-LONG</item>
<item>FLOAT-SHORT</item>
<item>FUNCTION-POINTER</item>
<item>INDEX</item>
<item>NATIONAL</item>
<item>PACKED-DECIMAL</item>
<item>POINTER</item>
<item>PROCEDURE-POINTER</item>
<item>PROGRAM-POINTER</item>
<item>SIGNED</item>
<item>SIGNED-INT</item>
<item>SIGNED-LONG</item>
<item>SIGNED-SHORT</item>
<item>UNSIGNED</item>
<item>UNSIGNED-INT</item>
<item>UNSIGNED-LONG</item>
<item>UNSIGNED-SHORT</item>
</list>
<list name="keywords">
<item>CD</item>
<item>COMMUNICATION</item>
<item>CONFIGURATION</item>
<item>DATA</item>
<item>DECLARATIVES</item>
<item>DIVISION</item>
<item>ENVIRONMENT</item>
<item>FD</item>
<item>FILE</item>
<item>FILE-CONTROL</item>
<item>I-O</item>
<item>I-O-CONTROL</item>
<item>ID</item>
<item>IDENTIFICATION</item>
<item>INPUT</item>
<item>INPUT-OUTPUT</item>
<item>LINKAGE</item>
<item>LOCAL-STORAGE</item>
<item>OUTPUT</item>
<item>PROCEDURE</item>
<item>PROGRAM</item>
<item>RD</item>
<item>REPORT</item>
<item>REPOSITORY</item>
<item>SD</item>
<item>SECTION</item>
<item>SPECIAL-NAMES</item>
<item>WORKING-STORAGE</item>
</list>
<list name="keywords-block">
<item>PROGRAM-ID</item>
<item>FUNCTION-ID</item>
<item>CLASS-ID</item>
<item>INTERFACE-ID</item>
<item>METHOD-ID</item>
<item>FACTORY</item>
<item>OBJECT</item>
</list>
<list name="logical">
<item>AND</item>
<item>EQUAL</item>
<item>EQUALS</item>
<item>GREATER</item>
<item>LESS</item>
<item>OR</item>
<item>THAN</item>
</list>
<list name="constants">
<item>HIGH-VALUEHIGH-VALUES</item>
<item>LOW-VALUE</item>
<item>LOW-VALUES</item>
<item>NULL</item>
<item>NULLS</item>
<item>QUOTE</item>
<item>QUOTES</item>
<item>SPACE</item>
<item>SPACES</item>
<item>ZERO</item>
<item>ZEROES</item>
<item>ZEROS</item>
</list>
<list name="reserved">
<item>ACCESS</item>
<item>ACTIVE-CLASS</item>
<item>ADDRESS</item>
<item>ADVANCING</item>
<item>AFTER</item>
<item>ALIGNED</item>
<item>ALL</item>
<item>ALLOCATE</item>
<item>ALPHABET</item>
<item>ALPHABETIC</item>
<item>ALPHABETIC-LOWER</item>
<item>ALPHABETIC-UPPER</item>
<item>ALPHANUMERIC</item>
<item>ALPHANUMERIC-EDITED</item>
<item>ALSO</item>
<item>ALTERNATE</item>
<item>ANY</item>
<item>ANYCASE</item>
<item>ARE</item>
<item>AREA</item>
<item>AREAS</item>
<item>ARGUMENT-NUMBER</item>
<item>ARGUMENT-VALUE</item>
<item>ARITHMETIC</item>
<item>AS</item>
<item>ASCENDING</item>
<item>AT</item>
<item>ATTRIBUTE</item>
<item>AUTO</item>
<item>AUTO-SKIP</item>
<item>AUTOMATIC</item>
<item>AUTOTERMINATE</item>
<item>B-AND</item>
<item>B-NOT</item>
<item>B-OR</item>
<item>B-XOR</item>
<item>BACKGROUND-COLOR</item>
<item>BASED</item>
<item>BEEP</item>
<item>BEFORE</item>
<item>BELL</item>
<item>BIT</item>
<item>BLANK</item>
<item>BLINK</item>
<item>BLOCK</item>
<item>BOOLEAN</item>
<item>BOTTOM</item>
<item>BY</item>
<item>BYTE-LENGTH</item>
<item>CANCEL</item>
<item>CENTER</item>
<item>CF</item>
<item>CH</item>
<item>CHAINING</item>
<item>CHARACTER</item>
<item>CHARACTERS</item>
<item>CLASS</item>
<item>CLASSIFICATION</item>
<item>CODE</item>
<item>CODE-SET</item>
<item>COL</item>
<item>COLLATING</item>
<item>COLS</item>
<item>COLUMN</item>
<item>COLUMNS</item>
<item>COMMA</item>
<item>COMMAND-LINE</item>
<item>COMMIT</item>
<item>COMMON</item>
<item>CONDITION</item>
<item>CONSTANT</item>
<item>CONTAINS</item>
<item>CONTENT</item>
<item>CONTROLS</item>
<item>CONVERTING</item>
<item>CORR</item>
<item>CORRESPONDING</item>
<item>CRT</item>
<item>CURRENCY</item>
<item>CURSOR</item>
<item>CYCLE</item>
<item>DATA-POINTER</item>
<item>DATE</item>
<item>DAY</item>
<item>DAY-OF-WEEK</item>
<item>DE</item>
<item>DEBUGGING</item>
<item>DECIMAL-POINT</item>
<item>DEFAULT</item>
<item>DELIMITED</item>
<item>DELIMITER</item>
<item>DEPENDING</item>
<item>DESCENDING</item>
<item>DESTINATION</item>
<item>DETAIL</item>
<item>DISABLE</item>
<item>DISK</item>
<item>DOWN</item>
<item>DUPLICATES</item>
<item>DYNAMIC</item>
<item>EBCDIC</item>
<item>EC</item>
<item>EGI</item>
<item>EMI</item>
<item>END</item>
<item>END-OF-PAGE</item>
<item>ENTRY</item>
<item>ENTRY-CONVENTION</item>
<item>ENVIRONMENT-NAME</item>
<item>ENVIRONMENT-VALUE</item>
<item>EO</item>
<item>EOL</item>
<item>EOP</item>
<item>EOS</item>
<item>ERROR</item>
<item>ESCAPE</item>
<item>ESI</item>
<item>EXCEPTION</item>
<item>EXCEPTION-OBJECT</item>
<item>EXCLUSIVE</item>
<item>EXPANDS</item>
<item>EXTEND</item>
<item>EXTERNAL</item>
<item>FALSE</item>
<item>FILE-ID</item>
<item>FILLER</item>
<item>FINAL</item>
<item>FIRST</item>
<item>FOOTING</item>
<item>FOR</item>
<item>FOREGROUND-COLOR</item>
<item>FOREVER</item>
<item>FORMAT</item>
<item>FREE</item>
<item>FROM</item>
<item>FULL</item>
<item>GET</item>
<item>GIVING</item>
<item>GLOBAL</item>
<item>GROUP</item>
<item>GROUP-USAGE</item>
<item>HEADING</item>
<item>HIGH-VALUE</item>
<item>HIGH-VALUES</item>
<item>HIGHLIGHT</item>
<item>IGNORING</item>
<item>IMPLEMENTS</item>
<item>IN</item>
<item>INDEXED</item>
<item>INDICATE</item>
<item>INFINITY</item>
<item>INHERITS</item>
<item>INITIAL</item>
<item>INITIALIZED</item>
<item>INTERFACE</item>
<item>INTO</item>
<item>INTRINSIC</item>
<item>INVALID</item>
<item>IS</item>
<item>JUST</item>
<item>JUSTIFIED</item>
<item>KEY</item>
<item>LABEL</item>
<item>LAST</item>
<item>LC_ALL</item>
<item>LC_COLLATE</item>
<item>LC_CTYPE</item>
<item>LC_MESSAGES</item>
<item>LC_MONETARY</item>
<item>LC_NUMERIC</item>
<item>LC_TIME</item>
<item>LEADING</item>
<item>LEFT</item>
<item>LENGTH</item>
<item>LIMIT</item>
<item>LIMITS</item>
<item>LINAGE</item>
<item>LINAGE-COUNTER</item>
<item>LINE</item>
<item>LINE-COUNTER</item>
<item>LINES</item>
<item>LOCALE</item>
<item>LOCK</item>
<item>LOWLIGHT</item>
<item>MANUAL</item>
<item>MEMORY</item>
<item>MESSAGE</item>
<item>METHOD</item>
<item>MINUS</item>
<item>MODE</item>
<item>MULTIPLE</item>
<item>NATIONAL-EDITED</item>
<item>NATIVE</item>
<item>NEGATIVE</item>
<item>NESTED</item>
<item>NEXT</item>
<item>NO</item>
<item>NONE</item>
<item>NORMAL</item>
<item>NOT</item>
<item>NUMBER</item>
<item>NUMBERS</item>
<item>NUMERIC</item>
<item>NUMERIC-EDITED</item>
<item>OBJECT-COMPUTER</item>
<item>OBJECT-REFERENCE</item>
<item>OCCURS</item>
<item>OF</item>
<item>OFF</item>
<item>OMITTED</item>
<item>ON</item>
<item>ONLY</item>
<item>OPTIONAL</item>
<item>OPTIONS</item>
<item>ORDER</item>
<item>ORGANIZATION</item>
<item>OTHER</item>
<item>OVERFLOW</item>
<item>OVERLINE</item>
<item>OVERRIDE</item>
<item>PADDING</item>
<item>PAGE</item>
<item>PAGE-COUNTER</item>
<item>PARAGRAPH</item>
<item>PF</item>
<item>PH</item>
<item>PLUS</item>
<item>POSITION</item>
<item>POSITIVE</item>
<item>PRESENT</item>
<item>PREVIOUS</item>
<item>PRINTER</item>
<item>PRINTING</item>
<item>PROCEDURES</item>
<item>PROCEED</item>
<item>PROMPT</item>
<item>PROPERTY</item>
<item>PROTOTYPE</item>
<item>PURGE</item>
<item>QUEUE</item>
<item>RAISE</item>
<item>RAISING</item>
<item>RANDOM</item>
<item>RECORD</item>
<item>RECORDING</item>
<item>RECORDS</item>
<item>RECURSIVE</item>
<item>REDEFINES</item>
<item>REEL</item>
<item>REFERENCE</item>
<item>RELATION</item>
<item>RELATIVE</item>
<item>REMAINDER</item>
<item>REMOVAL</item>
<item>RENAMES</item>
<item>REPLACING</item>
<item>REPORTING</item>
<item>REPORTS</item>
<item>REQUIRED</item>
<item>RESUME</item>
<item>RETRY</item>
<item>RETURNING</item>
<item>REVERSE-VIDEO</item>
<item>RF</item>
<item>RH</item>
<item>RIGHT</item>
<item>ROUNDED</item>
<item>SAME</item>
<item>SCREEN</item>
<item>SCROLL</item>
<item>SECONDS</item>
<item>SECURE</item>
<item>SEGMENT</item>
<item>SEGMENT-LIMIT</item>
<item>SELF</item>
<item>SENTENCE</item>
<item>SEPARATE</item>
<item>SEQUENCE</item>
<item>SEQUENTIAL</item>
<item>SHARING</item>
<item>SIGN</item>
<item>SIZE</item>
<item>SORT-MERGE</item>
<item>SOURCE</item>
<item>SOURCE-COMPUTER</item>
<item>SOURCES</item>
<item>STANDARD</item>
<item>STANDARD-1</item>
<item>STANDARD-2</item>
<item>STATEMENT</item>
<item>STATUS</item>
<item>STEP</item>
<item>STRONG</item>
<item>SUB-QUEUE-1</item>
<item>SUB-QUEUE-2</item>
<item>SUB-QUEUE-3</item>
<item>SUPER</item>
<item>SYMBOL</item>
<item>SYMBOLIC</item>
<item>SYNC</item>
<item>SYNCHRONIZED</item>
<item>SYSTEM-DEFAULT</item>
<item>TABLE</item>
<item>TALLYING</item>
<item>TAPE</item>
<item>TERMINAL</item>
<item>TEST</item>
<item>TEXT</item>
<item>THROUGH</item>
<item>THRU</item>
<item>TIME</item>
<item>TIMES</item>
<item>TO</item>
<item>TOP</item>
<item>TRAILING</item>
<item>TRUE</item>
<item>TYPE</item>
<item>TYPEDEF</item>
<item>UCS-4</item>
<item>UNDERLINE</item>
<item>UNIT</item>
<item>UNIVERSAL</item>
<item>UNTIL</item>
<item>UP</item>
<item>UPON</item>
<item>USAGE</item>
<item>USER-DEFAULT</item>
<item>USING</item>
<item>UTF-16</item>
<item>UTF-8</item>
<item>VAL-STATUS</item>
<item>VALID</item>
<item>VALIDATE</item>
<item>VALIDATE-STATUS</item>
<item>VALUE</item>
<item>VALUES</item>
<item>VARYING</item>
<item>WITH</item>
<item>WORDS</item>
<item>YYYYDDD</item>
<item>YYYYMMDD</item>
</list>
<list name="functions">
<item>ABS</item>
<item>ACOS</item>
<item>ANNUITY</item>
<item>ASIN</item>
<item>ATAN</item>
<item>BYTE-LENGTH</item>
<item>CHAR</item>
<item>CONCATENATE</item>
<item>COS</item>
<item>CURRENT-DATE</item>
<item>DATE-OF-INTEGER</item>
<item>DATE-TO-YYYYMMDD</item>
<item>DAY-OF-INTEGER</item>
<item>DAY-TO-YYYYDDD</item>
<item>E</item>
<item>EXCEPTION-FILE</item>
<item>EXCEPTION-LOCATION</item>
<item>EXCEPTION-STATEMENT</item>
<item>EXCEPTION-STATUS</item>
<item>EXP</item>
<item>EXP10</item>
<item>FACTORIAL</item>
<item>FRACTION-PART</item>
<item>INTEGER</item>
<item>INTEGER-OF-DATE</item>
<item>INTEGER-OF-DAY</item>
<item>INTEGER-PART</item>
<item>LENGTH</item>
<item>LOCALE-DATE</item>
<item>LOCALE-TIME</item>
<item>LOG</item>
<item>LOG10</item>
<item>LOWER-CASE</item>
<item>MAX</item>
<item>MEAN</item>
<item>MEDIAN</item>
<item>MIDRANGE</item>
<item>MIN</item>
<item>MOD</item>
<item>NUMVAL</item>
<item>NUMVAL-C</item>
<item>ORD</item>
<item>ORD-MAX</item>
<item>ORD-MIN</item>
<item>PI</item>
<item>PRESENT-VALUE</item>
<item>RANDOM</item>
<item>RANGE</item>
<item>REM</item>
<item>REVERSE</item>
<item>SECONDS-FROM-FORMATTED-TIME</item>
<item>SECONDS-PAST-MIDNIGHT</item>
<item>SIGN</item>
<item>SIN</item>
<item>SQRT</item>
<item>STANDARD-DEVIATION</item>
<item>STORED-CHAR-LENGTH</item>
<item>SUBSTITUTE</item>
<item>SUBSTITUTE-CASE</item>
<item>TAN</item>
<item>TEST-DATE-YYYYMMDD</item>
<item>TEST-DAY-YYYYDDD</item>
<item>TRIM</item>
<item>UPPER-CASE</item>
<item>VARIANCE</item>
<item>WHEN-COMPILED</item>
<item>YEAR-TO-YYYY</item>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces attribute="Normal Text"/>
<Int attribute="Sequence Number Area" firstNonSpace="1"/>
<DetectChar attribute="Comment" context="comment" char="*" column="6"/>
<DetectChar attribute="Comment" context="comment" char="*" column="0"/>
<DetectChar attribute="Comment" context="comment" char="/" column="6"/>
<DetectChar attribute="Comment" context="comment" char="/" column="0"/>
<DetectChar attribute="String" context="stringDQ" char="&quot;"/>
<DetectChar attribute="String" context="stringSQ" char="'"/>
<StringDetect attribute="Comment" context="comment" String="*>"/>
<AnyChar attribute="Normal Text" String="&lt;>+/*$,;():="/>
<keyword attribute="Keywords" String="keywords-block" beginRegion="ID"/>
<keyword attribute="Other Reserved Words" context="picture" String="picture"/>
<keyword attribute="Verb" String="verbs"/>
<keyword attribute="Usage" String="usages"/>
<keyword attribute="Constant" String="constants"/>
<keyword attribute="Logical" String="logical"/>
<WordDetect attribute="Keywords" context="end" String="END" insensitive="1"/>
<RegExpr attribute="Division" String="\b(?!-)(&div;)\s+DIVISION\b(?!-)" insensitive="1"/>
<RegExpr attribute="Section" String="\b(?!-)(&sec;)\s+SECTION\b(?!-)" insensitive="1"/>
<keyword attribute="Keywords" String="keywords"/>
<keyword attribute="Other Reserved Words" String="reserved"/>
<WordDetect attribute="Other Reserved Words" context="function" String="FUNCTION" insensitive="1"/>
<WordDetect context="exec" String="EXEC" insensitive="1" lookAhead="1"/>
<RegExpr attribute="Float" String="(?&lt;=^|\s)-?[0-9]*\.[0-9]+(?=$|&seplist;)" context="#stay"/>
<RegExpr attribute="Decimal" String="(?&lt;=^|\s)-?[0-9]+(?=$|&seplist;)" context="#stay"/>
<RegExpr attribute="Hex" String="H(&quot;[0-9A-F]+&quot;|'[0-9A-F]+')" insensitive="1"/>
<RegExpr attribute="Char" String="X(&quot;[0-9A-F]+&quot;|'[0-9A-F]+')" insensitive="1"/>
<RegExpr attribute="Normal Text" String="[-\w]*[\s&lt;>+$,;():=.]"/>
</context>
<context name="end" attribute="Keywords" lineEndContext="#pop" fallthroughContext="#pop">
<keyword attribute="Keywords" String="keywords-block" context="#pop" endRegion="ID"/>
</context>
<context name="comment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces attribute="Comment"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
<context name="stringDQ" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context name="stringSQ" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
<context name="picture" attribute="String" lineEndContext="#pop" fallthroughContext="#pop!picture3">
<DetectSpaces attribute="Normal Text"/>
<WordDetect attribute="Other Reserved Words" context="#pop!picture2" String="IS" insensitive="1"/>
</context>
<context name="picture2" attribute="String" lineEndContext="#pop" fallthroughContext="#pop!picture3">
<DetectSpaces attribute="Normal Text" context="#pop!picture3"/>
</context>
<context name="picture3" attribute="Error" lineEndContext="#pop">
<RegExpr attribute="Picture" String="\s*&picsym;([,./]&picsym;)*(CR|DB)?" insensitive="1" context="#pop"/>
<AnyChar attribute="Normal Text" context="#pop" String=",./ &#9;"/>
<StringDetect attribute="Comment" context="#pop!comment" String="*>"/>
</context>
<context name="function" attribute="Error" lineEndContext="#pop">
<keyword attribute="Function" context="#pop" String="functions"/>
<WordDetect attribute="Other Reserved Words" context="#pop" String="ALL" insensitive="1"/>
<AnyChar attribute="Normal Text" context="#pop" String=". &#9;"/>
<StringDetect attribute="Comment" context="#pop!comment" String="*>"/>
</context>
<context name="exec" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="SQL" String="EXEC\s+SQL\b(?!-)" context="#pop!sql" insensitive="1" beginRegion="sql"/>
<DetectIdentifier attribute="Normal Text" context="#pop"/>
</context>
<context name="sql" attribute="Normal Text" lineEndContext="#stay">
<StringDetect attribute="Comment" context="comment" String="*>"/>
<WordDetect attribute="SQL" context="#pop" String="END-EXEC" insensitive="1" endRegion="sql"/>
<IncludeRules context="##SQL" includeAttrib="1"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>
<itemData name="Sequence Number Area" defStyleNum="dsComment" spellChecking="0" italic="1"/>
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="0"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="0"/>
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="0"/>
<itemData name="Constant" defStyleNum="dsConstant" spellChecking="0"/>
<itemData name="Logical" defStyleNum="dsKeyword" spellChecking="0" italic="1"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Char" defStyleNum="dsChar" spellChecking="0"/>
<itemData name="Division" defStyleNum="dsRegionMarker" spellChecking="0"/>
<itemData name="Section" defStyleNum="dsRegionMarker" spellChecking="0"/>
<itemData name="SQL" defStyleNum="dsRegionMarker" spellChecking="0"/>
<itemData name="Keywords" defStyleNum="dsKeyword" spellChecking="0"/>
<itemData name="Verb" defStyleNum="dsKeyword" spellChecking="0"/>
<itemData name="Picture" defStyleNum="dsDataType" spellChecking="0"/>
<itemData name="Usage" defStyleNum="dsDataType" spellChecking="0"/>
<itemData name="Other Reserved Words" defStyleNum="dsOthers" spellChecking="0"/>
<itemData name="Function" defStyleNum="dsFunction" spellChecking="0"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="0"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="*>"/>
</comments>
<keywords casesensitive="0" weakDeliminator="-"/>
</general>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,359 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="CoffeeScript"
alternativeNames="Coffee;Coffee-Script"
version="16"
kateversion="5.53"
section="Scripts"
extensions="Cakefile;*.coffee;*.coco;*.cson"
mimetype="text/x-coffeescript;application/x-coffeescript;application/vnd.coffeescript"
indenter="python"
casesensitive="1"
author="Max Shawabkeh (max99x@gmail.com)"
license="MIT">
<highlighting>
<!-- Built-in constants. -->
<list name="value_keywords">
<item>false</item>
<item>true</item>
<item>yes</item>
<item>no</item>
<item>on</item>
<item>off</item>
<item>undefined</item>
<item>null</item>
<item>NaN</item>
<item>Infinity</item>
</list>
<!-- Generic keywords. -->
<list name="keywords">
<item>return</item>
<item>break</item>
<item>continue</item>
<item>throw</item>
<item>for</item>
<item>while</item>
<item>until</item>
<item>loop</item>
<item>if</item>
<item>else</item>
<item>unless</item>
<item>switch</item>
<item>when</item>
<item>then</item>
<item>and</item>
<item>or</item>
<item>in</item>
<item>do</item>
<item>of</item>
<item>by</item>
<item>is</item>
<item>isnt</item>
<item>not</item>
<item>typeof</item>
<item>delete</item>
<item>where</item>
<item>super</item>
<item>try</item>
<item>catch</item>
<item>finally</item>
<item>try</item>
<item>catch</item>
<item>finally</item>
<item>constructor</item>
</list>
<!-- Keywords which are always followed by a class name. -->
<list name="class_keywords">
<item>class</item>
<item>extends</item>
<item>new</item>
<item>instanceof</item>
</list>
<!-- Reserved words. -->
<list name="reserved">
<item>case</item>
<item>default</item>
<item>function</item>
<item>var</item>
<item>void</item>
<item>with</item>
<item>const</item>
<item>let</item>
<item>enum</item>
<item>export</item>
<item>import</item>
<item>native</item>
<item>__hasProp</item>
<item>__extends</item>
<item>__slice</item>
<item>__bind</item>
<item>__indexOf</item>
</list>
<!-- Built-in globals provided in most contexts. -->
<list name="globals">
<item>Object</item>
<item>Number</item>
<item>Boolean</item>
<item>Array</item>
<item>String</item>
<item>RegExp</item>
<item>Function</item>
<item>Date</item>
<item>Math</item>
<item>eval</item>
<item>setInterval</item>
<item>clearInterval</item>
<item>setTimeout</item>
<item>clearTimeout</item>
<item>isFinite</item>
<item>isNaN</item>
<item>parseFloat</item>
<item>parseInt</item>
<item>escape</item>
<item>unescape</item>
<item>console</item>
<item>encodeURI</item>
<item>encodeURIComponent</item>
<item>decodeURI</item>
<item>decodeURIComponent</item>
</list>
<!-- Built-in globals provided in browser context. -->
<list name="browser_globals">
<item>window</item>
<item>document</item>
<item>navigator</item>
<item>location</item>
<item>history</item>
<item>screen</item>
<item>alert</item>
<item>prompt</item>
</list>
<!-- Built-in globals provided in Node.js context. -->
<list name="nodejs_globals">
<item>process</item>
<item>GLOBAL</item>
<item>require</item>
<item>exports</item>
</list>
<!-- Context-sensitive highlighting rules. -->
<contexts>
<!-- Generic code. -->
<context name="Normal" attribute="Normal" lineEndContext="#stay">
<DetectSpaces/>
<!-- Numbers. -->
<Float attribute="Float" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<HlCOct attribute="Oct" context="#stay"/>
<HlCHex attribute="Hex" context="#stay"/>
<!-- Keywords. -->
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Keyword" context="Class" String="class_keywords"/>
<keyword attribute="Value Keywords" context="#stay" String="value_keywords"/>
<keyword attribute="Reserved" context="#stay" String="reserved"/>
<!-- Globals. -->
<keyword attribute="Globals" context="#stay" String="globals"/>
<keyword attribute="Browser Globals" context="#stay" String="browser_globals"/>
<keyword attribute="Node.js Globals" context="#stay" String="nodejs_globals"/>
<!-- Member accessors. -->
<RegExpr attribute="Accessor" context="#stay" String="(?:@[_$a-zA-Z][$\w]*|\bthis)\b" insensitive="false"/>
<!-- Function definitions. Matches an optional argument list followed by a function arrow (normal or fat). -->
<RegExpr attribute="Function" context="#stay" String="(?:\((?:\'[^']*'|&quot;[^&quot;]*&quot;|[^()])*\))?\s*(?:\-|=)&gt;" insensitive="true"/>
<!-- Generic identifiers. -->
<RegExpr attribute="Identifier" context="#stay" String="[_$a-z][$\w]*\b" insensitive="true"/>
<!-- Strings. -->
<StringDetect attribute="String" context="Heredoc" String="'''" beginRegion="Heredoc"/>
<StringDetect attribute="String" context="Rich Heredoc" String="&quot;&quot;&quot;" beginRegion="Rich Heredoc"/>
<DetectChar attribute="String" context="String" char="'"/>
<DetectChar attribute="String" context="Rich String" char="&quot;"/>
<!-- Embedded JavaScript. -->
<StringDetect attribute="Javascript" context="Javascript Triple Backticks" String="```" beginRegion="Javascript TB"/>
<DetectChar attribute="Javascript" context="Javascript" char="`" beginRegion="Javascript"/>
<!-- Comments. -->
<StringDetect attribute="Comment" context="Multiline Comment" String="###" beginRegion="Comment"/>
<DetectChar attribute="Comment" context="Comment" char="#"/>
<!-- Regular expressions. -->
<StringDetect attribute="Regex" context="Multiline Regex" String="///" beginRegion="Multiline Regex"/>
<RegExpr attribute="Regex" context="#stay" String="/(?:[^/\\\r\n]|\\.)*/[mig]{0,3}"/>
<!-- Member objects. -->
<DetectChar attribute="Symbol" context="Member Object" char="."/>
<!-- Operators and other non-alphanumeric symbols. -->
<AnyChar attribute="Symbol" context="#stay" String="():!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;{}"/>
</context>
<!-- Multiline regular expressions. -->
<context name="Multiline Regex" attribute="Regex" lineEndContext="#stay" noIndentationBasedFolding="1">
<HlCStringChar attribute="Regex" context="#stay"/>
<DetectChar attribute="Comment" context="Comment" char="#"/>
<RegExpr attribute="Regex" context="#pop" String="///[mig]{0,3}" endRegion="Multiline Regex"/>
</context>
<!-- Class names. -->
<context name="Class" attribute="Normal" lineEndContext="#stay">
<DetectSpaces/>
<RegExpr attribute="Class" context="#pop" String="[@$:.\w\[\]]+"/>
</context>
<!-- Member objects. -->
<context name="Member Object" attribute="Normal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Identifier" context="#pop" String="\s*[_$a-z][$\w]*" insensitive="true"/>
</context>
<!-- Comments. -->
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments"/>
</context>
<context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="1">
<StringDetect attribute="Comment" context="#pop" String="###" endRegion="Comment"/>
<IncludeRules context="##Comments"/>
</context>
<!-- Single-line strings. -->
<context name="String" attribute="String" lineEndContext="#stay">
<IncludeRules context="Escape"/>
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
<context name="Rich String" attribute="String" lineEndContext="#stay">
<IncludeRules context="Escape"/>
<Detect2Chars attribute="Embedding" context="Embedding" char="#" char1="{"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<!-- Multi-line strings. -->
<context name="Heredoc" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="1">
<IncludeRules context="Escape"/>
<StringDetect attribute="String" context="#pop" String="'''" endRegion="Heredoc"/>
</context>
<context name="Rich Heredoc" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="1">
<IncludeRules context="Escape"/>
<Detect2Chars attribute="Embedding" context="Embedding" char="#" char1="{"/>
<StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="Rich Heredoc"/>
</context>
<!-- Escaped characters. -->
<context name="Escape" attribute="String" lineEndContext="#stay">
<!-- Hexadecimal, unicode & reserved character escape sequences. -->
<RegExpr attribute="Escape" context="#stay" String="\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[\\0bfnrtv&quot;&apos;])"/>
<!-- Invalid escapes. Octal escape sequences are not allowed. -->
<RegExpr attribute="Error" context="#stay" String="\\[ux1-7]"/>
<!-- Make any character literal. -->
<RegExpr attribute="Literal Character Escape" context="#stay" String="\\."/>
<LineContinue attribute="Escape" context="#stay"/>
</context>
<!-- Expressions embedded in strings. -->
<context name="Embedding" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="Embedding" context="#pop" char="}"/>
</context>
<!-- Embedded Javascript (one backtick). -->
<context name="Javascript" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
<DetectChar attribute="Javascript" context="#pop" char="`" endRegion="Javascript"/>
<!-- NOTE: This hides errors where a backtick is embedded in a JS string or a comment. -->
<IncludeRules context="Overwrite Javascript"/>
<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
</context>
<!-- Allow template strings in JavaScript embedded code (with one backtick). -->
<context name="Overwrite Javascript" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
<!-- JavaScript Template. -->
<Detect2Chars attribute="JavaScript Template" context="Javascript Template" char="\" char1="`" beginRegion="Template"/>
<RegExpr context="Javascript StartRawTemplate" String="\b(String)\s*(\.)\s*(raw)\s*\\`" lookAhead="true"/>
<!-- Tagged Template Literals -->
<RegExpr attribute="JavaScript Function Name" context="#stay" String="[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*(?=\s*\\`)" />
<RegExpr attribute="Error" context="#stay" String="\bString\s*\.\s*raw(?=\s*`)" />
<RegExpr attribute="Normal" context="#stay" String="[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*(?=\s*`)" />
<!-- Contexts of javascript.xml. -->
<DetectChar attribute="Normal" context="JavaScript Object" char="{" beginRegion="Brace" />
</context>
<context name="JavaScript Object" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
<DetectChar context="#pop" char="`" lookAhead="true"/>
<DetectChar attribute="Normal" context="#pop" char="}" endRegion="Brace"/>
<IncludeRules context="Overwrite Javascript"/>
<IncludeRules context="Object##JavaScript"/>
</context>
<context name="Javascript Template" attribute="JavaScript Template" lineEndContext="#stay" noIndentationBasedFolding="1">
<StringDetect attribute="Escape" context="#stay" String="\\\`"/>
<Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`" endRegion="Template"/> <!-- End template. -->
<DetectChar context="#pop" char="`" lookAhead="true"/>
<Detect2Chars attribute="JavaScript Substitution" context="Javascript Substitution" char="$" char1="{"/>
<IncludeRules context="Template##JavaScript"/>
<RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>
</context>
<context name="Javascript Substitution" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
<DetectChar attribute="Javascript" context="#pop" char="`" lookAhead="true"/>
<DetectChar attribute="JavaScript Substitution" context="#pop" char="}"/>
<IncludeRules context="Overwrite Javascript"/>
<IncludeRules context="Substitution##JavaScript"/>
</context>
<context name="Javascript StartRawTemplate" attribute="JavaScript Template" lineEndContext="#pop" noIndentationBasedFolding="1">
<DetectSpaces />
<Detect2Chars attribute="JavaScript Template" context="#pop!Javascript RawTemplate" char="\" char1="`" beginRegion="Template"/>
<StringDetect attribute="JavaScript Built-in Objects" context="#stay" String="%1" dynamic="true"/>
<DetectChar attribute="JavaScript Symbol" context="#stay" char="2" dynamic="true"/>
<StringDetect attribute="JavaScript Function Name" context="#stay" String="%3" dynamic="true"/>
</context>
<context name="Javascript RawTemplate" attribute="JavaScript Template" lineEndContext="#stay" noIndentationBasedFolding="1">
<Detect2Chars attribute="JavaScript Template" context="#stay" char="\" char1="\"/>
<Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`" endRegion="Template"/> <!-- End template. -->
<DetectChar context="#pop" char="`" lookAhead="true"/>
<RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>
</context>
<!-- Embedded Javascript (triple backticks). -->
<context name="Javascript Triple Backticks" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
<StringDetect attribute="Javascript" context="#pop" String="```" endRegion="Javascript TB"/>
<DetectChar attribute="Normal" context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
</context>
<context name="JavaScript-TB Object" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
<StringDetect attribute="Javascript" context="#pop" String="```" lookAhead="true"/>
<DetectChar attribute="Normal" context="#pop" char="}" endRegion="Brace"/>
<DetectChar attribute="Normal" context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
<IncludeRules context="Object##JavaScript"/>
</context>
</contexts>
<!-- Style mappings. -->
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Identifier" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Oct" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>
<itemData name="Symbol" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Embedding" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Accessor" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Class" defStyleNum="dsDataType" spellChecking="false" bold="1"/>
<itemData name="Javascript" defStyleNum="dsAlert" spellChecking="false" italic="1"/>
<itemData name="Regex" defStyleNum="dsString" spellChecking="false"/>
<itemData name="Reserved" defStyleNum="dsAlert" spellChecking="false"/>
<itemData name="Value Keywords" defStyleNum="dsOthers" spellChecking="false"/>
<itemData name="Globals" defStyleNum="dsOthers" spellChecking="false"/>
<!-- Context-sensitive globals - not styled by default. -->
<itemData name="Browser Globals" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Node.js Globals" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Escape" defStyleNum="dsSpecialChar" spellChecking="false" />
<itemData name="Literal Character Escape" defStyleNum="dsChar" spellChecking="false" />
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
<itemData name="JavaScript Template" defStyleNum="dsVerbatimString"/>
<itemData name="JavaScript Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="JavaScript Function Name" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="JavaScript Built-in Objects" defStyleNum="dsBuiltIn" spellChecking="false" />
<itemData name="JavaScript Symbol" defStyleNum="dsOperator" spellChecking="false" />
</itemDatas>
</highlighting>
<!-- Global settings. -->
<general>
<folding indentationsensitive="1"/>
<comments>
<comment name="singleLine" start="#" position="afterwhitespace"/>
<comment name="multiLine" start="###" end="###" region="Comment"/>
</comments>
<keywords casesensitive="1" additionalDeliminator="#'`"/>
<emptyLines>
<emptyLine regexpr="(?:\s+|\s*#.*)"/>
</emptyLines>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,744 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="ColdFusion" version="6" kateversion="5.0" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">
<highlighting>
<list name="Script Keywords">
<item>if</item>
<item>else</item>
<item>for</item>
<item>in</item>
<item>while</item>
<item>do</item>
<item>continue</item>
<item>break</item>
<item>with</item>
<item>try</item>
<item>catch</item>
<item>switch</item>
<item>case</item>
<item>new</item>
<item>var</item>
<item>function</item>
<item>return</item>
<item>this</item>
<item>delete</item>
<item>true</item>
<item>false</item>
<item>void</item>
<item>throw</item>
<item>typeof</item>
<item>const</item>
<item>default</item>
</list>
<list name="Script Objects">
<item>Anchor</item>
<item>Applet</item>
<item>Area</item>
<item>Array</item>
<item>Boolean</item>
<item>Button</item>
<item>Checkbox</item>
<item>Date</item>
<item>Document</item>
<item>Event</item>
<item>FileUpload</item>
<item>Form</item>
<item>Frame</item>
<item>Function</item>
<item>Hidden</item>
<item>History</item>
<item>Image</item>
<item>Layer</item>
<item>Linke</item>
<item>Location</item>
<item>Math</item>
<item>Navigator</item>
<item>Number</item>
<item>Object</item>
<item>Option</item>
<item>Password</item>
<item>Radio</item>
<item>RegExp</item>
<item>Reset</item>
<item>Screen</item>
<item>Select</item>
<item>String</item>
<item>Submit</item>
<item>Text</item>
<item>Textarea</item>
<item>Window</item>
</list>
<list name="Script Methods">
<item>abs</item>
<item>acos</item>
<item>alert</item>
<item>anchor</item>
<item>apply</item>
<item>asin</item>
<item>atan</item>
<item>atan2</item>
<item>back</item>
<item>blur</item>
<item>call</item>
<item>captureEvents</item>
<item>ceil</item>
<item>charAt</item>
<item>charCodeAt</item>
<item>clearInterval</item>
<item>clearTimeout</item>
<item>click</item>
<item>close</item>
<item>compile</item>
<item>concat</item>
<item>confirm</item>
<item>cos</item>
<item>disableExternalCapture</item>
<item>enableExternalCapture</item>
<item>eval</item>
<item>exec</item>
<item>exp</item>
<item>find</item>
<item>floor</item>
<item>focus</item>
<item>forward</item>
<item>fromCharCode</item>
<item>getDate</item>
<item>getDay</item>
<item>getFullYear</item>
<item>getHours</item>
<item>getMilliseconds</item>
<item>getMinutes</item>
<item>getMonth</item>
<item>getSeconds</item>
<item>getSelection</item>
<item>getTime</item>
<item>getTimezoneOffset</item>
<item>getUTCDate</item>
<item>getUTCDay</item>
<item>getUTCFullYear</item>
<item>getUTCHours</item>
<item>getUTCMilliseconds</item>
<item>getUTCMinutes</item>
<item>getUTCMonth</item>
<item>getUTCSeconds</item>
<item>go</item>
<item>handleEvent</item>
<item>home</item>
<item>indexOf</item>
<item>javaEnabled</item>
<item>join</item>
<item>lastIndexOf</item>
<item>link</item>
<item>load</item>
<item>log</item>
<item>match</item>
<item>max</item>
<item>min</item>
<item>moveAbove</item>
<item>moveBelow</item>
<item>moveBy</item>
<item>moveTo</item>
<item>moveToAbsolute</item>
<item>open</item>
<item>parse</item>
<item>plugins.refresh</item>
<item>pop</item>
<item>pow</item>
<item>preference</item>
<item>print</item>
<item>prompt</item>
<item>push</item>
<item>random</item>
<item>releaseEvents</item>
<item>reload</item>
<item>replace</item>
<item>reset</item>
<item>resizeBy</item>
<item>resizeTo</item>
<item>reverse</item>
<item>round</item>
<item>routeEvent</item>
<item>scrollBy</item>
<item>scrollTo</item>
<item>search</item>
<item>select</item>
<item>setDate</item>
<item>setFullYear</item>
<item>setHours</item>
<item>setInterval</item>
<item>setMilliseconds</item>
<item>setMinutes</item>
<item>setMonth</item>
<item>setSeconds</item>
<item>setTime</item>
<item>setTimeout</item>
<item>setUTCDate</item>
<item>setUTCFullYear</item>
<item>setUTCHours</item>
<item>setUTCMilliseconds</item>
<item>setUTCMinutes</item>
<item>setUTCMonth</item>
<item>setUTCSeconds</item>
<item>shift</item>
<item>sin</item>
<item>slice</item>
<item>sort</item>
<item>splice</item>
<item>split</item>
<item>sqrt</item>
<item>stop</item>
<item>submit</item>
<item>substr</item>
<item>substring</item>
<item>taintEnabled</item>
<item>tan</item>
<item>test</item>
<item>toLocaleString</item>
<item>toLowerCase</item>
<item>toSource</item>
<item>toString</item>
<item>toUpperCase</item>
<item>toUTCString</item>
<item>unshift</item>
<item>unwatch</item>
<item>UTC</item>
<item>valueOf</item>
<item>watch</item>
<item>write</item>
<item>writeln</item>
</list>
<list name="CFSCRIPT Keywords">
<item>break</item>
<item>case</item>
<item>catch</item>
<item>continue</item>
<item>default</item>
<item>do</item>
<item>else</item>
<item>for</item>
<item>function</item>
<item>if</item>
<item>in</item>
<item>return</item>
<item>switch</item>
<item>try</item>
<item>var</item>
<item>while</item>
</list>
<list name="CFSCRIPT Functions">
<item>Abs</item>
<item>ACos</item>
<item>ArrayAppend</item>
<item>ArrayAvg</item>
<item>ArrayClear</item>
<item>ArrayDeleteAt</item>
<item>ArrayInsertAt</item>
<item>ArrayIsEmpty</item>
<item>ArrayLen</item>
<item>ArrayMax</item>
<item>ArrayMin</item>
<item>ArrayNew</item>
<item>ArrayPrepend</item>
<item>ArrayResize</item>
<item>ArraySet</item>
<item>ArraySort</item>
<item>ArraySum</item>
<item>ArraySwap</item>
<item>ArrayToList</item>
<item>Asc</item>
<item>ASin</item>
<item>Atn</item>
<item>BitAnd</item>
<item>BitMaskClear</item>
<item>BitMaskRead</item>
<item>BitMaskSet</item>
<item>BitNot</item>
<item>BitOr</item>
<item>BitSHLN</item>
<item>BitSHRN</item>
<item>BitXor</item>
<item>Ceiling</item>
<item>Chr</item>
<item>CJustify</item>
<item>Compare</item>
<item>CompareNoCase</item>
<item>Cos</item>
<item>CreateDate</item>
<item>CreateDateTime</item>
<item>CreateObject</item>
<item>CreateODBCDate</item>
<item>CreateODBCDateTime</item>
<item>CreateODBCTime</item>
<item>CreateTime</item>
<item>CreateTimeSpan</item>
<item>CreateUUID</item>
<item>DateAdd</item>
<item>DateCompare</item>
<item>DateConvert</item>
<item>DateDiff</item>
<item>DateFormat</item>
<item>DatePart</item>
<item>Day</item>
<item>DayOfWeek</item>
<item>DayOfWeekAsString</item>
<item>DayOfYear</item>
<item>DaysInMonth</item>
<item>DaysInYear</item>
<item>DE</item>
<item>DecimalFormat</item>
<item>DecrementValue</item>
<item>Decrypt</item>
<item>DeleteClientVariable</item>
<item>DirectoryExists</item>
<item>DollarFormat</item>
<item>Duplicate</item>
<item>Encrypt</item>
<item>Evaluate</item>
<item>Exp</item>
<item>ExpandPath</item>
<item>FileExists</item>
<item>Find</item>
<item>FindNoCase</item>
<item>FindOneOf</item>
<item>FirstDayOfMonth</item>
<item>Fix</item>
<item>FormatBaseN</item>
<item>GetAuthUser</item>
<item>GetBaseTagData</item>
<item>GetBaseTagList</item>
<item>GetBaseTemplatePath</item>
<item>GetClientVariablesList</item>
<item>GetCurrentTemplatePath</item>
<item>GetDirectoryFromPath</item>
<item>GetException</item>
<item>GetFileFromPath</item>
<item>GetFunctionList</item>
<item>GetHttpRequestData</item>
<item>GetHttpTimeString</item>
<item>GetK2ServerDocCount</item>
<item>GetK2ServerDocCountLimit</item>
<item>GetLocale</item>
<item>GetMetaData</item>
<item>GetMetricData</item>
<item>GetPageContext</item>
<item>GetProfileSections</item>
<item>GetProfileString</item>
<item>GetServiceSettings</item>
<item>GetTempDirectory</item>
<item>GetTempFile</item>
<item>GetTemplatePath</item>
<item>GetTickCount</item>
<item>GetTimeZoneInfo</item>
<item>GetToken</item>
<item>Hash</item>
<item>Hour</item>
<item>HTMLCodeFormat</item>
<item>HTMLEditFormat</item>
<item>IIf</item>
<item>IncrementValue</item>
<item>InputBaseN</item>
<item>Insert</item>
<item>Int</item>
<item>IsArray</item>
<item>IsBinary</item>
<item>IsBoolean</item>
<item>IsCustomFunction</item>
<item>IsDate</item>
<item>IsDebugMode</item>
<item>IsDefined</item>
<item>IsK2ServerABroker</item>
<item>IsK2ServerDocCountExceeded</item>
<item>IsK2ServerOnline</item>
<item>IsLeapYear</item>
<item>IsNumeric</item>
<item>IsNumericDate</item>
<item>IsObject</item>
<item>IsQuery</item>
<item>IsSimpleValue</item>
<item>IsStruct</item>
<item>IsUserInRole</item>
<item>IsWDDX</item>
<item>IsXmlDoc</item>
<item>IsXmlElement</item>
<item>IsXmlRoot</item>
<item>JavaCast</item>
<item>JSStringFormat</item>
<item>LCase</item>
<item>Left</item>
<item>Len</item>
<item>ListAppend</item>
<item>ListChangeDelims</item>
<item>ListContains</item>
<item>ListContainsNoCase</item>
<item>ListDeleteAt</item>
<item>ListFind</item>
<item>ListFindNoCase</item>
<item>ListFirst</item>
<item>ListGetAt</item>
<item>ListInsertAt</item>
<item>ListLast</item>
<item>ListLen</item>
<item>ListPrepend</item>
<item>ListQualify</item>
<item>ListRest</item>
<item>ListSetAt</item>
<item>ListSort</item>
<item>ListToArray</item>
<item>ListValueCount</item>
<item>ListValueCountNoCase</item>
<item>LJustify</item>
<item>Log</item>
<item>Log10</item>
<item>LSCurrencyFormat</item>
<item>LSDateFormat</item>
<item>LSEuroCurrencyFormat</item>
<item>LSIsCurrency</item>
<item>LSIsDate</item>
<item>LSIsNumeric</item>
<item>LSNumberFormat</item>
<item>LSParseCurrency</item>
<item>LSParseDateTime</item>
<item>LSParseEuroCurrency</item>
<item>LSParseNumber</item>
<item>LSTimeFormat</item>
<item>LTrim</item>
<item>Max</item>
<item>Mid</item>
<item>Min</item>
<item>Minute</item>
<item>Month</item>
<item>MonthAsString</item>
<item>Now</item>
<item>NumberFormat</item>
<item>ParagraphFormat</item>
<item>ParameterExists</item>
<item>ParseDateTime</item>
<item>Pi</item>
<item>PreserveSingleQuotes</item>
<item>Quarter</item>
<item>QueryAddColumn</item>
<item>QueryAddRow</item>
<item>QueryNew</item>
<item>QuerySetCell</item>
<item>QuotedValueList</item>
<item>Rand</item>
<item>Randomize</item>
<item>RandRange</item>
<item>REFind</item>
<item>REFindNoCase</item>
<item>RemoveChars</item>
<item>RepeatString</item>
<item>Replace</item>
<item>ReplaceList</item>
<item>ReplaceNoCase</item>
<item>REReplace</item>
<item>REReplaceNoCase</item>
<item>Reverse</item>
<item>Right</item>
<item>RJustify</item>
<item>Round</item>
<item>RTrim</item>
<item>Second</item>
<item>SetEncoding</item>
<item>SetLocale</item>
<item>SetProfileString</item>
<item>SetVariable</item>
<item>Sgn</item>
<item>Sin</item>
<item>SpanExcluding</item>
<item>SpanIncluding</item>
<item>Sqr</item>
<item>StripCR</item>
<item>StructAppend</item>
<item>StructClear</item>
<item>StructCopy</item>
<item>StructCount</item>
<item>StructDelete</item>
<item>StructFind</item>
<item>StructFindKey</item>
<item>StructFindValue</item>
<item>StructGet</item>
<item>StructInsert</item>
<item>StructIsEmpty</item>
<item>StructKeyArray</item>
<item>StructKeyExists</item>
<item>StructKeyList</item>
<item>StructNew</item>
<item>StructSort</item>
<item>StructUpdate</item>
<item>Tan</item>
<item>TimeFormat</item>
<item>ToBase64</item>
<item>ToBinary</item>
<item>ToString</item>
<item>Trim</item>
<item>UCase</item>
<item>URLDecode</item>
<item>URLEncodedFormat</item>
<item>URLSessionFormat</item>
<item>Val</item>
<item>ValueList</item>
<item>Week</item>
<item>WriteOutput</item>
<item>XmlChildPos</item>
<item>XmlElemNew</item>
<item>XmlFormat</item>
<item>XmlNew</item>
<item>XmlParse</item>
<item>XmlSearch</item>
<item>XmlTransform</item>
<item>Year</item>
<item>YesNoFormat</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
<DetectSpaces attribute="Normal Text" />
<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />
<StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="&lt;!--" beginRegion="HTML Comment" />
<StringDetect attribute="Script Tags" context="ctxCFSCRIPT Tag" String="&lt;cfscript" insensitive="true" beginRegion="CF Script" />
<StringDetect attribute="Script Tags" context="ctxSCRIPT Tag" String="&lt;script" insensitive="true" beginRegion="Script" />
<StringDetect attribute="Style Tags" context="ctxSTYLE Tag" String="&lt;style" insensitive="true" beginRegion="Style" />
<DetectChar attribute="HTML Entities" context="ctxHTML Entities" char="&amp;" />
<StringDetect attribute="Custom Tags" context="ctxCustom Tag" String="&lt;cf_" insensitive="true" />
<StringDetect attribute="Custom Tags" context="ctxCustom Tag" String="&lt;/cf_" insensitive="true" />
<StringDetect attribute="CFX Tags" context="ctxCFX Tag" String="&lt;cfx_" insensitive="true" />
<StringDetect attribute="CFX Tags" context="ctxCFX Tag" String="&lt;/cfx_" insensitive="true" />
<StringDetect attribute="CF Tags" context="ctxCF Tag" String="&lt;cf" insensitive="true" />
<StringDetect attribute="CF Tags" context="ctxCF Tag" String="&lt;/cf" insensitive="true" />
<RegExpr attribute="Table Tags" context="ctxTable Tag" String="&lt;\/?(?:[tT][aAhHbBfFrRdD])|(?:[cC][aA][pP][tT])" />
<RegExpr attribute="Anchor Tags" context="ctxAnchor Tag" String="&lt;\/?a(?=[&gt;\s]|$)" insensitive="true" />
<RegExpr attribute="Image Tags" context="ctxImage Tag" String="&lt;\/?img(?=[&gt;\s]|$)" insensitive="true" />
<StringDetect attribute="Anchor Tags" context="#stay" String="&lt;a/&gt;" insensitive="true" />
<StringDetect attribute="Image Tags" context="#stay" String="&lt;img/&gt;" insensitive="true" />
<RegExpr attribute="Tags" context="ctxTag" String="&lt;!?\/?[a-zA-Z0-9_]+" />
</context>
<context name="Tag Content" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Normal Text" context="#stay" char="=" />
<RangeDetect attribute="Attribute Values" context="#stay" char="&quot;" char1="&quot;" />
<RangeDetect attribute="Attribute Values" context="#stay" char="'" char1="'" />
<RegExpr attribute="Tag Attributes" context="#stay" String="(?:\s|^)[A-Za-z_:*][\w.:_-]*(?=\s*\=)" />
</context>
<context name="ctxCFSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay">
<DetectChar attribute="Script Tags" context="ctxCFSCRIPT Block" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay">
<DetectChar attribute="Script Tags" context="ctxSCRIPT Block" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxSTYLE Tag" attribute="Style Tags" lineEndContext="#stay">
<DetectChar attribute="Style Tags" context="ctxSTYLE Block" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxTag" attribute="Tags" lineEndContext="#stay">
<DetectChar attribute="Tags" context="#pop" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxTable Tag" attribute="Table Tags" lineEndContext="#stay">
<DetectChar attribute="Table Tags" context="#pop" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxAnchor Tag" attribute="Anchor Tags" lineEndContext="#stay">
<DetectChar attribute="Anchor Tags" context="#pop" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxImage Tag" attribute="Image Tags" lineEndContext="#stay">
<DetectChar attribute="Image Tags" context="#pop" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxCF Tag" attribute="CF Tags" lineEndContext="#stay">
<DetectChar attribute="CF Tags" context="#pop" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxCustom Tag" attribute="Custom Tags" lineEndContext="#stay">
<DetectChar attribute="Custom Tags" context="#pop" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxCFX Tag" attribute="CFX Tags" lineEndContext="#stay">
<DetectChar attribute="CFX Tags" context="#pop" char="&gt;" />
<IncludeRules context="Tag Content" />
</context>
<context name="ctxHTML Comment" attribute="HTML Comment" lineEndContext="#stay">
<DetectSpaces attribute="HTML Comment" />
<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />
<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTML Comment" />
<IncludeRules context="##Comments" />
<DetectIdentifier attribute="HTML Comment" />
</context>
<context name="ctxCF Comment" attribute="CF Comment" lineEndContext="#stay">
<DetectSpaces attribute="CF Comment" />
<StringDetect attribute="CF Comment" context="#pop" String="---&gt;" endRegion="CF Comment" />
<IncludeRules context="##Comments" />
<DetectIdentifier attribute="CF Comment" />
</context>
<context name="ctxC Style Comment" attribute="Script Comment" lineEndContext="#stay">
<DetectSpaces attribute="Script Comment" />
<Detect2Chars attribute="Script Comment" context="#pop" char="*" char1="/" endRegion="CComment" />
<IncludeRules context="##Comments" />
<DetectIdentifier attribute="Script Comment" />
</context>
<context name="ctxOne Line Comment" attribute="Script Comment" lineEndContext="#pop">
<DetectSpaces attribute="Script Comment" />
<IncludeRules context="##Comments" />
<DetectIdentifier attribute="Script Comment" />
</context>
<context name="ctxHTML Entities" attribute="HTML Entities" lineEndContext="#pop">
<DetectChar attribute="HTML Entities" context="#pop" char=";" />
</context>
<context name="SCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces attribute="Normal Text" />
<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />
<RangeDetect attribute="Script Strings" context="#stay" char="&quot;" char1="&quot;" />
<RangeDetect attribute="Script Strings" context="#stay" char="'" char1="'" />
<Float attribute="Script Numbers" context="#stay" />
<Int attribute="Script Numbers" context="#stay" />
<AnyChar attribute="Script Operators" context="#stay" String="()[]=+-*/" />
<AnyChar attribute="Brackets" context="#stay" String="{}" />
</context>
<context name="ctxCFSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
<IncludeRules context="SCRIPT Block" />
<keyword attribute="Script Keywords" context="#stay" String="CFSCRIPT Keywords" />
<keyword attribute="Script Functions" context="#stay" String="CFSCRIPT Functions" />
<StringDetect attribute="Script Tags" context="#pop#pop" String="&lt;/cfscript&gt;" insensitive="true" endRegion="CF Script" />
<DetectIdentifier attribute="Normal Text" />
</context>
<context name="ctxSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
<IncludeRules context="SCRIPT Block" />
<keyword attribute="Script Keywords" context="#stay" String="Script Keywords" />
<keyword attribute="Script Objects" context="#stay" String="Script Objects" />
<keyword attribute="Script Functions" context="#stay" String="Script Methods" />
<StringDetect attribute="Script Tags" context="#pop#pop" String="&lt;/script&gt;" insensitive="true" endRegion="Script" />
<DetectIdentifier attribute="Normal Text" />
</context>
<context name="ctxSTYLE Block" attribute="Style Selectors" lineEndContext="#stay">
<DetectSpaces attribute="Style Selectors" />
<DetectIdentifier attribute="Style Selectors" />
<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
<DetectChar attribute="Brackets" context="ctxStyle Properties" char="{" />
<StringDetect attribute="Style Tags" context="#pop#pop" String="&lt;/style&gt;" insensitive="true" endRegion="Style" />
</context>
<context name="ctxStyle Properties" attribute="Style Properties" lineEndContext="#stay">
<DetectSpaces attribute="Style Properties" />
<DetectIdentifier attribute="Style Properties" />
<DetectChar attribute="Brackets" context="#pop" char="}" />
<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
<DetectChar attribute="Normal Text" context="ctxStyle Values" char=":" />
</context>
<context name="ctxStyle Values" attribute="Style Values" lineEndContext="#pop">
<DetectSpaces attribute="Style Values" />
<DetectIdentifier attribute="Style Values" />
<DetectChar attribute="Normal Text" context="#pop" char=";" />
<DetectChar attribute="Normal Text" context="#stay" char="," />
<Float attribute="Numbers" context="#stay" />
<Int attribute="Numbers" context="#stay" />
<RangeDetect attribute="Attribute Values" context="#stay" char="&quot;" char1="&quot;" />
<RangeDetect attribute="Attribute Values" context="#stay" char="'" char1="'" />
<RegExpr attribute="Numbers" context="#stay" String="#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3})" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Tags" defStyleNum="dsKeyword" spellChecking="false"/> <!-- #000080 -->
<itemData name="Table Tags" defStyleNum="dsVariable" bold="1" spellChecking="false" /> <!-- #008080 -->
<itemData name="Script Tags" defStyleNum="dsWarning" bold="1" spellChecking="false" /> <!-- #800000 -->
<itemData name="Image Tags" defStyleNum="dsInformation" bold="1" spellChecking="false" /> <!-- #800080 -->
<itemData name="Style Tags" defStyleNum="dsInformation" bold="1" spellChecking="false" /> <!-- #800080 -->
<itemData name="Anchor Tags" defStyleNum="dsPreprocessor" bold="1" spellChecking="false" /> <!-- #008000 -->
<itemData name="Tag Attributes" defStyleNum="dsOthers" spellChecking="false"/>
<itemData name="Attribute Values" defStyleNum="dsString" /> <!-- #0000ff -->
<itemData name="HTML Comment" defStyleNum="dsComment" /> <!-- #008000 -->
<itemData name="CF Comment" defStyleNum="dsComment" /> <!-- #ff9900 -->
<itemData name="Script Comment" defStyleNum="dsComment" /> <!-- #ff9900 -->
<itemData name="CF Tags" defStyleNum="dsFunction" bold="1" spellChecking="false" /> <!-- #800000 -->
<itemData name="Custom Tags" defStyleNum="dsDataType" bold="1" spellChecking="false" /> <!-- #cc6666 -->
<itemData name="CFX Tags" defStyleNum="dsOthers" bold="1" spellChecking="false" /> <!-- #008000 -->
<itemData name="Numbers" defStyleNum="dsDecVal" spellChecking="false" /> <!-- #0000ff -->
<itemData name="HTML Entities" defStyleNum="dsInformation" spellChecking="false" /> <!-- #000000 -->
<itemData name="Style Selectors" defStyleNum="dsChar" /> <!-- #ff00ff -->
<itemData name="Style Properties" defStyleNum="dsAttribute" /> <!-- #000080 -->
<itemData name="Style Values" defStyleNum="dsVerbatimString" /> <!-- #ff0000 -->
<itemData name="Brackets" defStyleNum="dsKeyword" spellChecking="false" /> <!-- #000080 -->
<itemData name="Script Numbers" defStyleNum="dsDecVal" spellChecking="false" /> <!-- #ff00ff -->
<itemData name="Script Strings" defStyleNum="dsString" /> <!-- #008080 -->
<itemData name="Script Operators" defStyleNum="dsKeyword" spellChecking="false" /> <!-- #0000ff -->
<itemData name="Script Keywords" defStyleNum="dsControlFlow" spellChecking="false" /> <!-- #0000cc -->
<itemData name="Script Functions" defStyleNum="dsFunction" bold="1" spellChecking="false" />
<itemData name="Script Objects" defStyleNum="dsExtension" spellChecking="false" /> <!-- #0000cc -->
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="multiLine" start="&lt;!---" end="---&gt;" region="CF Comment" />
</comments>
<keywords casesensitive="0" weakDeliminator="-" />
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language
version="1"
kateversion="5.0"
name="Comments"
section="Other"
extensions=""
mimetype=""
author="Alex Turbov (i.zaufi@gmail.com)"
license="MIT"
hidden="true"
>
<highlighting>
<contexts>
<context name="Normal" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Alerts" />
<IncludeRules context="##Modelines" />
<IncludeRules context="##SPDX-Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Comment" defStyleNum="dsComment" />
</itemDatas>
</highlighting>
</language>
<!-- kate: indent-width 2; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!-- Author: Werner Braun <wb@o3-software.de> -->
<!-- 29.05.2003 wb mailed to the kate-team (cullmann) -->
<!-- 23.05.2003 wb added *.bro File-Type for GPCP Browser output-->
<!-- 09.05.2003 wb nested comments allowed (maximum two level nesting) -->
<!-- 07.04.2003 wb IN Problem solved -->
<!-- 06.05.2003 wb NEW without ( -->
<!-- 22.04.2003 wb Minor bugfixes -->
<!-- 19.04.2003 wb Some more Enhancements -->
<!-- 18.04.2003 wb Enhancenment for Maior / Minor Comments and Full / ReadOnly Exports, Folds for Procedures, Records, Comments -->
<!-- 17.04.2003 wb Enhancements for Relation and Operators -->
<language name="Component-Pascal" version="5" kateversion="5.0" section="Sources" extensions="*.cp;*.bro" mimetype="text/x-component-pascal" author="Werner Braun (wb@o3-software.de)" license="">
<highlighting>
<list name="keywords">
<item>BEGIN</item>
<item>BY</item>
<item>CASE</item>
<item>CLOSE</item>
<item>CONST</item>
<item>DO</item>
<item>ELSE</item>
<item>ELSIF</item>
<item>END</item>
<item>FOR</item>
<item>IF</item>
<item>IMPORT</item>
<item>LOOP</item>
<item>MODULE</item>
<item>NEW</item>
<item>OF</item>
<item>OUT</item>
<item>PROCEDURE</item>
<item>REPEAT</item>
<item>THEN</item>
<item>TO</item>
<item>TYPE</item>
<item>UNTIL</item>
<item>VAR</item>
<item>WHILE</item>
<item>WITH</item>
</list>
<list name="exits">
<item>ASSERT</item>
<item>EXIT</item>
<item>HALT</item>
<item>RETURN</item>
</list>
<list name="types">
<item>ANYPTR</item>
<item>ANYREC</item>
<item>ARRAY</item>
<item>BOOLEAN</item>
<item>SHORTCHAR</item>
<item>CHAR</item>
<item>BYTE</item>
<item>SHORTINT</item>
<item>INTEGER</item>
<item>LONGINT</item>
<item>POINTER</item>
<item>RECORD</item>
<item>SHORTREAL</item>
<item>REAL</item>
<item>SET</item>
</list>
<list name="attributes">
<item>ABSTRACT</item>
<item>EMPTY</item>
<item>EXTENSIBLE</item>
<item>LIMITED</item>
</list>
<list name="builtins">
<item>ABS</item>
<item>ASH</item>
<item>BITS</item>
<item>CAP</item>
<item>CHR</item>
<item>DEC</item>
<item>ENTIER</item>
<item>EXCL</item>
<item>INC</item>
<item>INCL</item>
<item>LEN</item>
<item>LONG</item>
<item>MAX</item>
<item>MIN</item>
<item>ODD</item>
<item>ORD</item>
<item>SHORT</item>
<item>SIZE</item>
</list>
<list name="specials">
<item>FALSE</item>
<item>INF</item>
<item>NIL</item>
<item>TRUE</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<StringDetect attribute="CommentMaior" context="Comment1" String="(**" beginRegion="Comment"/>
<Detect2Chars attribute="CommentMinor" context="Comment2" char="(" char1="*" beginRegion="Comment"/>
<DetectChar attribute="String" context="String1" char="&quot;" />
<DetectChar attribute="String" context="String2" char="'" />
<RegExpr attribute="Keyword" context="#stay" String="PROCEDURE\s" beginRegion="Proc"/>
<RegExpr attribute="Normal Text" context="#stay" String="ABSTRACT;|EMPTY;|END\s*[A-Za-z][A-Za-z0-9_]*\;" endRegion="Proc"/>
<StringDetect attribute="Type" context="#stay" String="RECORD" beginRegion="Rec"/>
<StringDetect attribute="Keyword" context="#stay" String="END" endRegion="Rec"/>
<StringDetect attribute="MemAlloc" context="#stay" String="NEW"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Exit" context="#stay" String="exits"/>
<keyword attribute="Type" context="#stay" String="types"/>
<keyword attribute="Attribute" context="#stay" String="attributes"/>
<keyword attribute="Builtin" context="#stay" String="builtins"/>
<keyword attribute="SpecialValues" context="#stay" String="specials"/>
<RegExpr attribute="Integer" context="#stay" String="\s[\+|\-]{0,1}[0-9]([0-9]*|[0-9A-F]*(H|L))"/>
<Float attribute="Float" context="#stay"/>
<RegExpr attribute="Char" context="#stay" String="\s[0-9][0-9A-F]*X"/>
<RegExpr attribute="ExportFull" context="#stay" String="[A-Za-z][A-Za-z0-9_]*\*"/>
<RegExpr attribute="ExportReadOnly" context="#stay" String="[A-Za-z][A-Za-z0-9_]*\-"/>
<RegExpr attribute="Relation" context="#stay" String="\s(=|#|&lt;|&lt;=|&gt;|&gt;=|IN\s|IS)"/>
<RegExpr attribute="Operator" context="#stay" String="\s(\+|\-|OR|\*|/|DIV|MOD|\&amp;)"/>
</context>
<context attribute="CommentMaior" lineEndContext="#stay" name="Comment1">
<Detect2Chars attribute="CommentMaior" context="#pop" char="*" char1=")" endRegion="Comment"/>
<Detect2Chars attribute="CommentMinor" context="CommentN" char="(" char1="*"/>
<IncludeRules context="##Comments"/>
</context>
<context attribute="CommentMinor" lineEndContext="#stay" name="Comment2">
<Detect2Chars attribute="CommentMinor" context="#pop" char="*" char1=")" endRegion="Comment"/>
<Detect2Chars attribute="CommentMinor" context="CommentN" char="(" char1="*"/>
<IncludeRules context="##Comments"/>
</context>
<context attribute="CommentMinor" lineEndContext="#stay" name="CommentN">
<Detect2Chars attribute="CommentMinor" context="#pop" char="*" char1=")"/>
<Detect2Chars attribute="CommentMinor" context="CommentN2" char="(" char1="*"/>
<IncludeRules context="##Comments"/>
</context>
<context attribute="CommentMinor" lineEndContext="#stay" name="CommentN2">
<Detect2Chars attribute="CommentMinor" context="#pop" char="*" char1=")"/>
<IncludeRules context="##Comments"/>
</context>
<context attribute="String" lineEndContext="#stay" name="String1">
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="String" lineEndContext="#stay" name="String2">
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="CommentMaior" defStyleNum="dsComment" />
<itemData name="CommentMinor" defStyleNum="dsComment" />
<itemData name="String" defStyleNum="dsString" />
<itemData name="Keyword" defStyleNum="dsKeyword" />
<itemData name="MemAlloc" defStyleNum="dsKeyword" />
<itemData name="Exit" defStyleNum="dsKeyword"/>
<itemData name="Type" defStyleNum="dsDataType"/>
<itemData name="Attribute" defStyleNum="dsOthers"/>
<itemData name="Builtin" defStyleNum="dsNormal"/>
<itemData name="Integer" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat" />
<itemData name="Char" defStyleNum="dsChar" />
<itemData name="SpecialValues" defStyleNum="dsDecVal"/>
<itemData name="ExportFull" defStyleNum="dsOthers"/>
<itemData name="ExportReadOnly" defStyleNum="dsOthers"/>
<itemData name="Relation" defStyleNum="dsNormal"/>
<itemData name="Operator" defStyleNum="dsNormal"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" />
<comments>
<comment name="multiLine" start="(*" end="*)" region="Comment" />
</comments>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,215 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!-- The characters ! ? @ are "internal" or system macros, normally not usable, in general: user macros are just letters, see
https://wiki.contextgarden.net/System_Macros/Scratch_Variables and https://www.mail-archive.com/ntg-context@ntg.nl/msg87737.html
In practice any non-special character works, though english characters should be used, except for one character macros, they use any symbol -->
<!ENTITY macro "\\([[:alpha:]]+|[[:graph:]])">
]>
<language
name="ConTeXt"
version="11"
section="Markup"
kateversion="5.79"
priority="8"
extensions="*.ctx;*.mkiv;*.mkvi;*.mkxl;*.mklx"
mimetype="text/x-tex"
casesensitive="1"
author="Philipp A. (flying-sheep@web.de)"
license="GPL"
>
<highlighting>
<list name="titles">
<item>\part</item>
<item>\chapter</item>
<item>\section</item>
<item>\subsection</item>
<item>\subsubsection</item>
<item>\subsubsubsection</item>
<item>\subsubsubsubsection</item>
<item>\title</item>
<item>\subject</item>
<item>\subsubject</item>
<item>\subsubsubject</item>
<item>\subsubsubsubject</item>
<item>\subsubsubsubsubject</item>
</list>
<list name="mathMacros">
<item>\m</item>
<item>\math</item>
<item>\mathematics</item>
<item>\formula</item>
</list>
<list name="startEnvironments">
<item>\bTABLEhead</item>
<item>\bTABLEnext</item>
<item>\bTABLEbody</item>
<item>\bTABLEfoot</item>
<item>\bTABLE</item>
<item>\bTR</item>
<item>\bTD</item>
</list>
<list name="stopEnvironments">
<item>\eTABLEhead</item>
<item>\eTABLEnext</item>
<item>\eTABLEbody</item>
<item>\eTABLEfoot</item>
<item>\eTABLE</item>
<item>\eTR</item>
<item>\eTD</item>
</list>
<list name="startMetaPost">
<item>\startMPinclusions</item>
<item>\startuseMPgraphic</item>
<item>\startreusableMPgraphic</item>
<item>\startstaticMPfigure</item>
<item>\startuniqueMPgraphic</item>
<item>\startMPpage</item>
<item>\startMPcode</item>
<item>\startMP</item>
</list>
<list name="stopMetaPost">
<item>\stopMPinclusions</item>
<item>\stopuseMPgraphic</item>
<item>\stopreusableMPgraphic</item>
<item>\stopstaticMPfigure</item>
<item>\stopuniqueMPgraphic</item>
<item>\stopMPpage</item>
<item>\stopMPcode</item>
<item>\stopMP</item>
</list>
<contexts>
<!-- Normal text -->
<context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
<keyword String="titles" attribute="Section" context="#stay"/>
<Detect2Chars char="$" char1="$" attribute="Block" context="MathModeDisplay"/>
<DetectChar char="$" attribute="Block" context="MathMode"/>
<keyword String="mathMacros" attribute="Block" context="MathModeMacroFind"/>
<StringDetect String="\startformula" attribute="Block" context="MathModeFormula" beginRegion="mathModeBlock"/>
<StringDetect String="\starttyping" attribute="Block" context="Verbatim" beginRegion="typingBlock"/>
<StringDetect String="\startluacode" attribute="Block" context="LuaCode" beginRegion="luaBlock"/>
<StringDetect String="\startLUA" attribute="Block" context="LuaCode" beginRegion="luaBlock"/>
<StringDetect String="\startXML" attribute="Block" context="XmlCode" beginRegion="xmlBlock"/>
<keyword String="startMetaPost" attribute="Block" context="MetaPostCode" beginRegion="metaPostBlock"/>
<IncludeRules context="Common"/>
</context>
<!-- Comment -->
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments"/>
</context>
<!-- Math Modes -->
<context name="MathMode" attribute="Math" lineEndContext="#stay">
<DetectChar char="$" attribute="Block" context="#pop"/>
<StringDetect String="\stopformula" attribute="Error" context="#stay" />
<IncludeRules context="MathModeCommon"/>
</context>
<context name="MathModeMacroFind" attribute="Math" lineEndContext="#stay">
<DetectChar char="{" attribute="Brace" context="#pop!MathModeMacro"/>
<RegExpr String="&macro;" attribute="Macro" context="#pop"/> <!-- Single token -->
<RegExpr String="[[:graph:]]" attribute="Math" context="#pop"/> <!-- Single token -->
</context>
<context name="MathModeMacro" attribute="Math" lineEndContext="#stay">
<DetectChar char="{" attribute="Brace" context="MathModeMacro"/>
<DetectChar char="}" attribute="Brace" context="#pop"/>
<DetectChar char="$" attribute="Error" context="#stay"/>
<StringDetect String="\stopformula" attribute="Error" context="#stay"/>
<IncludeRules context="MathModeCommon"/>
</context>
<context name="MathModeDisplay" attribute="Math" lineEndContext="#stay">
<Detect2Chars char="$" char1="$" attribute="Block" context="#pop"/>
<DetectChar char="$" attribute="Error" context="#stay"/>
<StringDetect String="\stopformula" attribute="Error" context="#stay"/>
<IncludeRules context="MathModeCommon"/>
</context>
<context name="MathModeFormula" attribute="Math" lineEndContext="#stay">
<DetectChar char="$" attribute="Error" context="#stay"/>
<StringDetect String="\stopformula" attribute="Block" context="#pop" endRegion="mathModeBlock"/>
<IncludeRules context="MathModeCommon"/>
</context>
<context name="MathModeCommon" attribute="Error" lineEndContext="#stay">
<AnyChar String="^_" attribute="Brace" context="#stay"/>
<StringDetect String="\startformula" attribute="Error" context="#stay"/>
<StringDetect String="\text" attribute="Block" context="MathModeTextFind"/>
<IncludeRules context="Common"/>
</context>
<!--Math text-->
<context name="MathModeTextFind" attribute="Normal Text" lineEndContext="#stay" >
<DetectChar char="{" attribute="Brace" context="#pop!MathModeText"/>
</context>
<context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" >
<DetectChar char="{" attribute="Brace" context="MathModeText"/>
<DetectChar char="}" attribute="Brace" context="#pop"/>
<IncludeRules context="Normal Text"/>
</context>
<!--Verbatim TODO: \startC support-->
<context name="Verbatim" attribute="Verbatim" lineEndContext="#stay">
<StringDetect String="\starttyping" attribute="Verbatim" context="NestedVerbatim"/>
<StringDetect String="\stoptyping" attribute="Block" context="#pop" endRegion="typingBlock"/>
</context>
<context name="NestedVerbatim" attribute="Verbatim" lineEndContext="#stay">
<StringDetect String="\starttyping" attribute="Verbatim" context="NestedVerbatim"/>
<StringDetect String="\stoptyping" attribute="Verbatim" context="#pop"/>
</context>
<context name="MetaPostCode" attribute="Normal Text" lineEndContext="#stay">
<keyword String="stopMetaPost" attribute="Block" context="#pop" endRegion="metaPostBlock"/>
<IncludeRules context="##Metapost/Metafont"/>
</context>
<context name="LuaCode" attribute="Normal Text" lineEndContext="#stay">
<StringDetect String="\stopluacode" attribute="Block" context="#pop" endRegion="luaBlock"/>
<StringDetect String="\stopLUA" attribute="Block" context="#pop" endRegion="luaBlock"/>
<IncludeRules context="##Lua"/>
</context>
<context name="XmlCode" attribute="Normal Text" lineEndContext="#stay">
<StringDetect String="\stopXML" attribute="Block" context="#pop" endRegion="xmlBlock"/>
<IncludeRules context="##XML"/>
</context>
<!--Common-->
<context name="Common" attribute="Error" lineEndContext="#stay">
<DetectChar char="%" attribute="Comment" context="Comment"/>
<RegExpr String="\\start(?:[a-zA-Z_]+)" attribute="Block" context="#stay" beginRegion="block"/>
<RegExpr String="\\stop(?:[a-zA-Z_]+)" attribute="Block" context="#stay" endRegion="block"/>
<keyword String="startEnvironments" attribute="Block" context="#stay" beginRegion="block"/>
<keyword String="stopEnvironments" attribute="Block" context="#stay" endRegion="block"/>
<RegExpr String="&macro;" attribute="Macro" context="#stay"/>
<DetectChar char="{" attribute="Brace" context="#stay" beginRegion="block"/>
<DetectChar char="}" attribute="Brace" context="#stay" endRegion="block"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" /><!--(Hi, Im text)-->
<itemData name="Comment" defStyleNum="dsComment" /><!--(%Comment)-->
<itemData name="Section" defStyleNum="dsKeyword" /><!--\section{(Fancy!)}-->
<itemData name="Brace" defStyleNum="dsChar" spellChecking="false"/><!--({})-->
<itemData name="Math" defStyleNum="dsOthers" spellChecking="false"/><!--($5$)-->
<itemData name="Macro" defStyleNum="dsFunction" spellChecking="false"/><!--(\foo)-->
<itemData name="Block" defStyleNum="dsRegionMarker" spellChecking="false"/><!--\start(bar), \stop(bar)-->
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/><!--$($$)-->
<itemData name="Verbatim" defStyleNum="dsString" spellChecking="false"/><!--\starttyping(eggs)\stoptyping, \definetyping[C] \startC(umm…)\stopC-->
</itemDatas>
</highlighting>
<general>
<keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
<comments>
<comment name="singleLine" start="%" />
</comments>
</general>
<spellchecking>
<encodings>
<encoding string="''" ignored="true" />
</encodings>
</spellchecking>
</language>
<!-- kate: space-indent off; indent-width 4; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Crack" version="10" kateversion="5.0" section="Sources" extensions="*.crk" mimetype="">
<highlighting>
<list name="keywords">
<item>break</item>
<item>catch</item>
<item>class</item>
<item>continue</item>
<item>else</item>
<item>false</item>
<item>for</item>
<item>if</item>
<item>in</item>
<item>is</item>
<item>null</item>
<item>oper</item>
<item>return</item>
<item>this</item>
<item>true</item>
<item>try</item>
<item>typeof</item>
<item>while</item>
</list>
<list name="types">
<item>bool</item>
<item>byte</item>
<item>int16</item>
<item>int32</item>
<item>int64</item>
<item>uint16</item>
<item>uint32</item>
<item>uint64</item>
<item>float32</item>
<item>float64</item>
<item>int</item>
<item>uint</item>
<item>intz</item>
<item>uintz</item>
<item>float</item>
<item>void</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<WordDetect attribute="Keyword" context="Package" String="import" />
<keyword attribute="Data Type" context="#stay" String="types" />
<Float attribute="Float" context="#stay"/>
<HlCOct attribute="Octal" context="#stay"/>
<HlCHex attribute="Hex" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<DetectChar attribute="String" context="Single quoted String" char="'"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<DetectChar attribute="String" context="Backtick String" char="`"/>
<Detect2Chars attribute="Char" context="Char" char="b" char1="'" />
<DetectChar attribute="Comment" context="Commentar 1" char="#" />
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*[(])" />
<RegExpr attribute="Annotation" context="#stay" String="@\w+" />
<DetectIdentifier attribute="Normal Text"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<LineContinue attribute="String" context="#pop"/>
<HlCStringChar attribute="Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="String" lineEndContext="#pop" name="Single quoted String">
<LineContinue attribute="String" context="#pop"/>
<HlCStringChar attribute="Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
<context attribute="String" lineEndContext="#stay" name="Backtick String">
<HlCStringChar attribute="Char" context="#stay"/>
<Detect2Chars attribute="Substitution" char="$" char1="(" context="Subst"/>
<DetectChar attribute="Substitution" char="$" context="Short Subst"/>
<DetectChar attribute="String" context="#pop" char="`"/>
</context>
<context attribute="Char" lineEndContext="#pop" name="Char">
<HlCStringChar attribute="Char" context="#stay" />
<DetectChar attribute="Char" context="#pop" char="'" />
</context>
<context name="Braces" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Normal Text" char=")" context="#pop"/>
<!-- Highlight everything inside as code. -->
<IncludeRules context="Normal"/>
</context>
<context name="Subst" attribute="Normal Text" lineEndContext="#stay">
<!-- Switch to a new context when encountering an lbrace so that we don't #pop too early. -->
<DetectChar attribute="Normal Text" char="(" context="Braces"/>
<DetectChar attribute="Substitution" char=")" context="#pop"/>
<!-- Highlight substitution as code. -->
<IncludeRules context="Normal"/>
</context>
<context name="Short Subst" attribute="Substitution" lineEndContext="#pop">
<RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/>
</context>
<context name="Package" attribute="Package" lineEndContext="#pop">
<RegExpr attribute="Package" String="[\w\\.]+" context="#pop"/>
</context>
<context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<IncludeRules context="##Doxygen" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
<IncludeRules context="##Comments" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Substitution" defStyleNum="dsOthers"/>
<itemData name="Package" defStyleNum="dsFunction"/>
<itemData name="Function" defStyleNum="dsFunction"/>
<itemData name="Annotation" defStyleNum="dsAttribute"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#" />
<comment name="multiLine" start="/*" end="*/" region="BlockComment"/>
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,993 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
Crystal syntax highlighting definition for Kate.
Copyright (C) 2022 by Gaurav Shah (gauravshah.89@gmail.com)
Forked from the Ruby syntax highlighting definition.
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="Crystal" section="Sources"
version="0" kateversion="5.0"
extensions="*.cr"
mimetype="application/x-crystal"
style="crystal" indenter="ruby"
author="Gaurav Shah (gauravshah.89@gmail.com)" license="LGPLv2+">
<highlighting>
<list name="keywords">
<item>begin</item>
<item>break</item>
<item>case</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>rescue</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</item>
<item>protected</item>
</list>
<list name="attribute-definitions">
<item>getter</item>
<item>setter</item>
<item>property</item>
</list>
<list name="definitions">
<item>alias</item>
<item>module</item>
<item>class</item>
<item>struct</item>
<item>def</item>
<item>macro</item>
</list>
<list name="pseudo-variables">
<item>self</item>
<item>super</item>
<item>nil</item>
<item>false</item>
<item>true</item>
<item>caller</item>
<!-- TODO: move these to psudo constants list -->
<item>__FILE__</item>
<item>__LINE__</item>
<item>__END_LINE__</item>
<item>__DIR__</item>
</list>
<!-- Kernel module methods.
NOTE: Methods ending in ? or !
are included below as regexes.
-->
<!-- TODO: replace this with Crystal Object methods? -->
<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>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<!-- crystal ignores newline after \ -->
<LineContinue attribute="Normal Text" context="Line Continue"/>
<!-- "shebang" line -->
<!-- TODO: this may be required once crystal interpreter is ready -->
<!--<RegExpr attribute="Keyword" String="^#!\/.*" context="#stay" column="0"/>-->
<!-- "def" - "end" blocks -->
<!-- check for statement modifiers with regexes -->
<Detect2Chars attribute="Operator" char="{" char1="%" context="Find closing macro brace" beginRegion="def block"/>
<DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
<!-- TODO: why is this needed as a Delimiter? -->
<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>
<RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
<WordDetect attribute="Keyword" String="class" context="no_heredoc" beginRegion="def block"/>
<WordDetect attribute="Keyword" String="struct" context="no_heredoc" beginRegion="def block"/>
<WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/>
<WordDetect attribute="Keyword" String="begin" 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="macro" context="#stay" beginRegion="def block"/>
<WordDetect attribute="Keyword" String="def" context="Overloaded Operators" 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"/>
<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="Kernel methods" String="kernel-methods" context="check_div_2"/>
<keyword attribute="Module mixin methods" String="mixin-methods" context="check_div_2"/>
<!-- TODO: write a rule for $~ and $? -->
<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). -->
<!-- TODO: add support for Crystal number literals -->
<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"/>
<!-- TODO: what is this? remove if this is not required. -->
<HlCChar attribute="Char" context="check_div_1"/>
<!-- 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"/>
<!-- \s! is regexp hack -->
<RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&amp;&lt;&gt;\^\+*~\-=]+|\s!|/=\s" context="#stay"/>
<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"/>
<!-- Do not send to "check_div_1" context!:
after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->
<RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>
<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
<!-- TODO: There are no single-quoted strings in Crystal. Only single-quoted characters. Modify accordingly. -->
<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
<DetectChar attribute="Command" char="`" context="Command String"/>
<!-- TODO: Remove this if not needed -->
<Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>
<DetectChar attribute="Comment" char="#" context="General Comment"/>
<DetectChar attribute="Delimiter" char="[" context="#stay"/>
<DetectChar attribute="Delimiter" char="]" context="check_div_1"/>
<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>
<context name="Macro" attribute="Normal Text" lineEndContext="#stay">
<!-- TODO: copied Macro context from Normal context. repititions can be removed. pls refactor by including rules. -->
<!-- crystal ignores newline after \ -->
<LineContinue attribute="Normal Text" context="Line Continue"/>
<!-- "def" - "end" blocks -->
<!-- check for statement modifiers with regexes -->
<DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>
<RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
<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="do" context="#stay" beginRegion="def block"/>
<WordDetect attribute="Keyword" String="def" context="Overloaded Operators" 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"/>
<keyword attribute="Keyword" String="keywords" context="#stay"/>
<keyword attribute="Attribute Definition" String="attribute-definitions" context="check_div_2"/>
<keyword attribute="Definition" String="definitions" context="#stay" />
<keyword attribute="Pseudo variable" String="pseudo-variables" 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"/>
<!-- 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"/>
<!-- \s! is regexp hack -->
<RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&amp;&lt;&gt;\^\+*~\-=]+|\s!|/=\s" context="#stay"/>
<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"/>
<!-- Do not send to "check_div_1" context!:
after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->
<RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>
<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
<!-- TODO: There are no single-quoted strings in Crystal. Only single-quoted characters. Modify accordingly. -->
<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
<DetectChar attribute="Command" char="`" context="Command String"/>
<!-- TODO: Remove this if not needed -->
<Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>
<DetectChar attribute="Comment" char="#" context="General Comment"/>
<DetectChar attribute="Delimiter" char="[" context="#stay"/>
<DetectChar attribute="Delimiter" char="]" 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>
<context name="Overloaded Operators" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<DetectChar attribute="Normal Text" char="/" context="#pop"/>
</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">
<Detect2Chars attribute="Operator" char="/" char1="/" context="#pop"/>
<DetectSpaces attribute="Normal Text" context="#stay"/>
<Detect2Chars attribute="Operator" char="%" char1="}" context="#pop#pop"/>
<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">
<Detect2Chars attribute="Operator" char="/" char1="/" context="#pop#pop"/>
<DetectSpaces attribute="Normal Text" context="#stay"/>
<Detect2Chars attribute="Operator" char="%" char1="}" context="#pop#pop#pop#pop"/>
<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">
<Detect2Chars attribute="Operator" char="/" char1="/" context="#pop"/>
<AnyChar attribute="Operator" String="/%" context="#pop"/>
<DetectSpaces attribute="Normal Text" 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">
<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">
<Detect2Chars attribute="Operator" char="/" char1="/" context="#pop#pop"/>
<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
<DetectSpaces attribute="Normal Text" 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">
<RegExpr attribute="Operator" String="//(?=\s)" context="#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)|(if|unless)\b" context="#stay" firstNonSpace="true"/>
<IncludeRules context="Normal"/>
</context>
<context name="Find closing macro brace" attribute="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Operator" char="%" char1="}" context="check_div_1_pop" endRegion="def block"/>
<IncludeRules context="Macro"/>
</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="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">
<DetectSpaces />
<IncludeRules context="##Comments" />
</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" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />
<RegExpr attribute="Keyword" context="normal_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)" />
</context>
<context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />
<RegExpr attribute="Keyword" context="indented_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)" />
</context>
<!-- these are the real heredoc contexts -->
<context name="indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
<IncludeRules context="heredoc_rules" />
</context>
<context name="apostrophed_indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
</context>
<context name="normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
<IncludeRules context="heredoc_rules" />
</context>
<context name="apostrophed_normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
</context>
<!-- rules for heredoc types -->
<context name="heredoc_rules" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
</context>
<!-- avoid highlighting heredoc markers, for example, in singleton class definition (see bug: #358273) -->
<context name="no_heredoc" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces />
<Detect2Chars attribute="Operator" char="&lt;" char1="&lt;" context="#pop"/>
<!-- comments -->
<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"/>
</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" />
<StringDetect 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" />
<StringDetect 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" />
<StringDetect 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" />
<StringDetect 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" />
<StringDetect 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 -->
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsControlFlow"/>
<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
<itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #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="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->
<itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->
<itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->
<itemData name="Regular Expression" defStyleNum="dsSpecialString"/> <!-- #4A5704 -->
<itemData name="Substitution" defStyleNum="dsSpecialChar"/>
<!-- short for 'general delimited input' -->
<itemData name="GDL input" defStyleNum="dsOthers" />
<itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->
<itemData name="Constant" defStyleNum="dsDataType"/>
<itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->
<itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
<itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #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="Here Document" defStyleNum="dsDocumentation"/>
<itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
<itemData name="Operator" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#" position="afterwhitespace"/>
</comments>
<keywords casesensitive="1" weakDeliminator="!?"/>
</general>
</language>
<!-- kate: replace-tabs off; -->
@@ -0,0 +1,169 @@
<!DOCTYPE language>
<language name="C#" alternativeNames="CS;CSharp" version="14" kateversion="5.0" section="Sources" extensions="*.cs;*.ashx" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">
<highlighting>
<list name="keywords">
<item>abstract</item>
<item>as</item>
<item>base</item>
<item>break</item>
<item>case</item>
<item>catch</item>
<item>class</item>
<item>checked</item>
<item>continue</item>
<item>default</item>
<item>delegate</item>
<item>do</item>
<item>else</item>
<item>enum</item>
<item>event</item>
<item>explicit</item>
<item>extern</item>
<item>false</item>
<item>for</item>
<item>foreach</item>
<item>finally</item>
<item>fixed</item>
<item>goto</item>
<item>if</item>
<item>implicit</item>
<item>in</item>
<item>interface</item>
<item>internal</item>
<item>is</item>
<item>lock</item>
<item>namespace</item>
<item>new</item>
<item>null</item>
<item>operator</item>
<item>out</item>
<item>override</item>
<item>params</item>
<item>private</item>
<item>protected</item>
<item>public</item>
<item>readonly</item>
<item>ref</item>
<item>return</item>
<item>sealed</item>
<item>sizeof</item>
<item>stackalloc</item>
<item>static</item>
<item>struct</item>
<item>switch</item>
<item>this</item>
<item>throw</item>
<item>true</item>
<item>try</item>
<item>typeof</item>
<item>unchecked</item>
<item>unsafe</item>
<item>using</item>
<item>virtual</item>
<item>while</item>
<item>#if</item>
<item>#else</item>
<item>#elif</item>
<item>#endif</item>
<item>#define</item>
<item>#undef</item>
<item>#warning</item>
<item>#error</item>
<item>#line</item>
</list>
<list name="types">
<item>bool</item>
<item>byte</item>
<item>char</item>
<item>const</item>
<item>decimal</item>
<item>double</item>
<item>float</item>
<item>int</item>
<item>long</item>
<item>object</item>
<item>uint</item>
<item>ushort</item>
<item>ulong</item>
<item>sbyte</item>
<item>short</item>
<item>string</item>
<item>void</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" />
<Float attribute="Float" context="Float Suffixes"/>
<HlCOct attribute="Octal" context="#stay"/>
<HlCHex attribute="Hex" context="#stay"/>
<Int attribute="Decimal" context="Int Suffixes"/>
<HlCChar attribute="Char" context="#stay"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>
<RegExpr attribute="Data Type" context="#stay" String="\bvar(?=\s+\w+)"/>
<RegExpr attribute="Keyword" context="#stay" String="\b(partial(?=\s+(?:class|struct|interface|void))|yield(?=\s+(?:return|break))|(?:set|get)(?=\s*[;{])|global(?=\s*::\s*\w+))"/>
<StringDetect attribute="Decimal" context="Decimal" String="#region" beginRegion="Region1"/>
<StringDetect attribute="Decimal" context="Decimal" String="#endregion" endRegion="Region1"/>
<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*[(])" />
<DetectChar attribute="Symbol" context="Member" char="."/>
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
</context>
<context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<AnyChar String="dDfFmM" attribute="Float" context="#pop"/>
</context>
<context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<StringDetect attribute="Decimal" context="#pop" String="UL" insensitive="true"/>
<StringDetect attribute="Decimal" context="#pop" String="LU" insensitive="true"/>
<AnyChar attribute="Decimal" context="#pop" String="ULul"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<LineContinue attribute="String" context="#pop"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</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">
<IncludeRules context="##Comments"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
<IncludeRules context="##Comments"/>
</context>
<context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<IncludeRules context="##Doxygen" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="BlockComment" />
</context>
<context attribute="Decimal" lineEndContext="#pop" name="Decimal"/>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Function" defStyleNum="dsFunction"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace"/>
<comment name="multiLine" start="/*" end="*/" region="BlockComment" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY sep "|">
]>
<!--
Inspired by Rainbow CSV
Language name | Separator | Extension | Properties
CSV | , (comma) | .csv | Ignored inside double-quoted fields
TSV | \t (TAB) | .tsv .tab |
CSV (semicolon) | ; (semicolon) | | Ignored inside double-quoted fields
CSV (whitespace) | whitespace | | Consecutive whitespaces are merged
CSV (pipe) | | (pipe) |
-->
<language name="CSV (pipe)" section="Other" version="1" kateversion="2.4" extensions="*.csv" mimetype="text/csv" priority="4" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
<highlighting>
<contexts>
<context name="Column0" lineEndContext="#stay" attribute="Column 0">
<DetectChar char="&sep;" context="#pop!Column1" attribute="Column 0 Separator"/>
</context>
<context name="Column1" lineEndContext="#pop!Column0" attribute="Column 1">
<DetectChar char="&sep;" context="#pop!Column2" attribute="Column 1 Separator"/>
</context>
<context name="Column2" lineEndContext="#pop!Column0" attribute="Column 2">
<DetectChar char="&sep;" context="#pop!Column3" attribute="Column 2 Separator"/>
</context>
<context name="Column3" lineEndContext="#pop!Column0" attribute="Column 3">
<DetectChar char="&sep;" context="#pop!Column4" attribute="Column 3 Separator"/>
</context>
<context name="Column4" lineEndContext="#pop!Column0" attribute="Column 4">
<DetectChar char="&sep;" context="#pop!Column5" attribute="Column 4 Separator"/>
</context>
<context name="Column5" lineEndContext="#pop!Column0" attribute="Column 5">
<DetectChar char="&sep;" context="#pop!Column6" attribute="Column 5 Separator"/>
</context>
<context name="Column6" lineEndContext="#pop!Column0" attribute="Column 6">
<DetectChar char="&sep;" context="#pop!Column7" attribute="Column 6 Separator"/>
</context>
<context name="Column7" lineEndContext="#pop!Column0" attribute="Column 7">
<DetectChar char="&sep;" context="#pop!Column8" attribute="Column 7 Separator"/>
</context>
<context name="Column8" lineEndContext="#pop!Column0" attribute="Column 8">
<DetectChar char="&sep;" context="#pop!Column9" attribute="Column 8 Separator"/>
</context>
<context name="Column9" lineEndContext="#pop!Column0" attribute="Column 9">
<DetectChar char="&sep;" context="#pop!Column0" attribute="Column 9 Separator"/>
</context>
</contexts>
<itemDatas>
<itemData name="Column 0" defStyleNum="dsNormal"/>
<itemData name="Column 1" defStyleNum="dsVariable"/>
<itemData name="Column 2" defStyleNum="dsString"/>
<itemData name="Column 3" defStyleNum="dsBuiltIn"/>
<itemData name="Column 4" defStyleNum="dsPreprocessor"/>
<itemData name="Column 5" defStyleNum="dsChar"/>
<itemData name="Column 6" defStyleNum="dsFunction"/>
<itemData name="Column 7" defStyleNum="dsBaseN"/>
<itemData name="Column 8" defStyleNum="dsOperator"/>
<itemData name="Column 9" defStyleNum="dsDataType"/>
<itemData name="Column 0 Separator" bold="1" defStyleNum="dsNormal"/>
<itemData name="Column 1 Separator" bold="1" defStyleNum="dsVariable"/>
<itemData name="Column 2 Separator" bold="1" defStyleNum="dsString"/>
<itemData name="Column 3 Separator" bold="1" defStyleNum="dsBuiltIn"/>
<itemData name="Column 4 Separator" bold="1" defStyleNum="dsPreprocessor"/>
<itemData name="Column 5 Separator" bold="1" defStyleNum="dsChar"/>
<itemData name="Column 6 Separator" bold="1" defStyleNum="dsFunction"/>
<itemData name="Column 7 Separator" bold="1" defStyleNum="dsBaseN"/>
<itemData name="Column 8 Separator" bold="1" defStyleNum="dsOperator"/>
<itemData name="Column 9 Separator" bold="1" defStyleNum="dsDataType"/>
</itemDatas>
</highlighting>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY sep ";">
]>
<!--
Inspired by Rainbow CSV
Language name | Separator | Extension | Properties
CSV | , (comma) | .csv | Ignored inside double-quoted fields
TSV | \t (TAB) | .tsv .tab |
CSV (semicolon) | ; (semicolon) | | Ignored inside double-quoted fields
CSV (whitespace) | whitespace | | Consecutive whitespaces are merged
CSV (pipe) | | (pipe) |
-->
<language name="CSV (semicolon)" section="Other" version="1" kateversion="5.62" extensions="*.csv" mimetype="text/csv" priority="4" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
<highlighting>
<contexts>
<context name="Column0" lineEndContext="#stay" attribute="Column 0">
<DetectChar char="&sep;" context="#pop!Column1" attribute="Column 0 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column0Quote"/>
<DetectChar char="&quot;" context="Column0MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column0Quote" lineEndContext="#pop" attribute="Column 0" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column0MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column0MultiLine" lineEndContext="#stay" attribute="Column 0">
<DetectChar char="&quot;" context="#pop!Column0Quote"/>
</context>
<context name="Column1" lineEndContext="#pop!Column0" attribute="Column 1">
<DetectChar char="&sep;" context="#pop!Column2" attribute="Column 1 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column1Quote"/>
<DetectChar char="&quot;" context="Column1MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column1Quote" lineEndContext="#pop#pop!Column0" attribute="Column 1" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column1MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column1MultiLine" lineEndContext="#stay" attribute="Column 1">
<DetectChar char="&quot;" context="#pop!Column1Quote"/>
</context>
<context name="Column2" lineEndContext="#pop!Column0" attribute="Column 2">
<DetectChar char="&sep;" context="#pop!Column3" attribute="Column 2 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column2Quote"/>
<DetectChar char="&quot;" context="Column2MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column2Quote" lineEndContext="#pop#pop!Column0" attribute="Column 2" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column2MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column2MultiLine" lineEndContext="#stay" attribute="Column 2">
<DetectChar char="&quot;" context="#pop!Column2Quote"/>
</context>
<context name="Column3" lineEndContext="#pop!Column0" attribute="Column 3">
<DetectChar char="&sep;" context="#pop!Column4" attribute="Column 3 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column3Quote"/>
<DetectChar char="&quot;" context="Column3MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column3Quote" lineEndContext="#pop#pop!Column0" attribute="Column 3" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column3MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column3MultiLine" lineEndContext="#stay" attribute="Column 3">
<DetectChar char="&quot;" context="#pop!Column3Quote"/>
</context>
<context name="Column4" lineEndContext="#pop!Column0" attribute="Column 4">
<DetectChar char="&sep;" context="#pop!Column5" attribute="Column 4 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column4Quote"/>
<DetectChar char="&quot;" context="Column4MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column4Quote" lineEndContext="#pop#pop!Column0" attribute="Column 4" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column4MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column4MultiLine" lineEndContext="#stay" attribute="Column 4">
<DetectChar char="&quot;" context="#pop!Column4Quote"/>
</context>
<context name="Column5" lineEndContext="#pop!Column0" attribute="Column 5">
<DetectChar char="&sep;" context="#pop!Column6" attribute="Column 5 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column5Quote"/>
<DetectChar char="&quot;" context="Column5MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column5Quote" lineEndContext="#pop#pop!Column0" attribute="Column 5" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column5MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column5MultiLine" lineEndContext="#stay" attribute="Column 5">
<DetectChar char="&quot;" context="#pop!Column5Quote"/>
</context>
<context name="Column6" lineEndContext="#pop!Column0" attribute="Column 6">
<DetectChar char="&sep;" context="#pop!Column7" attribute="Column 6 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column6Quote"/>
<DetectChar char="&quot;" context="Column6MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column6Quote" lineEndContext="#pop#pop!Column0" attribute="Column 6" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column6MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column6MultiLine" lineEndContext="#stay" attribute="Column 6">
<DetectChar char="&quot;" context="#pop!Column6Quote"/>
</context>
<context name="Column7" lineEndContext="#pop!Column0" attribute="Column 7">
<DetectChar char="&sep;" context="#pop!Column8" attribute="Column 7 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column7Quote"/>
<DetectChar char="&quot;" context="Column7MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column7Quote" lineEndContext="#pop#pop!Column0" attribute="Column 7" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column7MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column7MultiLine" lineEndContext="#stay" attribute="Column 7">
<DetectChar char="&quot;" context="#pop!Column7Quote"/>
</context>
<context name="Column8" lineEndContext="#pop!Column0" attribute="Column 8">
<DetectChar char="&sep;" context="#pop!Column9" attribute="Column 8 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column8Quote"/>
<DetectChar char="&quot;" context="Column8MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column8Quote" lineEndContext="#pop#pop!Column0" attribute="Column 8" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column8MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column8MultiLine" lineEndContext="#stay" attribute="Column 8">
<DetectChar char="&quot;" context="#pop!Column8Quote"/>
</context>
<context name="Column9" lineEndContext="#pop!Column0" attribute="Column 9">
<DetectChar char="&sep;" context="#pop!Column0" attribute="Column 9 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column9Quote"/>
<DetectChar char="&quot;" context="Column9MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column9Quote" lineEndContext="#pop!Column0" attribute="Column 9" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column9MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column9MultiLine" lineEndContext="#stay" attribute="Column 9">
<DetectChar char="&quot;" context="#pop!Column9Quote"/>
</context>
<context name="FindField" lineEndContext="#stay" attribute="Column 0">
<RegExpr String="[^&sep;]+"/>
</context>
<context name="Error" lineEndContext="#stay" attribute="Error">
<RegExpr String="[^&sep;]+" context="#pop" attribute="Error"/>
</context>
</contexts>
<itemDatas>
<itemData name="Column 0" defStyleNum="dsNormal"/>
<itemData name="Column 1" defStyleNum="dsVariable"/>
<itemData name="Column 2" defStyleNum="dsString"/>
<itemData name="Column 3" defStyleNum="dsBuiltIn"/>
<itemData name="Column 4" defStyleNum="dsPreprocessor"/>
<itemData name="Column 5" defStyleNum="dsChar"/>
<itemData name="Column 6" defStyleNum="dsFunction"/>
<itemData name="Column 7" defStyleNum="dsBaseN"/>
<itemData name="Column 8" defStyleNum="dsOperator"/>
<itemData name="Column 9" defStyleNum="dsDataType"/>
<itemData name="Column 0 Separator" bold="1" defStyleNum="dsNormal"/>
<itemData name="Column 1 Separator" bold="1" defStyleNum="dsVariable"/>
<itemData name="Column 2 Separator" bold="1" defStyleNum="dsString"/>
<itemData name="Column 3 Separator" bold="1" defStyleNum="dsBuiltIn"/>
<itemData name="Column 4 Separator" bold="1" defStyleNum="dsPreprocessor"/>
<itemData name="Column 5 Separator" bold="1" defStyleNum="dsChar"/>
<itemData name="Column 6 Separator" bold="1" defStyleNum="dsFunction"/>
<itemData name="Column 7 Separator" bold="1" defStyleNum="dsBaseN"/>
<itemData name="Column 8 Separator" bold="1" defStyleNum="dsOperator"/>
<itemData name="Column 9 Separator" bold="1" defStyleNum="dsDataType"/>
<itemData name="Error" defStyleNum="dsError"/>
</itemDatas>
</highlighting>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
Inspired by Rainbow CSV
Language name | Separator | Extension | Properties
CSV | , (comma) | .csv | Ignored inside double-quoted fields
TSV | \t (TAB) | .tsv .tab |
CSV (semicolon) | ; (semicolon) | | Ignored inside double-quoted fields
CSV (whitespace) | whitespace | | Consecutive whitespaces are merged
CSV (pipe) | | (pipe) |
-->
<language name="CSV (whitespace)" section="Other" version="1" kateversion="5.62" extensions="*.csv" mimetype="text/csv" priority="4" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
<highlighting>
<contexts>
<context name="Column0" lineEndContext="#stay" attribute="Column 0">
<DetectChar char=" " context="#pop!Column0Spaces" attribute="Column 0 Separator"/>
</context>
<context name="Column0Spaces" lineEndContext="#pop!Column0" attribute="Column 0 Separator" fallthroughContext="#pop!Column1">
<DetectChar char=" "/>
</context>
<context name="Column1" lineEndContext="#pop!Column0" attribute="Column 1">
<DetectChar char=" " context="#pop!Column1Spaces" attribute="Column 1 Separator"/>
</context>
<context name="Column1Spaces" lineEndContext="#pop!Column0" attribute="Column 1 Separator" fallthroughContext="#pop!Column2">
<DetectChar char=" "/>
</context>
<context name="Column2" lineEndContext="#pop!Column0" attribute="Column 2">
<DetectChar char=" " context="#pop!Column2Spaces" attribute="Column 2 Separator"/>
</context>
<context name="Column2Spaces" lineEndContext="#pop!Column0" attribute="Column 2 Separator" fallthroughContext="#pop!Column3">
<DetectChar char=" "/>
</context>
<context name="Column3" lineEndContext="#pop!Column0" attribute="Column 3">
<DetectChar char=" " context="#pop!Column3Spaces" attribute="Column 3 Separator"/>
</context>
<context name="Column3Spaces" lineEndContext="#pop!Column0" attribute="Column 3 Separator" fallthroughContext="#pop!Column4">
<DetectChar char=" "/>
</context>
<context name="Column4" lineEndContext="#pop!Column0" attribute="Column 4">
<DetectChar char=" " context="#pop!Column4Spaces" attribute="Column 4 Separator"/>
</context>
<context name="Column4Spaces" lineEndContext="#pop!Column0" attribute="Column 4 Separator" fallthroughContext="#pop!Column5">
<DetectChar char=" "/>
</context>
<context name="Column5" lineEndContext="#pop!Column0" attribute="Column 5">
<DetectChar char=" " context="#pop!Column5Spaces" attribute="Column 5 Separator"/>
</context>
<context name="Column5Spaces" lineEndContext="#pop!Column0" attribute="Column 5 Separator" fallthroughContext="#pop!Column6">
<DetectChar char=" "/>
</context>
<context name="Column6" lineEndContext="#pop!Column0" attribute="Column 6">
<DetectChar char=" " context="#pop!Column6Spaces" attribute="Column 6 Separator"/>
</context>
<context name="Column6Spaces" lineEndContext="#pop!Column0" attribute="Column 6 Separator" fallthroughContext="#pop!Column7">
<DetectChar char=" "/>
</context>
<context name="Column7" lineEndContext="#pop!Column0" attribute="Column 7">
<DetectChar char=" " context="#pop!Column7Spaces" attribute="Column 7 Separator"/>
</context>
<context name="Column7Spaces" lineEndContext="#pop!Column0" attribute="Column 7 Separator" fallthroughContext="#pop!Column8">
<DetectChar char=" "/>
</context>
<context name="Column8" lineEndContext="#pop!Column0" attribute="Column 8">
<DetectChar char=" " context="#pop!Column8Spaces" attribute="Column 8 Separator"/>
</context>
<context name="Column8Spaces" lineEndContext="#pop!Column0" attribute="Column 8 Separator" fallthroughContext="#pop!Column9">
<DetectChar char=" "/>
</context>
<context name="Column9" lineEndContext="#pop!Column0" attribute="Column 9">
<DetectChar char=" " context="#pop!Column9Spaces" attribute="Column 9 Separator"/>
</context>
<context name="Column9Spaces" lineEndContext="#pop!Column0" attribute="Column 9 Separator" fallthroughContext="#pop!Column0">
<DetectChar char=" "/>
</context>
</contexts>
<itemDatas>
<itemData name="Column 0" defStyleNum="dsNormal"/>
<itemData name="Column 1" defStyleNum="dsVariable"/>
<itemData name="Column 2" defStyleNum="dsString"/>
<itemData name="Column 3" defStyleNum="dsBuiltIn"/>
<itemData name="Column 4" defStyleNum="dsPreprocessor"/>
<itemData name="Column 5" defStyleNum="dsChar"/>
<itemData name="Column 6" defStyleNum="dsFunction"/>
<itemData name="Column 7" defStyleNum="dsBaseN"/>
<itemData name="Column 8" defStyleNum="dsOperator"/>
<itemData name="Column 9" defStyleNum="dsDataType"/>
<itemData name="Column 0 Separator" bold="1" defStyleNum="dsNormal"/>
<itemData name="Column 1 Separator" bold="1" defStyleNum="dsVariable"/>
<itemData name="Column 2 Separator" bold="1" defStyleNum="dsString"/>
<itemData name="Column 3 Separator" bold="1" defStyleNum="dsBuiltIn"/>
<itemData name="Column 4 Separator" bold="1" defStyleNum="dsPreprocessor"/>
<itemData name="Column 5 Separator" bold="1" defStyleNum="dsChar"/>
<itemData name="Column 6 Separator" bold="1" defStyleNum="dsFunction"/>
<itemData name="Column 7 Separator" bold="1" defStyleNum="dsBaseN"/>
<itemData name="Column 8 Separator" bold="1" defStyleNum="dsOperator"/>
<itemData name="Column 9 Separator" bold="1" defStyleNum="dsDataType"/>
</itemDatas>
</highlighting>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY sep ",">
]>
<!--
Inspired by Rainbow CSV
Language name | Separator | Extension | Properties
CSV | , (comma) | .csv | Ignored inside double-quoted fields
TSV | \t (TAB) | .tsv .tab |
CSV (semicolon) | ; (semicolon) | | Ignored inside double-quoted fields
CSV (whitespace) | whitespace | | Consecutive whitespaces are merged
CSV (pipe) | | (pipe) |
-->
<language name="CSV" section="Other" version="1" kateversion="5.62" extensions="*.csv" mimetype="text/csv" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
<highlighting>
<contexts>
<context name="Column0" lineEndContext="#stay" attribute="Column 0">
<DetectChar char="&sep;" context="#pop!Column1" attribute="Column 0 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column0Quote"/>
<DetectChar char="&quot;" context="Column0MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column0Quote" lineEndContext="#pop" attribute="Column 0" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column0MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column0MultiLine" lineEndContext="#stay" attribute="Column 0">
<DetectChar char="&quot;" context="#pop!Column0Quote"/>
</context>
<context name="Column1" lineEndContext="#pop!Column0" attribute="Column 1">
<DetectChar char="&sep;" context="#pop!Column2" attribute="Column 1 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column1Quote"/>
<DetectChar char="&quot;" context="Column1MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column1Quote" lineEndContext="#pop#pop!Column0" attribute="Column 1" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column1MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column1MultiLine" lineEndContext="#stay" attribute="Column 1">
<DetectChar char="&quot;" context="#pop!Column1Quote"/>
</context>
<context name="Column2" lineEndContext="#pop!Column0" attribute="Column 2">
<DetectChar char="&sep;" context="#pop!Column3" attribute="Column 2 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column2Quote"/>
<DetectChar char="&quot;" context="Column2MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column2Quote" lineEndContext="#pop#pop!Column0" attribute="Column 2" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column2MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column2MultiLine" lineEndContext="#stay" attribute="Column 2">
<DetectChar char="&quot;" context="#pop!Column2Quote"/>
</context>
<context name="Column3" lineEndContext="#pop!Column0" attribute="Column 3">
<DetectChar char="&sep;" context="#pop!Column4" attribute="Column 3 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column3Quote"/>
<DetectChar char="&quot;" context="Column3MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column3Quote" lineEndContext="#pop#pop!Column0" attribute="Column 3" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column3MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column3MultiLine" lineEndContext="#stay" attribute="Column 3">
<DetectChar char="&quot;" context="#pop!Column3Quote"/>
</context>
<context name="Column4" lineEndContext="#pop!Column0" attribute="Column 4">
<DetectChar char="&sep;" context="#pop!Column5" attribute="Column 4 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column4Quote"/>
<DetectChar char="&quot;" context="Column4MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column4Quote" lineEndContext="#pop#pop!Column0" attribute="Column 4" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column4MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column4MultiLine" lineEndContext="#stay" attribute="Column 4">
<DetectChar char="&quot;" context="#pop!Column4Quote"/>
</context>
<context name="Column5" lineEndContext="#pop!Column0" attribute="Column 5">
<DetectChar char="&sep;" context="#pop!Column6" attribute="Column 5 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column5Quote"/>
<DetectChar char="&quot;" context="Column5MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column5Quote" lineEndContext="#pop#pop!Column0" attribute="Column 5" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column5MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column5MultiLine" lineEndContext="#stay" attribute="Column 5">
<DetectChar char="&quot;" context="#pop!Column5Quote"/>
</context>
<context name="Column6" lineEndContext="#pop!Column0" attribute="Column 6">
<DetectChar char="&sep;" context="#pop!Column7" attribute="Column 6 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column6Quote"/>
<DetectChar char="&quot;" context="Column6MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column6Quote" lineEndContext="#pop#pop!Column0" attribute="Column 6" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column6MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column6MultiLine" lineEndContext="#stay" attribute="Column 6">
<DetectChar char="&quot;" context="#pop!Column6Quote"/>
</context>
<context name="Column7" lineEndContext="#pop!Column0" attribute="Column 7">
<DetectChar char="&sep;" context="#pop!Column8" attribute="Column 7 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column7Quote"/>
<DetectChar char="&quot;" context="Column7MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column7Quote" lineEndContext="#pop#pop!Column0" attribute="Column 7" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column7MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column7MultiLine" lineEndContext="#stay" attribute="Column 7">
<DetectChar char="&quot;" context="#pop!Column7Quote"/>
</context>
<context name="Column8" lineEndContext="#pop!Column0" attribute="Column 8">
<DetectChar char="&sep;" context="#pop!Column9" attribute="Column 8 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column8Quote"/>
<DetectChar char="&quot;" context="Column8MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column8Quote" lineEndContext="#pop#pop!Column0" attribute="Column 8" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column8MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column8MultiLine" lineEndContext="#stay" attribute="Column 8">
<DetectChar char="&quot;" context="#pop!Column8Quote"/>
</context>
<context name="Column9" lineEndContext="#pop!Column0" attribute="Column 9">
<DetectChar char="&sep;" context="#pop!Column0" attribute="Column 9 Separator"/>
<RangeDetect char="&quot;" char1="&quot;" context="Column9Quote"/>
<DetectChar char="&quot;" context="Column9MultiLine"/>
<IncludeRules context="FindField"/>
</context>
<context name="Column9Quote" lineEndContext="#pop!Column0" attribute="Column 9" fallthroughContext="#pop">
<RangeDetect char="&quot;" char1="&quot;"/>
<DetectChar char="&quot;" context="#pop!Column9MultiLine"/>
<IncludeRules context="Error"/>
</context>
<context name="Column9MultiLine" lineEndContext="#stay" attribute="Column 9">
<DetectChar char="&quot;" context="#pop!Column9Quote"/>
</context>
<context name="FindField" lineEndContext="#stay" attribute="Column 0">
<RegExpr String="[^&sep;]+"/>
</context>
<context name="Error" lineEndContext="#stay" attribute="Error">
<RegExpr String="[^&sep;]+" context="#pop" attribute="Error"/>
</context>
</contexts>
<itemDatas>
<itemData name="Column 0" defStyleNum="dsNormal"/>
<itemData name="Column 1" defStyleNum="dsVariable"/>
<itemData name="Column 2" defStyleNum="dsString"/>
<itemData name="Column 3" defStyleNum="dsBuiltIn"/>
<itemData name="Column 4" defStyleNum="dsPreprocessor"/>
<itemData name="Column 5" defStyleNum="dsChar"/>
<itemData name="Column 6" defStyleNum="dsFunction"/>
<itemData name="Column 7" defStyleNum="dsBaseN"/>
<itemData name="Column 8" defStyleNum="dsOperator"/>
<itemData name="Column 9" defStyleNum="dsDataType"/>
<itemData name="Column 0 Separator" bold="1" defStyleNum="dsNormal"/>
<itemData name="Column 1 Separator" bold="1" defStyleNum="dsVariable"/>
<itemData name="Column 2 Separator" bold="1" defStyleNum="dsString"/>
<itemData name="Column 3 Separator" bold="1" defStyleNum="dsBuiltIn"/>
<itemData name="Column 4 Separator" bold="1" defStyleNum="dsPreprocessor"/>
<itemData name="Column 5 Separator" bold="1" defStyleNum="dsChar"/>
<itemData name="Column 6 Separator" bold="1" defStyleNum="dsFunction"/>
<itemData name="Column 7 Separator" bold="1" defStyleNum="dsBaseN"/>
<itemData name="Column 8 Separator" bold="1" defStyleNum="dsOperator"/>
<itemData name="Column 9 Separator" bold="1" defStyleNum="dsDataType"/>
<itemData name="Error" defStyleNum="dsError"/>
</itemDatas>
</highlighting>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,450 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
This is an attempt to write a quick and dirty syntax file for Cubescript.
This will only document a subset of available keywords and internal commands, partly due to the various forks and the little overlap they have.
Some effort has been taken to highlight and mark errors where possible.
List values which are current ignored by the keyword identifier are commented.
-->
<language name="CubeScript" section="Scripts" version="5" kateversion="5.0" extensions="*.cfg" mimetype="" casesensitive="true" author="Kevin Meyer" license="zlib/libpng" indenter="normal">
<highlighting>
<!--
There are far more commands than these, these are just guaranteed to be in all forks.
-->
<list name="commands">
<item>?</item>
<item>alias</item>
<item>at</item>
<item>case</item>
<item>casef</item>
<item>cases</item>
<item>clearconsole</item>
<item>clearsleep</item>
<item>complete</item>
<item>concat</item>
<item>concatword</item>
<item>cond</item>
<item>conskip</item>
<item>do</item>
<item>echo</item>
<item>error</item>
<item>escape</item>
<item>exec</item>
<item>format</item>
<item>getalias</item>
<item>getfvarmin</item>
<item>getfvarmax</item>
<item>getvarmin</item>
<item>getvarmax</item>
<item>history</item>
<item>if</item>
<item>indexof</item>
<item>inputcommand</item>
<item>keymap</item>
<item>listcomplete</item>
<item>listdel</item>
<item>listfind</item>
<item>listlen</item>
<item>listsplice</item>
<item>local</item>
<item>loop</item>
<item>loopconcat</item>
<item>loopconcatword</item>
<item>loopfiles</item>
<item>looplist</item>
<item>loopwhile</item>
<item>miniconskip</item>
<item>nodebug</item>
<item>onrelease</item>
<item>prettylist</item>
<item>push</item>
<item>resetvar</item>
<item>result</item>
<item>rnd</item>
<item>saycommand</item>
<item>searchbinds</item>
<item>searcheditbinds</item>
<item>searchspecbinds</item>
<item>sleep</item>
<item>strcmp</item>
<item>strlen</item>
<item>strreplace</item>
<item>strstr</item>
<item>sublist</item>
<item>substr</item>
<item>tabify</item>
<item>toggleconsole</item>
<item>unescape</item>
<item>while</item>
<item>writecfg</item>
</list>
<list name="bindcommands">
<item>bind</item>
<item>editbind</item>
<item>specbind</item>
<item>getbind</item>
<item>geteditbind</item>
<item>getspecbind</item>
</list>
<list name="operators">
<!--
listed in the same order as in src/engine/command.cpp
Includes all available operators, both basic and advanced
-->
<item>+</item>
<item>*</item>
<item>-</item>
<item>+f</item>
<item>*f</item>
<item>-f</item>
<item>=</item>
<item>!=</item>
<item>&gt;</item>
<item>&lt;</item>
<item>&gt;=</item>
<item>&lt;=</item>
<item>=f</item>
<item>!=f</item>
<item>&gt;f</item>
<item>&lt;f</item>
<item>&gt;=f</item>
<item>&lt;=f</item>
<item>^</item>
<item>!</item>
<item>&amp;</item>
<item>|</item>
<item>~</item>
<item>^~</item>
<item>&amp;~</item>
<item>|~</item>
<item>&lt;&lt;</item>
<item>&gt;&gt;</item>
<item>&amp;&amp;</item>
<item>||</item>
<item>abs</item>
<item>absf</item>
<item>div</item>
<item>mod</item>
<item>divf</item>
<item>modf</item>
<item>sin</item>
<item>cos</item>
<item>tan</item>
<item>asin</item>
<item>acos</item>
<item>atan</item>
<item>sqrt</item>
<item>pow</item>
<item>loge</item>
<item>log2</item>
<item>log10</item>
<item>exp</item>
<item>min</item>
<item>max</item>
<item>minf</item>
<item>maxf</item>
<item>=s</item>
<item>!=s</item>
<item>&lt;s</item>
<item>&gt;s</item>
<item>&lt;=s</item>
<item>&gt;=s</item>
</list>
<list name="keys">
<!-- SDL 2.0 Standard Mose Buttons -->
<item>MOUSELEFT</item>
<item>MOUSEMIDDLE</item>
<item>MOUSERIGHT</item>
<item>MOUSEWHEELUP</item>
<item>MOUSEWHEELDOWN</item>
<item>MOUSEX1</item>
<item>MOUSEX2</item>
<!-- SDL 1.2, Standard Mouse Buttons -->
<item>MOUSE1</item>
<item>MOUSE2</item>
<item>MOUSE3</item>
<item>MOUSE4</item>
<item>MOUSE5</item>
<item>BACKSPACE</item>
<item>TAB</item>
<item>CLEAR</item>
<item>RETURN</item>
<item>PAUSE</item>
<item>ESCAPE</item>
<item>SPACE</item>
<item>EXCLAIM</item>
<item>QUOTEDBL</item>
<item>HASH</item>
<item>DOLLAR</item>
<item>AMPERSAND</item>
<item>QUOTE</item>
<item>LEFTPAREN</item>
<item>RIGHTPAREN</item>
<item>ASTERISK</item>
<item>PLUS</item>
<item>COMMA</item>
<item>MINUS</item>
<item>PERIOD</item>
<item>SLASH</item>
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>COLON</item>
<item>SEMICOLON</item>
<item>LESS</item>
<item>EQUALS</item>
<item>GREATER</item>
<item>QUESTION</item>
<item>AT</item>
<item>LEFTBRACKET</item>
<item>BACKSLASH</item>
<item>RIGHTBRACKET</item>
<item>CARET</item>
<item>UNDERSCORE</item>
<item>BACKQUOTE</item>
<item>A</item>
<item>B</item>
<item>C</item>
<item>D</item>
<item>E</item>
<item>F</item>
<item>G</item>
<item>H</item>
<item>I</item>
<item>J</item>
<item>K</item>
<item>L</item>
<item>M</item>
<item>N</item>
<item>O</item>
<item>P</item>
<item>Q</item>
<item>R</item>
<item>S</item>
<item>T</item>
<item>U</item>
<item>V</item>
<item>W</item>
<item>X</item>
<item>Y</item>
<item>Z</item>
<item>DELETE</item>
<item>KP0</item>
<item>KP1</item>
<item>KP2</item>
<item>KP3</item>
<item>KP4</item>
<item>KP5</item>
<item>KP6</item>
<item>KP7</item>
<item>KP8</item>
<item>KP9</item>
<item>KP_PERIOD</item>
<item>KP_DIVIDE</item>
<item>KP_MULTIPLY</item>
<item>KP_MINUS</item>
<item>KP_PLUS</item>
<item>KP_ENTER</item>
<item>KP_EQUALS</item>
<item>UP</item>
<item>DOWN</item>
<item>RIGHT</item>
<item>LEFT</item>
<item>INSERT</item>
<item>HOME</item>
<item>END</item>
<item>PAGEUP</item>
<item>PAGEDOWN</item>
<item>F1</item>
<item>F2</item>
<item>F3</item>
<item>F4</item>
<item>F5</item>
<item>F6</item>
<item>F7</item>
<item>F8</item>
<item>F9</item>
<item>F10</item>
<item>F11</item>
<item>F12</item>
<item>F13</item>
<item>F14</item>
<item>F15</item>
<item>NUMLOCK</item>
<item>CAPSLOCK</item>
<item>SCROLLOCK</item>
<item>RSHIFT</item>
<item>LSHIFT</item>
<item>RCTRL</item>
<item>LCTRL</item>
<item>RALT</item>
<item>LALT</item>
<item>RMETA</item>
<item>LMETA</item>
<item>LSUPER</item>
<item>RSUPER</item>
<item>MODE</item>
<item>COMPOSE</item>
<item>HELP</item>
<item>PRINT</item>
<item>SYSREQ</item>
<item>BREAK</item>
<item>MENU</item>
</list>
<!-- Reserved aliases. -->
<list name="aliases">
<item>commandbuf</item>
<item>editing</item>
<item>mainmenu</item>
<item>numargs</item>
</list>
<!--
TODO list for Cubescript contexts
1) Add GLSL support for shader commands, It's vanilla GLSL, the cubescript witchcraft aside.
2) Improve alias highlighting eg foo@[bar]baz; do not highlight baz, but make sure to still highlight all of $foo[bar]baz, will probably need a special context.
-->
<contexts>
<context name="Normal" attribute="Normal" lineEndContext="#stay">
<AnyChar attribute="Error" context="#stay" String="])"/>
<IncludeRules context="__Basic" />
</context>
<context name="Block" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="Brackets" context="#pop" char="]" endRegion="Block" />
<DetectChar attribute="Error" context="#stay" char=")"/>
<IncludeRules context="__Basic" />
</context>
<context name="Brackets" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="Error" context="#stay" char="]"/>
<DetectChar attribute="Brackets" context="#pop" char=")"/>
<IncludeRules context="__Basic" />
</context>
<context name="__Basic" attribute="Normal" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="Comment" char="/" char1="/"/>
<DetectChar attribute="Brackets" context="Block" char="[" beginRegion="Block" />
<DetectChar attribute="Brackets" context="Brackets" char="(" />
<DetectChar attribute="String" context="String" char="&quot;" />
<AnyChar lookAhead="true" context="Lookup" String="$@" />
<keyword attribute="Keyword" context="#stay" String="commands"/>
<keyword attribute="Operator" context="#stay" String="operators"/>
<keyword attribute="Keyword" context="Bind" String="bindcommands" />
<HlCHex attribute="IntOther" context="#stay"/>
<HlCOct attribute="IntOther" context="#stay"/>
<Float attribute="Float" context="#stay" />
<Int attribute="Int10" context="#stay"/>
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
<context name="__Lookup" attribute="Lookup" lineEndContext="#pop">
<DetectChar attribute="String" context="String" char="&quot;" />
<DetectChar attribute="LookupBrackets" context="LookupEncBlock" char="[" />
<DetectChar attribute="LookupBrackets" context="LookupEncBrackets" char="(" />
<RegExpr attribute="Error" context="#stay" String="[^\$\s]+\$[^\[\]\(\)\s]*|\S+(?![\s\[\(])[^\$@](?=[\[\(])" />
<RegExpr attribute="Key" context="#stay" String="[@\$]*arg[0-9]+" />
</context>
<context name="Lookup" attribute="Lookup" lineEndContext="#pop">
<DetectSpaces attribute="Normal" context="#pop" />
<AnyChar lookAhead="true" context="#pop" String=")];" />
<Detect2Chars lookAhead="true" context="#pop" char="/" char1="/"/>
<keyword attribute="Key" context="#stay" String="aliases" />
<IncludeRules context="__Lookup" />
</context>
<context name="LookupEncBrackets" attribute="Normal" lineEndContext="#stay">
<DetectChar attribute="LookupBrackets" context="#pop" char=")" />
<DetectChar attribute="Error" context="#stay" char="]" />
<Detect2Chars attribute="Comment" context="Comment" char="/" char1="/"/>
<IncludeRules context="__Basic" />
</context>
<context name="LookupEncBlock" attribute="Lookup" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="Comment" char="/" char1="/"/>
<DetectChar attribute="Error" context="#stay" char=")" />
<DetectChar attribute="LookupBrackets" context="#pop" char="]" />
<keyword attribute="Key" context="#stay" String="aliases" />
<IncludeRules context="__Lookup" />
</context>
<context name="String" attribute="String" lineEndContext="#pop">
<DetectChar attribute="String" context="#pop" char="&quot;" />
<!-- Escape newlines. -->
<LineContinue attribute="Escaped" context="#stay" char="^" />
<DetectChar attribute="Escaped" context="Escaped" char="^" />
</context>
<context name="Escaped" attribute="Escaped" lineEndContext="#stay" >
<!-- Cubescript treats any character following a "^" in a string is escaped. -->
<Detect2Chars char="f" char1="0" attribute="String0" context="#pop"/>
<Detect2Chars char="f" char1="1" attribute="String1" context="#pop"/>
<Detect2Chars char="f" char1="2" attribute="String2" context="#pop"/>
<Detect2Chars char="f" char1="3" attribute="String3" context="#pop"/>
<Detect2Chars char="f" char1="4" attribute="String4" context="#pop"/>
<Detect2Chars char="f" char1="5" attribute="String5" context="#pop"/>
<Detect2Chars char="f" char1="6" attribute="String6" context="#pop"/>
<Detect2Chars char="f" char1="7" attribute="String7" context="#pop"/>
<RegExpr String="f?." attribute="Escaped" context="#pop"/>
</context>
<context name="Bind" attribute="Error" lineEndContext="#pop">
<DetectSpaces attribute="Normal" />
<AnyChar lookAhead="true" context="#pop" String="[]();&quot;$@" />
<keyword insensitive="true" attribute="Key" context="#pop" String="keys" />
<Detect2Chars lookAhead="true" context="#pop" char="/" char1="/"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Lookup" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
<itemData name="Int10" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="IntOther" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Escaped" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Keyword" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
<itemData name="Key" defStyleNum="dsOthers" spellChecking="false"/>
<itemData name="LookupBrackets" defStyleNum="dsRegionMarker" spellChecking="false"/>
<itemData name="Brackets" defStyleNum="dsNormal" bold="1" spellChecking="false"/>
<!-- These are for the ^f# format tokens, the background colour is explicitly set to try and guarantee visibility at all times -->
<itemData name="String0" defStyleNum="dsString" bold="1" color="#40FF80" backgroundColor="#3F3F3F" spellChecking="false"/>
<itemData name="String1" defStyleNum="dsString" bold="1" color="#60A0FF" backgroundColor="#DFDFDF" spellChecking="false"/>
<itemData name="String2" defStyleNum="dsString" bold="1" color="#FFC040" backgroundColor="#3F3F3F" spellChecking="false"/>
<itemData name="String3" defStyleNum="dsString" bold="1" color="#FF4040" backgroundColor="#DFDFDF" spellChecking="false"/>
<itemData name="String4" defStyleNum="dsString" bold="1" color="#808080" backgroundColor="#DFDFDF" spellChecking="false"/>
<itemData name="String5" defStyleNum="dsString" bold="1" color="#A040A0" backgroundColor="#DFDFDF" spellChecking="false"/>
<itemData name="String6" defStyleNum="dsString" bold="1" color="#FF8000" backgroundColor="#DFDFDF" spellChecking="false"/>
<itemData name="String7" defStyleNum="dsString" bold="1" color="#FFFFFF" backgroundColor="#3F3F3F" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="true" wordWrapDeliminator="[(;" additionalDeliminator="$@" weakDeliminator="!=&lt;&gt;|&amp;^~+*"/>
<comments>
<comment name="singleLine" start="//" />
</comments>
</general>
</language>
<!--
// kate: space-indent on; indent-width 2; replace-tabs on;
-->
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="CUE Sheet" version="3" kateversion="5.0" section="Other" extensions="*.cue" mimetype="application/x-cue">
<highlighting>
<list name="keywords">
<item>CATALOG</item>
<item>CDTEXTFILE</item>
<item>FILE</item>
<item>FLAGS</item>
<item>INDEX</item>
<item>ISRC</item>
<item>PERFORMER</item>
<item>PREGAP</item>
<item>POSTGAP</item>
<item>REM</item>
<item>SONGWRITER</item>
<item>TITLE</item>
<item>TRACK</item>
</list>
<list name="format">
<item>AIFF</item>
<item>WAVE</item>
<item>MP3</item>
<item>BINARY</item>
<item>MOTOTOLA</item>
</list>
<list name="mode">
<item>AUDIO</item>
<item>CDG</item>
<item>CDI</item>
<item>MODE1</item>
<item>MODE2</item>
<item>RAW</item>
</list>
<list name="flags">
<item>4CH</item>
<item>DCP</item>
<item>PRE</item>
<item>SCMS</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Format" context="#stay" String="format" />
<keyword attribute="Mode" context="#stay" String="mode" />
<keyword attribute="Flags" context="#stay" String="flags" />
<Int attribute="Decimal" context="#stay" />
<DetectChar attribute="String" context="String" char="&quot;"/>
<DetectChar attribute="Comment" context="Comment" char=";"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<LineContinue attribute="String" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Format" defStyleNum="dsImport"/>
<itemData name="Mode" defStyleNum="dsVariable"/>
<itemData name="Flags" defStyleNum="dsOthers"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Comment" defStyleNum="dsComment"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start=";" />
</comments>
<keywords casesensitive="0" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,360 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!-- qualification of entities -->
<!ENTITY qualify "(?:[A-Z][a-zA-Z0-9_']*\.)*">
<!-- identifier -->
<!ENTITY ident "[a-z][a-zA-Z0-9_']*">
<!-- Type -->
<!ENTITY type "[A-Z][a-zA-Z0-9_']*">
<!-- infix operator characters -->
<!ENTITY infixchar "~!@#\$&#37;\^&amp;\*\+\-=&lt;&gt;\?\./\|&backslash;:">
<!-- identifier in prefix notation, e.g.: id, ($) -->
<!ENTITY prefixIdent "(?:&ident;|\([&infixchar;]+\))">
<!-- Characters allowed in character escape sequence, e.g., \n -->
<!ENTITY escSeqChar "abfnrtv\&quot;'" >
<!-- Ascii escape sequence, e.g., \NUL -->
<!ENTITY escSeqAscii "NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL" >
<!-- Control escape sequence, e.g., \^X -->
<!ENTITY escSeqCntrl "\^[A-Z@\[&backslash;\]\^_]" >
<!-- octal number -->
<!ENTITY octal "[0-7]+" >
<!-- decimal number -->
<!ENTITY decimal "[0-9]+" >
<!-- hexadecimal number -->
<!ENTITY hexadecimal "[0-9a-fA-F]+" >
<!-- a backslash, escaped for use in regular expressions -->
<!ENTITY backslash "\\" >
<!-- dashes introducing a currydoc comment -->
<!ENTITY currydoc "---" >
]>
<language name="Curry" version="4" kateversion="5.0"
section="Sources" extensions="*.curry" mimetype="text/x-curry"
author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
indenter="haskell">
<highlighting>
<list name="keywords">
<item>case</item>
<item>data</item>
<item>do</item>
<item>else</item>
<item>external</item>
<item>fcase</item>
<item>free</item>
<item>if</item>
<!-- Although import is a keyword, it is handled in a special context
to highlight "qualified", "as" and "hiding" in keyword style,
albeit these lexemes are no keywords.
<item>import</item>
-->
<item>in</item>
<item>infix</item>
<item>infixl</item>
<item>infixr</item>
<item>let</item>
<item>module</item>
<item>of</item>
<item>then</item>
<item>type</item>
<item>where</item>
</list>
<list name="Prelude Func">
<item>and</item>
<item>all</item>
<item>any</item>
<item>appendFile</item>
<item>best</item>
<item>break</item>
<item>browse</item>
<item>browseList</item>
<item>chr</item>
<item>concat</item>
<item>concatMap</item>
<item>const</item>
<item>curry</item>
<item>div</item>
<item>done</item>
<item>doSolve</item>
<item>drop</item>
<item>dropWhile</item>
<item>either</item>
<item>elem</item>
<item>ensureNotFree</item>
<item>ensureSpine</item>
<item>enumFrom</item>
<item>enumFromThen</item>
<item>enumFromTo</item>
<item>enumFromThenTo</item>
<item>error</item>
<item>failed</item>
<item>filter</item>
<item>findall</item>
<item>flip</item>
<item>foldl</item>
<item>foldl1</item>
<item>foldr</item>
<item>foldr1</item>
<item>fst</item>
<item>getChar</item>
<item>getLine</item>
<item>id</item>
<item>if_then_else</item>
<item>iterate</item>
<item>head</item>
<item>length</item>
<item>lines</item>
<item>lookup</item>
<item>map</item>
<item>mapIO</item>
<item>mapIO_</item>
<item>max</item>
<item>maybe</item>
<item>min</item>
<item>mod</item>
<item>negate</item>
<item>not</item>
<item>notElem</item>
<item>null</item>
<item>once</item>
<item>or</item>
<item>ord</item>
<item>otherwise</item>
<item>print</item>
<item>putChar</item>
<item>putStr</item>
<item>putStrLn</item>
<item>readFile</item>
<item>repeat</item>
<item>replicate</item>
<item>return</item>
<item>reverse</item>
<item>seq</item>
<item>sequenceIO</item>
<item>sequenceIO_</item>
<item>show</item>
<item>snd</item>
<item>solveAll</item>
<item>span</item>
<item>splitAt</item>
<item>success</item>
<item>tail</item>
<item>take</item>
<item>takeWhile</item>
<item>try</item>
<item>uncurry</item>
<item>unknown</item>
<item>unlines</item>
<item>unpack</item>
<item>until</item>
<item>unwords</item>
<item>unzip</item>
<item>unzip3</item>
<item>writeFile</item>
<item>words</item>
<item>zip</item>
<item>zip3</item>
<item>zipWith</item>
<item>zipWith3</item>
</list>
<list name="Prelude Type">
<item>Bool</item>
<item>Char</item>
<item>Either</item>
<item>Float</item>
<item>Int</item>
<item>IO</item>
<item>Maybe</item>
<item>Ordering</item>
<item>String</item>
<item>Success</item>
</list>
<list name="Prelude Cons">
<item>False</item>
<item>True</item>
<item>Left</item>
<item>Right</item>
<item>Just</item>
<item>Nothing</item>
<item>EQ</item>
<item>LT</item>
<item>GT</item>
</list>
<contexts>
<context name="Normal" attribute="Normal" lineEndContext="#stay">
<!-- pragmas, currydoc, comments -->
<StringDetect attribute="Pragma" context="Pragma" String="{-#" beginRegion="Pragma" />
<Detect2Chars attribute="Comment" context="Multiline Comment" char="{" char1="-" beginRegion="Multiline Comment" />
<StringDetect attribute="Currydoc" context="Currydoc" String="&currydoc;" />
<Detect2Chars attribute="Comment" context="Comment" char="-" char1="-" />
<!-- keywords, Prelude entities -->
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Prelude Function" context="#stay" String="Prelude Func" />
<keyword attribute="Prelude Type" context="#stay" String="Prelude Type" />
<keyword attribute="Prelude Constructor" context="#stay" String="Prelude Cons" />
<RegExpr attribute="Keyword" context="Import" String="import\s+(?:qualified)?" />
<!-- Literals -->
<Float attribute="Float" context="#stay" />
<RegExpr attribute="Octal" context="#stay" String="0[oO]&octal;" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<DetectChar attribute="Char" context="Char" char="'" />
<DetectChar attribute="String" context="String" char="&quot;" />
<!-- Others -->
<RegExpr attribute="Special Symbol" context="#stay" String="(?:::|:=|:&gt;|\-&gt;|&lt;\-|\.\.)" />
<RegExpr attribute="Signature" context="#stay" String="\s*&prefixIdent;\s*(?:,\s*&prefixIdent;)*\s*(?=::[^&infixchar;])" />
<RegExpr attribute="Function" context="#stay" String="&qualify;&ident;" />
<RegExpr attribute="Operator" context="#stay" String="&qualify;[&infixchar;]+" />
<RegExpr attribute="Type, Constructor" context="#stay" String="&qualify;&type;" />
<DetectChar attribute="Infix Application" context="Infix" char="`" />
<!-- Folding of braces -->
<DetectChar char="(" context="#stay" beginRegion="nested" attribute="Braces" />
<DetectChar char=")" context="#stay" endRegion="nested" attribute="Braces" />
<DetectChar char="[" context="#stay" beginRegion="list" attribute="Braces" />
<DetectChar char="]" context="#stay" endRegion="list" attribute="Braces" />
<DetectChar char="{" context="#stay" beginRegion="curly" attribute="Braces" />
<DetectChar char="}" context="#stay" endRegion="curly" attribute="Braces" />
</context>
<!-- Pragma -->
<context name="Pragma" attribute="Pragma" lineEndContext="#stay" >
<StringDetect attribute="Pragma" context="#pop" String="#-}" endRegion="Pragma" />
</context>
<!-- Multiline comment -->
<context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" >
<Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Multiline Comment" />
<IncludeRules context="##Comments" />
</context>
<!-- Currydoc -->
<context name="Currydoc" attribute="Currydoc" lineEndContext="#pop" />
<!-- Single line comment -->
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
<!-- Import section -->
<context name="Import" attribute="Normal" lineEndContext="#pop" >
<!-- pragmas, currydoc, comments -->
<StringDetect attribute="Pragma" context="Pragma" String="{-#" beginRegion="Pragma" />
<Detect2Chars attribute="Comment" context="Multiline Comment" char="{" char1="-" beginRegion="Multiline Comment" />
<StringDetect attribute="Currydoc" context="Currydoc" String="&currydoc;" />
<Detect2Chars attribute="Comment" context="Comment" char="-" char1="-" />
<RegExpr attribute="Type, Constructor" context="#stay" String="&qualify;&type;" />
<Detect2Chars attribute="Keyword" context="#stay" char="a" char1="s" />
<StringDetect attribute="Keyword" context="#stay" String="hiding" />
<!-- Pop context at open paren to highlight imported entities -->
<DetectChar attribute="Braces" context="#pop" char="(" beginRegion="nested" />
<RegExpr attribute="Syntax Error" context="#stay" String="\S+" />
</context>
<!-- A single characters, with escape sequences -->
<context name="Char" attribute="Char" lineEndContext="CharSyntaxError" >
<DetectChar attribute="Syntax Error" context="#pop" char="'" />
<DetectChar attribute="Char" context="CharEscape" char="\" />
<RegExpr attribute="Char" context="CharEnd" String="[^'&backslash;]" />
</context>
<!-- Character escape sequence -->
<context name="CharEscape" attribute="Char" lineEndContext="#pop!CharSyntaxError" >
<AnyChar attribute="Char" context="#pop!CharEnd" String="&escSeqChar;" />
<RegExpr attribute="Char" context="#pop!CharEnd" String="o&octal;|&decimal;|x&hexadecimal;|&escSeqCntrl;|&escSeqAscii;" />
<RegExpr attribute="Syntax Error" context="#pop!CharEnd" String="." />
</context>
<!-- Ending quote of character literal -->
<context name="CharEnd" attribute="Char" lineEndContext="#pop!CharSyntaxError" >
<DetectChar attribute="Char" context="#pop#pop" char="'" />
<RegExpr attribute="Syntax Error" context="#stay" String="." />
</context>
<!-- Character syntax error: Newline inside literal -->
<context name="CharSyntaxError" attribute="Syntax Error" lineEndContext="#stay" >
<DetectChar attribute="Syntax Error" context="#pop#pop" char="'" />
</context>
<!-- A string, with escape sequences -->
<context name="String" attribute="String" lineEndContext="StringSyntaxError" >
<DetectChar attribute="String" context="#pop" char="&quot;" />
<DetectChar attribute="String Escape" context="StringEscape" char="\" />
<RegExpr attribute="String" context="#stay" String="[^&quot;&backslash;]*" />
</context>
<!-- String escape sequence -->
<context name="StringEscape" attribute="String" lineEndContext="StringGap" >
<AnyChar attribute="String Escape" context="#pop" String="&escSeqChar;&amp;" />
<RegExpr attribute="String Escape" context="#pop" String="o&octal;|&decimal;|x&hexadecimal;|&escSeqCntrl;|&escSeqAscii;" />
<DetectSpaces attribute="String Escape" context="StringGap" />
<RegExpr attribute="Syntax Error" context="#pop" String="." />
</context>
<context name="StringGap" attribute="String" lineEndContext="#stay" >
<DetectSpaces attribute="String Escape" context="#stay" />
<DetectChar attribute="String Escape" context="#pop#pop#pop!String" char="\" />
<DetectChar attribute="Syntax Error" context="#pop#pop#pop" char="&quot;" />
<RegExpr attribute="Syntax Error" context="#stay" String="." />
</context>
<!-- String syntax error: Newline inside literal -->
<context name="StringSyntaxError" attribute="Syntax Error" lineEndContext="#stay" >
<DetectChar attribute="Syntax Error" context="#pop#pop" char="&quot;" />
</context>
<!-- Infix application -->
<context name="Infix" attribute="Infix Application" lineEndContext="#stay" >
<DetectChar attribute="Infix Application" context="#pop" char="`"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal" spellChecking="false" />
<!-- Comments -->
<itemData name="Pragma" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Currydoc" defStyleNum="dsDocumentation" />
<!-- Keywords, predefined entities -->
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Prelude Type" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Prelude Function" defStyleNum="dsFunction" spellChecking="false" />
<itemData name="Prelude Constructor" defStyleNum="dsKeyword" spellChecking="false" />
<!-- Literals -->
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="Char" defStyleNum="dsChar" spellChecking="false" />
<itemData name="String Escape" defStyleNum="dsChar" spellChecking="false" />
<itemData name="String" defStyleNum="dsString" />
<!-- Others -->
<itemData name="Braces" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Signature" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Function" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Operator" defStyleNum="dsFunction" spellChecking="false" />
<itemData name="Type, Constructor" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Special Symbol" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Infix Application" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Syntax Error" defStyleNum="dsError" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<folding indentationsensitive="1"/>
<comments>
<comment name="singleLine" start="--" position="afterwhitespace" />
<comment name="multiLine" start="{-" end="-}" region="Multiline Comment" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,935 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY hexfloat "0[xX][\da-fA-F_]*(?:\.[\da-fA-F_]*)?[pP][-+]?\d[\d_]*[fFL]?i?">
<!-- Float starting with a dot is matched in main context -->
<!-- All floats except integers -->
<!-- RegExpr is branched rather than using look aheads for efficiency at the expense of extra length -->
<!ENTITY float "\d[_\d]*(?:\.(?!\.)[_\d]*(?:[eE][-+]?\d[_\d]*)?[fFL]?i?|[eE][-+]?\d[_\d]*[fFL]?i?|[fF]i?|[fFL]?i)">
]>
<!--
========================================================================
D.XML supports syntax highlighting for the D programming language under Kate.
Updated 2007-2008 - Diggory Hardy <diggory.hardy@gmail.com> (copyright kate project).
Copyright (C) 2007 - Aziz Köksal <aziz.koeksal@gmail.com>
Copyright (C) 2007 - Jari-Matti Mäkelä <jmjm@iki.fi>
Copyright (C) 2004 - Simon J Mackenzie <project.katedxml@smackoz.fastmail.fm>
This code is released under the LGPL as part of kdelibs/kate.
========================================================================
D is a next generation language written by Walter Bright of Digital Mars fame.
Digital Mars C, C++ and D Compilers can be obtained from http://www.digitalmars.com/d/
========================================================================
UPDATE HISTORY:-
2008.09.22 - d.xml 1.61 - D 1.035/2.019 - Fix for identifiers starting _ and containing numbers.
2008.08.01 - d.xml 1.60 - D 1.033/2.017 - Merging ddoc.xml 1.14 since there is no advantage to having it separate.
2008.07.14 - uncommited - Added properties: .tupleof, .offsetof
2008.06.14 - D.XML 1.53 - D 1.030/2.014 - Added user keyword highlighting.
2008.06.06 - D.XML 1.53 - D 1.030/2.014 - Small fix involving floats starting . in embedded Ddoc.
- Added nothrow and pure attributes (D2.0 only).
2008.04.09 - D.XML 1.52 - D 1.028/2.012 - Added properties (especially for arrays).
- Added rules for C-Style indenter (thanks vektorboson!)
2008.02.22 - D.XML 1.51 - D 1.027/2.011 - Changed char rule behaviour on line end.
- Added support for strings ending with c, w or d (must have got lost at some point).
2008.02.22 - ddoc.xml 1.14 - Fixes/improvements for macros. Highlights first symbol and non-symbols
before as errors; matches embedded brackets () properly.
2008.01.09 - D.XML 1.50 - D 1.025/2.009 - Changed pragma, version, deprecated matching to use keyword not DetectString.
2007.12.18 - D.XML 1.49 - D 1.025/2.009 - Fixed some bugs to make the StartingLetter context exit correctly and match identifiers properly.
2007.12.12 - D.XML 1.48 - D 1.024/2.008 - Adjusted existing contexts somewhat (mostly cleanup).
- Implemented scope context to hightlight exit in scope(exit) etc.
- Adjusted deprecated keyword highlighting.
- Changed layout somewhat.
- Implemented extra highlighting rules for expressions, attributes, etc.
- Changed a lot of colours.
2007.11.15 - D.XML 1.47 - D 1.023/2.007 - Fixed a few unapperent "bugs" found by checkdtd.
2007.11.15 - ddoc.xml 1.13 - Fixed a couple of bugs found by checkdtd and changed the version number format.
2007.11.5 - ddoc.xml 1.12 - Fixed: correct matching of things like /***/ .
2007.10.11 - ddoc.xml 1.11 - Safety catch: check for unterminated code sections (i.e. check for end of
ddoc comment even in code sections).
- Used DetectIdentifier to (presumably) improve performance.
2007.10.09 - uncommited - ditto - Changed some context="#pop" tags to context="#stay" within the normal
context (bugfix for ddoc embedded code highlighting).
2007.10.9 - ddoc.xml 1.10 - Enabled embedded ddoc code highlighting
2007.10.9 - ddoc.xml 1.00 - Initial version
2007.10.08 - D.XML 1.46 - D 1.022/2.005 - Stole Alert and Region Marker highlighting from C++ syntax.
- Added support for DDoc highlighting.
- Reviewed the float regexps again! Tried to make the best of both versions.
2007.09.17 - D.XML 1.45 - D 1.021/2.004 - Reverted back to old regexps (but fixed hex floats).
Can't combine all float regexps into a single RegExpr element using the '|' operator.
It creates strange problems (like program lock-ups and wrong matches).
- Fix: '=' is allowed in import statements now.
- Fix: character literals are matched correctly now.
- The #line special token sequence is matched fully now (the filespec string needs special handling).
2007.09.10 - D.XML 1.44 - D 1.021/2.004 - Added __EOF__ to specialtokens.
- Replaced float regexps with more accurate ones. Not sure about speed.
- Fixed Octal regexp not to match 0_ .
2007.07.24 - D.XML 1.43 - D 1.020/2.003 - Added System to ltypes.
- Improved matching of version declarations.
- Fixed matching of hexadecimal floats.
- Deprecated style is stroked out again.
2007.07.21 - D.XML 1.42 - D 1.018/2.002 - d.xml validates again according to language.xml.
- HTML entities are highlighted now.
- Numbers before and after the slice operator are not highl. as floats anymore.
- Added C++ to ltypes.
- Improved matching of module/import declarations.
2007.07.01 - D.XML 1.41 - D 1.017/2.001 - fixed matching of numbers, added deprecated style, minor changes to styles, updated authors line
2007.07.01 - D.XML 1.40 - D 1.017/2.001 - matches now .di extensions, removed phobos-specific printf/writef and added
- library defined symbols string, wstring, dstring, size_t, ptrdiff_t, hash_t,
- Error, Exception, Object, TypeInfo and ClassInfo
2007.06.30 - D.XML 1.39 - D 1.017 - matching is much faster now, added "lib" to pragma types, added special tokens,
- /+ +/ can be nested now, numbers are matched more correctly, character literals don't span multiple lines anymore
- escape sequences inside strings and character literals are highlighted,
- non-hex characters in hex strings are highlighted with the Error style,
- using more default styles instead of custom ones
2007.04.11 - D.XML 1.38 - D 1.011 - ref, macro keywords are now supported, fixed \\ inside a string, updated author
2007.02.12 - D.XML 1.37 - D 1.006 - bool, foreach_reverse, lazy, scope and typeid keywords are now supported, fixed \"
- inside a string, fixed ending of wysiwyg strings.
2004.08.15 - D.XML 1.36 - D 0.98 - Current release of D.
- package, writef(strictly speaking writef isn't a keyword) - keywords are now supported.
2004.??.?? - D.XML 1.35 - D 0.?? - Not sure how this release got posted!
2004.05.23 - D.XML 1.34 - D 0.90 - updated.
2004.05.19 - D.XML 1.33 - D 0.89 - mixin - keyword is now supported.
2004.05.19 - D.XML 1.32 - D 0.77 - pragma, typeof - keywords are now supported.
2004.05.19 - D.XML 1.31 - D 0.76 - is - keyword is now supported.
2003.09.06 - D.XML 1.30 - D 0.71 - foreach - keyword is now supported.
2003.08.18 - D.XML 1.20 - D 0.69 - floats are now supported.
- embedded underscores in integer and float literals are now supported.
2003.08.11 - D.XML 1.10 - updated.
2003.07.18 - D.XML 1.00 - First released.
========================================================================
-->
<language name="D" version="13" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
<highlighting>
<!-- User-defined keywords (add identifiers you'd like highlighted here) -->
<list name="userkeywords">
</list>
<list name="statements">
<item>asm</item>
<item>body</item>
<item>break</item>
<item>case</item>
<item>catch</item>
<item>continue</item>
<item>default</item>
<item>do</item>
<item>else</item>
<item>finally</item>
<item>for</item>
<item>foreach</item>
<item>foreach_reverse</item>
<item>goto</item>
<item>if</item>
<item>mixin</item>
<item>return</item>
<item>switch</item>
<item>throw</item>
<item>try</item>
<item>while</item>
<item>with</item>
<!-- these are statements according to the spec, although I might call them attributes -->
<item>synchronized</item>
</list>
<list name="attributes">
<!-- also storage classes -->
<item>abstract</item>
<item>align</item>
<item>auto</item>
<item>const</item>
<item>export</item>
<item>final</item>
<item>immutable</item>
<item>inout</item>
<item>invariant</item>
<item>lazy</item>
<item>nothrow</item>
<item>override</item>
<item>package</item>
<item>private</item>
<item>protected</item>
<item>public</item>
<item>pure</item>
<item>ref</item>
<item>shared</item>
<item>static</item>
<!-- these may be statements -->
<!-- in (more common to use as an expression since in attribute is only ever the default) -->
<item>out</item>
<item>scope</item>
<item>__gshared</item>
</list>
<list name="expressions">
<!-- primary expressions -->
<item>false</item>
<item>null</item>
<item>super</item>
<item>this</item>
<item>true</item>
<item>typeid</item>
<!-- other expressions -->
<item>assert</item>
<item>cast</item>
<item>is</item>
<item>new</item>
<item>delete</item>
<item>in</item> <!-- also an attribute and a statement -->
<!-- sometimes declarators -->
<item>delegate</item>
<item>function</item>
</list>
<list name="modules">
<item>module</item>
<item>import</item> <!-- also an expression -->
</list>
<list name="declarators">
<item>alias</item>
<item>enum</item>
<item>typedef</item>
<item>class</item>
<item>interface</item>
<item>struct</item>
<item>union</item>
</list>
<list name="types">
<item>typeof</item>
<item>void</item>
<item>bool</item>
<item>byte</item>
<item>ubyte</item>
<item>short</item>
<item>ushort</item>
<item>int</item>
<item>uint</item>
<item>long</item>
<item>ulong</item>
<item>cent</item>
<item>ucent</item>
<item>float</item>
<item>double</item>
<item>real</item>
<item>ireal</item>
<item>ifloat</item>
<item>idouble</item>
<item>creal</item>
<item>cfloat</item>
<item>cdouble</item>
<item>char</item>
<item>wchar</item>
<item>dchar</item>
</list>
<list name="templates">
<item>macro</item> <!-- what's this? just reserved? -->
<item>template</item>
</list>
<list name="properties">
<item>init</item>
<item>sizeof</item>
<item>alignof</item>
<item>mangleof</item>
<item>stringof</item>
<item>tupleof</item>
<item>offsetof</item>
<item>max</item>
<item>min</item>
<item>infinity</item>
<item>nan</item>
<item>dig</item>
<item>epsilon</item>
<item>mant_dig</item>
<item>max_10_exp</item>
<item>max_exp</item>
<item>min_10_exp</item>
<item>min_exp</item>
<item>re</item>
<item>im</item>
<item>length</item>
<item>ptr</item>
<item>dup</item>
<item>idup</item>
<item>reverse</item>
<item>sort</item>
<item>keys</item>
<item>values</item>
<item>rehash</item>
</list>
<list name="libsymbols">
<!-- these are only symbols defined in object.d(i) -->
<item>size_t</item>
<item>ptrdiff_t</item>
<item>hash_t</item>
<item>Error</item>
<item>Exception</item>
<item>Object</item>
<item>TypeInfo</item>
<item>ClassInfo</item>
<item>ModuleInfo</item>
<item>Interface</item>
<item>OffsetTypeInfo</item>
<item>TypeInfo_Typedef</item>
<item>TypeInfo_Enum</item>
<item>TypeInfo_Pointer</item>
<item>TypeInfo_Array</item>
<item>TypeInfo_StaticArray</item>
<item>TypeInfo_AssociativeArray</item>
<item>TypeInfo_Function</item>
<item>TypeInfo_Delegate</item>
<item>TypeInfo_Class</item>
<item>TypeInfo_Interface</item>
<item>TypeInfo_Struct</item>
<item>TypeInfo_Tuple</item>
<!-- phobos only as of tango 0.99.3 -->
<item>string</item>
<item>wstring</item>
<item>dstring</item>
<item>bit</item>
<item>TypeInfo_Const</item>
<item>TypeInfo_Invariant</item>
</list>
<list name="linkage">
<item>extern</item>
</list>
<list name="ltypes">
<item>C</item>
<!-- <item>C++</item> --><!-- is handled specially in Linkage rule -->
<item>D</item>
<item>Windows</item>
<item>Pascal</item>
<item>System</item>
<!-- <item>Objective-C</item> --><!-- is handled specially in Linkage rule -->
</list>
<list name="ptypes">
<item>inline</item>
<item>lib</item>
<item>linkerDirective</item>
<item>mangle</item>
<item>msg</item>
<item>startaddress</item>
</list>
<list name="scope_keywords">
<item>exit</item>
<item>success</item>
<item>failure</item>
</list>
<list name="vtypes">
<item>DigitalMars</item>
<item>X86</item>
<item>X86_64</item>
<item>Windows</item>
<item>Win32</item>
<item>Win64</item>
<item>linux</item>
<item>LittleEndian</item>
<item>BigEndian</item>
<item>D_Coverage</item>
<item>D_InlineAsm_X86</item>
<item>unittest</item>
<item>D_Version2</item>
<item>none</item>
<item>all</item>
</list>
<list name="specialtokens">
<item>__FILE__</item>
<item>__LINE__</item>
<item>__DATE__</item>
<item>__TIME__</item>
<item>__TIMESTAMP__</item>
<item>__VENDOR__</item>
<item>__VERSION__</item>
<item>__EOF__</item>
</list>
<list name="tests">
<item>debug</item>
<item>unittest</item>
</list>
<list name="pragma">
<item>pragma</item>
</list>
<list name="version">
<item>version</item>
</list>
<list name="deprecated">
<item>deprecated</item>
<item>volatile</item> <!-- has been deprecated -->
</list>
<contexts>
<context name="normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces />
<!-- Performance improvement (probably): anything starting with a letter is matched separately -->
<RegExpr String="[a-zA-Z_]" attribute="Normal Text" context="StartingLetter" lookAhead="true"/>
<HlCStringChar attribute="EscapeSequence" context="#stay"/>
<Detect2Chars attribute="EscapeSequence" context="UnicodeShort" char="\" char1="u"/>
<Detect2Chars attribute="EscapeSequence" context="UnicodeLong" char="\" char1="U"/>
<Detect2Chars attribute="EscapeSequence" context="HTMLEntity" char="\" char1="&amp;"/>
<DetectChar attribute="Char" context="CharLiteral" char="'"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<DetectChar attribute="BQString" context="BQString" char="`"/>
<StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
<StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
<IncludeRules context="CommentRules" />
<!-- Match ... and .. before numbers are matched. -->
<!-- Now in symbols keywords section -->
<StringDetect attribute="Normal Text" context="#stay" String="..."/>
<Detect2Chars attribute="Normal Text" char="." char1="."/>
<!-- Float starting with a dot -->
<RegExpr attribute="Float" context="#stay" String="\.\d[\d_]*(?:[eE][-+]?\d[\d_]*)?[fFL]?i?"/>
<!-- Try to match various built-in properties -->
<DetectChar char="." attribute="Normal Text" context="Properties"/>
<!-- Look ahead for a digit and switch to NumberLiteral context if found. -->
<RegExpr context="NumberLiteral" String="\d" attribute="Normal Text" lookAhead="true"/>
<!-- #line Integer [Filespec] -->
<StringDetect attribute="Pragma" context="LinePragma" String="#line"/>
<!-- Rules for the C-style indenter. Currently problems with /// and /++ comments. -->
<DetectChar attribute="Symbol" context="BraceA" char="{" beginRegion="BraceA" />
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
</context>
<context name="BraceA" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Symbol" context="#pop" char="}" endRegion="BraceA" />
<IncludeRules context="normal"/>
</context>
<context name="StartingLetter" attribute="Normal Text" lineEndContext="#pop">
<DetectSpaces />
<!-- fall-through should work now that DetectIdentifier is used (without infinite loops) -->
<!-- maybe not... got an infinite loop -->
<RegExpr String="[^a-zA-Z_]" attribute="Normal Text" context="#pop" lookAhead="true"/>
<!-- detect whether scope, in, out, etc. are used as attributes or statements (etc.) -->
<!-- rules cannot match across newlines unfortunately -->
<RegExpr String="in\s*(?=\{)|out\s*(?=(\(([a-zA-Z_][\w_]*)?\)\s*)?\{)" attribute="Statement" context="#stay" />
<RegExpr String="scope\s*(?=\()" attribute="Statement" context="Scope" />
<RegExpr String="import\s*(?=\()" attribute="Expression" context="#stay" />
<RegExpr String="(function|delegate)\s*(?=\()" attribute="Declarator" context="#stay" />
<keyword String="statements" attribute="Statement" context="#stay" />
<keyword String="attributes" attribute="Attribute" context="#stay" />
<keyword String="expressions" attribute="Expression" context="#stay" />
<keyword String="declarators" attribute="Declarator" context="#stay" />
<keyword String="templates" attribute="Template" context="#stay" />
<keyword String="modules" attribute="Module" context="ModuleName"/>
<keyword String="types" attribute="Type" context="#stay" />
<keyword String="libsymbols" attribute="LibrarySymbols" context="#stay" />
<keyword String="linkage" attribute="Linkage" context="Linkage" />
<keyword String="specialtokens" attribute="SpecialTokens" context="#stay" />
<keyword String="tests" attribute="Tests" context="#stay" />
<!-- These must use keyword not DetectString: DetectString does not check for word-break after string. -->
<keyword String="pragma" attribute="Pragma" context="Pragma" />
<keyword String="version" attribute="Version" context="Version" />
<keyword String="deprecated" attribute="Deprecated" context="#stay" />
<Detect2Chars attribute="RawString" context="RawString" char="r" char1="&quot;"/>
<Detect2Chars attribute="HexString" context="HexString" char="x" char1="&quot;"/>
<Detect2Chars attribute="Token String Delimiter" context="TokenString" char="q" char1="{"/>
<RegExpr attribute="Delimited String Delimiter" context="DelimStrHeredoc" String="q&quot;([A-Za-z_][A-Za-z0-9_]*)$" />
<StringDetect attribute="Delimited String Delimiter" context="DelimStrBracket" String="q&quot;[" />
<StringDetect attribute="Delimited String Delimiter" context="DelimStrParen" String="q&quot;(" />
<StringDetect attribute="Delimited String Delimiter" context="DelimStrLtGt" String="q&quot;&lt;" />
<StringDetect attribute="Delimited String Delimiter" context="DelimStrBrace" String="q&quot;{" />
<RegExpr attribute="Delimited String Delimiter" context="DelimStrSimple" String="q&quot;([^A-Za-z_[(&lt;{])" />
<!-- user highlighting: last so as not to interfere with anything else -->
<keyword String="userkeywords" attribute="UserKeywords" context="#stay" />
<DetectIdentifier />
</context>
<context name="Properties" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<keyword String="properties" attribute="Property" context="#pop" />
</context>
<context name="NumberLiteral" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<!-- Float literals -->
<!-- Floats must be matched before Binary|Octal|Hex|DecInteger -->
<RegExpr attribute="Float" context="#pop" String="&hexfloat;|&float;"/>
<!-- Binary|Octal|Hex|DecInteger -->
<!-- Common, optional suffix: (L[uU]?|[uU]L?)? -->
<RegExpr attribute="Binary" context="#pop" String="0[bB]_*[01][01_]*(?:L[uU]?|[uU]L?)?"/>
<!-- Octal must be matched before DecInteger -->
<RegExpr attribute="Octal" context="#pop" String="0[0-7_]+(?:L[uU]?|[uU]L?)?"/>
<RegExpr attribute="Hex" context="#pop" String="0[xX]_*[\da-fA-F][\da-fA-F_]*(?:L[uU]?|[uU]L?)?"/>
<!-- Decimal integers must be matched last -->
<RegExpr attribute="Integer" context="#pop" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
</context>
<context name="LinePragma" attribute="Pragma" lineEndContext="#pop">
<DetectSpaces/>
<!-- Match an Integer -->
<RegExpr attribute="Integer" context="#stay" String="(?:(?:0(?:[0-7_]+|[bB]_*[01][01_]*|[xX]_*[\da-fA-F][\da-fA-F_]*))|\d+[\d_]*)(?:L[uU]?|[uU]L?)?"/>
<RangeDetect attribute="String" context="#stay" char="&quot;" char1="&quot;"/>
<keyword attribute="SpecialTokens" context="#stay" String="specialtokens"/>
<IncludeRules context="CommentRules" />
<RegExpr attribute="Error" context="#pop" String=".+"/>
</context>
<!-- \u 4HexDigits -->
<context name="UnicodeShort" attribute="EscapeSequence" lineEndContext="#pop">
<RegExpr attribute="EscapeSequence" context="#pop" String="[\da-fA-F]{4}"/>
</context>
<!-- \U 8HexDigits -->
<context name="UnicodeLong" attribute="EscapeSequence" lineEndContext="#pop">
<RegExpr attribute="EscapeSequence" context="#pop" String="[\da-fA-F]{8}"/>
</context>
<!-- \& Alpha Alphanumerical+ ; -->
<context name="HTMLEntity" attribute="EscapeSequence" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="EscapeSequence" context="#pop" String="[a-zA-Z]\w+;"/>
</context>
<context name="ModuleName" attribute="Module Name" lineEndContext="#stay">
<DetectSpaces/>
<IncludeRules context="CommentRules" />
<RegExpr context="#pop" String="[^\s\w.:,=]" lookAhead="true"/>
</context>
<context name="Linkage" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<DetectChar attribute="Normal Text" context="Linkage2" char="("/>
<IncludeRules context="CommentRules" />
</context>
<context name="Linkage2" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<StringDetect attribute="Linkage Type" context="Linkage-C++" String="C++"/>
<StringDetect attribute="Linkage Type" context="#stay" String="Objective-C"/>
<keyword attribute="Linkage Type" context="#stay" String="ltypes"/>
<IncludeRules context="CommentRules" />
<!-- Fall-through rules, highlighting errors: -->
<DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
</context>
<context name="Linkage-C++" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<IncludeRules context="CommentRules" />
<DetectChar char="," attribute="Normal Text" context="Linkage-C++2"/>
<DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
<RegExpr String="." attribute="Error" context="#stay"/>
</context>
<context name="Linkage-C++2" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<IncludeRules context="CommentRules" />
<DetectIdentifier attribute="Normal Text" context="#stay"/>
<DetectChar char="." attribute="Normal Text" context="#stay"/>
<DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
<RegExpr String="." attribute="Error" context="#stay"/>
</context>
<context name="Version" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<DetectChar attribute="Normal Text" context="VersionSpec" char="="/>
<DetectChar attribute="Normal Text" context="VersionCond" char="("/>
<IncludeRules context="CommentRules" />
<!-- Fall-through rules, highlighting errors: -->
<RegExpr String="[^\s\n]+" attribute="Error" context="#pop"/>
</context>
<context name="VersionSpec" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<DetectIdentifier attribute="Normal Text" context="#stay"/>
<RegExpr attribute="Integer" context="#stay" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
<DetectChar char=";" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="." attribute="Error" context="#pop#pop"/>
</context>
<context name="VersionCond" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<keyword attribute="Version Type" context="#stay" String="vtypes"/>
<DetectIdentifier attribute="Normal Text" context="#stay"/>
<RegExpr attribute="Integer" context="#stay" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
<IncludeRules context="CommentRules" />
<!-- Fall-through rules, highlighting errors: -->
<DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
</context>
<context name="Scope" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<DetectChar attribute="Normal Text" context="Scope2" char="("/>
<IncludeRules context="CommentRules" />
</context>
<context name="Scope2" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<keyword String="scope_keywords" attribute="Expression" context="#stay"/>
<IncludeRules context="CommentRules" />
<!-- Fall-through rules, highlighting errors: -->
<DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
</context>
<context name="Pragma" attribute="Pragma" lineEndContext="#stay">
<DetectSpaces/>
<DetectChar attribute="Normal Text" context="Pragma2" char="("/>
<IncludeRules context="CommentRules" />
<!-- Fall-through rules, highlighting errors: -->
<RegExpr String="[^\s\n]+" attribute="Error" context="#pop"/>
</context>
<context name="Pragma2" attribute="Pragma" lineEndContext="#stay">
<DetectSpaces/>
<keyword attribute="Version Type" context="Pragma3" String="ptypes"/>
<DetectIdentifier attribute="Normal Text" context="Pragma3"/>
<IncludeRules context="CommentRules" />
<!-- Fall-through rules, highlighting errors: -->
<DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
</context>
<context name="Pragma3" attribute="Pragma" lineEndContext="#stay">
<DetectSpaces/>
<DetectChar char="," attribute="Normal Text" context="Pragma4"/>
<DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
<RegExpr String="." attribute="Error" context="#pop#pop#pop"/>
</context>
<context name="Pragma4" attribute="Pragma" lineEndContext="#stay">
<DetectChar char="(" attribute="Normal Text" context="Parenthetical"/>
<DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop#pop"/>
<IncludeRules context="normal" />
</context>
<context name="Parenthetical" attribute="Normal Text" lineEndContext="#stay">
<DetectChar char="(" attribute="Normal Text" context="Parenthetical"/>
<DetectChar char=")" attribute="Normal Text" context="#pop"/>
<IncludeRules context="normal" />
</context>
<!-- Strings -->
<!-- r"..." -->
<context name="RawString" attribute="RawString" lineEndContext="#stay">
<DetectChar attribute="RawString" context="#pop" char="&quot;"/>
</context>
<!-- `...` -->
<context name="BQString" attribute="BQString" lineEndContext="#stay">
<DetectChar attribute="BQString" context="#pop" char="`"/>
</context>
<!-- x"..." -->
<context name="HexString" attribute="HexString" lineEndContext="#stay">
<DetectChar attribute="HexString" context="#pop" char="&quot;"/>
<RegExpr attribute="Error" context="#stay" String="[^\sa-fA-F\d&quot;]+" />
</context>
<!-- '...' -->
<context name="CharLiteral" attribute="Char" lineEndContext="CharLiteralClosing" fallthrough="true" fallthroughContext="#pop">
<!-- Empty '' -->
<DetectChar attribute="Char" context="#pop" char="'"/>
<!-- \t \n \r etc. -->
<HlCStringChar attribute="EscapeSequence" context="CharLiteralClosing"/>
<!-- \u 4HexDigits | \U 8HexDigits | HTMLEntity -->
<RegExpr attribute="EscapeSequence" context="CharLiteralClosing" String="\\(?:u[\da-fA-F]{4}|U[\da-fA-F]{8}|&amp;[a-zA-Z]\w+;)"/>
<!-- Invalid escape sequences -->
<RegExpr attribute="Error" context="CharLiteralClosing" String="\\."/>
<!-- Any character -->
<RegExpr attribute="Char" context="CharLiteralClosing" String="."/>
</context>
<!-- Anything other than a closing ' is now be an error -->
<context name="CharLiteralClosing" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
<DetectChar attribute="Char" context="#pop#pop" char="'"/>
</context>
<!-- "..." -->
<context name="String" attribute="String" lineEndContext="#stay">
<HlCStringChar attribute="EscapeSequence"/>
<Detect2Chars attribute="String" context="#pop" char="&quot;" char1="c"/>
<Detect2Chars attribute="String" context="#pop" char="&quot;" char1="w"/>
<Detect2Chars attribute="String" context="#pop" char="&quot;" char1="d"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
<Detect2Chars attribute="EscapeSequence" context="UnicodeShort" char="\" char1="u"/>
<Detect2Chars attribute="EscapeSequence" context="UnicodeLong" char="\" char1="U"/>
<Detect2Chars attribute="EscapeSequence" context="HTMLEntity" char="\" char1="&amp;"/>
</context>
<!-- token strings: q{...} -->
<context name="TokenString" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Token String Delimiter" context="#pop" char="}" />
<IncludeRules context="normal" />
</context>
<!-- delimited strings -->
<!-- q"IDENTIFIER...IDENTIFIER" -->
<context name="DelimStrHeredoc" attribute="Delimited String Content" lineEndContext="#stay">
<StringDetect attribute="Delimited String Delimiter" context="#pop" String="%1&quot;" dynamic="true" column="0" />
<StringDetect attribute="Error" context="#pop" String="%1" dynamic="true" column="0" />
</context>
<!-- q"[...]" -->
<context name="DelimStrBracket" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrBracket2" char="[" />
<Detect2Chars attribute="Delimited String Delimiter" context="#pop" char="]" char1="&quot;" />
<DetectChar attribute="Error" context="#pop" char="]" />
</context>
<context name="DelimStrBracket2" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrBracket2" char="[" />
<DetectChar attribute="Delimited String Content" context="#pop" char="]" />
</context>
<!-- q"(...)" -->
<context name="DelimStrParen" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrParen2" char="(" />
<Detect2Chars attribute="Delimited String Delimiter" context="#pop" char=")" char1="&quot;" />
<DetectChar attribute="Error" context="#pop" char=")" />
</context>
<context name="DelimStrParen2" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrParen2" char="(" />
<DetectChar attribute="Delimited String Content" context="#pop" char=")" />
</context>
<!-- q"<...>" -->
<context name="DelimStrLtGt" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrLtGt2" char="&lt;" />
<Detect2Chars attribute="Delimited String Delimiter" context="#pop" char="&gt;" char1="&quot;" />
<DetectChar attribute="Error" context="#pop" char="&gt;" />
</context>
<context name="DelimStrLtGt2" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrLtGt2" char="&lt;" />
<DetectChar attribute="Delimited String Content" context="#pop" char="&gt;" />
</context>
<!-- q"{...}" -->
<context name="DelimStrBrace" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrBrace2" char="{" />
<Detect2Chars attribute="Delimited String Delimiter" context="#pop" char="}" char1="&quot;" />
<DetectChar attribute="Error" context="#pop" char="}" />
</context>
<context name="DelimStrBrace2" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrBrace2" char="{" />
<DetectChar attribute="Delimited String Content" context="#pop" char="}" />
</context>
<!-- q"*...*" -->
<context name="DelimStrSimple" attribute="Delimited String Content" lineEndContext="#stay">
<StringDetect attribute="Delimited String Delimiter" context="#pop" String="%1&quot;" dynamic="true" />
<StringDetect attribute="Error" context="#pop" String="%1" dynamic="true" />
</context>
<!-- Comments -->
<context name="CommentRules" attribute="Normal Text" lineEndContext="#pop">
<IncludeRules context="DdocNormal" />
<Detect2Chars attribute="Comment" context="CommentLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentBlock" char="/" char1="*" beginRegion="CommentBlock"/>
<Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
<!-- This context is only for including rules from. -->
</context>
<context name="Region Marker" attribute="Region Marker" lineEndContext="#pop">
</context>
<context name="CommentLine" attribute="Comment" lineEndContext="#pop">
<DetectSpaces />
<IncludeRules context="##Comments" />
</context>
<context name="CommentBlock" attribute="Comment" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>
<IncludeRules context="##Comments" />
</context>
<context name="CommentNested" attribute="Comment" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
<Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>
<IncludeRules context="##Comments" />
</context>
<!-- Ddoc contexts -->
<context name="DdocNormal" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Comment" context="DdocLine" String="/{3,}"/>
<RegExpr attribute="Comment" context="DdocBlock" String="/\*{2,}(?!/)" beginRegion="DdocBlock"/>
<RegExpr attribute="Comment" context="DdocNested" String="/\+{2,}(?!/)" beginRegion="DdocNested"/>
</context>
<context name="DdocLine" attribute="Ddoc" lineEndContext="#pop">
<DetectSpaces />
<DetectIdentifier attribute="Ddoc"/>
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
<IncludeRules context="##Comments" />
</context>
<context name="DdocBlock" attribute="Ddoc" lineEndContext="#stay">
<DetectSpaces />
<DetectIdentifier attribute="Ddoc"/>
<RegExpr attribute="Comment" context="#pop" String="\*+/" endRegion="DdocBlock"/>
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
<IncludeRules context="##Comments" />
<!-- Avoid matching this; do it this way since (^|\s)-* always matches .- and \s-* never
matches .- (spaces have already been matched); however -*($|\s) matches just fine.
Also can't use \b since - is not a word character. -->
<RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
<RegExpr attribute="Comment" context="DdocBlockCode" String="-{3,}(?:$|\s)" />
</context>
<context name="DdocNested" attribute="Ddoc" lineEndContext="#stay">
<DetectSpaces />
<DetectIdentifier attribute="Ddoc"/>
<!-- Ddoc recognises nested comments/ddoc, but ignores them as far as formatting is concerned. -->
<Detect2Chars attribute="Ddoc" context="DdocNested2" char="/" char1="+"/>
<RegExpr attribute="Comment" context="#pop" String="\++/" endRegion="DdocNested"/>
<DetectChar attribute="Comment" context="#stay" char="+" firstNonSpace="true" />
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
<IncludeRules context="##Comments" />
<!-- As above. -->
<RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
<RegExpr attribute="Comment" context="DdocNestedCode" String="-{3,}(?:$|\s)" />
</context>
<context name="DdocNested2" attribute="Ddoc" lineEndContext="#stay">
<DetectSpaces />
<DetectIdentifier attribute="Ddoc"/>
<!-- Identical to DdocNested except that nested comments don't receive any formatting -->
<RegExpr attribute="Ddoc" context="#pop" String="\++/"/>
<!-- The above rules should match before the unwanted rule in DdocNested -->
<IncludeRules context="DdocNested" />
</context>
<!-- When entering a macro: provides highlighting for first symbol (macro name) -->
<context name="DdocMacro" attribute="Error" lineEndContext="#stay">
<DetectSpaces attribute="Macro Text" /> <!-- avoid showing space as an error -->
<DetectChar attribute="Macros" context="#pop" char=")" /> <!-- early end of macro -->
<IncludeRules context="MacroRules" />
<!-- first symbol of macro -->
<DetectIdentifier attribute="Macros" context="DdocMacro2" />
</context>
<!-- For rest of macro -->
<context name="DdocMacro2" attribute="Macro Text" lineEndContext="#stay">
<DetectChar attribute="Macros" context="#pop#pop" char=")" /> <!-- end of macro -->
<IncludeRules context="MacroRules" />
</context>
<!-- For embedded brackets (yeah, extra work to ignore them) -->
<context name="DdocMacro3" attribute="Macro Text" lineEndContext="#stay">
<DetectChar attribute="Macro Text" context="#pop" char=")" /> <!-- end of embedded brackets -->
<IncludeRules context="MacroRules" />
</context>
<!-- Rules common to all macros -->
<context name="MacroRules" attribute="Macro Text" lineEndContext="#stay">
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" /> <!-- embedded -->
<DetectChar attribute="Macro Text" context="DdocMacro3" char="(" /> <!-- extra brackets -->
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
</context>
<context name="DdocBlockCode" attribute="DdocCode" lineEndContext="#stay">
<DetectSpaces />
<!-- See update 1.11 -->
<RegExpr attribute="Comment" context="#pop#pop" String="\*+/" endRegion="DdocBlock"/>
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
<!-- As above. -->
<RegExpr attribute="DdocCode" context="#stay" String="[^-]-{3,}" />
<RegExpr attribute="Comment" context="#pop" String="-{3,}(?:$|\s)" />
<IncludeRules context="##D" />
</context>
<context name="DdocNestedCode" attribute="DdocCode" lineEndContext="#stay">
<DetectSpaces />
<!-- See update 1.11 -->
<RegExpr attribute="Comment" context="#pop#pop" String="\++/" endRegion="DdocNested"/>
<DetectChar attribute="Comment" context="#stay" char="+" firstNonSpace="true" />
<!-- As above. -->
<RegExpr attribute="DdocCode" context="#stay" String="[^-]-{3,}" />
<RegExpr attribute="Comment" context="#pop" String="-{3,}(?:$|\s)" />
<IncludeRules context="##D" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<!-- keywords -->
<itemData name="Statement" defStyleNum="dsKeyword"/>
<itemData name="Expression" defStyleNum="dsAttribute" bold="1"/> <!-- #000080 -->
<itemData name="Declarator" defStyleNum="dsWarning" bold="1"/> <!-- #800000 -->
<itemData name="Template" defStyleNum="dsOthers" bold="1"/> <!-- #008000 -->
<itemData name="Attribute" defStyleNum="dsFunction" bold="1"/> <!-- #800080 -->
<itemData name="Deprecated" defStyleNum="dsFunction" bold="1" strikeOut="true"/> <!-- #800080 -->
<itemData name="Property" defStyleNum="dsDataType" bold="1"/> <!-- #000080 -->
<itemData name="Type" defStyleNum="dsDataType"/>
<itemData name="LibrarySymbols" defStyleNum="dsBuiltIn" italic="1"/>
<itemData name="UserKeywords" defStyleNum="dsDataType" italic="1"/>
<!-- module, import -->
<itemData name="Module" defStyleNum="dsPreprocessor" bold="1"/> <!-- #008000 -->
<itemData name="Module Name" defStyleNum="dsImport"/> <!-- #008000 -->
<!-- pragma, special tokens -->
<itemData name="SpecialTokens" defStyleNum="dsOthers" bold="1"/> <!-- #00aa00 -->
<itemData name="Pragma" defStyleNum="dsOthers" bold="1"/> <!-- #00aa00 -->
<!-- version, extern -->
<itemData name="Version" defStyleNum="dsDecVal"/> <!-- #808000 -->
<itemData name="Version Type" defStyleNum="dsNormal" bold="1"/>
<itemData name="Linkage" defStyleNum="dsInformation" bold="1"/> <!-- #808000 -->
<itemData name="Linkage Type" defStyleNum="dsNormal" bold="1"/>
<itemData name="Tests" defStyleNum="dsFunction" bold="1"/> <!-- #ff00ff -->
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Region Marker" defStyleNum="dsRegionMarker" />
<itemData name="Error" defStyleNum="dsError"/>
<!-- literals -->
<itemData name="Integer" defStyleNum="dsDecVal"/>
<itemData name="Binary" defStyleNum="dsBaseN"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="EscapeSequence" defStyleNum="dsSpecialChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="RawString" defStyleNum="dsVerbatimString"/>
<itemData name="BQString" defStyleNum="dsSpecialString"/>
<itemData name="HexString" defStyleNum="dsSpecialString"/>
<itemData name="Token String Delimiter" defStyleNum="dsKeyword"/>
<itemData name="Delimited String Content" defStyleNum="dsVerbatimString"/>
<itemData name="Delimited String Delimiter" defStyleNum="dsKeyword"/>
<!-- Ddoc specific -->
<itemData name="Macros" defStyleNum="dsSpecialChar" bold="1" italic="0" /> <!-- #bf5fbf -->
<itemData name="Macro Text" defStyleNum="dsAttribute" bold="0" italic="0" /> <!-- #bf7fff -->
<itemData name="Ddoc" defStyleNum="dsDocumentation" /> <!-- #7f7fff -->
<itemData name="DdocSection" defStyleNum="dsAnnotation" bold="1" /> <!-- #7f7fff -->
<itemData name="DdocCode" defStyleNum="dsNormal" italic="1" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace"/>
<comment name="multiLine" start="/+" end="+/" region="CommentNested"/>
</comments>
<keywords casesensitive="true"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,221 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Dart" section="Sources" version="4" kateversion="5.0" indenter="cstyle" extensions="*.dart" mimetype="text/x-dart" priority="1" author="Waqar Ahmed (waqar.17a@gmail.com)" license="MIT">
<highlighting>
<list name="keywords">
<item>Function</item>
<item>abstract</item>
<item>as</item>
<item>assert</item>
<item>class</item>
<item>covariant</item>
<item>deferred</item>
<item>enum</item>
<item>export</item>
<item>extends</item>
<item>extension</item>
<item>external</item>
<item>factory</item>
<item>get</item>
<item>hide</item>
<item>implements</item>
<item>import</item>
<item>in</item>
<item>interface</item>
<item>is</item>
<item>library</item>
<item>mixin</item>
<item>new</item>
<item>on</item>
<item>operator</item>
<item>part</item>
<item>return</item>
<item>set</item>
<item>show</item>
<item>super</item>
<item>sync</item>
<item>this</item>
<item>typedef</item>
<item>with</item>
<item>yield</item>
<item>@pragma</item>
<item>@override</item>
<item>@deprecated</item>
</list>
<list name="controlflow">
<item>break</item>
<item>case</item>
<item>catch</item>
<item>continue</item>
<item>default</item>
<item>do</item>
<item>else</item>
<item>finally</item>
<item>for</item>
<item>if</item>
<item>rethrow</item>
<item>switch</item>
<item>throw</item>
<item>try</item>
<item>when</item>
<item>while</item>
</list>
<list name="modifiers">
<item>async</item>
<item>await</item>
<item>const</item>
<item>dynamic</item>
<item>final</item>
<item>late</item>
<item>sealed</item>
<item>static</item>
</list>
<list name="types">
<item>Future</item>
<item>Iterable</item>
<item>List</item>
<item>Map</item>
<item>Never</item>
<item>Object</item>
<item>Set</item>
<item>Stream</item>
<item>String</item>
<item>bool</item>
<item>double</item>
<item>int</item>
<item>var</item>
<item>void</item>
</list>
<list name="literals">
<item>true</item>
<item>false</item>
<item>null</item>
</list>
<list name="exceptions">
<item>AbstractClassInstantiationError</item>
<item>ArgumentError</item>
<item>AssertionError</item>
<item>CastError</item>
<item>ConcurrentModificationError</item>
<item>CyclicInitializationError</item>
<item>Error</item>
<item>Exception</item>
<item>FallThroughError</item>
<item>FormatException</item>
<item>IndexError</item>
<item>IntegerDivisionByZeroException</item>
<item>JsonCyclicError</item>
<item>JsonUnsupportedObjectError</item>
<item>NoSuchMethodError</item>
<item>NullThrownError</item>
<item>OutOfMemoryError</item>
<item>RangeError</item>
<item>StackOverflowError</item>
<item>StateError</item>
<item>TypeError</item>
<item>UnimplementedError</item>
<item>UnsupportedError</item>
</list>
<list name="thiskeyword">
<item>this</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<DetectSpaces/>
<keyword attribute="Control Flow" context="#stay" String="controlflow"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<keyword attribute="Modifiers" context="#stay" String="modifiers"/>
<keyword attribute="Constant" context="#stay" String="literals"/>
<keyword attribute="Exceptions" context="#stay" String="exceptions"/>
<WordDetect attribute="This Keyword" context="#stay" String="this"/>
<DetectIdentifier/>
<Float attribute="Float" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<HlCHex attribute="Hex" context="#stay"/>
<HlCOct attribute="Octal" context="#stay"/>
<StringDetect attribute="String" String="'''" context="SMultilineString" beginRegion="MultilineStringRegion"/>
<StringDetect attribute="String" String="&quot;&quot;&quot;" context="SMultilineString" beginRegion="MultilineStringRegion"/>
<DetectChar attribute="String" context="DoubleQuoteString" char="&quot;"/>
<DetectChar attribute="String" context="SingleQuoteString" char="'"/>
<IncludeRules context="FindComments"/>
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?|~^"/>
</context>
<!-- Strings -->
<context attribute="String" lineEndContext="#pop" name="DoubleQuoteString">
<DetectSpaces attribute="String"/>
<DetectIdentifier attribute="String"/>
<LineContinue attribute="String" context="#stay"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="String" lineEndContext="#pop" name="SingleQuoteString">
<DetectSpaces attribute="String"/>
<DetectIdentifier attribute="String"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
<!-- Comments -->
<context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true"/>
</context>
<context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true"/>
<StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true"/>
<IncludeRules context="##Doxygen"/>
<Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment"/>
</context>
<context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
</context>
<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
<DetectSpaces attribute="Comment"/>
<LineContinue attribute="Comment" context="#stay"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
<DetectSpaces attribute="Comment"/>
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<IncludeRules context="##Comments"/>
<DetectIdentifier attribute="Comment"/>
</context>
<!-- multiline string -->
<context attribute="String" lineEndContext="#stay" name="SMultilineString">
<DetectSpaces attribute="String"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<StringDetect attribute="String" String="'''" context="#pop" endRegion="MultilineStringRegion"/>
<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="MultilineStringRegion"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="Exceptions" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Constant" defStyleNum="dsConstant" spellChecking="false"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Modifiers" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>
<itemData name="This Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace"/>
<comment name="multiLine" start="/*" end="*/" region="Comment"/>
</comments>
<keywords casesensitive="true"/>
</general>
</language>
@@ -0,0 +1,293 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Debian Changelog" version="21" kateversion="2.4" section="Other" extensions="changelog" mimetype="">
<highlighting>
<list name="keywords">
<item>urgency</item>
</list>
<list name="distributions">
<item>oldstable</item>
<item>oldstable-security</item>
<item>oldstable-proposed-updates</item>
<item>stable</item>
<item>stable-security</item>
<item>stable-proposed-updates</item>
<item>testing</item>
<item>testing-security</item>
<item>testing-proposed-updates</item>
<item>frozen</item>
<item>unstable</item>
<item>sid</item>
<item>experimental</item>
<item>UNRELEASED</item>
<!-- Debian releases -->
<item>sarge</item>
<item>sarge-backports</item>
<item>sarge-volatile</item>
<item>etch</item>
<item>etch-backports</item>
<item>etch-volatile</item>
<item>lenny</item>
<item>lenny-backports</item>
<item>lenny-backports-sloppy</item>
<item>lenny-volatile</item>
<item>squeeze</item>
<item>squeeze-backports</item>
<item>squeeze-backports-sloppy</item>
<item>squeeze-volatile</item>
<item>wheezy</item>
<item>wheezy-backports</item>
<item>wheezy-backports-sloppy</item>
<item>jessie</item>
<item>jessie-backports</item>
<item>jessie-backports-sloppy</item>
<item>stretch</item>
<item>stretch-backports</item>
<item>stretch-backports-sloppy</item>
<item>buster</item>
<item>buster-backports</item>
<item>buster-backports-sloppy</item>
<item>bullseye</item>
<item>bullseye-backports</item>
<item>bullseye-backports-sloppy</item>
<item>bookworm</item>
<item>bookworm-backports</item>
<item>bookworm-backports-sloppy</item>
<item>trixie</item>
<item>trixie-backports</item>
<item>trixie-backports-sloppy</item>
<item>forky</item>
<item>forky-backports</item>
<item>forky-backports-sloppy</item>
<!-- Ubuntu releases -->
<item>dapper</item>
<item>dapper-security</item>
<item>dapper-proposed</item>
<item>dapper-updates</item>
<item>dapper-backports</item>
<item>dapper-commercial</item>
<item>edgy</item>
<item>edgy-security</item>
<item>edgy-proposed</item>
<item>edgy-updates</item>
<item>edgy-backports</item>
<item>edgy-commercial</item>
<item>feisty</item>
<item>feisty-security</item>
<item>feisty-proposed</item>
<item>feisty-updates</item>
<item>feisty-backports</item>
<item>feisty-commercial</item>
<item>gutsy</item>
<item>gutsy-security</item>
<item>gutsy-proposed</item>
<item>gutsy-updates</item>
<item>gutsy-backports</item>
<item>gutsy-partner</item>
<item>hardy</item>
<item>hardy-security</item>
<item>hardy-proposed</item>
<item>hardy-updates</item>
<item>hardy-backports</item>
<item>hardy-partner</item>
<item>intrepid</item>
<item>intrepid-security</item>
<item>intrepid-proposed</item>
<item>intrepid-updates</item>
<item>intrepid-backports</item>
<item>intrepid-partner</item>
<item>jaunty</item>
<item>jaunty-security</item>
<item>jaunty-proposed</item>
<item>jaunty-updates</item>
<item>jaunty-backports</item>
<item>jaunty-partner</item>
<item>karmic</item>
<item>karmic-security</item>
<item>karmic-proposed</item>
<item>karmic-updates</item>
<item>karmic-backports</item>
<item>lucid</item>
<item>lucid-security</item>
<item>lucid-proposed</item>
<item>lucid-updates</item>
<item>lucid-backports</item>
<item>maverick</item>
<item>maverick-security</item>
<item>maverick-proposed</item>
<item>maverick-updates</item>
<item>maverick-backports</item>
<item>natty</item>
<item>natty-security</item>
<item>natty-proposed</item>
<item>natty-updates</item>
<item>natty-backports</item>
<item>oneiric</item>
<item>oneiric-security</item>
<item>oneiric-proposed</item>
<item>oneiric-updates</item>
<item>oneiric-backports</item>
<item>precise</item>
<item>precise-security</item>
<item>precise-proposed</item>
<item>precise-updates</item>
<item>precise-backports</item>
<item>quantal</item>
<item>quantal-security</item>
<item>quantal-proposed</item>
<item>quantal-updates</item>
<item>quantal-backports</item>
<item>raring</item>
<item>raring-security</item>
<item>raring-proposed</item>
<item>raring-updates</item>
<item>raring-backports</item>
<item>saucy</item>
<item>saucy-security</item>
<item>saucy-proposed</item>
<item>saucy-updates</item>
<item>saucy-backports</item>
<item>trusty</item>
<item>trusty-security</item>
<item>trusty-proposed</item>
<item>trusty-updates</item>
<item>trusty-backports</item>
<item>utopic</item>
<item>utopic-security</item>
<item>utopic-proposed</item>
<item>utopic-updates</item>
<item>utopic-backports</item>
<item>vivid</item>
<item>vivid-security</item>
<item>vivid-proposed</item>
<item>vivid-updates</item>
<item>vivid-backports</item>
<item>wily</item>
<item>wily-security</item>
<item>wily-proposed</item>
<item>wily-updates</item>
<item>wily-backports</item>
<item>xenial</item>
<item>xenial-security</item>
<item>xenial-proposed</item>
<item>xenial-updates</item>
<item>xenial-backports</item>
<item>yakkety</item>
<item>yakkety-security</item>
<item>yakkety-proposed</item>
<item>yakkety-updates</item>
<item>yakkety-backports</item>
<item>zesty</item>
<item>zesty-security</item>
<item>zesty-proposed</item>
<item>zesty-updates</item>
<item>zesty-backports</item>
<item>artful</item>
<item>artful-security</item>
<item>artful-proposed</item>
<item>artful-updates</item>
<item>artful-backports</item>
<item>bionic</item>
<item>bionic-security</item>
<item>bionic-proposed</item>
<item>bionic-updates</item>
<item>bionic-backports</item>
<item>cosmic</item>
<item>cosmic-security</item>
<item>cosmic-proposed</item>
<item>cosmic-updates</item>
<item>cosmic-backports</item>
<item>disco</item>
<item>disco-security</item>
<item>disco-proposed</item>
<item>disco-updates</item>
<item>disco-backports</item>
<item>eoan</item>
<item>eoan-security</item>
<item>eoan-proposed</item>
<item>eoan-updates</item>
<item>eoan-backports</item>
<item>focal</item>
<item>focal-security</item>
<item>focal-proposed</item>
<item>focal-updates</item>
<item>focal-backports</item>
<item>groovy</item>
<item>groovy-security</item>
<item>groovy-proposed</item>
<item>groovy-updates</item>
<item>groovy-backports</item>
<item>hirsute</item>
<item>hirsute-security</item>
<item>hirsute-proposed</item>
<item>hirsute-updates</item>
<item>hirsute-backports</item>
<item>impish</item>
<item>impish-security</item>
<item>impish-proposed</item>
<item>impish-updates</item>
<item>impish-backports</item>
<item>jammy</item>
<item>jammy-security</item>
<item>jammy-proposed</item>
<item>jammy-updates</item>
<item>jammy-backports</item>
<item>kinetic</item>
<item>kinetic-security</item>
<item>kinetic-proposed</item>
<item>kinetic-updates</item>
<item>kinetic-backports</item>
<item>lunar</item>
<item>lunar-security</item>
<item>lunar-proposed</item>
<item>lunar-updates</item>
<item>lunar-backports</item>
</list>
<list name="urgencies">
<item>low</item>
<item>medium</item>
<item>high</item>
<item>emergency</item>
<item>bug</item>
<item>critical</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="INIT">
<RegExpr attribute="Keyword" context="Head" String="^[^ ]*" column="0"/>
<RegExpr attribute="Email" context="#stay" String="&lt;.*@.*&gt;"/>
<StringDetect attribute="Keyword" context="#stay" String=" --" column="0"/>
<StringDetect attribute="Keyword" context="#stay" String=" *" column="0"/>
<RegExpr attribute="Bug" context="#stay" String="closes:[\s]*((bug\s*)?#\s*\d+)(\s*, *(bug\s*)?#\s*\d+)*" insensitive="true"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Head">
<DetectChar attribute="Keyword" context="Version" char="("/>
<AnyChar attribute="Keyword" context="#stay" String=",;="/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Data" context="#stay" String="distributions"/>
<keyword attribute="Data" context="#stay" String="urgencies"/>
</context>
<context attribute="Version" lineEndContext="#pop" name="Version">
<DetectChar attribute="Keyword" context="#pop" char=")"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Version" defStyleNum="dsDataType"/>
<itemData name="Data" defStyleNum="dsDataType"/>
<itemData name="Bug" defStyleNum="dsDataType"/>
<itemData name="Email" defStyleNum="dsOthers"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" weakDeliminator="-"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="Debian Control" version="4" kateversion="5.0" section="Other" extensions="control" mimetype="">
<highlighting>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="INIT">
<StringDetect attribute="Keyword" context="DependencyField" String="Depends:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Recommends:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Suggests:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Conflicts:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Provides:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Replaces:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Enhances:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Pre-Depends:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Build-Depends:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Build-Depends-Indep:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Build-Conflicts:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Build-Conflicts-Indep:"/>
<StringDetect attribute="Keyword" context="DependencyField" String="Breaks:"/>
<RegExpr attribute="Keyword" context="Field" minimal="true" String="^[^ ]*:" column="0"/>
<DetectChar attribute="Value" context="Field" char=" " column="0"/>
</context>
<context attribute="Value" lineEndContext="#pop" name="Field">
<RegExpr attribute="Email" context="#stay" String="&lt;.*@.*&gt;" minimal="true"/>
<Detect2Chars attribute="Keyword" context="Variable" char="$" char1="{"/>
</context>
<context attribute="Variable" lineEndContext="#pop" name="Variable">
<DetectChar attribute="Keyword" context="#pop" char="}"/>
</context>
<context attribute="Value" lineEndContext="#pop" name="DependencyField">
<RegExpr attribute="Email" context="#stay" String="&lt;.*@.*&gt;" minimal="true"/>
<Detect2Chars attribute="Keyword" context="Variable" char="$" char1="{"/>
<AnyChar attribute="Keyword" context="#stay" String=",|"/>
<AnyChar attribute="Keyword" context="Constrain" String="(["/>
</context>
<context attribute="Version" lineEndContext="#stay" name="Constrain">
<Detect2Chars attribute="Keyword" context="Variable" char="$" char1="{"/>
<AnyChar attribute="Keyword" context="#stay" String="!&lt;=&gt;"/>
<AnyChar attribute="Keyword" context="#pop" String=")]"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Version" defStyleNum="dsDecVal"/>
<itemData name="Value" defStyleNum="dsDataType"/>
<itemData name="Variable" defStyleNum="dsVariable"/>
<itemData name="Email" defStyleNum="dsOthers"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name=".desktop" version="6" kateversion="5.0"
section="Configuration" extensions="*.desktop;*.kdelnk;*.desktop.cmake"
mimetype="application/x-desktop">
<highlighting>
<contexts>
<context attribute="Key" lineEndContext="#stay" name="Normal">
<RegExpr String="^\[.*\]$" attribute="Section" context="#stay" beginRegion="Section" endRegion="Section" column="0"/>
<RegExpr String="\[.*\]" attribute="Language" context="Value"/>
<DetectChar char="#" attribute="Comment" context="Comment" firstNonSpace="true"/>
<DetectChar char="=" attribute="Normal Text" context="Value"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Value"/>
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<DetectSpaces />
<IncludeRules context="##Comments"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Section" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Key" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Language" defStyleNum="dsDecVal" bold="1" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#"/>
</comments>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY file "(====|\*\*\*|\-\-\-|diff|Only in [^:]*:).*$">
]>
<!--
2006-08-02: 1.10 Matthew Woehlke <mw_triad@sourceforge.net>
Added folding. Context diff changes are now identified as old/new (using
seperate attributes). Recognize 'Only in' from 'diff -r' output.
There is currently a bug (KATE limitation?) where regions may sometimes
pick up one line too many.
2008-02-13: 1.11 Eduardo Robles Elvira <edulix AT gmail DOT com>
Fixed folding.
-->
<language name="Diff" version="9" kateversion="5.62" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
<highlighting>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal" fallthroughContext="AttrNormal">
<Detect2Chars attribute="Header" context="AttrHeader_Chunk" char="@" char1="@" beginRegion="chunk" column="0"/>
<AnyChar attribute="Header" context="AttrHeader_Chunk" String="0123456789" beginRegion="chunk" column="0"/>
<RegExpr attribute="Header" context="RChunk" String="^\*+$" beginRegion="chunk" column="0"/>
<RegExpr attribute="File" context="#stay" String="^Only in [^:]*:.*$" column="0"/>
<StringDetect attribute="File" context="AttrFile_RFile" String="diff" beginRegion="chunk" column="0"/>
<StringDetect attribute="File" context="AttrFile" String="====" column="0"/>
<StringDetect attribute="File" context="AttrFile_File" String="***" beginRegion="chunk" column="0"/>
<StringDetect attribute="File" context="AttrFile_File" String="---" beginRegion="chunk" column="0"/>
<IncludeRules context="FindDiff"/>
<DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="FindDiff">
<StringDetect attribute="File" context="AttrFile" String="---" column="0"/>
<StringDetect attribute="Header" context="AttrHeader" String="+++" column="0"/>
<AnyChar attribute="Added line" context="Added" String="+&gt;" column="0"/>
<AnyChar attribute="Removed line" context="Removed" String="-&lt;" column="0"/>
</context>
<!-- block contexts -->
<context attribute="Normal Text" lineEndContext="#stay" name="File" fallthroughContext="AttrNormal">
<IncludeRules context="FindDiff"/>
<Detect2Chars attribute="Header" context="AttrHeader_ChunkInFile" char="@" char1="@" beginRegion="chunk" column="0"/>
<AnyChar attribute="Header" context="AttrHeader_ChunkInFile" String="0123456789" beginRegion="chunk" column="0"/>
<RegExpr attribute="Header" context="RChunkInFile" String="^\*+$" beginRegion="chunk" column="0"/>
<RegExpr attribute="File" context="#pop" String="^&file;" endRegion="chunk" column="0"/>
<DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Chunk" fallthroughContext="AttrNormal">
<IncludeRules context="FindDiff"/>
<Detect2Chars attribute="Header" context="#pop" char="@" char1="@" endRegion="chunk" lookAhead="true" column="0"/>
<AnyChar attribute="Header" context="#pop" String="0123456789" endRegion="chunk" lookAhead="true" column="0"/>
<DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="ChunkInFile" fallthroughContext="AttrNormal">
<IncludeRules context="FindDiff"/>
<Detect2Chars attribute="Header" context="#pop" char="@" char1="@" endRegion="chunk" lookAhead="true" column="0"/>
<AnyChar attribute="Header" context="#pop" String="0123456789" endRegion="chunk" lookAhead="true" column="0"/>
<StringDetect attribute="Normal Text" context="#pop!AttrNormal" String="Index:" endRegion="chunk" column="0"/>
<RegExpr attribute="File" context="#pop" String="^&file;" endRegion="chunk" lookAhead="true" column="0"/>
<DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
</context>
<!-- block contexts (diff -r) -->
<context attribute="Normal Text" lineEndContext="#stay" name="RFile" fallthroughContext="AttrNormal">
<RegExpr attribute="File" context="#pop" String="^(diff|Only in [^:]*:)" endRegion="chunk" lookAhead="true" column="0"/>
<RegExpr attribute="Header" context="#stay" String="^&file;" column="0"/>
<RegExpr attribute="Header" context="RChunkInFile" String="^\*+$" beginRegion="chunk" column="0"/>
<IncludeRules context="File"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="RChunk" fallthroughContext="AttrNormal">
<RegExpr attribute="Header" context="#stay" String="^\*\*\* .* \*\*\*\*$" column="0"/>
<RegExpr attribute="Header" context="RChunkNew" String="^\-\-\- .* \-\-\-\-$" column="0"/>
<IncludeRules context="Chunk"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFile" fallthroughContext="AttrNormal">
<RegExpr attribute="Header" context="#stay" String="^\*\*\* .* \*\*\*\*$" column="0"/>
<RegExpr attribute="Header" context="RChunkInFileNew" String="^\-\-\- .* \-\-\-\-$" column="0"/>
<IncludeRules context="ChunkInFile"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="RChunkNew" fallthroughContext="AttrNormal">
<Detect2Chars attribute="Header" context="#pop#pop" char="@" char1="@" lookAhead="true" column="0"/>
<AnyChar attribute="Header" context="#pop#pop" String="0123456789" lookAhead="true" column="0"/>
<DetectChar attribute="Changed line (new)" context="ChangedNew" char="!" column="0"/>
<IncludeRules context="FindDiff"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFileNew" fallthroughContext="AttrNormal">
<Detect2Chars attribute="Header" context="#pop#pop" char="@" char1="@" lookAhead="true" column="0"/>
<AnyChar attribute="Header" context="#pop#pop" String="0123456789" lookAhead="true" column="0"/>
<RegExpr attribute="File" context="#pop#pop" String="^&file;" endRegion="chunk" lookAhead="true" column="0"/>
<DetectChar attribute="Changed line (new)" context="ChangedNew" char="!" column="0"/>
<IncludeRules context="FindDiff"/>
</context>
<!-- line contexts -->
<context attribute="Removed line" lineEndContext="#pop" name="Removed"/>
<context attribute="Added line" lineEndContext="#pop" name="Added"/>
<context attribute="Changed line (old)" lineEndContext="#pop" name="ChangedOld"/>
<context attribute="Changed line (new)" lineEndContext="#pop" name="ChangedNew"/>
<context attribute="Normal Text" lineEndContext="#pop" name="AttrNormal"/>
<context attribute="File" lineEndContext="#pop" name="AttrFile"/>
<context attribute="File" lineEndContext="#pop!File" name="AttrFile_File"/>
<context attribute="File" lineEndContext="#pop!RFile" name="AttrFile_RFile"/>
<context attribute="Header" lineEndContext="#pop" name="AttrHeader"/>
<context attribute="Header" lineEndContext="#pop!Chunk" name="AttrHeader_Chunk"/>
<context attribute="Header" lineEndContext="#pop!ChunkInFile" name="AttrHeader_ChunkInFile"/>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="File" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Header" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Removed line" defStyleNum="dsString" spellChecking="false"/>
<itemData name="Added line" defStyleNum="dsVariable" spellChecking="false"/>
<itemData name="Changed line (old)" defStyleNum="dsString" spellChecking="false"/>
<itemData name="Changed line (new)" defStyleNum="dsVariable" spellChecking="false"/>
</itemDatas>
</highlighting>
</language>
@@ -0,0 +1,331 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY name "[A-Za-z_:][\w.:_-]*">
<!ENTITY entref "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
]>
<language name="Django HTML Template" version="8" kateversion="5.79" section="Markup" extensions="*.htm;*.html" mimetype="text/html" author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
<!--
Based off of the katepart html syntax highlighting by Wilbert Berendsen.
Email me with any bugs/suggestions/requests!
-->
<highlighting>
<list name="blocktags">
<item>for</item>
<item>block</item>
<item>if</item>
<item>ifequal</item>
<item>ifnotequal</item>
<item>ifchanged</item>
<item>blocktrans</item>
<item>spaceless</item>
<item>autoescape</item>
</list>
<list name="endblocktags">
<item>endfor</item>
<item>endblock</item>
<item>endif</item>
<item>endifequal</item>
<item>endifnotequal</item>
<item>endifchanged</item>
<item>endblocktrans</item>
<item>endspaceless</item>
<item>endautoescape</item>
</list>
<contexts>
<context name="Start" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Mismatched Block Tag" context="#stay" String="\{%\s*end[a-z]+\s*%\}" />
<IncludeRules context="FindTemplate" />
<IncludeRules context="FindHTML" />
</context>
<context name="In Block" attribute="Normal Text" lineEndContext="#stay">
<RegExpr context="#pop" String="\{%\s*end[a-z]+\s*%\}" lookAhead="true" />
<IncludeRules context="FindTemplate" />
<IncludeRules context="FindHTML" />
</context>
<context name="FindTemplate" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Template Comment" context="Template Comment" String="\{%\s*comment\s*%\}" beginRegion="templatecomment" />
<Detect2Chars attribute="Template Var" context="Template Var" char="{" char1="{" />
<Detect2Chars attribute="Template Tag" context="Template Tag" char="{" char1="%" />
</context>
<context name="Template Comment" attribute="Template Comment" lineEndContext="#stay">
<RegExpr attribute="Template Comment" context="#pop" String="\{%\s*endcomment\s*%\}" endRegion="templatecomment" />
<DetectSpaces />
<IncludeRules context="##Comments" />
</context>
<context name="Template Var" attribute="Template Var" lineEndContext="#stay">
<Detect2Chars attribute="Template Var" context="#pop" char="}" char1="}" />
<DetectChar attribute="Template Filter" context="Template Filter" char='|' />
<Detect2Chars attribute="Error" context="#stay" char="{" char1="{" />
<Detect2Chars attribute="Error" context="#stay" char="{" char1="%" />
<Detect2Chars attribute="Error" context="#stay" char="%" char1="}" />
</context>
<context name="Template Filter" attribute="Template Filter" lineEndContext="#stay">
<Detect2Chars attribute="Template Var" context="#pop#pop" char="}" char1="}" />
<DetectChar attribute="Template String" char="'" context="Single A-string"/>
<DetectChar attribute="Template String" char="&quot;" context="Single Q-string"/>
<Detect2Chars attribute="Error" context="#stay" char="{" char1="{" />
<Detect2Chars attribute="Error" context="#stay" char="{" char1="%" />
<Detect2Chars attribute="Error" context="#stay" char="%" char1="}" />
</context>
<context name="Template Tag" attribute="Template Tag" lineEndContext="#stay">
<keyword String="blocktags" context="Found Block Tag" lookAhead="true" attribute="Template Tag" />
<DetectIdentifier attribute="Template Tag" context="In Template Tag" />
</context>
<context name="Found Block Tag" attribute="Template Tag" lineEndContext="#stay">
<!-- This context is entered when a matching block tag was found through lookAhead. We need to capture it in an re, so that it can be matched with the end[blockname] tag later -->
<RegExpr attribute="Template Tag" String="(&name;)" context="In Block Tag"/>
</context>
<context name="In Block Tag" attribute="Template Tag Argument" dynamic="true" lineEndContext="#stay" >
<RegExpr context="#pop#pop#pop" String="\{%\s*end%1\s*%\}" dynamic="true" attribute="Template Tag"/>
<RegExpr context="Non Matching Tag" String="\{%\s*end[a-z]+\s*%\}" lookAhead="true" />
<Detect2Chars attribute="Template Tag" context="In Block" char="%" char1="}" />
<IncludeRules context="In Template Tag" />
</context>
<context name="Non Matching Tag" attribute="Template Tag" lineEndContext="#stay">
<keyword String="endblocktags" attribute="Mismatched Block Tag" context="#pop" />
<!-- If the mismatched tag is one we don't know about, ignore it. -->
<DetectIdentifier attribute="Template Tag" context="#pop" />
</context>
<context name="In Template Tag" attribute="Template Tag Argument" lineEndContext="#stay">
<Detect2Chars attribute="Template Tag" context="#pop#pop" char="%" char1="}" />
<DetectChar attribute="Template String" char="'" context="Single A-string"/>
<DetectChar attribute="Template String" char="&quot;" context="Single Q-string"/>
<Detect2Chars attribute="Error" context="#stay" char="{" char1="{" />
<Detect2Chars attribute="Error" context="#stay" char="{" char1="%" />
<Detect2Chars attribute="Error" context="#stay" char="}" char1="}" />
</context>
<context name="Single A-string" attribute="Template String" lineEndContext="#stay">
<HlCStringChar attribute="Template String" context="#stay"/>
<!-- <RegExpr attribute="Operator" String="%[a-zA-Z]" context="#stay"/> -->
<DetectChar attribute="Template String" char="'" context="#pop"/>
</context>
<context name="Single Q-string" attribute="Template String" lineEndContext="#stay">
<HlCStringChar attribute="Template String" context="#stay"/>
<!-- <RegExpr attribute="Operator" String="%[a-zA-Z]" context="#stay"/> -->
<DetectChar attribute="Template String" char="&quot;" context="#pop"/>
</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" />
<WordDetect attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE" beginRegion="doctype" />
<RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
<WordDetect attribute="Element" context="CSS" String="&lt;style" insensitive="true" beginRegion="style" />
<WordDetect attribute="Element" context="JS" String="&lt;script" insensitive="true" beginRegion="script" />
<WordDetect attribute="Element" context="El Open" String="&lt;pre" insensitive="true" beginRegion="pre" />
<WordDetect attribute="Element" context="El Open" String="&lt;div" insensitive="true" beginRegion="div" />
<WordDetect attribute="Element" context="El Open" String="&lt;table" insensitive="true" beginRegion="table" />
<RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
<WordDetect attribute="Element" context="El Close" String="&lt;/pre" insensitive="true" endRegion="pre" />
<WordDetect attribute="Element" context="El Close" String="&lt;/div" insensitive="true" endRegion="div" />
<WordDetect attribute="Element" context="El Close" String="&lt;/table" insensitive="true" endRegion="table" />
<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="Normal Text" lineEndContext="#stay">
<RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
<AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
</context>
<context name="FindPEntityRefs" attribute="Normal 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="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Attribute" context="#stay" String="^&name;|\s+&name;" />
<DetectChar attribute="Attribute" context="Value" char="=" />
</context>
<context name="FindDTDRules" attribute="Normal 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="##Comments" />
<IncludeRules context="FindTemplate" />
<DetectIdentifier/>
<StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
<RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
</context>
<context name="CDATA" attribute="Normal 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="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
</context>
<context name="Doctype" attribute="Normal 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="Normal 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="Normal 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="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
<DetectChar attribute="Element" context="#pop" char="&gt;" />
<IncludeRules context="FindAttributes" />
<IncludeRules context="FindTemplate" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="El Close" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Element" context="#pop" char="&gt;" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="El Close 2" attribute="Normal 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="Normal 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="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
<DetectChar attribute="Element" context="CSS content" char="&gt;" />
<IncludeRules context="FindAttributes" />
<IncludeRules context="FindTemplate" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
<WordDetect attribute="Element" context="El Close 2" String="&lt;/style" insensitive="true" endRegion="style" />
<IncludeRules context="FindTemplate" />
<IncludeRules context="##CSS" includeAttrib="true"/>
</context>
<context name="JS" attribute="Normal Text" lineEndContext="#stay">
<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
<DetectChar attribute="Element" context="JS content" char="&gt;" />
<IncludeRules context="FindTemplate" />
<IncludeRules context="FindAttributes" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="JS content" attribute="Normal Text" lineEndContext="#stay">
<WordDetect attribute="Element" context="El Close 2" String="&lt;/script" insensitive="true" endRegion="script" />
<RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
<IncludeRules context="FindTemplate" />
<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
</context>
<context name="JS comment close" attribute="Comment" lineEndContext="#pop">
<WordDetect attribute="Element" context="El Close 3" String="&lt;/script" insensitive="true" endRegion="script" />
<IncludeRules context="FindTemplate" />
<IncludeRules context="##Comments" />
</context>
<context name="Value" attribute="Normal Text" lineEndContext="#stay" 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="Normal Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
<IncludeRules context="FindEntityRefs" />
<IncludeRules context="FindTemplate" />
<RegExpr attribute="Value" context="#stay" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
</context>
<context name="Value DQ" attribute="Value" lineEndContext="#stay">
<DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
<IncludeRules context="FindTemplate" />
<IncludeRules context="FindEntityRefs" />
</context>
<context name="Value SQ" attribute="Value" lineEndContext="#stay">
<DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
<IncludeRules context="FindTemplate" />
<IncludeRules context="FindEntityRefs" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
<itemData name="Processing Instruction" defStyleNum="dsKeyword" />
<itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
<itemData name="Element" defStyleNum="dsKeyword" />
<itemData name="Attribute" defStyleNum="dsOthers" />
<itemData name="Value" defStyleNum="dsString" />
<itemData name="EntityRef" defStyleNum="dsDecVal" />
<itemData name="PEntityRef" defStyleNum="dsDecVal" />
<itemData name="Error" defStyleNum="dsError" />
<itemData name="Template Var" defStyleNum="dsFunction" />
<itemData name="Template Tag" defStyleNum="dsFunction" />
<itemData name="Template Tag Argument" defStyleNum="dsFunction" />
<itemData name="Template String" defStyleNum="dsString" />
<itemData name="Template Comment" defStyleNum="dsComment" />
<itemData name="Template Filter" defStyleNum="dsOthers" />
<itemData name="Mismatched Block Tag" defStyleNum="dsError" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="multiLine" start="{% comment %}" end="{% endcomment %}" region="templatecomment" />
</comments>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
This file is part of KDE's kate project.
SPDX-FileCopyrightText: James Turnbull <james@lovedthanlost.net>
SPDX-FileCopyrightText: 2020-2021 Alex Turbov <i.zaufi@gmail.com>
SPDX-License-Identifier: MIT
-->
<language
name="Dockerfile"
section="Other"
version="11"
kateversion="5.79"
extensions="Dockerfile;Containerfile"
author="James Turnbull (james@lovedthanlost.net)"
license="MIT"
>
<highlighting>
<list name="keywords-trivial">
<item>AS</item>
<item>EXPOSE</item>
<item>MAINTAINER</item>
<item>ONBUILD</item>
<item>STOPSIGNAL</item>
<item>USER</item>
<item>WORKDIR</item>
<item>VOLUME</item>
<item>SHELL</item>
</list>
<list name="keywords-options">
<item>ADD</item>
<item>COPY</item>
<item>FROM</item>
<item>HEALTHCHECK</item>
</list>
<list name="keywords-key-value">
<item>ARG</item>
<item>ENV</item>
<item>LABEL</item>
</list>
<list name="keywords-shell-form">
<item>CMD</item>
<item>ENTRYPOINT</item>
</list>
<list name="keywords-shell-form-with-options">
<item>RUN</item>
</list>
<contexts>
<context name="normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces />
<DetectChar attribute="Comment" context="Comment" char="#" />
<keyword attribute="Keyword" context="#stay" String="keywords-trivial" />
<keyword attribute="Keyword" context="Maybe Option" String="keywords-options" />
<keyword attribute="Keyword" context="#stay" String="keywords-key-value" />
<keyword attribute="Keyword" context="Maybe Shell Form" String="keywords-shell-form" />
<keyword attribute="Keyword" context="Maybe Option for Shell Form" String="keywords-shell-form-with-options" />
<DetectIdentifier />
<DetectChar attribute="String" context="string&quot;" char="&quot;" />
<DetectChar attribute="String" context="string'" char="'" />
<LineContinue attribute="Operator" context="#stay" />
</context>
<context name="Maybe Option" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
<DetectSpaces />
<Detect2Chars attribute="Option" context="KwOption" char="-" char1="-"/>
<LineContinue attribute="Normal Text" context="#stay" />
</context>
<context name="Maybe Shell Form" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="BashOneLine##Bash">
<DetectSpaces />
<DetectChar attribute="Normal Text" context="#pop" char="[" lookAhead="true" />
<LineContinue attribute="Operator" context="#stay" />
</context>
<context name="Maybe Option for Shell Form" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="BashOneLine##Bash">
<DetectSpaces />
<DetectChar attribute="Normal Text" context="#pop" char="[" lookAhead="true" />
<Detect2Chars attribute="Option" context="KwOption" char="-" char1="-"/>
<LineContinue attribute="Operator" context="#stay" />
</context>
<context attribute="Option" lineEndContext="#pop#pop" name="KwOption" fallthroughContext="#pop">
<RegExpr attribute="Option" context="#pop" String="[a-z\-]+(=[^\s]+)?"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<RegExpr attribute="Directive" context="#stay" String="(syntax|escape)=[^\s]+"/>
<LineContinue attribute="Comment" context="#stay" />
<IncludeRules context="##Comments" />
</context>
<context name="string&quot;" attribute="String" lineEndContext="#pop">
<LineContinue attribute="Operator" context="#stay" />
<DetectChar attribute="String" context="#pop" char="&quot;" />
</context>
<context name="string'" attribute="String" lineEndContext="#pop">
<LineContinue attribute="String" context="#stay" />
<DetectChar attribute="String" context="#pop" char="'" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Directive" defStyleNum="dsCommentVar" />
<itemData name="Operator" defStyleNum="dsOperator" />
<itemData name="Option" defStyleNum="dsOperator" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0" />
<itemData name="String" defStyleNum="dsString" spellChecking="0" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name = "singleLine" start = "#" />
</comments>
</general>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
@@ -0,0 +1,644 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY label "[^\s]+">
<!ENTITY varname "[A-Za-z_][A-Za-z0-9_.]*"> <!-- valid character in a variable name -->
<!ENTITY varname_set "&varname;(?=(\[(&#37;&#37;)?(&varname;|\d+)\]|!&varname;!)?(=|\s*$))|&#37;~?\d|&#37;&#37;(&varname;|[0-9*#])"> <!-- variable in set cmd -->
<!ENTITY eop "(?=([\s\\;&quot;&#37;]|$))"> <!-- end of path -->
<!ENTITY pathpart "[^\s\\&#37;!;/:*?&quot;&gt;&lt;|&amp;]"> <!-- valid character in a file name -->
]>
<language name="MS-DOS Batch" version="9" kateversion="5.62" section="Scripts" extensions="*.bat;*.cmd" mimetype="application/x-dos" casesensitive="0" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
<!-- (c) 2006, 2009, 2010 Matthew Woehlke (mw_triad@users.sourceforge.net)
Released under the LGPL -->
<highlighting>
<list name="builtins">
<item>assoc</item>
<item>break</item>
<item>cd</item>
<item>chdir</item>
<item>cls</item>
<item>color</item>
<item>copy</item>
<item>date</item>
<item>del</item>
<item>dir</item>
<item>endlocal</item>
<item>erase</item>
<item>exit</item>
<item>ftype</item>
<item>md</item>
<item>mkdir</item>
<item>move</item>
<item>path</item>
<item>pause</item>
<item>popd</item>
<item>prompt</item>
<item>pushd</item>
<item>rd</item>
<item>ren</item>
<item>rename</item>
<item>rmdir</item>
<item>runas</item>
<item>setlocal</item>
<item>shift</item>
<item>start</item>
<item>time</item>
<item>title</item>
<item>type</item>
<item>ver</item>
<item>verify</item>
<item>vol</item>
</list>
<!-- these need special handling -->
<list name="special commands">
<item>call</item>
<item>echo</item>
<item>else</item>
<item>for</item>
<item>in</item>
<item>do</item>
<item>goto</item>
<item>if</item>
<item>not</item>
<item>rem</item>
<item>set</item>
</list>
<list name="commands">
<!-- the basics -->
<item>at</item>
<item>attrib</item>
<item>break</item>
<item>cacls</item>
<item>chcp</item>
<item>chkdsk</item>
<item>chkntfs</item>
<item>cmd</item>
<item>comp</item>
<item>compact</item>
<item>convert</item>
<item>diskcomp</item>
<item>diskcopy</item>
<item>doskey</item>
<item>fc</item>
<item>find</item>
<item>findstr</item>
<item>format</item>
<item>graftabl</item>
<item>help</item>
<item>label</item>
<item>mode</item>
<item>more</item>
<item>print</item>
<item>recover</item>
<item>replace</item>
<item>sort</item>
<item>subst</item>
<item>tree</item>
<item>xcopy</item>
</list>
<list name="comparators">
<item>EQU</item>
<item>NEQ</item>
<item>LSS</item>
<item>LEQ</item>
<item>GTR</item>
<item>GEQ</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Start">
<DetectSpaces/>
<!-- general syntactical stuff -->
<keyword attribute="Builtin" context="Command" String="builtins"/>
<keyword attribute="Command" context="Command" String="commands"/>
<!-- special built-ins -->
<WordDetect attribute="Builtin" context="CmdSet" String="set" insensitive="1"/>
<WordDetect attribute="Builtin" context="CmdEcho" String="echo" insensitive="1" lookAhead="1"/>
<WordDetect attribute="ControlFlow" context="CmdIf" String="if" insensitive="1"/>
<WordDetect attribute="ControlFlow" context="#stay" String="else" insensitive="1"/>
<WordDetect attribute="ControlFlow" context="CmdFor" String="for" insensitive="1"/>
<WordDetect attribute="ControlFlow" context="CmdGoto" String="goto" insensitive="1"/>
<WordDetect attribute="Builtin" context="CmdCall" String="call" insensitive="1"/>
<WordDetect attribute="Comment" context="Comment" String="rem" insensitive="1"/>
<DetectChar attribute="Keyword" context="#stay" char="@"/>
<!-- other syntaxes -->
<StringDetect attribute="Comment" context="Comment" String="::"/>
<DetectChar attribute="Label" context="Label" char=":" firstNonSpace="true"/>
<DetectChar attribute="Keyword" context="NestedStart" char="(" beginRegion="body"/>
<IncludeRules context="FindRedirections"/>
<RegExpr attribute="Path" context="Command" String="[^\s&#37;!;*?&quot;&gt;&lt;|&amp;]+"/>
<StringDetect attribute="Keyword" String="||"/>
<StringDetect attribute="Keyword" String="&amp;&amp;"/>
<DetectChar attribute="Redirection" char="|"/>
<DetectChar attribute="Keyword" char="&amp;"/>
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindSubstitutions"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="NestedStart">
<DetectChar attribute="Keyword" context="#pop" char=")" endRegion="body"/>
<IncludeRules context="Start"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="FindBranches">
<StringDetect attribute="Keyword" context="#pop" String="||"/>
<StringDetect attribute="Keyword" context="#pop" String="&amp;&amp;"/>
<DetectChar attribute="Redirection" context="#pop" char="|"/>
<DetectChar attribute="Keyword" context="#pop" char="&amp;"/>
<DetectChar attribute="Keyword" context="#pop" char=")" endRegion="body"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="FindRedirections">
<RegExpr attribute="Redirection" context="Redirection" String="[0-9]*(>>?|&lt;)"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Redirection" fallthroughContext="#pop!Path">
<DetectSpaces context="#pop!Path"/>
<RegExpr attribute="Redirection" context="#pop" String="&amp;[0-9]+|"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
<DetectChar attribute="String" context="String" char="&quot;"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions">
<Detect2Chars attribute="Escape" context="Substitution" char="%" char1="%"/>
<IncludeRules context="FindVariables"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Substitution" fallthroughContext="#pop">
<RegExpr attribute="Variable Expansion" context="#pop!SubstitutionVariable" String="&varname;(\[(%%)?(&varname;|\d+)\])*(:~(%%&varname;|-?[0-9]+)(,(%%&varname;|-?[0-9]+))?|:[^=]+=[^%]*)?%|[0-9*#]|~[fdpnxsatz]*(\$&varname;:)?[0-9#]|" lookAhead="1"/>
<DetectIdentifier attribute="Variable" context="#pop"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="SubstitutionVariable" fallthroughContext="#pop!VariableRegular1">
<DetectChar attribute="Variable Expansion" char="~" context="#pop!VariableModificator"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="FindVariables">
<!--
%var%
%var:~N,N%
%var:old=new%
%~n1
%~$var:1
%1
%*
!var!
!var:~N,N!
!var:old=new!
!%...%!
prefix:
[%!]var[...]
[%!]var%%
-->
<RegExpr attribute="Variable Expansion" context="Variable" String="%(&varname;(\[(%%)?(&varname;|\d+)\])*(:~(%%&varname;|-?[0-9]+)(,(%%&varname;|-?[0-9]+))?|:[^=]+=[^%]*)?%|[0-9*#])|%~[fdpnxsatz]*(\$&varname;:)?[0-9#]|!%(&varname;(\[(%%)?(&varname;|\d+)\]|%%&varname;)*%|[0-9*#])!|!&varname;(\[(%%)?(&varname;|\d+)\]|%%&varname;)*(:~(%%&varname;|-?[0-9]+)(,(%%&varname;|-?[0-9]+))?|:[^=]+=[^!]*)?!" lookAhead="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Variable">
<StringDetect attribute="Variable Expansion" String="%~" context="#pop!VariableModificator"/>
<DetectChar attribute="Variable Expansion" char="%" context="#pop!VariableRegular1"/>
<DetectChar attribute="Variable Expansion" char="!" context="#pop!VariableRegular2"/>
</context>
<!-- %~ -->
<context attribute="Normal Text" lineEndContext="#pop" name="VariableModificator">
<AnyChar attribute="Variable Expansion" String="fdpnxsatz"/>
<DetectChar attribute="Variable Expansion" char="$" context="#pop!VariableFind"/>
<AnyChar attribute="Variable" String="0123456789#" context="#pop"/>
</context>
<!-- %~$ -->
<context attribute="Normal Text" lineEndContext="#pop" name="VariableFind">
<DetectIdentifier attribute="Variable"/>
<DetectChar attribute="Variable Expansion" char=":"/>
<AnyChar attribute="Variable" String="0123456789#" context="#pop"/>
<DetectChar attribute="Variable" char="."/>
</context>
<!-- % -->
<context attribute="Normal Text" lineEndContext="#pop" name="VariableRegular1">
<DetectChar attribute="Variable Expansion" char="%" context="#pop"/>
<DetectIdentifier attribute="Variable"/>
<AnyChar attribute="Variable" String="0123456789*#" context="#pop"/>
<StringDetect attribute="Variable Expansion" String=":~" context="#pop!VariableSub"/>
<DetectChar attribute="Variable Expansion" char=":" context="#pop!VariableReplace1"/>
<IncludeRules context="FindVariableRegularKey"/>
<DetectChar attribute="Variable" char="."/>
</context>
<!-- ! -->
<context attribute="Normal Text" lineEndContext="#pop" name="VariableRegular2">
<DetectChar attribute="Variable Expansion" char="!" context="#pop"/>
<DetectIdentifier attribute="Variable"/>
<StringDetect attribute="Variable Expansion" String=":~" context="#pop!VariableSub"/>
<DetectChar attribute="Variable Expansion" char=":" context="#pop!VariableReplace2"/>
<IncludeRules context="FindVariableRegularKey"/>
<IncludeRules context="FindVariableRegularEscaped"/>
<DetectChar attribute="Variable Expansion" char="%" context="VariableRegular1"/>
<DetectChar attribute="Variable" char="."/>
</context>
<!-- %% in !var1%%var2! -->
<context attribute="Normal Text" lineEndContext="#stay" name="FindVariableRegularEscaped">
<StringDetect attribute="Escape" String="%%" context="VariableRegularEscaped"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="VariableRegularEscaped">
<DetectIdentifier attribute="Variable" context="#pop"/>
</context>
<!-- for [ ... ] -->
<context attribute="Normal Text" lineEndContext="#stay" name="FindVariableRegularKey">
<DetectChar attribute="Symbol" char="[" context="VariableRegularKey"/>
</context>
<!-- [ -->
<context attribute="String" lineEndContext="#stay" name="VariableRegularKey">
<DetectChar attribute="Symbol" char="]" context="#pop"/>
<StringDetect attribute="Escape" String="%%" context="VariableRegularKeyVar"/>
<IncludeRules context="FindNumber"/>
<DetectIdentifier attribute="String"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="VariableRegularKeyVar" fallthroughContext="#pop">
<DetectIdentifier attribute="Variable" context="#pop"/>
</context>
<!-- %var:~ and !var:~ -->
<context attribute="Normal Text" lineEndContext="#pop" name="VariableSub">
<StringDetect attribute="Escape" String="%%"/>
<AnyChar attribute="Variable Expansion" String="%!" context="#pop"/>
<IncludeRules context="FindNumber"/>
<DetectIdentifier attribute="Variable"/>
<DetectChar attribute="Number" char="-"/>
<DetectChar attribute="Variable Expansion" char=","/>
<DetectChar attribute="Variable" char="."/>
</context>
<!-- %var: -->
<context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace1">
<RegExpr attribute="String" String="[^=]+" context="#pop!VariableReplace1Sep"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace1Sep">
<DetectChar attribute="Variable Expansion" char="=" context="#pop!VariableReplace1P2"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace1P2">
<DetectChar attribute="Variable Expansion" char="%" context="#pop"/>
<RegExpr attribute="String" String="[^%]+"/>
</context>
<!-- !var: -->
<context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace2">
<RegExpr attribute="String" String="[^=]+" context="#pop!VariableReplace2Sep"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace2Sep">
<DetectChar attribute="Variable Expansion" char="=" context="#pop!VariableReplace2P2"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace2P2">
<DetectChar attribute="Variable Expansion" char="!" context="#pop"/>
<RegExpr attribute="String" String="[^!]+"/>
</context>
<!-- basic sub-contexts -->
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<DetectSpaces/>
<IncludeRules context="##Comments"/>
<DetectIdentifier/>
<IncludeRules context="FindUnquotedStringEscape"/>
<AnyChar attribute="Error" String="&amp;|^&lt;>()"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<DetectSpaces attribute="String"/>
<Detect2Chars attribute="Escape" char="\" char1="&quot;"/>
<Detect2Chars attribute="Escape" char="\" char1="\"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
<IncludeRules context="FindSubstitutions"/>
<DetectIdentifier attribute="String"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Command">
<DetectSpaces/>
<IncludeRules context="FindUnquotedString"/>
<IncludeRules context="FindSpecialCommandOption"/>
<DetectIdentifier/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="FindSpecialCommandOption">
<RegExpr attribute="Option" context="#stay" String="[/-][A-Za-z0-9][A-Za-z0-9_]*:?"/>
<RegExpr attribute="Path" context="#stay" String="[.]+&eop;|[A-Za-z][A-Za-z.]*:(\\+&pathpart;*)*|&pathpart;*(\\+&pathpart;*)+"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="Label">
<RegExpr attribute="Label" context="Comment" String="&label;"/>
</context>
<context attribute="Path" lineEndContext="#pop" name="Path">
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindSubstitutions"/>
<AnyChar attribute="Normal Text" context="#pop" String=" &#9;\%/:*?&quot;&gt;&lt;|&amp;" lookAhead="true"/>
<DetectIdentifier/>
</context>
<context attribute="Error" lineEndContext="#pop" name="Error">
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="FindNumber">
<HlCHex attribute="Hex"/>
<HlCOct attribute="Octal"/>
<Int attribute="Number"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="FindUnquotedStringEscape">
<LineContinue attribute="Escape" char="^"/>
<RegExpr attribute="Escape" context="#stay" String="\^."/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="FindUnquotedString">
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindSubstitutions"/>
<IncludeRules context="FindUnquotedStringEscape"/>
<IncludeRules context="FindRedirections"/>
<IncludeRules context="FindBranches"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="UnquotedString">
<DetectSpaces/>
<DetectIdentifier/>
<IncludeRules context="FindUnquotedString"/>
</context>
<!-- special sub-contexts -->
<context attribute="Error" lineEndContext="#pop" name="CmdSet" fallthroughContext="#pop!Error">
<IncludeRules context="CmdSetVar"/>
<WordDetect attribute="Option" context="#pop!CmdSetVar" String="/p" insensitive="1"/>
<WordDetect attribute="Option" context="#pop!CmdSetExpr" String="/a" insensitive="1"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdSetVar" fallthroughContext="#pop!Error">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="String" context="#pop!CmdSetQuotedVar" char="&quot;"/>
<RegExpr attribute="Variable" context="#pop!CmdSetVar=" String="&varname_set;"/>
<DetectChar attribute="Symbol" context="#pop!UnquotedString" char="="/>
</context>
<!-- set var -->
<context attribute="Error" lineEndContext="#pop" name="CmdSetVar=">
<DetectChar attribute="Symbol" context="#pop!UnquotedString" char="="/>
<IncludeRules context="FindCmdSetVarSuffix"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="FindCmdSetVarSuffix">
<DetectChar attribute="Variable Expansion" char="!"/>
<DetectIdentifier attribute="Variable"/>
<IncludeRules context="FindVariableRegularKey"/>
</context>
<!-- set " -->
<context attribute="Error" lineEndContext="#pop" name="CmdSetQuotedVar" fallthroughContext="#pop!Error">
<RegExpr attribute="Variable" context="#pop!CmdSetQuotedVar=" String="&varname_set;"/>
<DetectChar attribute="Symbol" context="#pop!String" char="="/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<!-- set "var -->
<context attribute="Error" lineEndContext="#pop" name="CmdSetQuotedVar=">
<DetectChar attribute="Symbol" context="#pop!String" char="="/>
<IncludeRules context="FindCmdSetVarSuffix"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<!-- set /a -->
<context attribute="Error" lineEndContext="#pop" name="CmdSetExpr" fallthroughContext="#pop!CmdSetUnquotedExpr">
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="String" context="CmdSetQuotedExpr" char="&quot;"/>
<DetectIdentifier attribute="Variable" context="CmdSetUnquotedExpr"/>
<DetectChar attribute="Keyword" char=","/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdSetQuotedExpr">
<IncludeRules context="FindVariables"/>
<StringDetect attribute="Operator" String="%%"/>
<AnyChar attribute="Operator" String="=*/%+-&amp;^|!~"/>
<AnyChar attribute="Symbol" String="()[],"/>
<DetectIdentifier attribute="Variable"/>
<StringDetect attribute="Operator" String="&lt;&lt;"/>
<StringDetect attribute="Operator" String=">>"/>
<IncludeRules context="FindNumber"/>
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdSetUnquotedExpr">
<AnyChar attribute="Symbol" String="()[]"/>
<IncludeRules context="FindUnquotedString"/>
<AnyChar attribute="Operator" String="=+-/^*!"/>
<DetectChar attribute="Keyword" context="#pop" char=","/>
<DetectIdentifier attribute="Variable"/>
<IncludeRules context="FindNumber"/>
<DetectSpaces attribute="Normal Text"/>
</context>
<!-- echo -->
<context attribute="Echoed Text" lineEndContext="#pop" name="CmdEcho">
<RegExpr attribute="Builtin" context="#pop" String="echo\s+o(ff|n)\s*(?=[&amp;|]|$)" insensitive="1"/>
<StringDetect attribute="Builtin" context="#pop!CmdEcho2" String="echo" insensitive="1"/>
</context>
<context attribute="Echoed Text" lineEndContext="#pop" name="CmdEcho2">
<DetectSpaces/>
<IncludeRules context="FindSubstitutions"/>
<IncludeRules context="FindUnquotedStringEscape"/>
<IncludeRules context="FindRedirections"/>
<IncludeRules context="FindBranches"/>
<DetectIdentifier/>
</context>
<!-- goto -->
<context attribute="Error" lineEndContext="#pop" name="CmdGoto">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<DetectChar attribute="Label" char=":"/>
<RegExpr attribute="Label" context="#pop" String="&label;"/>
</context>
<!-- call -->
<context attribute="Error" lineEndContext="#pop" name="CmdCall" fallthroughContext="#pop!Command">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<DetectChar attribute="Label" char=":"/>
<RegExpr attribute="Label" context="#pop!Command" String="&label;"/>
</context>
<!-- if -->
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIf" fallthroughContext="CmdIfCond">
<DetectSpaces/>
<StringDetect attribute="Option" String="/i" insensitive="1"/>
<WordDetect attribute="Keyword" String="not" insensitive="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCond" fallthroughContext="CmdIfCondCmp">
<WordDetect attribute="Option" context="CmdIfCondExist" String="exist" insensitive="1"/>
<WordDetect attribute="Option" context="CmdIfCondDefined" String="defined" insensitive="1"/>
<WordDetect attribute="Option" context="CmdIfCondNum" String="errorlevel" insensitive="1"/>
<WordDetect attribute="Option" context="CmdIfCondNum" String="cmdextversion" insensitive="1"/>
</context>
<!-- if exist -->
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondExist" fallthroughContext="#pop#pop#pop">
<DetectSpaces context="CmdIfCondExistPath"/>
</context>
<context attribute="Path" lineEndContext="#pop" name="CmdIfCondExistPath" fallthroughContext="#pop#pop#pop#pop">
<DetectSpaces context="#pop#pop#pop#pop" attribute="Normal Text"/>
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindSubstitutions"/>
<DetectIdentifier/>
</context>
<!-- if defined -->
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondDefined" fallthroughContext="#pop#pop#pop">
<DetectSpaces/>
<DetectIdentifier context="#pop#pop#pop" attribute="Variable"/>
</context>
<!-- if errorlevel | if cmdextversion -->
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondNum" fallthroughContext="#pop#pop#pop">
<DetectSpaces/>
<Int context="#pop#pop#pop" attribute="Number"/>
<IncludeRules context="FindVariables"/>
</context>
<!-- For
if xxx op yyy
and
if xxx==yyy
-->
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondCmp">
<DetectSpaces context="#pop!CmdIfCondCmpOp"/>
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindSubstitutions"/>
<DetectIdentifier/>
<StringDetect String="==" attribute="Keyword" context="CmdIfCondCmpOperand2"/>
</context>
<!-- fallthroughContext for operand as option: if %CasseSensitive% "%a%"=="x" -->
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondCmpOp" fallthroughContext="#pop#pop">
<keyword context="CmdIfCondCmpOpSpace" String="comparators" attribute="Keyword"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondCmpOpSpace">
<DetectSpaces context="#pop!CmdIfCondCmpOperand2"/>
<RegExpr String="[^\s]+" attribute="Error" />
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondCmpOperand2">
<DetectSpaces context="#pop#pop#pop#pop"/>
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindSubstitutions"/>
<DetectIdentifier/>
</context>
<!-- 'for' sub-contexts -->
<context attribute="Error" lineEndContext="#pop" name="CmdFor">
<DetectSpaces attribute="Normal Text"/>
<RegExpr attribute="Variable" context="CmdForIn" String="%%[a-z#$@]" insensitive="1"/>
<StringDetect attribute="Option" context="#stay" String="/d" insensitive="1"/>
<StringDetect attribute="Option" context="CmdForR" String="/r" insensitive="1"/>
<StringDetect attribute="Option" context="CmdForR" String="/f" insensitive="1"/>
<StringDetect attribute="Option" context="CmdForL" String="/l" insensitive="1"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdForIn">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<WordDetect attribute="Keyword" context="CmdForList" String="in" insensitive="1"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdForList">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<DetectChar attribute="Keyword" context="CmdForListBody" char="("/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="CmdForListBody" fallthroughContext="#pop!CmdForListBodyText">
<DetectSpaces/>
<AnyChar String="`'" context="#pop!CmdForListBodyStartCmd"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="CmdForListBodyStartCmd" fallthroughContext="#pop!CmdForListBodyText">
<DetectSpaces/>
<keyword attribute="Builtin" context="#pop!CmdForListBodyCmd" String="builtins"/>
<keyword attribute="Command" context="#pop!CmdForListBodyCmd" String="commands"/>
<RegExpr attribute="Path" context="#pop!CmdForListBodyCmd" String="[^\s&#37;!;*?&quot;&gt;&lt;|&amp;]+"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="CmdForListBodyCmd">
<DetectSpaces/>
<DetectIdentifier/>
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindSubstitutions"/>
<StringDetect attribute="Escape" context="#pop!CmdForListBodyStartCmd" String="^|"/>
<StringDetect attribute="Escape" context="#pop!CmdForListBodyStartCmd" String="^&amp;"/>
<IncludeRules context="FindUnquotedStringEscape"/>
<IncludeRules context="FindRedirections"/>
<IncludeRules context="FindSpecialCommandOption"/>
<DetectChar attribute="Keyword" context="CmdForDo" char=")"/>
<AnyChar attribute="Error" String="&amp;|^&lt;>()"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="CmdForListBodyText">
<DetectSpaces/>
<DetectIdentifier/>
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindSubstitutions"/>
<DetectChar attribute="Keyword" context="CmdForDo" char=")"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdForDo">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<WordDetect attribute="Keyword" context="#pop#pop#pop#pop#pop" String="do" insensitive="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="CmdForR">
<DetectSpaces attribute="Normal Text"/>
<IncludeRules context="FindStrings"/>
<IncludeRules context="FindUnquotedStringEscape"/>
<RegExpr attribute="Path" String="([a-z][a-z.]*:)?[.]*\\*[^^\s\\&#37;!;/:*?&quot;&gt;&lt;|&amp;%]*&eop;" insensitive="1"/>
<DetectIdentifier attribute="Normal Text"/>
<RegExpr attribute="Variable" context="#pop!CmdForIn" String="%%[a-z#$@](?=[$\s])" insensitive="1"/>
<IncludeRules context="FindSubstitutions"/>
</context>
<!-- 'for /L' sub-contexts -->
<context attribute="Error" lineEndContext="#pop" name="CmdForL">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<RegExpr attribute="Variable" context="CmdForLIn" String="%%[a-z#$@]" insensitive="1"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdForLIn">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<WordDetect attribute="Keyword" context="CmdForLRange" String="in" insensitive="1"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdForLRange">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<DetectChar attribute="Keyword" context="CmdForLStart" char="("/>
</context>
<context attribute="Error" lineEndContext="#pop" name="CmdForLStart">
<DetectSpaces attribute="Normal Text"/>
<AnyChar attribute="Keyword" String=";,="/>
<DetectChar attribute="Number" char="-"/>
<IncludeRules context="FindNumber"/>
<IncludeRules context="FindVariables"/>
<DetectChar attribute="Keyword" context="#pop!CmdForDo" char=")"/>
<DetectIdentifier attribute="String"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="ControlFlow" defStyleNum="dsControlFlow" spellChecking="false"/>
<itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="Label" defStyleNum="dsOthers"/>
<itemData name="Builtin" defStyleNum="dsBuiltIn"/>
<itemData name="Command" defStyleNum="dsKeyword"/>
<itemData name="Redirection" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="Echoed Text" defStyleNum="dsNormal"/>
<itemData name="Variable" defStyleNum="dsVariable"/>
<itemData name="Variable Expansion" defStyleNum="dsPreprocessor" spellChecking="false"/>
<itemData name="Path" defStyleNum="dsNormal"/>
<itemData name="Option" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="rem "/>
</comments>
<keywords casesensitive="0" additionalDeliminator="@"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!-- Adapted from the VIM highlighter, by Markus Mottl (markus@oefai.at) -->
<language name="dot" version="5" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">
<highlighting>
<list name="keywords">
<item>digraph</item>
<item>node</item>
<item>edge</item>
<item>subgraph</item>
</list>
<list name="attributes">
<!-- Graph attributes -->
<item>center</item>
<item>layers</item>
<item>margin</item>
<item>mclimit</item>
<item>name</item>
<item>nodesep</item>
<item>nslimit</item>
<item>ordering</item>
<item>page</item>
<item>pagedir</item>
<item>rank</item>
<item>rankdir</item>
<item>ranksep</item>
<item>ratio</item>
<item>rotate</item>
<item>size</item>
<!-- Node attributes -->
<item>distortion</item>
<item>fillcolor</item>
<item>fontcolor</item>
<item>fontname</item>
<item>fontsize</item>
<item>height</item>
<item>layer</item>
<item>orientation</item>
<item>peripheries</item>
<item>regular</item>
<item>shape</item>
<item>shapefile</item>
<item>sides</item>
<item>skew</item>
<item>width</item>
<!-- Edge attributes -->
<item>arrowhead</item>
<item>arrowsize</item>
<item>arrowtail</item>
<item>constraint</item>
<item>decorateP</item>
<item>dir</item>
<item>headclip</item>
<item>headlabel</item>
<item>labelangle</item>
<item>labeldistance</item>
<item>labelfontcolor</item>
<item>labelfontname</item>
<item>labelfontsize</item>
<item>minlen</item>
<item>port_label_distance</item>
<item>samehead</item>
<item>sametail</item>
<item>tailclip</item>
<item>taillabel</item>
<item>weight</item>
<!-- Shared attributes (graphs, nodes, edges) -->
<item>color</item>
<!-- Shared attributes (graphs and edges) -->
<item>bgcolor</item>
<item>label</item>
<item>URL</item>
<!-- Shared attributes (nodes and edges) -->
<item>fontcolor</item>
<item>fontname</item>
<item>fontsize</item>
<item>layer</item>
<item>style</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<IncludeRules context="DetectAll"/>
</context>
<!-- detector contexts -->
<context attribute="Normal Text" lineEndContext="#stay" name="DetectAll">
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Attribute" context="#stay" String="attributes"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<AnyChar attribute="Symbol" context="#stay" String=";="/>
<Detect2Chars attribute="Symbol" context="#stay" char="-" char1="&gt;"/>
<Float attribute="Number" context="#stay"/>
<Int attribute="Number" context="#stay"/>
<RegExpr attribute="Identifier" context="#stay" String="\b\w+\b"/>
<IncludeRules context="DetectComments"/>
<DetectChar attribute="Symbol" context="RegionCurly" char="{" beginRegion="curly"/>
<DetectChar attribute="Symbol" context="RegionSquare" char="[" beginRegion="square"/>
<DetectChar attribute="Symbol" context="RegionParen" char="(" beginRegion="paren"/>
<AnyChar attribute="Error" context="#stay" String=")]}"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="DetectComments">
<Detect2Chars attribute="Comment" context="CommentSL" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentML" char="/" char1="*" beginRegion="Comment"/>
</context>
<!-- region contexts -->
<context attribute="Comment" lineEndContext="#stay" name="RegionCurly">
<DetectChar attribute="Symbol" context="#pop" char="}" endRegion="curly"/>
<IncludeRules context="DetectAll"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="RegionSquare">
<DetectChar attribute="Symbol" context="#pop" char="]" endRegion="square"/>
<IncludeRules context="DetectAll"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="RegionParen">
<DetectChar attribute="Symbol" context="#pop" char=")" endRegion="paren"/>
<IncludeRules context="DetectAll"/>
</context>
<!-- other contexts -->
<context attribute="String" lineEndContext="#pop" name="String">
<Detect2Chars attribute="String Char" context="#stay" char="\" char1="\"/>
<Detect2Chars attribute="String Char" context="#stay" char="\" char1="&quot;"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="CommentSL">
<DetectSpaces />
<IncludeRules context="##Comments"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="CommentML">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
<DetectSpaces />
<IncludeRules context="##Comments"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Attribute" defStyleNum="dsAttribute"/>
<itemData name="Symbol" defStyleNum="dsOthers"/>
<itemData name="Number" defStyleNum="dsDecVal"/>
<itemData name="Identifier" defStyleNum="dsVariable"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Error" defStyleNum="dsError"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//"/>
<comment name="multiLine" start="/*" end="*/" region="Comment"/>
</comments>
<keywords casesensitive="1"/>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,393 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<!--
This file is part of the KDE KSyntaxHighlighting framework.
Copyright 2016-2017 Ernst Maurer <ernst.maurer@gmail.com>
Permission to use, copy, modify, and distribute this software
and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the author not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
The author disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
-->
<language name="Doxyfile"
section="Configuration"
extensions="Doxyfile;Doxyfile.*"
mimetype=""
version="6"
kateversion="5.0"
author="Ernst Maurer (ernst.maurer@gmail.com)"
license="MIT">
<highlighting>
<list name="keywords">
<item>ABBREVIATE_BRIEF</item>
<item>ALIASES</item>
<item>ALLEXTERNALS</item>
<item>ALLOW_UNICODE_NAMES</item>
<item>ALPHABETICAL_INDEX</item>
<item>ALWAYS_DETAILED_SEC</item>
<item>AUTOLINK_SUPPORT</item>
<item>BINARY_TOC</item>
<item>BRIEF_MEMBER_DESC</item>
<item>BUILTIN_STL_SUPPORT</item>
<item>CALLER_GRAPH</item>
<item>CALL_GRAPH</item>
<item>CASE_SENSE_NAMES</item>
<item>CHM_FILE</item>
<item>CHM_INDEX_ENCODING</item>
<item>CITE_BIB_FILES</item>
<item>CLANG_ASSISTED_PARSING</item>
<item>CLANG_OPTIONS</item>
<item>CLASS_DIAGRAMS</item>
<item>CLASS_GRAPH</item>
<item>COLLABORATION_GRAPH</item>
<item>COLS_IN_ALPHA_INDEX</item>
<item>COMPACT_LATEX</item>
<item>COMPACT_RTF</item>
<item>CPP_CLI_SUPPORT</item>
<item>CREATE_SUBDIRS</item>
<item>CREATE_SUBDIRS_LEVEL</item>
<item>DIAFILE_DIRS</item>
<item>DIA_PATH</item>
<item>DIRECTORY_GRAPH</item>
<item>DIR_GRAPH_MAX_DEPTH</item>
<item>DISABLE_INDEX</item>
<item>DISTRIBUTE_GROUP_DOC</item>
<item>DOCBOOK_OUTPUT</item>
<item>DOCBOOK_PROGRAMLISTING</item>
<item>DOCSET_BUNDLE_ID</item>
<item>DOCSET_FEEDNAME</item>
<item>DOCSET_FEEDURL</item>
<item>DOCSET_PUBLISHER_ID</item>
<item>DOCSET_PUBLISHER_NAME</item>
<item>DOTFILE_DIRS</item>
<item>DOT_CLEANUP</item>
<item>DOT_COMMON_ATTR</item>
<item>DOT_EDGE_ATTR</item>
<item>DOT_FONTNAME</item>
<item>DOT_FONTPATH</item>
<item>DOT_FONTSIZE</item>
<item>DOT_GRAPH_MAX_NODES</item>
<item>DOT_IMAGE_FORMAT</item>
<item>DOT_MULTI_TARGETS</item>
<item>DOT_NODE_ATTR</item>
<item>DOT_NUM_THREADS</item>
<item>DOT_PATH</item>
<item>DOT_TRANSPARENT</item>
<item>DOT_UML_DETAILS</item>
<item>DOT_WRAP_THRESHOLD</item>
<item>DOXYFILE_ENCODING</item>
<item>ECLIPSE_DOC_ID</item>
<item>ENABLED_SECTIONS</item>
<item>ENABLE_PREPROCESSING</item>
<item>ENUM_VALUES_PER_LINE</item>
<item>EXAMPLE_PATH</item>
<item>EXAMPLE_PATTERNS</item>
<item>EXAMPLE_RECURSIVE</item>
<item>EXCLUDE</item>
<item>EXCLUDE_PATTERNS</item>
<item>EXCLUDE_SYMBOLS</item>
<item>EXCLUDE_SYMLINKS</item>
<item>EXPAND_AS_DEFINED</item>
<item>EXPAND_ONLY_PREDEF</item>
<item>EXTENSION_MAPPING</item>
<item>EXTERNAL_GROUPS</item>
<item>EXTERNAL_PAGES</item>
<item>EXTERNAL_SEARCH</item>
<item>EXTERNAL_SEARCH_ID</item>
<item>EXTRACT_ALL</item>
<item>EXTRACT_ANON_NSPACES</item>
<item>EXTRACT_LOCAL_CLASSES</item>
<item>EXTRACT_LOCAL_METHODS</item>
<item>EXTRACT_PACKAGE</item>
<item>EXTRACT_PRIVATE</item>
<item>EXTRACT_PRIV_VIRTUAL</item>
<item>EXTRACT_STATIC</item>
<item>EXTRA_PACKAGES</item>
<item>EXTRA_SEARCH_MAPPINGS</item>
<item>EXT_LINKS_IN_WINDOW</item>
<item>FILE_PATTERNS</item>
<item>FILE_VERSION_FILTER</item>
<item>FILTER_PATTERNS</item>
<item>FILTER_SOURCE_FILES</item>
<item>FILTER_SOURCE_PATTERNS</item>
<item>FORCE_LOCAL_INCLUDES</item>
<item>FORMULA_FONTSIZE</item>
<item>FORMULA_MACROFILE</item>
<item>FORMULA_TRANSPARENT</item>
<item>FORTRAN_COMMENT_AFTER</item>
<item>FULL_PATH_NAMES</item>
<item>FULL_SIDEBAR</item>
<item>GENERATE_AUTOGEN_DEF</item>
<item>GENERATE_BUGLIST</item>
<item>GENERATE_CHI</item>
<item>GENERATE_DEPRECATEDLIST</item>
<item>GENERATE_DOCBOOK</item>
<item>GENERATE_DOCSET</item>
<item>GENERATE_ECLIPSEHELP</item>
<item>GENERATE_HTML</item>
<item>GENERATE_HTMLHELP</item>
<item>GENERATE_LATEX</item>
<item>GENERATE_LEGEND</item>
<item>GENERATE_MAN</item>
<item>GENERATE_PERLMOD</item>
<item>GENERATE_QHP</item>
<item>GENERATE_RTF</item>
<item>GENERATE_SQLITE3</item>
<item>GENERATE_TAGFILE</item>
<item>GENERATE_TESTLIST</item>
<item>GENERATE_TODOLIST</item>
<item>GENERATE_TREEVIEW</item>
<item>GENERATE_XML</item>
<item>GRAPHICAL_HIERARCHY</item>
<item>GROUP_GRAPHS</item>
<item>GROUP_NESTED_COMPOUNDS</item>
<item>HAVE_DOT</item>
<item>HHC_LOCATION</item>
<item>HIDE_COMPOUND_REFERENCE</item>
<item>HIDE_FRIEND_COMPOUNDS</item>
<item>HIDE_IN_BODY_DOCS</item>
<item>HIDE_SCOPE_NAMES</item>
<item>HIDE_UNDOC_CLASSES</item>
<item>HIDE_UNDOC_MEMBERS</item>
<item>HIDE_UNDOC_RELATIONS</item>
<item>HTML_CODE_FOLDING</item>
<item>HTML_COLORSTYLE</item>
<item>HTML_COLORSTYLE_GAMMA</item>
<item>HTML_COLORSTYLE_HUE</item>
<item>HTML_COLORSTYLE_SAT</item>
<item>HTML_COPY_CLIPBOARD</item>
<item>HTML_DYNAMIC_MENUS</item>
<item>HTML_DYNAMIC_SECTIONS</item>
<item>HTML_EXTRA_FILES</item>
<item>HTML_EXTRA_STYLESHEET</item>
<item>HTML_FILE_EXTENSION</item>
<item>HTML_FOOTER</item>
<item>HTML_FORMULA_FORMAT</item>
<item>HTML_HEADER</item>
<item>HTML_INDEX_NUM_ENTRIES</item>
<item>HTML_OUTPUT</item>
<item>HTML_PROJECT_COOKIE</item>
<item>HTML_STYLESHEET</item>
<item>HTML_TIMESTAMP</item>
<item>IDL_PROPERTY_SUPPORT</item>
<item>IGNORE_PREFIX</item>
<item>IMAGE_PATH</item>
<item>INCLUDED_BY_GRAPH</item>
<item>INCLUDE_FILE_PATTERNS</item>
<item>INCLUDE_GRAPH</item>
<item>INCLUDE_PATH</item>
<item>INHERIT_DOCS</item>
<item>INLINE_GROUPED_CLASSES</item>
<item>INLINE_INFO</item>
<item>INLINE_INHERITED_MEMB</item>
<item>INLINE_SIMPLE_STRUCTS</item>
<item>INLINE_SOURCES</item>
<item>INPUT</item>
<item>INPUT_ENCODING</item>
<item>INPUT_FILE_ENCODING</item>
<item>INPUT_FILTER</item>
<item>INTERACTIVE_SVG</item>
<item>INTERNAL_DOCS</item>
<item>JAVADOC_AUTOBRIEF</item>
<item>JAVADOC_BANNER</item>
<item>LATEX_BATCHMODE</item>
<item>LATEX_BIB_STYLE</item>
<item>LATEX_CMD_NAME</item>
<item>LATEX_EMOJI_DIRECTORY</item>
<item>LATEX_EXTRA_FILES</item>
<item>LATEX_EXTRA_STYLESHEET</item>
<item>LATEX_FOOTER</item>
<item>LATEX_HEADER</item>
<item>LATEX_HIDE_INDICES</item>
<item>LATEX_MAKEINDEX_CMD</item>
<item>LATEX_OUTPUT</item>
<item>LATEX_SOURCE_CODE</item>
<item>LATEX_TIMESTAMP</item>
<item>LAYOUT_FILE</item>
<item>LOOKUP_CACHE_SIZE</item>
<item>MACRO_EXPANSION</item>
<item>MAKEINDEX_CMD_NAME</item>
<item>MAN_EXTENSION</item>
<item>MAN_LINKS</item>
<item>MAN_OUTPUT</item>
<item>MAN_SUBDIR</item>
<item>MARKDOWN_ID_STYLE</item>
<item>MARKDOWN_SUPPORT</item>
<item>MATHJAX_CODEFILE</item>
<item>MATHJAX_EXTENSIONS</item>
<item>MATHJAX_FORMAT</item>
<item>MATHJAX_RELPATH</item>
<item>MATHJAX_VERSION</item>
<item>MAX_DOT_GRAPH_DEPTH</item>
<item>MAX_INITIALIZER_LINES</item>
<item>MSCFILE_DIRS</item>
<item>MSCGEN_PATH</item>
<item>MSCGEN_TOOL</item>
<item>MULTILINE_CPP_IS_BRIEF</item>
<item>NUM_PROC_THREADS</item>
<item>OBFUSCATE_EMAILS</item>
<item>OPTIMIZE_FOR_FORTRAN</item>
<item>OPTIMIZE_OUTPUT_FOR_C</item>
<item>OPTIMIZE_OUTPUT_JAVA</item>
<item>OPTIMIZE_OUTPUT_SLICE</item>
<item>OPTIMIZE_OUTPUT_VHDL</item>
<item>OUTPUT_DIRECTORY</item>
<item>OUTPUT_LANGUAGE</item>
<item>PAPER_TYPE</item>
<item>PDF_HYPERLINKS</item>
<item>PERLMOD_LATEX</item>
<item>PERLMOD_MAKEVAR_PREFIX</item>
<item>PERLMOD_PRETTY</item>
<item>PERL_PATH</item>
<item>PLANTUML_CFG_FILE</item>
<item>PLANTUML_INCLUDE_PATH</item>
<item>PLANTUML_JAR_PATH</item>
<item>PREDEFINED</item>
<item>PROJECT_BRIEF</item>
<item>PROJECT_ICON</item>
<item>PROJECT_LOGO</item>
<item>PROJECT_NAME</item>
<item>PROJECT_NUMBER</item>
<item>PYTHON_DOCSTRING</item>
<item>QCH_FILE</item>
<item>QHG_LOCATION</item>
<item>QHP_CUST_FILTER_ATTRS</item>
<item>QHP_CUST_FILTER_NAME</item>
<item>QHP_NAMESPACE</item>
<item>QHP_SECT_FILTER_ATTRS</item>
<item>QHP_VIRTUAL_FOLDER</item>
<item>QT_AUTOBRIEF</item>
<item>QUIET</item>
<item>RECURSIVE</item>
<item>REFERENCED_BY_RELATION</item>
<item>REFERENCES_LINK_SOURCE</item>
<item>REFERENCES_RELATION</item>
<item>REPEAT_BRIEF</item>
<item>RESOLVE_UNNAMED_PARAMS</item>
<item>RTF_EXTENSIONS_FILE</item>
<item>RTF_HYPERLINKS</item>
<item>RTF_OUTPUT</item>
<item>RTF_SOURCE_CODE</item>
<item>RTF_STYLESHEET_FILE</item>
<item>SEARCHDATA_FILE</item>
<item>SEARCHENGINE</item>
<item>SEARCHENGINE_URL</item>
<item>SEARCH_INCLUDES</item>
<item>SEPARATE_MEMBER_PAGES</item>
<item>SERVER_BASED_SEARCH</item>
<item>SHORT_NAMES</item>
<item>SHOW_FILES</item>
<item>SHOW_GROUPED_MEMB_INC</item>
<item>SHOW_HEADERFILE</item>
<item>SHOW_INCLUDE_FILES</item>
<item>SHOW_NAMESPACES</item>
<item>SHOW_USED_FILES</item>
<item>SIP_SUPPORT</item>
<item>SITEMAP_URL</item>
<item>SKIP_FUNCTION_MACROS</item>
<item>SORT_BRIEF_DOCS</item>
<item>SORT_BY_SCOPE_NAME</item>
<item>SORT_GROUP_NAMES</item>
<item>SORT_MEMBERS_CTORS_1ST</item>
<item>SORT_MEMBER_DOCS</item>
<item>SOURCE_BROWSER</item>
<item>SOURCE_TOOLTIPS</item>
<item>SQLITE3_RECREATE_DB</item>
<item>STRICT_PROTO_MATCHING</item>
<item>STRIP_CODE_COMMENTS</item>
<item>STRIP_FROM_INC_PATH</item>
<item>STRIP_FROM_PATH</item>
<item>SUBGROUPING</item>
<item>TAB_SIZE</item>
<item>TAGFILES</item>
<item>TCL_SUBST</item>
<item>TEMPLATE_RELATIONS</item>
<item>TIMESTAMP</item>
<item>TOC_EXPAND</item>
<item>TOC_INCLUDE_HEADINGS</item>
<item>TREEVIEW_WIDTH</item>
<item>TYPEDEF_HIDES_STRUCT</item>
<item>UML_LIMIT_NUM_FIELDS</item>
<item>UML_LOOK</item>
<item>USE_HTAGS</item>
<item>USE_MATHJAX</item>
<item>USE_MDFILE_AS_MAINPAGE</item>
<item>USE_PDFLATEX</item>
<item>VERBATIM_HEADERS</item>
<item>WARNINGS</item>
<item>WARN_AS_ERROR</item>
<item>WARN_FORMAT</item>
<item>WARN_IF_DOC_ERROR</item>
<item>WARN_IF_INCOMPLETE_DOC</item>
<item>WARN_IF_UNDOCUMENTED</item>
<item>WARN_IF_UNDOC_ENUM_VAL</item>
<item>WARN_LINE_FORMAT</item>
<item>WARN_LOGFILE</item>
<item>WARN_NO_PARAMDOC</item>
<item>XML_NS_MEMB_FILE_SCOPE</item>
<item>XML_OUTPUT</item>
<item>XML_PROGRAMLISTING</item>
</list>
<contexts>
<context name="doxy" attribute="Error" lineEndContext="#stay">
<keyword attribute="Keyword" String="keywords" context="Assignment"/>
<DetectChar char="#" context="Comment" firstNonSpace="true" />
</context>
<context name="Assignment" attribute="Normal Text" lineEndContext="#pop">
<DetectChar attribute="Assignment" context="Value" char="=" />
</context>
<context name="Value" attribute="UntypedValue" lineEndContext="#pop" >
<WordDetect attribute="ValueYes" insensitive="true" String="YES" />
<WordDetect attribute="ValueNo" insensitive="true" String="NO" />
<RegExpr attribute="Parameter" String="@.*@" />
<DetectChar char="#" context="Comment" />
<LineContinue />
</context>
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
<keyword attribute="KeywordInComment" String="keywords" context="#stay"/>
<DetectSpaces />
<DetectIdentifier />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0" />
<itemData name="Error" defStyleNum="dsError" spellChecking="0" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Assignment" defStyleNum="dsOperator" spellChecking="0" />
<itemData name="ValueYes" defStyleNum="dsOthers" spellChecking="0" />
<itemData name="ValueNo" defStyleNum="dsString" spellChecking="0" />
<itemData name="UntypedValue" defStyleNum="dsDataType" spellChecking="0" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0" />
<itemData name="KeywordInComment" defStyleNum="dsCommentVar" spellChecking="0" />
<itemData name="Parameter" defStyleNum="dsOthers" spellChecking="0" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#" />
</comments>
<keywords casesensitive="0" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
@@ -0,0 +1,629 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY wordsep "(?:[][,?;()]|\.$|\.?\s|$)"> <!-- things that end a TagWord -->
<!ENTITY sl_word ".*?(?=&wordsep;)">
<!ENTITY ml_word ".*?(?=&wordsep;|\*/)">
]>
<language name="Doxygen"
version="15"
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>\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>
</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="TagEnd">
<item>\endcode</item> <item>@endcode</item>
<item>\endverbatim</item> <item>@endverbatim</item>
<item>\endmsc</item> <item>@endmsc</item>
<item>\enddot</item> <item>@enddot</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="##Comments" />
<DetectIdentifier />
<AnyChar attribute="Comment" context="SL_StartTag" String="\@" lookAhead="true" />
<DetectChar attribute="Comment" context="SL_StartHTMLTag" char="&lt;" lookAhead="true" />
<DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />
</context>
<context attribute="Comment" lineEndContext="#stay" name="BlockComment">
<DetectSpaces />
<IncludeRules context="##Comments" />
<DetectIdentifier />
<AnyChar attribute="Comment" context="ML_StartTag" String="\@" lookAhead="true" />
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
<DetectChar attribute="Comment" context="ML_StartHTMLTag" char="&lt;" lookAhead="true" />
<DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />
</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.)
-->
<context attribute="Comment" lineEndContext="#pop" name="ML_StartTag">
<keyword attribute="Tags" context="#pop!ML_TagWord" String="TagWord" />
<keyword attribute="Tags" context="#pop!ML_TagParam" String="TagParam" />
<keyword attribute="Tags" context="#pop!ML_TagWordWord" String="TagWordWord" />
<keyword attribute="Tags" context="#pop!ML_TagString" String="TagString" />
<keyword attribute="Tags" context="#pop!ML_TagWordString" String="TagWordString" />
<WordDetect attribute="Tags" context="#pop!ML_Code" String="\code" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Code" String="@code" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Verbatim" String="\verbatim" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Verbatim" String="@verbatim" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Formula" String="\f[" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Formula" String="@f[" beginRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop!ML_FormulaShort" String="\f$" beginRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop!ML_FormulaShort" String="@f$" beginRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop!ML_FormulaEnv" String="\f{" beginRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop!ML_FormulaEnv" String="@f{" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Msc" String="\msc" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Msc" String="@msc" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Dot" String="\dot" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!ML_Dot" String="@dot" beginRegion="VerbatimBlock" />
<IncludeRules context="Inc_OtherTag" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="ML_StartHTMLTag">
<Detect2Chars attribute="Comment" context="#pop" char="&lt;" char1="&lt;" />
<RegExpr attribute="HTML Tag" context="#pop!ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
<StringDetect attribute="HTML Comment" context="#pop!ML_htmlcomment" String="&lt;!--" />
<DetectChar attribute="Comment" context="#pop" char="&lt;" />
</context>
<!-- tag contexts -->
<context attribute="Comment" lineEndContext="#pop" name="ML_TagWord">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<keyword attribute="Tags" context="#pop!ML_TagWord" String="TagWord" />
<IncludeRules context="ML_Inc_Word" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="ML_TagParam">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[in]" />
<StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[out]" />
<StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[in,out]" />
<IncludeRules context="ML_Inc_Word" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="ML_TagWordWord">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<RegExpr attribute="Word" context="#pop!ML_TagWord" String="&ml_word;" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="ML_TagString">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<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="[&lt;*]?[^&lt;*\s]+" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="ML_TagWordString">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<IncludeRules context="ML_Inc_Word" />
</context>
<context name="ML_Inc_Word" attribute="Word" lineEndContext="#pop">
<RegExpr attribute="Word" context="#pop" String="&ml_word;" />
</context>
<!-- html contexts -->
<context name="ML_htmltag" attribute="Identifier" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
<DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />
<DetectSpaces />
<DetectChar attribute="Identifier" context="ML_identifiers" char="=" />
</context>
<context name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<IncludeRules context="##Comments" />
<DetectIdentifier />
<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
</context>
<context name="ML_identifiers" attribute="Identifier" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<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#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<DetectChar attribute="Types" context="#pop#pop" char="'" />
</context>
<context name="ML_types2" attribute="Types" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="#pop#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />
<DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
</context>
<context name="ML_FindNextLine" attribute="Comment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop!ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
<Detect2Chars attribute="Comment" context="ML_VerbatimPrefix" char="*" char1="*" lookAhead="true" />
<DetectChar attribute="Comment" context="#pop" char="*" />
</context>
<context name="ML_VerbatimPrefix" attribute="Comment" lineEndContext="#stay">
<DetectChar attribute="Comment" context="#pop" char="*" />
</context>
<context name="ML_End_BlockComment" attribute="Comment" lineEndContext="#stay">
<Detect2Chars attribute="Error" context="#pop#pop#pop" char="*" char1="/" endRegion="BlockComment"/>
</context>
<context name="ML_Code" attribute="Code" lineEndContext="ML_FindNextLine">
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
<WordDetect attribute="Tags" context="#pop" String="\endcode" endRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop" String="@endcode" endRegion="VerbatimBlock" />
</context>
<context name="ML_Verbatim" attribute="Verbatim" lineEndContext="ML_FindNextLine">
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
<WordDetect attribute="Tags" context="#pop" String="\endverbatim" endRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop" String="@endverbatim" endRegion="VerbatimBlock" />
</context>
<context name="ML_Formula" attribute="Formulas" lineEndContext="ML_FindNextLine">
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
<StringDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
<!-- TODO: How to force LaTeX math context here?? -->
<!-- <IncludeRules context="##LaTeX" /> -->
</context>
<context name="ML_FormulaShort" attribute="Formulas" lineEndContext="ML_FindNextLine">
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
<StringDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />
<!-- TODO: How to force LaTeX math context here?? -->
<!-- <IncludeRules context="##LaTeX" /> -->
</context>
<context name="ML_FormulaEnv" attribute="Word" lineEndContext="ML_FindNextLine">
<DetectChar attribute="Tags" context="#pop!ML_FormulaEnvStart" char="}" />
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
</context>
<context name="ML_FormulaEnvStart" attribute="Formulas" lineEndContext="ML_FindNextLine" fallthrough="true" fallthroughContext="#pop!ML_FormulaEnvFormula">
<DetectSpaces attribute="Comment" />
<DetectChar attribute="Tags" context="#pop!ML_FormulaEnvFormula" char="{" />
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
</context>
<context name="ML_FormulaEnvFormula" attribute="Formulas" lineEndContext="ML_FindNextLine">
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
<StringDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />
<!-- TODO: How to force LaTeX math context here?? -->
<!-- <IncludeRules context="##LaTeX" /> -->
</context>
<context name="ML_Msc" attribute="Message Sequence Chart" lineEndContext="ML_FindNextLine">
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
<WordDetect attribute="Tags" context="#pop" String="\endmsc" endRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop" String="@endmsc" endRegion="VerbatimBlock" />
</context>
<context name="ML_Dot" attribute="Dot Graph" lineEndContext="ML_FindNextLine">
<Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
<WordDetect attribute="Tags" context="#pop" String="\enddot" endRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop" String="@enddot" endRegion="VerbatimBlock" />
</context>
<!-- NOTE: all contexts beginning with SL_ are for singleline comments -->
<context attribute="Comment" lineEndContext="#pop" name="SL_StartTag">
<keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />
<keyword attribute="Tags" context="#pop!SL_TagParam" String="TagParam" />
<keyword attribute="Tags" context="#pop!SL_TagWordWord" String="TagWordWord" />
<keyword attribute="Tags" context="#pop!SL_TagString" String="TagString" />
<keyword attribute="Tags" context="#pop!SL_TagWordString" String="TagWordString" />
<WordDetect attribute="Tags" context="#pop!SL_Code" String="\code" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Code" String="@code" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="\verbatim" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="@verbatim" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Formula" String="\f[" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Formula" String="@f[" beginRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="\f$" beginRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="@f$" beginRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="\f{" beginRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="@f{" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Msc" String="\msc" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Msc" String="@msc" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Dot" String="\dot" beginRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop!SL_Dot" String="@dot" beginRegion="VerbatimBlock" />
<IncludeRules context="Inc_OtherTag" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="SL_StartHTMLTag">
<Detect2Chars attribute="Comment" context="#pop" char="&lt;" char1="&lt;" />
<RegExpr attribute="HTML Tag" context="#pop!SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
<StringDetect attribute="HTML Comment" context="#pop!SL_htmlcomment" String="&lt;!--" />
<DetectChar attribute="Comment" context="#pop" char="&lt;" />
</context>
<!-- tag contexts -->
<context attribute="Comment" lineEndContext="#pop" name="SL_TagWord">
<DetectSpaces />
<keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />
<IncludeRules context="SL_Inc_Word" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="SL_TagParam">
<DetectSpaces />
<StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in]" />
<StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[out]" />
<StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in,out]" />
<IncludeRules context="SL_Inc_Word" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord">
<DetectSpaces />
<RegExpr attribute="Word" context="#pop!SL_TagWord" String="&sl_word;" />
</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="&lt;?[^&lt;\s]+" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString">
<DetectSpaces />
<IncludeRules context="SL_Inc_Word" />
</context>
<context name="SL_Inc_Word" attribute="Word" lineEndContext="#pop">
<RegExpr attribute="Word" context="#pop" String="&sl_word;" />
</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;" />
<DetectSpaces />
<DetectChar attribute="Identifier" context="SL_identifiers" char="=" />
</context>
<context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop">
<DetectSpaces />
<IncludeRules context="##Comments" />
<DetectIdentifier />
<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
</context>
<context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop">
<DetectSpaces />
<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 name="SL_FindNextLine" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
<DetectSpaces />
<StringDetect attribute="Comment" context="#pop" String="///" />
<StringDetect attribute="Comment" context="#pop" String="//!" />
<RegExpr attribute="Comment" context="#pop#pop#pop" String="." lookAhead="true" endRegion="VerbatimBlock" />
</context>
<context name="SL_Code" attribute="Code" lineEndContext="SL_FindNextLine">
<WordDetect attribute="Tags" context="#pop" String="\endcode" endRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop" String="@endcode" endRegion="VerbatimBlock" />
</context>
<context name="SL_Verbatim" attribute="Verbatim" lineEndContext="SL_FindNextLine">
<WordDetect attribute="Tags" context="#pop" String="\endverbatim" endRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop" String="@endverbatim" endRegion="VerbatimBlock" />
</context>
<context name="SL_Formula" attribute="Formulas" lineEndContext="SL_FindNextLine">
<StringDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
<!-- TODO: How to force LaTeX math context here?? -->
<!-- <IncludeRules context="##LaTeX" /> -->
</context>
<context name="SL_FormulaShort" attribute="Formulas" lineEndContext="SL_FindNextLine">
<StringDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />
<!-- TODO: How to force LaTeX math context here?? -->
<!-- <IncludeRules context="##LaTeX" /> -->
</context>
<context name="SL_FormulaEnv" attribute="Word" lineEndContext="SL_FindNextLine">
<DetectChar attribute="Tags" context="#pop!SL_FormulaEnvStart" char="}" />
</context>
<context name="SL_FormulaEnvStart" attribute="Formulas" lineEndContext="SL_FindNextLine" fallthrough="true" fallthroughContext="#pop!SL_FormulaEnvFormula">
<DetectSpaces attribute="Comment" />
<DetectChar attribute="Tags" context="#pop!SL_FormulaEnvFormula" char="{" />
</context>
<context name="SL_FormulaEnvFormula" attribute="Formulas" lineEndContext="SL_FindNextLine">
<StringDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />
<StringDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />
<!-- TODO: How to force LaTeX math context here?? -->
<!-- <IncludeRules context="##LaTeX" /> -->
</context>
<context name="SL_Msc" attribute="Message Sequence Chart" lineEndContext="SL_FindNextLine">
<WordDetect attribute="Tags" context="#pop" String="\endmsc" endRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop" String="@endmsc" endRegion="VerbatimBlock" />
</context>
<context name="SL_Dot" attribute="Dot Graph" lineEndContext="SL_FindNextLine">
<WordDetect attribute="Tags" context="#pop" String="\enddot" endRegion="VerbatimBlock" />
<WordDetect attribute="Tags" context="#pop" String="@enddot" endRegion="VerbatimBlock" />
</context>
<context name="Entities" attribute="Word" lineEndContext="#stay">
<RegExpr attribute="Entities" context="#pop" String="&amp;[A-Za-z]+&#59;" />
<DetectChar attribute="Comment" context="#pop" char="&amp;" />
</context>
<context name="Inc_OtherTag" attribute="Comment" lineEndContext="#pop">
<keyword attribute="Note" context="#pop" String="Note" />
<keyword attribute="Warning" context="#pop" String="Warning" />
<keyword attribute="Attention" context="#pop" String="Attention" />
<keyword attribute="Todo" context="#pop" String="Todo" />
<keyword attribute="Tags" context="#pop" String="TagOnly" />
<Detect2Chars attribute="Region" context="#pop" char="@" char1="{" beginRegion="Group" />
<Detect2Chars attribute="Region" context="#pop" char="@" char1="}" endRegion="Group" />
<Detect2Chars attribute="Tags" context="#pop!LanguageId" char="\" char1="~" />
<Detect2Chars attribute="Tags" context="#pop!LanguageId" char="@" char1="~" />
<keyword attribute="Error" context="#pop" String="TagEnd" />
<RegExpr attribute="Error" context="#pop" String="[@\\]f[]}]" />
<RegExpr attribute="Escape sequence" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.~=|]|::|---?)" />
<RegExpr attribute="Custom Tags" context="#pop" String="[@\\](?:[^@\\ \t\*]|\*(?!/))+" />
<AnyChar attribute="Comment" context="#pop" String="\@" />
</context>
<context name="LanguageId" attribute="Word" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectIdentifier />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Escape sequence" defStyleNum="dsSpecialChar" />
<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" 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" />
<itemData name="Error" defStyleNum="dsError" />
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" weakDeliminator="\$" />
</general>
</language>
<!-- kate: indent-width 2; -->
@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE language[
<!ENTITY nmtoken "[\-\w\d\.:_]+">
<!ENTITY entref "(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);">
]>
<language name="DTD" version="4" kateversion="5.0" 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="##Comments" />
<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="##Comments" />
<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;" region="comment" />
</comments>
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
@@ -0,0 +1,262 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="E Language" version="5" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-e-src">
<highlighting>
<list name="Type">
<item>FALSE</item>
<item>MAX_INT</item>
<item>MIN_INT</item>
<item>NULL</item>
<item>TRUE</item>
<item>UNDEF</item>
<item>bit</item>
<item>bits</item>
<item>body</item>
<item>bool</item>
<item>byte</item>
<item>byte_array</item>
<item>continue</item>
<item>copy</item>
<item>default</item>
<item>external_pointer</item>
<item>files</item>
<item>file</item>
<item>form</item>
<item>global</item>
<item>index</item>
<item>init</item>
<item>int</item>
<item>it</item>
<item>list</item>
<item>load</item>
<item>long</item>
<item>me</item>
<item>method</item>
<item>module</item>
<item>ntv</item>
<item>of</item>
<item>pat</item>
<item>print</item>
<item>result</item>
<item>source_ref</item>
<item>string</item>
<item>symtab</item>
<item>sys</item>
<item>test</item>
<item>uint</item>
<item>untyped</item>
<item>vec</item>
</list>
<list name="Function">
<item>run</item>
<item>init</item>
<item>pre_generate</item>
<item>dut_error</item>
<item>pack</item>
<item>unpack</item>
<item>post_generate</item>
<item>pre_generate</item>
<item>set_config</item>
<item>hex</item>
<item>stop_run</item>
<item>append</item>
<item>size</item>
<item>delete</item>
<item>is_empty</item>
<item>deep_compare</item>
<item>deep_compare_physical</item>
<item>clear</item>
<item>pop0</item>
<item>setup</item>
<item>crc_32</item>
</list>
<list name="Statement">
<item>chars</item>
<item>define</item>
<item>extend</item>
<item>event</item>
<item>ECHO</item>
<item>DOECHO</item>
<item>import</item>
<item>initialize</item>
<item>non_terminal</item>
<item>struct</item>
<item>unit</item>
<item>script</item>
<item>testgroup</item>
<item>type</item>
</list>
<list name="Action">
<item>C</item>
<item>add</item>
<item>also</item>
<item>and</item>
<item>as</item>
<item>as_a</item>
<item>break</item>
<item>code</item>
<item>compute</item>
<item>computed</item>
<item>delayed</item>
<item>do</item>
<item>else</item>
<item>each</item>
<item>emit</item>
<item>empty</item>
<item>end</item>
<item>exit</item>
<item>finish</item>
<item>for</item>
<item>from</item>
<item>if</item>
<item>in</item>
<item>is</item>
<item>like</item>
<item>log</item>
<item>new</item>
<item>no</item>
<item>not</item>
<item>only</item>
<item>or</item>
<item>out</item>
<item>read</item>
<item>repeat</item>
<item>return</item>
<item>reverse</item>
<item>routine</item>
<item>step</item>
<item>then</item>
<item>to</item>
<item>traceable</item>
<item>untraceable</item>
<item>var</item>
<item>when</item>
<item>while</item>
<item>with</item>
<item>write</item>
<item>xor</item>
</list>
<list name="Generation">
<item>before</item>
<item>by</item>
<item>choose</item>
<item>gen</item>
<item>keep</item>
<item>keeping</item>
<item>matches</item>
<item>next</item>
<item>select</item>
<item>sequence</item>
<item>soft</item>
<item>using</item>
</list>
<list name="Cover">
<item>address</item>
<item>cover</item>
<item>error</item>
<item>events</item>
<item>event</item>
<item>length</item>
<item>kind</item>
<item>ranges</item>
<item>range</item>
<item>sample</item>
<item>text</item>
<item>value</item>
<item>item</item>
<item>transition</item>
<item>illegal</item>
</list>
<list name="Simulator">
<item>always</item>
<item>all</item>
<item>basic</item>
<item>call</item>
<item>cycles</item>
<item>cycle</item>
<item>clock</item>
<item>change</item>
<item>check</item>
<item>expect</item>
<item>fall</item>
<item>first</item>
<item>forever</item>
<item>idle</item>
<item>initial</item>
<item>negedge</item>
<item>others</item>
<item>on</item>
<item>posedge</item>
<item>rise</item>
<item>start</item>
<item>that</item>
<item>time</item>
<item>task</item>
<item>until</item>
<item>verilog</item>
<item>vhdl</item>
<item>wait</item>
<item>within</item>
</list>
<contexts>
<context name="out_comment" attribute="OutSide E code" lineEndContext="#stay">
<Detect2Chars attribute="Normal Text" context="normal" char="&lt;" char1="'" />
</context>
<context name="normal" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Operators" context="#stay" char="{" beginRegion="Region1"/>
<DetectChar attribute="Operators" context="#stay" char="}" endRegion="Region1"/>
<HlCHex attribute="Integer" context="#stay" />
<HlCOct attribute="Integer" context="#stay" />
<Int attribute="Integer" context="#stay" />
<Detect2Chars attribute="Normal Text" context="out_comment" char="'" char1="&gt;" />
<Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
<Detect2Chars attribute="Comment" context="comment" char="/" char1="/" />
<DetectChar attribute="Vector" context="string" char="&quot;" />
<AnyChar attribute="Operators" context="#stay" String="'[&amp;&gt;&lt;=:+\-*\|].,;" />
<keyword attribute="Data Type" context="#stay" String="Type"/>
<keyword attribute="Function" context="#stay" String="Function"/>
<keyword attribute="Statement" context="#stay" String="Statement"/>
<keyword attribute="Action" context="#stay" String="Action"/>
<keyword attribute="Keyword" context="#stay" String="Generation"/>
<keyword attribute="Keyword" context="#stay" String="Cover"/>
<keyword attribute="Keyword" context="#stay" String="Simulator"/>
</context>
<context name="comment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces />
<IncludeRules context="##Comments" />
</context>
<context name="string" attribute="Vector" lineEndContext="#stay" >
<DetectChar attribute="Vector" context="#pop" char="&quot;" />
</context>
</contexts>
<itemDatas>
<itemData name="OutSide E code" defStyleNum="dsComment"/>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Keyword" defStyleNum="dsKeyword" />
<itemData name="Function" defStyleNum="dsFunction" bold="1"/>
<itemData name="Statement" defStyleNum="dsBuiltIn" bold="1" italic="0" />
<itemData name="Action" defStyleNum="dsExtension" bold="1" italic="0" />
<itemData name="Data Type" defStyleNum="dsDataType" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Integer" defStyleNum="dsDecVal" />
<itemData name="Vector" defStyleNum="dsString" />
<itemData name="Operators" defStyleNum="dsOperator" bold="0" italic="0" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->

Some files were not shown because too many files have changed in this diff Show More