summaryrefslogtreecommitdiff
path: root/tools/quickbook/extra/katepart/syntax/boost_hs_quickbook.xml
diff options
context:
space:
mode:
Diffstat (limited to 'tools/quickbook/extra/katepart/syntax/boost_hs_quickbook.xml')
-rw-r--r--tools/quickbook/extra/katepart/syntax/boost_hs_quickbook.xml736
1 files changed, 736 insertions, 0 deletions
diff --git a/tools/quickbook/extra/katepart/syntax/boost_hs_quickbook.xml b/tools/quickbook/extra/katepart/syntax/boost_hs_quickbook.xml
new file mode 100644
index 0000000000..b043cfbe84
--- /dev/null
+++ b/tools/quickbook/extra/katepart/syntax/boost_hs_quickbook.xml
@@ -0,0 +1,736 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language
+
+name="quickbook"
+version="0.9.4"
+kateversion="2.4"
+section="boost::hs"
+extensions="*.qbk"
+mimetype="allFiles"
+author="Copyright 2006 -2007 Matias Capeletto, matias.capeletto@gmail.com"
+license="Distributed under the Boost Software License, Version 1.0.
+http://www.boost.org/LICENSE_1_0.txt"
+
+>
+
+<highlighting>
+
+<!-- Contexts -->
+
+<contexts>
+
+<!--
+ Main context
+ This is bottom the context, every thing the user type will stack another
+ context. This context is special because some things can only be called
+ from here. (e.g. The quickbook description)
+-->
+
+<context name="c_main" attribute="d_normal" lineEndContext="#stay">
+
+ <IncludeRules context="c_main_before_code" />
+ <IncludeRules context="c_cpp_code_block_finder" />
+ <IncludeRules context="c_main_after_code" />
+ <IncludeRules context="c_normal" />
+
+</context>
+
+<context name="c_main_before_code" attribute="d_normal" lineEndContext="#stay">
+
+ <IncludeRules context="c_sections_finder" />
+ <IncludeRules context="c_predefined_macros" />
+ <IncludeRules context="c_boost::hs call finder" />
+ <IncludeRules context="c_item_list_finder" />
+
+</context>
+
+<context name="c_main_after_code" attribute="d_normal" lineEndContext="#stay">
+
+ <IncludeRules context="c_scape_sequence_finder" />
+ <IncludeRules context="c_headings_finder" />
+ <IncludeRules context="c_includes_finder" />
+ <IncludeRules context="c_macro_definition_finder" />
+ <IncludeRules context="c_template_definition_finder" />
+ <IncludeRules context="c_quickbook_type_finder" />
+ <IncludeRules context="c_text_block_finder" />
+ <IncludeRules context="c_table_finder" />
+ <IncludeRules context="c_variable_list_finder" />
+ <IncludeRules context="c_import_finder" />
+
+</context>
+
+<!-- Common Structures, this constructions can be called in almost every context -->
+
+<context name="c_common_structures" attribute="d_normal" lineEndContext="#stay">
+
+ <DetectSpaces/>
+ <IncludeRules context="c_common_structures_before_code" />
+ <IncludeRules context="c_cpp_inline_code_block_finder" />
+ <IncludeRules context="c_common_structures_after_code" />
+
+</context>
+
+<context name="c_common_structures_before_code" attribute="d_normal" lineEndContext="#stay">
+
+ <DetectSpaces/>
+ <IncludeRules context="c_scape_sequence_finder" />
+ <IncludeRules context="c_predefined_macros" />
+ <IncludeRules context="c_language_finder" />
+ <IncludeRules context="c_comment_finder" />
+ <IncludeRules context="c_boost::hs call finder" />
+ <IncludeRules context="c_no_processing_finder" />
+
+</context>
+
+<context name="c_common_structures_after_code" attribute="d_normal" lineEndContext="#stay">
+
+ <IncludeRules context="c_anchor_finder" />
+ <IncludeRules context="c_image_finder" />
+ <IncludeRules context="c_link_finder" />
+ <IncludeRules context="c_cpp_link_finder" />
+ <IncludeRules context="c_text_format_finder" />
+
+</context>
+
+<!-- Normal contex, defines plain text and look for a structure to appear -->
+
+<context name="c_normal" attribute="d_normal" lineEndContext="#stay">
+
+ <!-- For performance the [endsect] resets the engine -->
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop#pop" endRegion="r_section"/>
+
+ <IncludeRules context="c_common_structures" />
+ <IncludeRules context="c_simple_text_block_finder" />
+
+</context>
+
+<!-- Inside tables and list, you can not use every construction -->
+
+<context name="c_strict_normal" attribute="d_normal" lineEndContext="#stay">
+
+ <!-- For performance the [endsect] resets the engine -->
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop#pop" endRegion="r_section"/>
+
+ <IncludeRules context="c_common_structures" />
+
+</context>
+
+<!-- Normal block contexs, this contexts will be stacked so we can know the state -->
+
+<context name="c_normal_block" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_normal" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_bold_block" attribute="d_normal_bold" lineEndContext="#stay">
+ <IncludeRules context="c_normal" />
+
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_indirect_normal_block" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_normal" />
+
+ <DetectChar char="]" attribute="d_structure" context="#pop#pop" />
+</context>
+
+<context name="c_deep_normal_block" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_normal" />
+ <DetectChar char="]" attribute="d_structure" context="#pop#pop#pop" />
+</context>
+
+<context name="c_indirect_normal_bold_block" attribute="d_normal_bold" lineEndContext="#stay">
+ <IncludeRules context="c_normal" />
+
+ <DetectChar char="]" attribute="d_structure" context="#pop#pop" />
+</context>
+
+<!-- Blocks used in macros and templates bodies -->
+
+<context name="c_indirect_main_block" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_main" />
+
+ <DetectChar char="]" attribute="d_structure" context="#pop#pop" />
+</context>
+
+<context name="c_deep_main_block" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_main" />
+ <DetectChar char="]" attribute="d_structure" context="#pop#pop#pop" />
+</context>
+
+<!-- No processing block -->
+
+<context name="c_no_processing_block" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_predefined_macros" />
+ <StringDetect String="'''" attribute="d_structure" context="#pop" endRegion="r_no_processing"/>
+</context>
+
+<context name="c_no_processing_finder" attribute="d_normal" lineEndContext="#stay">
+ <StringDetect String="'''" attribute="d_structure" context="c_no_processing_block" beginRegion="r_no_processing"/>
+</context>
+
+<!-- Items list finder -->
+
+<context name="c_item_list" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="^\s*[\*\#]\s" minimal="true" attribute="d_structure" context="c_item_list"/>
+ <RegExpr String="^." minimal="true" attribute="d_structure" lookAhead="true" context="#pop"/>
+ <IncludeRules context="c_strict_normal" />
+</context>
+
+<context name="c_item_list_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="^\s*[\*\#]\s" minimal="true" attribute="d_structure" context="c_item_list"/>
+</context>
+
+<!-- Code blocks -->
+
+<context name="c_back_to_quickbook_block" attribute="d_normal" lineEndContext="#stay">
+ <Detect2Chars char="`" char1="`" attribute="d_structure" context="#pop" />
+ <IncludeRules context="c_strict_normal" />
+</context>
+
+<context name="c_code_block" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="^[\S]" minimal="true" attribute="d_structure" lookAhead="true" context="#pop" />
+ <Detect2Chars char="`" char1="`" attribute="d_structure" context="c_back_to_quickbook_block" />
+ <IncludeRules context="c_predefined_macros" />
+ <IncludeRules context="##C++" />
+</context>
+
+<context name="c_preformated_code_block" attribute="d_normal" lineEndContext="#stay">
+ <Detect2Chars char="`" char1="`" attribute="d_structure" context="#pop" endRegion="r_code_block" />
+ <IncludeRules context="c_predefined_macros" />
+ <IncludeRules context="##C++" />
+</context>
+
+<context name="c_inline_code_block" attribute="d_normal" lineEndContext="#stay">
+ <DetectChar char="`" attribute="d_structure" context="#pop" />
+ <IncludeRules context="c_predefined_macros" />
+ <IncludeRules context="##C++"/>
+</context>
+
+<context name="c_cpp_code_block_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="^[\s]" minimal="true" attribute="d_structure" context="c_code_block" />
+</context>
+
+<context name="c_cpp_inline_code_block_finder" attribute="d_normal" lineEndContext="#stay">
+ <Detect2Chars char="`" char1="`" attribute="d_structure" context="c_preformated_code_block" beginRegion="r_code_block" />
+ <DetectChar char="`" attribute="d_structure" context="c_inline_code_block" />
+</context>
+
+<context name="c_language_finder" attribute="d_normal" lineEndContext="#stay">
+ <StringDetect String="[c++]" attribute="d_structure" context="#stay" />
+ <StringDetect String="[python]" attribute="d_structure" context="#stay" />
+</context>
+
+<!-- Sections and Headings -->
+
+<context name="c_section_definition" attribute="d_anchor" lineEndContext="#stay">
+ <DetectChar char=" " attribute="d_structure" context="c_indirect_normal_bold_block" />
+</context>
+
+<context name="c_sections_finder" attribute="d_normal" lineEndContext="#stay">
+ <StringDetect String="[section" attribute="d_structure" context="c_section_definition" beginRegion="r_section" />
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop" endRegion="r_section"/>
+</context>
+
+<context name="c_headings_finder" attribute="d_normal" lineEndContext="#stay">
+ <StringDetect String="[heading" minimal="true" attribute="d_structure" context="c_normal_bold_block" />
+ <RegExpr String="\[h[1-6]\b" minimal="true" attribute="d_structure" context="c_normal_bold_block" />
+</context>
+
+
+<!-- Macros -->
+
+<context name="c_macro_definition" attribute="d_macro" lineEndContext="c_indirect_main_block">
+ <RegExpr String="\s" minimal="true" attribute="d_structure" context="c_indirect_main_block" />
+</context>
+
+<context name="c_predefined_macros" attribute="d_macro">
+ <RegExpr String="[_]{2}[\w_]+[_]{2}" minimal="true" attribute="d_macro" context="#stay" />
+</context>
+
+<context name="c_macro_definition_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="\[def\b[\s]*" attribute="d_structure" context="c_macro_definition" />
+</context>
+
+
+<!-- Templates -->
+
+<context name="c_template_parameters" attribute="d_path" lineEndContext="#stay">
+ <DetectChar char="]" attribute="d_structure" context="c_deep_main_block" />
+</context>
+
+<context name="c_template_definition" attribute="d_macro" lineEndContext="c_indirect_main_block">
+ <DetectChar char="[" attribute="d_structure" context="c_template_parameters" />
+ <RegExpr String="\\\s" minimal="true" attribute="d_structure" context="c_indirect_main_block"/>
+ <RegExpr String="\s" minimal="true" attribute="d_structure" context="c_indirect_main_block" />
+</context>
+
+<context name="c_template_definition_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="\[template\b[\s]*" attribute="d_structure" context="c_template_definition" />
+</context>
+
+<!-- Text format logic -->
+
+<context name="c_text_format_finder" attribute="d_normal">
+ <Detect2Chars char="[" char1="*" attribute="d_structure" context="c_normal_bold" />
+ <Detect2Chars char="[" char1="'" attribute="d_structure" context="c_normal_italic" />
+ <Detect2Chars char="[" char1="_" attribute="d_structure" context="c_normal_underline" />
+ <Detect2Chars char="[" char1="-" attribute="d_structure" context="c_normal_strikeout" />
+ <Detect2Chars char="[" char1="^" attribute="d_structure" context="c_normal_teletype" />
+ <Detect2Chars char="[" char1="~" attribute="d_structure" context="c_normal_replaceable" />
+ <RegExpr String="(?=(^|\W))[\*][\S][^\[\]]*[\S]?[\*](?=($|\W))" minimal="true" attribute="d_normal_bold" context="#stay" />
+ <RegExpr String="(?=(^|\W))[/][\S][^\[\]]*[\S]?[/](?=($|\W))" minimal="true" attribute="d_normal_italic" context="#stay" />
+ <RegExpr String="(?=(^|\W))[_][\S][^\[\]]*[\S]?[_](?=($|\W))" minimal="true" attribute="d_normal_underline" context="#stay" />
+ <RegExpr String="(?=(^|\W))[=][\S][^\[\]]*[\S]?[=](?=($|\W))" minimal="true" attribute="d_normal_teletype" context="#stay" />
+</context>
+
+<context name="c_normal_bold" attribute="d_normal_bold" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <Detect2Chars char="[" char1="*" attribute="d_structure" context="c_normal_bold" />
+ <Detect2Chars char="[" char1="'" attribute="d_structure" context="c_normal_bold_italic" />
+ <Detect2Chars char="[" char1="_" attribute="d_structure" context="c_normal_bold_underline" />
+ <RegExpr String="(?=(^|\W))[/][\S][^\[\]]*[\S]?[/](?=($|\W))" minimal="true" attribute="d_normal_bold_italic" context="#stay" />
+ <RegExpr String="(?=(^|\W))[_][\S][^\[\]]*[\S]?[_](?=($|\W))" minimal="true" attribute="d_normal_bold_underline" context="#stay" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_italic" attribute="d_normal_italic" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <Detect2Chars char="[" char1="*" attribute="d_structure" context="c_normal_bold_italic" />
+ <Detect2Chars char="[" char1="_" attribute="d_structure" context="c_normal_italic_underline" />
+ <RegExpr String="(?=(^|\W))[\*][\S][^\[\]]*[\S]?[\*](?=($|\W))" minimal="true" attribute="d_normal_bold_italic" context="#stay" />
+ <RegExpr String="(?=(^|\W))[_][\S][^\[\]]*[\S]?[_](?=($|\W))" minimal="true" attribute="d_normal_italic_underline" context="#stay" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_underline" attribute="d_normal_underline" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <Detect2Chars char="[" char1="*" attribute="d_structure" context="c_normal_bold_underline" />
+ <Detect2Chars char="[" char1="'" attribute="d_structure" context="c_normal_italic_underline" />
+ <Detect2Chars char="[" char1="_" attribute="d_structure" context="c_normal_underline" />
+ <RegExpr String="(?=(^|\W))[\*][\S][^\[\]]*[\S]?[\*](?=($|\W))" minimal="true" attribute="d_normal_bold_underline" context="#stay" />
+ <RegExpr String="(?=(^|\W))[/][\S][^\[\]]*[\S]?[/](?=($|\W))" minimal="true" attribute="d_normal_italic_underline" context="#stay" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_bold_italic" attribute="d_normal_bold_italic" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <Detect2Chars char="[" char1="*" attribute="d_structure" context="c_normal_bold_italic" />
+ <Detect2Chars char="[" char1="'" attribute="d_structure" context="c_normal_bold_italic" />
+ <Detect2Chars char="[" char1="_" attribute="d_structure" context="c_normal_bold_italic_underline" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_bold_underline" attribute="d_normal_bold_underline" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <Detect2Chars char="[" char1="*" attribute="d_structure" context="c_normal_bold_underline" />
+ <Detect2Chars char="[" char1="'" attribute="d_structure" context="c_normal_bold_italic_underline" />
+ <Detect2Chars char="[" char1="_" attribute="d_structure" context="c_normal_bold_underline" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_italic_underline" attribute="d_normal_italic_underline" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <Detect2Chars char="[" char1="*" attribute="d_structure" context="c_normal_bold_italic_underline" />
+ <Detect2Chars char="[" char1="'" attribute="d_structure" context="c_normal_italic_underline" />
+ <Detect2Chars char="[" char1="_" attribute="d_structure" context="c_normal_italic_underline" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_bold_italic_underline" attribute="d_normal_bold_italic_underline" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <Detect2Chars char="[" char1="*" attribute="d_structure" context="c_normal_bold_italic_underline" />
+ <Detect2Chars char="[" char1="'" attribute="d_structure" context="c_normal_bold_italic_underline" />
+ <Detect2Chars char="[" char1="_" attribute="d_structure" context="c_normal_bold_italic_underline" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_strikeout" attribute="d_normal_strikeout" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_teletype" attribute="d_normal_teletype" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_normal_replaceable" attribute="d_normal_ replaceable" lineEndContext="#stay">
+ <IncludeRules context="c_common_structures" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<!-- Links -->
+
+<context name="c_link" attribute="d_anchor" lineEndContext="c_indirect_normal_block">
+ <RegExpr String="\s" minimal="true" attribute="d_structure" context="c_indirect_normal_block" />
+</context>
+
+<context name="c_web_link" attribute="d_path" lineEndContext="c_indirect_normal_block">
+ <RegExpr String="\s" minimal="true" attribute="d_structure" context="c_indirect_normal_block" />
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_link_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="\[link\b[\s]*" attribute="d_structure" context="c_link" />
+ <Detect2Chars char="[" char1="@" attribute="d_structure" context="c_web_link" />
+</context>
+
+<context name="c_cpp_link_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="\[(funcref|classref|memberref|enumref|headerref)\b[\s]*" attribute="d_structure" context="c_link" />
+</context>
+
+<!-- Anchors -->
+
+<context name="c_anchor" attribute="d_anchor" lineEndContext="#stay">
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_anchor_finder" attribute="d_normal" lineEndContext="#stay">
+ <Detect2Chars char="[" char1="#" attribute="d_structure" context="c_anchor" />
+</context>
+
+<!-- Images -->
+
+<context name="c_image" attribute="d_path" lineEndContext="#stay">
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_image_finder" attribute="d_normal" lineEndContext="#stay">
+ <Detect2Chars char="[" char1="$" attribute="d_structure" context="c_image" />
+</context>
+
+<!-- Comments -->
+
+<context name="c_comment" attribute="d_comment" lineEndContext="#stay">
+
+ <!-- For performance the [endsect] resets the engine -->
+ <!-- Is this the best approach here? -->
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop#pop" endRegion="r_section"/>
+
+ <DetectChar char="[" attribute="d_structure" context="c_comment" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" endRegion="r_comment" />
+</context>
+
+<context name="c_comment_finder" >
+ <Detect2Chars char="[" char1="/" attribute="d_structure" context="c_comment" beginRegion="r_comment" />
+</context>
+
+<!-- Scape sequences -->
+
+<context name="c_scape_sequence_finder" attribute="d_normal" lineEndContext="#stay">
+ <DetectChar char="\" attribute="d_structure" context="c_scape_character" />
+</context>
+
+<context name="c_scape_character" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="." minimal="true" attribute="d_normal" context="#pop" />
+</context>
+
+<!-- Text blocks -->
+
+<context name="c_normal_text_block" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_strict_normal" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" endRegion="r_text_block"/>
+</context>
+
+<context name="c_text_block_finder" attribute="d_normal" lineEndContext="#stay">
+ <Detect2Chars char="[" char1=":" attribute="d_structure" context="c_normal_text_block" beginRegion="r_text_block" />
+ <RegExpr String="[\[][\x0022]" minimal="true" attribute="d_structure" context="c_normal_text_block" beginRegion="r_text_block"/>
+ <RegExpr String="\[(pre|footnote|blurb|warning|note|tip|important|pre|caution)(\b|\W|$)" minimal="true" attribute="d_structure" context="c_normal_text_block" beginRegion="r_text_block"/>
+</context>
+
+
+<context name="c_simple_text_block" attribute="d_anchor" lineEndContext="#stay">
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+ <RegExpr String="\s" minimal="true" attribute="d_structure" context="c_indirect_normal_block" />
+</context>
+
+<context name="c_simple_text_block_finder" attribute="d_normal" lineEndContext="#stay">
+ <DetectChar char="[" attribute="d_structure" context="c_simple_text_block" />
+</context>
+
+<!-- Includes -->
+
+<context name="c_included_path" attribute="d_path" lineEndContext="#stay">
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop#pop" />
+</context>
+
+<context name="c_include" attribute="d_anchor" lineEndContext="#stay">
+ <RegExpr String="\s" minimal="true" attribute="d_structure" context="c_included_path" />
+</context>
+
+<context name="c_includes_finder" attribute="d_normal" lineEndContext="#stay">
+ <StringDetect String="[include" attribute="d_structure" context="c_include" />
+ <StringDetect String="[xinclude" attribute="d_structure" context="c_include" />
+</context>
+
+<!-- Import -->
+
+<context name="c_import_path" attribute="d_path" lineEndContext="#stay">
+ <IncludeRules context="c_simple_text_block_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_import_finder" attribute="d_normal" lineEndContext="#stay">
+ <StringDetect String="[import" attribute="d_structure" context="c_import_path" />
+</context>
+
+<!-- Document Type logic -->
+
+<context name="c_quickbook_type_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="\[(book|article|library|chapter|part|appendix|preface|qandadiv|qandaset|reference|set)\b" minimal="true" attribute="d_structure" context="c_documment_definition" beginRegion="r_documment_definition" />
+</context>
+
+<context name="c_documment_definition" attribute="d_normal_bold" lineEndContext="#stay">
+ <IncludeRules context="c_quickbook_attribute_finder" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" endRegion="r_documment_definition"/>
+</context>
+
+<context name="c_quickbook_attribute_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="\[(quickbook|version|id|dirname|copyright|purpose|category|authors|license|source\-mode)\b" minimal="true" attribute="d_structure" context="c_normal_block" />
+
+</context>
+
+<!-- Tables
+
+ [table A Simple Table
+ [[Heading 1] [Heading 2] [Heading 3]]
+ [[R0-C0] [R0-C1] [R0-C2]]
+ [[R1-C0] [R1-C1] [R1-C2]]
+ [[R2-C0] [R2-C1] [R2-C2]]] -->
+
+<context name="c_table" attribute="d_normal_bold" lineEndContext="#stay">
+ <IncludeRules context="c_strict_normal" />
+ <DetectChar char="[" attribute="d_structure" context="c_table_title_row" />
+</context>
+
+<context name="c_table_title_row" attribute="d_nop" lineEndContext="#stay">
+
+ <!-- For performance the [endsect] resets the engine -->
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop#pop" endRegion="r_section"/>
+
+ <DetectChar char="[" attribute="d_structure" context="c_table_title_cell" />
+ <DetectChar char="]" attribute="d_structure" context="c_table_body" />
+</context>
+
+<context name="c_table_title_cell" attribute="d_table_title_cell" lineEndContext="#stay">
+ <IncludeRules context="c_strict_normal" />
+
+ <DetectChar char="[" attribute="d_structure" context="c_table_cell" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_table_body" attribute="d_nop" lineEndContext="#stay">
+
+ <!-- For performance the [endsect] resets the engine -->
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop#pop" endRegion="r_section"/>
+
+ <DetectChar char="[" attribute="d_structure" context="c_table_row" />
+ <DetectChar char="]" attribute="d_structure" context="#pop#pop#pop" endRegion="r_table"/>
+</context>
+
+<context name="c_table_row" attribute="d_nop" lineEndContext="#stay">
+
+ <!-- For performance the [endsect] resets the engine -->
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop#pop" endRegion="r_section"/>
+
+ <DetectChar char="[" attribute="d_structure" context="c_table_cell" />
+
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_table_cell" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_normal" />
+ <RegExpr String="Row[\s]+[\d]+[\s]*,[\s]*Col[\s]+[\d]+[\s]*:" minimal="true" attribute="d_structure" context="#stay" />
+ <!--DetectChar char="[" attribute="d_structure" context="c_table_cell" /-->
+ <DetectChar char="]" attribute="d_structure" context="#pop" />
+</context>
+
+<context name="c_table_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="\[table\b" minimal="true" attribute="d_structure" context="c_table" beginRegion="r_table" />
+</context>
+
+<!-- Variable List
+
+ [variablelist A Variable List
+ [[term 1] [The definition of term 1]]
+ [[term 2] [The definition of term 2]]
+ [[term 3] [The definition of term 3]]
+ ]
+ -->
+
+<context name="c_variable_list" attribute="d_normal_bold" lineEndContext="#stay">
+ <IncludeRules context="c_strict_normal" />
+ <DetectChar char="[" attribute="d_structure" context="c_var_list_body_1" />
+ <DetectChar char="]" attribute="d_structure" context="#pop" endRegion="r_variable_list"/>
+</context>
+
+<context name="c_var_list_body_1" attribute="d_nop" lineEndContext="#stay">
+
+ <!-- For performance the [endsect] resets the engine -->
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop#pop" endRegion="r_section"/>
+
+ <DetectChar char="[" attribute="d_structure" context="c_var_list_element_name" />
+</context>
+
+<context name="c_var_list_body_2" attribute="d_nop" lineEndContext="#stay">
+
+ <!-- For performance the [endsect] resets the engine -->
+ <StringDetect String="[endsect]" attribute="d_structure" context="#pop#pop#pop#pop#pop" endRegion="r_section"/>
+
+ <DetectChar char="[" attribute="d_structure" context="c_var_list_element_info" />
+</context>
+
+<context name="c_var_list_body_3" attribute="d_nop" lineEndContext="#stay">
+ <DetectChar char="]" attribute="d_structure" context="#pop#pop#pop#pop#pop" />
+</context>
+
+<context name="c_var_list_element_name" attribute="d_list_element_name" lineEndContext="#stay">
+ <IncludeRules context="c_normal" />
+ <DetectChar char="]" attribute="d_structure" context="c_var_list_body_2" />
+</context>
+
+<context name="c_var_list_element_info" attribute="d_normal" lineEndContext="#stay">
+ <IncludeRules context="c_normal" />
+ <DetectChar char="]" attribute="d_structure" context="c_var_list_body_3" />
+</context>
+
+<context name="c_variable_list_finder" attribute="d_normal" lineEndContext="#stay">
+ <RegExpr String="\[variablelist\b" minimal="true" attribute="d_structure" context="c_variable_list" beginRegion="r_variable_list" />
+</context>
+
+
+<!--
+ boost::hs
+-->
+
+<context name="c_boost::hs call finder" attribute="d_boost::hs">
+ <StringDetect String="[/boost::hs::turn_off()]" attribute="d_boost::hs" context="c_scape_highlighting" />
+ <StringDetect String="[/boost::hs::turn_on()]" attribute="d_boost::hs" context="#stay" />
+ <StringDetect String="[/boost::hs::begin_region()]" attribute="d_boost::hs" context="#stay" beginRegion="r_boost::hs::region" />
+ <StringDetect String="[/boost::hs::end_region()]" attribute="d_boost::hs" context="#stay" endRegion="r_boost::hs::region" />
+</context>
+
+<context name="c_scape_highlighting" attribute="d_normal" lineEndContext="#stay">
+ <StringDetect String="[/boost::hs::turn_on()]" attribute="d_boost::hs" context="#pop" />
+ <StringDetect String="[/boost::hs::turn_off()]" attribute="d_boost::hs" context="#stay" />
+</context>
+
+</contexts>
+
+<!--
+ This section defines the colors and format of each type of string parsed
+ Try to use defaults so the user can change it as he wished
+-->
+
+<itemDatas>
+
+ <itemData name="d_normal" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_bold" bold="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_italic" italic="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_underline" underline="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_bold_italic" bold="true" italic="true" defStyleNum="dsNormal" />
+ <itemData name="d_normal_bold_underline" bold="true" underline="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_italic_underline" italic="true" underline="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_bold_italic_underline" bold="true" italic="true" underline="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_strikeout" strikeout="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_teletype" italic="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_normal_replaceable" italic="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_anchor" defStyleNum="dsDataType" />
+
+ <itemData name="d_macro" defStyleNum="dsDataType" />
+
+ <itemData name="d_path" defStyleNum="dsOthers" />
+
+ <itemData name="d_structure" color="#5555FF" defStyleNum="dsNormal" />
+
+ <itemData name="d_comment" defStyleNum="dsComment" />
+
+ <itemData name="d_table_title_cell" color="#000000" bold="true" backgroundColor="#E6E6E6" defStyleNum="dsNormal" />
+
+ <itemData name="d_list_element_name" bold="true" defStyleNum="dsNormal" />
+
+ <itemData name="d_nop" defStyleNum="dsComment" />
+
+ <itemData name="d_boost::hs" defStyleNum="dsFunction" />
+
+</itemDatas>
+
+<!-- Last Part, Give acces to some tools, for example comment/uncomment in edit menu -->
+
+</highlighting>
+
+<general>
+
+ <comments>
+
+ <comment name="multiLine" start="[/" end="]" region="r_comment" />
+
+ </comments>
+
+</general>
+
+</language>
+
+<!--
+
+Aknowelegments
+=================================================
+
+Boost.Quickbook is a poweful C++ documentation tool.
+It is developped by Joel de Guzman and Eric Niebler, I am very thankful they give
+this tool a Boost License and allowed C++ developpers to document their work
+in a easy and fun way.
+Check www.boost.org to get the tool and meet one of the most impressive c++
+library communities in the world.
+
+Version history
+=================================================
+
+[ 0.9.4 ] Add [heading ]
+Add templates
+Add import
+[ 0.9.3 ] "[endsect]" reset the engine to avoid lags in long files
+[ 0.9.2 ] Change file name ( quickbook_sintaxis.xml -> boost::hs::quickbook.xml )
+Change section ( Docs -> boost::hs ),
+Change name ( Boost.Quickbook -> quickbook )
+This changes aims to incorporate a boost kate sintaxis framework in KDE.
+[ 0.9.1 ] Fixed simple formating ( for example: "*this] [that*" is not longer bolded ).
+[ 0.9.0 ] Initial beta, sended to Joel de Guzman and Eric Niebler.
+
+Known bugs
+=================================================
+
+Feedback will be appreciated.
+They are very small and it is very unlikely to encounter one.
+
+* List items * and # are not fully implemented.
+* The line ` \\ C++ comment ` is not working because of Kate C++
+highlight definitions.
+* Python code is not yet supported.
+
+-->